dev.knotless.site

Kept in the repository owner's account, keyed by the `key` of the dev.knotless.repo whose site it is, so a repository has one site. Each deploy replaces it, and the blobs only the old one named are freed. Deleting it takes the site down. Readers check every file against its `sha256`.

Details · record, key tid
Kindrecord
Record keytid
Authorityknotless.dev
Indexed
cid bafyreierotxxy7cibbat3x75fz47oih2pjkwpedq566xq447edqi3uapxe

Checks

Valid Lint pass
JSONDownload
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "file": {
      "description": "One file of a site.",
      "properties": {
        "contentType": {
          "description": "The `Content-Type` it is served with, such as `text/html; charset=utf-8`, or else the type its path's extension names. Its blobs are `application/octet-stream` whatever it holds.",
          "maxLength": 255,
          "minLength": 1,
          "type": "string"
        },
        "parts": {
          "description": "The file, split over blobs in order, each no larger than its PDS takes. None for an empty file.",
          "items": {
            "ref": "#part",
            "type": "ref"
          },
          "maxLength": 1000,
          "type": "array"
        },
        "path": {
          "description": "Where it is served under the site's root: `/`-separated, with no leading `/` and no `.` or `..` segment. `x/index.html` is served at `x/` too.",
          "maxLength": 512,
          "minLength": 1,
          "type": "string"
        },
        "sha256": {
          "description": "The lowercase hex SHA-256 of the file.",
          "maxLength": 64,
          "minLength": 64,
          "type": "string"
        },
        "size": {
          "description": "Bytes in the file.",
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "path",
        "size",
        "sha256",
        "parts"
      ],
      "type": "object"
    },
    "main": {
      "description": "Kept in the repository owner's account, keyed by the `key` of the dev.knotless.repo whose site it is, so a repository has one site. Each deploy replaces it, and the blobs only the old one named are freed. Deleting it takes the site down. Readers check every file against its `sha256`.",
      "key": "tid",
      "record": {
        "properties": {
          "check": {
            "description": "The dev.knotless.check, in its runner's account, of the run that built and deployed it. A reader trusts it only from a runner the repository names, and only once it has passed at `commit`.",
            "format": "at-uri",
            "type": "string"
          },
          "commit": {
            "description": "The hex object ID of the commit the files were built from.",
            "maxLength": 64,
            "minLength": 40,
            "type": "string"
          },
          "createdAt": {
            "description": "When this deploy was made.",
            "format": "datetime",
            "type": "string"
          },
          "fallback": {
            "description": "The path of a file in `files` served, with status 200, for a page no file has, as a single-page app routes in the browser: a request asking for `text/html`, or for a path whose last segment has no extension. Taken before `notFound`; anything else missing gets `notFound`.",
            "maxLength": 512,
            "minLength": 1,
            "type": "string"
          },
          "files": {
            "description": "What the site serves, by distinct paths.",
            "items": {
              "ref": "#file",
              "type": "ref"
            },
            "maxLength": 2000,
            "minLength": 1,
            "type": "array"
          },
          "notFound": {
            "description": "The path of a file in `files` served, with status 404, for a path no file has.",
            "maxLength": 512,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "files",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    },
    "part": {
      "description": "One blob of a file, in order.",
      "properties": {
        "blob": {
          "accept": [
            "application/octet-stream"
          ],
          "type": "blob"
        }
      },
      "required": [
        "blob"
      ],
      "type": "object"
    }
  },
  "description": "A repository's website: the static files served at `https://<owner>.knotless.page/<repo>/`, and the commit they were built from.",
  "id": "dev.knotless.site",
  "lexicon": 1
}