# dev.knotless.state

> Published by [lexicons.knotless.dev](https://lexicon.garden/identity/did:plc:yqsg7znbbhfmj3a2nrpnaerk)

✓ This is the authoritative definition for this NSID.

## Description

A pull or issue opened, closed or merged, or a pull pointed at another target branch; or a thread on a pull's lines resolved or opened again.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:yqsg7znbbhfmj3a2nrpnaerk/dev.knotless.state)
- [Documentation](https://lexicon.garden/lexicon/did:plc:yqsg7znbbhfmj3a2nrpnaerk/dev.knotless.state/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:yqsg7znbbhfmj3a2nrpnaerk/dev.knotless.state/examples)

## Definitions

### `dev.knotless.state`

**Type**: `record`

Kept in the account of whoever changed it. Readers take the latest from someone allowed to make it: the subject's author, the repository's owner or a collaborator; `merged` only from the latter two; for a thread, also the pull's author.

**Key**: `tid`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `base` | `string` | No | For a pull, the branch it targets from here on, without refs/heads/: set when the branch it targeted was renamed. |
| `commit` | `string` | No | The hex object ID of the merge commit, for `merged`. |
| `createdAt` | `string` (datetime) | Yes |  |
| `from` | `string` | No | For `merged`, the hex object ID the base was at before the merge: from..commit is what the pull brought in, whose commits readers may then show as its author's. |
| `pull` | `string` (at-uri) | No | For `closed` on an issue, the dev.knotless.pull whose merge closed it, as its title or body named the issue after a closing keyword such as `Fixes`. |
| `repo` | `ref` → `dev.knotless.defs#repoRef` | Yes | The repository the pull or issue is on. |
| `state` | `string` | No | `merged` applies to pulls only; `resolved` and `open`, to a thread. Absent when the record only sets `base`: the state stands. |
| `subject` | `string` (at-uri) | Yes | The dev.knotless.pull or dev.knotless.issue whose state changed; or the dev.knotless.comment, with a `line`, that starts a thread. |

## Raw Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Kept in the account of whoever changed it. Readers take the latest from someone allowed to make it: the subject's author, the repository's owner or a collaborator; `merged` only from the latter two; for a thread, also the pull's author.",
      "key": "tid",
      "record": {
        "properties": {
          "base": {
            "description": "For a pull, the branch it targets from here on, without refs/heads/: set when the branch it targeted was renamed.",
            "maxLength": 255,
            "type": "string"
          },
          "commit": {
            "description": "The hex object ID of the merge commit, for `merged`.",
            "maxLength": 64,
            "minLength": 40,
            "type": "string"
          },
          "createdAt": {
            "format": "datetime",
            "type": "string"
          },
          "from": {
            "description": "For `merged`, the hex object ID the base was at before the merge: from..commit is what the pull brought in, whose commits readers may then show as its author's.",
            "maxLength": 64,
            "minLength": 40,
            "type": "string"
          },
          "pull": {
            "description": "For `closed` on an issue, the dev.knotless.pull whose merge closed it, as its title or body named the issue after a closing keyword such as `Fixes`.",
            "format": "at-uri",
            "type": "string"
          },
          "repo": {
            "description": "The repository the pull or issue is on.",
            "ref": "dev.knotless.defs#repoRef",
            "type": "ref"
          },
          "state": {
            "description": "`merged` applies to pulls only; `resolved` and `open`, to a thread. Absent when the record only sets `base`: the state stands.",
            "knownValues": [
              "open",
              "closed",
              "merged",
              "resolved"
            ],
            "maxLength": 64,
            "type": "string"
          },
          "subject": {
            "description": "The dev.knotless.pull or dev.knotless.issue whose state changed; or the dev.knotless.comment, with a `line`, that starts a thread.",
            "format": "at-uri",
            "type": "string"
          }
        },
        "required": [
          "repo",
          "subject",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "description": "A pull or issue opened, closed or merged, or a pull pointed at another target branch; or a thread on a pull's lines resolved or opened again.",
  "id": "dev.knotless.state",
  "lexicon": 1
}
```
