Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add JSON schema link validations #380

Merged

Conversation

e-backmark-ericsson
Copy link
Member

@e-backmark-ericsson e-backmark-ericsson commented Dec 22, 2023

Applicable Issues

#148

Description of the Change

  • Lift the JSON schema version to Draft 2020-12
  • Declare required link types in schemas, to make validations more failsafe and simple
  • Step major version of all event and object schemas, except for ArtD that is still below 1.0 and therefore cannot be raised to 1.0 in this PR.

Alternate Designs

  • Instead of duplicating info about required link types into the links yaml object we could have parsed the _links object and evaluated the required link types from there. That would have made it a single source of truth for declaring required link types. But the drawbacks are a more complex json generator and also possibly a lacking possibility to specify what version of the generic EiffelEventLink definition to use per event type. As a mitigation for this a check has been implemented to compare the links object with the _links object.
  • Could also have included validation of available link types, not just the required ones, but in line with comments in JSON schema doesn't have link objects validations for Eiffel events  #148 that might not be desired. A separate issue could be raised to discuss whether or not to validate available link types as well, and how to deal with custom link types if so.

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
Copy link
Member Author

Discussed with Magnus Jan 4:

  • All event should have their major versions stepped for this change

@e-backmark-ericsson
Copy link
Member Author

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"

@e-backmark-ericsson e-backmark-ericsson marked this pull request as ready for review February 9, 2024 08:23
Copy link
Member

@m-linner-ericsson m-linner-ericsson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good except that we probably need to state that changes does not only include schema update. See definitions/EiffelActivityCanceledEvent/5.0.0.yml

definitions/EiffelActivityCanceledEvent/5.0.0.yml Outdated Show resolved Hide resolved
definitions/EiffelActivityCanceledEvent/5.0.0.yml Outdated Show resolved Hide resolved
test_definitions.py Outdated Show resolved Hide resolved
test_definitions.py Outdated Show resolved Hide resolved
@magnusbaeck
Copy link
Member

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)).

@e-backmark-ericsson e-backmark-ericsson merged commit f7ed574 into eiffel-community:master Jul 4, 2024
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants