Bluesky record types

app.bsky.graph.block github ↗︎
Record declaring a 'block' relationship against another account. NOTE: blocks are public in Bluesky; see blog posts for details.
key=tid
subject
required string format=did // DID of the account to be blocked.
createdAt
required string format=datetime
example
{ "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srvx", "uri": "at://did:plc:b3pn34agqqchkaf75v7h43dx/app.bsky.graph.block/3lbs2eczkuk2c", "value": { "$type": "app.bsky.graph.block", "subject": "did:plc:c3pn34agqqchkaf75v7h43dx", "createdAt": "2024-11-25T00:04:08.934Z" } }
app.bsky.graph.follow github ↗︎
Record declaring a social 'follow' relationship of another account. Duplicate follows will be ignored by the AppView.
key=tid
subject
required string format=did
createdAt
required string format=datetime
example
{ "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srvx", "uri": "at://did:plc:b3pn34agqqchkaf75v7h43dx/app.bsky.graph.follow/3lbs2eczkuk2c", "value": { "$type": "app.bsky.graph.follow", "subject": "did:plc:c3pn34agqqchkaf75v7h43dx", "createdAt": "2024-11-25T00:04:08.934Z" } }
app.bsky.graph.listblock github ↗︎
Record representing a block relationship against an entire an entire list of accounts (actors).
key=tid
subject
required string format=at-uri // Reference (AT-URI) to the mod list record.
createdAt
required string format=datetime
example
{ "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srvx", "uri": "at://did:plc:b3pn34agqqchkaf75v7h43dx/app.bsky.graph.listblock/3lbs2eczkuk2c", "value": { "$type": "app.bsky.graph.listblock", "subject": "at://did:plc:c3pn34agqqchkaf75v7h43dx/the.type/the-key", "createdAt": "2024-11-25T00:04:08.934Z" } }
app.bsky.graph.starterpack github ↗︎
Record defining a starter pack of actors and feeds for new users.
key=tid
name
required string maxGraphemes=50 minLength=1 maxLength=500 // Display name for starter pack; can not be empty.
description
string maxGraphemes=300 maxLength=3000
descriptionFacets
array of app.bsky.richtext.facet
list
required string format=at-uri // Reference (AT-URI) to the list record.
feeds
array maxLength=3 of app.bsky.graph.starterpack#feedItem
createdAt
required string format=datetime
example
{ "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srvx", "uri": "at://did:plc:b3pn34agqqchkaf75v7h43dx/app.bsky.graph.starterpack/3lbs2eczkuk2c", "value": { "$type": "app.bsky.graph.starterpack", "name": "asdf", "description": "asdf", "descriptionFacets": [ { "index": { "byteStart": 100, "byteEnd": 100 }, "features": [ { "did": "did:plc:c3pn34agqqchkaf75v7h43dx" } ] } ], "list": "at://did:plc:c3pn34agqqchkaf75v7h43dx/the.type/the-key", "feeds": [ { "uri": "at://did:plc:c3pn34agqqchkaf75v7h43dx/the.type/the-key" } ], "createdAt": "2024-11-25T00:04:08.934Z" } }
app.bsky.graph.listitem github ↗︎
Record representing an account's inclusion on a specific list. The AppView will ignore duplicate listitem records.
key=tid
subject
required string format=did // The account which is included on the list.
list
required string format=at-uri // Reference (AT-URI) to the list record (app.bsky.graph.list).
createdAt
required string format=datetime
example
{ "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srvx", "uri": "at://did:plc:b3pn34agqqchkaf75v7h43dx/app.bsky.graph.listitem/3lbs2eczkuk2c", "value": { "$type": "app.bsky.graph.listitem", "subject": "did:plc:c3pn34agqqchkaf75v7h43dx", "list": "at://did:plc:c3pn34agqqchkaf75v7h43dx/the.type/the-key", "createdAt": "2024-11-25T00:04:08.934Z" } }
app.bsky.graph.list github ↗︎
Record representing a list of accounts (actors). Scope includes both moderation-oriented lists and curration-oriented lists.
key=tid
purpose
required string knownValues=app.bsky.graph.defs#modlist,app.bsky.graph.defs#curatelist,app.bsky.graph.defs#referencelist // Defines the purpose of the list (aka, moderation-oriented or curration-oriented)
name
required string minLength=1 maxLength=64 // Display name for list; can not be empty.
description
string maxGraphemes=300 maxLength=3000
descriptionFacets
array of app.bsky.richtext.facet
avatar
blob accept=image/png,image/jpeg maxSize=1000000
labels
union of com.atproto.label.defs#selfLabels
createdAt
required string format=datetime
example
{ "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srvx", "uri": "at://did:plc:b3pn34agqqchkaf75v7h43dx/app.bsky.graph.list/3lbs2eczkuk2c", "value": { "$type": "app.bsky.graph.list", "purpose": "app.bsky.graph.defs#modlist", "name": "asdf", "description": "asdf", "descriptionFacets": [ { "index": { "byteStart": 100, "byteEnd": 100 }, "features": [ { "did": "did:plc:c3pn34agqqchkaf75v7h43dx" } ] } ], "avatar": { "$type": "blob", "mimeType": "image/png", "ref": { "$link": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srv2" }, "size": 1000000 }, "labels": { "values": [ { "val": "asdf" } ] }, "createdAt": "2024-11-25T00:04:08.934Z" } }
app.bsky.feed.generator github ↗︎
Record declaring of the existence of a feed generator, and containing metadata about it. The record can exist in any repository.
key=any
did
required string format=did
displayName
required string maxGraphemes=24 maxLength=240
description
string maxGraphemes=300 maxLength=3000
descriptionFacets
array of app.bsky.richtext.facet
avatar
blob accept=image/png,image/jpeg maxSize=1000000
acceptsInteractions
boolean // Declaration that a feed accepts feedback interactions from a client through app.bsky.feed.sendInteractions
labels
union of com.atproto.label.defs#selfLabels // Self-label values
createdAt
required string format=datetime
example
{ "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srvx", "uri": "at://did:plc:b3pn34agqqchkaf75v7h43dx/app.bsky.feed.generator/anything", "value": { "$type": "app.bsky.feed.generator", "did": "did:plc:c3pn34agqqchkaf75v7h43dx", "displayName": "asdf", "description": "asdf", "descriptionFacets": [ { "index": { "byteStart": 100, "byteEnd": 100 }, "features": [ { "did": "did:plc:c3pn34agqqchkaf75v7h43dx" } ] } ], "avatar": { "$type": "blob", "mimeType": "image/png", "ref": { "$link": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srv2" }, "size": 1000000 }, "acceptsInteractions": true, "labels": { "values": [ { "val": "asdf" } ] }, "createdAt": "2024-11-25T00:04:08.934Z" } }
app.bsky.feed.postgate github ↗︎
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.
key=tid
createdAt
required string format=datetime
post
required string format=at-uri // Reference (AT-URI) to the post record.
detachedEmbeddingUris
array maxLength=50 of string format=at-uri // List of AT-URIs embedding this post that the author has detached from.
embeddingRules
array maxLength=5 of union of app.bsky.feed.postgate#disableRule
example
{ "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srvx", "uri": "at://did:plc:b3pn34agqqchkaf75v7h43dx/app.bsky.feed.postgate/3lbs2eczkuk2c", "value": { "$type": "app.bsky.feed.postgate", "createdAt": "2024-11-25T00:04:08.934Z", "post": "at://did:plc:c3pn34agqqchkaf75v7h43dx/the.type/the-key", "detachedEmbeddingUris": [ "at://did:plc:c3pn34agqqchkaf75v7h43dx/the.type/the-key" ], "embeddingRules": [ {} ] } }
app.bsky.feed.threadgate github ↗︎
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.
key=tid
post
required string format=at-uri // Reference (AT-URI) to the post record.
allow
array maxLength=5 of union of app.bsky.feed.threadgate#mentionRule or app.bsky.feed.threadgate#followingRule or app.bsky.feed.threadgate#listRule
createdAt
required string format=datetime
hiddenReplies
array maxLength=50 of string format=at-uri // List of hidden reply URIs.
example
{ "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srvx", "uri": "at://did:plc:b3pn34agqqchkaf75v7h43dx/app.bsky.feed.threadgate/3lbs2eczkuk2c", "value": { "$type": "app.bsky.feed.threadgate", "post": "at://did:plc:c3pn34agqqchkaf75v7h43dx/the.type/the-key", "allow": [ {} ], "createdAt": "2024-11-25T00:04:08.934Z", "hiddenReplies": [ "at://did:plc:c3pn34agqqchkaf75v7h43dx/the.type/the-key" ] } }
app.bsky.feed.like github ↗︎
Record declaring a 'like' of a piece of subject content.
key=tid
subject
required com.atproto.repo.strongRef
createdAt
required string format=datetime
example
{ "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srvx", "uri": "at://did:plc:b3pn34agqqchkaf75v7h43dx/app.bsky.feed.like/3lbs2eczkuk2c", "value": { "$type": "app.bsky.feed.like", "subject": { "uri": "at://did:plc:c3pn34agqqchkaf75v7h43dx/the.type/the-key", "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srv2" }, "createdAt": "2024-11-25T00:04:08.934Z" } }
app.bsky.feed.repost github ↗︎
Record representing a 'repost' of an existing Bluesky post.
key=tid
subject
required com.atproto.repo.strongRef
createdAt
required string format=datetime
example
{ "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srvx", "uri": "at://did:plc:b3pn34agqqchkaf75v7h43dx/app.bsky.feed.repost/3lbs2eczkuk2c", "value": { "$type": "app.bsky.feed.repost", "subject": { "uri": "at://did:plc:c3pn34agqqchkaf75v7h43dx/the.type/the-key", "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srv2" }, "createdAt": "2024-11-25T00:04:08.934Z" } }
app.bsky.feed.post github ↗︎
Record containing a Bluesky post.
key=tid
text
required string maxGraphemes=300 maxLength=3000 // The primary post content. May be an empty string, if there are embeds.
entities
array of app.bsky.feed.post#entity // DEPRECATED: replaced by app.bsky.richtext.facet.
facets
array of app.bsky.richtext.facet // Annotations of text (mentions, URLs, hashtags, etc)
reply
app.bsky.feed.post#replyRef
embed
union of app.bsky.embed.images or app.bsky.embed.video or app.bsky.embed.external or app.bsky.embed.record or app.bsky.embed.recordWithMedia
langs
array maxLength=3 of string format=language // Indicates human language of post primary text content.
labels
union of com.atproto.label.defs#selfLabels // Self-label values for this post. Effectively content warnings.
tags
array maxLength=8 of string maxGraphemes=64 maxLength=640 // Additional hashtags, in addition to any included in post text and facets.
createdAt
required string format=datetime // Client-declared timestamp when this post was originally created.
example
{ "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srvx", "uri": "at://did:plc:b3pn34agqqchkaf75v7h43dx/app.bsky.feed.post/3lbs2eczkuk2c", "value": { "$type": "app.bsky.feed.post", "text": "asdf", "entities": [ { "index": { "start": 100, "end": 100 }, "type": "asdf", "value": "asdf" } ], "facets": [ { "index": { "byteStart": 100, "byteEnd": 100 }, "features": [ { "did": "did:plc:c3pn34agqqchkaf75v7h43dx" } ] } ], "reply": { "root": { "uri": "at://did:plc:c3pn34agqqchkaf75v7h43dx/the.type/the-key", "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srv2" }, "parent": { "uri": "at://did:plc:c3pn34agqqchkaf75v7h43dx/the.type/the-key", "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srv2" } }, "embed": { "images": [ { "image": { "$type": "blob", "mimeType": "image/*", "ref": { "$link": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srv2" }, "size": 1000000 }, "alt": "asdf", "aspectRatio": { "width": 100, "height": 100 } } ] }, "langs": [ "en-US" ], "labels": { "values": [ { "val": "asdf" } ] }, "tags": [ "asdf" ], "createdAt": "2024-11-25T00:04:08.934Z" } }
app.bsky.actor.profile github ↗︎
A declaration of a Bluesky account profile.
key=literal:self
displayName
string maxGraphemes=64 maxLength=640
description
string maxGraphemes=256 maxLength=2560 // Free-form profile description text.
avatar
blob accept=image/png,image/jpeg maxSize=1000000 // Small image to be displayed next to posts from account. AKA, 'profile picture'
banner
blob accept=image/png,image/jpeg maxSize=1000000 // Larger horizontal image to display behind profile view.
labels
union of com.atproto.label.defs#selfLabels // Self-label values, specific to the Bluesky application, on the overall account.
joinedViaStarterPack
com.atproto.repo.strongRef
pinnedPost
com.atproto.repo.strongRef
createdAt
string format=datetime
example
{ "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srvx", "uri": "at://did:plc:b3pn34agqqchkaf75v7h43dx/app.bsky.actor.profile/self", "value": { "$type": "app.bsky.actor.profile", "displayName": "asdf", "description": "asdf", "avatar": { "$type": "blob", "mimeType": "image/png", "ref": { "$link": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srv2" }, "size": 1000000 }, "banner": { "$type": "blob", "mimeType": "image/png", "ref": { "$link": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srv2" }, "size": 1000000 }, "labels": { "values": [ { "val": "asdf" } ] }, "joinedViaStarterPack": { "uri": "at://did:plc:c3pn34agqqchkaf75v7h43dx/the.type/the-key", "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srv2" }, "pinnedPost": { "uri": "at://did:plc:c3pn34agqqchkaf75v7h43dx/the.type/the-key", "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srv2" }, "createdAt": "2024-11-25T00:04:08.934Z" } }
app.bsky.labeler.service github ↗︎
A declaration of the existence of labeler service.
key=literal:self
policies
required app.bsky.labeler.defs#labelerPolicies
labels
union of com.atproto.label.defs#selfLabels
createdAt
required string format=datetime
example
{ "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srvx", "uri": "at://did:plc:b3pn34agqqchkaf75v7h43dx/app.bsky.labeler.service/self", "value": { "$type": "app.bsky.labeler.service", "policies": { "labelValues": [ "!hide" ], "labelValueDefinitions": [ { "identifier": "asdf", "severity": "inform", "blurs": "content", "defaultSetting": "ignore", "adultOnly": true, "locales": [ { "lang": "en-US", "name": "asdf", "description": "asdf" } ] } ] }, "labels": { "values": [ { "val": "asdf" } ] }, "createdAt": "2024-11-25T00:04:08.934Z" } }
chat.bsky.actor.declaration github ↗︎
A declaration of a Bluesky chat account.
key=literal:self
allowIncoming
required string knownValues=all,none,following
example
{ "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srvx", "uri": "at://did:plc:b3pn34agqqchkaf75v7h43dx/chat.bsky.actor.declaration/self", "value": { "$type": "chat.bsky.actor.declaration", "allowIncoming": "all" } }
blue.moji.collection.item github ↗︎
A custom emoji
key=any
name
required string // Should be in the format :emoji:
alt
string
createdAt
required string format=datetime
formats
required union of blue.moji.collection.item#formats_v0 // Open union to allow for future formats
adultOnly
boolean default=false
labels
union of com.atproto.label.defs#selfLabels // Self-label values for this emoji. Effectively content warnings.
copyOf
string format=at-uri
fallbackText
string maxLength=1 default=◌
example
{ "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srvx", "uri": "at://did:plc:b3pn34agqqchkaf75v7h43dx/blue.moji.collection.item/anything", "value": { "$type": "blue.moji.collection.item", "name": "asdf", "alt": "asdf", "createdAt": "2024-11-25T00:04:08.934Z", "formats": { "original": { "$type": "blob", "mimeType": "image/*", "ref": { "$link": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srv2" }, "size": 1000000 }, "png_128": { "$type": "blob", "mimeType": "application/octet-stream", "ref": { "$link": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srv2" }, "size": 262144 }, "apng_128": { "$bytes": "eHh4eHh4eHh4eA==" }, "gif_128": { "$type": "blob", "mimeType": "application/octet-stream", "ref": { "$link": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srv2" }, "size": 262144 }, "webp_128": { "$type": "blob", "mimeType": "application/octet-stream", "ref": { "$link": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srv2" }, "size": 262144 }, "lottie": { "$bytes": "eHh4eHh4eHh4eA==" } }, "adultOnly": true, "labels": { "values": [ { "val": "asdf" } ] }, "copyOf": "at://did:plc:c3pn34agqqchkaf75v7h43dx/the.type/the-key", "fallbackText": "a" } }
blue.moji.packs.pack github ↗︎
A shareable Bluemoji pack
key=tid
name
required string minLength=1 maxLength=64
description
string maxGraphemes=300 maxLength=3000
descriptionFacets
array of blue.moji.richtext.facet
icon
blob accept=image/png,image/jpeg maxSize=1000000
adultOnly
boolean default=false
createdAt
required string format=datetime
labels
union of com.atproto.label.defs#selfLabels // Self-label values for this emoji. Effectively content warnings.
example
{ "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srvx", "uri": "at://did:plc:b3pn34agqqchkaf75v7h43dx/blue.moji.packs.pack/3lbs2eczkuk2c", "value": { "$type": "blue.moji.packs.pack", "name": "asdf", "description": "asdf", "descriptionFacets": [ { "did": "asdf", "name": "asdf", "alt": "asdf", "adultOnly": true, "labels": { "values": [ { "val": "asdf" } ] }, "formats": { "png_128": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srv2", "webp_128": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srv2", "gif_128": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srv2", "apng_128": true, "lottie": true } } ], "icon": { "$type": "blob", "mimeType": "image/png", "ref": { "$link": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srv2" }, "size": 1000000 }, "adultOnly": true, "createdAt": "2024-11-25T00:04:08.934Z", "labels": { "values": [ { "val": "asdf" } ] } } }
blue.moji.packs.packitem github ↗︎
Record representing a Bluemoji's inclusion in a specific pack. The AppView will ignore duplicate item records.
key=tid
subject
required string format=at-uri // Reference (AT-URI) to the Bluemoji item record (blue.moji.collection.item).
pack
required string format=at-uri // Reference (AT-URI) to the pack record (blue.moji.packs.pack).
createdAt
required string format=datetime
example
{ "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srvx", "uri": "at://did:plc:b3pn34agqqchkaf75v7h43dx/blue.moji.packs.packitem/3lbs2eczkuk2c", "value": { "$type": "blue.moji.packs.packitem", "subject": "at://did:plc:c3pn34agqqchkaf75v7h43dx/the.type/the-key", "pack": "at://did:plc:c3pn34agqqchkaf75v7h43dx/the.type/the-key", "createdAt": "2024-11-25T00:04:08.934Z" } }
social.psky.chat.room github ↗︎
A Picosky room belonging to the user.
key=any
name
string maxGraphemes=32 maxLength=320
languages
array maxLength=3 of string format=language
topic
string maxGraphemes=256 maxLength=2560 // Topic title of the room.
tags
array maxLength=20 of string
allowlist
social.psky.chat.room#modlistRef // List of users allowed to send messages in the room.
denylist
social.psky.chat.room#modlistRef // List of users disallowed to send messages in the room.
example
{ "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srvx", "uri": "at://did:plc:b3pn34agqqchkaf75v7h43dx/social.psky.chat.room/anything", "value": { "$type": "social.psky.chat.room", "name": "asdf", "languages": [ "en-US" ], "topic": "asdf", "tags": [ "asdf" ], "allowlist": { "active": true, "users": [ "did:plc:c3pn34agqqchkaf75v7h43dx" ] }, "denylist": { "active": true, "users": [ "did:plc:c3pn34agqqchkaf75v7h43dx" ] } } }
social.psky.chat.message github ↗︎
A Picosky message containing at most 2048 graphemes.
key=tid
content
required string maxGraphemes=2048 maxLength=20480 // Text content.
room
required string format=at-uri
facets
array of social.psky.richtext.facet // Annotations of text (mentions, URLs, hashtags, etc)
reply
com.atproto.repo.strongRef
example
{ "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srvx", "uri": "at://did:plc:b3pn34agqqchkaf75v7h43dx/social.psky.chat.message/3lbs2eczkuk2c", "value": { "$type": "social.psky.chat.message", "content": "asdf", "room": "at://did:plc:c3pn34agqqchkaf75v7h43dx/the.type/the-key", "facets": [ { "index": { "byteStart": 100, "byteEnd": 100 }, "features": [ { "did": "did:plc:c3pn34agqqchkaf75v7h43dx" } ] } ], "reply": { "uri": "at://did:plc:c3pn34agqqchkaf75v7h43dx/the.type/the-key", "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srv2" } } }
social.psky.actor.profile github ↗︎
A declaration of a Picosky account profile.
key=literal:self
nickname
string maxGraphemes=32 maxLength=320
example
{ "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srvx", "uri": "at://did:plc:b3pn34agqqchkaf75v7h43dx/social.psky.actor.profile/self", "value": { "$type": "social.psky.actor.profile", "nickname": "asdf" } }
com.whtwnd.blog.entry github ↗︎
A declaration of a post.
key=tid
content
required string maxLength=100000
createdAt
string format=datetime
title
string maxLength=1000
ogp
com.whtwnd.blog.defs#ogp
theme
string enum=github-light
blobs
array of com.whtwnd.blog.defs#blobMetadata
isDraft
boolean // (DEPRECATED) Marks this entry as draft to tell AppViews not to show it to anyone except for the author
visibility
string enum=public,url,author default=public // Tells the visibility of the article to AppView.
example
{ "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srvx", "uri": "at://did:plc:b3pn34agqqchkaf75v7h43dx/com.whtwnd.blog.entry/3lbs2eczkuk2c", "value": { "$type": "com.whtwnd.blog.entry", "content": "asdf", "createdAt": "2024-11-25T00:04:08.934Z", "title": "asdf", "ogp": { "url": "https://example.com/path/to", "width": 100, "height": 100 }, "theme": "github-light", "blobs": [ { "blobref": { "$type": "blob", "mimeType": "*/*", "ref": { "$link": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srv2" }, "size": 1048576 }, "name": "asdf" } ], "isDraft": true, "visibility": "public" } }
fyi.unravel.frontpage.comment github ↗︎
Record containing a Frontpage comment.
key=tid
content
required string maxGraphemes=10000 maxLength=100000 // The content of the comment.
createdAt
required string format=datetime // Client-declared timestamp when this comment was originally created.
parent
com.atproto.repo.strongRef
post
required com.atproto.repo.strongRef
example
{ "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srvx", "uri": "at://did:plc:b3pn34agqqchkaf75v7h43dx/fyi.unravel.frontpage.comment/3lbs2eczkuk2c", "value": { "$type": "fyi.unravel.frontpage.comment", "content": "asdf", "createdAt": "2024-11-25T00:04:08.934Z", "parent": { "uri": "at://did:plc:c3pn34agqqchkaf75v7h43dx/the.type/the-key", "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srv2" }, "post": { "uri": "at://did:plc:c3pn34agqqchkaf75v7h43dx/the.type/the-key", "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srv2" } } }
fyi.unravel.frontpage.vote github ↗︎
Record containing a Frontpage vote.
key=tid
subject
required com.atproto.repo.strongRef
createdAt
required string format=datetime // Client-declared timestamp when this vote was originally created.
example
{ "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srvx", "uri": "at://did:plc:b3pn34agqqchkaf75v7h43dx/fyi.unravel.frontpage.vote/3lbs2eczkuk2c", "value": { "$type": "fyi.unravel.frontpage.vote", "subject": { "uri": "at://did:plc:c3pn34agqqchkaf75v7h43dx/the.type/the-key", "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srv2" }, "createdAt": "2024-11-25T00:04:08.934Z" } }
fyi.unravel.frontpage.post github ↗︎
Record containing a Frontpage post.
key=tid
title
required string maxGraphemes=300 maxLength=3000 // The title of the post.
url
required string format=uri // The URL of the post.
createdAt
required string format=datetime // Client-declared timestamp when this post was originally created.
example
{ "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srvx", "uri": "at://did:plc:b3pn34agqqchkaf75v7h43dx/fyi.unravel.frontpage.post/3lbs2eczkuk2c", "value": { "$type": "fyi.unravel.frontpage.post", "title": "asdf", "url": "https://example.com/path/to", "createdAt": "2024-11-25T00:04:08.934Z" } }
events.smokesignal.calendar.rsvp github ↗︎
Record declaring an RSVP for an event.
key=tid
subject
required com.atproto.repo.strongRef
status
required string knownValues=events.smokesignal.calendar.rsvp#interested,events.smokesignal.calendar.rsvp#going,events.smokesignal.calendar.rsvp#notgoing default=events.smokesignal.calendar.rsvp#interested
example
{ "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srvx", "uri": "at://did:plc:b3pn34agqqchkaf75v7h43dx/events.smokesignal.calendar.rsvp/3lbs2eczkuk2c", "value": { "$type": "events.smokesignal.calendar.rsvp", "subject": { "uri": "at://did:plc:c3pn34agqqchkaf75v7h43dx/the.type/the-key", "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srv2" }, "status": "events.smokesignal.calendar.rsvp#interested" } }
events.smokesignal.calendar.event github ↗︎
Record containing a Smoke Signal event.
key=tid
name
required string maxLength=100 // The name of the event.
text
required string maxLength=3000 // The event description and content.
createdAt
required string format=datetime // Client-declared timestamp when this event was originally created.
startsAt
string format=datetime // Client-declared timestamp when this event starts.
endsAt
string format=datetime // Client-declared timestamp when this event ends.
mode
string knownValues=events.smokesignal.calendar.event#virtual,events.smokesignal.calendar.event#inperson,events.smokesignal.calendar.event#hybrid default=events.smokesignal.calendar.event#inperson // The mode of the event. // The attendance mode of the event.
status
string knownValues=events.smokesignal.calendar.event#scheduled,events.smokesignal.calendar.event#rescheduled,events.smokesignal.calendar.event#cancelled,events.smokesignal.calendar.event#postponed default=events.smokesignal.calendar.event#scheduled // The status of the event. // The status of the event.
location
events.smokesignal.calendar.location
example
{ "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srvx", "uri": "at://did:plc:b3pn34agqqchkaf75v7h43dx/events.smokesignal.calendar.event/3lbs2eczkuk2c", "value": { "$type": "events.smokesignal.calendar.event", "name": "asdf", "text": "asdf", "createdAt": "2024-11-25T00:04:08.934Z", "startsAt": "2024-11-25T00:04:08.934Z", "endsAt": "2024-11-25T00:04:08.934Z", "mode": "events.smokesignal.calendar.event#virtual", "status": "events.smokesignal.calendar.event#scheduled", "location": [ { "country": "US", "postalCode": "asdf", "region": "asdf", "locality": "asdf", "street": "asdf", "name": "asdf" } ] } }
events.smokesignal.app.profile github ↗︎
A declaration of a Smoke Signal profile.
key=literal:self
tz
string // The time zone of the profile.
example
{ "cid": "bafyreidtyl3inuqxuwtrzcfymwbmckauay3hujkqleqch5rzk7gi44srvx", "uri": "at://did:plc:b3pn34agqqchkaf75v7h43dx/events.smokesignal.app.profile/self", "value": { "$type": "events.smokesignal.app.profile", "tz": "asdf" } }

Supporting object types

app.bsky.richtext.facet github ↗︎
Annotation of a sub-string within rich text.
index
required app.bsky.richtext.facet#byteSlice
features
required array of union of app.bsky.richtext.facet#mention or app.bsky.richtext.facet#link or app.bsky.richtext.facet#tag
app.bsky.graph.starterpack#feedItem github ↗︎
uri
required string format=at-uri
com.atproto.label.defs#selfLabels github ↗︎
Metadata tags on an atproto record, published by the author within the record.
values
required array maxLength=10 of com.atproto.label.defs#selfLabel
app.bsky.feed.postgate#disableRule github ↗︎
Disables embedding of this post.
app.bsky.feed.threadgate#mentionRule github ↗︎
Allow replies from actors mentioned in your post.
app.bsky.feed.threadgate#followingRule github ↗︎
Allow replies from actors you follow.
app.bsky.feed.threadgate#listRule github ↗︎
Allow replies from actors on a list.
list
required string format=at-uri
com.atproto.repo.strongRef github ↗︎
uri
required string format=at-uri
cid
required string format=cid
app.bsky.feed.post#entity github ↗︎
Deprecated: use facets instead.
index
required app.bsky.feed.post#textSlice
type
required string // Expected values are 'mention' and 'link'.
value
required string
app.bsky.feed.post#replyRef github ↗︎
root
required com.atproto.repo.strongRef
parent
required com.atproto.repo.strongRef
app.bsky.embed.images github ↗︎
images
required array maxLength=4 of app.bsky.embed.images#image
app.bsky.embed.video github ↗︎
video
required blob accept=video/mp4 maxSize=50000000
captions
array maxLength=20 of app.bsky.embed.video#caption
alt
string maxGraphemes=1000 maxLength=10000 // Alt text description of the video, for accessibility.
aspectRatio
app.bsky.embed.defs#aspectRatio
app.bsky.embed.external github ↗︎
A representation of some externally linked content (eg, a URL and 'card'), embedded in a Bluesky record (eg, a post).
external
required app.bsky.embed.external#external
app.bsky.embed.record github ↗︎
record
required com.atproto.repo.strongRef
app.bsky.embed.recordWithMedia github ↗︎
record
required app.bsky.embed.record
media
required union of app.bsky.embed.images or app.bsky.embed.video or app.bsky.embed.external
app.bsky.labeler.defs#labelerPolicies github ↗︎
labelValues
required array of string knownValues=!hide,!no-promote,!warn,!no-unauthenticated,dmca-violation,doxxing,porn,sexual,nudity,nsfl,gore // The label values which this labeler publishes. May include global or custom labels.
labelValueDefinitions
array of com.atproto.label.defs#labelValueDefinition // Label values created by this labeler and scoped exclusively to it. Labels defined here will override global label definitions for this labeler.
blue.moji.collection.item#formats_v0 github ↗︎
original
blob accept=image/*,application/lottie+zip maxSize=1000000
png_128
blue.moji.collection.item#blob_v0
apng_128
blue.moji.collection.item#bytes_v0
gif_128
blue.moji.collection.item#blob_v0
webp_128
blue.moji.collection.item#blob_v0
lottie
blue.moji.collection.item#bytes_v0
blue.moji.richtext.facet github ↗︎
did
required string // DID of the user posting the Bluemoji
name
required string // Name of the Bluemoji in :emoji: format
alt
string
adultOnly
boolean default=false
labels
union of com.atproto.label.defs#selfLabels // Self-label values for this emoji. Effectively content warnings.
formats
required union of blue.moji.richtext.facet#formats_v0
social.psky.chat.room#modlistRef github ↗︎
active
required boolean default=false
users
required array of string format=did
social.psky.richtext.facet github ↗︎
Annotation of a sub-string within rich text.
index
required social.psky.richtext.facet#byteSlice
features
required array of union of social.psky.richtext.facet#mention or social.psky.richtext.facet#link or social.psky.richtext.facet#room
com.whtwnd.blog.defs#ogp github ↗︎
url
required string format=uri
width
integer
height
integer
com.whtwnd.blog.defs#blobMetadata github ↗︎
blobref
required blob accept=*/*
name
string
events.smokesignal.calendar.location github ↗︎
type=union refs=events.smokesignal.calendar.location#locations, events.smokesignal.calendar.location#location
app.bsky.richtext.facet#byteSlice github ↗︎
Specifies the sub-string range a facet feature applies to. Start index is inclusive, end index is exclusive. Indices are zero-indexed, counting bytes of the UTF-8 encoded text. NOTE: some languages, like Javascript, use UTF-16 or Unicode codepoints for string slice indexing; in these languages, convert to byte arrays before working with facets.
byteStart
required integer minimum=0
byteEnd
required integer minimum=0
app.bsky.richtext.facet#mention github ↗︎
Facet feature for mention of another account. The text is usually a handle, including a '@' prefix, but the facet reference is a DID.
did
required string format=did
app.bsky.richtext.facet#link github ↗︎
Facet feature for a URL. The text URL may have been simplified or truncated, but the facet reference should be a complete URL.
uri
required string format=uri
app.bsky.richtext.facet#tag github ↗︎
Facet feature for a hashtag. The text usually includes a '#' prefix, but the facet reference should not (except in the case of 'double hash tags').
tag
required string maxGraphemes=64 maxLength=640
com.atproto.label.defs#selfLabel github ↗︎
Metadata tag on an atproto record, published by the author within the record. Note that schemas should use #selfLabels, not #selfLabel.
val
required string maxLength=128 // The short string name of the value or type of this label.
app.bsky.feed.post#textSlice github ↗︎
Deprecated. Use app.bsky.richtext instead -- A text segment. Start is inclusive, end is exclusive. Indices are for utf16-encoded strings.
start
required integer minimum=0
end
required integer minimum=0
app.bsky.embed.images#image github ↗︎
image
required blob accept=image/* maxSize=1000000
alt
required string // Alt text description of the image, for accessibility.
aspectRatio
app.bsky.embed.defs#aspectRatio
app.bsky.embed.video#caption github ↗︎
lang
required string format=language
file
required blob accept=text/vtt maxSize=20000
app.bsky.embed.defs#aspectRatio github ↗︎
width:height represents an aspect ratio. It may be approximate, and may not correspond to absolute dimensions in any given unit.
width
required integer minimum=1
height
required integer minimum=1
app.bsky.embed.external#external github ↗︎
uri
required string format=uri
title
required string
description
required string
thumb
blob accept=image/* maxSize=1000000
com.atproto.label.defs#labelValueDefinition github ↗︎
Declares a label value and its expected interpretations and behaviors.
identifier
required string maxGraphemes=100 maxLength=100 // The value of the label being defined. Must only include lowercase ascii and the '-' character ([a-z-]+).
severity
required string knownValues=inform,alert,none // How should a client visually convey this label? 'inform' means neutral and informational; 'alert' means negative and warning; 'none' means show nothing.
blurs
required string knownValues=content,media,none // What should this label hide in the UI, if applied? 'content' hides all of the target; 'media' hides the images/video/audio; 'none' hides nothing.
defaultSetting
string knownValues=ignore,warn,hide default=warn // The default setting for this label.
adultOnly
boolean // Does the user need to have adult content enabled in order to configure this label?
locales
required array of com.atproto.label.defs#labelValueDefinitionStrings
blue.moji.collection.item#blob_v0 github ↗︎
Limiting blobs to 256kb because there may be many on page and these get optimised by ImgProxy anyway
type=blob maxSize=262144
blue.moji.collection.item#bytes_v0 github ↗︎
64kb should be enough for anybody
type=bytes maxLength=65536
blue.moji.richtext.facet#formats_v0 github ↗︎
On the facet, only the CID is provided as this can be combined with the DID to create CDN URLs for non-animated blobs. For APNG and dotLottie, raw Bytes are served and require a com.atproto.repo.getRecord roundtrip on render so are marked with a boolean
png_128
string format=cid
webp_128
string format=cid
gif_128
string format=cid
apng_128
boolean default=false
lottie
boolean default=false
social.psky.richtext.facet#byteSlice github ↗︎
Specifies the sub-string range a facet feature applies to. Start index is inclusive, end index is exclusive. Indices are zero-indexed, counting bytes of the UTF-8 encoded text. NOTE: some languages, like Javascript, use UTF-16 or Unicode codepoints for string slice indexing; in these languages, convert to byte arrays before working with facets.
byteStart
required integer minimum=0
byteEnd
required integer minimum=0
social.psky.richtext.facet#mention github ↗︎
Facet feature for mention of another account. The text is usually a handle, including a '@' prefix, but the facet reference is a DID.
did
required string format=did
social.psky.richtext.facet#link github ↗︎
Facet feature for a URL. The text URL may have been simplified or truncated, but the facet reference should be a complete URL.
uri
required string format=uri
social.psky.richtext.facet#room github ↗︎
Facet feature for a room. The text usually includes a '#' prefix, but the facet reference should not (except in the case of a room tag that includes a '#' prefix) - TODO: update when rooms are actually implemented
room
required string maxGraphemes=64 maxLength=640
com.atproto.label.defs#labelValueDefinitionStrings github ↗︎
Strings which describe the label in the UI, localized into a specific language.
lang
required string format=language // The code of the language these strings are written in.
name
required string maxGraphemes=64 maxLength=640 // A short human-readable name for the label.
description
required string maxGraphemes=10000 maxLength=100000 // A longer description of what the label means and why it might be applied.