···4040 *
4141 * @param key - The key type for the record (e.g., "tid", "literal:self", "any")
4242 */
4343-extern dec record(target: unknown, key: valueof string);
4343+extern dec rec(target: unknown, key: valueof string);
44444545/**
4646 * Explicitly marks a field as required in the lexicon.
···2233namespace app.bsky.actor.status {
44 @doc("A declaration of a Bluesky account status.")
55- @record("literal:self")
55+ @rec("literal:self")
66 model Main {
77 @doc("The status for the account.")
88 @required
···11import "@tylex/emitter";
2233@doc("A representation of a record embedded in a Bluesky record (eg, a post). For example, a quote-post, or sharing a feed generator record.")
44-namespace app.bsky.embed.record {
44+namespace app.bsky.embed.`record` {
55 model Main {
66 @required record: com.atproto.repo.strongRef.Main;
77 }
···2233namespace app.bsky.feed.generator {
44 @doc("Record declaring of the existence of a feed generator, and containing metadata about it. The record can exist in any repository.")
55- @record("any")
55+ @rec("any")
66 model Main {
77 @required did: did;
88
···11import "@tylex/emitter";
2233namespace app.bsky.feed.like {
44- @record("tid")
44+ @rec("tid")
55 @doc("Record declaring a 'like' of a piece of subject content.")
66 model Main {
77 @required
···2233namespace app.bsky.feed.post {
44 @doc("Record containing a Bluesky post.")
55- @record("tid")
55+ @rec("tid")
66 model Main {
77 @doc("The primary post content. May be an empty string, if there are embeds.")
88 @maxGraphemes(300)
···11import "@tylex/emitter";
2233namespace app.bsky.feed.postgate {
44- @record("tid")
44+ @rec("tid")
55 @doc("Record defining interaction rules for a post. The record key (rkey) of the postgate record must match the record key of the post, and that record must be in the same repository.")
66 model Main {
77 @doc("Reference (AT-URI) to the post record.")
···11import "@tylex/emitter";
2233namespace app.bsky.feed.threadgate {
44- @record("tid")
44+ @rec("tid")
55 @doc("Record defining interaction gating rules for a thread (aka, reply controls). The record key (rkey) of the threadgate record must match the record key of the thread's root post, and that record must be in the same repository.")
66 model Main {
77 @doc("Reference (AT-URI) to the post record.")
···11import "@tylex/emitter";
2233namespace app.bsky.graph.block {
44- @record("tid")
44+ @rec("tid")
55 @doc("Record declaring a 'block' relationship against another account. NOTE: blocks are public in Bluesky; see blog posts for details.")
66 model Main {
77 @doc("DID of the account to be blocked.")
···11import "@tylex/emitter";
2233namespace app.bsky.graph.follow {
44- @record("tid")
44+ @rec("tid")
55 @doc("Record declaring a social 'follow' relationship of another account. Duplicate follows will be ignored by the AppView.")
66 model Main {
77 @required subject: did;
···2233namespace app.bsky.graph.list {
44 @doc("Record representing a list of accounts (actors). Scope includes both moderation-oriented lists and curration-oriented lists.")
55- @record("tid")
55+ @rec("tid")
66 model Main {
77 @doc("Display name for list; can not be empty.")
88 @minLength(1)
···11import "@tylex/emitter";
2233namespace app.bsky.graph.listblock {
44- @record("tid")
44+ @rec("tid")
55 @doc("Record representing a block relationship against an entire an entire list of accounts (actors).")
66 model Main {
77 @doc("Reference (AT-URI) to the mod list record.")
···11import "@tylex/emitter";
2233namespace app.bsky.graph.listitem {
44- @record("tid")
44+ @rec("tid")
55 @doc("Record representing an account's inclusion on a specific list. The AppView will ignore duplicate listitem records.")
66 model Main {
77 @doc("The account which is included on the list.")
···11import "@tylex/emitter";
2233namespace app.bsky.graph.starterpack {
44- @record("tid")
44+ @rec("tid")
55 @doc("Record defining a starter pack of actors and feeds for new users.")
66 model Main {
77 @doc("Display name for starter pack; can not be empty.")
···11import "@tylex/emitter";
2233namespace app.bsky.graph.verification {
44- @record("tid")
44+ @rec("tid")
55 @doc("Record declaring a verification relationship between two accounts. Verifications are only considered valid by an app if issued by an account the app considers trusted.")
66 model Main {
77 @doc("DID of the subject the verification applies to.")
···2233namespace app.bsky.labeler.service {
44 @doc("A declaration of the existence of labeler service.")
55- @record("literal:self")
55+ @rec("literal:self")
66 model Main {
77 @required policies: app.bsky.labeler.defs.LabelerPolicies;
88
···11import "@tylex/emitter";
2233namespace app.bsky.notification.declaration {
44- @record("literal:self")
44+ @rec("literal:self")
55 @doc("A declaration of the user's choices related to notifications that can be produced by them.")
66 model Main {
77 @doc("A declaration of the user's preference for allowing activity subscriptions from other users. Absence of a record implies 'followers'.")
···2233namespace com.atproto.lexicon.schema {
44 @doc("Representation of Lexicon schemas themselves, when published as atproto records. Note that the schema language is not defined in Lexicon; this meta schema currently only includes a single version field ('lexicon'). See the atproto specifications for description of the other expected top-level fields ('id', 'defs', etc).")
55- @record("nsid")
55+ @rec("nsid")
66 model Main {
77 @doc("Indicates the 'version' of the Lexicon language. Must be '1' for the current atproto/Lexicon schema system.")
88 @required
···6161// ============ Records ============
62626363namespace app.example.post {
6464- @record("tid")
6464+ @rec("tid")
6565 @doc("A post in the feed")
6666 model Main {
6767 @doc("Post text content")
···8484}
85858686namespace app.example.follow {
8787- @record("tid")
8787+ @rec("tid")
8888 @doc("A follow relationship")
8989 model Main {
9090 @doc("DID of the account being followed")
···9898}
9999100100namespace app.example.like {
101101- @record("tid")
101101+ @rec("tid")
102102 @doc("A like on a post")
103103 model Main {
104104 @doc("Post being liked")
···112112}
113113114114namespace app.example.repost {
115115- @record("tid")
115115+ @rec("tid")
116116 @doc("A repost of another post")
117117 model Main {
118118 @doc("Post being reposted")
···126126}
127127128128namespace app.example.profile {
129129- @record("self")
129129+ @rec("self")
130130 @doc("User profile information")
131131 model Main {
132132 @doc("Display name")