|
| 1 | +<!--- |
| 2 | + This file was generated from ../definitions/EiffelExperimentalEvent/0.1.0.yml. |
| 3 | + See that file for a copyright notice. |
| 4 | +---> |
| 5 | + |
| 6 | +# EiffelExperimentalEvent (CD) |
| 7 | +> :warning: This event type is currently at version 0.1.0 and is therefore experimental. Until it has reached version 1.0.0 it may undergo any number of backwards incomptaible changes. It might also be deprecated and never reach 1.0.0. |
| 8 | +
|
| 9 | +This is an experimental event type created for entertainment purpoes. |
| 10 | + |
| 11 | + |
| 12 | +## Data Members |
| 13 | + |
| 14 | +### data.name |
| 15 | +__Type:__ String |
| 16 | +__Required:__ Yes |
| 17 | +__Description:__ The name of something. |
| 18 | + |
| 19 | +## Links |
| 20 | + |
| 21 | +This section describes which link types are valid for this event type. For details on how to express the link objects themselves see [The Links Object](../eiffel-syntax-and-usage/the-links-object.md). |
| 22 | + |
| 23 | +### CAUSE |
| 24 | +__Required:__ No |
| 25 | +__Legal targets:__ Any |
| 26 | +__Multiple allowed:__ Yes |
| 27 | +__Description:__ Identifies a cause of the event occurring. SHOULD not be used in conjunction with __CONTEXT__: individual events providing __CAUSE__ within a larger context gives rise to ambiguity. It is instead recommended to let the root event of the context declare __CAUSE__. |
| 28 | + |
| 29 | +## Meta Members |
| 30 | + |
| 31 | +### meta.id |
| 32 | +__Type:__ String |
| 33 | +__Format:__ [UUID](http://tools.ietf.org/html/rfc4122) |
| 34 | +__Required:__ Yes |
| 35 | +__Description:__ The unique identity of the event, generated at event creation. |
| 36 | + |
| 37 | +### meta.type |
| 38 | +__Type:__ String |
| 39 | +__Format:__ An event type name |
| 40 | +__Required:__ Yes |
| 41 | +__Description:__ The type of event. This field is required by the recipient of the event, as each event type has a specific meaning and a specific set of members in the __data__ and __links__ objects. |
| 42 | + |
| 43 | +### meta.version |
| 44 | +__Type:__ String |
| 45 | +__Format:__ [Semantic Versioning 2.0.0](http://semver.org/spec/v2.0.0.html) |
| 46 | +__Required:__ Yes |
| 47 | +__Description:__ The version of the event type. This field is required by the recipient of the event to interpret the contents. Please see [Versioning](../eiffel-syntax-and-usage/versioning.md) for more information. |
| 48 | + |
| 49 | +### meta.time |
| 50 | +__Type:__ Integer |
| 51 | +__Format:__ UNIX Epoch time, in milliseconds. |
| 52 | +__Required:__ Yes |
| 53 | +__Description:__ The event creation timestamp. |
| 54 | + |
| 55 | +### meta.tags |
| 56 | +__Type:__ String[] |
| 57 | +__Format:__ Free text |
| 58 | +__Required:__ No |
| 59 | +__Description:__ Any tags or keywords associated with the events, for searchability purposes. |
| 60 | + |
| 61 | +### meta.source |
| 62 | +__Type:__ Object |
| 63 | +__Required:__ No |
| 64 | +__Description:__ A description of the source of the event. This object is primarily for traceability purposes, and while optional, some form of identification of the source is __HIGHLY RECOMMENDED__. It offers multiple methods of identifying the source of the event, techniques which may be select from based on the technology domain and needs in any particular use case. |
| 65 | + |
| 66 | +#### meta.source.domainId |
| 67 | +__Type:__ String |
| 68 | +__Format:__ Free text |
| 69 | +__Required:__ No |
| 70 | +__Description:__ Identifies the [domain](../eiffel-syntax-and-usage/glossary.md#domain) that produced an event. |
| 71 | + |
| 72 | +#### meta.source.host |
| 73 | +__Type:__ String |
| 74 | +__Format:__ Hostname |
| 75 | +__Required:__ No |
| 76 | +__Description:__ The hostname of the event sender. |
| 77 | + |
| 78 | +#### meta.source.name |
| 79 | +__Type:__ String |
| 80 | +__Format:__ Free text |
| 81 | +__Required:__ No |
| 82 | +__Description:__ The name of the event sender. |
| 83 | + |
| 84 | +#### meta.source.serializer |
| 85 | +__Type:__ String |
| 86 | +__Format:__ [purl specification](https://github.com/package-url/purl-spec) |
| 87 | +__Required:__ No |
| 88 | +__Description:__ The identity of the serializer software used to construct the event, in [purl format](https://github.com/package-url/purl-spec). |
| 89 | + |
| 90 | +#### meta.source.uri |
| 91 | +__Type:__ String |
| 92 | +__Format:__ URI |
| 93 | +__Required:__ No |
| 94 | +__Description:__ The URI of, related to or describing the event sender. |
| 95 | + |
| 96 | +### meta.security |
| 97 | +__Type:__ Object |
| 98 | +__Required:__ No |
| 99 | +__Description:__ An optional object for enclosing security related information, particularly supporting data integrity. See [Security](../eiffel-syntax-and-usage/security.md) for further information. |
| 100 | + |
| 101 | +#### meta.security.authorIdentity |
| 102 | +__Type:__ String |
| 103 | +__Format:__ [Distinguished Name](https://tools.ietf.org/html/rfc2253) |
| 104 | +__Required:__ Yes |
| 105 | +__Description:__ The identity of the author of the event. This property is intended to enable the recipient to identify the author of the event contents and/or look up the appropriate public key for decrypting the __meta.security.integrityProtection.signature__ value and thereby verifying author identity and data integrity. |
| 106 | + |
| 107 | +#### meta.security.integrityProtection |
| 108 | +__Type:__ Object |
| 109 | +__Required:__ No |
| 110 | +__Description:__ An optional object for enabling information integrity protection via cryptographic signing. To generate a correct __meta.security.integrityProtection__ object: |
| 111 | + 1. Generate the entire event, but with the |
| 112 | + __meta.security.integrityProtection.signature__ value set to |
| 113 | + an empty string. |
| 114 | + 1. Serialize the event on |
| 115 | + [Canonical JSON Form](https://tools.ietf.org/html/draft-staykov-hu-json-canonical-form-00). |
| 116 | + 1. Generate the signature using the |
| 117 | + __meta.security.integrityProtection.alg__ algorithm. |
| 118 | + 1. Set the __meta.security.integrityProtection.signature__ value to |
| 119 | + the resulting signature while maintaining Canonical JSON Form. |
| 120 | +To verify the integrity of the event, the consumer then resets __meta.security.integrityProtection.signature__ to an empty string and ensures Canonical JSON Form before verifying the signature. |
| 121 | + |
| 122 | +##### meta.security.integrityProtection.signature |
| 123 | +__Type:__ String |
| 124 | +__Required:__ Yes |
| 125 | +__Description:__ The signature produced by the signing algorithm. |
| 126 | + |
| 127 | +##### meta.security.integrityProtection.alg |
| 128 | +__Type:__ String |
| 129 | +__Format:__ [A valid JWA RFC 7518 alg parameter value](https://tools.ietf.org/html/rfc7518#section-3.1), excluding "none" |
| 130 | +__Required:__ Yes |
| 131 | +__Description:__ The cryptographic algorithm used to digitally sign the event. If no signing is performed, the __meta.security.integrityProtection__ SHALL be omitted rather than setting __meta.security.integrityProtection.alg__ to "none". |
| 132 | + |
| 133 | +##### meta.security.integrityProtection.publicKey |
| 134 | +__Type:__ String |
| 135 | +__Required:__ No |
| 136 | +__Description:__ The producer of the event may include the relevant public key for convenience, rather than relying a separate key distribution mechanism. Note that this property, along with the rest of the event, is encompassed by the integrity protection offered via __meta.security.integrityProtection__. |
| 137 | + |
| 138 | +#### meta.security.sequenceProtection |
| 139 | +__Type:__ Object[] |
| 140 | +__Required:__ No |
| 141 | +__Description:__ An optional object for enabling verification of intact event sequences in a distributed environment, thereby protecting against data loss, race conditions and replay attacks. It allows event publishers to state the order in which they produce a certain set of events. In other words, it cannot provide any global guarantees as to event sequencing, but rather per-publisher guarantees. Every object in the array represents a named sequence of which this event forms a part. For every event including a given named sequence, the publisher SHALL increment __meta.security.sequenceProtection.position__ by 1. The first event produced in a given named sequence SHALL numbered 1. |
| 142 | + |
| 143 | +##### meta.security.sequenceProtection.sequenceName |
| 144 | +__Type:__ String |
| 145 | +__Required:__ Yes |
| 146 | +__Description:__ The name of the sequence. There MUST not be two identical __meta.security.sequenceProtection.sequenceName__ values in the same event. |
| 147 | + |
| 148 | +##### meta.security.sequenceProtection.position |
| 149 | +__Type:__ Integer |
| 150 | +__Required:__ Yes |
| 151 | +__Description:__ The number of the event within the named sequence. |
| 152 | + |
| 153 | +### meta.schemaUri |
| 154 | +__Type:__ String |
| 155 | +__Format:__ URI |
| 156 | +__Required:__ No |
| 157 | +__Description:__ A URI pointing at a location from where the schema used when creating this event can be retrieved. It can be used to parse event data for validation and extraction purposes, for example. Note, that the schema on that URI should be considered immutable. |
| 158 | + |
| 159 | +## Version History |
| 160 | + |
| 161 | +| Version | Introduced in | Changes | |
| 162 | +| ------- | ------------- | ------- | |
| 163 | +| 0.1.0 | No edition set. | Initial version. | |
| 164 | + |
| 165 | + |
| 166 | +## Examples |
| 167 | + |
0 commit comments