dev.knotless.defs
{
"$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"
},
"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"
},
"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"
},
"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"
},
"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"
},
"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"
},
"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"
},
"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"
},
"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"
},
"forkOf": {
"description": "The repository it was forked from, if the appview knows it.",
"ref": "#repoViewBasic",
"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"
},
"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"
},
"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
}
Metadata
- DID
-
did:plc:yqsg7znbbhfmj3a2nrpnaerk - CID
-
bafyreicsqa7c5cwy23eczuxf4i5g35kwcbk3mz6pnfuwxhzkjmbncfzizq - Indexed At
- 2026-10-28 21:21 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.
-
dev.knotless.getThread query
A pull or an issue, and everything said on it.
-
dev.knotless.comment record
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.
-
dev.knotless.getFeed query
What happened on the public repositories an appview has indexed, newest first.