UNPKG

@atproto/api

Version:

Client library for atproto and Bluesky

1,802 lines (1,800 loc) 518 kB
/** * GENERATED CODE - DO NOT MODIFY */ import { type LexiconDoc, Lexicons, ValidationError, type ValidationResult, } from '@atproto/lexicon' import { type $Typed, is$typed, maybe$typed } from './util.js' export const schemaDict = { ComAtprotoAdminDefs: { lexicon: 1, id: 'com.atproto.admin.defs', defs: { statusAttr: { type: 'object', required: ['applied'], properties: { applied: { type: 'boolean', }, ref: { type: 'string', }, }, }, accountView: { type: 'object', required: ['did', 'handle', 'indexedAt'], 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', }, 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', }, emailConfirmedAt: { type: 'string', format: 'datetime', }, inviteNote: { type: 'string', }, deactivatedAt: { type: 'string', format: 'datetime', }, threatSignatures: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.admin.defs#threatSignature', }, }, }, }, repoRef: { type: 'object', required: ['did'], properties: { did: { type: 'string', format: 'did', }, }, }, repoBlobRef: { type: 'object', required: ['did', 'cid'], properties: { did: { type: 'string', format: 'did', }, cid: { type: 'string', format: 'cid', }, recordUri: { type: 'string', format: 'at-uri', }, }, }, threatSignature: { type: 'object', required: ['property', 'value'], properties: { property: { type: 'string', }, value: { type: 'string', }, }, }, }, }, ComAtprotoAdminDeleteAccount: { lexicon: 1, id: 'com.atproto.admin.deleteAccount', defs: { main: { type: 'procedure', description: 'Delete a user account as an administrator.', input: { encoding: 'application/json', schema: { type: 'object', required: ['did'], properties: { did: { type: 'string', format: 'did', }, }, }, }, }, }, }, 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: 'Optional reason for disabled invites.', }, }, }, }, }, }, }, 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 account's ability to receive invite codes.", input: { encoding: 'application/json', schema: { type: 'object', required: ['account'], properties: { account: { type: 'string', format: 'did', }, note: { type: 'string', description: 'Optional reason for enabled invites.', }, }, }, }, }, }, }, ComAtprotoAdminGetAccountInfo: { lexicon: 1, id: 'com.atproto.admin.getAccountInfo', defs: { main: { type: 'query', description: 'Get details about an account.', parameters: { type: 'params', required: ['did'], properties: { did: { type: 'string', format: 'did', }, }, }, output: { encoding: 'application/json', schema: { type: 'ref', ref: 'lex:com.atproto.admin.defs#accountView', }, }, }, }, }, ComAtprotoAdminGetAccountInfos: { lexicon: 1, id: 'com.atproto.admin.getAccountInfos', defs: { main: { type: 'query', description: 'Get details about some accounts.', parameters: { type: 'params', required: ['dids'], properties: { dids: { type: 'array', items: { type: 'string', format: 'did', }, }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['infos'], properties: { infos: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.admin.defs#accountView', }, }, }, }, }, }, }, }, ComAtprotoAdminGetInviteCodes: { lexicon: 1, id: 'com.atproto.admin.getInviteCodes', defs: { main: { type: 'query', description: 'Get an 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', }, }, }, }, }, }, }, }, ComAtprotoAdminGetSubjectStatus: { lexicon: 1, id: 'com.atproto.admin.getSubjectStatus', defs: { main: { type: 'query', description: 'Get the service-specific admin status of a subject (account, record, or blob).', parameters: { type: 'params', properties: { did: { type: 'string', format: 'did', }, uri: { type: 'string', format: 'at-uri', }, blob: { type: 'string', format: 'cid', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['subject'], properties: { subject: { type: 'union', refs: [ 'lex:com.atproto.admin.defs#repoRef', 'lex:com.atproto.repo.strongRef', 'lex:com.atproto.admin.defs#repoBlobRef', ], }, takedown: { type: 'ref', ref: 'lex:com.atproto.admin.defs#statusAttr', }, deactivated: { type: 'ref', ref: 'lex:com.atproto.admin.defs#statusAttr', }, }, }, }, }, }, }, ComAtprotoAdminSearchAccounts: { lexicon: 1, id: 'com.atproto.admin.searchAccounts', defs: { main: { type: 'query', description: 'Get list of accounts that matches your search query.', parameters: { type: 'params', properties: { email: { type: 'string', }, cursor: { type: 'string', }, limit: { type: 'integer', minimum: 1, maximum: 100, default: 50, }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['accounts'], properties: { cursor: { type: 'string', }, accounts: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.admin.defs#accountView', }, }, }, }, }, }, }, }, ComAtprotoAdminSendEmail: { lexicon: 1, id: 'com.atproto.admin.sendEmail', defs: { main: { type: 'procedure', description: "Send email to a user's account email address.", input: { encoding: 'application/json', schema: { type: 'object', required: ['recipientDid', 'content', 'senderDid'], properties: { recipientDid: { type: 'string', format: 'did', }, content: { type: 'string', }, subject: { type: 'string', }, senderDid: { type: 'string', format: 'did', }, comment: { type: 'string', description: "Additional comment by the sender that won't be used in the email itself but helpful to provide more context for moderators/reviewers", }, }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['sent'], properties: { sent: { type: 'boolean', }, }, }, }, }, }, }, 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', }, }, }, }, }, }, }, ComAtprotoAdminUpdateAccountPassword: { lexicon: 1, id: 'com.atproto.admin.updateAccountPassword', defs: { main: { type: 'procedure', description: 'Update the password for a user account as an administrator.', input: { encoding: 'application/json', schema: { type: 'object', required: ['did', 'password'], properties: { did: { type: 'string', format: 'did', }, password: { type: 'string', }, }, }, }, }, }, }, ComAtprotoAdminUpdateAccountSigningKey: { lexicon: 1, id: 'com.atproto.admin.updateAccountSigningKey', defs: { main: { type: 'procedure', description: "Administrative action to update an account's signing key in their Did document.", input: { encoding: 'application/json', schema: { type: 'object', required: ['did', 'signingKey'], properties: { did: { type: 'string', format: 'did', }, signingKey: { type: 'string', format: 'did', description: 'Did-key formatted public key', }, }, }, }, }, }, }, ComAtprotoAdminUpdateSubjectStatus: { lexicon: 1, id: 'com.atproto.admin.updateSubjectStatus', defs: { main: { type: 'procedure', description: 'Update the service-specific admin status of a subject (account, record, or blob).', input: { encoding: 'application/json', schema: { type: 'object', required: ['subject'], properties: { subject: { type: 'union', refs: [ 'lex:com.atproto.admin.defs#repoRef', 'lex:com.atproto.repo.strongRef', 'lex:com.atproto.admin.defs#repoBlobRef', ], }, takedown: { type: 'ref', ref: 'lex:com.atproto.admin.defs#statusAttr', }, deactivated: { type: 'ref', ref: 'lex:com.atproto.admin.defs#statusAttr', }, }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['subject'], properties: { subject: { type: 'union', refs: [ 'lex:com.atproto.admin.defs#repoRef', 'lex:com.atproto.repo.strongRef', 'lex:com.atproto.admin.defs#repoBlobRef', ], }, takedown: { type: 'ref', ref: 'lex:com.atproto.admin.defs#statusAttr', }, }, }, }, }, }, }, ComAtprotoIdentityDefs: { lexicon: 1, id: 'com.atproto.identity.defs', defs: { identityInfo: { type: 'object', required: ['did', 'handle', 'didDoc'], properties: { did: { type: 'string', format: 'did', }, handle: { type: 'string', format: 'handle', description: "The validated handle of the account; or 'handle.invalid' if the handle did not bi-directionally match the DID document.", }, didDoc: { type: 'unknown', description: 'The complete DID document for the identity.', }, }, }, }, }, ComAtprotoIdentityGetRecommendedDidCredentials: { lexicon: 1, id: 'com.atproto.identity.getRecommendedDidCredentials', defs: { main: { type: 'query', description: 'Describe the credentials that should be included in the DID doc of an account that is migrating to this service.', output: { encoding: 'application/json', schema: { type: 'object', properties: { rotationKeys: { description: 'Recommended rotation keys for PLC dids. Should be undefined (or ignored) for did:webs.', type: 'array', items: { type: 'string', }, }, alsoKnownAs: { type: 'array', items: { type: 'string', }, }, verificationMethods: { type: 'unknown', }, services: { type: 'unknown', }, }, }, }, }, }, }, ComAtprotoIdentityRefreshIdentity: { lexicon: 1, id: 'com.atproto.identity.refreshIdentity', defs: { main: { type: 'procedure', description: 'Request that the server re-resolve an identity (DID and handle). The server may ignore this request, or require authentication, depending on the role, implementation, and policy of the server.', input: { encoding: 'application/json', schema: { type: 'object', required: ['identifier'], properties: { identifier: { type: 'string', format: 'at-identifier', }, }, }, }, output: { encoding: 'application/json', schema: { type: 'ref', ref: 'lex:com.atproto.identity.defs#identityInfo', }, }, errors: [ { name: 'HandleNotFound', description: 'The resolution process confirmed that the handle does not resolve to any DID.', }, { name: 'DidNotFound', description: 'The DID resolution process confirmed that there is no current DID.', }, { name: 'DidDeactivated', description: 'The DID previously existed, but has been deactivated.', }, ], }, }, }, ComAtprotoIdentityRequestPlcOperationSignature: { lexicon: 1, id: 'com.atproto.identity.requestPlcOperationSignature', defs: { main: { type: 'procedure', description: 'Request an email with a code to in order to request a signed PLC operation. Requires Auth.', }, }, }, ComAtprotoIdentityResolveDid: { lexicon: 1, id: 'com.atproto.identity.resolveDid', defs: { main: { type: 'query', description: 'Resolves DID to DID document. Does not bi-directionally verify handle.', parameters: { type: 'params', required: ['did'], properties: { did: { type: 'string', format: 'did', description: 'DID to resolve.', }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['didDoc'], properties: { didDoc: { type: 'unknown', description: 'The complete DID document for the identity.', }, }, }, }, errors: [ { name: 'DidNotFound', description: 'The DID resolution process confirmed that there is no current DID.', }, { name: 'DidDeactivated', description: 'The DID previously existed, but has been deactivated.', }, ], }, }, }, ComAtprotoIdentityResolveHandle: { lexicon: 1, id: 'com.atproto.identity.resolveHandle', defs: { main: { type: 'query', description: 'Resolves an atproto handle (hostname) to a DID. Does not necessarily bi-directionally verify against the the DID document.', 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', }, }, }, }, errors: [ { name: 'HandleNotFound', description: 'The resolution process confirmed that the handle does not resolve to any DID.', }, ], }, }, }, ComAtprotoIdentityResolveIdentity: { lexicon: 1, id: 'com.atproto.identity.resolveIdentity', defs: { main: { type: 'query', description: 'Resolves an identity (DID or Handle) to a full identity (DID document and verified handle).', parameters: { type: 'params', required: ['identifier'], properties: { identifier: { type: 'string', format: 'at-identifier', description: 'Handle or DID to resolve.', }, }, }, output: { encoding: 'application/json', schema: { type: 'ref', ref: 'lex:com.atproto.identity.defs#identityInfo', }, }, errors: [ { name: 'HandleNotFound', description: 'The resolution process confirmed that the handle does not resolve to any DID.', }, { name: 'DidNotFound', description: 'The DID resolution process confirmed that there is no current DID.', }, { name: 'DidDeactivated', description: 'The DID previously existed, but has been deactivated.', }, ], }, }, }, ComAtprotoIdentitySignPlcOperation: { lexicon: 1, id: 'com.atproto.identity.signPlcOperation', defs: { main: { type: 'procedure', description: "Signs a PLC operation to update some value(s) in the requesting DID's document.", input: { encoding: 'application/json', schema: { type: 'object', properties: { token: { description: 'A token received through com.atproto.identity.requestPlcOperationSignature', type: 'string', }, rotationKeys: { type: 'array', items: { type: 'string', }, }, alsoKnownAs: { type: 'array', items: { type: 'string', }, }, verificationMethods: { type: 'unknown', }, services: { type: 'unknown', }, }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: ['operation'], properties: { operation: { type: 'unknown', description: 'A signed DID PLC operation.', }, }, }, }, }, }, }, ComAtprotoIdentitySubmitPlcOperation: { lexicon: 1, id: 'com.atproto.identity.submitPlcOperation', defs: { main: { type: 'procedure', description: "Validates a PLC operation to ensure that it doesn't violate a service's constraints or get the identity into a bad state, then submits it to the PLC registry", input: { encoding: 'application/json', schema: { type: 'object', required: ['operation'], properties: { operation: { type: 'unknown', }, }, }, }, }, }, }, ComAtprotoIdentityUpdateHandle: { lexicon: 1, id: 'com.atproto.identity.updateHandle', defs: { main: { type: 'procedure', description: "Updates the current account's handle. Verifies handle validity, and updates did:plc document if necessary. Implemented by PDS, and requires auth.", input: { encoding: 'application/json', schema: { type: 'object', required: ['handle'], properties: { handle: { type: 'string', format: 'handle', description: 'The new 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: { ver: { type: 'integer', description: 'The AT Protocol version of the label object.', }, 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 that 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.', }, exp: { type: 'string', format: 'datetime', description: 'Timestamp at which this label expires (no longer applies).', }, sig: { type: 'bytes', description: 'Signature of dag-cbor encoded label.', }, }, }, 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 that 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.', }, }, }, labelValueDefinition: { type: 'object', description: 'Declares a label value and its expected interpretations and behaviors.', required: ['identifier', 'severity', 'blurs', 'locales'], properties: { identifier: { type: 'string', description: "The value of the label being defined. Must only include lowercase ascii and the '-' character ([a-z-]+).", maxLength: 100, maxGraphemes: 100, }, severity: { type: 'string', description: "How should a client visually convey this label? 'inform' means neutral and informational; 'alert' means negative and warning; 'none' means show nothing.", knownValues: ['inform', 'alert', 'none'], }, blurs: { type: 'string', description: "What should this label hide in the UI, if applied? 'content' hides all of the target; 'media' hides the images/video/audio; 'none' hides nothing.", knownValues: ['content', 'media', 'none'], }, defaultSetting: { type: 'string', description: 'The default setting for this label.', knownValues: ['ignore', 'warn', 'hide'], default: 'warn', }, adultOnly: { type: 'boolean', description: 'Does the user need to have adult content enabled in order to configure this label?', }, locales: { type: 'array', items: { type: 'ref', ref: 'lex:com.atproto.label.defs#labelValueDefinitionStrings', }, }, }, }, labelValueDefinitionStrings: { type: 'object', description: 'Strings which describe the label in the UI, localized into a specific language.', required: ['lang', 'name', 'description'], properties: { lang: { type: 'string', description: 'The code of the language these strings are written in.', format: 'language', }, name: { type: 'string', description: 'A short human-readable name for the label.', maxGraphemes: 64, maxLength: 640, }, description: { type: 'string', description: 'A longer description of what the label means and why it might be applied.', maxGraphemes: 10000, maxLength: 100000, }, }, }, labelValue: { type: 'string', knownValues: [ '!hide', '!no-promote', '!warn', '!no-unauthenticated', 'dmca-violation', 'doxxing', 'porn', 'sexual', 'nudity', 'nsfl', 'gore', ], }, }, }, ComAtprotoLabelQueryLabels: { lexicon: 1, id: 'com.atproto.label.queryLabels', defs: { main: { type: 'query', description: 'Find labels relevant to the provided AT-URI patterns. Public endpoint for moderation services, though may return different or additional results with auth.', 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 stream of labels (and negations). Public endpoint implemented by mod services. Uses same sequencing scheme as repo event stream.', parameters: { type: 'params', properties: { cursor: { type: 'integer', description: 'The last known event seq number 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', }, }, }, }, }, ComAtprotoLexiconSchema: { lexicon: 1, id: 'com.atproto.lexicon.schema', defs: { main: { type: 'record', description: "Representation of Lexicon schemas themselves, when published as atproto records. Note that the schema language is not defined in Lexicon; this meta schema currently only includes a single version field ('lexicon'). See the atproto specifications for description of the other expected top-level fields ('id', 'defs', etc).", key: 'nsid', record: { type: 'object', required: ['lexicon'], properties: { lexicon: { type: 'integer', description: "Indicates the 'version' of the Lexicon language. Must be '1' for the current atproto/Lexicon schema system.", }, }, }, }, }, }, ComAtprotoModerationCreateReport: { lexicon: 1, id: 'com.atproto.moderation.createReport', defs: { main: { type: 'procedure', description: 'Submit a moderation report regarding an atproto account or record. Implemented by moderation services (with PDS proxying), and requires auth.', input: { encoding: 'application/json', schema: { type: 'object', required: ['reasonType', 'subject'], properties: { reasonType: { type: 'ref', description: 'Indicates the broad category of violation the report is for.', ref: 'lex:com.atproto.moderation.defs#reasonType', }, reason: { type: 'string', maxGraphemes: 2000, maxLength: 20000, description: 'Additional context about the content and violation.', }, subject: { type: 'union', refs: [ 'lex:com.atproto.admin.defs#repoRef', 'lex:com.atproto.repo.strongRef', ], }, modTool: { type: 'ref', ref: 'lex:com.atproto.moderation.createReport#modTool', }, }, }, }, 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', maxGraphemes: 2000, maxLength: 20000, }, 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', }, }, }, }, }, modTool: { type: 'object', description: 'Moderation tool information for tracing the source of the action', required: ['name'], properties: { name: { type: 'string', description: "Name/identifier of the source (e.g., 'bsky-app/android', 'bsky-web/chrome')", }, meta: { type: 'unknown', description: 'Additional arbitrary metadata about the source', }, }, }, }, }, 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', 'com.atproto.moderation.defs#reasonAppeal', ], }, 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', }, reasonAppeal: { type: 'token', description: 'Appeal: appeal a previously taken moderation action', }, subjectType: { type: 'string', description: 'Tag describing a type of subject that might be reported.', knownValues: ['account', 'record', 'chat'], }, }, }, ComAtprotoRepoApplyWrites: { lexicon: 1, id: 'com.atproto.repo.applyWrites', defs: { main: { type: 'procedure', description: 'Apply a batch transaction of repository creates, updates, and deletes. Requires auth, implemented by PDS.', 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 (aka, current account).', }, validate: { type: 'boolean', description: "Can be set to 'false' to skip Lexicon schema validation of record data across all operations, 'true' to require it, or leave unset to validate only for known Lexicons.", }, 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', description: 'If provided, the entire operation will fail if the current repo commit CID does not match this value. Used to prevent conflicting repo mutations.', format: 'cid', }, }, }, }, output: { encoding: 'application/json', schema: { type: 'object', required: [], properties: { commit: { type: 'ref', ref: 'lex:com.atproto.repo.defs#commitMeta', }, results: { type: 'array', items: { type: 'union', refs: [ 'lex:com.atproto.repo.applyWrites#createResult', 'lex:com.atproto.repo.applyWrites#updateResult', 'lex:com.atproto.repo.applyWrites#deleteResult', ], closed: true, }, }, }, }, }, errors: [ { name: 'InvalidSwap', description: "Indicates that the 'swapCommit' parameter did not match current commit.", }, ], }, create: { type: 'object', description: 'Operation which creates a new record.', required: ['collection', 'value'], properties: { collection: { type: 'string', format: 'nsid', }, rkey: { type: 'string', maxLength: 512, format: 'record-key', description: 'NOTE: maxLength is redundant with record-key format. Keeping it temporarily to ensure backwards compatibility.', }, value: { type: 'unknown', }, }, }, update: { type: 'object', description: 'Operation which updates an existing record.', required: ['collection', 'rkey', 'value'], properties: { collection: { type: 'string', format: 'nsid', }, rkey: { type: 'string', format: 'record-key', }, value: { type: 'unknown', }, }, }, delete: { type: 'object', description: 'Operation which deletes an existing record.', required: ['collection', 'rkey'], properties: { collection: { type: 'string', format: 'nsid', }, rkey: { type: 'string', format: 'record-key', }, }, }, createResult: { type: 'object', required: ['uri', 'cid'], properties: { uri: { type: 'string', format: 'at-uri', }, cid: { type: 'string', format: 'cid', }, validationStatus: { type: 'string', knownValues: ['valid', 'unknown'], }, }, }, updateResult: { type: 'object', required: ['uri', 'cid'], properties: { uri: { type: 'string', format: 'at-uri', }, cid: { type: 'string', format: 'cid', }, validationStatus: { type: 'string', knownValues: ['valid', 'unknown'], }, }, }, deleteResult: { type: 'object', required: [], properties: {}, }, }, }, ComAtprotoRepoCreateRecord: { lexicon: 1, id: 'com.atproto.repo.createRecord', defs: { main: { type: 'procedure', description: 'Create a single new repository record. Requires auth, implemented by PDS.', 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 (aka, current account).', }, collection: { type: 'string', format: 'nsid', description: 'The NSID of the record collection.', }, rkey: { type: 'string', format: 'record-key', description: 'The Record Key.', maxLength: 512, }, validate: { type: 'boolean', description: "Can be set to 'false' to skip Lexicon schema validation of record data, 'true' to require it, or leave unset to validate only for known Lexicons.", }, record: { type: 'unknown', description: 'The record itself. Must contain a $type field.', }, 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', }, commit: { type: 'ref', ref: 'lex:com.atproto.repo.defs#commitMeta', }, validationStatus: { type: 'string', knownValues: ['valid', 'unknown'], }, }, }, }, errors: [ { name: 'InvalidSwap', description: "Indicates that 'swapCommit' didn't match current repo commit.", }, ], }, }, }, ComAtprotoRepoDefs: { lexicon: 1, id: 'com.atproto.repo.defs', defs: { commitMeta: { type: 'object', required: ['cid', 'rev'], properties: { cid: { type: 'string', format: 'cid', }, rev: { type: 'string', format: 'tid', }, }, }, }, }, ComAtprotoRepoDeleteRecord: { lexicon: 1, id: 'com.atproto.repo.deleteRecord', defs: { main: { type: 'procedure', description: "Delete a repository record, or ensure it doesn't exist. Requires auth, implemented by PDS.", input: {