···94with these params:
95 - `did`: The DID of the user.
96 - `handle`: The handle of the user.
97- - `includePfp` (optional): `true` to include the PFP URL.
9899**Example Request:**
100101-`https://esav.whey.party/xrpc/party.whey.esav.resolveIdentity?did=did:web:did12.whey.party&includePfp=true`
102103gets me
104···106107```json
108{
109- "did":"did:web:did12.whey.party",
110 "pdsUrl":"https://pds-nd.whey.party",
111- "handle":"dw.whey.party",
112- "pfp":"https://pds-nd.whey.party/xrpc/com.atproto.sync.getBlob?did=did:web:did12.whey.party&cid=bafkreibesqir3254ee3natyi3tadhmcjqyyeukoiqxsctsru7z3j4ws4mm"
000000000000000000000113}
114```
115
···94with these params:
95 - `did`: The DID of the user.
96 - `handle`: The handle of the user.
97+ - `includeBskyProfile` (optional): `true` to include the the entire bsky profile object as well.
9899**Example Request:**
100101+`https://esav.whey.party/xrpc/party.whey.esav.resolveIdentity?did=did:plc:cjfima2v3vnyfuzieu7bvjx7&includeBskyProfile=true`
102103gets me
104···106107```json
108{
109+ "did":"did:plc:cjfima2v3vnyfuzieu7bvjx7",
110 "pdsUrl":"https://pds-nd.whey.party",
111+ "handle":"forumtest.whey.party",
112+ "profile": {
113+ "$type": "app.bsky.actor.profile",
114+ "avatar": {
115+ "$type": "blob",
116+ "ref": {
117+ "$link": "bafkreiabb6nrbpgguh5xaake3shoyxh2i7lyj7nj7j3ejk77hdlvt4lhmu"
118+ },
119+ "mimeType": "image/png",
120+ "size": 35262
121+ },
122+ "banner": {
123+ "$type": "blob",
124+ "ref": {
125+ "$link": "bafkreieupktgazj4vxuxbj6dyf4trvltgok5ukdsnvvblsqqw26cmsvn7y"
126+ },
127+ "mimeType": "image/jpeg",
128+ "size": 931415
129+ },
130+ "createdAt": "2025-08-04T06:27:34.561Z",
131+ "description": "ForumTest discussion and development",
132+ "displayName": "ForumTest"
133+ }
134}
135```
136
+6-1
src/firehose.ts
···4interface FirehoseOptions {
5 config: AppConfig;
6 onEvent: OnEventCallback;
07}
89-export function startFirehose({ config, onEvent }: FirehoseOptions) {
10 let lastCursor: number | null = null;
1112 const connect = () => {
13 const url = new URL(config.jetstream_url);
14 if (lastCursor !== null) {
15 url.searchParams.set("cursor", lastCursor.toString());
000016 }
1718 const ws = new WebSocket(url.toString());