@adobe/design-data-spec 1.5.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/conformance/invalid/SPEC-009/expected-errors.json +1 -1
- package/conformance/invalid/SPEC-018/dataset.json +8 -1
- package/conformance/invalid/SPEC-034/expected-errors.json +1 -1
- package/conformance/invalid/SPEC-035/expected-errors.json +1 -1
- package/conformance/invalid/SPEC-044/empty-optional-dir/components/.gitkeep +0 -0
- package/conformance/invalid/SPEC-044/empty-optional-dir/expected-errors.json +10 -0
- package/conformance/invalid/SPEC-044/empty-optional-dir/tokens/base.tokens.json +1 -0
- package/conformance/invalid/SPEC-044/missing-tokens/expected-errors.json +10 -0
- package/conformance/valid/SPEC-044/components/button.json +9 -0
- package/conformance/valid/SPEC-044/expected-errors.json +4 -0
- package/conformance/valid/SPEC-044/tokens/base.tokens.json +1 -0
- package/package.json +6 -6
- package/rules/rules.yaml +27 -7
- package/schemas/component.schema.json +1 -1
- package/schemas/dataset.schema.json +39 -0
- package/schemas/manifest.schema.json +1 -23
- package/schemas/mode-set.schema.json +4 -0
- package/schemas/platform-extension.json +79 -0
- package/schemas/registry-value.json +230 -0
- package/schemas/token.schema.json +1 -1
- package/spec/agent-surface.md +16 -14
- package/spec/anatomy-format.md +1 -1
- package/spec/cascade.md +1 -1
- package/spec/dataset-layout.md +72 -0
- package/spec/index.md +7 -5
- package/spec/mode-sets.md +1 -1
- package/spec/registry.md +6 -8
- package/spec/taxonomy.md +32 -32
- package/spec/token-format.md +11 -3
- package/components/accordion.json +0 -557
- package/components/action-bar.json +0 -214
- package/components/action-button.json +0 -522
- package/components/action-group.json +0 -134
- package/components/alert-banner.json +0 -134
- package/components/alert-dialog.json +0 -180
- package/components/avatar-group.json +0 -166
- package/components/avatar.json +0 -246
- package/components/badge.json +0 -594
- package/components/body.json +0 -54
- package/components/bottom-navigation-android.json +0 -72
- package/components/breadcrumbs.json +0 -307
- package/components/button-group.json +0 -86
- package/components/button.json +0 -586
- package/components/calendar.json +0 -133
- package/components/cards.json +0 -541
- package/components/checkbox-group.json +0 -91
- package/components/checkbox.json +0 -339
- package/components/close-button.json +0 -208
- package/components/coach-indicator.json +0 -105
- package/components/coach-mark.json +0 -169
- package/components/code.json +0 -44
- package/components/color-area.json +0 -138
- package/components/color-handle.json +0 -111
- package/components/color-loupe.json +0 -77
- package/components/color-slider.json +0 -165
- package/components/color-wheel.json +0 -117
- package/components/combo-box.json +0 -543
- package/components/contextual-help.json +0 -230
- package/components/date-picker.json +0 -471
- package/components/detail.json +0 -53
- package/components/divider.json +0 -93
- package/components/drop-zone.json +0 -238
- package/components/field-label.json +0 -219
- package/components/heading.json +0 -68
- package/components/help-text.json +0 -209
- package/components/illustrated-message.json +0 -175
- package/components/in-field-progress-button.json +0 -88
- package/components/in-field-progress-circle.json +0 -116
- package/components/in-line-alert.json +0 -233
- package/components/link.json +0 -167
- package/components/list-view.json +0 -382
- package/components/menu.json +0 -597
- package/components/meter.json +0 -199
- package/components/number-field.json +0 -518
- package/components/opacity-checkerboard.json +0 -69
- package/components/picker.json +0 -579
- package/components/popover.json +0 -174
- package/components/progress-bar.json +0 -229
- package/components/progress-circle.json +0 -132
- package/components/radio-button.json +0 -308
- package/components/radio-group.json +0 -113
- package/components/rating.json +0 -168
- package/components/scroll-zoom-bar.json +0 -82
- package/components/search-field.json +0 -346
- package/components/segmented-control.json +0 -248
- package/components/select-box.json +0 -272
- package/components/side-navigation.json +0 -320
- package/components/slider.json +0 -407
- package/components/standard-dialog.json +0 -179
- package/components/standard-panel.json +0 -83
- package/components/status-light.json +0 -334
- package/components/steplist.json +0 -294
- package/components/swatch-group.json +0 -114
- package/components/swatch.json +0 -240
- package/components/switch.json +0 -336
- package/components/tab-bar-ios.json +0 -72
- package/components/table.json +0 -435
- package/components/tabs.json +0 -253
- package/components/tag-field.json +0 -243
- package/components/tag-group.json +0 -87
- package/components/tag.json +0 -393
- package/components/takeover-dialog.json +0 -117
- package/components/text-area.json +0 -555
- package/components/text-field.json +0 -555
- package/components/thumbnail.json +0 -149
- package/components/title.json +0 -91
- package/components/toast.json +0 -156
- package/components/tooltip.json +0 -179
- package/components/tray.json +0 -32
- package/components/tree-view.json +0 -393
- package/fields/alignment.json +0 -15
- package/fields/anatomy.json +0 -15
- package/fields/color-scheme.json +0 -15
- package/fields/colorFamily.json +0 -15
- package/fields/component.json +0 -15
- package/fields/contrast.json +0 -15
- package/fields/density.json +0 -15
- package/fields/easing.json +0 -15
- package/fields/family.json +0 -15
- package/fields/motionRole.json +0 -15
- package/fields/object.json +0 -15
- package/fields/orientation.json +0 -15
- package/fields/position.json +0 -15
- package/fields/property.json +0 -15
- package/fields/scale.json +0 -15
- package/fields/scaleIndex.json +0 -15
- package/fields/shape.json +0 -15
- package/fields/size.json +0 -15
- package/fields/state.json +0 -15
- package/fields/structure.json +0 -15
- package/fields/style.json +0 -15
- package/fields/substructure.json +0 -15
- package/fields/variant.json +0 -15
- package/fields/weight.json +0 -15
|
@@ -5,5 +5,12 @@
|
|
|
5
5
|
"value": "#ff0000"
|
|
6
6
|
}
|
|
7
7
|
],
|
|
8
|
-
"components": [
|
|
8
|
+
"components": [
|
|
9
|
+
{
|
|
10
|
+
"$id": "https://opensource.adobe.com/spectrum-design-data/schemas/v0/components/button.json",
|
|
11
|
+
"name": "button",
|
|
12
|
+
"displayName": "Button",
|
|
13
|
+
"meta": { "category": "actions" }
|
|
14
|
+
}
|
|
15
|
+
]
|
|
9
16
|
}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adobe/design-data-spec",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Design Data Specification — prose, JSON Schemas, rule catalog, and conformance fixtures for
|
|
3
|
+
"version": "2.1.0",
|
|
4
|
+
"description": "Design Data Specification — prose, JSON Schemas, rule catalog, and conformance fixtures for the design data format",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -20,7 +20,6 @@
|
|
|
20
20
|
},
|
|
21
21
|
"exports": {
|
|
22
22
|
"./package.json": "./package.json",
|
|
23
|
-
"./components/*.json": "./components/*.json",
|
|
24
23
|
"./schemas/token.schema.json": "./schemas/token.schema.json",
|
|
25
24
|
"./schemas/mode-set.schema.json": "./schemas/mode-set.schema.json",
|
|
26
25
|
"./schemas/field.schema.json": "./schemas/field.schema.json",
|
|
@@ -29,12 +28,13 @@
|
|
|
29
28
|
"./schemas/component.schema.json": "./schemas/component.schema.json",
|
|
30
29
|
"./schemas/anatomy-part.schema.json": "./schemas/anatomy-part.schema.json",
|
|
31
30
|
"./schemas/state-declaration.schema.json": "./schemas/state-declaration.schema.json",
|
|
32
|
-
"./rules/rules.yaml": "./rules/rules.yaml"
|
|
31
|
+
"./rules/rules.yaml": "./rules/rules.yaml",
|
|
32
|
+
"./schemas/registry-value.json": "./schemas/registry-value.json",
|
|
33
|
+
"./schemas/platform-extension.json": "./schemas/platform-extension.json",
|
|
34
|
+
"./schemas/dataset.schema.json": "./schemas/dataset.schema.json"
|
|
33
35
|
},
|
|
34
36
|
"files": [
|
|
35
|
-
"components",
|
|
36
37
|
"conformance",
|
|
37
|
-
"fields",
|
|
38
38
|
"rules",
|
|
39
39
|
"schemas",
|
|
40
40
|
"spec",
|
package/rules/rules.yaml
CHANGED
|
@@ -78,8 +78,8 @@ rules:
|
|
|
78
78
|
name: name-field-enum-sync
|
|
79
79
|
severity: warning
|
|
80
80
|
category: naming-consistency
|
|
81
|
-
assert: Recognized name object fields (component, state, variant, etc.) SHOULD use values drawn from the corresponding design-
|
|
82
|
-
message: "Token name field '{field}' value '{value}' is not in the design-
|
|
81
|
+
assert: Recognized name object fields (component, state, variant, etc.) SHOULD use values drawn from the corresponding spectrum-design-data registry when those enums are available.
|
|
82
|
+
message: "Token name field '{field}' value '{value}' is not in the spectrum-design-data registry for '{field}'"
|
|
83
83
|
spec_ref: spec/token-format.md#name-object
|
|
84
84
|
introduced_in: "1.0.0-draft"
|
|
85
85
|
|
|
@@ -161,6 +161,7 @@ rules:
|
|
|
161
161
|
category: reference-integrity
|
|
162
162
|
assert: Token name-object 'component' field value MUST match the 'name' of a declared component in the dataset.
|
|
163
163
|
message: "Token '{token}' references undeclared component '{component}'"
|
|
164
|
+
note: "Skipped when no component catalog is loaded (empty components list). Token-only validation runs that omit component declarations will not trigger this rule."
|
|
164
165
|
spec_ref: spec/component-format.md#name
|
|
165
166
|
introduced_in: "1.0.0-draft"
|
|
166
167
|
|
|
@@ -327,9 +328,9 @@ rules:
|
|
|
327
328
|
category: naming-consistency
|
|
328
329
|
assert: >
|
|
329
330
|
A component's meta.category SHOULD reference an id from the categories registry in
|
|
330
|
-
@adobe/design-
|
|
331
|
+
@adobe/spectrum-design-data registry/categories.json. Unknown values are reported as
|
|
331
332
|
warnings; the registry is the authoritative vocabulary.
|
|
332
|
-
message: "Component '{entity}' meta.category value '{value}' is not in the design-
|
|
333
|
+
message: "Component '{entity}' meta.category value '{value}' is not in the spectrum-design-data registry/categories vocabulary"
|
|
333
334
|
spec_ref: spec/registry.md#categories
|
|
334
335
|
introduced_in: "1.0.0-draft"
|
|
335
336
|
- id: SPEC-035
|
|
@@ -338,9 +339,9 @@ rules:
|
|
|
338
339
|
category: naming-consistency
|
|
339
340
|
assert: >
|
|
340
341
|
A component anatomy part's name SHOULD reference an id from the anatomy-terms registry in
|
|
341
|
-
@adobe/design-
|
|
342
|
+
@adobe/spectrum-design-data registry/anatomy-terms.json. Unknown values are reported as
|
|
342
343
|
warnings; custom names remain permitted but the registry is the authoritative vocabulary.
|
|
343
|
-
message: "Component '{entity}' anatomy part name '{value}' is not in the design-
|
|
344
|
+
message: "Component '{entity}' anatomy part name '{value}' is not in the spectrum-design-data registry/anatomy-terms vocabulary"
|
|
344
345
|
spec_ref: spec/anatomy-format.md#canonical-anatomy-vocabulary
|
|
345
346
|
introduced_in: "1.0.0-draft"
|
|
346
347
|
|
|
@@ -452,7 +453,7 @@ rules:
|
|
|
452
453
|
color-domain token. Using a color-scoped field on a typography token, or a
|
|
453
454
|
typography-scoped field on a color token, is a taxonomy violation. The set of
|
|
454
455
|
domain-scoped fields and their valid schema URL suffixes is declared in the field
|
|
455
|
-
catalog under `packages/design-data
|
|
456
|
+
catalog under `packages/design-data/fields/` via the `scope` property.
|
|
456
457
|
Tokens without a `$schema` are skipped (domain cannot be determined).
|
|
457
458
|
message: "name.{field} is a {scope}-scoped field but token schema '{effective_schema}' is not a {scope} token type"
|
|
458
459
|
spec_ref: spec/taxonomy.md#token-type-taxonomies
|
|
@@ -476,3 +477,22 @@ rules:
|
|
|
476
477
|
message: "{domain} token has a name object but no domain-identifying field — add at least one of: {required_fields}"
|
|
477
478
|
spec_ref: spec/taxonomy.md#token-type-taxonomies
|
|
478
479
|
introduced_in: "1.0.0-draft"
|
|
480
|
+
|
|
481
|
+
- id: SPEC-044
|
|
482
|
+
name: dataset-structure
|
|
483
|
+
severity: error
|
|
484
|
+
layer: 2
|
|
485
|
+
category: structure
|
|
486
|
+
assert: >
|
|
487
|
+
A conformant dataset MUST contain a `tokens/` directory holding at least one
|
|
488
|
+
`*.tokens.json` file. This structural pre-check fires before token- and
|
|
489
|
+
component-level rules so that downstream rules can assume the dataset structure
|
|
490
|
+
is present, and an incomplete dataset produces a clear "structure is incomplete"
|
|
491
|
+
diagnostic rather than a cascade of confusing per-file errors. A registered
|
|
492
|
+
optional directory (`components/`, `fields/`, `mode-sets/`, `registry/`) that is
|
|
493
|
+
present SHOULD contain at least one conformant `*.json` file; an empty registered
|
|
494
|
+
directory is reported as a warning. Because this rule inspects the on-disk
|
|
495
|
+
directory layout it runs as a filesystem pre-pass, not against the in-memory graph.
|
|
496
|
+
message: "Dataset structure incomplete: {detail}"
|
|
497
|
+
spec_ref: spec/dataset-layout.md#structural-validation
|
|
498
|
+
introduced_in: "1.0.0-draft"
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
"category": {
|
|
90
90
|
"type": "string",
|
|
91
91
|
"minLength": 1,
|
|
92
|
-
"description": "Category id from @adobe/design-
|
|
92
|
+
"description": "Category id from @adobe/spectrum-design-data registry/categories.json. Advisory validation via SPEC-034."
|
|
93
93
|
},
|
|
94
94
|
"documentationUrl": {
|
|
95
95
|
"type": "string",
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://opensource.adobe.com/spectrum-design-data/schemas/v0/dataset.schema.json",
|
|
4
|
+
"title": "Dataset root descriptor",
|
|
5
|
+
"description": "Optional root descriptor (dataset.json) a design-data dataset MAY carry to declare which optional directories are present, pin the targeted spec version, and override default discovery paths. Absence of this file is not an error; see spec/dataset-layout.md.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"properties": {
|
|
8
|
+
"specVersion": {
|
|
9
|
+
"type": "string",
|
|
10
|
+
"minLength": 1,
|
|
11
|
+
"description": "The spec version this dataset targets (e.g. \"1.0.0-draft\")."
|
|
12
|
+
},
|
|
13
|
+
"directories": {
|
|
14
|
+
"type": "object",
|
|
15
|
+
"description": "Declares which registered directories the dataset provides. List a directory key with the value true to declare it present and authoritative; omit the key otherwise. The value is constrained to true so the flag cannot be used to negate a directory's presence (in particular it cannot waive the required tokens/ directory).",
|
|
16
|
+
"properties": {
|
|
17
|
+
"tokens": { "const": true },
|
|
18
|
+
"components": { "const": true },
|
|
19
|
+
"fields": { "const": true },
|
|
20
|
+
"modeSets": { "const": true },
|
|
21
|
+
"registry": { "const": true }
|
|
22
|
+
},
|
|
23
|
+
"additionalProperties": false
|
|
24
|
+
},
|
|
25
|
+
"paths": {
|
|
26
|
+
"type": "object",
|
|
27
|
+
"description": "Optional overrides for the default discovery paths, relative to the dataset root. When omitted, tooling uses the conventional directory names defined in spec/dataset-layout.md.",
|
|
28
|
+
"properties": {
|
|
29
|
+
"tokens": { "type": "string", "minLength": 1 },
|
|
30
|
+
"components": { "type": "string", "minLength": 1 },
|
|
31
|
+
"fields": { "type": "string", "minLength": 1 },
|
|
32
|
+
"modeSets": { "type": "string", "minLength": 1 },
|
|
33
|
+
"registry": { "type": "string", "minLength": 1 }
|
|
34
|
+
},
|
|
35
|
+
"additionalProperties": false
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"additionalProperties": false
|
|
39
|
+
}
|
|
@@ -94,29 +94,7 @@
|
|
|
94
94
|
"conceptOrder": {
|
|
95
95
|
"type": "array",
|
|
96
96
|
"items": {
|
|
97
|
-
"type": "string"
|
|
98
|
-
"enum": [
|
|
99
|
-
"variant",
|
|
100
|
-
"component",
|
|
101
|
-
"structure",
|
|
102
|
-
"substructure",
|
|
103
|
-
"anatomy",
|
|
104
|
-
"object",
|
|
105
|
-
"property",
|
|
106
|
-
"orientation",
|
|
107
|
-
"position",
|
|
108
|
-
"size",
|
|
109
|
-
"density",
|
|
110
|
-
"shape",
|
|
111
|
-
"state",
|
|
112
|
-
"colorFamily",
|
|
113
|
-
"family",
|
|
114
|
-
"weight",
|
|
115
|
-
"style",
|
|
116
|
-
"motionRole",
|
|
117
|
-
"easing",
|
|
118
|
-
"alignment"
|
|
119
|
-
]
|
|
97
|
+
"type": "string"
|
|
120
98
|
},
|
|
121
99
|
"uniqueItems": true,
|
|
122
100
|
"description": "Ordered list of field names for serialization. Values must match declared field names from the design system's field catalog (field.schema.json declarations). Replaces the default serialization.position order from each field declaration."
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://opensource.adobe.com/spectrum-design-data/schemas/platform-extension.json",
|
|
4
|
+
"title": "Platform Extension",
|
|
5
|
+
"description": "Schema for platform-specific terminology extensions",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["platform", "extends", "extensions"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"$schema": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"format": "uri"
|
|
12
|
+
},
|
|
13
|
+
"platform": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"description": "The platform this extension is for (e.g., iOS, Android, Web Components, Qt)"
|
|
16
|
+
},
|
|
17
|
+
"platformVersion": {
|
|
18
|
+
"type": "string",
|
|
19
|
+
"description": "Optional platform version or framework version"
|
|
20
|
+
},
|
|
21
|
+
"description": {
|
|
22
|
+
"type": "string",
|
|
23
|
+
"description": "Description of what this extension provides"
|
|
24
|
+
},
|
|
25
|
+
"extends": {
|
|
26
|
+
"type": "string",
|
|
27
|
+
"description": "Which registry this extends (sizes, states, variants, etc.)"
|
|
28
|
+
},
|
|
29
|
+
"extensions": {
|
|
30
|
+
"type": "array",
|
|
31
|
+
"description": "Array of term extensions",
|
|
32
|
+
"items": {
|
|
33
|
+
"$ref": "#/$defs/extension"
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"$defs": {
|
|
38
|
+
"extension": {
|
|
39
|
+
"type": "object",
|
|
40
|
+
"required": ["termId"],
|
|
41
|
+
"properties": {
|
|
42
|
+
"termId": {
|
|
43
|
+
"type": "string",
|
|
44
|
+
"description": "The ID of the term being extended (must exist in the base registry)"
|
|
45
|
+
},
|
|
46
|
+
"platformTerm": {
|
|
47
|
+
"type": "string",
|
|
48
|
+
"description": "Platform-specific term or name"
|
|
49
|
+
},
|
|
50
|
+
"platformAliases": {
|
|
51
|
+
"type": "array",
|
|
52
|
+
"description": "Platform-specific aliases",
|
|
53
|
+
"items": {
|
|
54
|
+
"type": "string"
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"notes": {
|
|
58
|
+
"type": "string",
|
|
59
|
+
"description": "Platform-specific implementation notes"
|
|
60
|
+
},
|
|
61
|
+
"reference": {
|
|
62
|
+
"type": "string",
|
|
63
|
+
"description": "Platform documentation reference or API name"
|
|
64
|
+
},
|
|
65
|
+
"codeExample": {
|
|
66
|
+
"type": "string",
|
|
67
|
+
"description": "Code example showing platform usage"
|
|
68
|
+
},
|
|
69
|
+
"differences": {
|
|
70
|
+
"type": "array",
|
|
71
|
+
"description": "Key differences from the base term",
|
|
72
|
+
"items": {
|
|
73
|
+
"type": "string"
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "https://opensource.adobe.com/spectrum-design-data/schemas/registry-value.json",
|
|
4
|
+
"title": "Registry Value",
|
|
5
|
+
"description": "Schema for design system registry value entries",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["type", "description", "values"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"$schema": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"format": "uri"
|
|
12
|
+
},
|
|
13
|
+
"type": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"description": "The type of registry (size, state, variant, etc.)"
|
|
16
|
+
},
|
|
17
|
+
"description": {
|
|
18
|
+
"type": "string",
|
|
19
|
+
"description": "Description of what this registry contains"
|
|
20
|
+
},
|
|
21
|
+
"allowCustom": {
|
|
22
|
+
"type": "boolean",
|
|
23
|
+
"description": "Whether custom values are allowed beyond the registry"
|
|
24
|
+
},
|
|
25
|
+
"customPattern": {
|
|
26
|
+
"type": "string",
|
|
27
|
+
"description": "Regex pattern for validating custom values"
|
|
28
|
+
},
|
|
29
|
+
"values": {
|
|
30
|
+
"type": "array",
|
|
31
|
+
"description": "Array of registry values",
|
|
32
|
+
"items": {
|
|
33
|
+
"$ref": "#/$defs/value"
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"$defs": {
|
|
38
|
+
"value": {
|
|
39
|
+
"type": "object",
|
|
40
|
+
"required": ["id", "label"],
|
|
41
|
+
"properties": {
|
|
42
|
+
"id": {
|
|
43
|
+
"type": "string",
|
|
44
|
+
"description": "Unique identifier for this value"
|
|
45
|
+
},
|
|
46
|
+
"label": {
|
|
47
|
+
"type": "string",
|
|
48
|
+
"description": "Human-readable label"
|
|
49
|
+
},
|
|
50
|
+
"aliases": {
|
|
51
|
+
"type": "array",
|
|
52
|
+
"description": "Alternative names or spellings",
|
|
53
|
+
"items": {
|
|
54
|
+
"type": "string"
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"description": {
|
|
58
|
+
"type": "string",
|
|
59
|
+
"description": "Detailed description of this value"
|
|
60
|
+
},
|
|
61
|
+
"default": {
|
|
62
|
+
"type": "boolean",
|
|
63
|
+
"description": "Whether this is the default value"
|
|
64
|
+
},
|
|
65
|
+
"deprecated": {
|
|
66
|
+
"type": "boolean",
|
|
67
|
+
"description": "Whether this value is deprecated"
|
|
68
|
+
},
|
|
69
|
+
"usedIn": {
|
|
70
|
+
"type": "array",
|
|
71
|
+
"description": "Where this value is used (tokens, component-schemas, etc.)",
|
|
72
|
+
"items": {
|
|
73
|
+
"type": "string"
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
"category": {
|
|
77
|
+
"type": "string",
|
|
78
|
+
"description": "Category or grouping for this value"
|
|
79
|
+
},
|
|
80
|
+
"value": {
|
|
81
|
+
"type": ["string", "number", "boolean"],
|
|
82
|
+
"description": "Actual value (if different from id)"
|
|
83
|
+
},
|
|
84
|
+
"documentationUrl": {
|
|
85
|
+
"type": "string",
|
|
86
|
+
"format": "uri",
|
|
87
|
+
"description": "URL to documentation"
|
|
88
|
+
},
|
|
89
|
+
"definition": {
|
|
90
|
+
"type": "object",
|
|
91
|
+
"description": "Structured definition following Spectrum naming methodology",
|
|
92
|
+
"properties": {
|
|
93
|
+
"superordinate": {
|
|
94
|
+
"type": "string",
|
|
95
|
+
"description": "The higher-level category or class this term belongs to"
|
|
96
|
+
},
|
|
97
|
+
"description": {
|
|
98
|
+
"type": "string",
|
|
99
|
+
"description": "Core definition explaining what it is and how it differs"
|
|
100
|
+
},
|
|
101
|
+
"essentialCharacteristics": {
|
|
102
|
+
"type": "array",
|
|
103
|
+
"description": "Key characteristics that distinguish this term",
|
|
104
|
+
"items": {
|
|
105
|
+
"type": "string"
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
"platforms": {
|
|
111
|
+
"type": "object",
|
|
112
|
+
"description": "Platform-specific terminology and notes",
|
|
113
|
+
"patternProperties": {
|
|
114
|
+
".*": {
|
|
115
|
+
"type": "object",
|
|
116
|
+
"properties": {
|
|
117
|
+
"term": {
|
|
118
|
+
"type": "string",
|
|
119
|
+
"description": "Platform-specific term or name"
|
|
120
|
+
},
|
|
121
|
+
"notes": {
|
|
122
|
+
"type": "string",
|
|
123
|
+
"description": "Platform-specific implementation notes"
|
|
124
|
+
},
|
|
125
|
+
"reference": {
|
|
126
|
+
"type": "string",
|
|
127
|
+
"description": "Platform documentation reference"
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
"terminology": {
|
|
134
|
+
"type": "object",
|
|
135
|
+
"description": "Terminology metadata and classification",
|
|
136
|
+
"properties": {
|
|
137
|
+
"conceptType": {
|
|
138
|
+
"type": "string",
|
|
139
|
+
"enum": ["word", "term", "name", "concept"],
|
|
140
|
+
"description": "Classification per Spectrum naming guide"
|
|
141
|
+
},
|
|
142
|
+
"namingRationale": {
|
|
143
|
+
"type": "string",
|
|
144
|
+
"description": "Why this name was chosen"
|
|
145
|
+
},
|
|
146
|
+
"alternatives": {
|
|
147
|
+
"type": "array",
|
|
148
|
+
"description": "Alternative terms considered but not used",
|
|
149
|
+
"items": {
|
|
150
|
+
"type": "string"
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
"sources": {
|
|
156
|
+
"type": "array",
|
|
157
|
+
"description": "References to source documentation",
|
|
158
|
+
"items": {
|
|
159
|
+
"type": "object",
|
|
160
|
+
"required": ["type"],
|
|
161
|
+
"properties": {
|
|
162
|
+
"type": {
|
|
163
|
+
"type": "string",
|
|
164
|
+
"enum": [
|
|
165
|
+
"wiki",
|
|
166
|
+
"industry-standard",
|
|
167
|
+
"platform-standard",
|
|
168
|
+
"internal-doc",
|
|
169
|
+
"research"
|
|
170
|
+
],
|
|
171
|
+
"description": "Type of source"
|
|
172
|
+
},
|
|
173
|
+
"url": {
|
|
174
|
+
"type": "string",
|
|
175
|
+
"format": "uri",
|
|
176
|
+
"description": "URL to source"
|
|
177
|
+
},
|
|
178
|
+
"reference": {
|
|
179
|
+
"type": "string",
|
|
180
|
+
"description": "Text reference or citation"
|
|
181
|
+
},
|
|
182
|
+
"date": {
|
|
183
|
+
"type": "string",
|
|
184
|
+
"format": "date",
|
|
185
|
+
"description": "Date of source or last update"
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
},
|
|
190
|
+
"governance": {
|
|
191
|
+
"type": "object",
|
|
192
|
+
"description": "Governance and ownership metadata",
|
|
193
|
+
"properties": {
|
|
194
|
+
"owner": {
|
|
195
|
+
"type": "string",
|
|
196
|
+
"description": "Team or person responsible for this term"
|
|
197
|
+
},
|
|
198
|
+
"reviewDate": {
|
|
199
|
+
"type": "string",
|
|
200
|
+
"format": "date",
|
|
201
|
+
"description": "Last review date"
|
|
202
|
+
},
|
|
203
|
+
"nextReviewDate": {
|
|
204
|
+
"type": "string",
|
|
205
|
+
"format": "date",
|
|
206
|
+
"description": "Scheduled next review date"
|
|
207
|
+
},
|
|
208
|
+
"status": {
|
|
209
|
+
"type": "string",
|
|
210
|
+
"enum": ["draft", "review", "approved", "deprecated"],
|
|
211
|
+
"description": "Current status of this term"
|
|
212
|
+
},
|
|
213
|
+
"replacedBy": {
|
|
214
|
+
"type": "string",
|
|
215
|
+
"description": "If deprecated, the term that replaces this one"
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
},
|
|
219
|
+
"relatedTerms": {
|
|
220
|
+
"type": "array",
|
|
221
|
+
"description": "Related or cross-referenced terms",
|
|
222
|
+
"items": {
|
|
223
|
+
"type": "string",
|
|
224
|
+
"description": "ID of related term"
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
@@ -218,7 +218,7 @@
|
|
|
218
218
|
"$ref": {
|
|
219
219
|
"type": "string",
|
|
220
220
|
"minLength": 1,
|
|
221
|
-
"description": "Alias target
|
|
221
|
+
"description": "Alias target. In cascade format: the target token's UUID (canonical, rename-proof, resolved via uuid_index — Layer 2). In the legacy transition format: the target's kebab-case name slug."
|
|
222
222
|
},
|
|
223
223
|
"uuid": {
|
|
224
224
|
"type": "string",
|