at.happyproto.admin.createSpaces

Create HappyProto's admin and customers spaces, member-only, keeping either that already exists, and add each of staff to the admin space with write access, skipping existing members. Each space is looked up at the uri its script variable (HAPPYPROTO_ADMIN_SPACE, HAPPYPROTO_CUSTOMERS_SPACE) names, or, unset, under HAPPYPROTO_DID. A space created here has a DID of its own, and the uri answered is the one to set its variable to. Idempotent once the variables are set: a second call creates nothing and adds no one. Only HappyProto's own account may call it.

Repository @happyproto.at did:plc:mo7vq4jbioxwafy5zkcc3eux namespace authority
Details · procedure
Kindprocedure
Authorityadmin.happyproto.at
Indexed

Showing version bafyreieijc3dbqictzi3q2thsgqhjdvizzjucqstd6qvxrbqdlnu27ifvm. Show the latest

cid bafyreieijc3dbqictzi3q2thsgqhjdvizzjucqstd6qvxrbqdlnu27ifvm

Checks

Valid Lint pass
JSONDownload
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Create HappyProto's admin and customers spaces, member-only, keeping either that already exists, and add each of staff to the admin space with write access, skipping existing members. Each space is looked up at the uri its script variable (HAPPYPROTO_ADMIN_SPACE, HAPPYPROTO_CUSTOMERS_SPACE) names, or, unset, under HAPPYPROTO_DID. A space created here has a DID of its own, and the uri answered is the one to set its variable to. Idempotent once the variables are set: a second call creates nothing and adds no one. Only HappyProto's own account may call it.",
      "errors": [
        {
          "description": "A space of this type already exists at a uri of its own that no variable names. The message names the variable to set to it.",
          "name": "Conflict"
        },
        {
          "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. 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
}