You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/docs/commonTerms.md
+19-9Lines changed: 19 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,7 +27,7 @@ A `StrongReference` is a record contain both the [at:// uri](#uri) of a record,
27
27
28
28
Bluesky stores all your stuff in a repository on a Personal Data Server (PDS).
29
29
A repository contains various collections, and these collections contain records.
30
-
For example, when you write a post you are cerating a record in your repository in the `app.bsky.feed.post` collection.
30
+
For example, when you write a post you are creating a record in your repository in the `app.bsky.feed.post` collection.
31
31
32
32
A simple post record would, in JSON, look something like this
33
33
@@ -63,21 +63,30 @@ The Bluesky API documentation refers to a user or bot account as an`Actor`. Acto
63
63
64
64
### <aname="handles">Handles</a>
65
65
66
-
A `handle` is what you see in human readable terms, for example "blowdart.me". It's how you view a profile in the browser, for example https://bsky.app/profile/blowdart.me and it's how you @ people in posts.
66
+
A `handle` is what you see in human readable terms, for example "blowdart.me". It's how you view a profile in the browser, for example https://bsky.app/profile/blowdart.me and
67
+
it's how you @ people in posts.
67
68
68
-
However as you may have discovered handles can change. When registering on Bluesky you register with a *something*.bsky.social handle, which you can then change to be DNS "verified". If you change your handle your posts still remain, and people that follow you keep following you through the change. This is because underneath handles aren't often used by the APIs, an account is referenced by its `DID`.
69
+
However as you may have discovered handles can change. When registering on Bluesky you register with a *something*.bsky.social handle, which you can then change to be DNS "verified".
70
+
If you change your handle your posts still remain, and people that follow you keep following you through the change. This is because underneath handles aren't often used by the APIs,
A `DID` is your unique key on the atproto network. Under the covers Bluesky uses `DID`s, not handles for pretty much everything, sometimes accepting both and doing the work behind the scenes to resolve a handle into a `DID``.
75
+
A `DID` is your unique key on the atproto network. Under the covers Bluesky uses `DID`s, not handles for pretty much everything, sometimes accepting both and doing the
76
+
work behind the scenes to resolve a handle into a `DID``.
73
77
74
-
A `DID` looks something like this: `did:plc:hfgp6pj3akhqxntgqwramlbg`. The first part of the `DID` is the prefix declaring it's a `DID`, the second part is an identifier for the issuer (`plc` is a `DID` issued by Bluesky, `web` is another common identifier indicating an independently issued `DID`), and the final part is a unique reference issued by the issuer.
78
+
A `DID` looks something like this: `did:plc:hfgp6pj3akhqxntgqwramlbg`. The first part of the `DID` is the prefix declaring it's a `DID`,
79
+
the second part is an identifier for the issuer (`plc` is a `DID` issued by Bluesky, `web` is another common identifier indicating an independently issued `DID`),
80
+
and the final part is a unique reference issued by the issuer.
75
81
76
-
For example, the api to [get an actor profile](https://docs.bsky.app/docs/api/app-bsky-actor-get-profile) takes a `DID`or a handle (this either/or combination is represented as an At-Identifier), but things like [updateAccountPassword](https://docs.bsky.app/docs/api/com-atproto-admin-update-subject-status) take just a `DID`.
82
+
For example, the api to [get an actor profile](https://docs.bsky.app/docs/api/app-bsky-actor-get-profile) takes a `DID`or a handle
83
+
(this either/or combination is represented as an At-Identifier), but things like [updateAccountPassword](https://docs.bsky.app/docs/api/com-atproto-admin-update-subject-status) take just a `DID`.
77
84
78
85
When you login via an agent the authenticated user's `DID` is available via the `Did` property on the agent instance.
79
86
80
-
Bluesky's `DID` directory is available at https://web.plc.directory/. It servers up a `DidDoc` for a plc `DID` which allows discovery of things like a `DID`'s personal data server where authenticated API calls should go. The `BlueskyAgent` class take care of PDS discovery automatically, but you can retrieve a `DidDoc` yourself using the `DirectoryAgent``ResolveDidDocument` method.
87
+
Bluesky's `DID` directory is available at https://web.plc.directory/. It servers up a `DidDoc` for a plc `DID` which allows discovery of things like a `DID`'s personal data
88
+
server where authenticated API calls should go. The `BlueskyAgent` class take care of PDS discovery automatically,
89
+
but you can retrieve a `DidDoc` yourself using the `DirectoryAgent``ResolveDidDocument` method.
81
90
82
91
### <aname="resolvingHandles">Resolving a Handle to a DID</a>
83
92
@@ -87,7 +96,8 @@ The `AtProto` and `Bluesky` agents provide a method to resolve a `DID` for a `Ha
87
96
88
97
As you explore the APIs you while you write records you don't get records, instead you get views of records. You create a `Post` but what you see in your timeline is a `PostView`.
89
98
90
-
A view is how Bluesky aggregates information from multiple records into a single entity. For example a `PostView` takes information from not only the `Post` record, but also information about the post author via a `ProfileView`, and things like reply and like counts. If you've used a SQL database before you can think of a view like a select over multiple joined tables.
99
+
A view is how Bluesky aggregates information from multiple records into a single entity. For example a `PostView` takes information from not only the `Post` record,
100
+
but also information about the post author via a `ProfileView`, and things like reply and like counts.
101
+
If you've used a SQL database before you can think of a view like a select over multiple joined tables.
91
102
92
103
Views are generated by applications, the overall view over data that Bluesky presents is commonly referred to as the `AppView`.
Copy file name to clipboardExpand all lines: docs/docs/conversationsAndMessages.md
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -45,7 +45,8 @@ foreach (MessageViewBase message in getMessages.Result)
45
45
}
46
46
```
47
47
48
-
Once you've shown a user their messages you can update the read status of a conversation with `UpdateRead()` which takes the conversation id, and, optionally the message id of the last message seen.
48
+
Once you've shown a user their messages you can update the read status of a conversation with `UpdateRead()` which takes the conversation id, and,
49
+
optionally the message id of the last message seen.
`GetNotificationUnreadCount()` allows you to check if there's anything unread before you consider retrieving notifications. This could also be used for an indicator in an application or badge. `GetNotificationUnreadCount()` also takes an optional `DateTimeOffset` parameter to allow you to get the unread count from a particular date and time.
9
+
`GetNotificationUnreadCount()` allows you to check if there's anything unread before you consider retrieving notifications. This could also be used for an indicator in an application or badge.
10
+
`GetNotificationUnreadCount()` also takes an optional `DateTimeOffset` parameter to allow you to get the unread count from a particular date and time.
10
11
11
12
To retrieve your notifications, read or unread, you call `ListNotifications()`.
From there, you would perform the `.Succeded` check and work your way through the notifications collection exposed in the `Result` property. Each notification has a reason property.
19
+
From there, you would perform the `.Succeded` check and work your way through the notifications collection exposed in the `Result` property. Each notification has a reason property.
19
20
20
21
Each type of notification, `Follow`, `Like`, `Mention`, `Quote`, `Reply`, and `Repost` having varying types of information used to supplement the notification with appropriate information.
`UpdateNotificationSeenAt()` takes an optional `DateTimeOffset seenAt` parameter, so you can, and probably should, save a timestamp before you start working through notifications, and then use the saved timestamp once you've finished, so that notifications that happen after you retrieved the notification list don't get marked as seen. `UpdateNotificationSeenAt()` can also take a `seenAt` parameter in the past, which allows you to reset when Bluesky things you last saw notifications - which is very handy for testing any notification viewer you've written.
80
+
`UpdateNotificationSeenAt()` takes an optional `DateTimeOffset seenAt` parameter, so you can, and probably should, save a timestamp before you start working through notifications,
81
+
and then use the saved timestamp once you've finished, so that notifications that happen after you retrieved the notification list don't get marked as seen.
82
+
`UpdateNotificationSeenAt()` can also take a `seenAt` parameter in the past, which allows you to reset when Bluesky things you last saw notifications, which is very handy
83
+
for testing any notification viewer you've written.
80
84
81
-
A full sample can be found in the [Notifications](https://github.com/blowdart/idunno.atproto/tree/main/samples/Samples.Notifications) project in the [samples](https://github.com/blowdart/idunno.atproto/tree/main/samples) directory in this GitHub repository.
85
+
A full sample can be found in the [Notifications](https://github.com/blowdart/idunno.atproto/tree/main/samples/Samples.Notifications) project in the
86
+
[samples](https://github.com/blowdart/idunno.atproto/tree/main/samples) directory in this GitHub repository.
82
87
83
88
## <aname=cursorsPagination>Cursors and Pagination</a>
84
89
85
-
If you've looked at the source code for the [Notifications sample](https://github.com/blowdart/idunno.atproto/tree/main/samples/Samples.Notifications) you may have noticed it pages through notifications rather than get all the notifications at once.
90
+
If you've looked at the source code for the [Notifications sample](https://github.com/blowdart/idunno.atproto/tree/main/samples/Samples.Notifications) you may have noticed it pages
91
+
through notifications rather than get all the notifications at once.
86
92
87
93
The sample uses the `limit` and `cursor` parameters to get notifications one page at a time, consisting of five notifications per page.
## <a name="openGraphCards">Embedding an external link (Open Graph cards)</a>
386
386
387
-
[OpenGraph](https://ogp.me/) is a standard that allows web pages to become a rich object in a social graph. Open Graph metadata allows you to embed a rich link card in a Bluesky post, which will look something like this:
387
+
[OpenGraph](https://ogp.me/) is a standard that allows web pages to become a rich object in a social graph. Open Graph metadata allows you to embed a rich link card in a
388
+
Blueskypost, whichwilllooksomethinglikethis:
388
389
389
390

390
391
@@ -404,8 +405,8 @@ If you don't want to use a `PostBuilder` you can use the appropriate `Post()` me
Youcanuselibrarieslike [OpenGraph.net](https://github.com/ghorsey/OpenGraph-Net/) or [X.Web.MetaExtractor](https://www.nuget.org/packages/X.Web.MetaExtractor) to retrieve Open Graph properties from which you can construct a card.
408
-
Forexample, usingOpenGraph.Net
408
+
Youcanuselibrarieslike [OpenGraph.net](https://github.com/ghorsey/OpenGraph-Net/) or [X.Web.MetaExtractor](https://www.nuget.org/packages/X.Web.MetaExtractor) to retrieve
Copy file name to clipboardExpand all lines: docs/docs/profileEditing.md
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,8 @@
2
2
3
3
A user's profile consists of the user's title, a description, a profile picture and a banner picture, all of which can be left empty, as
4
4
well as other settings like a pinned post that is shown when someone views the account's profile page, a setting to discourage applications
5
-
for displaying the profile and posts to unauthenticated users and self labels, which can be any of the configuration [global label values](https://docs.bsky.app/docs/advanced-guides/moderation#global-label-values).
5
+
for displaying the profile and posts to unauthenticated users and self labels,
6
+
which can be any of the configuration [global label values](https://docs.bsky.app/docs/advanced-guides/moderation#global-label-values).
6
7
7
8
To get the profile record for the current user call `agent.GetProfileRecord()`.
Bluesky supports a composible verification system where various organications will verify accounts, for example the New York Times may verify their reporters. The
26
+
Bluesky supports a composable verification system where various organizations will verify accounts, for example the New York Times may verify their reporters. The
27
27
`Verification` property holds the verification status for a user, and a list of the verifiers who have verified it. The `VerifiedStatus` can be valid, invalid, none or unknown,
28
28
you can use this to decide if you want to display an indicator of the status to your users.
Copy file name to clipboardExpand all lines: docs/docs/sourceGeneration.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -112,7 +112,7 @@ For example, if you have a custom `AtProtoRecordValue` and corresponding `AtProt
112
112
113
113
Native AOT has benefits:
114
114
115
-
* Reduced disk footprint: Native AOT publishing produces a single executable containing just the code from exteneral dependencies that is used by your application.
115
+
* Reduced disk footprint: Native AOT publishing produces a single executable containing just the code from external dependencies that is used by your application.
116
116
* Reduced startup time: Native AOT can show reduced start-up times, meaning your app is ready to respond more quickly.
117
117
* Reduced memory usage: Native AOT apps can show reduced memory demands, depending on the work it does.
0 commit comments