From
bafyreidwg4syfwior75x2fodmv4vr2vbb6f7o54gtnbj64kvboyjqicjmi
indexed 2026-10-30 13:48 UTC
View this version
To
bafyreicllm7hg7douzjpcvdg2fc3oxohcprpbguidarazegqv5bs5fxbsu
indexed 2026-10-30 20:36 UTC
View this version
Compatibility
backward compatible Backward compatible. 2 non-breaking changes.
Non-breaking changes (2)
- AddedVertex AddedVertex { vertex_id: "dev.knotless.getProfile#profileView.bot" }
- AddedEdge AddedEdge { src: "dev.knotless.getProfile#profileView", tgt: "dev.knotless.getProfile#profileView.bot", kind: "prop", name: Some("bot") }
Migration guidance
Added
AddedVertex { vertex_id: "dev.knotless.getProfile#profileView.bot" }
Notes
- Non-breaking: AddedEdge { src: "dev.knotless.getProfile#profileView", tgt: "dev.knotless.getProfile#profileView.bot", kind: "prop", name: Some("bot") }
Changes
11
{22
"$type": "com.atproto.lexicon.schema",33
"defs": {44
"badgeView": {55
"description": "A badge an account earned, at the highest tier its count reached.",66
"properties": {77
"count": {88
"description": "What the badge counts, as the appview counted it.",99
"minimum": 0,1010
"type": "integer"1111
},1212
"kind": {1313
"description": "Which badge: `upstream`, pulls merged into repositories of other accounts; `second-pair`, pulls of other accounts commented on before they merged; `peacemaker`, pulls landed after the merge queue ejected them for a conflict; `forked-and-fixed`, pulls merged into its repositories from forks of them; `good-company`, pulls the merge queue landed in a batch of five or more; `smooth-landing`, pulls the merge queue landed without ever ejecting them; `bisected`, pulls found by halving a batch that failed; `shipped`, releases published; `stargazer`, stars on its most starred repository; `carry-your-own`, an account on a PDS holding five accounts or fewer; `moved-house`, an account whose DID document named another PDS before; `first-light`, an account here with a repository before knotless 1.0. A kind is never reused for another meaning.",1414
"knownValues": [1515
"upstream",1616
"second-pair",1717
"peacemaker",1818
"forked-and-fixed",1919
"good-company",2020
"smooth-landing",2121
"bisected",2222
"shipped",2323
"stargazer",2424
"carry-your-own",2525
"moved-house",2626
"first-light"2727
],2828
"type": "string"2929
},3030
"next": {3131
"description": "The count the next tier starts at. Absent at the highest tier.",3232
"minimum": 1,3333
"type": "integer"3434
},3535
"tier": {3636
"description": "The highest tier its count reached, from 1 to 4. A badge earned once, as `forked-and-fixed`, `bisected`, `carry-your-own`, `moved-house` and `first-light` are, has only the first.",3737
"maximum": 4,3838
"minimum": 1,3939
"type": "integer"4040
}4141
},4242
"required": [4343
"kind",4444
"tier",4545
"count"4646
],4747
"type": "object"4848
},4949
"main": {5050
"description": "How an account shows on knotless: its dev.knotless.profile, field by field over its app.bsky.actor.profile, with its follows as the appview counts them. Optional authentication: with an asker, whether it follows the account.",5151
"errors": [5252
{5353
"description": "No account by that DID or handle.",5454
"name": "ProfileNotFound"5555
}5656
],5757
"output": {5858
"encoding": "application/json",5959
"schema": {6060
"ref": "#profileView",6161
"type": "ref"6262
}6363
},6464
"parameters": {6565
"properties": {6666
"actor": {6767
"description": "The account, by DID or handle.",6868
"format": "at-identifier",6969
"type": "string"7070
}7171
},7272
"required": [7373
"actor"7474
],7575
"type": "params"7676
},7777
"type": "query"7878
},7979
"orgView": {8080
"description": "An organization an account is a member of.",8181
"properties": {8282
"actor": {8383
"ref": "dev.knotless.defs#actorView",8484
"type": "ref"8585
}8686
},8787
"required": [8888
"actor"8989
],9090
"type": "object"9191
},9292
"profileView": {9393
"description": "An account as knotless shows it.",9494
"properties": {9595
"avatar": {9696
"description": "The account's picture: from Bluesky's CDN, or, for one its dev.knotless.profile names, from this appview.",9797
"format": "uri",9898
"type": "string"9999
},100100
"badges": {101101
"description": "The badges it earned, in the order knotless shows them, as the appview counts them from what it has indexed: none it could not count again from accounts' records. Absent when none, or when the appview keeps no index.",102102
"items": {103103
"ref": "#badgeView",104104
"type": "ref"105105
},106106
"type": "array"107107
},108
"bot": {109
"description": "Whether the account says it is a bot, as its dev.knotless.profile's `bot`. Absent when it is not.",110
"type": "boolean"111
},108112
"description": {109113
"description": "The account's bio.",110114
"maxGraphemes": 256,111115
"maxLength": 2560,112116
"type": "string"113117
},114118
"did": {115119
"format": "did",116120
"type": "string"117121
},118122
"displayName": {119123
"maxGraphemes": 64,120124
"maxLength": 640,121125
"type": "string"122126
},123127
"followersCount": {124128
"description": "How many accounts follow it on knotless, when the appview keeps an index.",125129
"minimum": 0,126130
"type": "integer"127131
},128132
"followsCount": {129133
"description": "How many accounts it follows on knotless, when the appview keeps an index.",130134
"minimum": 0,131135
"type": "integer"132136
},133137
"handle": {134138
"description": "The handle the account claims, when it resolves back to it; else the DID.",135139
"type": "string"136140
},137141
"links": {138142
"description": "Only http and https addresses.",139143
"items": {140144
"ref": "dev.knotless.defs#link",141145
"type": "ref"142146
},143147
"maxLength": 10,144148
"type": "array"145149
},146150
"organization": {147151
"description": "Whether the account is an organization, keeping a public dev.knotless.org record, as the appview has indexed it. Absent when it is not.",148152
"type": "boolean"149153
},150154
"orgs": {151155
"description": "The organizations it is a member of in public, as the appview has indexed them; to the account itself, asking, its hidden memberships too. Absent when none.",152156
"items": {153157
"ref": "#orgView",154158
"type": "ref"155159
},156160
"type": "array"157161
},158162
"pronouns": {159163
"maxGraphemes": 20,160164
"maxLength": 200,161165
"type": "string"162166
},163167
"viewer": {164168
"description": "What the account asking has to do with it; absent when no one asks.",165169
"ref": "dev.knotless.defs#actorViewerState",166170
"type": "ref"167171
}168172
},169173
"required": [170174
"did"171175
],172176
"type": "object"173177
}174178
},175179
"description": "How an account shows on knotless.",176180
"id": "dev.knotless.getProfile",177181
"lexicon": 1178182
}