dev.knotless.defs

lexicons.knotless.dev

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "actorView": {
      "description": "An account, as an appview shows it beside what it did.",
      "properties": {
        "avatar": {
          "description": "The account's picture, as in dev.knotless.getProfile#profileView.",
          "format": "uri",
          "type": "string"
        },
        "did": {
          "format": "did",
          "type": "string"
        },
        "handle": {
          "description": "The handle the account claims, when it resolves back to it; else the DID.",
          "type": "string"
        }
      },
      "required": [
        "did",
        "handle"
      ],
      "type": "object"
    },
    "actorViewerState": {
      "description": "What the account asking a query has to do with an account.",
      "properties": {
        "blocking": {
          "description": "Its dev.knotless.block record keeping the account out of all its repositories, if it has one.",
          "format": "at-uri",
          "type": "string"
        },
        "following": {
          "description": "Its dev.knotless.follow record naming the account, if it follows it.",
          "format": "at-uri",
          "type": "string"
        }
      },
      "type": "object"
    },
    "byteSlice": {
      "description": "A span of a text, by its UTF-8 bytes, counted from zero: the start inclusive, the end exclusive.",
      "properties": {
        "byteEnd": {
          "minimum": 0,
          "type": "integer"
        },
        "byteStart": {
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "byteStart",
        "byteEnd"
      ],
      "type": "object"
    },
    "changesView": {
      "description": "What a pull brings in: for a merged one, what its merge brought into the base; otherwise what its branch has since it left the base.",
      "properties": {
        "commits": {
          "description": "Oldest first.",
          "items": {
            "ref": "#commitView",
            "type": "ref"
          },
          "type": "array"
        },
        "files": {
          "items": {
            "ref": "#fileDiffView",
            "type": "ref"
          },
          "type": "array"
        },
        "head": {
          "description": "For an open pull, the hex object ID of the commit its branch is at: what its checks and reviews are of.",
          "type": "string"
        },
        "repo": {
          "description": "The repository whose commit pages show its commits.",
          "ref": "#repoViewBasic",
          "type": "ref"
        }
      },
      "required": [
        "repo",
        "commits",
        "files"
      ],
      "type": "object"
    },
    "checkImageView": {
      "description": "A picture a check made: screenshots of the pages a change moved, say.",
      "properties": {
        "alt": {
          "description": "What it shows.",
          "type": "string"
        },
        "url": {
          "description": "Where this appview serves it, as a path.",
          "type": "string"
        }
      },
      "required": [
        "alt",
        "url"
      ],
      "type": "object"
    },
    "checkView": {
      "description": "The newest run of a workflow, as a runner the repository names in its record reported it.",
      "properties": {
        "commit": {
          "description": "The commit it ran at, in hex.",
          "type": "string"
        },
        "error": {
          "description": "Why it could not run.",
          "type": "string"
        },
        "finishedAt": {
          "format": "datetime",
          "type": "string"
        },
        "images": {
          "description": "The pictures it made to be looked at, in order.",
          "items": {
            "ref": "#checkImageView",
            "type": "ref"
          },
          "type": "array"
        },
        "repo": {
          "description": "The repository it is of, whose pages show it.",
          "ref": "#repoViewBasic",
          "type": "ref"
        },
        "skipped": {
          "description": "For a `success` that ran nothing, as the change touched none of the paths its workflow names: why.",
          "type": "string"
        },
        "startedAt": {
          "format": "datetime",
          "type": "string"
        },
        "status": {
          "description": "`queued` is a run filed and waiting for a job on its runner, no step started yet.",
          "knownValues": [
            "queued",
            "running",
            "success",
            "failure",
            "error",
            "cancelled"
          ],
          "type": "string"
        },
        "uri": {
          "description": "Its dev.knotless.check record.",
          "format": "at-uri",
          "type": "string"
        },
        "workflow": {
          "type": "string"
        }
      },
      "required": [
        "uri",
        "repo",
        "workflow",
        "status",
        "commit",
        "startedAt",
        "images"
      ],
      "type": "object"
    },
    "commentView": {
      "description": "Something said on a pull or an issue.",
      "properties": {
        "author": {
          "ref": "#actorView",
          "type": "ref"
        },
        "body": {
          "description": "What it says, as its author wrote it, in Markdown.",
          "type": "string"
        },
        "commit": {
          "description": "For a review of a pull, the hex object ID of the head it looked at.",
          "type": "string"
        },
        "createdAt": {
          "format": "datetime",
          "type": "string"
        },
        "html": {
          "description": "What it says, its Markdown made into HTML: raw HTML shown as text, and links made relative to the repository.",
          "type": "string"
        },
        "reactions": {
          "description": "How accounts reacted to it, by content, in the order dev.knotless.defs#reactionContent lists them. Absent when none did.",
          "items": {
            "ref": "#reactionCountView",
            "type": "ref"
          },
          "type": "array"
        },
        "updatedAt": {
          "description": "When its author last changed it, if they have.",
          "format": "datetime",
          "type": "string"
        },
        "uri": {
          "description": "Its dev.knotless.comment record.",
          "format": "at-uri",
          "type": "string"
        },
        "verdict": {
          "description": "For a review, what it found.",
          "knownValues": [
            "approve",
            "changes"
          ],
          "type": "string"
        }
      },
      "required": [
        "author",
        "createdAt",
        "html"
      ],
      "type": "object"
    },
    "commitAuthorView": {
      "description": "Who wrote a commit or helped to: by the name git gives, and by account when that is one of the repository's people whose address it is.",
      "properties": {
        "actor": {
          "ref": "#actorView",
          "type": "ref"
        },
        "agent": {
          "description": "The coding agent whose address it is, when it is one the pages know the face of.",
          "knownValues": [
            "claude"
          ],
          "type": "string"
        },
        "name": {
          "description": "The name git records.",
          "type": "string"
        }
      },
      "required": [
        "name"
      ],
      "type": "object"
    },
    "commitRefView": {
      "description": "A commit, by its object name.",
      "properties": {
        "sha": {
          "description": "In hex.",
          "type": "string"
        }
      },
      "required": [
        "sha"
      ],
      "type": "object"
    },
    "commitView": {
      "description": "A commit, with the accounts that wrote it where the repository's pages believe their claims (dev.knotless.emails).",
      "properties": {
        "author": {
          "ref": "#commitAuthorView",
          "type": "ref"
        },
        "coauthors": {
          "description": "Who its message's `Co-authored-by` trailers name.",
          "items": {
            "ref": "#commitAuthorView",
            "type": "ref"
          },
          "type": "array"
        },
        "committedAt": {
          "description": "When it was committed: what history runs in, as its author's date need not.",
          "format": "datetime",
          "type": "string"
        },
        "committer": {
          "description": "Who committed it, when someone other than its author did.",
          "ref": "#commitAuthorView",
          "type": "ref"
        },
        "date": {
          "description": "When its author made it, which a rebase or a squash keeps.",
          "format": "datetime",
          "type": "string"
        },
        "message": {
          "description": "Its message, less the last line naming the pull it merged, if it did.",
          "type": "string"
        },
        "parents": {
          "items": {
            "ref": "#commitRefView",
            "type": "ref"
          },
          "type": "array"
        },
        "pull": {
          "description": "The pull its message's last line names, as a squash merge records it, when that is a pull on this repository.",
          "ref": "#itemViewBasic",
          "type": "ref"
        },
        "sha": {
          "description": "Its object name, in hex.",
          "type": "string"
        }
      },
      "required": [
        "sha",
        "parents",
        "author",
        "coauthors",
        "date",
        "message"
      ],
      "type": "object"
    },
    "diffRowView": {
      "description": "One row of a file's diff: a hunk header, a note, or a line with its old and new numbers.",
      "properties": {
        "kind": {
          "description": "`h` for a hunk header, `x` for a note, `a` for a line added, `d` for one removed, or empty for context.",
          "type": "string"
        },
        "line": {
          "description": "Whether it is a line of the file.",
          "type": "boolean"
        },
        "new": {
          "description": "Its number after.",
          "minimum": 0,
          "type": "integer"
        },
        "old": {
          "description": "Its number before.",
          "minimum": 0,
          "type": "integer"
        },
        "text": {
          "type": "string"
        }
      },
      "required": [
        "kind",
        "line",
        "text"
      ],
      "type": "object"
    },
    "facet": {
      "description": "Where a text says more than its words, shaped as app.bsky.richtext.facet: the span it covers and what that span is. A pull's, an issue's or a comment's body has its own, and a pull's or an issue's title its own.",
      "properties": {
        "features": {
          "description": "What the span is. Kinds unknown to a reader are passed over.",
          "items": {
            "refs": [
              "#mention"
            ],
            "type": "union"
          },
          "maxLength": 8,
          "type": "array"
        },
        "index": {
          "ref": "#byteSlice",
          "type": "ref"
        }
      },
      "required": [
        "index",
        "features"
      ],
      "type": "object"
    },
    "fileDiffView": {
      "description": "One file of a diff, or why its rows are not shown.",
      "properties": {
        "added": {
          "description": "Lines added.",
          "minimum": 0,
          "type": "integer"
        },
        "hunkCount": {
          "description": "Of those rows, how many are hunk headers, which a page may draw taller than a line.",
          "minimum": 0,
          "type": "integer"
        },
        "new": {
          "description": "Its path after.",
          "type": "string"
        },
        "note": {
          "description": "Why its rows are not shown, when they are not.",
          "type": "string"
        },
        "old": {
          "description": "Its path before.",
          "type": "string"
        },
        "ranges": {
          "description": "The ranges its highlighting paints, encoded as the pages read them.",
          "type": "string"
        },
        "removed": {
          "description": "Lines removed.",
          "minimum": 0,
          "type": "integer"
        },
        "rowCount": {
          "description": "Where its rows are left out but would be shown, as dev.knotless.getThread's filesOnly leaves them, how many there are: the room a page keeps for them until they come.",
          "minimum": 0,
          "type": "integer"
        },
        "rows": {
          "items": {
            "ref": "#diffRowView",
            "type": "ref"
          },
          "type": "array"
        },
        "status": {
          "knownValues": [
            "added",
            "deleted",
            "renamed",
            "modified"
          ],
          "type": "string"
        }
      },
      "required": [
        "old",
        "new",
        "status",
        "added",
        "removed",
        "rows"
      ],
      "type": "object"
    },
    "followState": {
      "description": "An account's followers, as following or unfollowing it leaves them.",
      "properties": {
        "followersCount": {
          "description": "How many accounts follow it now.",
          "minimum": 0,
          "type": "integer"
        },
        "following": {
          "description": "The asker's dev.knotless.follow record naming it; absent once unfollowed.",
          "format": "at-uri",
          "type": "string"
        }
      },
      "required": [
        "followersCount"
      ],
      "type": "object"
    },
    "image": {
      "description": "A picture a pull's, an issue's or a comment's body shows, attached so its author's PDS keeps it. The body links to it on that PDS, as `com.atproto.sync.getBlob` serves it, saying what it shows as Markdown's alt text; readers may show it from elsewhere, as dev.knotless.getAttachment does.",
      "properties": {
        "image": {
          "accept": [
            "image/png",
            "image/jpeg",
            "image/webp",
            "image/gif"
          ],
          "maxSize": 1000000,
          "type": "blob"
        }
      },
      "required": [
        "image"
      ],
      "type": "object"
    },
    "itemView": {
      "description": "A pull or an issue in a list of them.",
      "properties": {
        "author": {
          "description": "Who opened it.",
          "ref": "#actorView",
          "type": "ref"
        },
        "comments": {
          "description": "How many comments are on it, its own body aside.",
          "minimum": 0,
          "type": "integer"
        },
        "createdAt": {
          "format": "datetime",
          "type": "string"
        },
        "draft": {
          "description": "A pull its author has not marked ready to merge. Not, when absent.",
          "type": "boolean"
        },
        "kind": {
          "knownValues": [
            "pull",
            "issue"
          ],
          "type": "string"
        },
        "labels": {
          "description": "The labels it carries, as the repository defines them, in the order it does. Absent when it carries none.",
          "items": {
            "ref": "dev.knotless.repo#label",
            "type": "ref"
          },
          "type": "array"
        },
        "reviewers": {
          "description": "Those a pull's author asks to review it, in the order asked. Absent when it asks no one.",
          "items": {
            "ref": "#actorView",
            "type": "ref"
          },
          "type": "array"
        },
        "state": {
          "description": "A merged pull is merged; a closed one, or an issue, closed.",
          "knownValues": [
            "open",
            "closed",
            "merged"
          ],
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "updatedAt": {
          "description": "When its author last changed its title or body, if they have.",
          "format": "datetime",
          "type": "string"
        },
        "uri": {
          "description": "Its dev.knotless.pull or dev.knotless.issue record.",
          "format": "at-uri",
          "type": "string"
        }
      },
      "required": [
        "uri",
        "kind",
        "title",
        "state",
        "author",
        "createdAt",
        "comments"
      ],
      "type": "object"
    },
    "itemViewBasic": {
      "description": "A pull or an issue, by its record and its title.",
      "properties": {
        "title": {
          "type": "string"
        },
        "uri": {
          "description": "Its dev.knotless.pull or dev.knotless.issue record.",
          "format": "at-uri",
          "type": "string"
        }
      },
      "required": [
        "uri",
        "title"
      ],
      "type": "object"
    },
    "languageView": {
      "description": "One language a repository is written in.",
      "properties": {
        "bytes": {
          "minimum": 0,
          "type": "integer"
        },
        "color": {
          "description": "Its color, as linguist has it.",
          "type": "string"
        },
        "name": {
          "description": "Its name, or `Other` for the languages each under one percent.",
          "type": "string"
        },
        "permille": {
          "description": "Its share of all the bytes counted, in tenths of a percent.",
          "maximum": 1000,
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "name",
        "color",
        "bytes",
        "permille"
      ],
      "type": "object"
    },
    "link": {
      "description": "A link shown on an account's profile or a repository's pages.",
      "properties": {
        "title": {
          "description": "What to call it. Readers fall back to the address's host.",
          "maxGraphemes": 40,
          "maxLength": 320,
          "type": "string"
        },
        "url": {
          "description": "Where it goes: an http or https address.",
          "format": "uri",
          "type": "string"
        }
      },
      "required": [
        "url"
      ],
      "type": "object"
    },
    "mention": {
      "description": "An account the span, `@handle` in the text, mentions: kept by DID, so it names the account still after its handle changes. The account hears of it as a notification.",
      "properties": {
        "did": {
          "format": "did",
          "type": "string"
        }
      },
      "required": [
        "did"
      ],
      "type": "object"
    },
    "minutesView": {
      "description": "The minutes a runner the repository names counts for its owner's public repositories, from its dev.knotless.minutes record.",
      "properties": {
        "allowance": {
          "description": "The minutes in 30 days it gives the owner's runs before they go one at a time. Absent when there is no limit.",
          "minimum": 1,
          "type": "integer"
        },
        "freeing": {
          "description": "When minutes counted now stop counting, soonest first.",
          "items": {
            "ref": "dev.knotless.minutes#freeing",
            "type": "ref"
          },
          "type": "array"
        },
        "minutes": {
          "description": "The minutes steps took in the 30 days up to `updatedAt`.",
          "minimum": 0,
          "type": "integer"
        },
        "runner": {
          "description": "The runner's account.",
          "ref": "#actorView",
          "type": "ref"
        },
        "updatedAt": {
          "description": "When the runner last counted.",
          "format": "datetime",
          "type": "string"
        }
      },
      "required": [
        "runner",
        "minutes",
        "updatedAt"
      ],
      "type": "object"
    },
    "packageView": {
      "description": "One package a repository publishes.",
      "properties": {
        "image": {
          "description": "True when its latest version, or its newest when none is latest, is a container image.",
          "type": "boolean"
        },
        "latest": {
          "description": "Its latest version: the highest with no pre-release part. Absent when it has only pre-releases.",
          "type": "string"
        },
        "name": {
          "description": "The package's name.",
          "type": "string"
        },
        "releaseCount": {
          "description": "How many versions of it are published.",
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "name"
      ],
      "type": "object"
    },
    "pullHeadView": {
      "description": "What a pull brings in: a branch of a repository.",
      "properties": {
        "branch": {
          "type": "string"
        },
        "repo": {
          "description": "The repository the branch is on, if the index knows it.",
          "ref": "#repoViewBasic",
          "type": "ref"
        }
      },
      "required": [
        "branch"
      ],
      "type": "object"
    },
    "queueStateView": {
      "description": "Where an open pull stands in its target branch's merge queue.",
      "properties": {
        "checks": {
          "description": "While its batch is being checked or landing, the batch's checks; once ejected by checks that failed, those.",
          "items": {
            "ref": "#checkView",
            "type": "ref"
          },
          "type": "array"
        },
        "createdAt": {
          "description": "When it was queued or ejected.",
          "format": "datetime",
          "type": "string"
        },
        "reason": {
          "description": "Why it was ejected, as the runner said.",
          "type": "string"
        },
        "said": {
          "description": "Where it stands, in words: `Queued, 3rd of 5`, `In a batch of 4 being checked`, `Landing`, or why it was ejected.",
          "type": "string"
        },
        "state": {
          "knownValues": [
            "queued",
            "ejected"
          ],
          "type": "string"
        }
      },
      "required": [
        "state",
        "createdAt",
        "said",
        "checks"
      ],
      "type": "object"
    },
    "reactionContent": {
      "description": "What a reaction says, as GitHub's eight: a thumbs up, a thumbs down, a laugh, a party popper, a confused face, a heart, a rocket and eyes.",
      "knownValues": [
        "+1",
        "-1",
        "laugh",
        "hooray",
        "confused",
        "heart",
        "rocket",
        "eyes"
      ],
      "maxLength": 32,
      "type": "string"
    },
    "reactionCountView": {
      "description": "How many accounts reacted to something with one content.",
      "properties": {
        "content": {
          "ref": "#reactionContent",
          "type": "ref"
        },
        "count": {
          "description": "How many accounts reacted so, each once.",
          "minimum": 0,
          "type": "integer"
        },
        "reaction": {
          "description": "The asker's dev.knotless.reaction record of this content on it, if they reacted so.",
          "format": "at-uri",
          "type": "string"
        }
      },
      "required": [
        "content",
        "count"
      ],
      "type": "object"
    },
    "reactionState": {
      "description": "The reactions to a pull, an issue or a comment.",
      "properties": {
        "reactions": {
          "description": "By content, in the order dev.knotless.defs#reactionContent lists them; a content no account reacted with is left out.",
          "items": {
            "ref": "#reactionCountView",
            "type": "ref"
          },
          "type": "array"
        },
        "subject": {
          "description": "The pull, issue or comment.",
          "format": "at-uri",
          "type": "string"
        }
      },
      "required": [
        "subject",
        "reactions"
      ],
      "type": "object"
    },
    "releaseFileView": {
      "description": "One file of a release.",
      "properties": {
        "name": {
          "description": "Its name, as it is downloaded.",
          "type": "string"
        },
        "sha256": {
          "description": "The lowercase hex SHA-256 of the file, which a reader checks it against.",
          "type": "string"
        },
        "size": {
          "description": "Bytes in the file.",
          "minimum": 1,
          "type": "integer"
        }
      },
      "required": [
        "name",
        "size",
        "sha256"
      ],
      "type": "object"
    },
    "releaseView": {
      "description": "One version of a package a repository publishes, from its dev.knotless.release record, with its files and notes.",
      "properties": {
        "check": {
          "description": "The dev.knotless.check of the run that built it, if its record names one.",
          "format": "at-uri",
          "type": "string"
        },
        "commit": {
          "description": "The hex object ID of the commit its files were built from, if its record names one.",
          "type": "string"
        },
        "createdAt": {
          "description": "As its record says.",
          "format": "datetime",
          "type": "string"
        },
        "files": {
          "description": "What it publishes, in its record's order.",
          "items": {
            "ref": "#releaseFileView",
            "type": "ref"
          },
          "type": "array"
        },
        "html": {
          "description": "`notes` made into HTML, as dev.knotless.getThread's comments are: raw HTML shown as text, and links made relative to the repository.",
          "type": "string"
        },
        "image": {
          "description": "True when its files are a container image's OCI layout: an `index.json` beside blobs named `sha256-<hex>`, pulled by `docker pull` rather than downloaded.",
          "type": "boolean"
        },
        "latest": {
          "description": "True for its package's latest version: the highest with no pre-release part.",
          "type": "boolean"
        },
        "notes": {
          "description": "What changed since the version before, in Markdown, as its record says.",
          "type": "string"
        },
        "package": {
          "description": "The package's name.",
          "type": "string"
        },
        "uri": {
          "description": "Its dev.knotless.release record.",
          "format": "at-uri",
          "type": "string"
        },
        "version": {
          "description": "Its Semantic Versioning 2.0 version.",
          "type": "string"
        }
      },
      "required": [
        "uri",
        "package",
        "version",
        "files",
        "createdAt"
      ],
      "type": "object"
    },
    "releaseViewBasic": {
      "description": "One version of a package a repository publishes, from its dev.knotless.release record: which, and when.",
      "properties": {
        "createdAt": {
          "description": "As its record says.",
          "format": "datetime",
          "type": "string"
        },
        "image": {
          "description": "True when its files are a container image's OCI layout, pulled by `docker pull` rather than downloaded.",
          "type": "boolean"
        },
        "latest": {
          "description": "True for its package's latest version: the highest with no pre-release part.",
          "type": "boolean"
        },
        "package": {
          "description": "The package's name.",
          "type": "string"
        },
        "uri": {
          "description": "Its dev.knotless.release record.",
          "format": "at-uri",
          "type": "string"
        },
        "version": {
          "description": "Its Semantic Versioning 2.0 version.",
          "type": "string"
        }
      },
      "required": [
        "uri",
        "package",
        "version",
        "createdAt"
      ],
      "type": "object"
    },
    "releasesView": {
      "description": "What a repository publishes, in brief, for its pages to show under its name.",
      "properties": {
        "count": {
          "description": "How many releases it has published, of all its packages.",
          "minimum": 0,
          "type": "integer"
        },
        "packages": {
          "description": "Each package it publishes, by name.",
          "items": {
            "ref": "#packageView",
            "type": "ref"
          },
          "type": "array"
        },
        "release": {
          "description": "The release to show for it: the latest of the package named as the repository, else the newest that is its package's latest, or the newest of all when each is a pre-release.",
          "ref": "#releaseViewBasic",
          "type": "ref"
        }
      },
      "required": [
        "count",
        "release",
        "packages"
      ],
      "type": "object"
    },
    "repoMade": {
      "description": "A repository the pages made: created, forked, renamed or taken up.",
      "properties": {
        "name": {
          "description": "Its name, the record key.",
          "maxLength": 100,
          "type": "string"
        },
        "uri": {
          "description": "Its dev.knotless.repo record, by its owner's DID.",
          "format": "at-uri",
          "type": "string"
        }
      },
      "required": [
        "uri",
        "name"
      ],
      "type": "object"
    },
    "repoRef": {
      "description": "A repository, as another record names it. The URI's name is the one the repository had when the record was written; a rename changes it, and a later repository can take it. The owner in the URI and `key` stay the repository's own, and are what a reader matches on.",
      "properties": {
        "key": {
          "description": "The repository's `key`.",
          "format": "tid",
          "type": "string"
        },
        "uri": {
          "description": "The dev.knotless.repo record, as it was named when this was written.",
          "format": "at-uri",
          "type": "string"
        }
      },
      "required": [
        "uri",
        "key"
      ],
      "type": "object"
    },
    "repoView": {
      "description": "A repository among others, from its dev.knotless.repo record.",
      "properties": {
        "createdAt": {
          "description": "As its record says.",
          "format": "datetime",
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "forkCount": {
          "description": "How many forks of it there are, as the appview has indexed. Given only where a list shows it, as an account's stars do.",
          "minimum": 0,
          "type": "integer"
        },
        "forkOf": {
          "description": "The repository it was forked from, if the appview knows it.",
          "ref": "#repoViewBasic",
          "type": "ref"
        },
        "language": {
          "description": "The language most of its default branch is written in, as its file listing counts them. Absent when none is counted, or the appview could not read it.",
          "ref": "#languageView",
          "type": "ref"
        },
        "name": {
          "description": "The repository's name: its record key.",
          "type": "string"
        },
        "owner": {
          "ref": "#actorView",
          "type": "ref"
        },
        "private": {
          "description": "Whether it is private, in a space: listed only to its owner, asking.",
          "type": "boolean"
        },
        "starCount": {
          "description": "How many accounts starred it, as the appview has indexed. Given only where a list shows it, as an account's stars do.",
          "minimum": 0,
          "type": "integer"
        },
        "uri": {
          "description": "Its dev.knotless.repo record, under the name it has now.",
          "format": "at-uri",
          "type": "string"
        }
      },
      "required": [
        "uri",
        "owner",
        "name",
        "createdAt"
      ],
      "type": "object"
    },
    "repoViewBasic": {
      "description": "A repository, under the name it has now.",
      "properties": {
        "did": {
          "description": "The repository's owner.",
          "format": "did",
          "type": "string"
        },
        "handle": {
          "description": "The owner's handle, as in #actorView.",
          "type": "string"
        },
        "name": {
          "description": "The repository's name: its record key.",
          "type": "string"
        }
      },
      "required": [
        "did",
        "handle",
        "name"
      ],
      "type": "object"
    },
    "repoViewDetailed": {
      "description": "A repository, with what its pages show above themselves.",
      "properties": {
        "card": {
          "description": "The path, on this appview, of the picture a link to its pages unfurls into: a new one whenever the picture changes.",
          "type": "string"
        },
        "defaultBranch": {
          "description": "The branch its HEAD names: empty, for a repository never pushed.",
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "forkOf": {
          "description": "The repository it was forked from, if the appview knows it.",
          "ref": "#repoViewBasic",
          "type": "ref"
        },
        "links": {
          "description": "Links its pages show, in display order, as its record names them: its website first. Only http and https addresses.",
          "items": {
            "ref": "#link",
            "type": "ref"
          },
          "type": "array"
        },
        "name": {
          "description": "The repository's name: its record key.",
          "type": "string"
        },
        "openIssues": {
          "minimum": 0,
          "type": "integer"
        },
        "openPulls": {
          "minimum": 0,
          "type": "integer"
        },
        "owner": {
          "ref": "#actorView",
          "type": "ref"
        },
        "private": {
          "description": "Whether it is private, in a space: shown only to its members, each logged in to this appview.",
          "type": "boolean"
        },
        "releases": {
          "description": "What it publishes, in brief, as the appview has indexed. Absent when it has published nothing, for a private repository, which cannot publish, and from an appview that keeps no index.",
          "ref": "#releasesView",
          "type": "ref"
        },
        "starCount": {
          "description": "How many accounts starred it, as the appview has indexed. Absent for a private repository, which cannot be starred, and from an appview that keeps no index.",
          "minimum": 0,
          "type": "integer"
        },
        "uri": {
          "description": "Its dev.knotless.repo record, under the name it has now.",
          "format": "at-uri",
          "type": "string"
        },
        "viewer": {
          "description": "What the account asking has to do with it; absent when no one asks.",
          "ref": "#repoViewerState",
          "type": "ref"
        }
      },
      "required": [
        "uri",
        "owner",
        "name",
        "defaultBranch",
        "openPulls",
        "openIssues",
        "card"
      ],
      "type": "object"
    },
    "repoViewerState": {
      "description": "What the account asking a query has to do with a repository.",
      "properties": {
        "star": {
          "description": "Its dev.knotless.star record naming the repository, if it starred it.",
          "format": "at-uri",
          "type": "string"
        },
        "transfer": {
          "description": "Where the owner has offered to move the repository, when it is offered to the account asking, which can take it up (dev.knotless.acceptTransfer).",
          "ref": "#repoViewBasic",
          "type": "ref"
        }
      },
      "type": "object"
    },
    "reviewView": {
      "description": "Where one reviewer stands on a pull: their latest comment with a verdict. A comment without one leaves it as it was, and a pull's author reviews nothing of their own.",
      "properties": {
        "commit": {
          "description": "The hex object ID of the head it looked at.",
          "type": "string"
        },
        "maintainer": {
          "description": "Whether the reviewer is the repository's owner or a collaborator.",
          "type": "boolean"
        },
        "outdated": {
          "description": "Whether the open pull has moved past the head it looked at: an approval then stands for what the pull was, not what it is.",
          "type": "boolean"
        },
        "reviewer": {
          "ref": "#actorView",
          "type": "ref"
        },
        "uri": {
          "description": "The dev.knotless.comment that reviewed it.",
          "format": "at-uri",
          "type": "string"
        },
        "verdict": {
          "description": "`approve`, or `changes` for one that asked for changes.",
          "knownValues": [
            "approve",
            "changes"
          ],
          "type": "string"
        }
      },
      "required": [
        "reviewer",
        "verdict",
        "uri",
        "outdated",
        "maintainer"
      ],
      "type": "object"
    },
    "starState": {
      "description": "A repository's stars, as starring or unstarring it leaves them.",
      "properties": {
        "star": {
          "description": "The asker's dev.knotless.star record naming it; absent once unstarred.",
          "format": "at-uri",
          "type": "string"
        },
        "starCount": {
          "description": "How many accounts starred it now.",
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "starCount"
      ],
      "type": "object"
    }
  },
  "description": "Definitions shared by the knotless lexicons.",
  "id": "dev.knotless.defs",
  "lexicon": 1
}

Validate Record

Validate a record against dev.knotless.defs

Validation Options
Automatically resolve and include external schemas for full validation
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:yqsg7znbbhfmj3a2nrpnaerk
CID
bafyreicf5g3ssoftq2pgjoeykdfrep5ghqd37dc3rno63cok3ma3zwkr5q
Indexed At
2026-10-29 06:15 UTC
AT-URI
at://did:plc:yqsg7znbbhfmj3a2nrpnaerk/com.atproto.lexicon.schema/dev.knotless.defs

Version History (7 versions)

Referenced Schemas (2)

Similar Lexicons

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • A pull or an issue, and everything said on it.

  • A comment on a pull or issue. With a verdict it is a review; with a line, a comment on lines of a pull's diff, starting a thread there; with a reply, an answer in such a thread.

  • What happened on the public repositories an appview has indexed, newest first.

Lexicon Garden

@