๐Ÿ€ ATproto library for gleam
atproto library gleam
35

Configure Feed

Select the types of activity you want to include in your feed.

possum: replace `_` with `String`

kacaii.dev (Jul 12, 2026, 2:44 PM -0300) d6e77ada e98a32cb

+37 -26
+6
CHANGELOG.md
··· 5 5 The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), 6 6 and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 7 7 8 + ## v2.1.0 - 2026-07-11 9 + 10 + ### Changed 11 + 12 + - [possum] Replaced `_` with `String` for functions that expect UTF-8 13 + 8 14 ## [v2.0.0] - 2026-07-11 9 15 10 16 ### Added
+1 -1
gleam.toml
··· 1 1 name = "possum" 2 - version = "2.0.0" 2 + version = "2.1.0" 3 3 4 4 description = "๐Ÿ€ ATproto library for gleam" 5 5 licences = ["Apache-2.0"]
+30 -25
src/possum.gleam
··· 48 48 /// Documentation: [xrpc/com.atproto.server](https://endpoints.bsky.app/#bluesky-app/tag/comatprotoserver) 49 49 const com_atproto_server = "xrpc/com.atproto.server" 50 50 51 + /// Documentation: [xrpc/com.atproto.sync](https://endpoints.bsky.app/#bluesky-app/tag/comatprotosync) 52 + const com_atproto_sync = "xrpc/com.atproto.sync" 53 + 51 54 /// Get current PLC Data for the indicated DID, 52 55 /// this returns information about a Decentralized Identifier (DID), 53 56 /// including their handle and service endpoint. ··· 97 100 /// 98 101 /// Documentation: [DID PLC Directory](https://web.plc.directory/) 99 102 pub fn get_plc_data( 100 - request: request.Request(_), 103 + request: request.Request(String), 101 104 did: did.Did, 102 - ) -> request.Request(_) { 105 + ) -> request.Request(String) { 103 106 request 104 107 |> request.prepend_header("accept", "application/json") 105 108 |> request.set_host("plc.directory") ··· 131 134 /// 132 135 /// Documentation: [HTTPS well-known Method](https://atproto.com/specs/handle#https-well-known-method) 133 136 pub fn resolve_well_known_did( 134 - request: request.Request(_), 137 + request: request.Request(String), 135 138 host: String, 136 - ) -> request.Request(_) { 139 + ) -> request.Request(String) { 137 140 request 138 141 |> request.set_host(host) 139 142 |> request.set_method(http.Get) ··· 171 174 /// 172 175 /// Endpoint Docs: [/xrpc/com.atproto.identity.resolveHandle](https://endpoints.bsky.app/#bluesky-app/tag/comatprotoidentity/GET/xrpc/com.atproto.identity.resolveHandle) 173 176 pub fn resolve_handle( 174 - request: request.Request(_), 177 + request: request.Request(String), 175 178 handle: handle.Handle, 176 - ) -> request.Request(_) { 179 + ) -> request.Request(String) { 177 180 request 178 181 |> request.prepend_header("accept", "application/json") 179 182 |> request.set_method(http.Get) ··· 231 234 /// 232 235 /// Endpoint Docs: [/xrpc/com.atproto.server.createSession](https://endpoints.bsky.app/#bluesky-app/tag/comatprotoserver/POST/xrpc/com.atproto.server.createSession) 233 236 pub fn create_session( 234 - request: request.Request(_), 237 + request: request.Request(String), 235 238 did: did.Did, 236 239 app_password app_password: String, 237 240 allow_takendown allow_takendown: option.Option(Bool), 238 241 auth_factor_token auth_factor_token: option.Option(String), 239 - ) -> request.Request(_) { 242 + ) -> request.Request(String) { 240 243 let values = [ 241 244 #("identifier", json.string(did.to_string(did))), 242 245 #("password", json.string(app_password)), ··· 294 297 /// 295 298 /// Endpoint Docs: [/xrpc/com.atproto.server.refreshSession](https://endpoints.bsky.app/#bluesky-app/tag/comatprotoserver/POST/xrpc/com.atproto.server.refreshSession) 296 299 pub fn refresh_session( 297 - request: request.Request(_), 300 + request: request.Request(String), 298 301 refresh token: String, 299 - ) -> request.Request(_) { 302 + ) -> request.Request(String) { 300 303 request 301 304 |> authorized(token) 302 305 |> request.prepend_header("accept", "application/json") ··· 336 339 /// ``` 337 340 /// 338 341 /// Endpoint Docs: [/xrpc/com.atproto.server.getSession](https://endpoints.bsky.app/#bluesky-app/tag/comatprotoserver/POST/xrpc/com.atproto.server.getSession) 339 - pub fn get_session_info(request: request.Request(_)) -> request.Request(_) { 342 + pub fn get_session_info( 343 + request: request.Request(String), 344 + ) -> request.Request(String) { 340 345 request 341 346 |> request.prepend_header("accept", "application/json") 342 347 |> request.set_method(http.Get) ··· 359 364 /// ``` 360 365 /// 361 366 pub fn authorized( 362 - request: request.Request(_), 367 + request: request.Request(String), 363 368 access_token token: String, 364 - ) -> request.Request(_) { 369 + ) -> request.Request(String) { 365 370 request.prepend_header(request, "authorization", "bearer " <> token) 366 371 } 367 372 ··· 398 403 /// 399 404 /// Endpoint Docs: [/xrpc/com.atproto.repo.describeRepo](https://endpoints.bsky.app/#bluesky-app/tag/comatprotorepo/GET/xrpc/com.atproto.repo.describeRepo) 400 405 pub fn describe_repository( 401 - request: request.Request(_), 406 + request: request.Request(String), 402 407 did: did.Did, 403 - ) -> request.Request(_) { 408 + ) -> request.Request(String) { 404 409 request 405 410 |> request.prepend_header("accept", "application/json") 406 411 |> request.set_method(http.Get) ··· 462 467 /// 463 468 /// Endpoint Docs: [/xrpc/com.atproto.repo.createRecord](https://endpoints.bsky.app/#bluesky-app/tag/comatprotorepo/POST/xrpc/com.atproto.repo.createRecord) 464 469 pub fn create_record( 465 - request: request.Request(_), 470 + request: request.Request(String), 466 471 did: did.Did, 467 472 collection nsid: nsid.Nsid, 468 473 rkey rkey: option.Option(String), 469 474 record record: List(#(String, json.Json)), 470 475 swap_commit swap_commit: option.Option(String), 471 476 validate validate: option.Option(Bool), 472 - ) -> request.Request(_) { 477 + ) -> request.Request(String) { 473 478 let body = [ 474 479 #("collection", json.string(nsid.to_string(nsid))), 475 480 #("record", json.object(record)), ··· 538 543 /// Endpoint Docs: [/xrpc/com.atproto.repo.getRecord](https://endpoints.bsky.app/#bluesky-app/tag/comatprotorepo/GET/xrpc/com.atproto.repo.getRecord) 539 544 /// Documentation: [atproto.com](https://atproto.com/specs/record-key) 540 545 pub fn get_record( 541 - request: request.Request(_), 546 + request: request.Request(String), 542 547 did: did.Did, 543 548 collection nsid: nsid.Nsid, 544 549 rkey rkey: String, 545 550 cid cid: option.Option(String), 546 - ) -> request.Request(_) { 551 + ) -> request.Request(String) { 547 552 let query = [ 548 553 #("repo", did.to_string(did)), 549 554 #("rkey", rkey), ··· 604 609 /// 605 610 /// Endpoint Docs: [/xrpc/com.atproto.repo.listRecords](https://endpoints.bsky.app/#bluesky-app/tag/comatprotorepo/GET/xrpc/com.atproto.repo.listRecords) 606 611 pub fn list_records( 607 - request: request.Request(_), 612 + request: request.Request(String), 608 613 did: did.Did, 609 614 collection nsid: nsid.Nsid, 610 615 limit limit: option.Option(Int), 611 616 cursor cursor: option.Option(String), 612 617 reverse reverse: option.Option(Bool), 613 - ) -> request.Request(_) { 618 + ) -> request.Request(String) { 614 619 let query = [ 615 620 #("repo", did.to_string(did)), 616 621 #("collection", nsid.to_string(nsid)), ··· 684 689 /// 685 690 /// Endpoint Docs: [/xrpc/com.atproto.repo.deleteRecord](https://endpoints.bsky.app/#bluesky-app/tag/comatprotorepo/POST/xrpc/com.atproto.repo.deleteRecord) 686 691 pub fn delete_record( 687 - request: request.Request(_), 692 + request: request.Request(String), 688 693 did: did.Did, 689 694 collection nsid: nsid.Nsid, 690 695 rkey rkey: String, 691 696 swap_commit swap_commit: option.Option(String), 692 697 swap_record swap_record: option.Option(String), 693 - ) -> request.Request(_) { 698 + ) -> request.Request(String) { 694 699 let body = [ 695 700 #("repo", json.string(did.to_string(did))), 696 701 #("collection", json.string(nsid.to_string(nsid))), ··· 771 776 /// 772 777 /// Endpoint Docs: [/xrpc/com.atproto.repo.putRecord](https://endpoints.bsky.app/#bluesky-app/tag/comatprotorepo/POST/xrpc/com.atproto.repo.putRecord) 773 778 pub fn put_record( 774 - request: request.Request(_), 779 + request: request.Request(String), 775 780 did: did.Did, 776 781 collection nsid: nsid.Nsid, 777 782 rkey rkey: String, ··· 779 784 swap_commit swap_commit: option.Option(String), 780 785 swap_record swap_record: option.Option(String), 781 786 validate validate: option.Option(Bool), 782 - ) -> request.Request(_) { 787 + ) -> request.Request(String) { 783 788 let body = [ 784 789 #("collection", json.string(nsid.to_string(nsid))), 785 790 #("record", json.object(record)),