An AT-URI 'Deeplink' lexicon?

Hi all,

I also have a prototype for this. I needed a way to mark “app X is able to open record Y at this URL”. I uploaded my design at GitHub - Igalia/at-templates · GitHub, if you want to take a look.

Leaving here some notes.

Template language

At first I started with a similar template language as the one that @byjp.me is proposing, but I quickly run into limitations with it. For most records, the did/handle/rkey are not enough to deep link to it into an app.

For example, to deep link to a app.bsky.feed.like record you’d probably want to open the post that the like is for, assuming that the user is logged in so they will see the post with the “like” icon on.

What I ended up doing, based on what I needed for bluesky/sifa/tangled records, was to support:

  • reading properties off the record
  • deferencing DIDs and AT URIs contained in those properties

There are some well-known variables (repo, did, handle, value which is the record contents, as well as some “transforms” to extract parts of an AT URIs (e.g. to extract the authority out of it).

Some example templates are:

  • Post on Bluesky: https://bsky.app/profile/{repo}/post/{rkey}
  • Like on Bluesky: https://bsky.app/profile/{value.subject.uri|atUriAuthority}/post/{value.subject.uri|atUriRkey}
  • standard.site document: {value.site->url}{value.path}
  • Tangled repo: https://tangled.org/{handle}/{value.name}
  • Sifa education information: https://sifa.id/p/{handle}#education

Information ownership

This information shouldn’t be tracked by whoever owns the definition of the record. As mentioned in the original post, users might want to open a Bluesky post in one of the many Bluesky clients that exist, and it’s not realistic for Bluesky to have to maintain that (it’s both too much work for them, and a single point of failure). Same for all the other record types.

Instead, it should be apps that advertise “hey, I know how to open this record, and you can do it as follows”.

The Community App Lexicon WG (Community App Lexicon WG) is already working on an app manifest that would let apps, among other things, define which record types they can deal with. Ideally, that same lexicon would be extended to also say how.

1 Like