/** * GENERATED CODE - DO NOT MODIFY */ import { LexiconDoc, Lexicons } from '@atproto/lexicon' export const schemaDict = { ComAtprotoAdminDefs: { lexicon: 1, id: 'com.atproto.admin.defs', defs: { actionView: { type: 'object', required: [ 'id', 'action', 'subject', 'subjectBlobCids', 'reason', 'createdBy', 'createdAt', 'resolvedReportIds', ], properties: { id: { type: 'integer', }, action: { type: 'ref', ref: 'lex:com.atproto.admin.defs#actionType', }, durationInHours: { type: 'integer', description: 'Indicates how long this action was meant to be in effect before automatically expiring.', }, subject: { type: 'union', refs: [ 'lex:com.atproto.admin.defs#repoRef', 'lex:com.atproto.repo.strongRef', ], }, subjectBlobCids: { type: 'array', items: { type: 'string', }, }, createLabelVals: { type: 'array', items: { type: 'string', }, }, negateLabelVals: { type: 'array', items: { type: 'string', }, }, reason: { type: 'string', }, createdBy: { type: 'string', format: 'did', }, createdAt: { type: 'string', format: 'datetime', }, reversal: { type: 'ref', ref: 'lex:com.atproto.admin.defs#actionReversal', }, resolvedReportIds: { type: 'array', items: { type: 'integer', }, }, }, }, actionViewDetail: { type: 'object', required: [ 'id', 'action', 'subject', 'subjectBlobs', 'reason', 'createdBy', 'createdAt', 'resolvedReports', ], properties: { id: { type: 'integer', }, action: { type: 'ref', ref: 'lex:com.atproto.admin.defs#actionType', }, durationInHours: { type: 'integer', description: 'Indicates how long this action was meant to be in effect before automatically expiring.', }, subject: { type: 'union', refs: [ 'lex:com.atproto.admin.defs#repoView', 'lex:com.atproto.admin.defs#repoViewNotFound', 'lex:com.atproto.admin.defs#recordView', 'lex:com.atproto.admin.defs#recordViewNotFound', ], }, subjectBlobs: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.admin.defs#blobView', }, }, createLabelVals: { type: 'array', items: { type: 'string', }, }, negateLabelVals: { type: 'array', items: { type: 'string', }, }, reason: { type: 'string', }, createdBy: { type: 'string', format: 'did', }, createdAt: { type: 'string', format: 'datetime', }, reversal: { type: 'ref', ref: 'lex:com.atproto.admin.defs#actionReversal', }, resolvedReports: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.admin.defs#reportView', }, }, }, }, actionViewCurrent: { type: 'object', required: ['id', 'action'], properties: { id: { type: 'integer', }, action: { type: 'ref', ref: 'lex:com.atproto.admin.defs#actionType', }, durationInHours: { type: 'integer', description: 'Indicates how long this action was meant to be in effect before automatically expiring.', }, }, }, actionReversal: { type: 'object', required: ['reason', 'createdBy', 'createdAt'], properties: { reason: { type: 'string', }, createdBy: { type: 'string', format: 'did', }, createdAt: { type: 'string', format: 'datetime', }, }, }, actionType: { type: 'string', knownValues: [ 'lex:com.atproto.admin.defs#takedown', 'lex:com.atproto.admin.defs#flag', 'lex:com.atproto.admin.defs#acknowledge', 'lex:com.atproto.admin.defs#escalate', ], }, takedown: { type: 'token', description: 'Moderation action type: Takedown. Indicates that content should not be served by the PDS.', }, flag: { type: 'token', description: 'Moderation action type: Flag. Indicates that the content was reviewed and considered to violate PDS rules, but may still be served.', }, acknowledge: { type: 'token', description: 'Moderation action type: Acknowledge. Indicates that the content was reviewed and not considered to violate PDS rules.', }, escalate: { type: 'token', description: 'Moderation action type: Escalate. Indicates that the content has been flagged for additional review.', }, reportView: { type: 'object', required: [ 'id', 'reasonType', 'subject', 'reportedBy', 'createdAt', 'resolvedByActionIds', ], properties: { id: { type: 'integer', }, reasonType: { type: 'ref', ref: 'lex:com.atproto.moderation.defs#reasonType', }, reason: { type: 'string', }, subjectRepoHandle: { type: 'string', }, subject: { type: 'union', refs: [ 'lex:com.atproto.admin.defs#repoRef', 'lex:com.atproto.repo.strongRef', ], }, reportedBy: { type: 'string', format: 'did', }, createdAt: { type: 'string', format: 'datetime', }, resolvedByActionIds: { type: 'array', items: { type: 'integer', }, }, }, }, reportViewDetail: { type: 'object', required: [ 'id', 'reasonType', 'subject', 'reportedBy', 'createdAt', 'resolvedByActions', ], properties: { id: { type: 'integer', }, reasonType: { type: 'ref', ref: 'lex:com.atproto.moderation.defs#reasonType', }, reason: { type: 'string', }, subject: { type: 'union', refs: [ 'lex:com.atproto.admin.defs#repoView', 'lex:com.atproto.admin.defs#repoViewNotFound', 'lex:com.atproto.admin.defs#recordView', 'lex:com.atproto.admin.defs#recordViewNotFound', ], }, reportedBy: { type: 'string', format: 'did', }, createdAt: { type: 'string', format: 'datetime', }, resolvedByActions: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.admin.defs#actionView', }, }, }, }, repoView: { type: 'object', required: [ 'did', 'handle', 'relatedRecords', 'indexedAt', 'moderation', ], properties: { did: { type: 'string', format: 'did', }, handle: { type: 'string', format: 'handle', }, email: { type: 'string', }, relatedRecords: { type: 'array', items: { type: 'unknown', }, }, indexedAt: { type: 'string', format: 'datetime', }, moderation: { type: 'ref', ref: 'lex:com.atproto.admin.defs#moderation', }, invitedBy: { type: 'ref', ref: 'lex:com.atproto.server.defs#inviteCode', }, invitesDisabled: { type: 'boolean', }, inviteNote: { type: 'string', }, }, }, repoViewDetail: { type: 'object', required: [ 'did', 'handle', 'relatedRecords', 'indexedAt', 'moderation', ], properties: { did: { type: 'string', format: 'did', }, handle: { type: 'string', format: 'handle', }, email: { type: 'string', }, relatedRecords: { type: 'array', items: { type: 'unknown', }, }, indexedAt: { type: 'string', format: 'datetime', }, moderation: { type: 'ref', ref: 'lex:com.atproto.admin.defs#moderationDetail', }, labels: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.label.defs#label', }, }, invitedBy: { type: 'ref', ref: 'lex:com.atproto.server.defs#inviteCode', }, invites: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.server.defs#inviteCode', }, }, invitesDisabled: { type: 'boolean', }, inviteNote: { type: 'string', }, }, }, repoViewNotFound: { type: 'object', required: ['did'], properties: { did: { type: 'string', format: 'did', }, }, }, repoRef: { type: 'object', required: ['did'], properties: { did: { type: 'string', format: 'did', }, }, }, recordView: { type: 'object', required: [ 'uri', 'cid', 'value', 'blobCids', 'indexedAt', 'moderation', 'repo', ], properties: { uri: { type: 'string', format: 'at-uri', }, cid: { type: 'string', format: 'cid', }, value: { type: 'unknown', }, blobCids: { type: 'array', items: { type: 'string', format: 'cid', }, }, indexedAt: { type: 'string', format: 'datetime', }, moderation: { type: 'ref', ref: 'lex:com.atproto.admin.defs#moderation', }, repo: { type: 'ref', ref: 'lex:com.atproto.admin.defs#repoView', }, }, }, recordViewDetail: { type: 'object', required: [ 'uri', 'cid', 'value', 'blobs', 'indexedAt', 'moderation', 'repo', ], properties: { uri: { type: 'string', format: 'at-uri', }, cid: { type: 'string', format: 'cid', }, value: { type: 'unknown', }, blobs: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.admin.defs#blobView', }, }, labels: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.label.defs#label', }, }, indexedAt: { type: 'string', format: 'datetime', }, moderation: { type: 'ref', ref: 'lex:com.atproto.admin.defs#moderationDetail', }, repo: { type: 'ref', ref: 'lex:com.atproto.admin.defs#repoView', }, }, }, recordViewNotFound: { type: 'object', required: ['uri'], properties: { uri: { type: 'string', format: 'at-uri', }, }, }, moderation: { type: 'object', properties: { currentAction: { type: 'ref', ref: 'lex:com.atproto.admin.defs#actionViewCurrent', }, }, }, moderationDetail: { type: 'object', required: ['actions', 'reports'], properties: { currentAction: { type: 'ref', ref: 'lex:com.atproto.admin.defs#actionViewCurrent', }, actions: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.admin.defs#actionView', }, }, reports: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.admin.defs#reportView', }, }, }, }, blobView: { type: 'object', required: ['cid', 'mimeType', 'size', 'createdAt'], properties: { cid: { type: 'string', format: 'cid', }, mimeType: { type: 'string', }, size: { type: 'integer', }, createdAt: { type: 'string', format: 'datetime', }, details: { type: 'union', refs: [ 'lex:com.atproto.admin.defs#imageDetails', 'lex:com.atproto.admin.defs#videoDetails', ], }, moderation: { type: 'ref', ref: 'lex:com.atproto.admin.defs#moderation', }, }, }, imageDetails: { type: 'object', required: ['width', 'height'], properties: { width: { type: 'integer', }, height: { type: 'integer', }, }, }, videoDetails: { type: 'object', required: ['width', 'height', 'length'], properties: { width: { type: 'integer', }, height: { type: 'integer', }, length: { type: 'integer', }, }, }, }, }, ComAtprotoAdminDisableAccountInvites: { lexicon: 1, id: 'com.atproto.admin.disableAccountInvites', defs: { main: { type: 'procedure', description: 'Disable an account from receiving new invite codes, but does not invalidate existing codes', input: { encoding: 'application/json', schema: { type: 'object', required: ['account'], properties: { account: { type: 'string', format: 'did', }, note: { type: 'string', description: 'Additionally add a note describing why the invites were disabled', }, }, }, }, }, }, }, ComAtprotoAdminDisableInviteCodes: { lexicon: 1, id: 'com.atproto.admin.disableInviteCodes', defs: { main: { type: 'procedure', description: 'Disable some set of codes and/or all codes associated with a set of users', input: { encoding: 'application/json', schema: { type: 'object', properties: { codes: { type: 'array', items: { type: 'string', }, }, accounts: { type: 'array', items: { type: 'string', }, }, }, }, }, }, }, }, ComAtprotoAdminEnableAccountInvites: { lexicon: 1, id: 'com.atproto.admin.enableAccountInvites', defs: { main: { type: 'procedure', description: 'Re-enable an accounts ability to receive invite codes', input: { encoding: 'application/json', schema: { type: 'object', required: ['account'], properties: { account: { type: 'string', format: 'did', }, note: { type: 'string', description: 'Additionally add a note describing why the invites were enabled', }, }, }, }, }, }, }, ComAtprotoAdminGetInviteCodes: { lexicon: 1, id: 'com.atproto.admin.getInviteCodes', defs: { main: { type: 'query', description: 'Admin view of invite codes', parameters: { type: 'params', properties: { sort: { type: 'string', knownValues: ['recent', 'usage'], default: 'recent', }, limit: { type: 'integer', minimum: 1, maximum: 500, default: 100, }, cursor: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['codes'], properties: { cursor: { type: 'string', }, codes: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.server.defs#inviteCode', }, }, }, }, }, }, }, }, ComAtprotoAdminGetModerationAction: { lexicon: 1, id: 'com.atproto.admin.getModerationAction', defs: { main: { type: 'query', description: 'View details about a moderation action.', parameters: { type: 'params', required: ['id'], properties: { id: { type: 'integer', }, }, }, output: { encoding: 'application/json', schema: { type: 'ref', ref: 'lex:com.atproto.admin.defs#actionViewDetail', }, }, }, }, }, ComAtprotoAdminGetModerationActions: { lexicon: 1, id: 'com.atproto.admin.getModerationActions', defs: { main: { type: 'query', description: 'List moderation actions related to a subject.', parameters: { type: 'params', properties: { subject: { type: 'string', }, limit: { type: 'integer', minimum: 1, maximum: 100, default: 50, }, cursor: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['actions'], properties: { cursor: { type: 'string', }, actions: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.admin.defs#actionView', }, }, }, }, }, }, }, }, ComAtprotoAdminGetModerationReport: { lexicon: 1, id: 'com.atproto.admin.getModerationReport', defs: { main: { type: 'query', description: 'View details about a moderation report.', parameters: { type: 'params', required: ['id'], properties: { id: { type: 'integer', }, }, }, output: { encoding: 'application/json', schema: { type: 'ref', ref: 'lex:com.atproto.admin.defs#reportViewDetail', }, }, }, }, }, ComAtprotoAdminGetModerationReports: { lexicon: 1, id: 'com.atproto.admin.getModerationReports', defs: { main: { type: 'query', description: 'List moderation reports related to a subject.', parameters: { type: 'params', properties: { subject: { type: 'string', }, ignoreSubjects: { type: 'array', items: { type: 'string', }, }, actionedBy: { type: 'string', format: 'did', description: 'Get all reports that were actioned by a specific moderator', }, reporters: { type: 'array', items: { type: 'string', }, description: 'Filter reports made by one or more DIDs', }, resolved: { type: 'boolean', }, actionType: { type: 'string', knownValues: [ 'com.atproto.admin.defs#takedown', 'com.atproto.admin.defs#flag', 'com.atproto.admin.defs#acknowledge', 'com.atproto.admin.defs#escalate', ], }, limit: { type: 'integer', minimum: 1, maximum: 100, default: 50, }, cursor: { type: 'string', }, reverse: { type: 'boolean', description: 'Reverse the order of the returned records? when true, returns reports in chronological order', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['reports'], properties: { cursor: { type: 'string', }, reports: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.admin.defs#reportView', }, }, }, }, }, }, }, }, ComAtprotoAdminGetRecord: { lexicon: 1, id: 'com.atproto.admin.getRecord', defs: { main: { type: 'query', description: 'View details about a record.', parameters: { type: 'params', required: ['uri'], properties: { uri: { type: 'string', format: 'at-uri', }, cid: { type: 'string', format: 'cid', }, }, }, output: { encoding: 'application/json', schema: { type: 'ref', ref: 'lex:com.atproto.admin.defs#recordViewDetail', }, }, errors: [ { name: 'RecordNotFound', }, ], }, }, }, ComAtprotoAdminGetRepo: { lexicon: 1, id: 'com.atproto.admin.getRepo', defs: { main: { type: 'query', description: 'View details about a repository.', parameters: { type: 'params', required: ['did'], properties: { did: { type: 'string', format: 'did', }, }, }, output: { encoding: 'application/json', schema: { type: 'ref', ref: 'lex:com.atproto.admin.defs#repoViewDetail', }, }, errors: [ { name: 'RepoNotFound', }, ], }, }, }, ComAtprotoAdminResolveModerationReports: { lexicon: 1, id: 'com.atproto.admin.resolveModerationReports', defs: { main: { type: 'procedure', description: 'Resolve moderation reports by an action.', input: { encoding: 'application/json', schema: { type: 'object', required: ['actionId', 'reportIds', 'createdBy'], properties: { actionId: { type: 'integer', }, reportIds: { type: 'array', items: { type: 'integer', }, }, createdBy: { type: 'string', format: 'did', }, }, }, }, output: { encoding: 'application/json', schema: { type: 'ref', ref: 'lex:com.atproto.admin.defs#actionView', }, }, }, }, }, ComAtprotoAdminReverseModerationAction: { lexicon: 1, id: 'com.atproto.admin.reverseModerationAction', defs: { main: { type: 'procedure', description: 'Reverse a moderation action.', input: { encoding: 'application/json', schema: { type: 'object', required: ['id', 'reason', 'createdBy'], properties: { id: { type: 'integer', }, reason: { type: 'string', }, createdBy: { type: 'string', format: 'did', }, }, }, }, output: { encoding: 'application/json', schema: { type: 'ref', ref: 'lex:com.atproto.admin.defs#actionView', }, }, }, }, }, ComAtprotoAdminSearchRepos: { lexicon: 1, id: 'com.atproto.admin.searchRepos', defs: { main: { type: 'query', description: 'Find repositories based on a search term.', parameters: { type: 'params', properties: { term: { type: 'string', description: "DEPRECATED: use 'q' instead", }, q: { type: 'string', }, invitedBy: { type: 'string', }, limit: { type: 'integer', minimum: 1, maximum: 100, default: 50, }, cursor: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['repos'], properties: { cursor: { type: 'string', }, repos: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.admin.defs#repoView', }, }, }, }, }, }, }, }, ComAtprotoAdminSendEmail: { lexicon: 1, id: 'com.atproto.admin.sendEmail', defs: { main: { type: 'procedure', description: "Send email to a user's primary email address", input: { encoding: 'application/json', schema: { type: 'object', required: ['recipientDid', 'content'], properties: { recipientDid: { type: 'string', format: 'did', }, content: { type: 'string', }, subject: { type: 'string', }, }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['sent'], properties: { sent: { type: 'boolean', }, }, }, }, }, }, }, ComAtprotoAdminTakeModerationAction: { lexicon: 1, id: 'com.atproto.admin.takeModerationAction', defs: { main: { type: 'procedure', description: 'Take a moderation action on a repo.', input: { encoding: 'application/json', schema: { type: 'object', required: ['action', 'subject', 'reason', 'createdBy'], properties: { action: { type: 'string', knownValues: [ 'com.atproto.admin.defs#takedown', 'com.atproto.admin.defs#flag', 'com.atproto.admin.defs#acknowledge', ], }, subject: { type: 'union', refs: [ 'lex:com.atproto.admin.defs#repoRef', 'lex:com.atproto.repo.strongRef', ], }, subjectBlobCids: { type: 'array', items: { type: 'string', format: 'cid', }, }, createLabelVals: { type: 'array', items: { type: 'string', }, }, negateLabelVals: { type: 'array', items: { type: 'string', }, }, reason: { type: 'string', }, durationInHours: { type: 'integer', description: 'Indicates how long this action was meant to be in effect before automatically expiring.', }, createdBy: { type: 'string', format: 'did', }, }, }, }, output: { encoding: 'application/json', schema: { type: 'ref', ref: 'lex:com.atproto.admin.defs#actionView', }, }, errors: [ { name: 'SubjectHasAction', }, ], }, }, }, ComAtprotoAdminUpdateAccountEmail: { lexicon: 1, id: 'com.atproto.admin.updateAccountEmail', defs: { main: { type: 'procedure', description: "Administrative action to update an account's email", input: { encoding: 'application/json', schema: { type: 'object', required: ['account', 'email'], properties: { account: { type: 'string', format: 'at-identifier', description: 'The handle or DID of the repo.', }, email: { type: 'string', }, }, }, }, }, }, }, ComAtprotoAdminUpdateAccountHandle: { lexicon: 1, id: 'com.atproto.admin.updateAccountHandle', defs: { main: { type: 'procedure', description: "Administrative action to update an account's handle", input: { encoding: 'application/json', schema: { type: 'object', required: ['did', 'handle'], properties: { did: { type: 'string', format: 'did', }, handle: { type: 'string', format: 'handle', }, }, }, }, }, }, }, ComAtprotoIdentityResolveHandle: { lexicon: 1, id: 'com.atproto.identity.resolveHandle', defs: { main: { type: 'query', description: 'Provides the DID of a repo.', parameters: { type: 'params', required: ['handle'], properties: { handle: { type: 'string', format: 'handle', description: 'The handle to resolve.', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['did'], properties: { did: { type: 'string', format: 'did', }, }, }, }, }, }, }, ComAtprotoIdentityUpdateHandle: { lexicon: 1, id: 'com.atproto.identity.updateHandle', defs: { main: { type: 'procedure', description: 'Updates the handle of the account', input: { encoding: 'application/json', schema: { type: 'object', required: ['handle'], properties: { handle: { type: 'string', format: 'handle', }, }, }, }, }, }, }, ComAtprotoLabelDefs: { lexicon: 1, id: 'com.atproto.label.defs', defs: { label: { type: 'object', description: 'Metadata tag on an atproto resource (eg, repo or record)', required: ['src', 'uri', 'val', 'cts'], properties: { src: { type: 'string', format: 'did', description: 'DID of the actor who created this label', }, uri: { type: 'string', format: 'uri', description: 'AT URI of the record, repository (account), or other resource which this label applies to', }, cid: { type: 'string', format: 'cid', description: "optionally, CID specifying the specific version of 'uri' resource this label applies to", }, val: { type: 'string', maxLength: 128, description: 'the short string name of the value or type of this label', }, neg: { type: 'boolean', description: 'if true, this is a negation label, overwriting a previous label', }, cts: { type: 'string', format: 'datetime', description: 'timestamp when this label was created', }, }, }, selfLabels: { type: 'object', description: 'Metadata tags on an atproto record, published by the author within the record.', required: ['values'], properties: { values: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.label.defs#selfLabel', }, maxLength: 10, }, }, }, selfLabel: { type: 'object', description: 'Metadata tag on an atproto record, published by the author within the record. Note -- schemas should use #selfLabels, not #selfLabel.', required: ['val'], properties: { val: { type: 'string', maxLength: 128, description: 'the short string name of the value or type of this label', }, }, }, }, }, ComAtprotoLabelQueryLabels: { lexicon: 1, id: 'com.atproto.label.queryLabels', defs: { main: { type: 'query', description: 'Find labels relevant to the provided URI patterns.', parameters: { type: 'params', required: ['uriPatterns'], properties: { uriPatterns: { type: 'array', items: { type: 'string', }, description: "List of AT URI patterns to match (boolean 'OR'). Each may be a prefix (ending with '*'; will match inclusive of the string leading to '*'), or a full URI", }, sources: { type: 'array', items: { type: 'string', format: 'did', }, description: 'Optional list of label sources (DIDs) to filter on', }, limit: { type: 'integer', minimum: 1, maximum: 250, default: 50, }, cursor: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['labels'], properties: { cursor: { type: 'string', }, labels: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.label.defs#label', }, }, }, }, }, }, }, }, ComAtprotoLabelSubscribeLabels: { lexicon: 1, id: 'com.atproto.label.subscribeLabels', defs: { main: { type: 'subscription', description: 'Subscribe to label updates', parameters: { type: 'params', properties: { cursor: { type: 'integer', description: 'The last known event to backfill from.', }, }, }, message: { schema: { type: 'union', refs: [ 'lex:com.atproto.label.subscribeLabels#labels', 'lex:com.atproto.label.subscribeLabels#info', ], }, }, errors: [ { name: 'FutureCursor', }, ], }, labels: { type: 'object', required: ['seq', 'labels'], properties: { seq: { type: 'integer', }, labels: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.label.defs#label', }, }, }, }, info: { type: 'object', required: ['name'], properties: { name: { type: 'string', knownValues: ['OutdatedCursor'], }, message: { type: 'string', }, }, }, }, }, ComAtprotoModerationCreateReport: { lexicon: 1, id: 'com.atproto.moderation.createReport', defs: { main: { type: 'procedure', description: 'Report a repo or a record.', input: { encoding: 'application/json', schema: { type: 'object', required: ['reasonType', 'subject'], properties: { reasonType: { type: 'ref', ref: 'lex:com.atproto.moderation.defs#reasonType', }, reason: { type: 'string', }, subject: { type: 'union', refs: [ 'lex:com.atproto.admin.defs#repoRef', 'lex:com.atproto.repo.strongRef', ], }, }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: [ 'id', 'reasonType', 'subject', 'reportedBy', 'createdAt', ], properties: { id: { type: 'integer', }, reasonType: { type: 'ref', ref: 'lex:com.atproto.moderation.defs#reasonType', }, reason: { type: 'string', }, subject: { type: 'union', refs: [ 'lex:com.atproto.admin.defs#repoRef', 'lex:com.atproto.repo.strongRef', ], }, reportedBy: { type: 'string', format: 'did', }, createdAt: { type: 'string', format: 'datetime', }, }, }, }, }, }, }, ComAtprotoModerationDefs: { lexicon: 1, id: 'com.atproto.moderation.defs', defs: { reasonType: { type: 'string', knownValues: [ 'com.atproto.moderation.defs#reasonSpam', 'com.atproto.moderation.defs#reasonViolation', 'com.atproto.moderation.defs#reasonMisleading', 'com.atproto.moderation.defs#reasonSexual', 'com.atproto.moderation.defs#reasonRude', 'com.atproto.moderation.defs#reasonOther', ], }, reasonSpam: { type: 'token', description: 'Spam: frequent unwanted promotion, replies, mentions', }, reasonViolation: { type: 'token', description: 'Direct violation of server rules, laws, terms of service', }, reasonMisleading: { type: 'token', description: 'Misleading identity, affiliation, or content', }, reasonSexual: { type: 'token', description: 'Unwanted or mislabeled sexual content', }, reasonRude: { type: 'token', description: 'Rude, harassing, explicit, or otherwise unwelcoming behavior', }, reasonOther: { type: 'token', description: 'Other: reports not falling under another report category', }, }, }, ComAtprotoRepoApplyWrites: { lexicon: 1, id: 'com.atproto.repo.applyWrites', defs: { main: { type: 'procedure', description: 'Apply a batch transaction of creates, updates, and deletes.', input: { encoding: 'application/json', schema: { type: 'object', required: ['repo', 'writes'], properties: { repo: { type: 'string', format: 'at-identifier', description: 'The handle or DID of the repo.', }, validate: { type: 'boolean', default: true, description: 'Validate the records?', }, writes: { type: 'array', items: { type: 'union', refs: [ 'lex:com.atproto.repo.applyWrites#create', 'lex:com.atproto.repo.applyWrites#update', 'lex:com.atproto.repo.applyWrites#delete', ], closed: true, }, }, swapCommit: { type: 'string', format: 'cid', }, }, }, }, errors: [ { name: 'InvalidSwap', }, ], }, create: { type: 'object', description: 'Create a new record.', required: ['collection', 'value'], properties: { collection: { type: 'string', format: 'nsid', }, rkey: { type: 'string', maxLength: 15, }, value: { type: 'unknown', }, }, }, update: { type: 'object', description: 'Update an existing record.', required: ['collection', 'rkey', 'value'], properties: { collection: { type: 'string', format: 'nsid', }, rkey: { type: 'string', }, value: { type: 'unknown', }, }, }, delete: { type: 'object', description: 'Delete an existing record.', required: ['collection', 'rkey'], properties: { collection: { type: 'string', format: 'nsid', }, rkey: { type: 'string', }, }, }, }, }, ComAtprotoRepoCreateRecord: { lexicon: 1, id: 'com.atproto.repo.createRecord', defs: { main: { type: 'procedure', description: 'Create a new record.', input: { encoding: 'application/json', schema: { type: 'object', required: ['repo', 'collection', 'record'], properties: { repo: { type: 'string', format: 'at-identifier', description: 'The handle or DID of the repo.', }, collection: { type: 'string', format: 'nsid', description: 'The NSID of the record collection.', }, rkey: { type: 'string', description: 'The key of the record.', maxLength: 15, }, validate: { type: 'boolean', default: true, description: 'Validate the record?', }, record: { type: 'unknown', description: 'The record to create.', }, swapCommit: { type: 'string', format: 'cid', description: 'Compare and swap with the previous commit by cid.', }, }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['uri', 'cid'], properties: { uri: { type: 'string', format: 'at-uri', }, cid: { type: 'string', format: 'cid', }, }, }, }, errors: [ { name: 'InvalidSwap', }, ], }, }, }, ComAtprotoRepoDeleteRecord: { lexicon: 1, id: 'com.atproto.repo.deleteRecord', defs: { main: { type: 'procedure', description: "Delete a record, or ensure it doesn't exist.", input: { encoding: 'application/json', schema: { type: 'object', required: ['repo', 'collection', 'rkey'], properties: { repo: { type: 'string', format: 'at-identifier', description: 'The handle or DID of the repo.', }, collection: { type: 'string', format: 'nsid', description: 'The NSID of the record collection.', }, rkey: { type: 'string', description: 'The key of the record.', }, swapRecord: { type: 'string', format: 'cid', description: 'Compare and swap with the previous record by cid.', }, swapCommit: { type: 'string', format: 'cid', description: 'Compare and swap with the previous commit by cid.', }, }, }, }, errors: [ { name: 'InvalidSwap', }, ], }, }, }, ComAtprotoRepoDescribeRepo: { lexicon: 1, id: 'com.atproto.repo.describeRepo', defs: { main: { type: 'query', description: 'Get information about the repo, including the list of collections.', parameters: { type: 'params', required: ['repo'], properties: { repo: { type: 'string', format: 'at-identifier', description: 'The handle or DID of the repo.', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: [ 'handle', 'did', 'didDoc', 'collections', 'handleIsCorrect', ], properties: { handle: { type: 'string', format: 'handle', }, did: { type: 'string', format: 'did', }, didDoc: { type: 'unknown', }, collections: { type: 'array', items: { type: 'string', format: 'nsid', }, }, handleIsCorrect: { type: 'boolean', }, }, }, }, }, }, }, ComAtprotoRepoGetRecord: { lexicon: 1, id: 'com.atproto.repo.getRecord', defs: { main: { type: 'query', description: 'Get a record.', parameters: { type: 'params', required: ['repo', 'collection', 'rkey'], properties: { repo: { type: 'string', format: 'at-identifier', description: 'The handle or DID of the repo.', }, collection: { type: 'string', format: 'nsid', description: 'The NSID of the record collection.', }, rkey: { type: 'string', description: 'The key of the record.', }, cid: { type: 'string', format: 'cid', description: 'The CID of the version of the record. If not specified, then return the most recent version.', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['uri', 'value'], properties: { uri: { type: 'string', format: 'at-uri', }, cid: { type: 'string', format: 'cid', }, value: { type: 'unknown', }, }, }, }, }, }, }, ComAtprotoRepoListRecords: { lexicon: 1, id: 'com.atproto.repo.listRecords', defs: { main: { type: 'query', description: 'List a range of records in a collection.', parameters: { type: 'params', required: ['repo', 'collection'], properties: { repo: { type: 'string', format: 'at-identifier', description: 'The handle or DID of the repo.', }, collection: { type: 'string', format: 'nsid', description: 'The NSID of the record type.', }, limit: { type: 'integer', minimum: 1, maximum: 100, default: 50, description: 'The number of records to return.', }, cursor: { type: 'string', }, rkeyStart: { type: 'string', description: 'DEPRECATED: The lowest sort-ordered rkey to start from (exclusive)', }, rkeyEnd: { type: 'string', description: 'DEPRECATED: The highest sort-ordered rkey to stop at (exclusive)', }, reverse: { type: 'boolean', description: 'Reverse the order of the returned records?', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['records'], properties: { cursor: { type: 'string', }, records: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.repo.listRecords#record', }, }, }, }, }, }, record: { type: 'object', required: ['uri', 'cid', 'value'], properties: { uri: { type: 'string', format: 'at-uri', }, cid: { type: 'string', format: 'cid', }, value: { type: 'unknown', }, }, }, }, }, ComAtprotoRepoPutRecord: { lexicon: 1, id: 'com.atproto.repo.putRecord', defs: { main: { type: 'procedure', description: 'Write a record, creating or updating it as needed.', input: { encoding: 'application/json', schema: { type: 'object', required: ['repo', 'collection', 'rkey', 'record'], nullable: ['swapRecord'], properties: { repo: { type: 'string', format: 'at-identifier', description: 'The handle or DID of the repo.', }, collection: { type: 'string', format: 'nsid', description: 'The NSID of the record collection.', }, rkey: { type: 'string', description: 'The key of the record.', maxLength: 15, }, validate: { type: 'boolean', default: true, description: 'Validate the record?', }, record: { type: 'unknown', description: 'The record to write.', }, swapRecord: { type: 'string', format: 'cid', description: 'Compare and swap with the previous record by cid.', }, swapCommit: { type: 'string', format: 'cid', description: 'Compare and swap with the previous commit by cid.', }, }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['uri', 'cid'], properties: { uri: { type: 'string', format: 'at-uri', }, cid: { type: 'string', format: 'cid', }, }, }, }, errors: [ { name: 'InvalidSwap', }, ], }, }, }, ComAtprotoRepoStrongRef: { lexicon: 1, id: 'com.atproto.repo.strongRef', description: 'A URI with a content-hash fingerprint.', defs: { main: { type: 'object', required: ['uri', 'cid'], properties: { uri: { type: 'string', format: 'at-uri', }, cid: { type: 'string', format: 'cid', }, }, }, }, }, ComAtprotoRepoUploadBlob: { lexicon: 1, id: 'com.atproto.repo.uploadBlob', defs: { main: { type: 'procedure', description: 'Upload a new blob to be added to repo in a later request.', input: { encoding: '*/*', }, output: { encoding: 'application/json', schema: { type: 'object', required: ['blob'], properties: { blob: { type: 'blob', }, }, }, }, }, }, }, ComAtprotoServerConfirmEmail: { lexicon: 1, id: 'com.atproto.server.confirmEmail', defs: { main: { type: 'procedure', description: 'Confirm an email using a token from com.atproto.server.requestEmailConfirmation.', input: { encoding: 'application/json', schema: { type: 'object', required: ['email', 'token'], properties: { email: { type: 'string', }, token: { type: 'string', }, }, }, }, errors: [ { name: 'AccountNotFound', }, { name: 'ExpiredToken', }, { name: 'InvalidToken', }, { name: 'InvalidEmail', }, ], }, }, }, ComAtprotoServerCreateAccount: { lexicon: 1, id: 'com.atproto.server.createAccount', defs: { main: { type: 'procedure', description: 'Create an account.', input: { encoding: 'application/json', schema: { type: 'object', required: ['handle', 'email', 'password'], properties: { email: { type: 'string', }, handle: { type: 'string', format: 'handle', }, did: { type: 'string', format: 'did', }, inviteCode: { type: 'string', }, password: { type: 'string', }, recoveryKey: { type: 'string', }, }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['accessJwt', 'refreshJwt', 'handle', 'did'], properties: { accessJwt: { type: 'string', }, refreshJwt: { type: 'string', }, handle: { type: 'string', format: 'handle', }, did: { type: 'string', format: 'did', }, }, }, }, errors: [ { name: 'InvalidHandle', }, { name: 'InvalidPassword', }, { name: 'InvalidInviteCode', }, { name: 'HandleNotAvailable', }, { name: 'UnsupportedDomain', }, { name: 'UnresolvableDid', }, { name: 'IncompatibleDidDoc', }, ], }, }, }, ComAtprotoServerCreateAppPassword: { lexicon: 1, id: 'com.atproto.server.createAppPassword', defs: { main: { type: 'procedure', description: 'Create an app-specific password.', input: { encoding: 'application/json', schema: { type: 'object', required: ['name'], properties: { name: { type: 'string', }, }, }, }, output: { encoding: 'application/json', schema: { type: 'ref', ref: 'lex:com.atproto.server.createAppPassword#appPassword', }, }, errors: [ { name: 'AccountTakedown', }, ], }, appPassword: { type: 'object', required: ['name', 'password', 'createdAt'], properties: { name: { type: 'string', }, password: { type: 'string', }, createdAt: { type: 'string', format: 'datetime', }, }, }, }, }, ComAtprotoServerCreateInviteCode: { lexicon: 1, id: 'com.atproto.server.createInviteCode', defs: { main: { type: 'procedure', description: 'Create an invite code.', input: { encoding: 'application/json', schema: { type: 'object', required: ['useCount'], properties: { useCount: { type: 'integer', }, forAccount: { type: 'string', format: 'did', }, }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['code'], properties: { code: { type: 'string', }, }, }, }, }, }, }, ComAtprotoServerCreateInviteCodes: { lexicon: 1, id: 'com.atproto.server.createInviteCodes', defs: { main: { type: 'procedure', description: 'Create an invite code.', input: { encoding: 'application/json', schema: { type: 'object', required: ['codeCount', 'useCount'], properties: { codeCount: { type: 'integer', default: 1, }, useCount: { type: 'integer', }, forAccounts: { type: 'array', items: { type: 'string', format: 'did', }, }, }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['codes'], properties: { codes: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.server.createInviteCodes#accountCodes', }, }, }, }, }, }, accountCodes: { type: 'object', required: ['account', 'codes'], properties: { account: { type: 'string', }, codes: { type: 'array', items: { type: 'string', }, }, }, }, }, }, ComAtprotoServerCreateSession: { lexicon: 1, id: 'com.atproto.server.createSession', defs: { main: { type: 'procedure', description: 'Create an authentication session.', input: { encoding: 'application/json', schema: { type: 'object', required: ['identifier', 'password'], properties: { identifier: { type: 'string', description: 'Handle or other identifier supported by the server for the authenticating user.', }, password: { type: 'string', }, }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['accessJwt', 'refreshJwt', 'handle', 'did'], properties: { accessJwt: { type: 'string', }, refreshJwt: { type: 'string', }, handle: { type: 'string', format: 'handle', }, did: { type: 'string', format: 'did', }, email: { type: 'string', }, emailConfirmed: { type: 'boolean', }, }, }, }, errors: [ { name: 'AccountTakedown', }, ], }, }, }, ComAtprotoServerDefs: { lexicon: 1, id: 'com.atproto.server.defs', defs: { inviteCode: { type: 'object', required: [ 'code', 'available', 'disabled', 'forAccount', 'createdBy', 'createdAt', 'uses', ], properties: { code: { type: 'string', }, available: { type: 'integer', }, disabled: { type: 'boolean', }, forAccount: { type: 'string', }, createdBy: { type: 'string', }, createdAt: { type: 'string', format: 'datetime', }, uses: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.server.defs#inviteCodeUse', }, }, }, }, inviteCodeUse: { type: 'object', required: ['usedBy', 'usedAt'], properties: { usedBy: { type: 'string', format: 'did', }, usedAt: { type: 'string', format: 'datetime', }, }, }, }, }, ComAtprotoServerDeleteAccount: { lexicon: 1, id: 'com.atproto.server.deleteAccount', defs: { main: { type: 'procedure', description: 'Delete a user account with a token and password.', input: { encoding: 'application/json', schema: { type: 'object', required: ['did', 'password', 'token'], properties: { did: { type: 'string', format: 'did', }, password: { type: 'string', }, token: { type: 'string', }, }, }, }, errors: [ { name: 'ExpiredToken', }, { name: 'InvalidToken', }, ], }, }, }, ComAtprotoServerDeleteSession: { lexicon: 1, id: 'com.atproto.server.deleteSession', defs: { main: { type: 'procedure', description: 'Delete the current session.', }, }, }, ComAtprotoServerDescribeServer: { lexicon: 1, id: 'com.atproto.server.describeServer', defs: { main: { type: 'query', description: "Get a document describing the service's accounts configuration.", output: { encoding: 'application/json', schema: { type: 'object', required: ['availableUserDomains'], properties: { inviteCodeRequired: { type: 'boolean', }, availableUserDomains: { type: 'array', items: { type: 'string', }, }, links: { type: 'ref', ref: 'lex:com.atproto.server.describeServer#links', }, }, }, }, }, links: { type: 'object', properties: { privacyPolicy: { type: 'string', }, termsOfService: { type: 'string', }, }, }, }, }, ComAtprotoServerGetAccountInviteCodes: { lexicon: 1, id: 'com.atproto.server.getAccountInviteCodes', defs: { main: { type: 'query', description: 'Get all invite codes for a given account', parameters: { type: 'params', properties: { includeUsed: { type: 'boolean', default: true, }, createAvailable: { type: 'boolean', default: true, }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['codes'], properties: { codes: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.server.defs#inviteCode', }, }, }, }, }, errors: [ { name: 'DuplicateCreate', }, ], }, }, }, ComAtprotoServerGetSession: { lexicon: 1, id: 'com.atproto.server.getSession', defs: { main: { type: 'query', description: 'Get information about the current session.', output: { encoding: 'application/json', schema: { type: 'object', required: ['handle', 'did'], properties: { handle: { type: 'string', format: 'handle', }, did: { type: 'string', format: 'did', }, email: { type: 'string', }, emailConfirmed: { type: 'boolean', }, }, }, }, }, }, }, ComAtprotoServerListAppPasswords: { lexicon: 1, id: 'com.atproto.server.listAppPasswords', defs: { main: { type: 'query', description: 'List all app-specific passwords.', output: { encoding: 'application/json', schema: { type: 'object', required: ['passwords'], properties: { passwords: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.server.listAppPasswords#appPassword', }, }, }, }, }, errors: [ { name: 'AccountTakedown', }, ], }, appPassword: { type: 'object', required: ['name', 'createdAt'], properties: { name: { type: 'string', }, createdAt: { type: 'string', format: 'datetime', }, }, }, }, }, ComAtprotoServerRefreshSession: { lexicon: 1, id: 'com.atproto.server.refreshSession', defs: { main: { type: 'procedure', description: 'Refresh an authentication session.', output: { encoding: 'application/json', schema: { type: 'object', required: ['accessJwt', 'refreshJwt', 'handle', 'did'], properties: { accessJwt: { type: 'string', }, refreshJwt: { type: 'string', }, handle: { type: 'string', format: 'handle', }, did: { type: 'string', format: 'did', }, }, }, }, errors: [ { name: 'AccountTakedown', }, ], }, }, }, ComAtprotoServerRequestAccountDelete: { lexicon: 1, id: 'com.atproto.server.requestAccountDelete', defs: { main: { type: 'procedure', description: 'Initiate a user account deletion via email.', }, }, }, ComAtprotoServerRequestEmailConfirmation: { lexicon: 1, id: 'com.atproto.server.requestEmailConfirmation', defs: { main: { type: 'procedure', description: 'Request an email with a code to confirm ownership of email', }, }, }, ComAtprotoServerRequestEmailUpdate: { lexicon: 1, id: 'com.atproto.server.requestEmailUpdate', defs: { main: { type: 'procedure', description: 'Request a token in order to update email.', output: { encoding: 'application/json', schema: { type: 'object', required: ['tokenRequired'], properties: { tokenRequired: { type: 'boolean', }, }, }, }, }, }, }, ComAtprotoServerRequestPasswordReset: { lexicon: 1, id: 'com.atproto.server.requestPasswordReset', defs: { main: { type: 'procedure', description: 'Initiate a user account password reset via email.', input: { encoding: 'application/json', schema: { type: 'object', required: ['email'], properties: { email: { type: 'string', }, }, }, }, }, }, }, ComAtprotoServerResetPassword: { lexicon: 1, id: 'com.atproto.server.resetPassword', defs: { main: { type: 'procedure', description: 'Reset a user account password using a token.', input: { encoding: 'application/json', schema: { type: 'object', required: ['token', 'password'], properties: { token: { type: 'string', }, password: { type: 'string', }, }, }, }, errors: [ { name: 'ExpiredToken', }, { name: 'InvalidToken', }, ], }, }, }, ComAtprotoServerRevokeAppPassword: { lexicon: 1, id: 'com.atproto.server.revokeAppPassword', defs: { main: { type: 'procedure', description: 'Revoke an app-specific password by name.', input: { encoding: 'application/json', schema: { type: 'object', required: ['name'], properties: { name: { type: 'string', }, }, }, }, }, }, }, ComAtprotoServerUpdateEmail: { lexicon: 1, id: 'com.atproto.server.updateEmail', defs: { main: { type: 'procedure', description: "Update an account's email.", input: { encoding: 'application/json', schema: { type: 'object', required: ['email'], properties: { email: { type: 'string', }, token: { type: 'string', description: "Requires a token from com.atproto.sever.requestEmailUpdate if the account's email has been confirmed.", }, }, }, }, errors: [ { name: 'ExpiredToken', }, { name: 'InvalidToken', }, { name: 'TokenRequired', }, ], }, }, }, ComAtprotoSyncGetBlob: { lexicon: 1, id: 'com.atproto.sync.getBlob', defs: { main: { type: 'query', description: 'Get a blob associated with a given repo.', parameters: { type: 'params', required: ['did', 'cid'], properties: { did: { type: 'string', format: 'did', description: 'The DID of the repo.', }, cid: { type: 'string', format: 'cid', description: 'The CID of the blob to fetch', }, }, }, output: { encoding: '*/*', }, }, }, }, ComAtprotoSyncGetBlocks: { lexicon: 1, id: 'com.atproto.sync.getBlocks', defs: { main: { type: 'query', description: 'Gets blocks from a given repo.', parameters: { type: 'params', required: ['did', 'cids'], properties: { did: { type: 'string', format: 'did', description: 'The DID of the repo.', }, cids: { type: 'array', items: { type: 'string', format: 'cid', }, }, }, }, output: { encoding: 'application/vnd.ipld.car', }, }, }, }, ComAtprotoSyncGetCheckout: { lexicon: 1, id: 'com.atproto.sync.getCheckout', defs: { main: { type: 'query', description: 'DEPRECATED - please use com.atproto.sync.getRepo instead', parameters: { type: 'params', required: ['did'], properties: { did: { type: 'string', format: 'did', description: 'The DID of the repo.', }, }, }, output: { encoding: 'application/vnd.ipld.car', }, }, }, }, ComAtprotoSyncGetHead: { lexicon: 1, id: 'com.atproto.sync.getHead', defs: { main: { type: 'query', description: 'DEPRECATED - please use com.atproto.sync.getLatestCommit instead', parameters: { type: 'params', required: ['did'], properties: { did: { type: 'string', format: 'did', description: 'The DID of the repo.', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['root'], properties: { root: { type: 'string', format: 'cid', }, }, }, }, errors: [ { name: 'HeadNotFound', }, ], }, }, }, ComAtprotoSyncGetLatestCommit: { lexicon: 1, id: 'com.atproto.sync.getLatestCommit', defs: { main: { type: 'query', description: 'Gets the current commit CID & revision of the repo.', parameters: { type: 'params', required: ['did'], properties: { did: { type: 'string', format: 'did', description: 'The DID of the repo.', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['cid', 'rev'], properties: { cid: { type: 'string', format: 'cid', }, rev: { type: 'string', }, }, }, }, errors: [ { name: 'RepoNotFound', }, ], }, }, }, ComAtprotoSyncGetRecord: { lexicon: 1, id: 'com.atproto.sync.getRecord', defs: { main: { type: 'query', description: 'Gets blocks needed for existence or non-existence of record.', parameters: { type: 'params', required: ['did', 'collection', 'rkey'], properties: { did: { type: 'string', format: 'did', description: 'The DID of the repo.', }, collection: { type: 'string', format: 'nsid', }, rkey: { type: 'string', }, commit: { type: 'string', format: 'cid', description: 'An optional past commit CID.', }, }, }, output: { encoding: 'application/vnd.ipld.car', }, }, }, }, ComAtprotoSyncGetRepo: { lexicon: 1, id: 'com.atproto.sync.getRepo', defs: { main: { type: 'query', description: "Gets the did's repo, optionally catching up from a specific revision.", parameters: { type: 'params', required: ['did'], properties: { did: { type: 'string', format: 'did', description: 'The DID of the repo.', }, since: { type: 'string', description: 'The revision of the repo to catch up from.', }, }, }, output: { encoding: 'application/vnd.ipld.car', }, }, }, }, ComAtprotoSyncListBlobs: { lexicon: 1, id: 'com.atproto.sync.listBlobs', defs: { main: { type: 'query', description: 'List blob cids since some revision', parameters: { type: 'params', required: ['did'], properties: { did: { type: 'string', format: 'did', description: 'The DID of the repo.', }, since: { type: 'string', description: 'Optional revision of the repo to list blobs since', }, limit: { type: 'integer', minimum: 1, maximum: 1000, default: 500, }, cursor: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['cids'], properties: { cursor: { type: 'string', }, cids: { type: 'array', items: { type: 'string', format: 'cid', }, }, }, }, }, }, }, }, ComAtprotoSyncListRepos: { lexicon: 1, id: 'com.atproto.sync.listRepos', defs: { main: { type: 'query', description: 'List dids and root cids of hosted repos', parameters: { type: 'params', properties: { limit: { type: 'integer', minimum: 1, maximum: 1000, default: 500, }, cursor: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['repos'], properties: { cursor: { type: 'string', }, repos: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.sync.listRepos#repo', }, }, }, }, }, }, repo: { type: 'object', required: ['did', 'head', 'rev'], properties: { did: { type: 'string', format: 'did', }, head: { type: 'string', format: 'cid', }, rev: { type: 'string', }, }, }, }, }, ComAtprotoSyncNotifyOfUpdate: { lexicon: 1, id: 'com.atproto.sync.notifyOfUpdate', defs: { main: { type: 'procedure', description: 'Notify a crawling service of a recent update. Often when a long break between updates causes the connection with the crawling service to break.', input: { encoding: 'application/json', schema: { type: 'object', required: ['hostname'], properties: { hostname: { type: 'string', description: 'Hostname of the service that is notifying of update.', }, }, }, }, }, }, }, ComAtprotoSyncRequestCrawl: { lexicon: 1, id: 'com.atproto.sync.requestCrawl', defs: { main: { type: 'procedure', description: 'Request a service to persistently crawl hosted repos.', input: { encoding: 'application/json', schema: { type: 'object', required: ['hostname'], properties: { hostname: { type: 'string', description: 'Hostname of the service that is requesting to be crawled.', }, }, }, }, }, }, }, ComAtprotoSyncSubscribeRepos: { lexicon: 1, id: 'com.atproto.sync.subscribeRepos', defs: { main: { type: 'subscription', description: 'Subscribe to repo updates', parameters: { type: 'params', properties: { cursor: { type: 'integer', description: 'The last known event to backfill from.', }, }, }, message: { schema: { type: 'union', refs: [ 'lex:com.atproto.sync.subscribeRepos#commit', 'lex:com.atproto.sync.subscribeRepos#handle', 'lex:com.atproto.sync.subscribeRepos#migrate', 'lex:com.atproto.sync.subscribeRepos#tombstone', 'lex:com.atproto.sync.subscribeRepos#info', ], }, }, errors: [ { name: 'FutureCursor', }, { name: 'ConsumerTooSlow', }, ], }, commit: { type: 'object', required: [ 'seq', 'rebase', 'tooBig', 'repo', 'commit', 'rev', 'since', 'blocks', 'ops', 'blobs', 'time', ], nullable: ['prev', 'since'], properties: { seq: { type: 'integer', }, rebase: { type: 'boolean', }, tooBig: { type: 'boolean', }, repo: { type: 'string', format: 'did', }, commit: { type: 'cid-link', }, prev: { type: 'cid-link', }, rev: { type: 'string', description: 'The rev of the emitted commit', }, since: { type: 'string', description: 'The rev of the last emitted commit from this repo', }, blocks: { type: 'bytes', description: 'CAR file containing relevant blocks', maxLength: 1000000, }, ops: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.sync.subscribeRepos#repoOp', }, maxLength: 200, }, blobs: { type: 'array', items: { type: 'cid-link', }, }, time: { type: 'string', format: 'datetime', }, }, }, handle: { type: 'object', required: ['seq', 'did', 'handle', 'time'], properties: { seq: { type: 'integer', }, did: { type: 'string', format: 'did', }, handle: { type: 'string', format: 'handle', }, time: { type: 'string', format: 'datetime', }, }, }, migrate: { type: 'object', required: ['seq', 'did', 'migrateTo', 'time'], nullable: ['migrateTo'], properties: { seq: { type: 'integer', }, did: { type: 'string', format: 'did', }, migrateTo: { type: 'string', }, time: { type: 'string', format: 'datetime', }, }, }, tombstone: { type: 'object', required: ['seq', 'did', 'time'], properties: { seq: { type: 'integer', }, did: { type: 'string', format: 'did', }, time: { type: 'string', format: 'datetime', }, }, }, info: { type: 'object', required: ['name'], properties: { name: { type: 'string', knownValues: ['OutdatedCursor'], }, message: { type: 'string', }, }, }, repoOp: { type: 'object', description: "A repo operation, ie a write of a single record. For creates and updates, cid is the record's CID as of this operation. For deletes, it's null.", required: ['action', 'path', 'cid'], nullable: ['cid'], properties: { action: { type: 'string', knownValues: ['create', 'update', 'delete'], }, path: { type: 'string', }, cid: { type: 'cid-link', }, }, }, }, }, AppBskyActorDefs: { lexicon: 1, id: 'app.bsky.actor.defs', description: 'A reference to an actor in the network.', defs: { profileViewBasic: { type: 'object', required: ['did', 'handle'], properties: { did: { type: 'string', format: 'did', }, handle: { type: 'string', format: 'handle', }, displayName: { type: 'string', maxGraphemes: 64, maxLength: 640, }, avatar: { type: 'string', }, viewer: { type: 'ref', ref: 'lex:app.bsky.actor.defs#viewerState', }, labels: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.label.defs#label', }, }, }, }, profileView: { type: 'object', required: ['did', 'handle'], properties: { did: { type: 'string', format: 'did', }, handle: { type: 'string', format: 'handle', }, displayName: { type: 'string', maxGraphemes: 64, maxLength: 640, }, description: { type: 'string', maxGraphemes: 256, maxLength: 2560, }, avatar: { type: 'string', }, indexedAt: { type: 'string', format: 'datetime', }, viewer: { type: 'ref', ref: 'lex:app.bsky.actor.defs#viewerState', }, labels: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.label.defs#label', }, }, }, }, profileViewDetailed: { type: 'object', required: ['did', 'handle'], properties: { did: { type: 'string', format: 'did', }, handle: { type: 'string', format: 'handle', }, displayName: { type: 'string', maxGraphemes: 64, maxLength: 640, }, description: { type: 'string', maxGraphemes: 256, maxLength: 2560, }, avatar: { type: 'string', }, banner: { type: 'string', }, followersCount: { type: 'integer', }, followsCount: { type: 'integer', }, postsCount: { type: 'integer', }, indexedAt: { type: 'string', format: 'datetime', }, viewer: { type: 'ref', ref: 'lex:app.bsky.actor.defs#viewerState', }, labels: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.label.defs#label', }, }, }, }, viewerState: { type: 'object', properties: { muted: { type: 'boolean', }, mutedByList: { type: 'ref', ref: 'lex:app.bsky.graph.defs#listViewBasic', }, blockedBy: { type: 'boolean', }, blocking: { type: 'string', format: 'at-uri', }, following: { type: 'string', format: 'at-uri', }, followedBy: { type: 'string', format: 'at-uri', }, }, }, preferences: { type: 'array', items: { type: 'union', refs: [ 'lex:app.bsky.actor.defs#adultContentPref', 'lex:app.bsky.actor.defs#contentLabelPref', 'lex:app.bsky.actor.defs#savedFeedsPref', 'lex:app.bsky.actor.defs#personalDetailsPref', 'lex:app.bsky.actor.defs#feedViewPref', 'lex:app.bsky.actor.defs#threadViewPref', ], }, }, adultContentPref: { type: 'object', required: ['enabled'], properties: { enabled: { type: 'boolean', default: false, }, }, }, contentLabelPref: { type: 'object', required: ['label', 'visibility'], properties: { label: { type: 'string', }, visibility: { type: 'string', knownValues: ['show', 'warn', 'hide'], }, }, }, savedFeedsPref: { type: 'object', required: ['pinned', 'saved'], properties: { pinned: { type: 'array', items: { type: 'string', format: 'at-uri', }, }, saved: { type: 'array', items: { type: 'string', format: 'at-uri', }, }, }, }, personalDetailsPref: { type: 'object', properties: { birthDate: { type: 'string', format: 'datetime', description: 'The birth date of the owner of the account.', }, }, }, feedViewPref: { type: 'object', required: ['feed'], properties: { feed: { type: 'string', description: 'The URI of the feed, or an identifier which describes the feed.', }, hideReplies: { type: 'boolean', description: 'Hide replies in the feed.', }, hideRepliesByUnfollowed: { type: 'boolean', description: 'Hide replies in the feed if they are not by followed users.', }, hideRepliesByLikeCount: { type: 'integer', description: 'Hide replies in the feed if they do not have this number of likes.', }, hideReposts: { type: 'boolean', description: 'Hide reposts in the feed.', }, hideQuotePosts: { type: 'boolean', description: 'Hide quote posts in the feed.', }, }, }, threadViewPref: { type: 'object', properties: { sort: { type: 'string', description: 'Sorting mode.', knownValues: ['oldest', 'newest', 'most-likes', 'random'], }, prioritizeFollowedUsers: { type: 'boolean', description: 'Show followed users at the top of all replies.', }, }, }, }, }, AppBskyActorGetPreferences: { lexicon: 1, id: 'app.bsky.actor.getPreferences', defs: { main: { type: 'query', description: 'Get private preferences attached to the account.', parameters: { type: 'params', properties: {}, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['preferences'], properties: { preferences: { type: 'ref', ref: 'lex:app.bsky.actor.defs#preferences', }, }, }, }, }, }, }, AppBskyActorGetProfile: { lexicon: 1, id: 'app.bsky.actor.getProfile', defs: { main: { type: 'query', parameters: { type: 'params', required: ['actor'], properties: { actor: { type: 'string', format: 'at-identifier', }, }, }, output: { encoding: 'application/json', schema: { type: 'ref', ref: 'lex:app.bsky.actor.defs#profileViewDetailed', }, }, }, }, }, AppBskyActorGetProfiles: { lexicon: 1, id: 'app.bsky.actor.getProfiles', defs: { main: { type: 'query', parameters: { type: 'params', required: ['actors'], properties: { actors: { type: 'array', items: { type: 'string', format: 'at-identifier', }, maxLength: 25, }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['profiles'], properties: { profiles: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.actor.defs#profileViewDetailed', }, }, }, }, }, }, }, }, AppBskyActorGetSuggestions: { lexicon: 1, id: 'app.bsky.actor.getSuggestions', defs: { main: { type: 'query', description: 'Get a list of actors suggested for following. Used in discovery UIs.', parameters: { type: 'params', properties: { limit: { type: 'integer', minimum: 1, maximum: 100, default: 50, }, cursor: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['actors'], properties: { cursor: { type: 'string', }, actors: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.actor.defs#profileView', }, }, }, }, }, }, }, }, AppBskyActorProfile: { lexicon: 1, id: 'app.bsky.actor.profile', defs: { main: { type: 'record', key: 'literal:self', record: { type: 'object', properties: { displayName: { type: 'string', maxGraphemes: 64, maxLength: 640, }, description: { type: 'string', maxGraphemes: 256, maxLength: 2560, }, avatar: { type: 'blob', accept: ['image/png', 'image/jpeg'], maxSize: 1000000, }, banner: { type: 'blob', accept: ['image/png', 'image/jpeg'], maxSize: 1000000, }, labels: { type: 'union', refs: ['lex:com.atproto.label.defs#selfLabels'], }, }, }, }, }, }, AppBskyActorPutPreferences: { lexicon: 1, id: 'app.bsky.actor.putPreferences', defs: { main: { type: 'procedure', description: 'Sets the private preferences attached to the account.', input: { encoding: 'application/json', schema: { type: 'object', required: ['preferences'], properties: { preferences: { type: 'ref', ref: 'lex:app.bsky.actor.defs#preferences', }, }, }, }, }, }, }, AppBskyActorSearchActors: { lexicon: 1, id: 'app.bsky.actor.searchActors', defs: { main: { type: 'query', description: 'Find actors (profiles) matching search criteria.', parameters: { type: 'params', properties: { term: { type: 'string', description: "DEPRECATED: use 'q' instead", }, q: { type: 'string', description: 'search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended', }, limit: { type: 'integer', minimum: 1, maximum: 100, default: 25, }, cursor: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['actors'], properties: { cursor: { type: 'string', }, actors: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.actor.defs#profileView', }, }, }, }, }, }, }, }, AppBskyActorSearchActorsTypeahead: { lexicon: 1, id: 'app.bsky.actor.searchActorsTypeahead', defs: { main: { type: 'query', description: 'Find actor suggestions for a search term.', parameters: { type: 'params', properties: { term: { type: 'string', description: "DEPRECATED: use 'q' instead", }, q: { type: 'string', description: 'search query prefix; not a full query string', }, limit: { type: 'integer', minimum: 1, maximum: 100, default: 10, }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['actors'], properties: { actors: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.actor.defs#profileViewBasic', }, }, }, }, }, }, }, }, AppBskyEmbedCollectible: { lexicon: 1, id: 'app.bsky.embed.collectible', description: 'A representation of a splx nft collection embedded in another form of content', defs: { main: { type: 'object', required: ['collectible'], properties: { collectible: { type: 'ref', ref: 'lex:app.bsky.embed.collectible#collectible', }, }, }, collectible: { type: 'object', required: ['collUri', 'collCid'], properties: { collUri: { type: 'string', format: 'at-uri', }, collCid: { type: 'string', format: 'cid', }, }, }, view: { type: 'object', required: ['collectible'], properties: { collectible: { type: 'ref', ref: 'lex:app.bsky.embed.collectible#viewCollectible', }, }, }, viewCollectible: { type: 'object', required: [ 'collectibleAttributes', 'collectibleDescription', 'collectibleImageUri', 'collectibleSupply', 'collectibleTitle', 'collectibleWallet', 'collectibleUri', 'collectibleCid', ], properties: { collectibleAttributes: { type: 'string', description: 'Stringified JSON of attributes of the collection', }, collectibleDescription: { type: 'string', }, collectibleImageUri: { type: 'string', }, collectiblePrice: { type: 'integer', }, collectibleCurrency: { type: 'string', }, collectibleSupply: { type: 'integer', }, collectibleTitle: { type: 'string', }, collectibleWallet: { type: 'string', }, collectibleUri: { type: 'string', }, collectibleCid: { type: 'string', }, collectibleCreator: { type: 'string', }, collectibleCreatedAt: { type: 'string', format: 'datetime', }, collectibleIndexedAt: { type: 'string', format: 'datetime', }, collectibleSortAt: { type: 'string', format: 'datetime', }, collectibleCollectionId: { type: 'string', }, collectibleProjectId: { type: 'integer', }, collectibleAnimationUrl: { type: 'string', }, pecUri: { type: 'string', }, pecCid: { type: 'string', }, aggUpdatedAt: { type: 'string', format: 'datetime', }, aggMinted: { type: 'integer', }, aggPending: { type: 'integer', }, }, }, }, }, AppBskyEmbedExternal: { lexicon: 1, id: 'app.bsky.embed.external', description: 'A representation of some externally linked content, embedded in another form of content', defs: { main: { type: 'object', required: ['external'], properties: { external: { type: 'ref', ref: 'lex:app.bsky.embed.external#external', }, }, }, external: { type: 'object', required: ['uri', 'title', 'description'], properties: { uri: { type: 'string', format: 'uri', }, title: { type: 'string', }, description: { type: 'string', }, thumb: { type: 'blob', accept: ['image/*'], maxSize: 1000000, }, }, }, view: { type: 'object', required: ['external'], properties: { external: { type: 'ref', ref: 'lex:app.bsky.embed.external#viewExternal', }, }, }, viewExternal: { type: 'object', required: ['uri', 'title', 'description'], properties: { uri: { type: 'string', format: 'uri', }, title: { type: 'string', }, description: { type: 'string', }, thumb: { type: 'string', }, }, }, }, }, AppBskyEmbedFrame: { lexicon: 1, id: 'app.bsky.embed.frame', description: 'frame tbd', defs: { main: { type: 'object', required: ['frame'], properties: { frame: { type: 'ref', ref: 'lex:app.bsky.embed.frame#frame', }, }, }, frame: { type: 'object', required: ['uri', 'title'], properties: { uri: { type: 'string', format: 'uri', }, title: { type: 'string', }, description: { type: 'string', }, image: { type: 'string', }, buttons: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.embed.frame#frameButtonMetadata', }, }, input: { type: 'ref', ref: 'lex:app.bsky.embed.frame#frameInputMetadata', }, post_url: { type: 'string', format: 'uri', }, refresh_period: { type: 'integer', }, version: { type: 'string', }, }, }, frameButtonMetadata: { type: 'object', required: ['label'], properties: { label: { type: 'string', }, action: { type: 'string', enum: ['post', 'post_redirect', 'txn', 'link', 'share'], }, index: { type: 'integer', }, post_url: { type: 'string', }, text: { type: 'string', }, }, }, frameInputMetadata: { type: 'object', required: ['text'], properties: { text: { type: 'string', }, }, }, view: { type: 'object', required: ['frame'], properties: { frame: { type: 'ref', ref: 'lex:app.bsky.embed.frame#viewFrame', }, }, }, viewFrame: { type: 'object', required: ['uri', 'title', 'description'], properties: { uri: { type: 'string', format: 'uri', }, title: { type: 'string', }, description: { type: 'string', }, image: { type: 'string', }, buttons: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.embed.frame#viewFrameButtonMetadata', }, }, input: { type: 'ref', ref: 'lex:app.bsky.embed.frame#viewFrameInputMetadata', }, post_url: { type: 'string', format: 'uri', }, refresh_period: { type: 'integer', }, version: { type: 'string', }, }, }, viewFrameButtonMetadata: { type: 'object', required: ['label'], properties: { label: { type: 'string', }, action: { type: 'string', enum: ['post', 'post_redirect', 'txn', 'link', 'share'], }, index: { type: 'integer', }, post_url: { type: 'string', }, text: { type: 'string', }, }, }, viewFrameInputMetadata: { type: 'object', required: ['text'], properties: { text: { type: 'string', }, }, }, }, }, AppBskyEmbedImages: { lexicon: 1, id: 'app.bsky.embed.images', description: 'A set of images embedded in some other form of content', defs: { main: { type: 'object', required: ['images'], properties: { images: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.embed.images#image', }, maxLength: 4, }, }, }, image: { type: 'object', required: ['image', 'alt'], properties: { image: { type: 'blob', accept: ['image/*'], maxSize: 1000000, }, alt: { type: 'string', }, aspectRatio: { type: 'ref', ref: 'lex:app.bsky.embed.images#aspectRatio', }, }, }, aspectRatio: { type: 'object', description: 'width:height represents an aspect ratio. It may be approximate, and may not correspond to absolute dimensions in any given unit.', required: ['width', 'height'], properties: { width: { type: 'integer', minimum: 1, }, height: { type: 'integer', minimum: 1, }, }, }, view: { type: 'object', required: ['images'], properties: { images: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.embed.images#viewImage', }, maxLength: 4, }, }, }, viewImage: { type: 'object', required: ['thumb', 'fullsize', 'alt'], properties: { thumb: { type: 'string', }, fullsize: { type: 'string', }, alt: { type: 'string', }, aspectRatio: { type: 'ref', ref: 'lex:app.bsky.embed.images#aspectRatio', }, }, }, }, }, AppBskyEmbedNft: { lexicon: 1, id: 'app.bsky.embed.nft', description: 'A representation of a Non-Fungible Token (NFT) embedded in another form of content', defs: { main: { type: 'object', required: ['nft'], properties: { nft: { type: 'ref', ref: 'lex:app.bsky.embed.nft#nft', }, }, }, nft: { type: 'object', required: ['name', 'description', 'image', 'mintId'], properties: { name: { type: 'string', }, description: { type: 'string', }, image: { type: 'blob', accept: ['image/*'], maxSize: 1000000, }, mintId: { type: 'string', }, aspectRatio: { type: 'ref', ref: 'lex:app.bsky.embed.nft#aspectRatio', }, }, }, aspectRatio: { type: 'object', description: 'width:height represents an aspect ratio. It may be approximate, and may not correspond to absolute dimensions in any given unit.', required: ['width', 'height'], properties: { width: { type: 'integer', minimum: 1, }, height: { type: 'integer', minimum: 1, }, }, }, view: { type: 'object', required: ['nft'], properties: { nft: { type: 'ref', ref: 'lex:app.bsky.embed.nft#viewNft', }, }, }, viewNft: { type: 'object', required: ['name', 'description', 'image', 'mintId'], properties: { name: { type: 'string', }, description: { type: 'string', }, image: { type: 'string', }, mintId: { type: 'string', }, }, }, }, }, AppBskyEmbedRecord: { lexicon: 1, id: 'app.bsky.embed.record', description: 'A representation of a record embedded in another form of content', defs: { main: { type: 'object', required: ['record'], properties: { record: { type: 'ref', ref: 'lex:com.atproto.repo.strongRef', }, }, }, view: { type: 'object', required: ['record'], properties: { record: { type: 'union', refs: [ 'lex:app.bsky.embed.record#viewRecord', 'lex:app.bsky.embed.record#viewNotFound', 'lex:app.bsky.embed.record#viewBlocked', 'lex:app.bsky.feed.defs#generatorView', 'lex:app.bsky.graph.defs#listView', ], }, }, }, viewRecord: { type: 'object', required: ['uri', 'cid', 'author', 'value', 'indexedAt'], properties: { uri: { type: 'string', format: 'at-uri', }, cid: { type: 'string', format: 'cid', }, author: { type: 'ref', ref: 'lex:app.bsky.actor.defs#profileViewBasic', }, value: { type: 'unknown', }, labels: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.label.defs#label', }, }, embeds: { type: 'array', items: { type: 'union', refs: [ 'lex:app.bsky.embed.images#view', 'lex:app.bsky.embed.videos#view', 'lex:app.bsky.embed.external#view', 'lex:app.bsky.embed.record#view', 'lex:app.bsky.embed.recordWithMedia#view', 'lex:app.bsky.embed.nft#view', 'lex:app.bsky.embed.collectible#view', 'lex:app.bsky.embed.frame#view', ], }, }, indexedAt: { type: 'string', format: 'datetime', }, }, }, viewNotFound: { type: 'object', required: ['uri', 'notFound'], properties: { uri: { type: 'string', format: 'at-uri', }, notFound: { type: 'boolean', const: true, }, }, }, viewBlocked: { type: 'object', required: ['uri', 'blocked', 'author'], properties: { uri: { type: 'string', format: 'at-uri', }, blocked: { type: 'boolean', const: true, }, author: { type: 'ref', ref: 'lex:app.bsky.feed.defs#blockedAuthor', }, }, }, }, }, AppBskyEmbedRecordWithMedia: { lexicon: 1, id: 'app.bsky.embed.recordWithMedia', description: 'A representation of a record embedded in another form of content, alongside other compatible embeds', defs: { main: { type: 'object', required: ['record', 'media'], properties: { record: { type: 'ref', ref: 'lex:app.bsky.embed.record', }, media: { type: 'union', refs: [ 'lex:app.bsky.embed.images', 'lex:app.bsky.embed.videos', 'lex:app.bsky.embed.external', 'lex:app.bsky.embed.nft', 'lex:app.bsky.embed.collectible', 'lex:app.bsky.embed.frame', ], }, }, }, view: { type: 'object', required: ['record', 'media'], properties: { record: { type: 'ref', ref: 'lex:app.bsky.embed.record#view', }, media: { type: 'union', refs: [ 'lex:app.bsky.embed.images#view', 'lex:app.bsky.embed.videos#view', 'lex:app.bsky.embed.external#view', 'lex:app.bsky.embed.nft#view', 'lex:app.bsky.embed.collectible#view', 'lex:app.bsky.embed.frame#view', ], }, }, }, }, }, AppBskyEmbedVideos: { lexicon: 1, id: 'app.bsky.embed.videos', description: 'A n array of videos embedded in some other form of content, stored on IPFS or Arweave.', defs: { main: { type: 'object', required: ['videos'], properties: { videos: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.embed.videos#video', }, maxLength: 1, }, }, }, video: { type: 'object', required: ['uri', 'alt'], properties: { uri: { type: 'string', format: 'uri', description: "The URI pointing to the video's location on IPFS or Arweave", }, alt: { type: 'string', }, duration: { type: 'integer', minimum: 1, description: 'Duration of the video in seconds', }, aspectRatio: { type: 'ref', ref: 'lex:app.bsky.embed.videos#aspectRatio', }, }, }, aspectRatio: { type: 'object', description: 'width:height represents an aspect ratio. It may be approximate, and may not correspond to absolute dimensions in any given unit.', required: ['width', 'height'], properties: { width: { type: 'integer', minimum: 1, }, height: { type: 'integer', minimum: 1, }, }, }, view: { type: 'object', required: ['videos'], properties: { videos: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.embed.videos#viewVideo', }, maxLength: 1, }, }, }, viewVideo: { type: 'object', required: ['uri'], properties: { uri: { type: 'string', format: 'uri', description: "The URI pointing to the video's location on IPFS or Arweave", }, alt: { type: 'string', }, duration: { type: 'integer', minimum: 1, description: 'Duration of the video in seconds', }, aspectRatio: { type: 'ref', ref: 'lex:app.bsky.embed.videos#aspectRatio', }, }, }, }, }, AppBskyFeedDefs: { lexicon: 1, id: 'app.bsky.feed.defs', defs: { postView: { type: 'object', required: ['uri', 'cid', 'author', 'record', 'indexedAt'], properties: { uri: { type: 'string', format: 'at-uri', }, cid: { type: 'string', format: 'cid', }, author: { type: 'ref', ref: 'lex:app.bsky.actor.defs#profileViewBasic', }, record: { type: 'unknown', }, embed: { type: 'union', refs: [ 'lex:app.bsky.embed.images#view', 'lex:app.bsky.embed.videos#view', 'lex:app.bsky.embed.nft#view', 'lex:app.bsky.embed.collectible#view', 'lex:app.bsky.embed.frame#view', 'lex:app.bsky.embed.external#view', 'lex:app.bsky.embed.record#view', 'lex:app.bsky.embed.recordWithMedia#view', ], }, replyCount: { type: 'integer', }, repostCount: { type: 'integer', }, likeCount: { type: 'integer', }, indexedAt: { type: 'string', format: 'datetime', }, viewer: { type: 'ref', ref: 'lex:app.bsky.feed.defs#viewerState', }, labels: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.label.defs#label', }, }, threadgate: { type: 'ref', ref: 'lex:app.bsky.feed.defs#threadgateView', }, }, }, viewerState: { type: 'object', properties: { repost: { type: 'string', format: 'at-uri', }, like: { type: 'string', format: 'at-uri', }, }, }, feedViewPost: { type: 'object', required: ['post'], properties: { post: { type: 'ref', ref: 'lex:app.bsky.feed.defs#postView', }, reply: { type: 'ref', ref: 'lex:app.bsky.feed.defs#replyRef', }, reason: { type: 'union', refs: ['lex:app.bsky.feed.defs#reasonRepost'], }, }, }, replyRef: { type: 'object', required: ['root', 'parent'], properties: { root: { type: 'union', refs: [ 'lex:app.bsky.feed.defs#postView', 'lex:app.bsky.feed.defs#notFoundPost', 'lex:app.bsky.feed.defs#blockedPost', ], }, parent: { type: 'union', refs: [ 'lex:app.bsky.feed.defs#postView', 'lex:app.bsky.feed.defs#notFoundPost', 'lex:app.bsky.feed.defs#blockedPost', ], }, }, }, reasonRepost: { type: 'object', required: ['by', 'indexedAt'], properties: { by: { type: 'ref', ref: 'lex:app.bsky.actor.defs#profileViewBasic', }, indexedAt: { type: 'string', format: 'datetime', }, }, }, threadViewPost: { type: 'object', required: ['post'], properties: { post: { type: 'ref', ref: 'lex:app.bsky.feed.defs#postView', }, parent: { type: 'union', refs: [ 'lex:app.bsky.feed.defs#threadViewPost', 'lex:app.bsky.feed.defs#notFoundPost', 'lex:app.bsky.feed.defs#blockedPost', ], }, replies: { type: 'array', items: { type: 'union', refs: [ 'lex:app.bsky.feed.defs#threadViewPost', 'lex:app.bsky.feed.defs#notFoundPost', 'lex:app.bsky.feed.defs#blockedPost', ], }, }, viewer: { type: 'ref', ref: 'lex:app.bsky.feed.defs#viewerThreadState', }, }, }, notFoundPost: { type: 'object', required: ['uri', 'notFound'], properties: { uri: { type: 'string', format: 'at-uri', }, notFound: { type: 'boolean', const: true, }, }, }, blockedPost: { type: 'object', required: ['uri', 'blocked', 'author'], properties: { uri: { type: 'string', format: 'at-uri', }, blocked: { type: 'boolean', const: true, }, author: { type: 'ref', ref: 'lex:app.bsky.feed.defs#blockedAuthor', }, }, }, blockedAuthor: { type: 'object', required: ['did'], properties: { did: { type: 'string', format: 'did', }, viewer: { type: 'ref', ref: 'lex:app.bsky.actor.defs#viewerState', }, }, }, viewerThreadState: { type: 'object', properties: { canReply: { type: 'boolean', }, }, }, generatorView: { type: 'object', required: ['uri', 'cid', 'did', 'creator', 'displayName', 'indexedAt'], properties: { uri: { type: 'string', format: 'at-uri', }, cid: { type: 'string', format: 'cid', }, did: { type: 'string', format: 'did', }, creator: { type: 'ref', ref: 'lex:app.bsky.actor.defs#profileView', }, displayName: { type: 'string', }, description: { type: 'string', maxGraphemes: 300, maxLength: 3000, }, descriptionFacets: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.richtext.facet', }, }, avatar: { type: 'string', }, likeCount: { type: 'integer', minimum: 0, }, viewer: { type: 'ref', ref: 'lex:app.bsky.feed.defs#generatorViewerState', }, indexedAt: { type: 'string', format: 'datetime', }, }, }, generatorViewerState: { type: 'object', properties: { like: { type: 'string', format: 'at-uri', }, }, }, skeletonFeedPost: { type: 'object', required: ['post'], properties: { post: { type: 'string', format: 'at-uri', }, reason: { type: 'union', refs: ['lex:app.bsky.feed.defs#skeletonReasonRepost'], }, }, }, skeletonReasonRepost: { type: 'object', required: ['repost'], properties: { repost: { type: 'string', format: 'at-uri', }, }, }, threadgateView: { type: 'object', properties: { uri: { type: 'string', format: 'at-uri', }, cid: { type: 'string', format: 'cid', }, record: { type: 'unknown', }, lists: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.graph.defs#listViewBasic', }, }, }, }, }, }, AppBskyFeedDescribeFeedGenerator: { lexicon: 1, id: 'app.bsky.feed.describeFeedGenerator', defs: { main: { type: 'query', description: 'Returns information about a given feed generator including TOS & offered feed URIs', output: { encoding: 'application/json', schema: { type: 'object', required: ['did', 'feeds'], properties: { did: { type: 'string', format: 'did', }, feeds: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.feed.describeFeedGenerator#feed', }, }, links: { type: 'ref', ref: 'lex:app.bsky.feed.describeFeedGenerator#links', }, }, }, }, }, feed: { type: 'object', required: ['uri'], properties: { uri: { type: 'string', format: 'at-uri', }, }, }, links: { type: 'object', properties: { privacyPolicy: { type: 'string', }, termsOfService: { type: 'string', }, }, }, }, }, AppBskyFeedGenerator: { lexicon: 1, id: 'app.bsky.feed.generator', defs: { main: { type: 'record', description: 'A declaration of the existence of a feed generator', key: 'any', record: { type: 'object', required: ['did', 'displayName', 'createdAt'], properties: { did: { type: 'string', format: 'did', }, displayName: { type: 'string', maxGraphemes: 24, maxLength: 240, }, description: { type: 'string', maxGraphemes: 300, maxLength: 3000, }, descriptionFacets: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.richtext.facet', }, }, avatar: { type: 'blob', accept: ['image/png', 'image/jpeg'], maxSize: 1000000, }, labels: { type: 'union', refs: ['lex:com.atproto.label.defs#selfLabels'], }, createdAt: { type: 'string', format: 'datetime', }, }, }, }, }, }, AppBskyFeedGetActorFeeds: { lexicon: 1, id: 'app.bsky.feed.getActorFeeds', defs: { main: { type: 'query', description: 'Retrieve a list of feeds created by a given actor', parameters: { type: 'params', required: ['actor'], properties: { actor: { type: 'string', format: 'at-identifier', }, limit: { type: 'integer', minimum: 1, maximum: 100, default: 50, }, cursor: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['feeds'], properties: { cursor: { type: 'string', }, feeds: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.feed.defs#generatorView', }, }, }, }, }, }, }, }, AppBskyFeedGetActorLikes: { lexicon: 1, id: 'app.bsky.feed.getActorLikes', defs: { main: { type: 'query', description: 'A view of the posts liked by an actor.', parameters: { type: 'params', required: ['actor'], properties: { actor: { type: 'string', format: 'at-identifier', }, limit: { type: 'integer', minimum: 1, maximum: 100, default: 50, }, cursor: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['feed'], properties: { cursor: { type: 'string', }, feed: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.feed.defs#feedViewPost', }, }, }, }, }, errors: [ { name: 'BlockedActor', }, { name: 'BlockedByActor', }, ], }, }, }, AppBskyFeedGetAuthorFeed: { lexicon: 1, id: 'app.bsky.feed.getAuthorFeed', defs: { main: { type: 'query', description: "A view of an actor's feed.", parameters: { type: 'params', required: ['actor'], properties: { actor: { type: 'string', format: 'at-identifier', }, limit: { type: 'integer', minimum: 1, maximum: 100, default: 50, }, cursor: { type: 'string', }, filter: { type: 'string', knownValues: [ 'posts_with_replies', 'posts_no_replies', 'posts_with_media', ], default: 'posts_with_replies', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['feed'], properties: { cursor: { type: 'string', }, feed: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.feed.defs#feedViewPost', }, }, }, }, }, errors: [ { name: 'BlockedActor', }, { name: 'BlockedByActor', }, ], }, }, }, AppBskyFeedGetFeed: { lexicon: 1, id: 'app.bsky.feed.getFeed', defs: { main: { type: 'query', description: "Compose and hydrate a feed from a user's selected feed generator", parameters: { type: 'params', required: ['feed'], properties: { feed: { type: 'string', format: 'at-uri', }, limit: { type: 'integer', minimum: 1, maximum: 100, default: 50, }, cursor: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['feed'], properties: { cursor: { type: 'string', }, feed: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.feed.defs#feedViewPost', }, }, }, }, }, errors: [ { name: 'UnknownFeed', }, ], }, }, }, AppBskyFeedGetFeedGenerator: { lexicon: 1, id: 'app.bsky.feed.getFeedGenerator', defs: { main: { type: 'query', description: 'Get information about a specific feed offered by a feed generator, such as its online status', parameters: { type: 'params', required: ['feed'], properties: { feed: { type: 'string', format: 'at-uri', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['view', 'isOnline', 'isValid'], properties: { view: { type: 'ref', ref: 'lex:app.bsky.feed.defs#generatorView', }, isOnline: { type: 'boolean', }, isValid: { type: 'boolean', }, }, }, }, }, }, }, AppBskyFeedGetFeedGenerators: { lexicon: 1, id: 'app.bsky.feed.getFeedGenerators', defs: { main: { type: 'query', description: 'Get information about a list of feed generators', parameters: { type: 'params', required: ['feeds'], properties: { feeds: { type: 'array', items: { type: 'string', format: 'at-uri', }, }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['feeds'], properties: { feeds: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.feed.defs#generatorView', }, }, }, }, }, }, }, }, AppBskyFeedGetFeedSkeleton: { lexicon: 1, id: 'app.bsky.feed.getFeedSkeleton', defs: { main: { type: 'query', description: 'A skeleton of a feed provided by a feed generator', parameters: { type: 'params', required: ['feed'], properties: { feed: { type: 'string', format: 'at-uri', }, limit: { type: 'integer', minimum: 1, maximum: 100, default: 50, }, cursor: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['feed'], properties: { cursor: { type: 'string', }, feed: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.feed.defs#skeletonFeedPost', }, }, }, }, }, errors: [ { name: 'UnknownFeed', }, ], }, }, }, AppBskyFeedGetLikes: { lexicon: 1, id: 'app.bsky.feed.getLikes', defs: { main: { type: 'query', parameters: { type: 'params', required: ['uri'], properties: { uri: { type: 'string', format: 'at-uri', }, cid: { type: 'string', format: 'cid', }, limit: { type: 'integer', minimum: 1, maximum: 100, default: 50, }, cursor: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['uri', 'likes'], properties: { uri: { type: 'string', format: 'at-uri', }, cid: { type: 'string', format: 'cid', }, cursor: { type: 'string', }, likes: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.feed.getLikes#like', }, }, }, }, }, }, like: { type: 'object', required: ['indexedAt', 'createdAt', 'actor'], properties: { indexedAt: { type: 'string', format: 'datetime', }, createdAt: { type: 'string', format: 'datetime', }, actor: { type: 'ref', ref: 'lex:app.bsky.actor.defs#profileView', }, }, }, }, }, AppBskyFeedGetListFeed: { lexicon: 1, id: 'app.bsky.feed.getListFeed', defs: { main: { type: 'query', description: 'A view of a recent posts from actors in a list', parameters: { type: 'params', required: ['list'], properties: { list: { type: 'string', format: 'at-uri', }, limit: { type: 'integer', minimum: 1, maximum: 100, default: 50, }, cursor: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['feed'], properties: { cursor: { type: 'string', }, feed: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.feed.defs#feedViewPost', }, }, }, }, }, errors: [ { name: 'UnknownList', }, ], }, }, }, AppBskyFeedGetPostThread: { lexicon: 1, id: 'app.bsky.feed.getPostThread', defs: { main: { type: 'query', parameters: { type: 'params', required: ['uri'], properties: { uri: { type: 'string', format: 'at-uri', }, depth: { type: 'integer', default: 6, minimum: 0, maximum: 1000, }, parentHeight: { type: 'integer', default: 80, minimum: 0, maximum: 1000, }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['thread'], properties: { thread: { type: 'union', refs: [ 'lex:app.bsky.feed.defs#threadViewPost', 'lex:app.bsky.feed.defs#notFoundPost', 'lex:app.bsky.feed.defs#blockedPost', ], }, }, }, }, errors: [ { name: 'NotFound', }, ], }, }, }, AppBskyFeedGetPosts: { lexicon: 1, id: 'app.bsky.feed.getPosts', defs: { main: { type: 'query', description: "A view of an actor's feed.", parameters: { type: 'params', required: ['uris'], properties: { uris: { type: 'array', items: { type: 'string', format: 'at-uri', }, maxLength: 25, }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['posts'], properties: { posts: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.feed.defs#postView', }, }, }, }, }, }, }, }, AppBskyFeedGetRepostedBy: { lexicon: 1, id: 'app.bsky.feed.getRepostedBy', defs: { main: { type: 'query', parameters: { type: 'params', required: ['uri'], properties: { uri: { type: 'string', format: 'at-uri', }, cid: { type: 'string', format: 'cid', }, limit: { type: 'integer', minimum: 1, maximum: 100, default: 50, }, cursor: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['uri', 'repostedBy'], properties: { uri: { type: 'string', format: 'at-uri', }, cid: { type: 'string', format: 'cid', }, cursor: { type: 'string', }, repostedBy: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.actor.defs#profileView', }, }, }, }, }, }, }, }, AppBskyFeedGetSuggestedFeeds: { lexicon: 1, id: 'app.bsky.feed.getSuggestedFeeds', defs: { main: { type: 'query', description: 'Get a list of suggested feeds for the viewer.', parameters: { type: 'params', properties: { limit: { type: 'integer', minimum: 1, maximum: 100, default: 50, }, cursor: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['feeds'], properties: { cursor: { type: 'string', }, feeds: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.feed.defs#generatorView', }, }, }, }, }, }, }, }, AppBskyFeedGetTimeline: { lexicon: 1, id: 'app.bsky.feed.getTimeline', defs: { main: { type: 'query', description: "A view of the user's home timeline.", parameters: { type: 'params', properties: { algorithm: { type: 'string', }, limit: { type: 'integer', minimum: 1, maximum: 100, default: 50, }, cursor: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['feed'], properties: { cursor: { type: 'string', }, feed: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.feed.defs#feedViewPost', }, }, }, }, }, }, }, }, AppBskyFeedLike: { lexicon: 1, id: 'app.bsky.feed.like', defs: { main: { type: 'record', key: 'tid', record: { type: 'object', required: ['subject', 'createdAt'], properties: { subject: { type: 'ref', ref: 'lex:com.atproto.repo.strongRef', }, createdAt: { type: 'string', format: 'datetime', }, }, }, }, }, }, AppBskyFeedPost: { lexicon: 1, id: 'app.bsky.feed.post', defs: { main: { type: 'record', key: 'tid', record: { type: 'object', required: ['text', 'createdAt'], properties: { text: { type: 'string', maxLength: 3000, maxGraphemes: 300, }, entities: { type: 'array', description: 'Deprecated: replaced by app.bsky.richtext.facet.', items: { type: 'ref', ref: 'lex:app.bsky.feed.post#entity', }, }, facets: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.richtext.facet', }, }, reply: { type: 'ref', ref: 'lex:app.bsky.feed.post#replyRef', }, embed: { type: 'union', refs: [ 'lex:app.bsky.embed.images', 'lex:app.bsky.embed.videos', 'lex:app.bsky.embed.external', 'lex:app.bsky.embed.record', 'lex:app.bsky.embed.recordWithMedia', 'lex:app.bsky.embed.nft', 'lex:app.bsky.embed.collectible', 'lex:app.bsky.embed.frame', ], }, langs: { type: 'array', maxLength: 3, items: { type: 'string', format: 'language', }, }, labels: { type: 'union', refs: ['lex:com.atproto.label.defs#selfLabels'], }, tags: { type: 'array', maxLength: 8, items: { type: 'string', maxLength: 640, maxGraphemes: 64, }, description: 'Additional non-inline tags describing this post.', }, createdAt: { type: 'string', format: 'datetime', }, }, }, }, replyRef: { type: 'object', required: ['root', 'parent'], properties: { root: { type: 'ref', ref: 'lex:com.atproto.repo.strongRef', }, parent: { type: 'ref', ref: 'lex:com.atproto.repo.strongRef', }, }, }, entity: { type: 'object', description: 'Deprecated: use facets instead.', required: ['index', 'type', 'value'], properties: { index: { type: 'ref', ref: 'lex:app.bsky.feed.post#textSlice', }, type: { type: 'string', description: "Expected values are 'mention' and 'link'.", }, value: { type: 'string', }, }, }, textSlice: { type: 'object', description: 'Deprecated. Use app.bsky.richtext instead -- A text segment. Start is inclusive, end is exclusive. Indices are for utf16-encoded strings.', required: ['start', 'end'], properties: { start: { type: 'integer', minimum: 0, }, end: { type: 'integer', minimum: 0, }, }, }, }, }, AppBskyFeedRepost: { lexicon: 1, id: 'app.bsky.feed.repost', defs: { main: { type: 'record', key: 'tid', record: { type: 'object', required: ['subject', 'createdAt'], properties: { subject: { type: 'ref', ref: 'lex:com.atproto.repo.strongRef', }, createdAt: { type: 'string', format: 'datetime', }, }, }, }, }, }, AppBskyFeedSearchPosts: { lexicon: 1, id: 'app.bsky.feed.searchPosts', defs: { main: { type: 'query', description: 'Find posts matching search criteria', parameters: { type: 'params', required: ['q'], properties: { q: { type: 'string', description: 'search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended', }, limit: { type: 'integer', minimum: 1, maximum: 100, default: 25, }, cursor: { type: 'string', description: 'optional pagination mechanism; may not necessarily allow scrolling through entire result set', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['posts'], properties: { cursor: { type: 'string', }, hitsTotal: { type: 'integer', description: 'count of search hits. optional, may be rounded/truncated, and may not be possible to paginate through all hits', }, posts: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.feed.defs#postView', }, }, }, }, }, errors: [ { name: 'BadQueryString', }, ], }, }, }, AppBskyFeedThreadgate: { lexicon: 1, id: 'app.bsky.feed.threadgate', defs: { main: { type: 'record', key: 'tid', description: "Defines interaction gating rules for a thread. The rkey of the threadgate record should match the rkey of the thread's root post.", record: { type: 'object', required: ['post', 'createdAt'], properties: { post: { type: 'string', format: 'at-uri', }, allow: { type: 'array', maxLength: 5, items: { type: 'union', refs: [ 'lex:app.bsky.feed.threadgate#mentionRule', 'lex:app.bsky.feed.threadgate#followingRule', 'lex:app.bsky.feed.threadgate#listRule', ], }, }, createdAt: { type: 'string', format: 'datetime', }, }, }, }, mentionRule: { type: 'object', description: 'Allow replies from actors mentioned in your post.', properties: {}, }, followingRule: { type: 'object', description: 'Allow replies from actors you follow.', properties: {}, }, listRule: { type: 'object', description: 'Allow replies from actors on a list.', required: ['list'], properties: { list: { type: 'string', format: 'at-uri', }, }, }, }, }, AppBskyGraphBlock: { lexicon: 1, id: 'app.bsky.graph.block', defs: { main: { type: 'record', description: 'A block.', key: 'tid', record: { type: 'object', required: ['subject', 'createdAt'], properties: { subject: { type: 'string', format: 'did', }, createdAt: { type: 'string', format: 'datetime', }, }, }, }, }, }, AppBskyGraphDefs: { lexicon: 1, id: 'app.bsky.graph.defs', defs: { listViewBasic: { type: 'object', required: ['uri', 'cid', 'name', 'purpose'], properties: { uri: { type: 'string', format: 'at-uri', }, cid: { type: 'string', format: 'cid', }, name: { type: 'string', maxLength: 64, minLength: 1, }, purpose: { type: 'ref', ref: 'lex:app.bsky.graph.defs#listPurpose', }, avatar: { type: 'string', }, viewer: { type: 'ref', ref: 'lex:app.bsky.graph.defs#listViewerState', }, indexedAt: { type: 'string', format: 'datetime', }, }, }, listView: { type: 'object', required: ['uri', 'cid', 'creator', 'name', 'purpose', 'indexedAt'], properties: { uri: { type: 'string', format: 'at-uri', }, cid: { type: 'string', format: 'cid', }, creator: { type: 'ref', ref: 'lex:app.bsky.actor.defs#profileView', }, name: { type: 'string', maxLength: 64, minLength: 1, }, purpose: { type: 'ref', ref: 'lex:app.bsky.graph.defs#listPurpose', }, description: { type: 'string', maxGraphemes: 300, maxLength: 3000, }, descriptionFacets: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.richtext.facet', }, }, avatar: { type: 'string', }, viewer: { type: 'ref', ref: 'lex:app.bsky.graph.defs#listViewerState', }, indexedAt: { type: 'string', format: 'datetime', }, }, }, listItemView: { type: 'object', required: ['subject'], properties: { subject: { type: 'ref', ref: 'lex:app.bsky.actor.defs#profileView', }, }, }, listPurpose: { type: 'string', knownValues: [ 'app.bsky.graph.defs#modlist', 'app.bsky.graph.defs#curatelist', ], }, modlist: { type: 'token', description: 'A list of actors to apply an aggregate moderation action (mute/block) on', }, curatelist: { type: 'token', description: 'A list of actors used for curation purposes such as list feeds or interaction gating', }, listViewerState: { type: 'object', properties: { muted: { type: 'boolean', }, blocked: { type: 'string', format: 'at-uri', }, }, }, }, }, AppBskyGraphFollow: { lexicon: 1, id: 'app.bsky.graph.follow', defs: { main: { type: 'record', description: 'A social follow.', key: 'tid', record: { type: 'object', required: ['subject', 'createdAt'], properties: { subject: { type: 'string', format: 'did', }, createdAt: { type: 'string', format: 'datetime', }, }, }, }, }, }, AppBskyGraphGetBlocks: { lexicon: 1, id: 'app.bsky.graph.getBlocks', defs: { main: { type: 'query', description: "Who is the requester's account blocking?", parameters: { type: 'params', properties: { limit: { type: 'integer', minimum: 1, maximum: 100, default: 50, }, cursor: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['blocks'], properties: { cursor: { type: 'string', }, blocks: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.actor.defs#profileView', }, }, }, }, }, }, }, }, AppBskyGraphGetFollowers: { lexicon: 1, id: 'app.bsky.graph.getFollowers', defs: { main: { type: 'query', description: 'Who is following an actor?', parameters: { type: 'params', required: ['actor'], properties: { actor: { type: 'string', format: 'at-identifier', }, limit: { type: 'integer', minimum: 1, maximum: 100, default: 50, }, cursor: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['subject', 'followers'], properties: { subject: { type: 'ref', ref: 'lex:app.bsky.actor.defs#profileView', }, cursor: { type: 'string', }, followers: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.actor.defs#profileView', }, }, }, }, }, }, }, }, AppBskyGraphGetFollows: { lexicon: 1, id: 'app.bsky.graph.getFollows', defs: { main: { type: 'query', description: 'Who is an actor following?', parameters: { type: 'params', required: ['actor'], properties: { actor: { type: 'string', format: 'at-identifier', }, limit: { type: 'integer', minimum: 1, maximum: 100, default: 50, }, cursor: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['subject', 'follows'], properties: { subject: { type: 'ref', ref: 'lex:app.bsky.actor.defs#profileView', }, cursor: { type: 'string', }, follows: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.actor.defs#profileView', }, }, }, }, }, }, }, }, AppBskyGraphGetList: { lexicon: 1, id: 'app.bsky.graph.getList', defs: { main: { type: 'query', description: 'Fetch a list of actors', parameters: { type: 'params', required: ['list'], properties: { list: { type: 'string', format: 'at-uri', }, limit: { type: 'integer', minimum: 1, maximum: 100, default: 50, }, cursor: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['list', 'items'], properties: { cursor: { type: 'string', }, list: { type: 'ref', ref: 'lex:app.bsky.graph.defs#listView', }, items: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.graph.defs#listItemView', }, }, }, }, }, }, }, }, AppBskyGraphGetListBlocks: { lexicon: 1, id: 'app.bsky.graph.getListBlocks', defs: { main: { type: 'query', description: "Which lists is the requester's account blocking?", parameters: { type: 'params', properties: { limit: { type: 'integer', minimum: 1, maximum: 100, default: 50, }, cursor: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['lists'], properties: { cursor: { type: 'string', }, lists: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.graph.defs#listView', }, }, }, }, }, }, }, }, AppBskyGraphGetListMutes: { lexicon: 1, id: 'app.bsky.graph.getListMutes', defs: { main: { type: 'query', description: "Which lists is the requester's account muting?", parameters: { type: 'params', properties: { limit: { type: 'integer', minimum: 1, maximum: 100, default: 50, }, cursor: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['lists'], properties: { cursor: { type: 'string', }, lists: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.graph.defs#listView', }, }, }, }, }, }, }, }, AppBskyGraphGetLists: { lexicon: 1, id: 'app.bsky.graph.getLists', defs: { main: { type: 'query', description: 'Fetch a list of lists that belong to an actor', parameters: { type: 'params', required: ['actor'], properties: { actor: { type: 'string', format: 'at-identifier', }, limit: { type: 'integer', minimum: 1, maximum: 100, default: 50, }, cursor: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['lists'], properties: { cursor: { type: 'string', }, lists: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.graph.defs#listView', }, }, }, }, }, }, }, }, AppBskyGraphGetMutes: { lexicon: 1, id: 'app.bsky.graph.getMutes', defs: { main: { type: 'query', description: 'Who does the viewer mute?', parameters: { type: 'params', properties: { limit: { type: 'integer', minimum: 1, maximum: 100, default: 50, }, cursor: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['mutes'], properties: { cursor: { type: 'string', }, mutes: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.actor.defs#profileView', }, }, }, }, }, }, }, }, AppBskyGraphGetSuggestedFollowsByActor: { lexicon: 1, id: 'app.bsky.graph.getSuggestedFollowsByActor', defs: { main: { type: 'query', description: 'Get suggested follows related to a given actor.', parameters: { type: 'params', required: ['actor'], properties: { actor: { type: 'string', format: 'at-identifier', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['suggestions'], properties: { suggestions: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.actor.defs#profileView', }, }, }, }, }, }, }, }, AppBskyGraphList: { lexicon: 1, id: 'app.bsky.graph.list', defs: { main: { type: 'record', description: 'A declaration of a list of actors.', key: 'tid', record: { type: 'object', required: ['name', 'purpose', 'createdAt'], properties: { purpose: { type: 'ref', ref: 'lex:app.bsky.graph.defs#listPurpose', }, name: { type: 'string', maxLength: 64, minLength: 1, }, description: { type: 'string', maxGraphemes: 300, maxLength: 3000, }, descriptionFacets: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.richtext.facet', }, }, avatar: { type: 'blob', accept: ['image/png', 'image/jpeg'], maxSize: 1000000, }, labels: { type: 'union', refs: ['lex:com.atproto.label.defs#selfLabels'], }, createdAt: { type: 'string', format: 'datetime', }, }, }, }, }, }, AppBskyGraphListblock: { lexicon: 1, id: 'app.bsky.graph.listblock', defs: { main: { type: 'record', description: 'A block of an entire list of actors.', key: 'tid', record: { type: 'object', required: ['subject', 'createdAt'], properties: { subject: { type: 'string', format: 'at-uri', }, createdAt: { type: 'string', format: 'datetime', }, }, }, }, }, }, AppBskyGraphListitem: { lexicon: 1, id: 'app.bsky.graph.listitem', defs: { main: { type: 'record', description: 'An item under a declared list of actors', key: 'tid', record: { type: 'object', required: ['subject', 'list', 'createdAt'], properties: { subject: { type: 'string', format: 'did', }, list: { type: 'string', format: 'at-uri', }, createdAt: { type: 'string', format: 'datetime', }, }, }, }, }, }, AppBskyGraphMuteActor: { lexicon: 1, id: 'app.bsky.graph.muteActor', defs: { main: { type: 'procedure', description: 'Mute an actor by did or handle.', input: { encoding: 'application/json', schema: { type: 'object', required: ['actor'], properties: { actor: { type: 'string', format: 'at-identifier', }, }, }, }, }, }, }, AppBskyGraphMuteActorList: { lexicon: 1, id: 'app.bsky.graph.muteActorList', defs: { main: { type: 'procedure', description: 'Mute a list of actors.', input: { encoding: 'application/json', schema: { type: 'object', required: ['list'], properties: { list: { type: 'string', format: 'at-uri', }, }, }, }, }, }, }, AppBskyGraphUnmuteActor: { lexicon: 1, id: 'app.bsky.graph.unmuteActor', defs: { main: { type: 'procedure', description: 'Unmute an actor by did or handle.', input: { encoding: 'application/json', schema: { type: 'object', required: ['actor'], properties: { actor: { type: 'string', format: 'at-identifier', }, }, }, }, }, }, }, AppBskyGraphUnmuteActorList: { lexicon: 1, id: 'app.bsky.graph.unmuteActorList', defs: { main: { type: 'procedure', description: 'Unmute a list of actors.', input: { encoding: 'application/json', schema: { type: 'object', required: ['list'], properties: { list: { type: 'string', format: 'at-uri', }, }, }, }, }, }, }, AppBskyNotificationGetUnreadCount: { lexicon: 1, id: 'app.bsky.notification.getUnreadCount', defs: { main: { type: 'query', parameters: { type: 'params', properties: { seenAt: { type: 'string', format: 'datetime', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['count'], properties: { count: { type: 'integer', }, }, }, }, }, }, }, AppBskyNotificationListNotifications: { lexicon: 1, id: 'app.bsky.notification.listNotifications', defs: { main: { type: 'query', parameters: { type: 'params', properties: { limit: { type: 'integer', minimum: 1, maximum: 100, default: 50, }, cursor: { type: 'string', }, seenAt: { type: 'string', format: 'datetime', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['notifications'], properties: { cursor: { type: 'string', }, notifications: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.notification.listNotifications#notification', }, }, }, }, }, }, notification: { type: 'object', required: [ 'uri', 'cid', 'author', 'reason', 'record', 'isRead', 'indexedAt', ], properties: { uri: { type: 'string', format: 'at-uri', }, cid: { type: 'string', format: 'cid', }, author: { type: 'ref', ref: 'lex:app.bsky.actor.defs#profileView', }, reason: { type: 'string', description: "Expected values are 'like', 'repost', 'follow', 'mention', 'reply', and 'quote'.", knownValues: [ 'like', 'repost', 'follow', 'mention', 'reply', 'quote', ], }, reasonSubject: { type: 'string', format: 'at-uri', }, record: { type: 'unknown', }, isRead: { type: 'boolean', }, indexedAt: { type: 'string', format: 'datetime', }, labels: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.label.defs#label', }, }, }, }, }, }, AppBskyNotificationRegisterPush: { lexicon: 1, id: 'app.bsky.notification.registerPush', defs: { main: { type: 'procedure', description: 'Register for push notifications with a service', input: { encoding: 'application/json', schema: { type: 'object', required: ['serviceDid', 'token', 'platform', 'appId'], properties: { serviceDid: { type: 'string', format: 'did', }, token: { type: 'string', }, platform: { type: 'string', knownValues: ['ios', 'android', 'web'], }, appId: { type: 'string', }, }, }, }, }, }, }, AppBskyNotificationUpdateSeen: { lexicon: 1, id: 'app.bsky.notification.updateSeen', defs: { main: { type: 'procedure', description: 'Notify server that the user has seen notifications.', input: { encoding: 'application/json', schema: { type: 'object', required: ['seenAt'], properties: { seenAt: { type: 'string', format: 'datetime', }, }, }, }, }, }, }, AppBskyRichtextFacet: { lexicon: 1, id: 'app.bsky.richtext.facet', defs: { main: { type: 'object', required: ['index', 'features'], properties: { index: { type: 'ref', ref: 'lex:app.bsky.richtext.facet#byteSlice', }, features: { type: 'array', items: { type: 'union', refs: [ 'lex:app.bsky.richtext.facet#mention', 'lex:app.bsky.richtext.facet#link', 'lex:app.bsky.richtext.facet#tag', ], }, }, }, }, mention: { type: 'object', description: 'A facet feature for actor mentions.', required: ['did'], properties: { did: { type: 'string', format: 'did', }, }, }, link: { type: 'object', description: 'A facet feature for links.', required: ['uri'], properties: { uri: { type: 'string', format: 'uri', }, }, }, tag: { type: 'object', description: 'A hashtag.', required: ['tag'], properties: { tag: { type: 'string', maxLength: 640, maxGraphemes: 64, }, }, }, byteSlice: { type: 'object', description: 'A text segment. Start is inclusive, end is exclusive. Indices are for utf8-encoded strings.', required: ['byteStart', 'byteEnd'], properties: { byteStart: { type: 'integer', minimum: 0, }, byteEnd: { type: 'integer', minimum: 0, }, }, }, }, }, AppBskySplxClaim: { lexicon: 1, id: 'app.bsky.splx.claim', defs: { main: { type: 'record', key: 'tid', record: { type: 'object', required: ['actionId', 'collectionId', 'createdAt', 'wallet'], properties: { actionId: { type: 'string', description: 'The actionId from v1', }, collectionId: { type: 'string', }, createdAt: { type: 'string', format: 'datetime', }, paymentId: { type: 'string', description: 'Unique Id for payment if payment was required', }, wallet: { type: 'string', description: 'The wallet address the collectible was sent to', }, subject: { type: 'ref', ref: 'lex:com.atproto.repo.strongRef', }, postSubject: { type: 'ref', ref: 'lex:com.atproto.repo.strongRef', }, }, }, }, }, }, AppBskySplxCollectible: { lexicon: 1, id: 'app.bsky.splx.collectible', description: '', defs: { main: { type: 'record', key: 'tid', record: { type: 'object', required: [ 'attributes', 'description', 'collectionId', 'image', 'imageCid', 'projectId', 'supply', 'title', 'wallet', 'creator', ], properties: { attributes: { type: 'string', description: 'Stringified JSON of attributes of collectible ', }, creator: { type: 'string', }, createdAt: { type: 'string', format: 'datetime', }, updatedAt: { type: 'string', format: 'datetime', }, collectionId: { type: 'string', }, description: { type: 'string', }, image: { type: 'ref', ref: 'lex:app.bsky.splx.collectible#image', }, imageCid: { type: 'string', format: 'cid', }, projectId: { type: 'integer', }, supply: { type: 'integer', }, title: { type: 'string', }, wallet: { type: 'string', }, animationUrl: { type: 'string', }, }, }, }, image: { type: 'object', required: ['image', 'alt'], properties: { image: { type: 'blob', accept: ['image/*'], maxSize: 1000000, }, alt: { type: 'string', }, aspectRatio: { type: 'ref', ref: 'lex:app.bsky.splx.collectible#aspectRatio', }, }, }, aspectRatio: { type: 'object', description: 'width:height represents an aspect ratio. It may be approximate, and may not correspond to absolute dimensions in any given unit.', required: ['width', 'height'], properties: { width: { type: 'integer', minimum: 1, }, height: { type: 'integer', minimum: 1, }, }, }, }, }, AppBskySplxCreateClaim: { lexicon: 1, id: 'app.bsky.splx.createClaim', defs: { main: { type: 'procedure', description: 'Create a claim record (has to hit v1 endpoint).', input: { encoding: 'application/json', schema: { type: 'object', required: ['collectibleUri', 'collectibleCid', 'did', 'wallet'], properties: { collectibleUri: { type: 'string', }, collectibleCid: { type: 'string', }, did: { type: 'string', }, wallet: { type: 'string', description: 'wallet of where collectible is being sent', }, postSubject: { type: 'ref', ref: 'lex:com.atproto.repo.strongRef', }, }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['actionId'], properties: { actionId: { type: 'string', description: 'Action Id for claim', }, collectionId: { type: 'string', description: 'CollectionId from v1', }, }, }, }, }, }, }, AppBskySplxCreateCollectible: { lexicon: 1, id: 'app.bsky.splx.createCollectible', defs: { main: { type: 'procedure', description: 'Initializes collection metadata on solarplex v1 and creates a collection record', input: { encoding: 'application/json', schema: { type: 'object', required: [ 'attributes', 'description', 'imageCid', 'image', 'supply', 'title', 'wallet', 'isPaid', ], properties: { attributes: { type: 'string', description: 'Stringified JSON of attributes of collectible ', }, creator: { type: 'string', }, collectionId: { type: 'string', }, description: { type: 'string', }, imageCid: { type: 'string', format: 'cid', }, image: { type: 'ref', ref: 'lex:app.bsky.splx.collectible#image', }, projectId: { type: 'string', }, supply: { type: 'integer', }, title: { type: 'string', }, wallet: { type: 'string', }, isPaid: { type: 'boolean', }, animationUrl: { type: 'string', }, }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['collectionId', 'uri', 'cid'], properties: { collectionId: { type: 'string', description: 'CollectionId from v1', }, uri: { type: 'string', format: 'at-uri', }, cid: { type: 'string', format: 'cid', }, }, }, }, }, }, }, AppBskySplxCreatePayment: { lexicon: 1, id: 'app.bsky.splx.createPayment', defs: { main: { type: 'procedure', description: 'Create and payment and send the txn.', input: { encoding: 'application/json', schema: { type: 'object', required: [ 'collectibleCid', 'createdAt', 'paymentId', 'serializedTxn', 'wallet', ], properties: { collectibleUri: { type: 'string', description: 'The uri of the collectible', }, collectibleCid: { type: 'string', }, createdAt: { type: 'string', format: 'datetime', description: 'formatted timestamp gotten back from sphere when requesting a payment', }, paymentId: { type: 'string', description: 'The id returned from Sphere that is unique to this payment', }, serializedTxn: { type: 'string', description: 'Base-64 encoded transaction', }, subjectCid: { type: 'string', description: 'cid of paymentCollection', }, wallet: { type: 'string', description: 'cid of paymentCollection', }, postSubject: { type: 'ref', ref: 'lex:com.atproto.repo.strongRef', }, }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['transactionId'], properties: { transactionId: { type: 'string', description: 'Txn Id for sent txn', }, }, }, }, }, }, }, AppBskySplxCreatePaymentCollection: { lexicon: 1, id: 'app.bsky.splx.createPaymentCollection', defs: { main: { type: 'procedure', description: 'Initializes collection metadata on solarplex v1 and creates a collection record', input: { encoding: 'application/json', schema: { type: 'object', required: [ 'paymentType', 'subjectCid', 'wallet', 'price', 'currency', ], properties: { input: { type: 'string', description: 'Stringifed json for the attributes used to create the third party integration.', }, paymentType: { type: 'string', description: 'Values can be: sphere', }, subjectCid: { type: 'string', format: 'cid', description: 'cid of collection for this payment', }, wallet: { type: 'string', description: 'destination wallet for payouts', }, price: { type: 'integer', description: 'price of the payment', }, currency: { type: 'string', description: 'currency of the payment', }, }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['uri', 'cid'], properties: { uri: { type: 'string', format: 'at-uri', }, cid: { type: 'string', format: 'cid', }, }, }, }, }, }, }, AppBskySplxCreatePostClaim: { lexicon: 1, id: 'app.bsky.splx.createPostClaim', defs: { main: { type: 'procedure', description: 'Update the claim with its final status', input: { encoding: 'application/json', schema: { type: 'object', required: ['actionId'], properties: { actionId: { type: 'string', description: 'The unique actionId of the claim.', }, txId: { type: 'string', description: 'The transaction id of the claim.', }, timeSec: { type: 'integer', description: 'The time in seconds since the epoch.', }, }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['actionId', 'uri', 'cid'], properties: { actionId: { type: 'string', description: 'The actionId of the claim that was updated.', }, uri: { type: 'string', description: 'The uri of the claim that was updated.', format: 'at-uri', }, cid: { type: 'string', format: 'cid', description: 'The cid of the claim that was updated.', }, }, }, }, }, }, }, AppBskySplxDefs: { lexicon: 1, id: 'app.bsky.splx.defs', description: 'A reference to splx objects in the network.', defs: { claimViewBasic: { type: 'object', required: [], properties: { actionId: { type: 'string', }, uri: { type: 'string', format: 'at-uri', }, cid: { type: 'string', format: 'cid', }, claimedAt: { type: 'string', description: 'Is a datetime, but may be empty string.', }, createdAt: { type: 'string', format: 'datetime', }, creator: { type: 'string', format: 'did', }, subjectCid: { type: 'string', format: 'cid', }, subject: { type: 'string', }, wallet: { type: 'string', }, }, }, claimViewDetailed: { type: 'object', required: ['actionId'], properties: { actionId: { type: 'string', }, uri: { type: 'string', format: 'at-uri', }, cid: { type: 'string', format: 'cid', }, claimedAt: { type: 'string', format: 'datetime', }, createdAt: { type: 'string', format: 'datetime', }, indexedAt: { type: 'string', format: 'datetime', }, subject: { type: 'string', }, subjectCid: { type: 'string', format: 'cid', }, creator: { type: 'ref', ref: 'lex:app.bsky.actor.defs#profileViewBasic', }, collectible: { type: 'ref', ref: 'lex:app.bsky.splx.defs#collectibleViewBasic', }, }, }, collectibleViewBasic: { type: 'object', required: ['cid'], properties: { uri: { type: 'string', format: 'at-uri', }, cid: { type: 'string', format: 'cid', }, creator: { type: 'string', format: 'did', }, createdAt: { type: 'string', format: 'datetime', }, sortAt: { type: 'string', format: 'datetime', }, attributes: { type: 'string', }, collectionId: { type: 'string', }, description: { type: 'string', }, imageUri: { type: 'string', }, supply: { type: 'integer', }, title: { type: 'string', }, }, }, collectibleViewDetailed: { type: 'object', required: ['cid'], properties: { uri: { type: 'string', format: 'at-uri', }, cid: { type: 'string', format: 'cid', }, creator: { type: 'string', }, createdAt: { type: 'string', format: 'datetime', }, sortAt: { type: 'string', format: 'datetime', }, attributes: { type: 'string', }, collectionId: { type: 'string', }, description: { type: 'string', }, imageUri: { type: 'string', }, supply: { type: 'integer', }, title: { type: 'string', }, minted: { type: 'integer', }, pending: { type: 'integer', }, updatedAt: { type: 'string', format: 'datetime', }, price: { type: 'integer', }, currency: { type: 'string', }, }, }, paymentCollection: { type: 'object', required: ['uri', 'cid'], properties: { uri: { type: 'string', format: 'at-uri', }, cid: { type: 'string', format: 'cid', }, input: { type: 'string', description: 'json for the attributes used to create the third party integration.', }, paymentType: { type: 'string', description: 'Values can be: sphere', }, subjectCid: { type: 'string', format: 'cid', description: 'cid of collectible for this payment', }, wallet: { type: 'string', description: 'destination wallet for payouts', }, price: { type: 'integer', description: 'price of the payment', }, currency: { type: 'string', description: 'currency of the payment', }, output: { type: 'string', description: 'json for the attributes returned from the third party integration.', }, createdAt: { type: 'string', format: 'datetime', }, updatedAt: { type: 'string', format: 'datetime', }, }, }, topMintersView: { type: 'object', properties: { did: { type: 'string', format: 'did', }, mints: { type: 'integer', }, }, }, frameObject: { type: 'object', required: ['version', 'imageUrl', 'postUrl', 'buttons'], properties: { version: { type: 'string', }, imageUrl: { type: 'string', }, postUrl: { type: 'string', }, buttons: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.splx.defs#frameButton', }, }, }, }, frameButton: { type: 'object', required: ['index', 'title', 'type'], properties: { index: { type: 'integer', }, title: { type: 'string', }, type: { type: 'string', }, }, }, }, }, AppBskySplxGetClaim: { lexicon: 1, id: 'app.bsky.splx.getClaim', defs: { main: { type: 'query', parameters: { type: 'params', required: ['actionId'], properties: { actionId: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'ref', ref: 'lex:app.bsky.splx.defs#claimViewBasic', }, }, }, }, }, AppBskySplxGetClaims: { lexicon: 1, id: 'app.bsky.splx.getClaims', defs: { main: { type: 'query', parameters: { type: 'params', required: ['collectibleCid', 'did'], properties: { collectibleCid: { type: 'string', }, did: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', properties: { claims: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.splx.defs#claimViewBasic', }, }, }, }, }, }, }, }, AppBskySplxGetCollectible: { lexicon: 1, id: 'app.bsky.splx.getCollectible', defs: { main: { type: 'query', description: "Compose and hydrate a feed from a user's selected feed generator", parameters: { type: 'params', required: ['collectibleCid'], properties: { collectibleCid: { type: 'string', format: 'cid', }, }, }, output: { encoding: 'application/json', schema: { type: 'ref', ref: 'lex:app.bsky.splx.defs#collectibleViewBasic', }, }, }, }, }, AppBskySplxGetCollectibles: { lexicon: 1, id: 'app.bsky.splx.getCollectibles', defs: { main: { type: 'query', description: 'Get Collectibles by creator did', parameters: { type: 'params', required: ['did'], properties: { did: { type: 'string', format: 'did', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', properties: { collectibles: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.splx.defs#collectibleViewDetailed', }, }, }, }, }, }, }, }, AppBskySplxGetFrameMeta: { lexicon: 1, id: 'app.bsky.splx.getFrameMeta', defs: { main: { type: 'query', parameters: { type: 'params', required: ['url'], properties: { url: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', properties: { result: { type: 'unknown', }, }, }, }, }, }, }, AppBskySplxGetPaymentCollection: { lexicon: 1, id: 'app.bsky.splx.getPaymentCollection', defs: { main: { type: 'query', description: 'Get Payment Collection', parameters: { type: 'params', required: ['collectibleCid'], properties: { collectibleCid: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'ref', ref: 'lex:app.bsky.splx.defs#paymentCollection', }, }, }, }, }, AppBskySplxGetRewardClaim: { lexicon: 1, id: 'app.bsky.splx.getRewardClaim', defs: { main: { type: 'query', parameters: { type: 'params', required: ['cid', 'did'], properties: { cid: { type: 'string', }, did: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'ref', ref: 'lex:app.bsky.splx.defs#claimViewBasic', }, }, }, }, }, AppBskySplxGetTopMinters: { lexicon: 1, id: 'app.bsky.splx.getTopMinters', defs: { main: { type: 'query', description: 'get the top 10 minters for a creator', parameters: { type: 'params', required: ['did'], properties: { did: { type: 'string', format: 'did', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', properties: { topMinters: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.splx.defs#topMintersView', }, }, }, }, }, }, }, }, AppBskySplxPayment: { lexicon: 1, id: 'app.bsky.splx.payment', description: 'A third party payment integration', defs: { main: { type: 'record', key: 'tid', record: { type: 'object', required: [ 'collectibleCid', 'paymentId', 'subject', 'subjectCid', 'txId', 'wallet', 'createdAt', ], properties: { collectibleUri: { type: 'string', description: 'uri of the collectible', }, collectibleCid: { type: 'string', format: 'cid', description: 'cid of the collection', }, paymentId: { type: 'string', description: 'The id returned from Sphere that is unique to this payment', }, subject: { type: 'string', description: 'uri of the paymentCollection', }, subjectCid: { type: 'string', format: 'cid', description: 'cid of the paymentCollection', }, createdAt: { type: 'string', format: 'datetime', }, updatedAt: { type: 'string', format: 'datetime', }, txId: { type: 'string', }, wallet: { type: 'string', }, postSubject: { type: 'ref', ref: 'lex:com.atproto.repo.strongRef', }, }, }, }, }, }, AppBskySplxPaymentCollection: { lexicon: 1, id: 'app.bsky.splx.paymentCollection', description: 'Represents a payment integration (such as sphere)', defs: { main: { type: 'record', key: 'tid', record: { type: 'object', required: [ 'paymentType', 'subjectCid', 'wallet', 'price', 'currency', 'output', ], properties: { input: { type: 'string', description: 'Stringifed json for the attributes used to create the third party integration.', }, paymentType: { type: 'string', description: 'Values can be: sphere', }, subjectCid: { type: 'string', format: 'cid', description: 'cid of collectible for this payment', }, wallet: { type: 'string', description: 'destination wallet for payouts', }, price: { type: 'integer', description: 'price of the payment', }, currency: { type: 'string', description: 'currency of the payment', }, output: { type: 'string', description: 'Stringifed json for the attributes returned from the third party integration.', }, createdAt: { type: 'string', format: 'datetime', }, updatedAt: { type: 'string', format: 'datetime', }, }, }, }, }, }, AppBskySplxPostClaim: { lexicon: 1, id: 'app.bsky.splx.postClaim', defs: { main: { type: 'record', key: 'tid', record: { type: 'object', required: ['actionId'], properties: { actionId: { type: 'string', description: 'The v1 actionId of the claim', }, timeSec: { type: 'integer', description: 'Seconds in UTC claim action went through', }, txId: { type: 'string', description: 'The transactionId so we can create a sol scan / whatever link', }, wallet: { type: 'string', description: 'The wallet address the collectible was sent to', }, }, }, }, }, }, AppBskySplxPostFrameAction: { lexicon: 1, id: 'app.bsky.splx.postFrameAction', defs: { main: { type: 'procedure', description: 'Make a frame call to external API', input: { encoding: 'application/json', schema: { type: 'object', required: ['framePostUrl', 'frameActionIndex'], properties: { subject: { type: 'ref', ref: 'lex:com.atproto.repo.strongRef', }, framePostUrl: { type: 'string', }, frameActionIndex: { type: 'integer', }, }, }, }, output: { encoding: 'application/json', schema: { type: 'object', properties: { result: { type: 'unknown', }, }, }, }, }, }, }, AppBskySplxRequestTransaction: { lexicon: 1, id: 'app.bsky.splx.requestTransaction', defs: { main: { type: 'procedure', description: 'Request a transaction', input: { encoding: 'application/json', schema: { type: 'object', required: ['wallet', 'collectibleCid'], properties: { wallet: { type: 'string', }, collectibleCid: { type: 'string', }, did: { type: 'string', }, }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['createdAt', 'paymentId', 'serializedTxn'], properties: { createdAt: { type: 'string', format: 'datetime', description: 'Formatted timestamp gotten back from sphere when requesting a payment', }, paymentId: { type: 'string', description: 'The id returned from Sphere that is unique to this payment', }, serializedTxn: { type: 'string', description: 'Base-64 encoded transaction', }, }, }, }, }, }, }, AppBskySplxUpdatePayment: { lexicon: 1, id: 'app.bsky.splx.updatePayment', defs: { main: { type: 'procedure', description: 'When a payment is finished and this webhook is called, update it to succes or fail and create a claim.', input: { encoding: 'application/json', schema: { type: 'object', required: ['paymentId'], properties: { paymentId: { type: 'string', description: 'The id returned from Sphere that is unique to this payment', }, }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['did', 'collectibleUri', 'collectibleCid', 'wallet'], properties: { did: { type: 'string', }, collectibleUri: { type: 'string', }, collectibleCid: { type: 'string', format: 'cid', }, wallet: { type: 'string', }, }, }, }, }, }, }, AppBskyUnspeccedDefs: { lexicon: 1, id: 'app.bsky.unspecced.defs', defs: { skeletonSearchPost: { type: 'object', required: ['uri'], properties: { uri: { type: 'string', format: 'at-uri', }, }, }, skeletonSearchActor: { type: 'object', required: ['did'], properties: { did: { type: 'string', format: 'did', }, }, }, }, }, AppBskyUnspeccedGetPopular: { lexicon: 1, id: 'app.bsky.unspecced.getPopular', defs: { main: { type: 'query', description: 'DEPRECATED: will be removed soon, please find a feed generator alternative', parameters: { type: 'params', properties: { includeNsfw: { type: 'boolean', default: false, }, limit: { type: 'integer', minimum: 1, maximum: 100, default: 50, }, cursor: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['feed'], properties: { cursor: { type: 'string', }, feed: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.feed.defs#feedViewPost', }, }, }, }, }, }, }, }, AppBskyUnspeccedGetPopularFeedGenerators: { lexicon: 1, id: 'app.bsky.unspecced.getPopularFeedGenerators', defs: { main: { type: 'query', description: 'An unspecced view of globally popular feed generators', parameters: { type: 'params', properties: { limit: { type: 'integer', minimum: 1, maximum: 100, default: 50, }, cursor: { type: 'string', }, query: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['feeds'], properties: { cursor: { type: 'string', }, feeds: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.feed.defs#generatorView', }, }, }, }, }, }, }, }, AppBskyUnspeccedGetTimelineSkeleton: { lexicon: 1, id: 'app.bsky.unspecced.getTimelineSkeleton', defs: { main: { type: 'query', description: 'A skeleton of a timeline - UNSPECCED & WILL GO AWAY SOON', parameters: { type: 'params', properties: { limit: { type: 'integer', minimum: 1, maximum: 100, default: 50, }, cursor: { type: 'string', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['feed'], properties: { cursor: { type: 'string', }, feed: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.feed.defs#skeletonFeedPost', }, }, }, }, }, errors: [ { name: 'UnknownFeed', }, ], }, }, }, AppBskyUnspeccedSearchActorsSkeleton: { lexicon: 1, id: 'app.bsky.unspecced.searchActorsSkeleton', defs: { main: { type: 'query', description: 'Backend Actors (profile) search, returning only skeleton', parameters: { type: 'params', required: ['q'], properties: { q: { type: 'string', description: 'search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended. For typeahead search, only simple term match is supported, not full syntax', }, typeahead: { type: 'boolean', description: "if true, acts as fast/simple 'typeahead' query", }, limit: { type: 'integer', minimum: 1, maximum: 100, default: 25, }, cursor: { type: 'string', description: 'optional pagination mechanism; may not necessarily allow scrolling through entire result set', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['actors'], properties: { cursor: { type: 'string', }, hitsTotal: { type: 'integer', description: 'count of search hits. optional, may be rounded/truncated, and may not be possible to paginate through all hits', }, actors: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.unspecced.defs#skeletonSearchActor', }, }, }, }, }, errors: [ { name: 'BadQueryString', }, ], }, }, }, AppBskyUnspeccedSearchPostsSkeleton: { lexicon: 1, id: 'app.bsky.unspecced.searchPostsSkeleton', defs: { main: { type: 'query', description: 'Backend Posts search, returning only skeleton', parameters: { type: 'params', required: ['q'], properties: { q: { type: 'string', description: 'search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended', }, limit: { type: 'integer', minimum: 1, maximum: 100, default: 25, }, cursor: { type: 'string', description: 'optional pagination mechanism; may not necessarily allow scrolling through entire result set', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['posts'], properties: { cursor: { type: 'string', }, hitsTotal: { type: 'integer', description: 'count of search hits. optional, may be rounded/truncated, and may not be possible to paginate through all hits', }, posts: { type: 'array', items: { type: 'ref', ref: 'lex:app.bsky.unspecced.defs#skeletonSearchPost', }, }, }, }, }, errors: [ { name: 'BadQueryString', }, ], }, }, }, } export const schemas: LexiconDoc[] = Object.values(schemaDict) as LexiconDoc[] export const lexicons: Lexicons = new Lexicons(schemas) export const ids = { ComAtprotoAdminDefs: 'com.atproto.admin.defs', ComAtprotoAdminDisableAccountInvites: 'com.atproto.admin.disableAccountInvites', ComAtprotoAdminDisableInviteCodes: 'com.atproto.admin.disableInviteCodes', ComAtprotoAdminEnableAccountInvites: 'com.atproto.admin.enableAccountInvites', ComAtprotoAdminGetInviteCodes: 'com.atproto.admin.getInviteCodes', ComAtprotoAdminGetModerationAction: 'com.atproto.admin.getModerationAction', ComAtprotoAdminGetModerationActions: 'com.atproto.admin.getModerationActions', ComAtprotoAdminGetModerationReport: 'com.atproto.admin.getModerationReport', ComAtprotoAdminGetModerationReports: 'com.atproto.admin.getModerationReports', ComAtprotoAdminGetRecord: 'com.atproto.admin.getRecord', ComAtprotoAdminGetRepo: 'com.atproto.admin.getRepo', ComAtprotoAdminResolveModerationReports: 'com.atproto.admin.resolveModerationReports', ComAtprotoAdminReverseModerationAction: 'com.atproto.admin.reverseModerationAction', ComAtprotoAdminSearchRepos: 'com.atproto.admin.searchRepos', ComAtprotoAdminSendEmail: 'com.atproto.admin.sendEmail', ComAtprotoAdminTakeModerationAction: 'com.atproto.admin.takeModerationAction', ComAtprotoAdminUpdateAccountEmail: 'com.atproto.admin.updateAccountEmail', ComAtprotoAdminUpdateAccountHandle: 'com.atproto.admin.updateAccountHandle', ComAtprotoIdentityResolveHandle: 'com.atproto.identity.resolveHandle', ComAtprotoIdentityUpdateHandle: 'com.atproto.identity.updateHandle', ComAtprotoLabelDefs: 'com.atproto.label.defs', ComAtprotoLabelQueryLabels: 'com.atproto.label.queryLabels', ComAtprotoLabelSubscribeLabels: 'com.atproto.label.subscribeLabels', ComAtprotoModerationCreateReport: 'com.atproto.moderation.createReport', ComAtprotoModerationDefs: 'com.atproto.moderation.defs', ComAtprotoRepoApplyWrites: 'com.atproto.repo.applyWrites', ComAtprotoRepoCreateRecord: 'com.atproto.repo.createRecord', ComAtprotoRepoDeleteRecord: 'com.atproto.repo.deleteRecord', ComAtprotoRepoDescribeRepo: 'com.atproto.repo.describeRepo', ComAtprotoRepoGetRecord: 'com.atproto.repo.getRecord', ComAtprotoRepoListRecords: 'com.atproto.repo.listRecords', ComAtprotoRepoPutRecord: 'com.atproto.repo.putRecord', ComAtprotoRepoStrongRef: 'com.atproto.repo.strongRef', ComAtprotoRepoUploadBlob: 'com.atproto.repo.uploadBlob', ComAtprotoServerConfirmEmail: 'com.atproto.server.confirmEmail', ComAtprotoServerCreateAccount: 'com.atproto.server.createAccount', ComAtprotoServerCreateAppPassword: 'com.atproto.server.createAppPassword', ComAtprotoServerCreateInviteCode: 'com.atproto.server.createInviteCode', ComAtprotoServerCreateInviteCodes: 'com.atproto.server.createInviteCodes', ComAtprotoServerCreateSession: 'com.atproto.server.createSession', ComAtprotoServerDefs: 'com.atproto.server.defs', ComAtprotoServerDeleteAccount: 'com.atproto.server.deleteAccount', ComAtprotoServerDeleteSession: 'com.atproto.server.deleteSession', ComAtprotoServerDescribeServer: 'com.atproto.server.describeServer', ComAtprotoServerGetAccountInviteCodes: 'com.atproto.server.getAccountInviteCodes', ComAtprotoServerGetSession: 'com.atproto.server.getSession', ComAtprotoServerListAppPasswords: 'com.atproto.server.listAppPasswords', ComAtprotoServerRefreshSession: 'com.atproto.server.refreshSession', ComAtprotoServerRequestAccountDelete: 'com.atproto.server.requestAccountDelete', ComAtprotoServerRequestEmailConfirmation: 'com.atproto.server.requestEmailConfirmation', ComAtprotoServerRequestEmailUpdate: 'com.atproto.server.requestEmailUpdate', ComAtprotoServerRequestPasswordReset: 'com.atproto.server.requestPasswordReset', ComAtprotoServerResetPassword: 'com.atproto.server.resetPassword', ComAtprotoServerRevokeAppPassword: 'com.atproto.server.revokeAppPassword', ComAtprotoServerUpdateEmail: 'com.atproto.server.updateEmail', ComAtprotoSyncGetBlob: 'com.atproto.sync.getBlob', ComAtprotoSyncGetBlocks: 'com.atproto.sync.getBlocks', ComAtprotoSyncGetCheckout: 'com.atproto.sync.getCheckout', ComAtprotoSyncGetHead: 'com.atproto.sync.getHead', ComAtprotoSyncGetLatestCommit: 'com.atproto.sync.getLatestCommit', ComAtprotoSyncGetRecord: 'com.atproto.sync.getRecord', ComAtprotoSyncGetRepo: 'com.atproto.sync.getRepo', ComAtprotoSyncListBlobs: 'com.atproto.sync.listBlobs', ComAtprotoSyncListRepos: 'com.atproto.sync.listRepos', ComAtprotoSyncNotifyOfUpdate: 'com.atproto.sync.notifyOfUpdate', ComAtprotoSyncRequestCrawl: 'com.atproto.sync.requestCrawl', ComAtprotoSyncSubscribeRepos: 'com.atproto.sync.subscribeRepos', AppBskyActorDefs: 'app.bsky.actor.defs', AppBskyActorGetPreferences: 'app.bsky.actor.getPreferences', AppBskyActorGetProfile: 'app.bsky.actor.getProfile', AppBskyActorGetProfiles: 'app.bsky.actor.getProfiles', AppBskyActorGetSuggestions: 'app.bsky.actor.getSuggestions', AppBskyActorProfile: 'app.bsky.actor.profile', AppBskyActorPutPreferences: 'app.bsky.actor.putPreferences', AppBskyActorSearchActors: 'app.bsky.actor.searchActors', AppBskyActorSearchActorsTypeahead: 'app.bsky.actor.searchActorsTypeahead', AppBskyEmbedCollectible: 'app.bsky.embed.collectible', AppBskyEmbedExternal: 'app.bsky.embed.external', AppBskyEmbedFrame: 'app.bsky.embed.frame', AppBskyEmbedImages: 'app.bsky.embed.images', AppBskyEmbedNft: 'app.bsky.embed.nft', AppBskyEmbedRecord: 'app.bsky.embed.record', AppBskyEmbedRecordWithMedia: 'app.bsky.embed.recordWithMedia', AppBskyEmbedVideos: 'app.bsky.embed.videos', AppBskyFeedDefs: 'app.bsky.feed.defs', AppBskyFeedDescribeFeedGenerator: 'app.bsky.feed.describeFeedGenerator', AppBskyFeedGenerator: 'app.bsky.feed.generator', AppBskyFeedGetActorFeeds: 'app.bsky.feed.getActorFeeds', AppBskyFeedGetActorLikes: 'app.bsky.feed.getActorLikes', AppBskyFeedGetAuthorFeed: 'app.bsky.feed.getAuthorFeed', AppBskyFeedGetFeed: 'app.bsky.feed.getFeed', AppBskyFeedGetFeedGenerator: 'app.bsky.feed.getFeedGenerator', AppBskyFeedGetFeedGenerators: 'app.bsky.feed.getFeedGenerators', AppBskyFeedGetFeedSkeleton: 'app.bsky.feed.getFeedSkeleton', AppBskyFeedGetLikes: 'app.bsky.feed.getLikes', AppBskyFeedGetListFeed: 'app.bsky.feed.getListFeed', AppBskyFeedGetPostThread: 'app.bsky.feed.getPostThread', AppBskyFeedGetPosts: 'app.bsky.feed.getPosts', AppBskyFeedGetRepostedBy: 'app.bsky.feed.getRepostedBy', AppBskyFeedGetSuggestedFeeds: 'app.bsky.feed.getSuggestedFeeds', AppBskyFeedGetTimeline: 'app.bsky.feed.getTimeline', AppBskyFeedLike: 'app.bsky.feed.like', AppBskyFeedPost: 'app.bsky.feed.post', AppBskyFeedRepost: 'app.bsky.feed.repost', AppBskyFeedSearchPosts: 'app.bsky.feed.searchPosts', AppBskyFeedThreadgate: 'app.bsky.feed.threadgate', AppBskyGraphBlock: 'app.bsky.graph.block', AppBskyGraphDefs: 'app.bsky.graph.defs', AppBskyGraphFollow: 'app.bsky.graph.follow', AppBskyGraphGetBlocks: 'app.bsky.graph.getBlocks', AppBskyGraphGetFollowers: 'app.bsky.graph.getFollowers', AppBskyGraphGetFollows: 'app.bsky.graph.getFollows', AppBskyGraphGetList: 'app.bsky.graph.getList', AppBskyGraphGetListBlocks: 'app.bsky.graph.getListBlocks', AppBskyGraphGetListMutes: 'app.bsky.graph.getListMutes', AppBskyGraphGetLists: 'app.bsky.graph.getLists', AppBskyGraphGetMutes: 'app.bsky.graph.getMutes', AppBskyGraphGetSuggestedFollowsByActor: 'app.bsky.graph.getSuggestedFollowsByActor', AppBskyGraphList: 'app.bsky.graph.list', AppBskyGraphListblock: 'app.bsky.graph.listblock', AppBskyGraphListitem: 'app.bsky.graph.listitem', AppBskyGraphMuteActor: 'app.bsky.graph.muteActor', AppBskyGraphMuteActorList: 'app.bsky.graph.muteActorList', AppBskyGraphUnmuteActor: 'app.bsky.graph.unmuteActor', AppBskyGraphUnmuteActorList: 'app.bsky.graph.unmuteActorList', AppBskyNotificationGetUnreadCount: 'app.bsky.notification.getUnreadCount', AppBskyNotificationListNotifications: 'app.bsky.notification.listNotifications', AppBskyNotificationRegisterPush: 'app.bsky.notification.registerPush', AppBskyNotificationUpdateSeen: 'app.bsky.notification.updateSeen', AppBskyRichtextFacet: 'app.bsky.richtext.facet', AppBskySplxClaim: 'app.bsky.splx.claim', AppBskySplxCollectible: 'app.bsky.splx.collectible', AppBskySplxCreateClaim: 'app.bsky.splx.createClaim', AppBskySplxCreateCollectible: 'app.bsky.splx.createCollectible', AppBskySplxCreatePayment: 'app.bsky.splx.createPayment', AppBskySplxCreatePaymentCollection: 'app.bsky.splx.createPaymentCollection', AppBskySplxCreatePostClaim: 'app.bsky.splx.createPostClaim', AppBskySplxDefs: 'app.bsky.splx.defs', AppBskySplxGetClaim: 'app.bsky.splx.getClaim', AppBskySplxGetClaims: 'app.bsky.splx.getClaims', AppBskySplxGetCollectible: 'app.bsky.splx.getCollectible', AppBskySplxGetCollectibles: 'app.bsky.splx.getCollectibles', AppBskySplxGetFrameMeta: 'app.bsky.splx.getFrameMeta', AppBskySplxGetPaymentCollection: 'app.bsky.splx.getPaymentCollection', AppBskySplxGetRewardClaim: 'app.bsky.splx.getRewardClaim', AppBskySplxGetTopMinters: 'app.bsky.splx.getTopMinters', AppBskySplxPayment: 'app.bsky.splx.payment', AppBskySplxPaymentCollection: 'app.bsky.splx.paymentCollection', AppBskySplxPostClaim: 'app.bsky.splx.postClaim', AppBskySplxPostFrameAction: 'app.bsky.splx.postFrameAction', AppBskySplxRequestTransaction: 'app.bsky.splx.requestTransaction', AppBskySplxUpdatePayment: 'app.bsky.splx.updatePayment', AppBskyUnspeccedDefs: 'app.bsky.unspecced.defs', AppBskyUnspeccedGetPopular: 'app.bsky.unspecced.getPopular', AppBskyUnspeccedGetPopularFeedGenerators: 'app.bsky.unspecced.getPopularFeedGenerators', AppBskyUnspeccedGetTimelineSkeleton: 'app.bsky.unspecced.getTimelineSkeleton', AppBskyUnspeccedSearchActorsSkeleton: 'app.bsky.unspecced.searchActorsSkeleton', AppBskyUnspeccedSearchPostsSkeleton: 'app.bsky.unspecced.searchPostsSkeleton', }