social.grain.unspecced.createPrivateGallery
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.
Details · procedure
| Kind | procedure |
|---|---|
| Authority | unspecced.grain.social |
| Indexed |
Checks
Validunlimited-stringdefs.main.input.schema.properties.members.itemsNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.output.schema.properties.spaceNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.photoInput.properties.altNo maxLength, maxGraphemes or format limits this string.
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"main": {
"description": "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.",
"errors": [
{
"description": "The author's PDS does not serve permissioned spaces.",
"name": "SpacesUnsupported"
},
{
"description": "One of the named members could not be resolved.",
"name": "ActorNotFound"
}
],
"input": {
"encoding": "application/json",
"schema": {
"properties": {
"description": {
"maxLength": 1000,
"type": "string"
},
"members": {
"description": "Handles or DIDs allowed to read the gallery. The author always can.",
"items": {
"type": "string"
},
"maxLength": 100,
"type": "array"
},
"photos": {
"items": {
"ref": "#photoInput",
"type": "ref"
},
"maxLength": 100,
"type": "array"
},
"rkey": {
"description": "Record key for the gallery. Doubles as the space's skey, so one gallery is one space.",
"maxLength": 64,
"type": "string"
},
"title": {
"maxLength": 100,
"type": "string"
}
},
"required": [
"rkey",
"title"
],
"type": "object"
}
},
"output": {
"encoding": "application/json",
"schema": {
"properties": {
"space": {
"description": "The space URI the gallery lives in.",
"type": "string"
},
"uri": {
"format": "at-uri",
"type": "string"
}
},
"required": [
"space",
"uri"
],
"type": "object"
}
},
"type": "procedure"
},
"photoInput": {
"properties": {
"alt": {
"type": "string"
},
"aspectRatio": {
"ref": "social.grain.defs#aspectRatio",
"type": "ref"
},
"photo": {
"accept": [
"image/*"
],
"maxSize": 1000000,
"type": "blob"
}
},
"required": [
"photo",
"aspectRatio"
],
"type": "object"
}
},
"id": "social.grain.unspecced.createPrivateGallery",
"lexicon": 1
}