eiffel-community / eiffel

The Eiffel framework vocabulary, descriptions, guides and schemas along with links to relevant implementation repositories.
Apache License 2.0
121 stars 59 forks source link

Add JSON schema link validations #380

Closed e-backmark-ericsson closed 2 months ago

e-backmark-ericsson commented 8 months ago

Applicable Issues

148

Description of the Change

Alternate Designs

Benefits

Validation of required links in json schema instead of being hard coded in each event publisher implementation

Possible Drawbacks

Previously approved events could now be disallowed, if the event producer accepted events without some required link types as described in the md docs.

Sign-off

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or

(b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or

(c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it.

(d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved.

Signed-off-by: Emil Bäckmark emil.backmark@ericsson.com

e-backmark-ericsson commented 8 months ago

Discussed with Magnus Jan 4:

e-backmark-ericsson commented 7 months ago

Definitions diff:

--- definitions/EiffelActivityCanceledEvent/4.0.0.yml   2024-02-09 08:42:50.266032200 +0100
+++ definitions/EiffelActivityCanceledEvent/5.0.0.yml   2024-02-09 08:42:50.281669500 +0100
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/draft-2020-12/schema#
 _name: EiffelActivityCanceledEvent
-_version: 4.0.0
+_version: 5.0.0
 _abbrev: ActC
 _description: The EiffelActivityCanceledEvent signals that a previously
   triggered activity execution has been canceled _before it has started_.
@@ -25,7 +25,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -36,12 +36,18 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     additionalProperties: false
   links:
     type: array
+    contains:
+      type: object
+      properties:
+        type:
+          enum:
+            - ACTIVITY_EXECUTION
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -96,6 +102,8 @@
       types:
         - EiffelFlowContextDefinedEvent
 _history:
+  - version: 5.0.0
+    changes: Update meta schema to Draft 2020-12.
   - version: 4.0.0
     changes: Fix bug in schema regarding additionalProperties (see [Issue 376](https://github.com/eiffel-community/eiffel/issues/376)).
   - version: 3.2.0
--- schemas/EiffelActivityCanceledEvent/4.0.0.json  2024-02-09 08:49:46.098139800 +0100
+++ schemas/EiffelActivityCanceledEvent/5.0.0.json  2024-02-09 08:49:46.145472400 +0100
@@ -1,5 +1,5 @@
 {
-  "$schema": "http://json-schema.org/draft-04/schema#",
+  "$schema": "https://json-schema.org/draft/draft-2020-12/schema#",
   "type": "object",
   "properties": {
     "meta": {
@@ -18,9 +18,9 @@
         "version": {
           "type": "string",
           "enum": [
-            "4.0.0"
+            "5.0.0"
           ],
-          "default": "4.0.0"
+          "default": "5.0.0"
         },
         "time": {
           "type": "integer"
@@ -157,6 +157,16 @@
     },
     "links": {
       "type": "array",
+      "contains": {
+        "type": "object",
+        "properties": {
+          "type": {
+            "enum": [
+              "ACTIVITY_EXECUTION"
+            ]
+          }
+        }
+      },
       "items": {
         "type": "object",
         "properties": {
--- definitions/EiffelActivityFinishedEvent/3.3.0.yml   2024-02-09 08:42:50.297294400 +0100
+++ definitions/EiffelActivityFinishedEvent/4.0.0.yml   2024-02-09 08:42:50.312920800 +0100
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/draft-2020-12/schema#
 _name: EiffelActivityFinishedEvent
-_version: 3.3.0
+_version: 4.0.0
 _abbrev: ActF
 _description: The EiffelActivityFinishedEvent declares that a previously
   started activity (declared by [EiffelActivityTriggeredEvent](./EiffelActivityTriggeredEvent.md)
@@ -24,7 +24,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -88,14 +88,20 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     additionalProperties: false
     required:
       - outcome
   links:
     type: array
+    contains:
+      type: object
+      properties:
+        type:
+          enum:
+            - ACTIVITY_EXECUTION
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -150,6 +156,8 @@
       types:
         - EiffelFlowContextDefinedEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12.
   - version: 3.3.0
     introduced_in: edition-arica
     changes: Add schema URL to the meta object (see [Issue 280](https://github.com/eiffel-community/eiffel/issues/280)).
--- schemas/EiffelActivityFinishedEvent/3.3.0.json  2024-02-09 08:49:46.451677900 +0100
+++ schemas/EiffelActivityFinishedEvent/4.0.0.json  2024-02-09 08:49:46.509994200 +0100
@@ -1,5 +1,5 @@
 {
-  "$schema": "http://json-schema.org/draft-04/schema#",
+  "$schema": "https://json-schema.org/draft/draft-2020-12/schema#",
   "type": "object",
   "properties": {
     "meta": {
@@ -18,9 +18,9 @@
         "version": {
           "type": "string",
           "enum": [
-            "3.3.0"
+            "4.0.0"
           ],
-          "default": "3.3.0"
+          "default": "4.0.0"
         },
         "time": {
           "type": "integer"
@@ -207,6 +207,16 @@
     },
     "links": {
       "type": "array",
+      "contains": {
+        "type": "object",
+        "properties": {
+          "type": {
+            "enum": [
+              "ACTIVITY_EXECUTION"
+            ]
+          }
+        }
+      },
       "items": {
         "type": "object",
         "properties": {
--- definitions/EiffelActivityStartedEvent/4.3.0.yml    2024-02-09 08:42:50.344699200 +0100
+++ definitions/EiffelActivityStartedEvent/5.0.0.yml    2024-02-09 08:42:50.344699200 +0100
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/draft-2020-12/schema#
 _name: EiffelActivityStartedEvent
-_version: 4.3.0
+_version: 5.0.0
 _abbrev: ActS
 _description: The EiffelActivityStartedEvent declares that a previously
   triggered activity (declared by [EiffelActivityTriggeredEvent](./EiffelActivityTriggeredEvent.md))
@@ -23,7 +23,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -68,12 +68,18 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     additionalProperties: false
   links:
     type: array
+    contains:
+      type: object
+      properties:
+        type:
+          enum:
+            - ACTIVITY_EXECUTION
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -136,6 +142,8 @@
       types:
         - EiffelActivityTriggeredEvent
 _history:
+  - version: 5.0.0
+    changes: Update meta schema to Draft 2020-12.
   - version: 4.3.0
     introduced_in: edition-arica
     changes: Add schema URL to the meta object (see [Issue 280](https://github.com/eiffel-community/eiffel/issues/280)).
--- schemas/EiffelActivityStartedEvent/4.3.0.json   2024-02-09 08:49:46.846256000 +0100
+++ schemas/EiffelActivityStartedEvent/5.0.0.json   2024-02-09 08:49:46.894791400 +0100
@@ -1,5 +1,5 @@
 {
-  "$schema": "http://json-schema.org/draft-04/schema#",
+  "$schema": "https://json-schema.org/draft/draft-2020-12/schema#",
   "type": "object",
   "properties": {
     "meta": {
@@ -18,9 +18,9 @@
         "version": {
           "type": "string",
           "enum": [
-            "4.3.0"
+            "5.0.0"
           ],
-          "default": "4.3.0"
+          "default": "5.0.0"
         },
         "time": {
           "type": "integer"
@@ -185,6 +185,16 @@
     },
     "links": {
       "type": "array",
+      "contains": {
+        "type": "object",
+        "properties": {
+          "type": {
+            "enum": [
+              "ACTIVITY_EXECUTION"
+            ]
+          }
+        }
+      },
       "items": {
         "type": "object",
         "properties": {
--- definitions/EiffelActivityTriggeredEvent/4.3.0.yml  2024-02-09 08:42:50.383479200 +0100
+++ definitions/EiffelActivityTriggeredEvent/5.0.0.yml  2024-02-09 08:42:50.383479200 +0100
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/draft-2020-12/schema#
 _name: EiffelActivityTriggeredEvent
-_version: 4.3.0
+_version: 5.0.0
 _abbrev: ActT
 _description: |-
   The EiffelActivityTriggeredEvent declares that a certain activity - typically a build, test or analysis activity - has been triggered by some factor. Note that this is crucially different from the activity execution having _started_ (as declared by [EiffelActivityStartedEvent](./EiffelActivityStartedEvent.md)).
@@ -24,7 +24,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -81,14 +81,14 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     required:
       - name
     additionalProperties: false
   links:
     type: array
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -155,6 +155,8 @@
       types:
         - EiffelActivityTriggeredEvent
 _history:
+  - version: 5.0.0
+    changes: Update meta schema to Draft 2020-12.
   - version: 4.3.0
     introduced_in: edition-orizaba
     changes: Add ORIGINAL_TRIGGER link (see [Issue 246](https://github.com/eiffel-community/eiffel/issues/246)).
--- schemas/EiffelActivityTriggeredEvent/4.3.0.json 2024-02-09 08:49:47.231621200 +0100
+++ schemas/EiffelActivityTriggeredEvent/5.0.0.json 2024-02-09 08:49:47.268904500 +0100
@@ -1,5 +1,5 @@
 {
-  "$schema": "http://json-schema.org/draft-04/schema#",
+  "$schema": "https://json-schema.org/draft/draft-2020-12/schema#",
   "type": "object",
   "properties": {
     "meta": {
@@ -18,9 +18,9 @@
         "version": {
           "type": "string",
           "enum": [
-            "4.3.0"
+            "5.0.0"
           ],
-          "default": "4.3.0"
+          "default": "5.0.0"
         },
         "time": {
           "type": "integer"
--- definitions/EiffelAnnouncementPublishedEvent/3.2.0.yml  2024-02-09 08:42:50.399541900 +0100
+++ definitions/EiffelAnnouncementPublishedEvent/4.0.0.yml  2024-02-09 08:42:50.415160600 +0100
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/draft-2020-12/schema#
 _name: EiffelAnnouncementPublishedEvent
-_version: 3.2.0
+_version: 4.0.0
 _abbrev: AnnP
 _description: The EiffelAnnouncementPublishedEvent represents an announcement,
   technically regarding any topic but typically used to communicate
@@ -25,7 +25,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -55,7 +55,7 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     required:
       - heading
       - body
@@ -64,7 +64,7 @@
   links:
     type: array
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -114,6 +114,8 @@
       types:
         - EiffelAnnouncementPublishedEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12.
   - version: 3.2.0
     introduced_in: edition-arica
     changes: Add schema URL to the meta object (see [Issue 280](https://github.com/eiffel-community/eiffel/issues/280)).
--- schemas/EiffelAnnouncementPublishedEvent/3.2.0.json 2024-02-09 08:49:47.517018200 +0100
+++ schemas/EiffelAnnouncementPublishedEvent/4.0.0.json 2024-02-09 08:49:47.570382900 +0100
@@ -1,5 +1,5 @@
 {
-  "$schema": "http://json-schema.org/draft-04/schema#",
+  "$schema": "https://json-schema.org/draft/draft-2020-12/schema#",
   "type": "object",
   "properties": {
     "meta": {
@@ -18,9 +18,9 @@
         "version": {
           "type": "string",
           "enum": [
-            "3.2.0"
+            "4.0.0"
           ],
-          "default": "3.2.0"
+          "default": "4.0.0"
         },
         "time": {
           "type": "integer"
--- definitions/EiffelArtifactCreatedEvent/3.3.0.yml    2024-02-09 08:42:50.430717400 +0100
+++ definitions/EiffelArtifactCreatedEvent/4.0.0.yml    2024-02-09 08:42:50.446327000 +0100
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/draft-2020-12/schema#
 _name: EiffelArtifactCreatedEvent
-_version: 3.3.0
+_version: 4.0.0
 _abbrev: ArtC
 _description: The EiffelArtifactCreatedEvent declares that a software
   artifact has been created, what its coordinates are, what it contains
@@ -23,7 +23,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -140,14 +140,14 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     required:
       - identity
     additionalProperties: false
   links:
     type: array
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -214,6 +214,8 @@
       types:
         - EiffelArtifactCreatedEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12.
   - version: 3.3.0
     introduced_in: edition-arica
     changes: Added data.fileInformation.integrityProtection member (see [Issue 290](https://github.com/eiffel-community/eiffel/issues/290)).
--- schemas/EiffelArtifactCreatedEvent/3.3.0.json   2024-02-09 08:49:47.927963400 +0100
+++ schemas/EiffelArtifactCreatedEvent/4.0.0.json   2024-02-09 08:49:47.986620300 +0100
@@ -1,5 +1,5 @@
 {
-  "$schema": "http://json-schema.org/draft-04/schema#",
+  "$schema": "https://json-schema.org/draft/draft-2020-12/schema#",
   "type": "object",
   "properties": {
     "meta": {
@@ -18,9 +18,9 @@
         "version": {
           "type": "string",
           "enum": [
-            "3.3.0"
+            "4.0.0"
           ],
-          "default": "3.3.0"
+          "default": "4.0.0"
         },
         "time": {
           "type": "integer"
--- definitions/EiffelArtifactDeployedEvent/0.1.0.yml   2024-02-09 08:42:50.446327000 +0100
+++ definitions/EiffelArtifactDeployedEvent/0.2.0.yml   2024-02-09 08:42:50.446327000 +0100
@@ -1,4 +1,4 @@
-# Copyright 2022-2024 Axis Communications AB.
+# Copyright 2022-2024 Axis Communications AB and others.
 # For a full list of individual contributors, please see the commit history.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/draft-2020-12/schema#
 _name: EiffelArtifactDeployedEvent
-_version: 0.1.0
+_version: 0.2.0
 _abbrev: ArtD
 _description: The EiffelArtifactDeployedEvent states that a software artifact had been deployed into a specified environment or
   that the configuration of the artifact has been changed.
@@ -23,7 +23,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -37,12 +37,19 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     additionalProperties: false
   links:
     type: array
+    contains:
+      type: object
+      properties:
+        type:
+          enum:
+            - ARTIFACT
+            - ENVIRONMENT
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -114,6 +121,8 @@
       types:
         - EiffelFlowContextDefinedEvent
 _history:
+  - version: 0.2.0
+    changes: Update meta schema to Draft 2020-12.
   - version: 0.1.0
     introduced_in: edition-orizaba
     changes: Initial version.
--- schemas/EiffelArtifactDeployedEvent/0.1.0.json  2024-02-09 08:49:48.017893400 +0100
+++ schemas/EiffelArtifactDeployedEvent/0.2.0.json  2024-02-09 08:49:48.068444300 +0100
@@ -1,5 +1,5 @@
 {
-  "$schema": "http://json-schema.org/draft-04/schema#",
+  "$schema": "https://json-schema.org/draft/draft-2020-12/schema#",
   "type": "object",
   "properties": {
     "meta": {
@@ -18,9 +18,9 @@
         "version": {
           "type": "string",
           "enum": [
-            "0.1.0"
+            "0.2.0"
           ],
-          "default": "0.1.0"
+          "default": "0.2.0"
         },
         "time": {
           "type": "integer"
@@ -160,6 +160,17 @@
     },
     "links": {
       "type": "array",
+      "contains": {
+        "type": "object",
+        "properties": {
+          "type": {
+            "enum": [
+              "ARTIFACT",
+              "ENVIRONMENT"
+            ]
+          }
+        }
+      },
       "items": {
         "type": "object",
         "properties": {
--- definitions/EiffelArtifactPublishedEvent/3.3.0.yml  2024-02-09 08:42:50.482773600 +0100
+++ definitions/EiffelArtifactPublishedEvent/4.0.0.yml  2024-02-09 08:42:50.482773600 +0100
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/draft-2020-12/schema#
 _name: EiffelArtifactPublishedEvent
-_version: 3.3.0
+_version: 4.0.0
 _abbrev: ArtP
 _description: The EiffelArtifactPublishedEvent declares that a software
   artifact (declared by [EiffelArtifactCreatedEvent](./EiffelArtifactCreatedEvent.md))
@@ -24,7 +24,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -65,14 +65,20 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     required:
       - locations
     additionalProperties: false
   links:
     type: array
+    contains:
+      type: object
+      properties:
+        type:
+          enum:
+            - ARTIFACT
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -120,6 +126,8 @@
       types:
         - EiffelFlowContextDefinedEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12.
   - version: 3.3.0
     introduced_in: edition-arica
     changes: Add schema URL to the meta object (see [Issue 280](https://github.com/eiffel-community/eiffel/issues/280)).
--- schemas/EiffelArtifactPublishedEvent/3.3.0.json 2024-02-09 08:49:48.357470200 +0100
+++ schemas/EiffelArtifactPublishedEvent/4.0.0.json 2024-02-09 08:49:48.405596800 +0100
@@ -1,5 +1,5 @@
 {
-  "$schema": "http://json-schema.org/draft-04/schema#",
+  "$schema": "https://json-schema.org/draft/draft-2020-12/schema#",
   "type": "object",
   "properties": {
     "meta": {
@@ -18,9 +18,9 @@
         "version": {
           "type": "string",
           "enum": [
-            "3.3.0"
+            "4.0.0"
           ],
-          "default": "3.3.0"
+          "default": "4.0.0"
         },
         "time": {
           "type": "integer"
@@ -185,6 +185,16 @@
     },
     "links": {
       "type": "array",
+      "contains": {
+        "type": "object",
+        "properties": {
+          "type": {
+            "enum": [
+              "ARTIFACT"
+            ]
+          }
+        }
+      },
       "items": {
         "type": "object",
         "properties": {
--- definitions/EiffelArtifactReusedEvent/3.2.0.yml 2024-02-09 08:42:50.498787100 +0100
+++ definitions/EiffelArtifactReusedEvent/4.0.0.yml 2024-02-09 08:42:50.514417300 +0100
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/draft-2020-12/schema#
 _name: EiffelArtifactReusedEvent
-_version: 3.2.0
+_version: 4.0.0
 _abbrev: ArtR
 _description: |-
   The EiffelArtifactReusedEvent declares that an identified [EiffelArtifactCreatedEvent](./EiffelArtifactCreatedEvent.md) has been _reused_ for an identified [EiffelCompositionDefinedEvent](./EiffelCompositionDefinedEvent.md). This means that it is logically equivalent to an artifact that would have been built from that composition, and can be used for build avoidance (see the [Build Avoidance Usage Example](../usage-examples/build-avoidance.md) for more information).
@@ -24,19 +24,26 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     additionalProperties: false
   links:
     type: array
+    contains:
+      type: object
+      properties:
+        type:
+          enum:
+            - COMPOSITION
+            - REUSED_ARTIFACT
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -95,6 +102,8 @@
       types:
         - EiffelArtifactCreatedEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12.
   - version: 3.2.0
     introduced_in: edition-arica
     changes: Add schema URL to the meta object (see [Issue 280](https://github.com/eiffel-community/eiffel/issues/280)).
--- schemas/EiffelArtifactReusedEvent/3.2.0.json    2024-02-09 08:49:48.636672600 +0100
+++ schemas/EiffelArtifactReusedEvent/4.0.0.json    2024-02-09 08:49:48.687369200 +0100
@@ -1,5 +1,5 @@
 {
-  "$schema": "http://json-schema.org/draft-04/schema#",
+  "$schema": "https://json-schema.org/draft/draft-2020-12/schema#",
   "type": "object",
   "properties": {
     "meta": {
@@ -18,9 +18,9 @@
         "version": {
           "type": "string",
           "enum": [
-            "3.2.0"
+            "4.0.0"
           ],
-          "default": "3.2.0"
+          "default": "4.0.0"
         },
         "time": {
           "type": "integer"
@@ -154,6 +154,17 @@
     },
     "links": {
       "type": "array",
+      "contains": {
+        "type": "object",
+        "properties": {
+          "type": {
+            "enum": [
+              "COMPOSITION",
+              "REUSED_ARTIFACT"
+            ]
+          }
+        }
+      },
       "items": {
         "type": "object",
         "properties": {
--- definitions/EiffelCompositionDefinedEvent/3.3.0.yml 2024-02-09 08:42:50.530037700 +0100
+++ definitions/EiffelCompositionDefinedEvent/4.0.0.yml 2024-02-09 08:42:50.545683300 +0100
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/draft-2020-12/schema#
 _name: EiffelCompositionDefinedEvent
-_version: 3.3.0
+_version: 4.0.0
 _abbrev: CD
 _description: The EiffelCompositionDefinedEvent declares a composition
   of items (artifacts, sources and other compositions) has been defined,
@@ -24,7 +24,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -40,14 +40,14 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     required:
       - name
     additionalProperties: false
   links:
     type: array
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -111,6 +111,8 @@
       types:
         - EiffelCompositionDefinedEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12.
   - version: 3.3.0
     introduced_in: edition-arica
     changes: Add schema URL to the meta object (see [Issue 280](https://github.com/eiffel-community/eiffel/issues/280)).
--- schemas/EiffelCompositionDefinedEvent/3.3.0.json    2024-02-09 08:49:48.956922400 +0100
+++ schemas/EiffelCompositionDefinedEvent/4.0.0.json    2024-02-09 08:49:49.003977300 +0100
@@ -1,5 +1,5 @@
 {
-  "$schema": "http://json-schema.org/draft-04/schema#",
+  "$schema": "https://json-schema.org/draft/draft-2020-12/schema#",
   "type": "object",
   "properties": {
     "meta": {
@@ -18,9 +18,9 @@
         "version": {
           "type": "string",
           "enum": [
-            "3.3.0"
+            "4.0.0"
           ],
-          "default": "3.3.0"
+          "default": "4.0.0"
         },
         "time": {
           "type": "integer"
--- definitions/EiffelConfidenceLevelModifiedEvent/3.4.0.yml    2024-02-09 08:42:50.567311100 +0100
+++ definitions/EiffelConfidenceLevelModifiedEvent/4.0.0.yml    2024-02-09 08:42:50.583546800 +0100
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/draft-2020-12/schema#
 _name: EiffelConfidenceLevelModifiedEvent
-_version: 3.4.0
+_version: 4.0.0
 _abbrev: CLM
 _description: |-
   The EiffelConfidenceLevelModifiedEvent declares that an entity has achieved (or failed to achieve) a certain level of confidence, or in a broader sense to annotate it as being applicable or relevant to a certain case (e.g. fit for release to a certain customer segment or having passed certain criteria). This is particularly useful for promoting various engineering artifacts, such as product revisions, through the continuous integration and delivery pipeline.
@@ -24,7 +24,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -68,15 +68,21 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     required:
       - name
       - value
     additionalProperties: false
   links:
     type: array
+    contains:
+      type: object
+      properties:
+        type:
+          enum:
+            - SUBJECT
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -154,6 +160,8 @@
       types:
         - EiffelConfidenceLevelModifiedEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12.
   - version: 3.4.0
     changes: Add CONFIDENCE_BASIS link (see [Issue 323](https://github.com/eiffel-community/eiffel/issues/323)).
   - version: 3.3.0
--- schemas/EiffelConfidenceLevelModifiedEvent/3.4.0.json   2024-02-09 08:49:49.357442500 +0100
+++ schemas/EiffelConfidenceLevelModifiedEvent/4.0.0.json   2024-02-09 08:49:49.411669100 +0100
@@ -1,5 +1,5 @@
 {
-  "$schema": "http://json-schema.org/draft-04/schema#",
+  "$schema": "https://json-schema.org/draft/draft-2020-12/schema#",
   "type": "object",
   "properties": {
     "meta": {
@@ -18,9 +18,9 @@
         "version": {
           "type": "string",
           "enum": [
-            "3.4.0"
+            "4.0.0"
           ],
-          "default": "3.4.0"
+          "default": "4.0.0"
         },
         "time": {
           "type": "integer"
@@ -187,6 +187,16 @@
     },
     "links": {
       "type": "array",
+      "contains": {
+        "type": "object",
+        "properties": {
+          "type": {
+            "enum": [
+              "SUBJECT"
+            ]
+          }
+        }
+      },
       "items": {
         "type": "object",
         "properties": {
--- definitions/EiffelCustomDataProperty/1.0.0.yml  2024-01-18 16:43:24.343087600 +0100
+++ definitions/EiffelCustomDataProperty/2.0.0.yml  2024-02-09 08:37:57.201785700 +0100
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/draft-2020-12/schema#
 _name: EiffelCustomDataProperty
-_version: 1.0.0
+_version: 2.0.0
 type: object
 properties:
   key:
--- definitions/EiffelEnvironmentDefinedEvent/3.3.0.yml 2024-02-09 08:42:50.615051400 +0100
+++ definitions/EiffelEnvironmentDefinedEvent/4.0.0.yml 2024-02-09 08:42:50.615051400 +0100
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/draft-2020-12/schema#
 _name: EiffelEnvironmentDefinedEvent
-_version: 3.3.0
+_version: 4.0.0
 _abbrev: ED
 _description: |-
   The EiffelEnvironmentDefinedEvent declares an environment which may be referenced from other events in order to secure traceability to the conditions under which an artifact was created or a test was executed. Depending on the technology domain, the nature of an environment varies greatly however: it may be a virtual image, a complete mechatronic system of millions of independent parts, or anything in between. Consequently, a concise yet complete and generic syntax for describing any environment is futile.
@@ -24,7 +24,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -78,14 +78,14 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     required:
       - name
     additionalProperties: false
   links:
     type: array
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -149,6 +149,8 @@
         - EiffelArtifactCreatedEvent
         - EiffelCompositionDefinedEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12.
   - version: 3.3.0
     introduced_in: edition-arica
     changes: Add schema URL to the meta object (see [Issue 280](https://github.com/eiffel-community/eiffel/issues/280)).
--- schemas/EiffelEnvironmentDefinedEvent/3.3.0.json    2024-02-09 08:49:49.720336300 +0100
+++ schemas/EiffelEnvironmentDefinedEvent/4.0.0.json    2024-02-09 08:49:49.758031100 +0100
@@ -1,5 +1,5 @@
 {
-  "$schema": "http://json-schema.org/draft-04/schema#",
+  "$schema": "https://json-schema.org/draft/draft-2020-12/schema#",
   "type": "object",
   "properties": {
     "meta": {
@@ -18,9 +18,9 @@
         "version": {
           "type": "string",
           "enum": [
-            "3.3.0"
+            "4.0.0"
           ],
-          "default": "3.3.0"
+          "default": "4.0.0"
         },
         "time": {
           "type": "integer"
--- definitions/EiffelEventLink/1.1.1.yml   2024-01-18 16:43:24.358680300 +0100
+++ definitions/EiffelEventLink/2.0.0.yml   2024-02-09 08:37:57.205786300 +0100
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/draft-2020-12/schema#
 _name: EiffelEventLink
-_version: 1.1.1
+_version: 2.0.0
 type: object
 properties:
   type:
--- definitions/EiffelFlowContextDefinedEvent/3.2.0.yml 2024-02-09 08:42:50.630987900 +0100
+++ definitions/EiffelFlowContextDefinedEvent/4.0.0.yml 2024-02-09 08:42:50.646693800 +0100
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/draft-2020-12/schema#
 _name: EiffelFlowContextDefinedEvent
-_version: 3.2.0
+_version: 4.0.0
 _abbrev: FCD
 _description: |-
   The EiffelFlowContextDefinedEvent describes the context of other events, answering questions such as "Which project is this change part of?" or "Which track does this artifact belong to?". In this way it offers a method of classifying and structuring one's continuous integration and delivery system and thereby facilitating traceability and searchability.
@@ -24,7 +24,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -55,12 +55,12 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     additionalProperties: false
   links:
     type: array
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -100,6 +100,8 @@
       types:
         - EiffelFlowContextDefinedEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12.
   - version: 3.2.0
     introduced_in: edition-arica
     changes: Add schema URL to the meta object (see [Issue 280](https://github.com/eiffel-community/eiffel/issues/280)).
--- schemas/EiffelFlowContextDefinedEvent/3.2.0.json    2024-02-09 08:49:49.990326200 +0100
+++ schemas/EiffelFlowContextDefinedEvent/4.0.0.json    2024-02-09 08:49:50.037228000 +0100
@@ -1,5 +1,5 @@
 {
-  "$schema": "http://json-schema.org/draft-04/schema#",
+  "$schema": "https://json-schema.org/draft/draft-2020-12/schema#",
   "type": "object",
   "properties": {
     "meta": {
@@ -18,9 +18,9 @@
         "version": {
           "type": "string",
           "enum": [
-            "3.2.0"
+            "4.0.0"
           ],
-          "default": "3.2.0"
+          "default": "4.0.0"
         },
         "time": {
           "type": "integer"
--- definitions/EiffelIssueDefinedEvent/3.2.0.yml   2024-02-09 08:42:50.665349500 +0100
+++ definitions/EiffelIssueDefinedEvent/4.0.0.yml   2024-02-09 08:42:50.667359800 +0100
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/draft-2020-12/schema#
 _name: EiffelIssueDefinedEvent
-_version: 3.2.0
+_version: 4.0.0
 _abbrev: ID
 _description: The EiffelIssueDefinedEvent declares that an issue has
   been created in some external issue management software. ID is semantically
@@ -25,7 +25,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -70,7 +70,7 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     required:
       - type
       - tracker
@@ -80,7 +80,7 @@
   links:
     type: array
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 _links:
   CAUSE:
     description: 'Identifies a cause of the event occurring. SHOULD
@@ -115,6 +115,8 @@
       types:
         - EiffelFlowContextDefinedEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12.
   - version: 3.2.0
     introduced_in: edition-arica
     changes: Add schema URL to the meta object (see [Issue 280](https://github.com/eiffel-community/eiffel/issues/280)).
--- schemas/EiffelIssueDefinedEvent/3.2.0.json  2024-02-09 08:49:50.221495300 +0100
+++ schemas/EiffelIssueDefinedEvent/4.0.0.json  2024-02-09 08:49:50.275347700 +0100
@@ -1,5 +1,5 @@
 {
-  "$schema": "http://json-schema.org/draft-04/schema#",
+  "$schema": "https://json-schema.org/draft/draft-2020-12/schema#",
   "type": "object",
   "properties": {
     "meta": {
@@ -18,9 +18,9 @@
         "version": {
           "type": "string",
           "enum": [
-            "3.2.0"
+            "4.0.0"
           ],
-          "default": "3.2.0"
+          "default": "4.0.0"
         },
         "time": {
           "type": "integer"
--- definitions/EiffelIssueVerifiedEvent/4.3.1.yml  2024-02-09 08:42:50.699031300 +0100
+++ definitions/EiffelIssueVerifiedEvent/5.0.0.yml  2024-02-09 08:42:50.699031300 +0100
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/draft-2020-12/schema#
 _name: EiffelIssueVerifiedEvent
-_version: 4.3.1
+_version: 5.0.0
 _abbrev: IV
 _description: |-
   The EiffelIssueVerifiedEvent declares that an issue, typically a requirement, has been verified by some means. It is different from [EiffelTestCaseFinishedEvent](./EiffelTestCaseFinishedEvent.md) in that multiple test case executions may serve as the basis for a single verification or, conversely, multiple issues may be verified based on a single test case execution.
@@ -24,19 +24,25 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     additionalProperties: false
   links:
     type: array
+    contains:
+      type: object
+      properties:
+        type:
+          enum:
+            - IUT
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -131,6 +137,8 @@
         - EiffelTestCaseFinishedEvent
         - EiffelTestSuiteFinishedEvent
 _history:
+  - version: 5.0.0
+    changes: Update meta schema to Draft 2020-12.
   - version: 4.3.1
     changes: Change IUT to Implementation Under Test (see [Issue 235](https://github.com/eiffel-community/eiffel/issues/359)).
   - version: 4.3.0
--- schemas/EiffelIssueVerifiedEvent/4.3.1.json 2024-02-09 08:49:50.691154500 +0100
+++ schemas/EiffelIssueVerifiedEvent/5.0.0.json 2024-02-09 08:49:50.737955700 +0100
@@ -1,5 +1,5 @@
 {
-  "$schema": "http://json-schema.org/draft-04/schema#",
+  "$schema": "https://json-schema.org/draft/draft-2020-12/schema#",
   "type": "object",
   "properties": {
     "meta": {
@@ -18,9 +18,9 @@
         "version": {
           "type": "string",
           "enum": [
-            "4.3.1"
+            "5.0.0"
           ],
-          "default": "4.3.1"
+          "default": "5.0.0"
         },
         "time": {
           "type": "integer"
@@ -154,6 +154,16 @@
     },
     "links": {
       "type": "array",
+      "contains": {
+        "type": "object",
+        "properties": {
+          "type": {
+            "enum": [
+              "IUT"
+            ]
+          }
+        }
+      },
       "items": {
         "type": "object",
         "properties": {
--- definitions/EiffelMetaProperty/3.1.0.yml    2024-01-18 16:43:24.401854100 +0100
+++ definitions/EiffelMetaProperty/4.0.0.yml    2024-02-09 08:37:57.217788200 +0100
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.

-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/draft-2020-12/schema#
 _name: EiffelMetaProperty
-_version: 3.1.0
+_version: 4.0.0
 type: object
 properties:
   id:
--- definitions/EiffelSourceChangeCreatedEvent/4.2.0.yml    2024-02-09 08:42:50.730994900 +0100
+++ definitions/EiffelSourceChangeCreatedEvent/5.0.0.yml    2024-02-09 08:42:50.730994900 +0100
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/draft-2020-12/schema#
 _name: EiffelSourceChangeCreatedEvent
-_version: 4.2.0
+_version: 5.0.0
 _abbrev: SCC
 _description: |-
   The EiffelSourceChangeCreatedEvent declares that a change to sources has been made, but not yet submitted (see [EiffelSourceChangeSubmittedEvent](./EiffelSourceChangeSubmittedEvent.md)). This can be used to represent a change done on a private branch, undergoing review or made in a forked repository. Unlike EiffelSourceChangeSubmittedEvent, EiffelSourceChangeCreatedEvent _describes the change_ in terms of who authored it and which issues it addressed.
@@ -24,7 +24,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -173,12 +173,12 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     additionalProperties: false
   links:
     type: array
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -271,6 +271,8 @@
       types:
         - EiffelIssueDefinedEvent
 _history:
+  - version: 5.0.0
+    changes: Update meta schema to Draft 2020-12.
   - version: 4.2.0
     introduced_in: edition-arica
     changes: Add schema URL to the meta object (see [Issue 280](https://github.com/eiffel-community/eiffel/issues/280)).
--- schemas/EiffelSourceChangeCreatedEvent/4.2.0.json   2024-02-09 08:49:51.140517500 +0100
+++ schemas/EiffelSourceChangeCreatedEvent/5.0.0.json   2024-02-09 08:49:51.208356500 +0100
@@ -1,5 +1,5 @@
 {
-  "$schema": "http://json-schema.org/draft-04/schema#",
+  "$schema": "https://json-schema.org/draft/draft-2020-12/schema#",
   "type": "object",
   "properties": {
     "meta": {
@@ -18,9 +18,9 @@
         "version": {
           "type": "string",
           "enum": [
-            "4.2.0"
+            "5.0.0"
           ],
-          "default": "4.2.0"
+          "default": "5.0.0"
         },
         "time": {
           "type": "integer"
--- definitions/EiffelSourceChangeSubmittedEvent/3.2.0.yml  2024-02-09 08:42:50.762273900 +0100
+++ definitions/EiffelSourceChangeSubmittedEvent/4.0.0.yml  2024-02-09 08:42:50.767282500 +0100
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/draft-2020-12/schema#
 _name: EiffelSourceChangeSubmittedEvent
-_version: 3.2.0
+_version: 4.0.0
 _abbrev: SCS
 _description: |-
   The EiffelSourceChangeSubmittedEvent declares that a change has been integrated into to a shared source branch of interest (e.g. "master", "dev" or "mainline") as opposed to a private or local branch. Note that it does not describe what has changed, but instead uses the __CHANGE__ link type to reference [EiffelSourceChangeCreatedEvent](./EiffelSourceChangeCreatedEvent.md).
@@ -26,7 +26,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -142,12 +142,12 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     additionalProperties: false
   links:
     type: array
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -204,6 +204,8 @@
       types:
         - EiffelSourceChangeSubmittedEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12.
   - version: 3.2.0
     introduced_in: edition-arica
     changes: Add schema URL to the meta object (see [Issue 280](https://github.com/eiffel-community/eiffel/issues/280)).
--- schemas/EiffelSourceChangeSubmittedEvent/3.2.0.json 2024-02-09 08:49:51.508224200 +0100
+++ schemas/EiffelSourceChangeSubmittedEvent/4.0.0.json 2024-02-09 08:49:51.561365500 +0100
@@ -1,5 +1,5 @@
 {
-  "$schema": "http://json-schema.org/draft-04/schema#",
+  "$schema": "https://json-schema.org/draft/draft-2020-12/schema#",
   "type": "object",
   "properties": {
     "meta": {
@@ -18,9 +18,9 @@
         "version": {
           "type": "string",
           "enum": [
-            "3.2.0"
+            "4.0.0"
           ],
-          "default": "3.2.0"
+          "default": "4.0.0"
         },
         "time": {
           "type": "integer"
--- definitions/EiffelTestCaseCanceledEvent/3.2.0.yml   2024-02-09 08:42:50.784106400 +0100
+++ definitions/EiffelTestCaseCanceledEvent/4.0.0.yml   2024-02-09 08:42:50.800151300 +0100
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/draft-2020-12/schema#
 _name: EiffelTestCaseCanceledEvent
-_version: 3.2.0
+_version: 4.0.0
 _abbrev: TCC
 _description: The EiffelTestCaseCanceledEvent declares that a previously
   triggered test case execution (represented by [EiffelTestCaseTriggeredEvent](./EiffelTestCaseTriggeredEvent.md))
@@ -25,7 +25,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -36,12 +36,18 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     additionalProperties: false
   links:
     type: array
+    contains:
+      type: object
+      properties:
+        type:
+          enum:
+            - TEST_CASE_EXECUTION
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -96,6 +102,8 @@
       types:
         - EiffelTestCaseTriggeredEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12.
   - version: 3.2.0
     introduced_in: edition-arica
     changes: Add schema URL to the meta object (see [Issue 280](https://github.com/eiffel-community/eiffel/issues/280)).
--- schemas/EiffelTestCaseCanceledEvent/3.2.0.json  2024-02-09 08:49:51.792761700 +0100
+++ schemas/EiffelTestCaseCanceledEvent/4.0.0.json  2024-02-09 08:49:51.839852300 +0100
@@ -1,5 +1,5 @@
 {
-  "$schema": "http://json-schema.org/draft-04/schema#",
+  "$schema": "https://json-schema.org/draft/draft-2020-12/schema#",
   "type": "object",
   "properties": {
     "meta": {
@@ -18,9 +18,9 @@
         "version": {
           "type": "string",
           "enum": [
-            "3.2.0"
+            "4.0.0"
           ],
-          "default": "3.2.0"
+          "default": "4.0.0"
         },
         "time": {
           "type": "integer"
@@ -157,6 +157,16 @@
     },
     "links": {
       "type": "array",
+      "contains": {
+        "type": "object",
+        "properties": {
+          "type": {
+            "enum": [
+              "TEST_CASE_EXECUTION"
+            ]
+          }
+        }
+      },
       "items": {
         "type": "object",
         "properties": {
--- definitions/EiffelTestCaseFinishedEvent/3.3.1.yml   2024-02-09 08:42:50.838709300 +0100
+++ definitions/EiffelTestCaseFinishedEvent/4.0.0.yml   2024-02-09 08:42:50.838709300 +0100
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/draft-2020-12/schema#
 _name: EiffelTestCaseFinishedEvent
-_version: 3.3.1
+_version: 4.0.0
 _abbrev: TCF
 _description: |-
   The EiffelTestCaseFinishedEvent declares that a previously started test case (declared by [EiffelTestCaseStartedEvent](./EiffelTestCaseStartedEvent.md)) has finished and reports the outcome.
@@ -26,7 +26,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -122,14 +122,20 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     required:
       - outcome
     additionalProperties: false
   links:
     type: array
+    contains:
+      type: object
+      properties:
+        type:
+          enum:
+            - TEST_CASE_EXECUTION
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -184,6 +190,8 @@
       types:
         - EiffelTestCaseTriggeredEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12.
   - version: 3.3.1
     changes: Change IUT to Implementation Under Test (see [Issue 235](https://github.com/eiffel-community/eiffel/issues/359)).
   - version: 3.3.0
--- schemas/EiffelTestCaseFinishedEvent/3.3.1.json  2024-02-09 08:49:52.262094200 +0100
+++ schemas/EiffelTestCaseFinishedEvent/4.0.0.json  2024-02-09 08:49:52.308987500 +0100
@@ -1,5 +1,5 @@
 {
-  "$schema": "http://json-schema.org/draft-04/schema#",
+  "$schema": "https://json-schema.org/draft/draft-2020-12/schema#",
   "type": "object",
   "properties": {
     "meta": {
@@ -18,9 +18,9 @@
         "version": {
           "type": "string",
           "enum": [
-            "3.3.1"
+            "4.0.0"
           ],
-          "default": "3.3.1"
+          "default": "4.0.0"
         },
         "time": {
           "type": "integer"
@@ -233,6 +233,16 @@
     },
     "links": {
       "type": "array",
+      "contains": {
+        "type": "object",
+        "properties": {
+          "type": {
+            "enum": [
+              "TEST_CASE_EXECUTION"
+            ]
+          }
+        }
+      },
       "items": {
         "type": "object",
         "properties": {
--- definitions/EiffelTestCaseStartedEvent/3.3.0.yml    2024-02-09 08:42:50.867464900 +0100
+++ definitions/EiffelTestCaseStartedEvent/4.0.0.yml    2024-02-09 08:42:50.867464900 +0100
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/draft-2020-12/schema#
 _name: EiffelTestCaseStartedEvent
-_version: 3.3.0
+_version: 4.0.0
 _abbrev: TCS
 _description: The EiffelTestCaseStartedEvent declares that the execution
   of a test case has commenced. This event SHALL be preceded by a [EiffelTestCaseTriggeredEvent](./EiffelTestCaseTriggeredEvent.md),
@@ -23,7 +23,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -68,12 +68,18 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     additionalProperties: false
   links:
     type: array
+    contains:
+      type: object
+      properties:
+        type:
+          enum:
+            - TEST_CASE_EXECUTION
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -137,6 +143,8 @@
       types:
         - EiffelTestCaseTriggeredEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12.
   - version: 3.3.0
     introduced_in: edition-arica
     changes: Add schema URL to the meta object (see [Issue 280](https://github.com/eiffel-community/eiffel/issues/280)).
--- schemas/EiffelTestCaseStartedEvent/3.3.0.json   2024-02-09 08:49:52.594617500 +0100
+++ schemas/EiffelTestCaseStartedEvent/4.0.0.json   2024-02-09 08:49:52.641688500 +0100
@@ -1,5 +1,5 @@
 {
-  "$schema": "http://json-schema.org/draft-04/schema#",
+  "$schema": "https://json-schema.org/draft/draft-2020-12/schema#",
   "type": "object",
   "properties": {
     "meta": {
@@ -18,9 +18,9 @@
         "version": {
           "type": "string",
           "enum": [
-            "3.3.0"
+            "4.0.0"
           ],
-          "default": "3.3.0"
+          "default": "4.0.0"
         },
         "time": {
           "type": "integer"
@@ -185,6 +185,16 @@
     },
     "links": {
       "type": "array",
+      "contains": {
+        "type": "object",
+        "properties": {
+          "type": {
+            "enum": [
+              "TEST_CASE_EXECUTION"
+            ]
+          }
+        }
+      },
       "items": {
         "type": "object",
         "properties": {
--- definitions/EiffelTestCaseTriggeredEvent/3.5.1.yml  2024-02-09 08:42:50.914769100 +0100
+++ definitions/EiffelTestCaseTriggeredEvent/4.0.0.yml  2024-02-09 08:42:50.914769100 +0100
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/draft-2020-12/schema#
 _name: EiffelTestCaseTriggeredEvent
-_version: 3.5.1
+_version: 4.0.0
 _abbrev: TCT
 _description: |-
   The EiffelTestCaseTriggeredEvent declares that the execution of a test case has been triggered, but not yet started. This can either be declared stand-alone or as part of an activity or test suite, using either a __CAUSE__ or a __CONTEXT__ link type, respectively.
@@ -24,7 +24,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -117,14 +117,20 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     required:
       - testCase
     additionalProperties: false
   links:
     type: array
+    contains:
+      type: object
+      properties:
+        type:
+          enum:
+            - IUT
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -203,6 +209,8 @@
       types:
         - EiffelTestCaseTriggeredEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12.
   - version: 3.5.1
     changes: Change IUT to Implementation Under Test (see [Issue 235](https://github.com/eiffel-community/eiffel/issues/359)).
   - version: 3.5.0
--- schemas/EiffelTestCaseTriggeredEvent/3.5.1.json 2024-02-09 08:49:53.140951700 +0100
+++ schemas/EiffelTestCaseTriggeredEvent/4.0.0.json 2024-02-09 08:49:53.194766800 +0100
@@ -1,5 +1,5 @@
 {
-  "$schema": "http://json-schema.org/draft-04/schema#",
+  "$schema": "https://json-schema.org/draft/draft-2020-12/schema#",
   "type": "object",
   "properties": {
     "meta": {
@@ -18,9 +18,9 @@
         "version": {
           "type": "string",
           "enum": [
-            "3.5.1"
+            "4.0.0"
           ],
-          "default": "3.5.1"
+          "default": "4.0.0"
         },
         "time": {
           "type": "integer"
@@ -235,6 +235,16 @@
     },
     "links": {
       "type": "array",
+      "contains": {
+        "type": "object",
+        "properties": {
+          "type": {
+            "enum": [
+              "IUT"
+            ]
+          }
+        }
+      },
       "items": {
         "type": "object",
         "properties": {
--- definitions/EiffelTestExecutionRecipeCollectionCreatedEvent/4.3.1.yml   2024-02-09 08:42:50.974121900 +0100
+++ definitions/EiffelTestExecutionRecipeCollectionCreatedEvent/5.0.0.yml   2024-02-09 08:42:50.974121900 +0100
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/draft-2020-12/schema#
 _name: EiffelTestExecutionRecipeCollectionCreatedEvent
-_version: 4.3.1
+_version: 5.0.0
 _abbrev: TERCC
 _description: |-
   The EiffelTestExecutionRecipeCollectionCreatedEvent declares that a collection of test execution recipes has been created. In order to clarify what that means, several concepts need to be explained.
@@ -30,7 +30,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -192,14 +192,14 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     required:
       - selectionStrategy
     additionalProperties: false
   links:
     type: array
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -239,6 +239,8 @@
       types:
         - EiffelFlowContextDefinedEvent
 _history:
+  - version: 5.0.0
+    changes: Update meta schema to Draft 2020-12.
   - version: 4.3.1
     changes: Change IUT to Implementation Under Test (see [Issue 235](https://github.com/eiffel-community/eiffel/issues/359)).
   - version: 4.3.0
--- schemas/EiffelTestExecutionRecipeCollectionCreatedEvent/4.3.1.json  2024-02-09 08:49:53.742561900 +0100
+++ schemas/EiffelTestExecutionRecipeCollectionCreatedEvent/5.0.0.json  2024-02-09 08:49:53.795010900 +0100
@@ -1,5 +1,5 @@
 {
-  "$schema": "http://json-schema.org/draft-04/schema#",
+  "$schema": "https://json-schema.org/draft/draft-2020-12/schema#",
   "type": "object",
   "properties": {
     "meta": {
@@ -18,9 +18,9 @@
         "version": {
           "type": "string",
           "enum": [
-            "4.3.1"
+            "5.0.0"
           ],
-          "default": "4.3.1"
+          "default": "5.0.0"
         },
         "time": {
           "type": "integer"
--- definitions/EiffelTestSuiteFinishedEvent/3.3.1.yml  2024-02-09 08:42:51.024892400 +0100
+++ definitions/EiffelTestSuiteFinishedEvent/4.0.0.yml  2024-02-09 08:42:51.024892400 +0100
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/draft-2020-12/schema#
 _name: EiffelTestSuiteFinishedEvent
-_version: 3.3.1
+_version: 4.0.0
 _abbrev: TSF
 _description: |-
   The EiffelTestSuiteFinishedEvent declares that a previously started test suite (declared by [EiffelTestSuiteStartedEvent](./EiffelTestSuiteStartedEvent.md)) has finished and reports the outcome.
@@ -24,7 +24,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -96,12 +96,18 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     additionalProperties: false
   links:
     type: array
+    contains:
+      type: object
+      properties:
+        type:
+          enum:
+            - TEST_SUITE_EXECUTION
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -151,6 +157,8 @@
       types:
         - EiffelTestSuiteStartedEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12.
   - version: 3.3.1
     changes: Change IUT to Implementation Under Test (see [Issue 235](https://github.com/eiffel-community/eiffel/issues/359)).
   - version: 3.3.0
--- schemas/EiffelTestSuiteFinishedEvent/3.3.1.json 2024-02-09 08:49:54.158583000 +0100
+++ schemas/EiffelTestSuiteFinishedEvent/4.0.0.json 2024-02-09 08:49:54.195917700 +0100
@@ -1,5 +1,5 @@
 {
-  "$schema": "http://json-schema.org/draft-04/schema#",
+  "$schema": "https://json-schema.org/draft/draft-2020-12/schema#",
   "type": "object",
   "properties": {
     "meta": {
@@ -18,9 +18,9 @@
         "version": {
           "type": "string",
           "enum": [
-            "3.3.1"
+            "4.0.0"
           ],
-          "default": "3.3.1"
+          "default": "4.0.0"
         },
         "time": {
           "type": "integer"
@@ -209,6 +209,16 @@
     },
     "links": {
       "type": "array",
+      "contains": {
+        "type": "object",
+        "properties": {
+          "type": {
+            "enum": [
+              "TEST_SUITE_EXECUTION"
+            ]
+          }
+        }
+      },
       "items": {
         "type": "object",
         "properties": {
--- definitions/EiffelTestSuiteStartedEvent/3.4.0.yml   2024-02-09 08:42:51.067772700 +0100
+++ definitions/EiffelTestSuiteStartedEvent/4.0.0.yml   2024-02-09 08:42:51.067772700 +0100
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/draft-2020-12/schema#
 _name: EiffelTestSuiteStartedEvent
-_version: 3.4.0
+_version: 4.0.0
 _abbrev: TSS
 _description: |-
   The EiffelTestSuiteStartedEvent declares that the execution of a test suite has started. This can either be declared stand-alone or as part of an activity or other test suite, using either a __CAUSE__ or a __CONTEXT__ link type, respectively.
@@ -24,7 +24,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -101,14 +101,14 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     required:
       - name
     additionalProperties: false
   links:
     type: array
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -184,6 +184,8 @@
       types:
         - EiffelTestExecutionRecipeCollectionCreatedEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12.
   - version: 3.4.0
     introduced_in: edition-orizaba
     changes: Add ORIGINAL_TRIGGER link (see [Issue 246](https://github.com/eiffel-community/eiffel/issues/246)).
--- schemas/EiffelTestSuiteStartedEvent/3.4.0.json  2024-02-09 08:49:54.565569800 +0100
+++ schemas/EiffelTestSuiteStartedEvent/4.0.0.json  2024-02-09 08:49:54.613391700 +0100
@@ -1,5 +1,5 @@
 {
-  "$schema": "http://json-schema.org/draft-04/schema#",
+  "$schema": "https://json-schema.org/draft/draft-2020-12/schema#",
   "type": "object",
   "properties": {
     "meta": {
@@ -18,9 +18,9 @@
         "version": {
           "type": "string",
           "enum": [
-            "3.4.0"
+            "4.0.0"
           ],
-          "default": "3.4.0"
+          "default": "4.0.0"
         },
         "time": {
           "type": "integer"
magnusbaeck commented 2 months ago

Up to date diff of the YAML files:

--- definitions/EiffelActivityCanceledEvent/4.0.0.yml   2024-01-17 23:24:28.317802086 +0100
+++ definitions/EiffelActivityCanceledEvent/5.0.0.yml   2024-07-03 16:49:54.332140530 +0200
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/2020-12/schema#
 _name: EiffelActivityCanceledEvent
-_version: 4.0.0
+_version: 5.0.0
 _abbrev: ActC
 _description: The EiffelActivityCanceledEvent signals that a previously
   triggered activity execution has been canceled _before it has started_.
@@ -25,7 +25,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -36,12 +36,18 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     additionalProperties: false
   links:
     type: array
+    contains:
+      type: object
+      properties:
+        type:
+          enum:
+            - ACTIVITY_EXECUTION
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -96,6 +102,8 @@
       types:
         - EiffelFlowContextDefinedEvent
 _history:
+  - version: 5.0.0
+    changes: Update meta schema to Draft 2020-12 and add link validation.
   - version: 4.0.0
     changes: Fix bug in schema regarding additionalProperties (see [Issue 376](https://github.com/eiffel-community/eiffel/issues/376)).
   - version: 3.2.0
--- definitions/EiffelActivityFinishedEvent/3.3.0.yml   2024-01-17 23:24:28.317802086 +0100
+++ definitions/EiffelActivityFinishedEvent/4.0.0.yml   2024-07-03 16:49:54.332140530 +0200
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/2020-12/schema#
 _name: EiffelActivityFinishedEvent
-_version: 3.3.0
+_version: 4.0.0
 _abbrev: ActF
 _description: The EiffelActivityFinishedEvent declares that a previously
   started activity (declared by [EiffelActivityTriggeredEvent](./EiffelActivityTriggeredEvent.md)
@@ -24,7 +24,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -88,14 +88,20 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     additionalProperties: false
     required:
       - outcome
   links:
     type: array
+    contains:
+      type: object
+      properties:
+        type:
+          enum:
+            - ACTIVITY_EXECUTION
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -150,6 +156,8 @@
       types:
         - EiffelFlowContextDefinedEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12 and add link validation.
   - version: 3.3.0
     introduced_in: edition-arica
     changes: Add schema URL to the meta object (see [Issue 280](https://github.com/eiffel-community/eiffel/issues/280)).
--- definitions/EiffelActivityStartedEvent/4.3.0.yml    2024-01-17 23:24:28.317802086 +0100
+++ definitions/EiffelActivityStartedEvent/5.0.0.yml    2024-07-03 16:49:54.332140530 +0200
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/2020-12/schema#
 _name: EiffelActivityStartedEvent
-_version: 4.3.0
+_version: 5.0.0
 _abbrev: ActS
 _description: The EiffelActivityStartedEvent declares that a previously
   triggered activity (declared by [EiffelActivityTriggeredEvent](./EiffelActivityTriggeredEvent.md))
@@ -23,7 +23,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -68,12 +68,18 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     additionalProperties: false
   links:
     type: array
+    contains:
+      type: object
+      properties:
+        type:
+          enum:
+            - ACTIVITY_EXECUTION
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -136,6 +142,8 @@
       types:
         - EiffelActivityTriggeredEvent
 _history:
+  - version: 5.0.0
+    changes: Update meta schema to Draft 2020-12 and add link validation.
   - version: 4.3.0
     introduced_in: edition-arica
     changes: Add schema URL to the meta object (see [Issue 280](https://github.com/eiffel-community/eiffel/issues/280)).
--- definitions/EiffelActivityTriggeredEvent/4.3.0.yml  2024-01-17 23:24:28.317802086 +0100
+++ definitions/EiffelActivityTriggeredEvent/5.0.0.yml  2024-07-03 16:49:54.332140530 +0200
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/2020-12/schema#
 _name: EiffelActivityTriggeredEvent
-_version: 4.3.0
+_version: 5.0.0
 _abbrev: ActT
 _description: |-
   The EiffelActivityTriggeredEvent declares that a certain activity - typically a build, test or analysis activity - has been triggered by some factor. Note that this is crucially different from the activity execution having _started_ (as declared by [EiffelActivityStartedEvent](./EiffelActivityStartedEvent.md)).
@@ -24,7 +24,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -81,14 +81,14 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     required:
       - name
     additionalProperties: false
   links:
     type: array
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -155,6 +155,8 @@
       types:
         - EiffelActivityTriggeredEvent
 _history:
+  - version: 5.0.0
+    changes: Update meta schema to Draft 2020-12 and add link validation.
   - version: 4.3.0
     introduced_in: edition-orizaba
     changes: Add ORIGINAL_TRIGGER link (see [Issue 246](https://github.com/eiffel-community/eiffel/issues/246)).
--- definitions/EiffelAnnouncementPublishedEvent/3.2.0.yml  2024-01-17 23:24:28.317802086 +0100
+++ definitions/EiffelAnnouncementPublishedEvent/4.0.0.yml  2024-07-03 16:49:54.332140530 +0200
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/2020-12/schema#
 _name: EiffelAnnouncementPublishedEvent
-_version: 3.2.0
+_version: 4.0.0
 _abbrev: AnnP
 _description: The EiffelAnnouncementPublishedEvent represents an announcement,
   technically regarding any topic but typically used to communicate
@@ -25,7 +25,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -55,7 +55,7 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     required:
       - heading
       - body
@@ -64,7 +64,7 @@
   links:
     type: array
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -114,6 +114,8 @@
       types:
         - EiffelAnnouncementPublishedEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12 and add link validation.
   - version: 3.2.0
     introduced_in: edition-arica
     changes: Add schema URL to the meta object (see [Issue 280](https://github.com/eiffel-community/eiffel/issues/280)).
--- definitions/EiffelArtifactCreatedEvent/3.3.0.yml    2024-01-17 23:24:28.317802086 +0100
+++ definitions/EiffelArtifactCreatedEvent/4.0.0.yml    2024-07-03 16:49:54.332140530 +0200
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/2020-12/schema#
 _name: EiffelArtifactCreatedEvent
-_version: 3.3.0
+_version: 4.0.0
 _abbrev: ArtC
 _description: The EiffelArtifactCreatedEvent declares that a software
   artifact has been created, what its coordinates are, what it contains
@@ -23,7 +23,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -140,14 +140,14 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     required:
       - identity
     additionalProperties: false
   links:
     type: array
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -214,6 +214,8 @@
       types:
         - EiffelArtifactCreatedEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12 and add link validation.
   - version: 3.3.0
     introduced_in: edition-arica
     changes: Added data.fileInformation.integrityProtection member (see [Issue 290](https://github.com/eiffel-community/eiffel/issues/290)).
--- definitions/EiffelArtifactDeployedEvent/0.1.0.yml   2024-01-17 23:24:28.317802086 +0100
+++ definitions/EiffelArtifactDeployedEvent/0.2.0.yml   2024-07-03 16:49:54.332140530 +0200
@@ -1,4 +1,4 @@
-# Copyright 2022-2024 Axis Communications AB.
+# Copyright 2022-2024 Axis Communications AB and others.
 # For a full list of individual contributors, please see the commit history.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/2020-12/schema#
 _name: EiffelArtifactDeployedEvent
-_version: 0.1.0
+_version: 0.2.0
 _abbrev: ArtD
 _description: The EiffelArtifactDeployedEvent states that a software artifact had been deployed into a specified environment or
   that the configuration of the artifact has been changed.
@@ -23,7 +23,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -37,12 +37,19 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     additionalProperties: false
   links:
     type: array
+    contains:
+      type: object
+      properties:
+        type:
+          enum:
+            - ARTIFACT
+            - ENVIRONMENT
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -114,6 +121,8 @@
       types:
         - EiffelFlowContextDefinedEvent
 _history:
+  - version: 0.2.0
+    changes: Update meta schema to Draft 2020-12 and add link validation.
   - version: 0.1.0
     introduced_in: edition-orizaba
     changes: Initial version.
--- definitions/EiffelArtifactPublishedEvent/3.3.0.yml  2024-01-17 23:24:28.317802086 +0100
+++ definitions/EiffelArtifactPublishedEvent/4.0.0.yml  2024-07-03 16:49:54.332140530 +0200
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/2020-12/schema#
 _name: EiffelArtifactPublishedEvent
-_version: 3.3.0
+_version: 4.0.0
 _abbrev: ArtP
 _description: The EiffelArtifactPublishedEvent declares that a software
   artifact (declared by [EiffelArtifactCreatedEvent](./EiffelArtifactCreatedEvent.md))
@@ -24,7 +24,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -65,14 +65,20 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     required:
       - locations
     additionalProperties: false
   links:
     type: array
+    contains:
+      type: object
+      properties:
+        type:
+          enum:
+            - ARTIFACT
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -120,6 +126,8 @@
       types:
         - EiffelFlowContextDefinedEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12 and add link validation.
   - version: 3.3.0
     introduced_in: edition-arica
     changes: Add schema URL to the meta object (see [Issue 280](https://github.com/eiffel-community/eiffel/issues/280)).
--- definitions/EiffelArtifactReusedEvent/3.2.0.yml 2024-01-17 23:24:28.317802086 +0100
+++ definitions/EiffelArtifactReusedEvent/4.0.0.yml 2024-07-03 16:49:54.332140530 +0200
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/2020-12/schema#
 _name: EiffelArtifactReusedEvent
-_version: 3.2.0
+_version: 4.0.0
 _abbrev: ArtR
 _description: |-
   The EiffelArtifactReusedEvent declares that an identified [EiffelArtifactCreatedEvent](./EiffelArtifactCreatedEvent.md) has been _reused_ for an identified [EiffelCompositionDefinedEvent](./EiffelCompositionDefinedEvent.md). This means that it is logically equivalent to an artifact that would have been built from that composition, and can be used for build avoidance (see the [Build Avoidance Usage Example](../usage-examples/build-avoidance.md) for more information).
@@ -24,19 +24,26 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     additionalProperties: false
   links:
     type: array
+    contains:
+      type: object
+      properties:
+        type:
+          enum:
+            - COMPOSITION
+            - REUSED_ARTIFACT
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -95,6 +102,8 @@
       types:
         - EiffelArtifactCreatedEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12 and add link validation.
   - version: 3.2.0
     introduced_in: edition-arica
     changes: Add schema URL to the meta object (see [Issue 280](https://github.com/eiffel-community/eiffel/issues/280)).
--- definitions/EiffelCompositionDefinedEvent/3.3.0.yml 2024-01-17 23:24:28.321802070 +0100
+++ definitions/EiffelCompositionDefinedEvent/4.0.0.yml 2024-07-03 16:49:54.332140530 +0200
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/2020-12/schema#
 _name: EiffelCompositionDefinedEvent
-_version: 3.3.0
+_version: 4.0.0
 _abbrev: CD
 _description: The EiffelCompositionDefinedEvent declares a composition
   of items (artifacts, sources and other compositions) has been defined,
@@ -24,7 +24,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -40,14 +40,14 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     required:
       - name
     additionalProperties: false
   links:
     type: array
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -111,6 +111,8 @@
       types:
         - EiffelCompositionDefinedEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12 and add link validation.
   - version: 3.3.0
     introduced_in: edition-arica
     changes: Add schema URL to the meta object (see [Issue 280](https://github.com/eiffel-community/eiffel/issues/280)).
--- definitions/EiffelConfidenceLevelModifiedEvent/3.4.0.yml    2024-01-17 23:24:28.321802070 +0100
+++ definitions/EiffelConfidenceLevelModifiedEvent/4.0.0.yml    2024-07-03 16:49:54.332140530 +0200
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/2020-12/schema#
 _name: EiffelConfidenceLevelModifiedEvent
-_version: 3.4.0
+_version: 4.0.0
 _abbrev: CLM
 _description: |-
   The EiffelConfidenceLevelModifiedEvent declares that an entity has achieved (or failed to achieve) a certain level of confidence, or in a broader sense to annotate it as being applicable or relevant to a certain case (e.g. fit for release to a certain customer segment or having passed certain criteria). This is particularly useful for promoting various engineering artifacts, such as product revisions, through the continuous integration and delivery pipeline.
@@ -24,7 +24,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -68,15 +68,21 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     required:
       - name
       - value
     additionalProperties: false
   links:
     type: array
+    contains:
+      type: object
+      properties:
+        type:
+          enum:
+            - SUBJECT
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -154,6 +160,8 @@
       types:
         - EiffelConfidenceLevelModifiedEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12 and add link validation.
   - version: 3.4.0
     changes: Add CONFIDENCE_BASIS link (see [Issue 323](https://github.com/eiffel-community/eiffel/issues/323)).
   - version: 3.3.0
--- definitions/EiffelCustomDataProperty/1.0.0.yml  2024-01-17 23:24:28.321802070 +0100
+++ definitions/EiffelCustomDataProperty/2.0.0.yml  2024-06-27 17:13:18.653721006 +0200
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/draft-2020-12/schema#
 _name: EiffelCustomDataProperty
-_version: 1.0.0
+_version: 2.0.0
 type: object
 properties:
   key:
--- definitions/EiffelEnvironmentDefinedEvent/3.3.0.yml 2024-01-17 23:24:28.321802070 +0100
+++ definitions/EiffelEnvironmentDefinedEvent/4.0.0.yml 2024-07-03 16:49:54.336140513 +0200
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/2020-12/schema#
 _name: EiffelEnvironmentDefinedEvent
-_version: 3.3.0
+_version: 4.0.0
 _abbrev: ED
 _description: |-
   The EiffelEnvironmentDefinedEvent declares an environment which may be referenced from other events in order to secure traceability to the conditions under which an artifact was created or a test was executed. Depending on the technology domain, the nature of an environment varies greatly however: it may be a virtual image, a complete mechatronic system of millions of independent parts, or anything in between. Consequently, a concise yet complete and generic syntax for describing any environment is futile.
@@ -24,7 +24,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -78,14 +78,14 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     required:
       - name
     additionalProperties: false
   links:
     type: array
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -149,6 +149,8 @@
         - EiffelArtifactCreatedEvent
         - EiffelCompositionDefinedEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12 and add link validation.
   - version: 3.3.0
     introduced_in: edition-arica
     changes: Add schema URL to the meta object (see [Issue 280](https://github.com/eiffel-community/eiffel/issues/280)).
--- definitions/EiffelEventLink/1.1.1.yml   2024-01-17 23:24:28.321802070 +0100
+++ definitions/EiffelEventLink/2.0.0.yml   2024-06-27 17:13:18.653721006 +0200
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/draft-2020-12/schema#
 _name: EiffelEventLink
-_version: 1.1.1
+_version: 2.0.0
 type: object
 properties:
   type:
--- definitions/EiffelFlowContextDefinedEvent/3.2.0.yml 2024-01-17 23:24:28.321802070 +0100
+++ definitions/EiffelFlowContextDefinedEvent/4.0.0.yml 2024-07-03 16:49:54.336140513 +0200
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/2020-12/schema#
 _name: EiffelFlowContextDefinedEvent
-_version: 3.2.0
+_version: 4.0.0
 _abbrev: FCD
 _description: |-
   The EiffelFlowContextDefinedEvent describes the context of other events, answering questions such as "Which project is this change part of?" or "Which track does this artifact belong to?". In this way it offers a method of classifying and structuring one's continuous integration and delivery system and thereby facilitating traceability and searchability.
@@ -24,7 +24,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -55,12 +55,12 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     additionalProperties: false
   links:
     type: array
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -100,6 +100,8 @@
       types:
         - EiffelFlowContextDefinedEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12 and add link validation.
   - version: 3.2.0
     introduced_in: edition-arica
     changes: Add schema URL to the meta object (see [Issue 280](https://github.com/eiffel-community/eiffel/issues/280)).
--- definitions/EiffelIssueDefinedEvent/3.2.0.yml   2024-01-17 23:24:28.321802070 +0100
+++ definitions/EiffelIssueDefinedEvent/4.0.0.yml   2024-07-03 16:49:54.336140513 +0200
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/2020-12/schema#
 _name: EiffelIssueDefinedEvent
-_version: 3.2.0
+_version: 4.0.0
 _abbrev: ID
 _description: The EiffelIssueDefinedEvent declares that an issue has
   been created in some external issue management software. ID is semantically
@@ -25,7 +25,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -70,7 +70,7 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     required:
       - type
       - tracker
@@ -80,7 +80,7 @@
   links:
     type: array
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 _links:
   CAUSE:
     description: 'Identifies a cause of the event occurring. SHOULD
@@ -115,6 +115,8 @@
       types:
         - EiffelFlowContextDefinedEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12 and add link validation.
   - version: 3.2.0
     introduced_in: edition-arica
     changes: Add schema URL to the meta object (see [Issue 280](https://github.com/eiffel-community/eiffel/issues/280)).
--- definitions/EiffelIssueVerifiedEvent/4.3.1.yml  2024-01-17 23:24:28.321802070 +0100
+++ definitions/EiffelIssueVerifiedEvent/5.0.0.yml  2024-07-03 16:49:54.336140513 +0200
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/2020-12/schema#
 _name: EiffelIssueVerifiedEvent
-_version: 4.3.1
+_version: 5.0.0
 _abbrev: IV
 _description: |-
   The EiffelIssueVerifiedEvent declares that an issue, typically a requirement, has been verified by some means. It is different from [EiffelTestCaseFinishedEvent](./EiffelTestCaseFinishedEvent.md) in that multiple test case executions may serve as the basis for a single verification or, conversely, multiple issues may be verified based on a single test case execution.
@@ -24,19 +24,25 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     additionalProperties: false
   links:
     type: array
+    contains:
+      type: object
+      properties:
+        type:
+          enum:
+            - IUT
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -131,6 +137,8 @@
         - EiffelTestCaseFinishedEvent
         - EiffelTestSuiteFinishedEvent
 _history:
+  - version: 5.0.0
+    changes: Update meta schema to Draft 2020-12 and add link validation.
   - version: 4.3.1
     changes: Change IUT to Implementation Under Test (see [Issue 235](https://github.com/eiffel-community/eiffel/issues/359)).
   - version: 4.3.0
--- definitions/EiffelMetaProperty/3.1.0.yml    2024-01-17 23:24:28.321802070 +0100
+++ definitions/EiffelMetaProperty/4.0.0.yml    2024-06-27 17:13:18.653721006 +0200
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.

-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/draft-2020-12/schema#
 _name: EiffelMetaProperty
-_version: 3.1.0
+_version: 4.0.0
 type: object
 properties:
   id:
--- definitions/EiffelSourceChangeCreatedEvent/4.2.0.yml    2024-01-17 23:24:28.321802070 +0100
+++ definitions/EiffelSourceChangeCreatedEvent/5.0.0.yml    2024-07-03 16:49:54.336140513 +0200
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/2020-12/schema#
 _name: EiffelSourceChangeCreatedEvent
-_version: 4.2.0
+_version: 5.0.0
 _abbrev: SCC
 _description: |-
   The EiffelSourceChangeCreatedEvent declares that a change to sources has been made, but not yet submitted (see [EiffelSourceChangeSubmittedEvent](./EiffelSourceChangeSubmittedEvent.md)). This can be used to represent a change done on a private branch, undergoing review or made in a forked repository. Unlike EiffelSourceChangeSubmittedEvent, EiffelSourceChangeCreatedEvent _describes the change_ in terms of who authored it and which issues it addressed.
@@ -24,7 +24,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -173,12 +173,12 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     additionalProperties: false
   links:
     type: array
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -271,6 +271,8 @@
       types:
         - EiffelIssueDefinedEvent
 _history:
+  - version: 5.0.0
+    changes: Update meta schema to Draft 2020-12 and add link validation.
   - version: 4.2.0
     introduced_in: edition-arica
     changes: Add schema URL to the meta object (see [Issue 280](https://github.com/eiffel-community/eiffel/issues/280)).
--- definitions/EiffelSourceChangeSubmittedEvent/3.2.0.yml  2024-01-17 23:24:28.325802054 +0100
+++ definitions/EiffelSourceChangeSubmittedEvent/4.0.0.yml  2024-07-03 16:49:54.336140513 +0200
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/2020-12/schema#
 _name: EiffelSourceChangeSubmittedEvent
-_version: 3.2.0
+_version: 4.0.0
 _abbrev: SCS
 _description: |-
   The EiffelSourceChangeSubmittedEvent declares that a change has been integrated into to a shared source branch of interest (e.g. "master", "dev" or "mainline") as opposed to a private or local branch. Note that it does not describe what has changed, but instead uses the __CHANGE__ link type to reference [EiffelSourceChangeCreatedEvent](./EiffelSourceChangeCreatedEvent.md).
@@ -26,7 +26,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -142,12 +142,12 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     additionalProperties: false
   links:
     type: array
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -204,6 +204,8 @@
       types:
         - EiffelSourceChangeSubmittedEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12 and add link validation.
   - version: 3.2.0
     introduced_in: edition-arica
     changes: Add schema URL to the meta object (see [Issue 280](https://github.com/eiffel-community/eiffel/issues/280)).
--- definitions/EiffelTestCaseCanceledEvent/3.2.0.yml   2024-01-17 23:24:28.325802054 +0100
+++ definitions/EiffelTestCaseCanceledEvent/4.0.0.yml   2024-07-03 16:49:54.336140513 +0200
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/2020-12/schema#
 _name: EiffelTestCaseCanceledEvent
-_version: 3.2.0
+_version: 4.0.0
 _abbrev: TCC
 _description: The EiffelTestCaseCanceledEvent declares that a previously
   triggered test case execution (represented by [EiffelTestCaseTriggeredEvent](./EiffelTestCaseTriggeredEvent.md))
@@ -25,7 +25,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -36,12 +36,18 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     additionalProperties: false
   links:
     type: array
+    contains:
+      type: object
+      properties:
+        type:
+          enum:
+            - TEST_CASE_EXECUTION
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -96,6 +102,8 @@
       types:
         - EiffelTestCaseTriggeredEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12 and add link validation.
   - version: 3.2.0
     introduced_in: edition-arica
     changes: Add schema URL to the meta object (see [Issue 280](https://github.com/eiffel-community/eiffel/issues/280)).
--- definitions/EiffelTestCaseFinishedEvent/3.3.1.yml   2024-01-17 23:24:28.325802054 +0100
+++ definitions/EiffelTestCaseFinishedEvent/4.0.0.yml   2024-07-03 16:49:54.336140513 +0200
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/2020-12/schema#
 _name: EiffelTestCaseFinishedEvent
-_version: 3.3.1
+_version: 4.0.0
 _abbrev: TCF
 _description: |-
   The EiffelTestCaseFinishedEvent declares that a previously started test case (declared by [EiffelTestCaseStartedEvent](./EiffelTestCaseStartedEvent.md)) has finished and reports the outcome.
@@ -26,7 +26,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -122,14 +122,20 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     required:
       - outcome
     additionalProperties: false
   links:
     type: array
+    contains:
+      type: object
+      properties:
+        type:
+          enum:
+            - TEST_CASE_EXECUTION
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -184,6 +190,8 @@
       types:
         - EiffelTestCaseTriggeredEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12 and add link validation.
   - version: 3.3.1
     changes: Change IUT to Implementation Under Test (see [Issue 235](https://github.com/eiffel-community/eiffel/issues/359)).
   - version: 3.3.0
--- definitions/EiffelTestCaseStartedEvent/3.3.0.yml    2024-01-17 23:24:28.325802054 +0100
+++ definitions/EiffelTestCaseStartedEvent/4.0.0.yml    2024-07-03 16:49:54.336140513 +0200
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/2020-12/schema#
 _name: EiffelTestCaseStartedEvent
-_version: 3.3.0
+_version: 4.0.0
 _abbrev: TCS
 _description: The EiffelTestCaseStartedEvent declares that the execution
   of a test case has commenced. This event SHALL be preceded by a [EiffelTestCaseTriggeredEvent](./EiffelTestCaseTriggeredEvent.md),
@@ -23,7 +23,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -68,12 +68,18 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     additionalProperties: false
   links:
     type: array
+    contains:
+      type: object
+      properties:
+        type:
+          enum:
+            - TEST_CASE_EXECUTION
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -137,6 +143,8 @@
       types:
         - EiffelTestCaseTriggeredEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12 and add link validation.
   - version: 3.3.0
     introduced_in: edition-arica
     changes: Add schema URL to the meta object (see [Issue 280](https://github.com/eiffel-community/eiffel/issues/280)).
--- definitions/EiffelTestCaseTriggeredEvent/3.5.1.yml  2024-01-17 23:24:28.325802054 +0100
+++ definitions/EiffelTestCaseTriggeredEvent/4.0.0.yml  2024-07-03 16:49:54.336140513 +0200
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/2020-12/schema#
 _name: EiffelTestCaseTriggeredEvent
-_version: 3.5.1
+_version: 4.0.0
 _abbrev: TCT
 _description: |-
   The EiffelTestCaseTriggeredEvent declares that the execution of a test case has been triggered, but not yet started. This can either be declared stand-alone or as part of an activity or test suite, using either a __CAUSE__ or a __CONTEXT__ link type, respectively.
@@ -24,7 +24,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -117,14 +117,20 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     required:
       - testCase
     additionalProperties: false
   links:
     type: array
+    contains:
+      type: object
+      properties:
+        type:
+          enum:
+            - IUT
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -203,6 +209,8 @@
       types:
         - EiffelTestCaseTriggeredEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12 and add link validation.
   - version: 3.5.1
     changes: Change IUT to Implementation Under Test (see [Issue 235](https://github.com/eiffel-community/eiffel/issues/359)).
   - version: 3.5.0
--- definitions/EiffelTestExecutionRecipeCollectionCreatedEvent/4.3.1.yml   2024-01-17 23:24:28.325802054 +0100
+++ definitions/EiffelTestExecutionRecipeCollectionCreatedEvent/5.0.0.yml   2024-07-03 16:49:54.336140513 +0200
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/2020-12/schema#
 _name: EiffelTestExecutionRecipeCollectionCreatedEvent
-_version: 4.3.1
+_version: 5.0.0
 _abbrev: TERCC
 _description: |-
   The EiffelTestExecutionRecipeCollectionCreatedEvent declares that a collection of test execution recipes has been created. In order to clarify what that means, several concepts need to be explained.
@@ -30,7 +30,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -192,14 +192,14 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     required:
       - selectionStrategy
     additionalProperties: false
   links:
     type: array
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -239,6 +239,8 @@
       types:
         - EiffelFlowContextDefinedEvent
 _history:
+  - version: 5.0.0
+    changes: Update meta schema to Draft 2020-12 and add link validation.
   - version: 4.3.1
     changes: Change IUT to Implementation Under Test (see [Issue 235](https://github.com/eiffel-community/eiffel/issues/359)).
   - version: 4.3.0
--- definitions/EiffelTestSuiteFinishedEvent/3.3.1.yml  2024-01-17 23:24:28.325802054 +0100
+++ definitions/EiffelTestSuiteFinishedEvent/4.0.0.yml  2024-07-03 16:49:54.336140513 +0200
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/2020-12/schema#
 _name: EiffelTestSuiteFinishedEvent
-_version: 3.3.1
+_version: 4.0.0
 _abbrev: TSF
 _description: |-
   The EiffelTestSuiteFinishedEvent declares that a previously started test suite (declared by [EiffelTestSuiteStartedEvent](./EiffelTestSuiteStartedEvent.md)) has finished and reports the outcome.
@@ -24,7 +24,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -96,12 +96,18 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     additionalProperties: false
   links:
     type: array
+    contains:
+      type: object
+      properties:
+        type:
+          enum:
+            - TEST_SUITE_EXECUTION
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -151,6 +157,8 @@
       types:
         - EiffelTestSuiteStartedEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12 and add link validation.
   - version: 3.3.1
     changes: Change IUT to Implementation Under Test (see [Issue 235](https://github.com/eiffel-community/eiffel/issues/359)).
   - version: 3.3.0
--- definitions/EiffelTestSuiteStartedEvent/3.4.0.yml   2024-01-17 23:24:28.329802038 +0100
+++ definitions/EiffelTestSuiteStartedEvent/4.0.0.yml   2024-07-03 16:49:54.336140513 +0200
@@ -13,9 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-$schema: http://json-schema.org/draft-04/schema#
+$schema: https://json-schema.org/draft/2020-12/schema#
 _name: EiffelTestSuiteStartedEvent
-_version: 3.4.0
+_version: 4.0.0
 _abbrev: TSS
 _description: |-
   The EiffelTestSuiteStartedEvent declares that the execution of a test suite has started. This can either be declared stand-alone or as part of an activity or other test suite, using either a __CAUSE__ or a __CONTEXT__ link type, respectively.
@@ -24,7 +24,7 @@
 type: object
 properties:
   meta:
-    $ref: ../EiffelMetaProperty/3.1.0.yml
+    $ref: ../EiffelMetaProperty/4.0.0.yml
   data:
     type: object
     properties:
@@ -101,14 +101,14 @@
       customData:
         type: array
         items:
-          $ref: ../EiffelCustomDataProperty/1.0.0.yml
+          $ref: ../EiffelCustomDataProperty/2.0.0.yml
     required:
       - name
     additionalProperties: false
   links:
     type: array
     items:
-      $ref: ../EiffelEventLink/1.1.1.yml
+      $ref: ../EiffelEventLink/2.0.0.yml
 required:
   - meta
   - data
@@ -184,6 +184,8 @@
       types:
         - EiffelTestExecutionRecipeCollectionCreatedEvent
 _history:
+  - version: 4.0.0
+    changes: Update meta schema to Draft 2020-12 and add link validation.
   - version: 3.4.0
     introduced_in: edition-orizaba
     changes: Add ORIGINAL_TRIGGER link (see [Issue 246](https://github.com/eiffel-community/eiffel/issues/246)).