dev.knotless.getThread
A pull or an issue on a repository: what it says, what was said on it, and for a pull what it brings in, how its checks stand and where it is in the merge queue. No authentication; asked as an account, with a service token or the pages' session cookie, the answer says what that account may do with it, and which reactions are its own. A private repository is read for its members asking so.
Details · query
| Kind | query |
|---|---|
| Authority | knotless.dev |
| Indexed |
Checks
Validunlimited-stringdefs.main.output.schema.properties.baseNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.output.schema.properties.bodyNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.output.schema.properties.cardNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.output.schema.properties.htmlNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.output.schema.properties.mergedNo maxLength, maxGraphemes or format limits this string.
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"main": {
"description": "A pull or an issue on a repository: what it says, what was said on it, and for a pull what it brings in, how its checks stand and where it is in the merge queue. No authentication; asked as an account, with a service token or the pages' session cookie, the answer says what that account may do with it, and which reactions are its own. A private repository is read for its members asking so.",
"errors": [
{
"description": "No such repository or record on it; or this appview keeps no index, so it knows no pulls or issues.",
"name": "NotFound"
}
],
"output": {
"encoding": "application/json",
"schema": {
"properties": {
"base": {
"description": "A pull's target branch.",
"type": "string"
},
"body": {
"description": "What it says, as its author wrote it, in Markdown.",
"type": "string"
},
"card": {
"description": "The path of the picture its page unfurls into.",
"type": "string"
},
"changes": {
"description": "What a pull brings in; absent for an issue, or a pull whose branch is gone.",
"ref": "dev.knotless.defs#changesView",
"type": "ref"
},
"checks": {
"description": "For a pull, the newest run of each workflow at its head: by the target's runners for the pull, and by those of the repository it comes from for its branch. For a pull the merge queue landed, the runs it landed on: those on its base at its batch's tip.",
"items": {
"ref": "dev.knotless.defs#checkView",
"type": "ref"
},
"type": "array"
},
"closedBy": {
"description": "For a closed issue, the pull whose merge closed it.",
"ref": "dev.knotless.defs#itemViewBasic",
"type": "ref"
},
"closes": {
"description": "The issues on the repository a pull's title or body names to close as it merges into the default branch.",
"items": {
"ref": "dev.knotless.defs#itemView",
"type": "ref"
},
"type": "array"
},
"comments": {
"description": "Oldest first.",
"items": {
"ref": "dev.knotless.defs#commentView",
"type": "ref"
},
"type": "array"
},
"head": {
"description": "What a pull brings in.",
"ref": "dev.knotless.defs#pullHeadView",
"type": "ref"
},
"html": {
"description": "Its body, made into HTML as a comment's is.",
"type": "string"
},
"item": {
"ref": "dev.knotless.defs#itemView",
"type": "ref"
},
"mentionedBy": {
"description": "For an issue, the pulls on the repository whose title or body names it, oldest first, whatever their state. Absent when none does.",
"items": {
"ref": "#mention",
"type": "ref"
},
"type": "array"
},
"merged": {
"description": "For a merged pull, the commit it merged as.",
"type": "string"
},
"minutes": {
"description": "For a pull, the minutes each runner of the target counts for the target's owner, where it has counted any; none for a private repository.",
"items": {
"ref": "dev.knotless.defs#minutesView",
"type": "ref"
},
"type": "array"
},
"queue": {
"description": "Where an open pull stands in its branch's merge queue, if it was queued or ejected from it.",
"ref": "dev.knotless.defs#queueStateView",
"type": "ref"
},
"reactions": {
"description": "How accounts reacted to the pull or issue itself, by content, as dev.knotless.getReactions counts them. Absent when none did.",
"items": {
"ref": "dev.knotless.defs#reactionCountView",
"type": "ref"
},
"type": "array"
},
"revertedBy": {
"description": "For a merged pull, the revert whose merge undid it: a pull naming it in its `reverts`, merged too. The newest, if it was undone more than once.",
"ref": "dev.knotless.defs#itemViewBasic",
"type": "ref"
},
"reviews": {
"description": "For a pull, where each reviewer stands, in the order they last reviewed. Absent when no one has.",
"items": {
"ref": "dev.knotless.defs#reviewView",
"type": "ref"
},
"type": "array"
},
"stack": {
"description": "For a pull built on another or under one, the whole chain. Absent when it stands alone.",
"ref": "dev.knotless.defs#stackView",
"type": "ref"
},
"viewer": {
"description": "What the account asking may do with it; absent when no one asks.",
"ref": "#viewerState",
"type": "ref"
}
},
"required": [
"item",
"comments",
"closes",
"checks",
"card"
],
"type": "object"
}
},
"parameters": {
"properties": {
"filesOnly": {
"default": false,
"description": "A pull's changed files without their rows: what each is, how many lines it adds and removes, and a note where its rows would not be shown. dev.knotless.getPullDiff gives the rows of the files a reader comes to.",
"type": "boolean"
},
"firstRows": {
"default": false,
"description": "With filesOnly, the rows of the first files too, as a page draws them at once: from the first, those whose rows would be shown, up to 10 files and 1500 changed lines, passing over any that changes more than 400. The rest come without, for dev.knotless.getPullDiff.",
"type": "boolean"
},
"repo": {
"description": "The repository's dev.knotless.repo record. Its authority may be a handle; a name the repository had before, or an owner it moved from with its agreement, finds it under the name it has now.",
"format": "at-uri",
"type": "string"
},
"uri": {
"description": "The dev.knotless.pull or dev.knotless.issue record.",
"format": "at-uri",
"type": "string"
}
},
"required": [
"repo",
"uri"
],
"type": "params"
},
"type": "query"
},
"mention": {
"description": "A pull that names an issue.",
"properties": {
"closes": {
"description": "Whether it names the issue after a closing keyword, so that merging it into the default branch closes it. Not, when absent.",
"type": "boolean"
},
"item": {
"description": "The pull.",
"ref": "dev.knotless.defs#itemView",
"type": "ref"
}
},
"required": [
"item"
],
"type": "object"
},
"viewerState": {
"description": "What the account asking may do with a pull or an issue, past commenting on it, editing what it wrote and reporting, which anyone may.",
"properties": {
"assign": {
"description": "Whether it may assign it, and ask for reviews of a pull besides its author, with dev.knotless.assignItem: as the repository's owner or a collaborator.",
"type": "boolean"
},
"dismiss": {
"description": "Whether it may dismiss a pull's reviews with dev.knotless.dismissReview: as the repository's owner or a collaborator.",
"type": "boolean"
},
"hide": {
"description": "Whether it may hide it, or what is said on it: as the repository's owner.",
"type": "boolean"
},
"labels": {
"description": "The labels the repository defines that it may put on or take off, in the order the repository defines them.",
"items": {
"ref": "dev.knotless.repo#label",
"type": "ref"
},
"type": "array"
},
"notifiedFor": {
"description": "Why the account asking hears of new comments on it with no choice made: as its `author`, as one who `commented`, or as `watching` its repository. Absent when it hears of none, but those that mention it.",
"knownValues": [
"author",
"commented",
"watching"
],
"maxLength": 64,
"type": "string"
},
"revert": {
"description": "Whether it may revert a merged pull with dev.knotless.revertPull: as the repository's owner or a collaborator.",
"type": "boolean"
},
"setState": {
"description": "Whether it may close or reopen it: as who opened it, or the repository's owner or a collaborator.",
"type": "boolean"
},
"subscription": {
"description": "What the account asking chose to hear of it (dev.knotless.putSubscription): every comment, as `subscribed`, or nothing, as `muted`. Absent when it chose nothing.",
"knownValues": [
"subscribed",
"muted"
],
"maxLength": 64,
"type": "string"
}
},
"type": "object"
}
},
"description": "A pull or an issue, and everything said on it.",
"id": "dev.knotless.getThread",
"lexicon": 1
}