AT URI Scheme
The at
URL scheme is used to address records in the atproto network.
atp-url = "at://" authority path [ "#" fragment ]
authority = reg-name / did
path = [ "/" coll-nsid [ "/" record-id ] ]
coll-nsid = nsid
record-id = 1*pchar
did
is defined in https://w3c.github.io/did-core/#did-syntax.
reg-name
is defined in https://www.rfc-editor.org/rfc/rfc3986#section-3.2.2.
nsid
is defined in NameSpaced IDs (NSID).
pchar
is defined in https://www.rfc-editor.org/rfc/rfc3986#section-3.3.
fragment
is defined in https://www.rfc-editor.org/rfc/rfc3986#section-3.5.
The fragment segment only has meaning if the URL references a record. Its value maps according to "Field pathing" below.
Some example at
URLs:
Repository | at://alice.host.com |
Repository | at://did:plc:bv6ggog3tya2z3vxsub7hnal |
Collection | at://alice.host.com/io.example.song |
Record | at://alice.host.com/io.example.song/3yI5-c1z-cc2p-1a |
Record Field | at://alice.host.com/io.example.song/3yI5-c1z-cc2p-1a#/title |
Field pathing
All fields in atproto records are addressed using JSON Pointers in the fragment section of the URL.
const obj = {
"foo": 10,
"arr": [
{ "key": "value1" },
{ "key": "value2" }
]
}
get(obj, '#/foo') // => 10
get(obj, '#/arr') // => [Object, Object]
get(obj, '#/arr/0/key') // => "value1"
get(obj, '#/arr/1/key') // => "value2"