{"variants":[{"paths":["\/documentation\/atprotokit"],"traits":[{"interfaceLanguage":"swift"}]}],"hierarchy":{"paths":[[]]},"kind":"symbol","abstract":[{"text":"Develop and manage client and server-side applications for the AT Protocol and Bluesky.","type":"text"}],"metadata":{"externalID":"ATProtoKit","role":"collection","roleHeading":"Framework","images":[{"identifier":"atprotokit_icon.png","type":"icon"}],"title":"ATProtoKit","modules":[{"name":"ATProtoKit"}],"symbolKind":"module","color":{"standardColorIdentifier":"blue"}},"schemaVersion":{"major":0,"minor":3,"patch":0},"topicSections":[{"anchor":"Essentials","identifiers":["doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/Getting-Started-with-ATProtoKit","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATProtoKit","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATProtoAdmin","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATProtoBluesky","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATProtoBlueskyChat"],"title":"Essentials"},{"anchor":"Authentication-and-Session-Management","identifiers":["doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/CredentialStorageMigration","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATProtocolConfiguration","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATProtoKitConfiguration","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/SessionConfigurationArticle","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/SessionConfiguration","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/SessionAuthorization","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/SessionAuthorizationContext","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/AppPasswordAuthenticating","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATAccountCreating","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/AppPasswordCredentialStoring","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/AppPasswordSessionManaging","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/OAuthIntegration","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/OAuthWalkthrough","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATOAuthSessionConfiguration","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/OAuthSessionSynchronizing","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ClosureATRequestExecutor","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATRequestAuthorizationRequirement","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATRequestAuthenticator","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/UserSessionRegistryManaging","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/UserSessionRegistry","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/UserSession","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATCredentialStore","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/AppleSecureKeychain"],"title":"Authentication and Session Management"},{"anchor":"Lexicons-and-Records","identifiers":["doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/AppBskyLexicon","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ChatBskyLexicon","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ComAtprotoLexicon","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ToolsOzoneLexicon","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATRecordProtocol","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATRecordViewProtocol","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATRecordTypeRegistry","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATRecordConfiguration","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATUnionProtocol"],"title":"Lexicons and Records"},{"anchor":"UnknownType","identifiers":["doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/UnknownType","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/CodableValue","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/getRecordTutorial"],"title":"UnknownType"},{"anchor":"Event-Streams","identifiers":["doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATEventStreamConfiguration","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATFirehoseStream","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/FirehoseEventRepresentable","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/CBORDecodedBlock","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATCBORManager"],"title":"Event Streams"},{"anchor":"APIClientService","identifiers":["doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/APIClientService","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/APIClientConfiguration","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATRequestExecutor","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/SessionDebuggable","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ConsoleDebugger","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/SessionDebuggableArticle"],"title":"APIClientService"},{"anchor":"Utilities","identifiers":["doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATIdentityProtocol","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATProtoTools","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/DateFormatting-PropertyWrapper","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATFacetParser","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/SessionToken","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATRecordDecoder","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATLexiconKnownValue","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATBuiltInIdentityResolver","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/AttachmentLexiconLimit","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/Truncatable","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/APIHostname"],"title":"Utilities"},{"anchor":"Error-Handling","identifiers":["doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATProtoError"],"title":"Error Handling"},{"anchor":"Archived-Articles","identifiers":["doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/0210AuthFlowChange"],"title":"Archived Articles"},{"generated":true,"anchor":"Structures","identifiers":["doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/FirehoseEventRepositoryOperation","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/FirehoseFrameCommitMessage","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/FirehoseFrameHandleMessage","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/FirehoseFrameIdentityMessage","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/FirehoseFrameInfoMessage","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/FirehoseFrameMigrateMessage","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/FirehoseFrameTombstoneMessage","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/WebSocketFrameHeader"],"title":"Structures"},{"generated":true,"anchor":"Enumerations","identifiers":["doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/FirehoseFrameMessageUnion"],"title":"Enumerations"},{"generated":true,"anchor":"Extended-Modules","identifiers":["doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/Foundation","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/Swift"],"title":"Extended Modules"}],"identifier":{"url":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit","interfaceLanguage":"swift"},"sections":[],"primaryContentSections":[{"kind":"content","content":[{"level":2,"anchor":"Overview","text":"Overview","type":"heading"},{"inlineContent":[{"type":"text","text":"ATProtoKit is a Swift package designed for building applications and interacting with the AT Protocol (short for “Authenticated Transfer Protocol”) and Bluesky. It provides all necessary client-side implementations to seamlessly interact with the AT Protocol, and fully integrates the various features of Bluesky. The library supports a wide range of functionalities, from identifier validations (including NSIDs, DIDs, Record Keys, AT-URIs, and more) to data stream viewing, offering a robust toolset for developers at all skill levels."}],"type":"paragraph"},{"inlineContent":[{"type":"text","text":"ATProtoKit aims to be easy enough to use for novice developers, while also being extendable and advanced enough for more experienced developers."}],"type":"paragraph"},{"inlineContent":[{"type":"text","text":"Below is a very quick example to run the project:"}],"type":"paragraph"},{"syntax":"swift","code":["import ATProtoKit","","let config = ATProtocolConfiguration()","","Task {","    print(\"Starting application...\")","","    do {","        try await config.authenticate(with: \"example.bsky.social\", password: \"hunter2\")","","        let atProto = await ATProtoKit(sessionConfiguration: config)","        let atProtoBluesky = ATProtoBluesky(atProtoKitInstance: atProto)","","        let postResult = try await atProtoBluesky.createPostRecord(text: \"Hello Bluesky!\")","","        print(postResult)","    } catch {","        print(\"Error: \\(error)\")","    }","}"],"type":"codeListing"},{"inlineContent":[{"type":"text","text":"ATProtoKit is fully open source under the "},{"identifier":"https:\/\/github.com\/MasterJ93\/ATProtoKit\/blob\/main\/LICENSE.md","isActive":true,"type":"reference"},{"type":"text","text":". You can take a look at it and make contributions to it "},{"identifier":"https:\/\/github.com\/MasterJ93\/ATProtoKit","isActive":true,"type":"reference"},{"type":"text","text":". Some of the documentation has been copied or adapted from "},{"identifier":"https:\/\/github.com\/bluesky-social\/atproto","isActive":true,"type":"reference"},{"type":"text","text":". ATProtoKit adopts the "},{"identifier":"https:\/\/github.com\/MasterJ93\/ATProtoKit\/blob\/main\/ATProtoLicense\/ATPROTO-LICENSE.txt","isActive":true,"type":"reference"},{"type":"text","text":" from their repo."}],"type":"paragraph"},{"level":2,"anchor":"Whats-New-in-ATProtoKit","text":"What’s New in ATProtoKit","type":"heading"},{"items":["doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/OAuthIntegration","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/CredentialStorageMigration","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/OAuthWalkthrough","doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/SessionConfigurationArticle"],"style":"detailedGrid","type":"links"}]}],"references":{"doc://ATProtoKit/documentation/ATProtoKit/ConsoleDebugger":{"type":"topic","title":"ConsoleDebugger","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ConsoleDebugger","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"ConsoleDebugger","kind":"identifier"}],"kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"ConsoleDebugger"}],"abstract":[{"text":"A default implementation of the ","type":"text"},{"type":"codeVoice","code":"SessionDebuggable"},{"text":" protocol that logs requests and responses to","type":"text"},{"text":" ","type":"text"},{"text":"the console.","type":"text"}],"role":"symbol","url":"\/documentation\/atprotokit\/consoledebugger"},"doc://ATProtoKit/documentation/ATProtoKit/OAuthWalkthrough":{"role":"article","title":"Walkthrough: Implementing OAuth into a macOS App","url":"\/documentation\/atprotokit\/oauthwalkthrough","kind":"article","abstract":[{"type":"text","text":"Learn how to add AT Protocol-flavoured OAuth using ATProtoKit, ATIdentityTools, and other libraries."}],"type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/OAuthWalkthrough"},"doc://ATProtoKit/documentation/ATProtoKit/ATRecordDecoder":{"url":"\/documentation\/atprotokit\/atrecorddecoder","abstract":[{"text":"A decoder for a concrete ","type":"text"},{"isActive":true,"identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATRecordProtocol","type":"reference"},{"text":" type.","type":"text"}],"fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"ATRecordDecoder","kind":"identifier"}],"kind":"symbol","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATRecordDecoder","role":"symbol","type":"topic","title":"ATRecordDecoder","navigatorTitle":[{"text":"ATRecordDecoder","kind":"identifier"}]},"doc://ATProtoKit/documentation/ATProtoKit/FirehoseFrameIdentityMessage":{"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"FirehoseFrameIdentityMessage"}],"url":"\/documentation\/atprotokit\/firehoseframeidentitymessage","role":"symbol","kind":"symbol","abstract":[{"text":"A data model definition for an account identity change.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"FirehoseFrameIdentityMessage"}],"type":"topic","title":"FirehoseFrameIdentityMessage","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/FirehoseFrameIdentityMessage"},"doc://ATProtoKit/documentation/ATProtoKit/APIClientConfiguration":{"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"APIClientConfiguration"}],"url":"\/documentation\/atprotokit\/apiclientconfiguration","role":"symbol","kind":"symbol","abstract":[{"text":"A configuration container for customizing the behavior of an API client.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"APIClientConfiguration"}],"title":"APIClientConfiguration","type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/APIClientConfiguration"},"doc://ATProtoKit/documentation/ATProtoKit/ToolsOzoneLexicon":{"fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"ToolsOzoneLexicon","kind":"identifier"}],"url":"\/documentation\/atprotokit\/toolsozonelexicon","role":"symbol","kind":"symbol","abstract":[{"type":"text","text":"A group of lexicons within the "},{"type":"codeVoice","code":"tools.ozone"},{"type":"text","text":" namespace."}],"navigatorTitle":[{"kind":"identifier","text":"ToolsOzoneLexicon"}],"title":"ToolsOzoneLexicon","type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ToolsOzoneLexicon"},"doc://ATProtoKit/documentation/ATProtoKit/SessionAuthorization":{"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"SessionAuthorization"}],"url":"\/documentation\/atprotokit\/sessionauthorization","role":"symbol","kind":"symbol","abstract":[{"type":"text","text":"Describes an authorization value and related headers for an AT Protocol request."}],"navigatorTitle":[{"kind":"identifier","text":"SessionAuthorization"}],"title":"SessionAuthorization","type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/SessionAuthorization"},"doc://ATProtoKit/documentation/ATProtoKit/OAuthSessionSynchronizing":{"role":"symbol","title":"OAuthSessionSynchronizing","url":"\/documentation\/atprotokit\/oauthsessionsynchronizing","navigatorTitle":[{"kind":"identifier","text":"OAuthSessionSynchronizing"}],"kind":"symbol","abstract":[{"type":"text","text":"Synchronizes session context owned by an external AT Protocol OAuth implementation."}],"type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/OAuthSessionSynchronizing","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"OAuthSessionSynchronizing"}]},"doc://ATProtoKit/documentation/ATProtoKit/ATEventStreamConfiguration":{"fragments":[{"kind":"keyword","text":"protocol"},{"text":" ","kind":"text"},{"text":"ATEventStreamConfiguration","kind":"identifier"}],"url":"\/documentation\/atprotokit\/ateventstreamconfiguration","role":"symbol","kind":"symbol","abstract":[{"text":"The base protocol which all data stream-related classes conform to.","type":"text"}],"navigatorTitle":[{"text":"ATEventStreamConfiguration","kind":"identifier"}],"title":"ATEventStreamConfiguration","type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATEventStreamConfiguration"},"doc://ATProtoKit/documentation/ATProtoKit/ATProtoKit":{"url":"\/documentation\/atprotokit\/atprotokit","abstract":[{"text":"The base class that handles the main functionality of the ","type":"text"},{"type":"codeVoice","code":"ATProtoKit"},{"text":" API library.","type":"text"}],"fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"ATProtoKit"}],"kind":"symbol","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATProtoKit","role":"symbol","type":"topic","title":"ATProtoKit","navigatorTitle":[{"kind":"identifier","text":"ATProtoKit"}]},"doc://ATProtoKit/documentation/ATProtoKit/FirehoseFrameHandleMessage":{"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"FirehoseFrameHandleMessage"}],"url":"\/documentation\/atprotokit\/firehoseframehandlemessage","role":"symbol","kind":"symbol","abstract":[{"text":"A data model definition for an account handle change state.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"FirehoseFrameHandleMessage"}],"title":"FirehoseFrameHandleMessage","type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/FirehoseFrameHandleMessage"},"doc://ATProtoKit/documentation/ATProtoKit/ATCredentialStore":{"fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"ATCredentialStore"}],"url":"\/documentation\/atprotokit\/atcredentialstore","role":"symbol","kind":"symbol","abstract":[{"text":"A low-level protocol for storing opaque credential data in a secure, persistent backend.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"ATCredentialStore"}],"title":"ATCredentialStore","type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATCredentialStore"},"doc://ATProtoKit/documentation/ATProtoKit":{"type":"topic","title":"ATProtoKit","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit","images":[{"type":"icon","identifier":"atprotokit_icon.png"}],"kind":"symbol","abstract":[{"type":"text","text":"Develop and manage client and server-side applications for the AT Protocol and Bluesky."}],"role":"collection","url":"\/documentation\/atprotokit"},"doc://ATProtoKit/documentation/ATProtoKit/ATProtoBlueskyChat":{"fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"kind":"identifier","text":"ATProtoBlueskyChat"}],"url":"\/documentation\/atprotokit\/atprotoblueskychat","role":"symbol","kind":"symbol","abstract":[{"text":"The base class that handles the the Bluesky chat functionality of the ATProtoKit API library.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"ATProtoBlueskyChat"}],"title":"ATProtoBlueskyChat","type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATProtoBlueskyChat"},"doc://ATProtoKit/documentation/ATProtoKit/CredentialStorageMigration":{"role":"article","title":"Migrating Credential Storage","url":"\/documentation\/atprotokit\/credentialstoragemigration","kind":"article","abstract":[{"type":"text","text":"Migrate App Password credential handling from "},{"type":"codeVoice","code":"SecureKeychainProtocol"},{"type":"text","text":" in version 0.33.3 to"},{"type":"text","text":" "},{"type":"codeVoice","code":"ATCredentialStore"},{"type":"text","text":" in ATProtoKit 0.34.0."}],"type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/CredentialStorageMigration"},"doc://ATProtoKit/documentation/ATProtoKit/ClosureATRequestExecutor":{"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ClosureATRequestExecutor"}],"url":"\/documentation\/atprotokit\/closureatrequestexecutor","role":"symbol","kind":"symbol","abstract":[{"type":"text","text":"Executes requests by calling a sendable closure."}],"navigatorTitle":[{"kind":"identifier","text":"ClosureATRequestExecutor"}],"type":"topic","title":"ClosureATRequestExecutor","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ClosureATRequestExecutor"},"doc://ATProtoKit/documentation/ATProtoKit/ATAccountCreating":{"role":"symbol","title":"ATAccountCreating","url":"\/documentation\/atprotokit\/ataccountcreating","navigatorTitle":[{"kind":"identifier","text":"ATAccountCreating"}],"kind":"symbol","abstract":[{"type":"text","text":"Creates AT Protocol accounts through a session configuration."}],"type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATAccountCreating","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"ATAccountCreating"}]},"doc://ATProtoKit/documentation/ATProtoKit/FirehoseFrameMigrateMessage":{"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"FirehoseFrameMigrateMessage"}],"url":"\/documentation\/atprotokit\/firehoseframemigratemessage","role":"symbol","kind":"symbol","abstract":[{"text":"A data model definition for an account migration event.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"FirehoseFrameMigrateMessage"}],"title":"FirehoseFrameMigrateMessage","type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/FirehoseFrameMigrateMessage"},"doc://ATProtoKit/documentation/ATProtoKit/ATBuiltInIdentityResolver":{"url":"\/documentation\/atprotokit\/atbuiltinidentityresolver","abstract":[{"type":"text","text":"A lightweight, dependency-free "},{"identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATIdentityProtocol","isActive":true,"type":"reference"},{"type":"text","text":" conformer."}],"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ATBuiltInIdentityResolver"}],"kind":"symbol","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATBuiltInIdentityResolver","role":"symbol","type":"topic","title":"ATBuiltInIdentityResolver","navigatorTitle":[{"kind":"identifier","text":"ATBuiltInIdentityResolver"}]},"doc://ATProtoKit/documentation/ATProtoKit/ATProtoTools":{"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ATProtoTools"}],"url":"\/documentation\/atprotokit\/atprototools","role":"symbol","kind":"symbol","abstract":[{"type":"text","text":"A group of methods for miscellaneous aspects of ATProtoKit."}],"navigatorTitle":[{"kind":"identifier","text":"ATProtoTools"}],"title":"ATProtoTools","type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATProtoTools"},"doc://ATProtoKit/documentation/ATProtoKit/SessionConfiguration":{"role":"symbol","title":"SessionConfiguration","url":"\/documentation\/atprotokit\/sessionconfiguration","navigatorTitle":[{"kind":"identifier","text":"SessionConfiguration"}],"kind":"symbol","abstract":[{"type":"text","text":"Defines the request-time requirements shared by all ATProtoKit session configurations."}],"type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/SessionConfiguration","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"SessionConfiguration"}]},"doc://ATProtoKit/documentation/ATProtoKit/UserSession":{"type":"topic","title":"UserSession","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/UserSession","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"UserSession"}],"kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"UserSession"}],"abstract":[{"text":"Represents an authenticated user session within the AT Protocol.","type":"text"}],"role":"symbol","url":"\/documentation\/atprotokit\/usersession"},"doc://ATProtoKit/documentation/ATProtoKit/ATRequestExecutor":{"fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"ATRequestExecutor"}],"url":"\/documentation\/atprotokit\/atrequestexecutor","role":"symbol","kind":"symbol","abstract":[{"text":"An abstraction for executing network requests and returning raw data and response metadata.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"ATRequestExecutor"}],"title":"ATRequestExecutor","type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATRequestExecutor"},"doc://ATProtoKit/documentation/ATProtoKit/CodableValue":{"fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"CodableValue"}],"url":"\/documentation\/atprotokit\/codablevalue","role":"symbol","kind":"symbol","abstract":[{"text":"A type-safe and thread-safe representation of JSON-compatible values, used for encoding and","type":"text"},{"text":" ","type":"text"},{"text":"decoding arbitrary JSON data.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"CodableValue"}],"title":"CodableValue","type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/CodableValue"},"doc://ATProtoKit/documentation/ATProtoKit/ChatBskyLexicon":{"type":"topic","title":"ChatBskyLexicon","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ChatBskyLexicon","fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"ChatBskyLexicon","kind":"identifier"}],"kind":"symbol","navigatorTitle":[{"text":"ChatBskyLexicon","kind":"identifier"}],"abstract":[{"type":"text","text":"A group of lexicons within the "},{"code":"chat.bsky","type":"codeVoice"},{"type":"text","text":" namespace."}],"role":"symbol","url":"\/documentation\/atprotokit\/chatbskylexicon"},"doc://ATProtoKit/documentation/ATProtoKit/ATUnionProtocol":{"fragments":[{"kind":"keyword","text":"protocol"},{"text":" ","kind":"text"},{"text":"ATUnionProtocol","kind":"identifier"}],"url":"\/documentation\/atprotokit\/atunionprotocol","role":"symbol","kind":"symbol","abstract":[{"text":"A set of tools related to union ","type":"text"},{"type":"codeVoice","code":"enum"},{"text":"s.","type":"text"}],"navigatorTitle":[{"text":"ATUnionProtocol","kind":"identifier"}],"type":"topic","title":"ATUnionProtocol","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATUnionProtocol"},"bluesky_logo.png":{"identifier":"bluesky_logo.png","variants":[{"url":"\/images\/ATProtoKit\/bluesky_logo.png","traits":["1x","light"]}],"alt":"The Bluesky logo as a butterfly in white.","type":"image"},"doc://ATProtoKit/documentation/ATProtoKit/DateFormatting-PropertyWrapper":{"url":"\/documentation\/atprotokit\/dateformatting-propertywrapper","role":"collectionGroup","kind":"article","abstract":[{"text":"Convert dates to and from the ISO8601 format.","type":"text"}],"title":"Custom Date Encoding and Decoding","type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/DateFormatting-PropertyWrapper"},"doc://ATProtoKit/documentation/ATProtoKit/Truncatable":{"fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"Truncatable"}],"url":"\/documentation\/atprotokit\/truncatable","role":"symbol","kind":"symbol","abstract":[{"text":"A protocol that defines a method for truncating an object.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"Truncatable"}],"title":"Truncatable","type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/Truncatable"},"doc://ATProtoKit/documentation/ATProtoKit/ATLexiconKnownValue":{"fragments":[{"text":"protocol","kind":"keyword"},{"text":" ","kind":"text"},{"text":"ATLexiconKnownValue","kind":"identifier"}],"url":"\/documentation\/atprotokit\/atlexiconknownvalue","role":"symbol","kind":"symbol","abstract":[{"text":"Defines a string-backed Lexicon value whose schema uses an open set of known values.","type":"text"}],"navigatorTitle":[{"text":"ATLexiconKnownValue","kind":"identifier"}],"title":"ATLexiconKnownValue","type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATLexiconKnownValue"},"doc://ATProtoKit/documentation/ATProtoKit/ComAtprotoLexicon":{"type":"topic","title":"ComAtprotoLexicon","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ComAtprotoLexicon","fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"ComAtprotoLexicon"}],"kind":"symbol","navigatorTitle":[{"text":"ComAtprotoLexicon","kind":"identifier"}],"abstract":[{"text":"A group of lexicons within the ","type":"text"},{"code":"com.atproto","type":"codeVoice"},{"type":"text","text":" namespace."}],"role":"symbol","url":"\/documentation\/atprotokit\/comatprotolexicon"},"doc://ATProtoKit/documentation/ATProtoKit/0210AuthFlowChange":{"url":"\/documentation\/atprotokit\/0210authflowchange","role":"article","kind":"article","abstract":[{"text":"Learn about how to set up your project with the new authentication flow changes.","type":"text"}],"title":"Archived: 0.21 to 0.26 Authentication Flow Migration","type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/0210AuthFlowChange"},"doc://ATProtoKit/documentation/ATProtoKit/FirehoseEventRepositoryOperation":{"type":"topic","title":"FirehoseEventRepositoryOperation","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/FirehoseEventRepositoryOperation","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"FirehoseEventRepositoryOperation"}],"kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"FirehoseEventRepositoryOperation"}],"abstract":[{"text":"A data model definition for a repository operation.","type":"text"}],"role":"symbol","url":"\/documentation\/atprotokit\/firehoseeventrepositoryoperation"},"doc://ATProtoKit/documentation/ATProtoKit/SessionAuthorizationContext":{"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"SessionAuthorizationContext"}],"url":"\/documentation\/atprotokit\/sessionauthorizationcontext","role":"symbol","kind":"symbol","abstract":[{"type":"text","text":"Describes the AT Protocol identity and service endpoint made visible to ATProtoKit."}],"navigatorTitle":[{"kind":"identifier","text":"SessionAuthorizationContext"}],"type":"topic","title":"SessionAuthorizationContext","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/SessionAuthorizationContext"},"doc://ATProtoKit/documentation/ATProtoKit/ATFirehoseStream":{"type":"topic","title":"ATFirehoseStream","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATFirehoseStream","fragments":[{"text":"class","kind":"keyword"},{"text":" ","kind":"text"},{"text":"ATFirehoseStream","kind":"identifier"}],"kind":"symbol","navigatorTitle":[{"text":"ATFirehoseStream","kind":"identifier"}],"abstract":[{"type":"text","text":"The base class for Bluesky’s Firehose event stream."}],"role":"symbol","url":"\/documentation\/atprotokit\/atfirehosestream"},"atprotokit_icon.png":{"identifier":"atprotokit_icon.png","variants":[{"url":"\/images\/ATProtoKit\/atprotokit_icon.png","traits":["1x","light"]}],"alt":"A technology icon representing the ATProtoKit framework.","type":"image"},"doc://ATProtoKit/documentation/ATProtoKit/ATRecordProtocol":{"abstract":[{"type":"text","text":"The common interface for record structs in the AT Protocol."}],"url":"\/documentation\/atprotokit\/atrecordprotocol","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"ATRecordProtocol"}],"kind":"symbol","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATRecordProtocol","role":"symbol","type":"topic","title":"ATRecordProtocol","navigatorTitle":[{"kind":"identifier","text":"ATRecordProtocol"}]},"doc://ATProtoKit/documentation/ATProtoKit/ATRecordTypeRegistry":{"url":"\/documentation\/atprotokit\/atrecordtyperegistry","abstract":[{"text":"A registry for all decodable record types in the AT Protocol.","type":"text"}],"fragments":[{"text":"actor","kind":"keyword"},{"text":" ","kind":"text"},{"text":"ATRecordTypeRegistry","kind":"identifier"}],"kind":"symbol","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATRecordTypeRegistry","role":"symbol","type":"topic","title":"ATRecordTypeRegistry","navigatorTitle":[{"text":"ATRecordTypeRegistry","kind":"identifier"}]},"doc://ATProtoKit/documentation/ATProtoKit/ATRecordConfiguration":{"fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"ATRecordConfiguration"}],"url":"\/documentation\/atprotokit\/atrecordconfiguration","role":"symbol","kind":"symbol","abstract":[{"text":"A configuration protocol for managing record lexicons.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"ATRecordConfiguration"}],"title":"ATRecordConfiguration","type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATRecordConfiguration"},"doc://ATProtoKit/documentation/ATProtoKit/AppPasswordSessionManaging":{"role":"symbol","title":"AppPasswordSessionManaging","url":"\/documentation\/atprotokit\/apppasswordsessionmanaging","navigatorTitle":[{"kind":"identifier","text":"AppPasswordSessionManaging"}],"kind":"symbol","abstract":[{"type":"text","text":"Combines the capabilities required by ATProtoKit’s built-in App Password implementation."}],"type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/AppPasswordSessionManaging","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"AppPasswordSessionManaging"}]},"doc://ATProtoKit/documentation/ATProtoKit/Getting-Started-with-ATProtoKit":{"url":"\/documentation\/atprotokit\/getting-started-with-atprotokit","role":"article","kind":"article","abstract":[{"type":"text","text":"Sign in with a Bluesky account, send a post, and view the account’s posts."}],"images":[{"type":"icon","identifier":"bluesky_logo.png"}],"type":"topic","title":"Getting Started with ATProtoKit","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/Getting-Started-with-ATProtoKit"},"doc://ATProtoKit/documentation/ATProtoKit/CBORDecodedBlock":{"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"CBORDecodedBlock"}],"url":"\/documentation\/atprotokit\/cbordecodedblock","role":"symbol","kind":"symbol","abstract":[{"text":"A structure that holds information about IPLD objects.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"CBORDecodedBlock"}],"type":"topic","title":"CBORDecodedBlock","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/CBORDecodedBlock"},"doc://ATProtoKit/documentation/ATProtoKit/UserSessionRegistryManaging":{"role":"symbol","title":"UserSessionRegistryManaging","url":"\/documentation\/atprotokit\/usersessionregistrymanaging","navigatorTitle":[{"kind":"identifier","text":"UserSessionRegistryManaging"}],"kind":"symbol","abstract":[{"type":"text","text":"Manages the relationship between a session configuration and "},{"type":"reference","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/UserSessionRegistry","isActive":true},{"type":"text","text":"."}],"type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/UserSessionRegistryManaging","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"UserSessionRegistryManaging"}]},"doc://ATProtoKit/documentation/ATProtoKit/UserSessionRegistry":{"role":"symbol","title":"UserSessionRegistry","url":"\/documentation\/atprotokit\/usersessionregistry","navigatorTitle":[{"text":"UserSessionRegistry","kind":"identifier"}],"kind":"symbol","abstract":[{"text":"A registry that manages ","type":"text"},{"code":"UserSession","type":"codeVoice"},{"text":" instances, keyed by ","type":"text"},{"type":"codeVoice","code":"UUID"},{"type":"text","text":"."}],"type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/UserSessionRegistry","fragments":[{"text":"actor","kind":"keyword"},{"text":" ","kind":"text"},{"text":"UserSessionRegistry","kind":"identifier"}]},"doc://ATProtoKit/documentation/ATProtoKit/ATProtocolConfiguration":{"fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"ATProtocolConfiguration"}],"url":"\/documentation\/atprotokit\/atprotocolconfiguration","role":"symbol","kind":"symbol","abstract":[{"text":"Manages App Password authentication and session operations for an AT Protocol account.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"ATProtocolConfiguration"}],"type":"topic","title":"ATProtocolConfiguration","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATProtocolConfiguration"},"doc://ATProtoKit/documentation/ATProtoKit/AppPasswordAuthenticating":{"fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"AppPasswordAuthenticating"}],"url":"\/documentation\/atprotokit\/apppasswordauthenticating","role":"symbol","kind":"symbol","abstract":[{"type":"text","text":"Authenticates and maintains a legacy App Password session."}],"navigatorTitle":[{"kind":"identifier","text":"AppPasswordAuthenticating"}],"title":"AppPasswordAuthenticating","type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/AppPasswordAuthenticating"},"doc://ATProtoKit/documentation/ATProtoKit/OAuthIntegration":{"url":"\/documentation\/atprotokit\/oauthintegration","abstract":[{"type":"text","text":"Connect an OAuth implementation to ATProtoKit without giving up DPoP-aware request handling."}],"kind":"article","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/OAuthIntegration","role":"article","type":"topic","title":"Integrating OAuth in the AT Protocol"},"doc://ATProtoKit/documentation/ATProtoKit/ATOAuthSessionConfiguration":{"type":"topic","title":"ATOAuthSessionConfiguration","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATOAuthSessionConfiguration","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"ATOAuthSessionConfiguration"}],"kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"ATOAuthSessionConfiguration"}],"abstract":[{"type":"text","text":"A bridge between ATProtoKit and an app-owned OAuth implementation."}],"role":"symbol","url":"\/documentation\/atprotokit\/atoauthsessionconfiguration"},"doc://ATProtoKit/documentation/ATProtoKit/AppBskyLexicon":{"fragments":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"kind":"identifier","text":"AppBskyLexicon"}],"url":"\/documentation\/atprotokit\/appbskylexicon","role":"symbol","kind":"symbol","abstract":[{"type":"text","text":"A group of lexicons within the "},{"type":"codeVoice","code":"app.bsky"},{"type":"text","text":" namespace."}],"navigatorTitle":[{"text":"AppBskyLexicon","kind":"identifier"}],"title":"AppBskyLexicon","type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/AppBskyLexicon"},"doc://ATProtoKit/documentation/ATProtoKit/ATProtoBluesky":{"abstract":[{"type":"text","text":"The base class that handles all direct Bluesky-related functionality of the ATProtoKit"},{"type":"text","text":" "},{"type":"text","text":"API library."}],"url":"\/documentation\/atprotokit\/atprotobluesky","fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"ATProtoBluesky"}],"kind":"symbol","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATProtoBluesky","role":"symbol","type":"topic","title":"ATProtoBluesky","navigatorTitle":[{"kind":"identifier","text":"ATProtoBluesky"}]},"doc://ATProtoKit/documentation/ATProtoKit/ATFacetParser":{"fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"ATFacetParser"}],"url":"\/documentation\/atprotokit\/atfacetparser","role":"symbol","kind":"symbol","abstract":[{"text":"A utility class designed for parsing various elements like mentions, URLs, and hashtags","type":"text"},{"text":" ","type":"text"},{"text":"from text.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"ATFacetParser"}],"title":"ATFacetParser","type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATFacetParser"},"doc://ATProtoKit/documentation/ATProtoKit/ATRecordViewProtocol":{"role":"symbol","title":"ATRecordViewProtocol","url":"\/documentation\/atprotokit\/atrecordviewprotocol","navigatorTitle":[{"text":"ATRecordViewProtocol","kind":"identifier"}],"kind":"symbol","abstract":[{"type":"text","text":"A protocol for common and helper systems for record views."}],"type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATRecordViewProtocol","fragments":[{"text":"protocol","kind":"keyword"},{"text":" ","kind":"text"},{"text":"ATRecordViewProtocol","kind":"identifier"}]},"doc://ATProtoKit/documentation/ATProtoKit/SessionDebuggable":{"fragments":[{"text":"protocol","kind":"keyword"},{"text":" ","kind":"text"},{"text":"SessionDebuggable","kind":"identifier"}],"url":"\/documentation\/atprotokit\/sessiondebuggable","role":"symbol","kind":"symbol","abstract":[{"text":"A protocol for debugging and inspecting HTTP requests and responses within a network session.","type":"text"}],"navigatorTitle":[{"text":"SessionDebuggable","kind":"identifier"}],"title":"SessionDebuggable","type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/SessionDebuggable"},"doc://ATProtoKit/documentation/ATProtoKit/AppleSecureKeychain":{"abstract":[{"type":"text","text":"Stores opaque credential values in Apple Keychain."}],"url":"\/documentation\/atprotokit\/applesecurekeychain","fragments":[{"kind":"keyword","text":"actor"},{"kind":"text","text":" "},{"kind":"identifier","text":"AppleSecureKeychain"}],"kind":"symbol","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/AppleSecureKeychain","role":"symbol","type":"topic","title":"AppleSecureKeychain","navigatorTitle":[{"kind":"identifier","text":"AppleSecureKeychain"}]},"doc://ATProtoKit/documentation/ATProtoKit/UnknownType":{"fragments":[{"text":"enum","kind":"keyword"},{"text":" ","kind":"text"},{"text":"UnknownType","kind":"identifier"}],"url":"\/documentation\/atprotokit\/unknowntype","role":"symbol","kind":"symbol","abstract":[{"type":"text","text":"Handles decoding and encoding of records when their type is not known ahead of type."}],"navigatorTitle":[{"text":"UnknownType","kind":"identifier"}],"type":"topic","title":"UnknownType","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/UnknownType"},"doc://ATProtoKit/documentation/ATProtoKit/ATRequestAuthenticator":{"type":"topic","title":"ATRequestAuthenticator","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATRequestAuthenticator","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"ATRequestAuthenticator"}],"kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"ATRequestAuthenticator"}],"abstract":[{"type":"text","text":"Applies session authorization to requests before they are sent."}],"role":"symbol","url":"\/documentation\/atprotokit\/atrequestauthenticator"},"doc://ATProtoKit/documentation/ATProtoKit/WebSocketFrameHeader":{"fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"kind":"identifier","text":"WebSocketFrameHeader"}],"url":"\/documentation\/atprotokit\/websocketframeheader","role":"symbol","kind":"symbol","abstract":[],"navigatorTitle":[{"kind":"identifier","text":"WebSocketFrameHeader"}],"type":"topic","title":"WebSocketFrameHeader","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/WebSocketFrameHeader"},"doc://ATProtoKit/documentation/ATProtoKit/Foundation":{"url":"\/documentation\/atprotokit\/foundation","role":"collection","kind":"symbol","abstract":[],"type":"topic","title":"Foundation","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/Foundation"},"doc://ATProtoKit/documentation/ATProtoKit/SessionToken":{"fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"SessionToken"}],"url":"\/documentation\/atprotokit\/sessiontoken","role":"symbol","kind":"symbol","abstract":[{"type":"text","text":"A decoded session token."}],"navigatorTitle":[{"kind":"identifier","text":"SessionToken"}],"title":"SessionToken","type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/SessionToken"},"doc://ATProtoKit/documentation/ATProtoKit/FirehoseFrameMessageUnion":{"fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"FirehoseFrameMessageUnion"}],"url":"\/documentation\/atprotokit\/firehoseframemessageunion","role":"symbol","kind":"symbol","abstract":[{"text":"A reference containing the list of event messages.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"FirehoseFrameMessageUnion"}],"type":"topic","title":"FirehoseFrameMessageUnion","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/FirehoseFrameMessageUnion"},"https://github.com/MasterJ93/ATProtoKit/blob/main/LICENSE.md":{"url":"https:\/\/github.com\/MasterJ93\/ATProtoKit\/blob\/main\/LICENSE.md","identifier":"https:\/\/github.com\/MasterJ93\/ATProtoKit\/blob\/main\/LICENSE.md","type":"link","titleInlineContent":[{"text":"MIT license","type":"text"}],"title":"MIT license"},"doc://ATProtoKit/documentation/ATProtoKit/ATRequestAuthorizationRequirement":{"type":"topic","title":"ATRequestAuthorizationRequirement","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATRequestAuthorizationRequirement","fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"ATRequestAuthorizationRequirement"}],"kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"ATRequestAuthorizationRequirement"}],"abstract":[{"type":"text","text":"Describes whether an outgoing AT Protocol request requires session authorization."}],"role":"symbol","url":"\/documentation\/atprotokit\/atrequestauthorizationrequirement"},"doc://ATProtoKit/documentation/ATProtoKit/APIHostname":{"abstract":[{"type":"text","text":"A list of hostnames used for the AT Protocol."}],"url":"\/documentation\/atprotokit\/apihostname","fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"APIHostname"}],"kind":"symbol","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/APIHostname","role":"symbol","type":"topic","title":"APIHostname","navigatorTitle":[{"kind":"identifier","text":"APIHostname"}]},"doc://ATProtoKit/documentation/ATProtoKit/FirehoseFrameTombstoneMessage":{"role":"symbol","title":"FirehoseFrameTombstoneMessage","url":"\/documentation\/atprotokit\/firehoseframetombstonemessage","navigatorTitle":[{"text":"FirehoseFrameTombstoneMessage","kind":"identifier"}],"kind":"symbol","abstract":[{"text":"A data model definition for an account deletion event.","type":"text"}],"type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/FirehoseFrameTombstoneMessage","fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"FirehoseFrameTombstoneMessage","kind":"identifier"}]},"doc://ATProtoKit/documentation/ATProtoKit/FirehoseFrameInfoMessage":{"url":"\/documentation\/atprotokit\/firehoseframeinfomessage","abstract":[{"text":"A data model definition for an information state.","type":"text"}],"fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"FirehoseFrameInfoMessage","kind":"identifier"}],"kind":"symbol","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/FirehoseFrameInfoMessage","role":"symbol","type":"topic","title":"FirehoseFrameInfoMessage","navigatorTitle":[{"kind":"identifier","text":"FirehoseFrameInfoMessage"}]},"doc://ATProtoKit/documentation/ATProtoKit/SessionDebuggableArticle":{"url":"\/documentation\/atprotokit\/sessiondebuggablearticle","abstract":[{"type":"text","text":"Learn how to inspect JSON objects in your requests and responses."}],"kind":"article","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/SessionDebuggableArticle","role":"article","type":"topic","title":"Inspecting JSON with SessionDebuggable"},"https://github.com/MasterJ93/ATProtoKit":{"url":"https:\/\/github.com\/MasterJ93\/ATProtoKit","identifier":"https:\/\/github.com\/MasterJ93\/ATProtoKit","type":"link","title":"on GitHub","titleInlineContent":[{"text":"on GitHub","type":"text"}]},"doc://ATProtoKit/documentation/ATProtoKit/ATProtoKitConfiguration":{"type":"topic","title":"ATProtoKitConfiguration","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATProtoKitConfiguration","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"ATProtoKitConfiguration"}],"kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"ATProtoKitConfiguration"}],"abstract":[{"text":"Defines a protocol for configurations in the ","type":"text"},{"type":"codeVoice","code":"ATProtoKit"},{"text":" API library.","type":"text"}],"role":"symbol","url":"\/documentation\/atprotokit\/atprotokitconfiguration"},"doc://ATProtoKit/documentation/ATProtoKit/AttachmentLexiconLimit":{"fragments":[{"kind":"keyword","text":"enum"},{"text":" ","kind":"text"},{"text":"AttachmentLexiconLimit","kind":"identifier"}],"url":"\/documentation\/atprotokit\/attachmentlexiconlimit","role":"symbol","kind":"symbol","abstract":[{"type":"text","text":"The maximum blob sizes (in bytes) for post attachments, as declared by their"},{"type":"text","text":" "},{"text":"respective lexicons.","type":"text"}],"navigatorTitle":[{"text":"AttachmentLexiconLimit","kind":"identifier"}],"title":"AttachmentLexiconLimit","type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/AttachmentLexiconLimit"},"doc://ATProtoKit/documentation/ATProtoKit/FirehoseEventRepresentable":{"fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"FirehoseEventRepresentable"}],"url":"\/documentation\/atprotokit\/firehoseeventrepresentable","role":"symbol","kind":"symbol","abstract":[{"text":"A protocol used for the basic skeleton of the model definitions.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"FirehoseEventRepresentable"}],"title":"FirehoseEventRepresentable","type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/FirehoseEventRepresentable"},"doc://ATProtoKit/documentation/ATProtoKit/ATCBORManager":{"fragments":[{"kind":"keyword","text":"class"},{"kind":"text","text":" "},{"kind":"identifier","text":"ATCBORManager"}],"url":"\/documentation\/atprotokit\/atcbormanager","role":"symbol","kind":"symbol","abstract":[{"type":"text","text":"A class that handles CBOR-related objects."}],"navigatorTitle":[{"kind":"identifier","text":"ATCBORManager"}],"title":"ATCBORManager","type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATCBORManager"},"doc://ATProtoKit/documentation/ATProtoKit/FirehoseFrameCommitMessage":{"fragments":[{"text":"struct","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"FirehoseFrameCommitMessage"}],"url":"\/documentation\/atprotokit\/firehoseframecommitmessage","role":"symbol","kind":"symbol","abstract":[{"text":"A data model definition for a repository state change.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"FirehoseFrameCommitMessage"}],"type":"topic","title":"FirehoseFrameCommitMessage","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/FirehoseFrameCommitMessage"},"doc://ATProtoKit/documentation/ATProtoKit/ATIdentityProtocol":{"fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"ATIdentityProtocol"}],"url":"\/documentation\/atprotokit\/atidentityprotocol","role":"symbol","kind":"symbol","abstract":[{"type":"text","text":"A protocol for resolving decentralized identifiers (DIDs) or handles for user accounts in the"},{"type":"text","text":" "},{"type":"text","text":"AT Protocol."}],"navigatorTitle":[{"kind":"identifier","text":"ATIdentityProtocol"}],"title":"ATIdentityProtocol","type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATIdentityProtocol"},"doc://ATProtoKit/documentation/ATProtoKit/ATProtoError":{"url":"\/documentation\/atprotokit\/atprotoerror","abstract":[{"text":"The base exception class for ATProtoKit.","type":"text"}],"fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"ATProtoError"}],"kind":"symbol","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATProtoError","role":"symbol","type":"topic","title":"ATProtoError","navigatorTitle":[{"kind":"identifier","text":"ATProtoError"}]},"doc://ATProtoKit/documentation/ATProtoKit/APIClientService":{"fragments":[{"text":"struct","kind":"keyword"},{"text":" ","kind":"text"},{"text":"APIClientService","kind":"identifier"}],"url":"\/documentation\/atprotokit\/apiclientservice","role":"symbol","kind":"symbol","abstract":[{"text":"A struct which handle the most common HTTP requests for the AT Protocol.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"APIClientService"}],"title":"APIClientService","type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/APIClientService"},"doc://ATProtoKit/documentation/ATProtoKit/ATProtoAdmin":{"type":"topic","title":"ATProtoAdmin","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/ATProtoAdmin","fragments":[{"text":"class","kind":"keyword"},{"kind":"text","text":" "},{"kind":"identifier","text":"ATProtoAdmin"}],"kind":"symbol","navigatorTitle":[{"kind":"identifier","text":"ATProtoAdmin"}],"abstract":[{"type":"text","text":"A class containing all administrator and moderator functionality of the "},{"type":"codeVoice","code":"ATProtoKit"},{"type":"text","text":" "},{"type":"text","text":"API library."}],"role":"symbol","url":"\/documentation\/atprotokit\/atprotoadmin"},"doc://ATProtoKit/documentation/ATProtoKit/AppPasswordCredentialStoring":{"role":"symbol","title":"AppPasswordCredentialStoring","url":"\/documentation\/atprotokit\/apppasswordcredentialstoring","navigatorTitle":[{"kind":"identifier","text":"AppPasswordCredentialStoring"}],"kind":"symbol","abstract":[{"type":"text","text":"Persists the App Password and refresh token used by an App Password session."}],"type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/AppPasswordCredentialStoring","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"AppPasswordCredentialStoring"}]},"doc://ATProtoKit/documentation/ATProtoKit/Swift":{"url":"\/documentation\/atprotokit\/swift","role":"collection","kind":"symbol","abstract":[],"type":"topic","title":"Swift","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/Swift"},"doc://ATProtoKit/documentation/ATProtoKit/getRecordTutorial":{"url":"\/documentation\/atprotokit\/getrecordtutorial","role":"article","kind":"article","abstract":[{"text":"Get records easily without explicit pattern matching in only one line.","type":"text"}],"type":"topic","title":"Retrieving Records with getRecord()","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/getRecordTutorial"},"doc://ATProtoKit/documentation/ATProtoKit/SessionConfigurationArticle":{"role":"article","title":"Configuring and Implementing Sessions","url":"\/documentation\/atprotokit\/sessionconfigurationarticle","kind":"article","abstract":[{"type":"text","text":"Choose a built-in authentication configuration or implement ATProtoKit’s request-time session contract."}],"type":"topic","identifier":"doc:\/\/ATProtoKit\/documentation\/ATProtoKit\/SessionConfigurationArticle"},"https://github.com/bluesky-social/atproto":{"identifier":"https:\/\/github.com\/bluesky-social\/atproto","titleInlineContent":[{"type":"text","text":"Bluesky’s atproto repo"}],"url":"https:\/\/github.com\/bluesky-social\/atproto","title":"Bluesky’s atproto repo","type":"link"},"https://github.com/MasterJ93/ATProtoKit/blob/main/ATProtoLicense/ATPROTO-LICENSE.txt":{"identifier":"https:\/\/github.com\/MasterJ93\/ATProtoKit\/blob\/main\/ATProtoLicense\/ATPROTO-LICENSE.txt","titleInlineContent":[{"type":"text","text":"MIT license"}],"url":"https:\/\/github.com\/MasterJ93\/ATProtoKit\/blob\/main\/ATProtoLicense\/ATPROTO-LICENSE.txt","title":"MIT license","type":"link"}}}