Metadata
Shared metadata block present on all Tide objects (threat, objective, rule). Provides identity, schema routing, versioning, provenance, and classification.
Requirements
- Every core object MUST include a
metadataobject. metadata.schemaMUST be a registered schema identifier; unknown identifiers are invalid.metadata.uuidMUST be a UUIDv4 string.metadata.versionMUST be present (semver string or integer).metadata.createdandmetadata.modifiedMUST be ISO 8601 date or datetime strings (coerced to string on load).metadata.tlpMUST be a valid Traffic Light Protocol value from thetlpvocabulary.metadata.author,metadata.contributors, andmetadata.organisationMAY be omitted.
Definition
metadata (ObjectMetadata)
| Field | Type | Required | Description |
|---|---|---|---|
uuid | string (UUIDv4) | yes | Globally unique object identifier |
schema | string | yes | Schema identifier, e.g. rule::1.0 (alias: schema_id in Pydantic) |
version | string | integer | yes | Business version of this instance |
created | string | yes | Creation date |
modified | string | yes | Last modification date |
tlp | string | yes | Traffic Light Protocol classification |
author | string | no | Primary author |
contributors | list[string] | no | Additional contributors |
organisation | Organisation | no | Owning organisation |
organisation (Organisation)
| Field | Type | Required | Description |
|---|---|---|---|
uuid | string | yes | Organisation UUID |
name | string | yes | Organisation display name |
references (ObjectReferences)
Optional on threat, objective, and rule objects.
| Field | Type | Required | Description |
|---|---|---|---|
public | map[integer, string] | no | Public reference IDs to URLs (YAML int keys coerced on load) |
internal | map[string, string] | no | Internal reference keys to URLs |
reports | list[string] | no | Report links |
Relationships
- versioning.md —
metadata.schemaandmetadata.versionsemantics - specs/vocabularies/catalog.md —
tlpvocabulary - Object specs — embed
metadataas required top-level block
Defaults & overrides
No client overrides for metadata structure. Template generation MAY pre-fill dates and placeholder UUIDs via opentide generate templates.
Examples
metadata:
uuid: 00000000-0000-4000-8003-000000000001 # UUIDv4, unique across the repo
schema: rule::1.0 # registered schema identifier
version: 1 # instance content version
created: "2026-01-01"
modified: "2026-01-02"
tlp: clear # from the `tlp` vocabulary- Valid metadata on a rule: fixtures/valid/rule-1.0.yaml
- Invalid UUID: fixtures/invalid/rule-bad-uuid.yaml
History
| Version | Date | Notes |
|---|---|---|
| 1.0 | 2026-06-25 | Initial spec from opentide models/metadata.py |
Versioning
OpenTide separates **structural schema revisions** from **object instance versions**. Schema revisions select the validation model and generated JSON Schema artifact; instance versions track business content evolution in git.
Workspace layout
Defines the standard detection-repository directory layout scaffolded by `opentide setup` and used for object storage, generated artifacts, documentation mirrors, and client configuration overrides.