atproto blogging
1{
2 "lexicon": 1,
3 "id": "sh.weaver.actor.defs",
4 "defs": {
5 "profileView": {
6 "type": "object",
7 "required": ["did", "handle"],
8 "properties": {
9 "did": { "type": "string", "format": "did" },
10 "handle": { "type": "string", "format": "handle" },
11 "displayName": {
12 "type": "string",
13 "maxGraphemes": 64,
14 "maxLength": 640
15 },
16 "description": {
17 "type": "string",
18 "maxGraphemes": 1024,
19 "maxLength": 10240
20 },
21 "avatar": { "type": "string", "format": "uri" },
22 "banner": { "type": "string", "format": "uri" },
23 "location": {
24 "type": "string",
25 "description": "Free-form location text.",
26 "maxGraphemes": 40,
27 "maxLength": 400
28 },
29 "links": {
30 "type": "array",
31 "minLength": 0,
32 "maxLength": 5,
33 "items": {
34 "type": "string",
35 "description": "Any URI, intended for social profiles or websites, can be used to link DIDs/AT-URIs too.",
36 "format": "uri"
37 }
38 },
39 "indexedAt": { "type": "string", "format": "datetime" },
40 "createdAt": { "type": "string", "format": "datetime" },
41 "pinned": {
42 "description": "Notebooks or other records pinned for display.",
43 "type": "ref",
44 "ref": "#pinnedList"
45 },
46 "bluesky": {
47 "type": "boolean",
48 "description": "Include link to this account on Bluesky."
49 },
50 "tangled": {
51 "type": "boolean",
52 "description": "Include link to this account on Tangled."
53 },
54 "streamplace": {
55 "type": "boolean",
56 "description": "Include link to this account on stream.place."
57 },
58 "labels": {
59 "type": "array",
60 "items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
61 },
62 "pronouns": {
63 "type": "ref",
64 "description": "Pronouns to use in user-generated content.",
65 "ref": "#pronounsList"
66 },
67 "subscriberCount": {
68 "type": "integer"
69 },
70 "subscribedCount": {
71 "type": "integer"
72 }
73 }
74 },
75 "profileViewBasic": {
76 "type": "object",
77 "required": ["did", "handle"],
78 "properties": {
79 "did": { "type": "string", "format": "did" },
80 "handle": { "type": "string", "format": "handle" },
81 "displayName": {
82 "type": "string",
83 "maxGraphemes": 64,
84 "maxLength": 640
85 },
86 "avatar": { "type": "string", "format": "uri" },
87 "indexedAt": { "type": "string", "format": "datetime" },
88 "createdAt": { "type": "string", "format": "datetime" },
89 "labels": {
90 "type": "array",
91 "items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
92 },
93 "pronouns": {
94 "type": "ref",
95 "description": "Pronouns to use in user-generated content.",
96 "ref": "#pronounsList"
97 }
98 }
99 },
100 "subscribedNotebook": {
101 "type": "object",
102 "description": "A notebook the viewer subscribes to without a global follow.",
103 "required": ["uri"],
104 "properties": {
105 "uri": { "type": "string", "format": "at-uri" },
106 "title": { "type": "string" },
107 "path": { "type": "string" }
108 }
109 },
110 "viewerState": {
111 "type": "object",
112 "description": "Viewer's relationship state with an actor (detailed version).",
113 "properties": {
114 "following": { "type": "string", "format": "at-uri" },
115 "followedBy": { "type": "string", "format": "at-uri" },
116 "followRequested": { "type": "string", "format": "at-uri" },
117 "followRequestedBy": { "type": "string", "format": "at-uri" },
118 "subscribedNotebooks": {
119 "type": "array",
120 "items": { "type": "ref", "ref": "#subscribedNotebook" }
121 },
122 "muted": { "type": "string", "format": "at-uri" },
123 "blocked": { "type": "string", "format": "at-uri" },
124 "blockedBy": { "type": "boolean" }
125 }
126 },
127 "viewerStateBasic": {
128 "type": "object",
129 "description": "Viewer's relationship state with an actor (basic version).",
130 "properties": {
131 "following": { "type": "string", "format": "at-uri" },
132 "followedBy": { "type": "string", "format": "at-uri" },
133 "followRequested": { "type": "string", "format": "at-uri" },
134 "followRequestedBy": { "type": "string", "format": "at-uri" },
135 "subscribedNotebookCount": { "type": "integer" },
136 "muted": { "type": "string", "format": "at-uri" },
137 "blocked": { "type": "string", "format": "at-uri" },
138 "blockedBy": { "type": "boolean" }
139 }
140 },
141 "profileDataView": {
142 "type": "object",
143 "required": ["inner"],
144 "properties": {
145 "inner": {
146 "type": "union",
147 "refs": ["#profileView", "app.bsky.actor.defs#profileViewDetailed", "#tangledProfileView"]
148 },
149 "viewer": { "type": "ref", "ref": "#viewerState" },
150 "notebookCount": { "type": "integer" },
151 "entryCount": { "type": "integer" },
152 "collaborationCount": { "type": "integer" },
153 "followerCount": { "type": "integer" },
154 "followingCount": { "type": "integer" }
155 }
156 },
157 "profileDataViewBasic": {
158 "type": "object",
159 "required": ["inner"],
160 "properties": {
161 "inner": {
162 "type": "union",
163 "refs": ["#profileViewBasic", "app.bsky.actor.defs#profileViewBasic", "#tangledProfileView"]
164 },
165 "viewer": { "type": "ref", "ref": "#viewerStateBasic" },
166 "followerCount": { "type": "integer" },
167 "followingCount": { "type": "integer" }
168 }
169 },
170 "author": {
171 "type": "object",
172 "description": "A single author in a Weaver notebook.",
173 "required": ["did"],
174 "properties": {
175 "did": { "type": "string", "format": "did" },
176 "signature": {
177 "type": "bytes",
178 "description": "signed bytes of the corresponding notebook record in the author's repo"
179 }
180 }
181 },
182 "pronounsList": {
183 "type": "array",
184 "items": {
185 "type": "string",
186 "maxLength": 500,
187 "maxGraphemes": 50,
188 "knownValues": [
189 "she/her",
190 "he/him",
191 "they/them",
192 "it/its",
193 "she/they",
194 "he/they",
195 "they/he",
196 "they/she",
197 "any/all"
198 ]
199 },
200 "maxLength": 5
201 },
202 "pinnedList": {
203 "type": "array",
204 "items": {
205 "type": "ref",
206 "ref": "com.atproto.repo.strongRef"
207 }
208 },
209 "tangledProfileView": {
210 "type": "object",
211 "required": ["bluesky", "did", "handle"],
212 "properties": {
213 "did": { "type": "string", "format": "did" },
214 "handle": { "type": "string", "format": "handle" },
215 "description": {
216 "type": "string",
217 "description": "Free-form profile description text.",
218 "maxGraphemes": 256,
219 "maxLength": 2560
220 },
221 "links": {
222 "type": "array",
223 "minLength": 0,
224 "maxLength": 5,
225 "items": {
226 "type": "string",
227 "description": "Any URI, intended for social profiles or websites, can be used to link DIDs/AT-URIs too.",
228 "format": "uri"
229 }
230 },
231 "stats": {
232 "type": "array",
233 "minLength": 0,
234 "maxLength": 2,
235 "items": {
236 "type": "string",
237 "description": "Vanity stats.",
238 "enum": [
239 "merged-pull-request-count",
240 "closed-pull-request-count",
241 "open-pull-request-count",
242 "open-issue-count",
243 "closed-issue-count",
244 "repository-count"
245 ]
246 }
247 },
248 "bluesky": {
249 "type": "boolean",
250 "description": "Include link to this account on Bluesky."
251 },
252 "location": {
253 "type": "string",
254 "description": "Free-form location text.",
255 "maxGraphemes": 40,
256 "maxLength": 400
257 },
258 "pinnedRepositories": {
259 "type": "array",
260 "description": "Any ATURI, it is up to appviews to validate these fields.",
261 "minLength": 0,
262 "maxLength": 6,
263 "items": {
264 "type": "string",
265 "format": "at-uri"
266 }
267 }
268 }
269 }
270 }
271}