3.0 KiB
3.0 KiB
Metadata Registry
Generic metadata model. Unlimited future keys — no schema changes required for new keys.
Contract version:metadata-registry.v1
ADR: ADR-023 (v1.2)
1. Purpose
Every commercial registry object MAY carry a MetadataBag referenced by metadata_ref / attached metadata.
Metadata is descriptive and commercial-contextual. It is not pricing, not entitlement truth, and not implementation payload.
2. Metadata targets (open)
target_kind |
Examples |
|---|---|
product |
PlatformProduct |
bundle |
BusinessBundle |
capability |
CapabilityDefinition |
extension |
ExtensionDefinition |
automation_pack |
AutomationPack |
asset |
AssetDefinition |
theme |
Theme-oriented assets / packs |
template |
Template-oriented assets |
policy |
PolicyDefinition |
pricing_item |
Optional |
subscription_plan |
Optional |
| (future) | Any new registry kind |
3. MetadataBag
| Field | Type | Meaning |
|---|---|---|
registry_object_id |
uuid | Universal ID of this bag |
target_kind |
string | Open |
target_id |
uuid | Target's registry_object_id |
version_code |
string | Metadata bag version |
attributes |
map | Open key → value (JSON-compatible) |
ext |
object | Additive |
Reserved / common attribute keys (examples — not exclusive)
| Key | Meaning |
|---|---|
slug |
URL-safe identifier |
tags |
string[] |
labels |
localized label map |
industry |
|
locale |
|
country |
|
language |
|
currency |
|
timezone |
|
brand |
|
owner |
|
support_level |
|
release_channel |
stable | beta | preview | … |
icon |
|
color |
|
seo |
object |
marketing |
object |
visibility |
object / string |
documentation |
ref/url |
beta |
bool |
deprecated |
bool |
custom_attributes |
object |
Unlimited future keys MAY appear under attributes or custom_attributes without architecture or schema contract changes (additive JSON).
4. Metadata Matrix (illustrative)
| Target | Typical keys |
|---|---|
| Product | slug, tags, industry, release_channel, icon, documentation |
| Bundle | slug, tags, marketing, visibility, industry |
| Capability | labels, documentation, deprecated |
| Extension | icon, tags, support_level |
| Automation Pack | tags, locale, language |
| Asset | slug, brand, locale, country, marketing, seo |
| Theme / Template | color, icon, industry, locale |
| Policy | visibility, documentation, beta |
5. Invariants
- Unknown keys MUST be accepted by consumers (ignore-unknown).
- Metadata MUST NOT store payment credentials or entitlement grant rows.
- Visibility in metadata is advisory; Policy Engine / TenantVisibility remain authoritative when both exist.