devin ivy af7d3912a3
Starter packs (#2553)
* lexicon: initial starter pack record lexicons

* lexicon: first pass on views for starter packs

* lexicon: add starter pack query endpoints, misc fixes

* lexicon: add starter pack related fields to profile views

* lexicon: codegen

* api prerelease

* bsky: protos for starter packs

* appview: implement starter pack endpoints in dataplane, protos update

* appview: starter pack hydration and view, mock dataplane indexing

* appview: wire-up starter pack graph endpoints

* appview: test basic starter packs functionality, update dev-env

* fix snaps for profile createdAt

* appview: fix list item count for starter packs in dataplane

* fix ozone snaps, tidy

* appview: reorg list aggs for starter packs

* appview: starter pack lexicon and proto tweaks, move around aggregations

* appview: fix views and snaps

* api prerelease

* fix snaps

* appview: misc proto updates for starter packs, snaps

* appview: add starter pack counts to profile detail

* build

* api prerelease

* pds: starter pack slur detection

* lexicon: starter pack notifications and batch fetch

* appview: starter pack notification and batch fetch

* appview: add starterpack-joined notif to dataplane and test

* api prerelease

* ozone: fix snaps

* pds build

*  Proxy starterpack requests through ozone and include takedowns (#2594)

*  Proxy starterpack requests through ozone and include takedowns

* 🧹 Cleanup

*  Commit snapshots

*  Update snapshot

* lexicon: move starterpacks back to TIDs

* changeset

---------

Co-authored-by: Foysal Ahamed <foysal@blueskyweb.xyz>
2024-06-24 21:04:33 -04:00

167 lines
5.9 KiB
JSON

{
"lexicon": 1,
"id": "app.bsky.graph.defs",
"defs": {
"listViewBasic": {
"type": "object",
"required": ["uri", "cid", "name", "purpose"],
"properties": {
"uri": { "type": "string", "format": "at-uri" },
"cid": { "type": "string", "format": "cid" },
"name": { "type": "string", "maxLength": 64, "minLength": 1 },
"purpose": { "type": "ref", "ref": "#listPurpose" },
"avatar": { "type": "string", "format": "uri" },
"listItemCount": { "type": "integer", "minimum": 0 },
"labels": {
"type": "array",
"items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
},
"viewer": { "type": "ref", "ref": "#listViewerState" },
"indexedAt": { "type": "string", "format": "datetime" }
}
},
"listView": {
"type": "object",
"required": ["uri", "cid", "creator", "name", "purpose", "indexedAt"],
"properties": {
"uri": { "type": "string", "format": "at-uri" },
"cid": { "type": "string", "format": "cid" },
"creator": { "type": "ref", "ref": "app.bsky.actor.defs#profileView" },
"name": { "type": "string", "maxLength": 64, "minLength": 1 },
"purpose": { "type": "ref", "ref": "#listPurpose" },
"description": {
"type": "string",
"maxGraphemes": 300,
"maxLength": 3000
},
"descriptionFacets": {
"type": "array",
"items": { "type": "ref", "ref": "app.bsky.richtext.facet" }
},
"avatar": { "type": "string", "format": "uri" },
"listItemCount": { "type": "integer", "minimum": 0 },
"labels": {
"type": "array",
"items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
},
"viewer": { "type": "ref", "ref": "#listViewerState" },
"indexedAt": { "type": "string", "format": "datetime" }
}
},
"listItemView": {
"type": "object",
"required": ["uri", "subject"],
"properties": {
"uri": { "type": "string", "format": "at-uri" },
"subject": { "type": "ref", "ref": "app.bsky.actor.defs#profileView" }
}
},
"starterPackView": {
"type": "object",
"required": ["uri", "cid", "record", "creator", "indexedAt"],
"properties": {
"uri": { "type": "string", "format": "at-uri" },
"cid": { "type": "string", "format": "cid" },
"record": { "type": "unknown" },
"creator": {
"type": "ref",
"ref": "app.bsky.actor.defs#profileViewBasic"
},
"list": { "type": "ref", "ref": "#listViewBasic" },
"listItemsSample": {
"type": "array",
"maxLength": 12,
"items": { "type": "ref", "ref": "#listItemView" }
},
"feeds": {
"type": "array",
"maxLength": 3,
"items": { "type": "ref", "ref": "app.bsky.feed.defs#generatorView" }
},
"joinedWeekCount": { "type": "integer", "minimum": 0 },
"joinedAllTimeCount": { "type": "integer", "minimum": 0 },
"labels": {
"type": "array",
"items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
},
"indexedAt": { "type": "string", "format": "datetime" }
}
},
"starterPackViewBasic": {
"type": "object",
"required": ["uri", "cid", "record", "creator", "indexedAt"],
"properties": {
"uri": { "type": "string", "format": "at-uri" },
"cid": { "type": "string", "format": "cid" },
"record": { "type": "unknown" },
"creator": {
"type": "ref",
"ref": "app.bsky.actor.defs#profileViewBasic"
},
"listItemCount": { "type": "integer", "minimum": 0 },
"joinedWeekCount": { "type": "integer", "minimum": 0 },
"joinedAllTimeCount": { "type": "integer", "minimum": 0 },
"labels": {
"type": "array",
"items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
},
"indexedAt": { "type": "string", "format": "datetime" }
}
},
"listPurpose": {
"type": "string",
"knownValues": [
"app.bsky.graph.defs#modlist",
"app.bsky.graph.defs#curatelist",
"app.bsky.graph.defs#referencelist"
]
},
"modlist": {
"type": "token",
"description": "A list of actors to apply an aggregate moderation action (mute/block) on."
},
"curatelist": {
"type": "token",
"description": "A list of actors used for curation purposes such as list feeds or interaction gating."
},
"referencelist": {
"type": "token",
"description": "A list of actors used for only for reference purposes such as within a starter pack."
},
"listViewerState": {
"type": "object",
"properties": {
"muted": { "type": "boolean" },
"blocked": { "type": "string", "format": "at-uri" }
}
},
"notFoundActor": {
"type": "object",
"description": "indicates that a handle or DID could not be resolved",
"required": ["actor", "notFound"],
"properties": {
"actor": { "type": "string", "format": "at-identifier" },
"notFound": { "type": "boolean", "const": true }
}
},
"relationship": {
"type": "object",
"description": "lists the bi-directional graph relationships between one actor (not indicated in the object), and the target actors (the DID included in the object)",
"required": ["did"],
"properties": {
"did": { "type": "string", "format": "did" },
"following": {
"type": "string",
"format": "at-uri",
"description": "if the actor follows this DID, this is the AT-URI of the follow record"
},
"followedBy": {
"type": "string",
"format": "at-uri",
"description": "if the actor is followed by this DID, contains the AT-URI of the follow record"
}
}
}
}
}