at.happyproto.admin.createSpaces
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"main": {
"description": "Create HappyProto's admin and customers spaces under HAPPYPROTO_DID, member-only, keeping either that already exists, and add each of staff to the admin space with write access, skipping existing members. Idempotent: a second call creates nothing and adds no one. Only HappyProto's own account may call it.",
"errors": [
{
"description": "The caller is not HAPPYPROTO_DID, is signed out, or HAPPYPROTO_DID is unset or not a DID.",
"name": "Forbidden"
},
{
"description": "staff is not a list of at most 50 DIDs.",
"name": "InvalidRequest"
},
{
"description": "A space could not be read, created or changed, or the instance anchors new spaces under its own DID rather than HAPPYPROTO_DID. A failure part-way through staff names, in its message, the DIDs already added. Retrying is safe.",
"name": "Upstream"
}
],
"input": {
"encoding": "application/json",
"schema": {
"properties": {
"staff": {
"description": "DIDs to add to the admin space with write access. A DID listed twice is added once. A DID that is already a member is left at its current access (a read-only member is not upgraded) and is not listed in staffAdded.",
"items": {
"format": "did",
"type": "string"
},
"maxLength": 50,
"type": "array"
}
},
"type": "object"
}
},
"output": {
"encoding": "application/json",
"schema": {
"properties": {
"adminSpace": {
"ref": "#space",
"type": "ref"
},
"customersSpace": {
"ref": "#space",
"type": "ref"
},
"staffAdded": {
"description": "The DIDs this call added to the admin space; members already present are left out.",
"items": {
"format": "did",
"type": "string"
},
"type": "array"
}
},
"required": [
"adminSpace",
"customersSpace",
"staffAdded"
],
"type": "object"
}
},
"type": "procedure"
},
"space": {
"properties": {
"created": {
"description": "Whether this call created the space; false when it already existed.",
"type": "boolean"
},
"uri": {
"description": "The space's at:// uri, at://<HAPPYPROTO_DID>/space/<type>/main. Not format at-uri: that format allows a collection NSID and a record key at most, and a space uri has four path segments and `space` where the NSID would be, so @atproto/lexicon refuses it.",
"format": "uri",
"type": "string"
}
},
"required": [
"uri",
"created"
],
"type": "object"
}
},
"id": "at.happyproto.admin.createSpaces",
"lexicon": 1
}
Metadata
- DID
-
did:plc:mo7vq4jbioxwafy5zkcc3eux - CID
-
bafyreicjkubnl4l5jiexh7cculn2hzakxi67lwkiblhjr6jfzt5e5yuffm - Indexed At
- 2026-10-19 18:20 UTC
- AT-URI
-
at://did:plc:mo7vq4jbioxwafy5zkcc3eux/com.atproto.lexicon.schema/at.happyproto.admin.createSpaces
Similar Lexicons
Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.
-
at.happyproto.admin.addCustomer procedure
Make an account a customer: add it to the customers space with read access. Adding an existing member succeeds and changes nothing. Staff only.
-
dev.cartridge.claims.setupAdmin procedure
Bootstrap the claims admin space or add a member to it. Creates the admin space on first call; subsequent calls can add new admin DIDs.
-
rsvp.atmo.space.admin.createSpace procedure
Create a new space owned by the JWT issuer. The caller is added as an owner-perm member.
-
rsvp.atmo.space.admin.addMember procedure
Add a member to a space. Caller must be the space owner.
-
town.muni.arbiter.createSpace procedure
Create a new space on an arbiter.