At this level
social.grain · 9- social.grain.basePermissions permission-set
- social.grain.comment record
- social.grain.defs defs width:height represents an aspect ratio. It may be approximate, and may not correspond to absolute dimensions in any given unit.
- social.grain.favorite record
- social.grain.gallery record
- social.grain.group space A group's pool of galleries: the photos its members put in, and their favourites and comments on them, held together as one space. The group is its authority and its space key is self. Each member's records stay in their own repo; the space says who may read them, which is the group's members. A favourite or a comment belongs here rather than in the public repo for the same reason the photos do: in the public repo it would name a private gallery to the whole network.
- social.grain.photo record
- social.grain.privateGallery space One private gallery, anchored on its author's account. The space key is the gallery's rkey. The author writes the gallery, its items and its photos; members only read them.
- social.grain.story record
- social.grain.graph.block record not from the namespace authority
- social.grain.graph.follow record not from the namespace authority
- social.grain.graph.muteActor procedure not from the namespace authority Mute an actor. Mutes are private and only affect the muter's feeds.
- social.grain.graph.unmuteActor procedure not from the namespace authority Unmute an actor.
- social.grain.group.decline record not from the namespace authority A group turning a submission down. Written into the group's repo by whoever is acting as it; the submission leaves the queue for good and stays in the member's repo as their own record. Delete this to reconsider.
- social.grain.group.defs defs not from the namespace authority
- social.grain.group.item record not from the namespace authority A gallery in a group's pool. Written into the group's own repo by whoever is acting as it; the gallery itself stays in its author's repo. Accept a submission by creating one of these, remove from the pool by deleting it.
- social.grain.group.submission record not from the namespace authority A member offering one of their own galleries to a group's pool. Lives in the member's repo; the group answers with a social.grain.group.item.
- social.grain.photo.defs defs Metadata about the photo's relationship with the subject content. Only has meaningful content when photo is attached to a gallery.
- social.grain.photo.exif record Basic EXIF metadata for a photo. Integers are scaled by 1000000 to accommodate decimal values and potentially other tags in the future.
- social.grain.unspecced.addSpaceMember procedure not from the namespace authority Share an existing private gallery with another account. Adds them to the space's member list on the author's PDS, which is what the authority consults when it mints a credential.
- social.grain.unspecced.createGroup procedure not from the namespace authority Start a group on Grain's group host. The host creates the group with the viewer as its founder and hands Grain its own session on it (fyi.opensocial.provisionGroup); Grain then gives the group its pool and its Grain profile. The viewer never leaves Grain.
- social.grain.unspecced.createPoolComment procedure not from the namespace authority Comment on a gallery in a group's pool. The comment is the viewer's own record, written into the pool beside the gallery it answers, so only that group's members can read it.
- social.grain.unspecced.createPoolGallery procedure not from the namespace authority Add a gallery to a group's pool: one permissioned space (social.grain.group) anchored on the group, holding every member's galleries. The gallery, its photos and its items are the author's own records in their own repo, written inside that space — so only the group's members can read them, and they leave with the author.
- social.grain.unspecced.createPrivateGallery procedure not from the namespace authority Create a gallery that lives in a permissioned space (proposal 0016) rather than in the public repo. The gallery, its photos and its items are written to the author's space repo, and only the accounts named in members can read them.
- social.grain.unspecced.deleteAccount procedure not from the namespace authority Delete the authenticated user's Grain account. Removes all of their Grain records from their PDS and clears supporting server-side state (mutes, preferences, push tokens, OAuth session). Reports and labels are preserved.
- social.grain.unspecced.deleteGallery procedure not from the namespace authority Delete a gallery and all associated records (items, photos, EXIF, favorites, comments).
- social.grain.unspecced.deletePoolComment procedure not from the namespace authority Delete one of your own comments from a group's pool.
- social.grain.unspecced.deletePoolGallery procedure not from the namespace authority Withdraw the viewer's own gallery from a group's pool. The gallery, its photos and the items joining them are the viewer's records in the viewer's repo, held inside the group's space, so this removes them from that space and nothing else. Only the author's own repo is touched: whoever acts as the group evicts by a different route.
- social.grain.unspecced.getActorFavorites query not from the namespace authority Get galleries favorited by the authenticated actor. Only the actor themselves can view their favorites.
- social.grain.unspecced.getActorProfile query not from the namespace authority Get an actor's profile with gallery stats and follow relationships.
- social.grain.unspecced.getBlocks query not from the namespace authority Get the viewer's blocked users.
- social.grain.unspecced.getCameras query not from the namespace authority Get top cameras by photo count.
- social.grain.unspecced.getCommentThread query not from the namespace authority Get comments for a subject (gallery or story), sorted oldest-first with author profiles.
- social.grain.unspecced.getFollowers query not from the namespace authority Get followers for a given user.
- social.grain.unspecced.getFollowing query not from the namespace authority Get users that a given user follows.
- social.grain.unspecced.getGallery query not from the namespace authority Get a single gallery view by AT URI.
- social.grain.unspecced.getGalleryFavorites query not from the namespace authority Get the accounts that have favorited a gallery, most recent first.
- social.grain.unspecced.getGroup query not from the namespace authority A group: a group DID that has declared itself and shows up in Grain as an author whose pool is other people's galleries.
- social.grain.unspecced.getGroupHost query not from the namespace authority The group host this Grain creates groups on, and the domain a new group's handle ends in. Absent when this Grain creates none.
- social.grain.unspecced.getGroupSubmissions query not from the namespace authority Submissions to a group that no item has answered yet — the review queue.
- social.grain.unspecced.getKnownFollowers query not from the namespace authority Get followers of a given actor that the viewer also follows.
- social.grain.unspecced.getLocations query not from the namespace authority Get top locations by gallery count.
- social.grain.unspecced.getMutes query not from the namespace authority Get the viewer's muted users.
- social.grain.unspecced.getNotifications query not from the namespace authority Get notifications for the authenticated user.
- social.grain.unspecced.getPoolGallery query not from the namespace authority One gallery from a group's pool, read from the repo that holds it through a credential the group's host issues.
- social.grain.unspecced.getPrivateGallery query not from the namespace authority Assemble a gallery that lives in a permissioned space. Read from the repos that hold it at request time — space records never reach a firehose, so none of this is in the index.
- social.grain.unspecced.getSitemap query not from the namespace authority One page of the public profiles or galleries a search engine may index, for the sitemap. Leaves out anything labeled, taken down, or in a space.
- social.grain.unspecced.getSpaceMembers query not from the namespace authority Who a private gallery is shared with. Read from the space's authority, which is the only place the member list exists, so only the gallery's author can ask.
- social.grain.unspecced.getSpaceSupport query not from the namespace authority Whether the viewer's PDS serves permissioned spaces (proposal 0016). Answered from a cached probe of community.lexicon.service.describe.
- social.grain.unspecced.getStories query not from the namespace authority Get a user's active stories (posted within the last 24 hours).
- social.grain.unspecced.getStory query not from the namespace authority
- social.grain.unspecced.getStoryArchive query not from the namespace authority Get all stories for an actor, including expired ones. For archive browsing.
- social.grain.unspecced.getStoryAuthors query not from the namespace authority Get authors who have active stories (posted within the last 24 hours).
- social.grain.unspecced.getSuggestedFollows query not from the namespace authority Get suggested profiles to follow based on bsky follow graph.
- social.grain.unspecced.joinGroup procedure not from the namespace authority Ask a group's group host to admit the viewer: Grain mints service auth for the host from the viewer's PDS and calls fyi.opensocial.requestJoin. Admitted immediately when the group is open; queued for its moderators when it takes requests.
- social.grain.unspecced.leaveGroup procedure not from the namespace authority Leave a group: fyi.opensocial.leaveGroup on its host, with service auth from the viewer's PDS.
- social.grain.unspecced.listGroups query not from the namespace authority Groups worth browsing, most recently active first. With `gallery`, each group carries the viewer's standing for that gallery.
- social.grain.unspecced.listPoolFeed query not from the namespace authority Every gallery in every pool the viewer is a member of, newest first. Assembled per viewer at request time: which groups they belong to is a public fact in the index, but what is in each pool is a permissioned space, read with a credential that group's host issues. Nothing here is shared between viewers or cached.
- social.grain.unspecced.listPoolGalleries query not from the namespace authority Every gallery in a group's pool, newest first. Assembled at request time from the repos of the members who wrote them — a pool space never reaches a firehose, so none of it is in the index — and readable only by a member the group's host issues a credential to.
- social.grain.unspecced.listPrivateGalleries query not from the namespace authority The viewer's own private galleries, read from the spaces their PDS holds. Authors only: a space tells its members nothing about itself, so an account added to someone else's gallery cannot enumerate it and needs the link.
- social.grain.unspecced.listSharedGalleries query not from the namespace authority Private galleries other accounts have shared with the viewer. Answered from grain's own record of who a gallery was shared with, because a space leaves no trace on a member's PDS — then confirmed against the authority, so a gallery the viewer was removed from does not appear.
- social.grain.unspecced.markStoriesViewed procedure not from the namespace authority Record that the requesting account has watched these stories. Viewed state is private to the viewer and held by the appview, not written to the repo, so it follows the account across web, iOS and Android without being visible to anyone else.
- social.grain.unspecced.putPoolFavorite procedure not from the namespace authority Favourite, or unfavourite, a gallery in a group's pool. The record is the viewer's own, written into the pool rather than their public repo: in the public repo it would name a private gallery to the whole network.
- social.grain.unspecced.searchActorsTypeahead query not from the namespace authority Typeahead search for actors, merging bsky and grain profiles.
- social.grain.unspecced.searchGalleries query not from the namespace authority Full-text search for galleries, returning full gallery views.
- social.grain.unspecced.searchProfiles query not from the namespace authority Full-text search for user profiles.