···1+{
2+ "lexicon": 1,
3+ "id": "com.atproto.label.defs",
4+ "defs": {
5+ "label": {
6+ "type": "object",
7+ "required": [
8+ "src",
9+ "uri",
10+ "val",
11+ "cts"
12+ ],
13+ "properties": {
14+ "cid": {
15+ "type": "string",
16+ "format": "cid",
17+ "description": "Optionally, CID specifying the specific version of 'uri' resource this label applies to."
18+ },
19+ "cts": {
20+ "type": "string",
21+ "format": "datetime",
22+ "description": "Timestamp when this label was created."
23+ },
24+ "exp": {
25+ "type": "string",
26+ "format": "datetime",
27+ "description": "Timestamp at which this label expires (no longer applies)."
28+ },
29+ "neg": {
30+ "type": "boolean",
31+ "description": "If true, this is a negation label, overwriting a previous label."
32+ },
33+ "sig": {
34+ "type": "bytes",
35+ "description": "Signature of dag-cbor encoded label."
36+ },
37+ "src": {
38+ "type": "string",
39+ "format": "did",
40+ "description": "DID of the actor who created this label."
41+ },
42+ "uri": {
43+ "type": "string",
44+ "format": "uri",
45+ "description": "AT URI of the record, repository (account), or other resource that this label applies to."
46+ },
47+ "val": {
48+ "type": "string",
49+ "maxLength": 128,
50+ "description": "The short string name of the value or type of this label."
51+ },
52+ "ver": {
53+ "type": "integer",
54+ "description": "The AT Protocol version of the label object."
55+ }
56+ },
57+ "description": "Metadata tag on an atproto resource (eg, repo or record)."
58+ },
59+ "selfLabel": {
60+ "type": "object",
61+ "required": [
62+ "val"
63+ ],
64+ "properties": {
65+ "val": {
66+ "type": "string",
67+ "maxLength": 128,
68+ "description": "The short string name of the value or type of this label."
69+ }
70+ },
71+ "description": "Metadata tag on an atproto record, published by the author within the record. Note that schemas should use #selfLabels, not #selfLabel."
72+ },
73+ "labelValue": {
74+ "type": "string",
75+ "knownValues": [
76+ "!hide",
77+ "!no-promote",
78+ "!warn",
79+ "!no-unauthenticated",
80+ "dmca-violation",
81+ "doxxing",
82+ "porn",
83+ "sexual",
84+ "nudity",
85+ "nsfl",
86+ "gore"
87+ ]
88+ },
89+ "selfLabels": {
90+ "type": "object",
91+ "required": [
92+ "values"
93+ ],
94+ "properties": {
95+ "values": {
96+ "type": "array",
97+ "items": {
98+ "ref": "#selfLabel",
99+ "type": "ref"
100+ },
101+ "maxLength": 10
102+ }
103+ },
104+ "description": "Metadata tags on an atproto record, published by the author within the record."
105+ },
106+ "labelValueDefinition": {
107+ "type": "object",
108+ "required": [
109+ "identifier",
110+ "severity",
111+ "blurs",
112+ "locales"
113+ ],
114+ "properties": {
115+ "blurs": {
116+ "type": "string",
117+ "description": "What should this label hide in the UI, if applied? 'content' hides all of the target; 'media' hides the images/video/audio; 'none' hides nothing.",
118+ "knownValues": [
119+ "content",
120+ "media",
121+ "none"
122+ ]
123+ },
124+ "locales": {
125+ "type": "array",
126+ "items": {
127+ "ref": "#labelValueDefinitionStrings",
128+ "type": "ref"
129+ }
130+ },
131+ "severity": {
132+ "type": "string",
133+ "description": "How should a client visually convey this label? 'inform' means neutral and informational; 'alert' means negative and warning; 'none' means show nothing.",
134+ "knownValues": [
135+ "inform",
136+ "alert",
137+ "none"
138+ ]
139+ },
140+ "adultOnly": {
141+ "type": "boolean",
142+ "description": "Does the user need to have adult content enabled in order to configure this label?"
143+ },
144+ "identifier": {
145+ "type": "string",
146+ "maxLength": 100,
147+ "description": "The value of the label being defined. Must only include lowercase ascii and the '-' character ([a-z-]+).",
148+ "maxGraphemes": 100
149+ },
150+ "defaultSetting": {
151+ "type": "string",
152+ "default": "warn",
153+ "description": "The default setting for this label.",
154+ "knownValues": [
155+ "ignore",
156+ "warn",
157+ "hide"
158+ ]
159+ }
160+ },
161+ "description": "Declares a label value and its expected interpretations and behaviors."
162+ },
163+ "labelValueDefinitionStrings": {
164+ "type": "object",
165+ "required": [
166+ "lang",
167+ "name",
168+ "description"
169+ ],
170+ "properties": {
171+ "lang": {
172+ "type": "string",
173+ "format": "language",
174+ "description": "The code of the language these strings are written in."
175+ },
176+ "name": {
177+ "type": "string",
178+ "maxLength": 640,
179+ "description": "A short human-readable name for the label.",
180+ "maxGraphemes": 64
181+ },
182+ "description": {
183+ "type": "string",
184+ "maxLength": 100000,
185+ "description": "A longer description of what the label means and why it might be applied.",
186+ "maxGraphemes": 10000
187+ }
188+ },
189+ "description": "Strings which describe the label in the UI, localized into a specific language."
190+ }
191+ }
192+}