atproto 2.2.0
atproto: ^2.2.0 copied to clipboard
The most famous and powerful Dart/Flutter library for AT Protocol.
Release Note #
2.2.0 #
- feat: added
ATProto.onSessionUpdated, surfacingServiceContext.onSessionUpdatedso callers can re-persist credentials rotated by an automatic refresh. Without it an app that persists the session it constructed the client with ends up storing a spent refresh token, since refresh tokens are single-use. - chore: bump
atproto_coreto^2.1.0.
2.1.0 #
- feat: added
ATProto.ctx, exposing theServiceContextthat backs every service. A wrapping client can now drive its own services from the same context instead of constructing a second one, which is required for correct session refresh because refresh tokens are single-use.
2.0.1 #
- docs: documented OAuth authentication in the README —
ATProto.fromOAuth(OAuthSessionManager),ATProto.fromOAuthSession(session, {oauthClient}), and the renamedoAuthSessionManagergetter. - docs: the Firehose section now shows the recommended typed
atproto.sync.subscribeReposAsMessages()API, keeping the rawsubscribeRepos()+SyncSubscribeReposAdaptorpath as the advanced alternative. - docs: noted that
retryConfigaccepts anyRetryStrategy, withRetryStrategy/RetryContext/RetryReasonre-exported fromcore.dart. - chore: bump
atproto_coreto^2.0.1andxrpcto^1.1.2.
2.0.0 #
- feat!:
ATProto.fromOAuth(OAuthSessionManager).fromOAuthSession(session, {oauthClient})now wraps a manager (passoauthClientfor auto-refresh); theoAuthSessiongetter is replaced byoAuthSessionManager. - fix: export
Subscription,SyncServiceImpl, andWebSocketChannelFactoryso subscription/sync return types are usable without a directatproto_core/xrpcdependency. - fix: automatic session refresh preserves
email/emailConfirmed/emailAuthFactor. - feat: the
retryConfigparameter now accepts anyRetryStrategy, not onlyRetryConfig, so callers can fully customize backoff and which failures retry.RetryStrategy/RetryContext/RetryReasonare re-exported. By default a procedure (POST) is no longer retried after an ambiguous failure the server may already have applied (seeatproto_core).
1.7.0 #
- feat: added
atproto.sync.subscribeReposAsMessages(), a Firehose subscription that yields already-decoded, typedUSyncSubscribeReposMessages (CBOR/CAR-decodedblocks, normalizedops/commit/prevDataCID links) instead of rawUint8Listframes. The existingsubscribeRepos()(raw bytes) is unchanged, and a frame that fails to decode surfaces as a stream error without terminating the subscription. - feat:
package:atproto/firehose.dartnow re-exports thecom.atproto.sync.subscribeReposmessage types, so a single import provides the adaptors, the typedUSyncSubscribeReposMessage, and itsisCommit/commitaccessors.
1.6.0 #
- feat: automatic access-token refresh in
ATProto.fromSession(wired throughcom.atproto.server.refreshSession);atproto.sessionreflects the new credentials.fromOAuthSessionis untouched, and all new parameters are optional (non-breaking). - fix!: hardened the Firehose against hostile input — removed the
refint-list heuristic incid_linksthat allowed any network user to crash every Firehose consumer by publishing a record containing"ref": [1,2,3](A-3). - fix:
#commitprevData/prevCID links are now converted, so sync v1.1 commits no longer degrade tounknown(A-1). - fix:
#syncframe blocks are decoded into a typedSyncevent (account migration/recovery) (A-2). - fix: Firehose error frames (
op == -1, e.g.FutureCursor/ConsumerTooSlow) now surface as a typedFirehoseErrorException, and text frames raise a typedFirehoseFrameExceptioninstead of aTypeError(A-8/A-10). - fix: CAR decode failures are surfaced instead of being silently turned into an empty map (A-9).
- fix:
protocolis now forwarded increate/refresh/deleteSession(A-7). - chore: removed dead, unexported repo adaptors (A-5/A-6/A-12) and regenerated services from the fixed
lex_gen($typeinjection, UTC datetime, required+nullable serialization). - chore: removed the internal, unexported
convertCidLinksno-op (and its call in the firehose adaptor) — CID links and byte strings are already normalized bydecodeCarinatproto_core. - fix!: regenerated from the fixed
lex_gen— a string field with bothknownValuesand adefaultis now non-nullable and carries its spec default instead of reportingnull:com.atproto.label.defs#labelValueDefinition.defaultSetting(warn) andcom.atproto.admin.getInviteCodes.sort(recent). The correspondinghasX/hasNotXgetters were removed (G-18). - chore: bump
atproto_coreto^1.3.0.
1.5.1 #
- chore: bump
atproto_coreto^1.2.2.
1.5.0 #
- feat: added
com.germnetwork.declarationrecord.
1.4.0 #
1.3.0 #
1.2.2 #
- FIX: Fixed type compatibility issues with AtUri parameters
- Corrected service method calls to properly handle AtUri objects instead of strings
- Improved type safety in API parameter handling
1.2.1 #
- IMPROVEMENT: Enhanced union type classes with sealed class implementation
- Union type classes are now generated as
sealedclasses instead ofabstractclasses - Enabled Dart's exhaustiveness checking for switch statements on union types
- Improved compile-time safety by ensuring all union cases are handled
- Prevents runtime errors from unhandled union variants through static analysis
- Union type classes are now generated as
1.2.0 #
- feat: Added Admin and Lexicon services to ATProto
- Added AdminService for
com.atproto.admin.*endpoints - Added LexiconService for
com.atproto.lexicon.*endpoints - Enhanced AT Protocol service coverage with comprehensive admin and lexicon functionality
- Added AdminService for
1.1.1 #
- MIGRATION: Updated to use the consolidated
at_primitivespackage for all AT Protocol primitive types. - IMPROVEMENT: Simplified dependency management by adopting unified primitive types from
at_primitives.
1.1.0 #
- feat: Version bump to v1.1.0 to reflect enhanced AT Protocol capabilities
- Minor version bump appropriate for new
com.atproto.temp.dereferenceScopeendpoint - Maintains compatibility while signaling new functionality
- Minor version bump appropriate for new
1.0.10 #
- chore: Update source files automatically (#2117)
- Added new
com.atproto.temp.dereferenceScopeendpoint for temporary scope dereferencing operations - Generated corresponding service methods, input/output types, and documentation
- Enhanced AT Protocol temporary service capabilities
- Added new
1.0.9 #
- BREAKING CHANGE: Enhanced lexicon known values naming with proper camelCase convention
- Enum values now use consistent namespaced naming (e.g.,
reasonAppeal→toolsOzoneReportDefsReasonAppeal) - Improved code generation for lexicon fragments and full URIs
- Updated test cases to match new enum naming convention
- Enum values now use consistent namespaced naming (e.g.,
- feat: Added support for lexicon fragment-only values (starting with '#')
- feat: Enhanced lexicon generation with context-aware naming based on lexicon ID
- fix: Improved enum naming consistency across all generated lexicon types
1.0.7 #
- fix: Drop
universal_iofor WASM compatibility.
1.0.6 #
- chore: fix
WARNING: The annotation 'JsonSerializable.new' can only be used on classes..
1.0.5 #
- Add service functions. Endpoints can be easily called as functions like
comAtprotoIdentityResolveDid - Expose
ServiceContextfromcorelibrary.
1.0.4 #
- chore: Removed outdated processes.
- fix: Use
@JsonSerializable(includeIfNull: false)for lex gen objects. - Add accessors that are useful when using records.
- supports
get,list,create,putanddeleteoperations for each record.
- supports
1.0.2 #
- Fix SDK constraint to '">=3.8.0 <4.0.0"'.
1.0.1 #
- Improved firehose conversion process. Use
SyncSubscribeReposAdaptorto convert byte data fromsubscribeRepos. - Now the endpoint argument
$unknowncannot override a known field. (#2068)
1.0.0 #
- Bump SDK constraint to '^3.8.0'.
- Fully replaced with objects generated based on lexicons.
0.13.3 #
- Bump
xrpc.
0.13.2 #
- Expose
JwtExtension.
0.13.1 #
- Retry if a DPoP nonce error occurs during the execution of
OAuthClient.refresh. - Add
restoreOAuthSessionfunction.
0.13.0 #
- Expose
atproto_oauthpackage. - Add
.fromOAuthSessionconstructor onATProto. - Rename
AuthTokentoJwt.- Change type of
scopefrom enum toString - Rename
subjecttosub - Rename
expiresAttoexp - Rename
issuedAttoiat
- Change type of
- Rename extended getters on
Session- From
accessTokentoaccessTokenJwt - From
refreshTokentorefreshTokenJwt
- From
0.12.8 #
- Bump
atproto_core. - Add
serviceparameter onATProto.getandATProto.post. (#1783) - Add
expandlxmparameters onServerService.getServiceAuth.
0.12.7 #
- Fixed a bug that prevented
RepoService.deleteRecordfrom working.
0.12.6 #
- Bump
atproto_core.
0.12.5 #
- Expose
.atprotoPdsEndpointfrom as an extension ofSession. You can get specific pds endpoint based on did document.
0.12.4 #
- Expose
.accessTokenand.refreshTokenas an extension fromSession.
0.12.3 #
- Change the type
.collectionproperty fromStringtoNSIDonAtUri. You need to do.collection.toString()when you want a string of collection. (#1551) - The package was refactored as follows.
package:bluesky/atproto.dart=> atproto featurespackage:bluesky/core.dart=> core features
0.12.2 #
- The
serviceis automatically resolved from the DID Document of the givenSession. (#1543)- If no authentication is performed and no
Sessionis passed, the defaultbsky.socialis used. - If the user passes a specific
service, it always respects the value of the user'sservice. - If something wrong happens for some reason, it uses
bsky.socialas default.
- If no authentication is performed and no
0.12.1 #
- Fixed a bug that prevented toJson on freezed objects from
atproto_core.
0.12.0 #
- Add
.activeand.statusproperties onSessionandCurrentSessionobjects. (#1516) - Move
BlobConverter,Blob,BlobReffromatprotopackage toatproto_core. - Add
.activeand.statusproperties onRepoobject. (#1517) - Add
.getRepoStatusmethod onSyncService. (#1517) - Applied naming convention based on lexicons on following objects.
SubscribedRepoCommit->CommitSubscribedRepoIdentity->IdentitySubscribedRepoHandle->HandleSubscribedRepoMigrate->MigrateSubscribedRepoTombstone->TombstoneSubscribedRepoInfo->InfoAccount->CreateAccountOutput
- Add
accountevent onSyncService.subscribeRepos. (#1517)
0.11.15 #
- Don't include Auth headers in
.headers.
0.11.14 #
- Bump
atproto_core. Add auth scopecom.atproto.appPassPrivileged. (#1501) - Add
.headersproperty. Returns the merged headers with global headers and auth header.
0.11.13 #
- Removed deprecated methods from following services.
IdentityServiceLabelServiceRepoServiceServerServiceSyncService
- Add
headersparameters on GET endpoints. You can specify additional headers.
0.11.12 #
- Add
privilegedinput and property onServerService.createAppPassword,AppPassword. (#1494)
0.11.11 #
- Removed
lex_annotation. - Removed deprecated properties on
ATProtoobject.
0.11.10 #
0.11.8 #
- Supported Labeler Service's objects. (#1316)
LabelValueLabelValueDefinitionLabelValueDefinitionStrings
- Added properties on
Labelobject.verexpsig
- Added
.contactproperty on output ofServerService.describeServer.
0.11.6 #
- Removed temp endpoints from
TempService..importRepo.pushBlob.transferAccount
- Added
didproperty onServerInfoobject. Returned fromServerService.describeServer. (#1279) - Added
.getServiceAuthonServerService. (#1280) - Added
.deactivateAccountonServerService. (#1278) - Added
.activateAccountonServerService. (#1276) - Added
.checkAccountStatusonServerService. (#1277) - Added
.listMissingBlobsonRepoService. (#1275) - Added
.importRepoonRepoService. (#1274) - Added
.submitPlcOperationonIdentityService. (#1273) - Added
.signPlcOperationonIdentityService. (#1272) - Added
.getRecommendedDidCredentialsonIdentityService. (#1270) - Added
.requestPlcOperationSignatureonIdentityService. (#1271) - Bump SDK constraint to '^3.3.0'.
- Supported
identityevent on.subscribeRepos. (#1289)
0.11.5 #
- Added
TempService. You can use it likeatproto.temp. (#1238).checkSignupQueue.importRepo.pushBlob.requestPhoneVerification.transferAccount
0.11.4 #
- Improved redundant error messages. Now it shows like
GET https://bsky.social/xrpc/com.atproto.identity.resolveHandle 400 Error: Params must have the property "handle". (#1253) - Exposed
.serviceand.relayServiceproperties onATProto. (#1254) - BugFix: Made sure to check if the subscribeRepos blocks can be decoded. (#1239)
- Added
plcOpparam onServerService.createAccount. (#969)
0.11.3 #
- Added
.getand.postmethods onATProtoobject. (#1217) - Added
atproto/lex_namespacespackage. You can use these constants for.getand.postmethods.
0.11.0 #
- Change the method name of each service to Lexicon's ID. Existing methods have been deprecated and should be replaced according to the deprecation message. (#1127)
0.10.1 #
- Add
rkeyon.createRecord.
0.10.0 #
- Upgraded
atproto_core. (#1112) - Optimized internal process. (#1114)
- Removed
streamServiceand addedrelayServiceinstead. Defaults tobsky.network. (#1116) - Renamed name of service objects. (#1118)
IdentitiesServicetoIdentityServiceLabelsServicetoLabelServiceRepositoriesServicetoRepoServiceServersServicetoServerService
- Deprecated property names on
ATProto. (#1118).servers: Use.serverinstead.identities: Use.identityinstead.repositories: Use.repoinstead.labels: Use.labelinstead
0.8.1 #
- Upgraded
atproto_core. (#999) - Fixed a bug that service names were not specified correctly when using stream endpoints.
- Added
.streamServiceproperty onATProto. Defaults tobsky.network.
0.7.2 #
- Supported
com.atproto.labels.queryLabelsandLabelsService. (#265) - Supported
com.atproto.labels.subscribeLabelsonLabelsService. (#340) - Added
.deleteSessionfunction. (#963) - Supported
com.atproto.server.reserveSigningKeyonServersService. (#953).createSigningKey
- Added
didDocfield onSessionandAccountobjects. (#968)
0.7.1 #
0.7.0 #
- Added
revonRepoobject. (#885) - Removed deprecated methods and object.
.refreshSession: Use function version instead..findRepoCheckout.findRepoCheckoutAsJson.findRepoHead.findRepoHeadAsJson
0.6.9 #
- Added
isEmailConfirmedfield onCurrentSession. (#857) - Supported
com.atproto.server.requestEmailUpdateonServersService. (#859)requestEmailUpdate
- Supported
com.atproto.server.requestEmailConfirmationonServersService. (#858)requestEmailConfirmation
- Supported
com.atproto.server.confirmEmailonServersService. (#855)requestEmailConfirmation
- Supported
com.atproto.server.updateEmailonServersService. (#860)updateEmail
0.6.8 #
- Upgraded
xrpcpackage. Fixed field names for rate limit.
0.6.6 #
- Added
.accessTokenand.refreshTokenproperties onSessionobject. You can get decoded token objects based on JWT tokens. Also you can decode JWT token withdecodeJwtfunction. (#787)
0.6.5 #
- Improved union type to always return Unknown type if conversion to a specific type fails. With this fix, an exception/error is no longer thrown when converting json to a specific type for union. (#775)
0.6.4 #
- Exposed
Platformenum. (#709) - Added
isValidAppPasswordfunction. (#713) - Removed fully deprecated endpoint on
SyncService. (#716)findRepoCommitPathsfindRepoCommitPathsAsJson
- Deprecated endpoint on
SyncService. (#717)findRepoCheckoutfindRepoCheckoutAsJsonfindRepoHeadfindRepoHeadAsJson
- Removed and added optional params on
.findRepoCommitsand.findRepoCommitsAsJsononSyncService. (#718)- Removed
earliestCommitCidlatestCommitCid
- Added
sinceCommitCid
- Removed
- Removed fully deprecated
rebaseRepomethod onRepositoriesService. - Added
findLatestCommitmethod onSyncService. Use it instead offindRepoHead. (#720) - Added params on
SubscribedRepoCommitobject. (#719)revsince(nullable)
0.6.3 #
- Moved
Sessionobject andcreateSessionfunction toatproto_core. And exposedrefreshSessionas a function. Also deprecatedServersService.refreshSessionmethod. (#686)
0.6.2 #
0.6.1 #
- Exposed freezed union objects. You can use them for pattern matching. (#600)
labels.dartULabelsSelLabelsULabelsUnknown
report_subject.dartUReportSubjectRepoRefUReportSubjectStrongRefUReportSubjectUnknown
subscribed_repo.dartUSubscribedRepoCommitUSubscribedRepoHandleUSubscribedRepoMigrateUSubscribedRepoTombstoneUSubscribedRepoInfoUSubscribedRepoUnknown
batch_action.dartUBatchActionCreateUBatchActionUpdateUBatchActionDelete
0.6.0 #
- Drop support for null unsafe Dart, bump SDK constraint to '^3.0.0'. (#599)
- Dart3 modifier applied.
0.5.8 #
0.5.4 #
- Upgraded
atproto_core. Fixed minor things.
0.5.3 #
- Removed deprecated properties. This is a property that was planned to be turned off in
v0.6.0, so there are no breaking changes.
0.5.2 #
- A method to retrieve response data as JSON from endpoints that perform GET communication has been added. These processes do not convert to a specific model object, thus improving performance. (#563)
IdentitiesServicefindDIDAsJson
RepositoriesServicefindRecordAsJsonfindRecordsAsJsonfindRepoInfoAsJson
ServersServicefindCurrentSessionAsJsonfindInviteCodesAsJsonfindAppPasswordsAsJsonfindServerInfoAsJson
SyncServicefindRepoCommitsAsJsonfindRepoCommitPathsAsJsonfindRepoBlocksAsJsonfindRepoCheckoutAsJsonfindRepoHeadAsJsonfindRecordAsJsonfindReposAsJson
0.5.1 #
- Supported
com.atproto.server.describeServerasfindServerInfoinServersService. (#260) - Supported
com.atproto.server.createInviteCodesascreateInviteCodesinServersService. (#258) identifierincreateSessionis now required.- Fixed to throw
UnsupportedErrorwhen an anonymous user tries to access an endpoint that requires authentication. (#564)
0.5.0 #
0.4.0 #
- Supported
com.atproto.sync.getRepoasfindRepoCommitsinSyncService. (#313) - Changed default timeout from 10 seconds to 30 seconds.
- Supported
com.atproto.sync.getCommitPathasfindRepoCommitPathsinSyncService. (#310) - Supported
com.atproto.sync.getBlocksasfindRepoBlocksinSyncService. (#308) - Supported
com.atproto.sync.getCheckoutasfindRepoCheckoutinSyncService. (#309) - Supported
com.atproto.sync.getHeadasfindRepoHeadinSyncService. (#311) - Supported
com.atproto.sync.getRecordasfindRecordinSyncService. (#312) - Supported
com.atproto.repo.listRecordsasfindRecordsinRepositoriesService. (#305) - Supported
com.atproto.repo.rebaseRepoasrebaseRepoinRepositoriesService. (#509) - Supported
com.atproto.sync.listReposasfindReposinSyncService. (#315) - Renamed object from
RepotoRepoInforeturned fromfindRepoInfoinRepositoriesService. - Renamed
RecordValuetoRecord. And nowcreateRecordandupdateRecordreturnsStrongRef. (#511) - Removed
BlobContextandLegacyBlob. Blobs in the old format were modified to be converted to the new format. (#514)
0.3.4 #
0.3.1 #
0.3.0 #
- Fixed type from
StrongReftoRecordofupdateRecordinRepositoriesService. - Updated SDK to
">=2.17.0 <4.0.0". (#406)
0.2.13 #
- Supported
com.atproto.repo.applyWritesasupdateBulkinRepositoriesService. Also added following utilities. (#306)createRecordsupdateRecordsdeleteRecords
- Added
toStrongRef()method inRecordandRecordValue. Be sure to check withhasStrongReforhasNotStrongRefwhen you usetoStrongRef()fromRecordValue, becausecidinRecordValueis nullable. (#367)
0.2.12 #
- Added
unknownfields for union types. The AT Protocol allows some endpoints to create records of types not officially supported. In such cases, theunknownfield is used to store the raw JSON for a safe and user-choice implementation. (#350)
0.2.11 #
- Removed
didparameter fromfindRecordinRepositoriesService.
0.2.9 #
0.2.7 #
0.2.6 #
- Supported
com.atproto.server.createAccount. (#256) - Supported
com.atproto.server.createInviteCode. (#257) - Added
protocoloption. Defaults toHTTPS. (#269) - Supported
com.atproto.server.deleteAccount. (#259) - Supported
com.atproto.server.requestDeleteAccount. (#273) - Supported
com.atproto.server.requestPasswordReset. (#263) - Supported
com.atproto.server.updatePassword. (#264) - Supported
com.atproto.server.createAppPassword. (#277) - Supported
com.atproto.server.deleteAppPassword. (#279) - Supported
com.atproto.server.listAppPasswords. (#278) - Supported
com.atproto.server.getAccountInviteCodes. (#261)
0.2.4 #
0.2.3 #
- Fixed lexicon method id from
com.atproto.handletocom.atproto.identity.
0.2.2 #
- Merged official refactoring. (#52)
- Renamed
SessionServicetoServersService - Renamed
handleparameter increateSessiontoidentifier - Removed parameter
collectionfromRepositoriesService.deleteRecord
- Renamed
0.2.1 #
0.2.0 #
0.1.1 #
0.1.0 #
- Refactored structures. (#70)
- Moved
Emptytoatproto_core - Moved
ATProtoResponsetoatproto_core - Moved
ATProtoRequesttoatproto_core
- Moved
0.0.4 #
- Fixed typo from
awtTokentoaccessJwt.
0.0.3 #
- Added
RepositoriesService.createRecorddestroyRecord
0.0.2 #
- Fixed links.
0.0.1 #
- First Release!