tech.waow.brand.defs
Schema Diff
+18 -4
Compatibility Analysis
Breaking Changes Detected
1 breaking change, 3 non-breaking changes.
Breaking Changes (1)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "tech.waow.brand.defs#brandView", src: "tech.waow.brand.defs#brandView", tgt: "tech.waow.brand.defs#brandView.subject", kind: "prop", name: Some("subject") }
Non-Breaking Changes (3)
- AddedVertex AddedVertex { vertex_id: "tech.waow.brand.defs#brandView.known" }
- AddedVertex AddedVertex { vertex_id: "tech.waow.brand.defs#brandView.subject" }
- AddedEdge AddedEdge { src: "tech.waow.brand.defs#brandView", tgt: "tech.waow.brand.defs#brandView.known", kind: "prop", name: Some("known") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "tech.waow.brand.defs#brandView.known" }AddedVertex { vertex_id: "tech.waow.brand.defs#brandView.subject" }
Additional Notes
- Breaking: RequiredEdgeAdded { vertex_id: "tech.waow.brand.defs#brandView", src: "tech.waow.brand.defs#brandView", tgt: "tech.waow.brand.defs#brandView.subject", kind: "prop", name: Some("subject") }
- Non-breaking: AddedEdge { src: "tech.waow.brand.defs#brandView", tgt: "tech.waow.brand.defs#brandView.known", kind: "prop", name: Some("known") }
1
1
{
2
2
"id": "tech.waow.brand.defs",
3
3
"defs": {
4
4
"colors": {
5
5
"type": "object",
6
6
"properties": {
7
7
"primary": {
8
8
"type": "string",
9
9
"maxLength": 7
10
10
},
11
11
"background": {
12
12
"type": "string",
13
13
"maxLength": 7
14
14
},
15
15
"foreground": {
16
16
"type": "string",
17
17
"maxLength": 7
18
18
}
19
19
},
20
20
"description": "Brand colors as sRGB hex, '#rrggbb'. Shared by the declaration record and the views that render it."
21
21
},
22
22
"authority": {
23
23
"type": "object",
24
24
"required": [
25
25
"domain",
26
26
"did",
27
27
"uri"
28
28
],
29
29
"properties": {
30
30
"did": {
31
31
"type": "string",
32
32
"format": "did"
33
33
},
34
34
"uri": {
35
35
"type": "string",
36
36
"format": "at-uri"
37
37
},
38
38
"domain": {
39
39
"type": "string",
40
40
"maxLength": 253,
41
-
"description": "The domain whose _lexicon TXT record names the declaring DID."
41
+
"description": "The domain whose _lexicon TXT record names the declaring DID, or the actor's handle."
42
42
}
43
43
},
44
-
"description": "Who declared a brand, and where they said it. Present only on a declared response."
44
+
"description": "Who chose this, and where they said it. For a namespace, the DID its _lexicon TXT record names; for an actor, the account itself."
45
45
},
46
46
"brandView": {
47
47
"type": "object",
48
48
"required": [
49
+
"subject",
49
50
"namespace",
50
51
"matched",
51
52
"source",
52
53
"icon"
53
54
],
54
55
"properties": {
55
56
"url": {
56
57
"type": "string",
57
58
"format": "uri"
58
59
},
59
60
"icon": {
60
61
"type": "string",
61
62
"maxLength": 8192,
62
63
"description": "URL for the icon: an https URL, or a data: URI when generated."
63
64
},
64
65
"name": {
65
66
"type": "string",
66
67
"maxLength": 128
67
68
},
69
+
"known": {
70
+
"type": "boolean",
71
+
"description": "Whether records have ever been written under this exact namespace, or a schema published for it. Prefix inheritance means an invented namespace still resolves with its parent's icon, so this is how a consumer spots a typo. A hint, never a rejection: false can also mean declared-but-not-yet-used. Absent for actors, or when the check failed."
72
+
},
68
73
"colors": {
69
74
"ref": "tech.waow.brand.defs#colors",
70
75
"type": "ref"
71
76
},
72
77
"source": {
73
78
"type": "string",
74
79
"maxLength": 32,
75
80
"description": "Who chose this. 'declared': the namespace's lexicon authority, in a record. 'borrowed': the reverse-DNS domain's atproto account avatar, chosen for that account rather than for this namespace. 'curated': the responding service's own table. 'generated': nobody, a deterministic monogram.",
76
81
"knownValues": [
77
82
"declared",
78
83
"borrowed",
79
84
"curated",
80
85
"generated"
81
86
]
82
87
},
83
88
"matched": {
84
89
"type": "string",
85
90
"maxLength": 317,
86
-
"description": "The namespace that actually answered: this one, or a shorter prefix it inherits from."
91
+
"description": "What actually answered: the namespace itself, a shorter prefix it inherits from, or -- for an actor -- their resolved handle."
92
+
},
93
+
"subject": {
94
+
"type": "string",
95
+
"maxLength": 16,
96
+
"description": "What kind of thing answered. 'plyr.fm' and 'fm.plyr' are both well-formed inputs and mean entirely different things: an identity and a namespace.",
97
+
"knownValues": [
98
+
"namespace",
99
+
"actor"
100
+
]
87
101
},
88
102
"wordmark": {
89
103
"type": "string",
90
104
"maxLength": 8192
91
105
},
92
106
"authority": {
93
107
"ref": "tech.waow.brand.defs#authority",
94
108
"type": "ref"
95
109
},
96
110
"namespace": {
97
111
"type": "string",
98
112
"maxLength": 317,
99
-
"description": "The namespace that was asked for."
113
+
"description": "The namespace or identifier that was asked for."
100
114
},
101
115
"iconSource": {
102
116
"type": "string",
103
117
"maxLength": 32,
104
118
"description": "Present only when the icon comes from a lower tier than the rest of the response, e.g. a declaration that omitted an icon. The icon never inherits the declaration's authority.",
105
119
"knownValues": [
106
120
"declared",
107
121
"borrowed",
108
122
"curated",
109
123
"generated"
110
124
]
111
125
},
112
126
"description": {
113
127
"type": "string",
114
128
"maxLength": 512
115
129
}
116
130
},
117
131
"description": "Resolved brand assets for one namespace."
118
132
}
119
133
},
120
134
"$type": "com.atproto.lexicon.schema",
121
135
"lexicon": 1
122
136
}