dev.knotless.shareRepo

Names the account among the collaborators of the repository's dev.knotless.repo record, as `knotless repo share --write` does: it pushes and commits through the gateway the owner delegated writes to, which must be named first, as `knotless account delegate` names it. Its owner can, logged in to this appview's web pages: the appview writes with the session it keeps for that account, which the pages' session cookie names. For an organization's repository, so can an admin who joined it, logged in to the pages or with a service token from their own PDS for this method: the appview's gateway, which the organization delegated its writes to, writes as the organization.

Details · procedure
Kindprocedure
Authorityknotless.dev
Indexed
cid bafyreifxxeeomuv5cqccachoo4wzvqifpqw5m62mhxwbtgtpfotvh2cxi4

Checks

Valid Lint pass
JSONDownload
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Names the account among the collaborators of the repository's dev.knotless.repo record, as `knotless repo share --write` does: it pushes and commits through the gateway the owner delegated writes to, which must be named first, as `knotless account delegate` names it. Its owner can, logged in to this appview's web pages: the appview writes with the session it keeps for that account, which the pages' session cookie names. For an organization's repository, so can an admin who joined it, logged in to the pages or with a service token from their own PDS for this method: the appview's gateway, which the organization delegated its writes to, writes as the organization.",
      "errors": [
        {
          "description": "No such repository.",
          "name": "NotFound"
        },
        {
          "description": "There is no such account, the owner has delegated writes to no gateway, or a public repository was shared for reading, which anyone may.",
          "name": "InvalidRequest"
        },
        {
          "description": "No account is logged in to the pages, or its session has ended.",
          "name": "AuthenticationRequired"
        },
        {
          "description": "The account logged in is not the repository's owner.",
          "name": "Forbidden"
        }
      ],
      "input": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "repo": {
              "description": "The repository's dev.knotless.repo record, as dev.knotless.getRepo takes it.",
              "format": "at-uri",
              "type": "string"
            },
            "with": {
              "description": "The account, by handle or DID.",
              "format": "at-identifier",
              "type": "string"
            },
            "write": {
              "description": "Whether it may push, as `knotless repo share --write` lets it; false lets it only read a private repository, and open pulls and issues there, as `knotless repo share` does, taking back any push it had. True when absent.",
              "type": "boolean"
            }
          },
          "required": [
            "repo",
            "with"
          ],
          "type": "object"
        }
      },
      "output": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "collaborators": {
              "description": "The accounts that may push to it now.",
              "items": {
                "ref": "dev.knotless.defs#actorView",
                "type": "ref"
              },
              "type": "array"
            }
          },
          "required": [
            "collaborators"
          ],
          "type": "object"
        }
      },
      "type": "procedure"
    }
  },
  "description": "Lets an account push to a repository, or read a private one.",
  "id": "dev.knotless.shareRepo",
  "lexicon": 1
}