add @bsky.app/sdk + @atproto/lex, vendor lexicons, codegen via lex cli

This commit is contained in:
Samuel Newman
2026-07-15 16:06:20 +03:00
parent 17c1ee4869
commit 15e232749a
306 changed files with 22544 additions and 2 deletions
+82
View File
@@ -0,0 +1,82 @@
{
"lexicon": 1,
"id": "chat.bsky.group.addMembers",
"defs": {
"main": {
"type": "procedure",
"description": "Adds members to a group. The members are added in 'request' status, so they have to accept it. This creates convo memberships.",
"errors": [
{
"name": "AccountSuspended"
},
{
"name": "BlockedActor"
},
{
"name": "BlockedSubject"
},
{
"name": "ConvoLocked"
},
{
"name": "InsufficientRole"
},
{
"name": "InvalidConvo"
},
{
"name": "MemberLimitReached"
},
{
"name": "NotFollowedBySender"
},
{
"name": "RecipientNotFound"
},
{
"name": "UserForbidsGroups"
}
],
"input": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["convoId", "members"],
"properties": {
"convoId": {
"type": "string"
},
"members": {
"type": "array",
"items": {
"type": "string",
"format": "did"
},
"minLength": 1
}
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["convo"],
"properties": {
"convo": {
"type": "ref",
"ref": "chat.bsky.convo.defs#convoView"
},
"addedMembers": {
"type": "array",
"items": {
"type": "ref",
"ref": "chat.bsky.actor.defs#profileViewBasic"
}
}
}
}
}
}
}
}
@@ -0,0 +1,50 @@
{
"lexicon": 1,
"id": "chat.bsky.group.approveJoinRequest",
"defs": {
"main": {
"type": "procedure",
"description": "Approves a request to join a group (via join link) the user owns. Action taken by the group owner.",
"errors": [
{
"name": "InvalidConvo"
},
{
"name": "InsufficientRole"
},
{
"name": "MemberLimitReached"
}
],
"input": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["convoId", "member"],
"properties": {
"convoId": {
"type": "string"
},
"member": {
"type": "string",
"format": "did"
}
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["convo"],
"properties": {
"convo": {
"type": "ref",
"ref": "chat.bsky.convo.defs#convoView"
}
}
}
}
}
}
}
+69
View File
@@ -0,0 +1,69 @@
{
"lexicon": 1,
"id": "chat.bsky.group.createGroup",
"defs": {
"main": {
"type": "procedure",
"description": "Creates a group convo, specifying the members to be added to it. Unlike getConvoForMembers, this isn't idempotent. It will create new groups even if the membership is identical to pre-existing groups. Will create 'request' membership for all members, except the owner who is 'accepted'.",
"errors": [
{
"name": "AccountSuspended"
},
{
"name": "BlockedActor"
},
{
"name": "BlockedSubject"
},
{
"name": "NewAccountCannotCreateGroup"
},
{
"name": "NotFollowedBySender"
},
{
"name": "RecipientNotFound"
},
{
"name": "UserForbidsGroups"
}
],
"input": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["members", "name"],
"properties": {
"members": {
"type": "array",
"maxLength": 49,
"items": {
"type": "string",
"format": "did"
}
},
"name": {
"type": "string",
"minLength": 1,
"maxGraphemes": 50,
"maxLength": 500
}
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["convo"],
"properties": {
"convo": {
"type": "ref",
"ref": "chat.bsky.convo.defs#convoView"
}
}
}
}
}
}
}
@@ -0,0 +1,54 @@
{
"lexicon": 1,
"id": "chat.bsky.group.createJoinLink",
"defs": {
"main": {
"type": "procedure",
"description": "Creates a join link for the group convo.",
"errors": [
{
"name": "EnabledJoinLinkAlreadyExists"
},
{
"name": "InvalidConvo"
},
{
"name": "InsufficientRole"
}
],
"input": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["convoId", "joinRule"],
"properties": {
"convoId": {
"type": "string"
},
"requireApproval": {
"type": "boolean",
"default": false
},
"joinRule": {
"type": "ref",
"ref": "chat.bsky.group.defs#joinRule"
}
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["joinLink"],
"properties": {
"joinLink": {
"type": "ref",
"ref": "chat.bsky.group.defs#joinLinkView"
}
}
}
}
}
}
}
+177
View File
@@ -0,0 +1,177 @@
{
"lexicon": 1,
"id": "chat.bsky.group.defs",
"defs": {
"linkEnabledStatus": {
"type": "string",
"knownValues": ["enabled", "disabled"]
},
"joinRule": {
"type": "string",
"knownValues": ["anyone", "followedByOwner"]
},
"joinLinkView": {
"description": "Join link view to be used within a group view, so the convo is surrounding, not specified inside this view.",
"type": "object",
"required": [
"code",
"enabledStatus",
"requireApproval",
"joinRule",
"createdAt"
],
"properties": {
"code": {
"type": "string"
},
"enabledStatus": {
"type": "ref",
"ref": "#linkEnabledStatus"
},
"requireApproval": {
"type": "boolean"
},
"joinRule": {
"type": "ref",
"ref": "#joinRule"
},
"createdAt": {
"type": "string",
"format": "datetime"
}
}
},
"joinLinkPreviewView": {
"description": "Preview that can be shown in feeds, including to unauthenticated viewers.",
"type": "object",
"required": [
"convoId",
"code",
"name",
"owner",
"memberCount",
"memberLimit",
"requireApproval",
"joinRule"
],
"properties": {
"convoId": {
"type": "string"
},
"code": {
"type": "string"
},
"name": {
"type": "string"
},
"owner": {
"type": "ref",
"ref": "chat.bsky.actor.defs#profileViewBasic"
},
"memberCount": {
"type": "integer"
},
"memberLimit": {
"type": "integer"
},
"requireApproval": {
"type": "boolean"
},
"joinRule": {
"type": "ref",
"ref": "#joinRule"
},
"convo": {
"type": "ref",
"ref": "chat.bsky.convo.defs#convoView",
"description": "Present only if the request is authenticated and the user is a member of the group."
},
"viewer": {
"type": "ref",
"ref": "#joinLinkViewerState"
}
}
},
"disabledJoinLinkPreviewView": {
"description": "Preview for a disabled join link. Carries only the code so clients can correlate with the input and render a disabled state.",
"type": "object",
"required": ["code"],
"properties": {
"code": {
"type": "string"
}
}
},
"invalidJoinLinkPreviewView": {
"description": "Preview for a join link code that does not map to an existing link. Carries only the code so clients can correlate with the input and render an invalid state.",
"type": "object",
"required": ["code"],
"properties": {
"code": {
"type": "string"
}
}
},
"joinLinkViewerState": {
"type": "object",
"properties": {
"requestedAt": {
"type": "string",
"format": "datetime"
}
}
},
"joinRequestView": {
"description": "A join request from the perspective of the group owner.",
"type": "object",
"required": ["convoId", "requestedBy", "requestedAt"],
"properties": {
"convoId": {
"type": "string"
},
"requestedBy": {
"type": "ref",
"ref": "chat.bsky.actor.defs#profileViewBasic"
},
"requestedAt": {
"type": "string",
"format": "datetime"
}
}
},
"joinRequestConvoView": {
"description": "A join request from the perspective of the requester, including enough group context to render the request in a list (e.g. group name, owner, member count).",
"type": "object",
"required": [
"convoId",
"name",
"owner",
"memberCount",
"memberLimit",
"viewer"
],
"properties": {
"convoId": {
"type": "string"
},
"name": {
"type": "string"
},
"owner": {
"type": "ref",
"ref": "chat.bsky.actor.defs#profileViewBasic"
},
"memberCount": {
"type": "integer"
},
"memberLimit": {
"type": "integer"
},
"viewer": {
"type": "ref",
"ref": "#joinLinkViewerState"
}
}
}
}
}
@@ -0,0 +1,46 @@
{
"lexicon": 1,
"id": "chat.bsky.group.disableJoinLink",
"defs": {
"main": {
"type": "procedure",
"description": "Disables the active join link for the group convo.",
"errors": [
{
"name": "InvalidConvo"
},
{
"name": "InsufficientRole"
},
{
"name": "NoJoinLink"
}
],
"input": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["convoId"],
"properties": {
"convoId": {
"type": "string"
}
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["joinLink"],
"properties": {
"joinLink": {
"type": "ref",
"ref": "chat.bsky.group.defs#joinLinkView"
}
}
}
}
}
}
}
+52
View File
@@ -0,0 +1,52 @@
{
"lexicon": 1,
"id": "chat.bsky.group.editGroup",
"defs": {
"main": {
"type": "procedure",
"description": "Edits group settings.",
"errors": [
{
"name": "ConvoLocked"
},
{
"name": "InvalidConvo"
},
{
"name": "InsufficientRole"
}
],
"input": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["convoId", "name"],
"properties": {
"convoId": {
"type": "string"
},
"name": {
"type": "string",
"minLength": 1,
"maxGraphemes": 50,
"maxLength": 500
}
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["convo"],
"properties": {
"convo": {
"type": "ref",
"ref": "chat.bsky.convo.defs#convoView"
}
}
}
}
}
}
}
@@ -0,0 +1,53 @@
{
"lexicon": 1,
"id": "chat.bsky.group.editJoinLink",
"defs": {
"main": {
"type": "procedure",
"description": "Edits the existing join link settings for the group convo.",
"errors": [
{
"name": "InvalidConvo"
},
{
"name": "InsufficientRole"
},
{
"name": "NoJoinLink"
}
],
"input": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["convoId"],
"properties": {
"convoId": {
"type": "string"
},
"requireApproval": {
"type": "boolean"
},
"joinRule": {
"type": "ref",
"ref": "chat.bsky.group.defs#joinRule"
}
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["joinLink"],
"properties": {
"joinLink": {
"type": "ref",
"ref": "chat.bsky.group.defs#joinLinkView"
}
}
}
}
}
}
}
@@ -0,0 +1,49 @@
{
"lexicon": 1,
"id": "chat.bsky.group.enableJoinLink",
"defs": {
"main": {
"type": "procedure",
"description": "Re-enables a previously disabled join link for the group convo.",
"errors": [
{
"name": "InvalidConvo"
},
{
"name": "InsufficientRole"
},
{
"name": "NoJoinLink"
},
{
"name": "LinkAlreadyEnabled"
}
],
"input": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["convoId"],
"properties": {
"convoId": {
"type": "string"
}
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["joinLink"],
"properties": {
"joinLink": {
"type": "ref",
"ref": "chat.bsky.group.defs#joinLinkView"
}
}
}
}
}
}
}
@@ -0,0 +1,44 @@
{
"lexicon": 1,
"id": "chat.bsky.group.getJoinLinkPreviews",
"defs": {
"main": {
"type": "query",
"description": "Get public information about groups from join links. The output array matches the input codes one-to-one by position (and each view also carries its 'code'). Disabled codes return a disabledJoinLinkPreviewView, and codes that do not map to a previewable link return an invalidJoinLinkPreviewView.",
"parameters": {
"type": "params",
"required": ["codes"],
"properties": {
"codes": {
"type": "array",
"minLength": 1,
"maxLength": 50,
"items": {
"type": "string"
}
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["joinLinkPreviews"],
"properties": {
"joinLinkPreviews": {
"type": "array",
"items": {
"type": "union",
"refs": [
"chat.bsky.group.defs#joinLinkPreviewView",
"chat.bsky.group.defs#disabledJoinLinkPreviewView",
"chat.bsky.group.defs#invalidJoinLinkPreviewView"
]
}
}
}
}
}
}
}
}
@@ -0,0 +1,55 @@
{
"lexicon": 1,
"id": "chat.bsky.group.listJoinRequests",
"defs": {
"main": {
"type": "query",
"description": "Lists a page of request to join a group (via join link) the user owns. Shows the data from the owner's point of view.",
"errors": [
{
"name": "InvalidConvo"
},
{
"name": "InsufficientRole"
}
],
"parameters": {
"type": "params",
"required": ["convoId"],
"properties": {
"convoId": {
"type": "string"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50
},
"cursor": {
"type": "string"
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["requests"],
"properties": {
"cursor": {
"type": "string"
},
"requests": {
"type": "array",
"items": {
"type": "ref",
"ref": "chat.bsky.group.defs#joinRequestView"
}
}
}
}
}
}
}
}
@@ -0,0 +1,48 @@
{
"lexicon": 1,
"id": "chat.bsky.group.listMutualGroups",
"defs": {
"main": {
"type": "query",
"description": "Returns a page of group conversations that both the requester and the specified actor are members of.",
"parameters": {
"type": "params",
"required": ["subject"],
"properties": {
"subject": {
"type": "string",
"format": "did"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50
},
"cursor": {
"type": "string"
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["convos"],
"properties": {
"cursor": {
"type": "string"
},
"convos": {
"type": "array",
"items": {
"type": "ref",
"ref": "chat.bsky.convo.defs#convoView"
}
}
}
}
}
}
}
}
@@ -0,0 +1,42 @@
{
"lexicon": 1,
"id": "chat.bsky.group.rejectJoinRequest",
"defs": {
"main": {
"type": "procedure",
"description": "Rejects a request to join a group (via join link) the user owns. Action taken by the group owner.",
"errors": [
{
"name": "InvalidConvo"
},
{
"name": "InsufficientRole"
}
],
"input": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["convoId", "member"],
"properties": {
"convoId": {
"type": "string"
},
"member": {
"type": "string",
"format": "did"
}
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": [],
"properties": {}
}
}
}
}
}
@@ -0,0 +1,51 @@
{
"lexicon": 1,
"id": "chat.bsky.group.removeMembers",
"defs": {
"main": {
"type": "procedure",
"description": "Removes members from a group. This deletes convo memberships, doesn't just set a status.",
"errors": [
{
"name": "InvalidConvo"
},
{
"name": "InsufficientRole"
}
],
"input": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["convoId", "members"],
"properties": {
"convoId": {
"type": "string"
},
"members": {
"type": "array",
"items": {
"type": "string",
"format": "did"
},
"minLength": 1
}
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["convo"],
"properties": {
"convo": {
"type": "ref",
"ref": "chat.bsky.convo.defs#convoView"
}
}
}
}
}
}
}
+60
View File
@@ -0,0 +1,60 @@
{
"lexicon": 1,
"id": "chat.bsky.group.requestJoin",
"defs": {
"main": {
"type": "procedure",
"description": "Sends a request to join a group (via join link) to the group owner. Action taken by the prospective group member.",
"errors": [
{
"name": "ConvoLocked"
},
{
"name": "FollowRequired"
},
{
"name": "InvalidCode"
},
{
"name": "LinkDisabled"
},
{
"name": "MemberLimitReached"
},
{
"name": "UserKicked"
}
],
"input": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["code"],
"properties": {
"code": {
"type": "string"
}
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["status"],
"properties": {
"status": {
"type": "string",
"knownValues": ["joined", "pending"]
},
"convo": {
"description": "The group convo joined. This is only present in the case of status=joined",
"type": "ref",
"ref": "chat.bsky.convo.defs#convoView"
}
}
}
}
}
}
}
@@ -0,0 +1,38 @@
{
"lexicon": 1,
"id": "chat.bsky.group.updateJoinRequestsRead",
"defs": {
"main": {
"type": "procedure",
"description": "Marks all join requests as read for the group owner.",
"errors": [
{
"name": "InvalidConvo"
},
{
"name": "InsufficientRole"
}
],
"input": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["convoId"],
"properties": {
"convoId": {
"type": "string"
}
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": [],
"properties": {}
}
}
}
}
}
@@ -0,0 +1,35 @@
{
"lexicon": 1,
"id": "chat.bsky.group.withdrawJoinRequest",
"defs": {
"main": {
"type": "procedure",
"description": "Withdraws a pending request to join a group. Action taken by the prospective member who originally requested to join.",
"errors": [
{
"name": "InvalidJoinRequest"
}
],
"input": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": ["convoId"],
"properties": {
"convoId": {
"type": "string"
}
}
}
},
"output": {
"encoding": "application/json",
"schema": {
"type": "object",
"required": [],
"properties": {}
}
}
}
}
}