SECURITY: did/name/formats/adultOnly/labels are all self-attested by the posting client at write time and are not re-validated by the PDS. Consumers that render an image from this facet without first verifying it against the referenced blue.moji.collection.item record (e.g. via an AppView's blue.moji.collection.getItem, hydrated from firehose-verified data) are trusting the poster to have told the truth about whose emoji it is, what it looks like, and whether it needs a content warning. In particular, adultOnly/labels here MUST NOT be trusted for moderation decisions — a poster could simply omit them to bypass a warning the source item's own record carries. Verified renderers should use the source item's adultOnly/labels instead. Renderers that skip verification SHOULD treat the facet as decorative/best-effort only, exactly as they would an unverified embed.
Properties
adultOnly
boolean
Optional
Self-attested by the poster; see security note on this object. Verified renderers SHOULD use the source item's adultOnly instead.
alt
string
Optional
No description available.
did
string
Required
DID of the user posting the Bluemoji. Self-attested; see security note on this object.
formats
union
Required
#formats_v0 is deprecated (see RFC 0001); writers MUST produce #formats_v1.
labels
union
Optional
Self-label values for this emoji. Effectively content warnings. Self-attested by the poster; see security note on this object.
name
string
Required
Name of the Bluemoji in :emoji: format
View raw schema
{
"type": "object",
"required": [
"did",
"name",
"formats"
],
"properties": {
"alt": {
"type": "string"
},
"did": {
"type": "string",
"description": "DID of the user posting the Bluemoji. Self-attested; see security note on this object."
},
"name": {
"type": "string",
"description": "Name of the Bluemoji in :emoji: format"
},
"labels": {
"refs": [
"com.atproto.label.defs#selfLabels"
],
"type": "union",
"description": "Self-label values for this emoji. Effectively content warnings. Self-attested by the poster; see security note on this object."
},
"formats": {
"refs": [
"#formats_v0",
"#formats_v1"
],
"type": "union",
"closed": false,
"description": "#formats_v0 is deprecated (see RFC 0001); writers MUST produce #formats_v1."
},
"adultOnly": {
"type": "boolean",
"default": false,
"description": "Self-attested by the poster; see security note on this object. Verified renderers SHOULD use the source item's adultOnly instead."
}
},
"description": "SECURITY: did/name/formats/adultOnly/labels are all self-attested by the posting client at write time and are not re-validated by the PDS. Consumers that render an image from this facet without first verifying it against the referenced blue.moji.collection.item record (e.g. via an AppView's blue.moji.collection.getItem, hydrated from firehose-verified data) are trusting the poster to have told the truth about whose emoji it is, what it looks like, and whether it needs a content warning. In particular, adultOnly/labels here MUST NOT be trusted for moderation decisions — a poster could simply omit them to bypass a warning the source item's own record carries. Verified renderers should use the source item's adultOnly/labels instead. Renderers that skip verification SHOULD treat the facet as decorative/best-effort only, exactly as they would an unverified embed."
}