dev.knotless.getBlame

lexicons.knotless.dev

Documentation

Who last changed each line of a text file at a revision, as git blame finds it: the file's text, the ranges its highlighting paints, its lines in runs from the same commit, and each of those commits once. A binary file, or one over 256 KiB, is refused. No authentication needed; asked as an account, with a service token or the pages' session cookie, a private repository it is a member of is read too, and the answer is that account's alone.

main query

Who last changed each line of a text file at a revision, as git blame finds it: the file's text, the ranges its highlighting paints, its lines in runs from the same commit, and each of those commits once. A binary file, or one over 256 KiB, is refused. No authentication needed; asked as an account, with a service token or the pages' session cookie, a private repository it is a member of is read too, and the answer is that account's alone.

Parameters

path string Optional

A file in the tree, from its root.

ref string Optional

A branch, a tag or a commit, which may run on into the path, as dev.knotless.getFile takes it; the default branch if absent.

repo string at-uri Required

The repository's dev.knotless.repo record, as dev.knotless.getFile takes it.

Output

Encodingapplication/json
commits array Required

Each commit a run names, once.

hunks array Required

Its lines in runs, each last changed by one commit, from the first line on.

lines integer Required

How many lines the text has.

path string Required

The file, from the root.

ranges string Required

The ranges its highlighting paints, encoded as the pages read them, as dev.knotless.getFile has them.

ref string Required

The ref or commit shown, as `ref` named it, less any path.

text string Required

The file's text.

Errors

NotFound No such repository, revision or file.
InvalidRequest The file is binary, or too large to blame.
Try It

Requests are sent directly from your browser. Some servers may block requests due to CORS.

Base URL for XRPC calls (e.g., https://api.bsky.social)
Parameters
A file in the tree, from its root.
A branch, a tag or a commit, which may run on into the path, as dev.knotless.getFile takes it; the default branch if absent.
The repository's dev.knotless.repo record, as dev.knotless.getFile takes it.
View raw schema
{
  "description": "Who last changed each line of a text file at a revision, as git blame finds it: the file's text, the ranges its highlighting paints, its lines in runs from the same commit, and each of those commits once. A binary file, or one over 256 KiB, is refused. No authentication needed; asked as an account, with a service token or the pages' session cookie, a private repository it is a member of is read too, and the answer is that account's alone.",
  "errors": [
    {
      "description": "No such repository, revision or file.",
      "name": "NotFound"
    },
    {
      "description": "The file is binary, or too large to blame.",
      "name": "InvalidRequest"
    }
  ],
  "output": {
    "encoding": "application/json",
    "schema": {
      "properties": {
        "commits": {
          "description": "Each commit a run names, once.",
          "items": {
            "ref": "dev.knotless.defs#commitView",
            "type": "ref"
          },
          "type": "array"
        },
        "hunks": {
          "description": "Its lines in runs, each last changed by one commit, from the first line on.",
          "items": {
            "ref": "#hunk",
            "type": "ref"
          },
          "type": "array"
        },
        "lines": {
          "description": "How many lines the text has.",
          "minimum": 1,
          "type": "integer"
        },
        "path": {
          "description": "The file, from the root.",
          "type": "string"
        },
        "ranges": {
          "description": "The ranges its highlighting paints, encoded as the pages read them, as dev.knotless.getFile has them.",
          "type": "string"
        },
        "ref": {
          "description": "The ref or commit shown, as `ref` named it, less any path.",
          "type": "string"
        },
        "text": {
          "description": "The file's text.",
          "type": "string"
        }
      },
      "required": [
        "ref",
        "path",
        "lines",
        "text",
        "ranges",
        "hunks",
        "commits"
      ],
      "type": "object"
    }
  },
  "parameters": {
    "properties": {
      "path": {
        "description": "A file in the tree, from its root.",
        "maxLength": 4096,
        "type": "string"
      },
      "ref": {
        "description": "A branch, a tag or a commit, which may run on into the path, as dev.knotless.getFile takes it; the default branch if absent.",
        "maxLength": 1024,
        "type": "string"
      },
      "repo": {
        "description": "The repository's dev.knotless.repo record, as dev.knotless.getFile takes it.",
        "format": "at-uri",
        "type": "string"
      }
    },
    "required": [
      "repo"
    ],
    "type": "params"
  },
  "type": "query"
}
hunk object

A run of lines one commit last changed.

Properties

count integer Required

How many lines it runs for.

minimum: 1
previous ref #previous Optional

No description available.

sha string Required

The commit, in hex: one of `commits`.

start integer Required

The run's first line, counted from 1.

minimum: 1
View raw schema
{
  "description": "A run of lines one commit last changed.",
  "properties": {
    "count": {
      "description": "How many lines it runs for.",
      "minimum": 1,
      "type": "integer"
    },
    "previous": {
      "ref": "#previous",
      "type": "ref"
    },
    "sha": {
      "description": "The commit, in hex: one of `commits`.",
      "type": "string"
    },
    "start": {
      "description": "The run's first line, counted from 1.",
      "minimum": 1,
      "type": "integer"
    }
  },
  "required": [
    "sha",
    "start",
    "count"
  ],
  "type": "object"
}
previous object

Where blame goes on before the run's commit: its parent, and the file's path there. Absent where the commit made the file.

Properties

path string Required

The file's path in that parent, from the root.

sha string Required

The commit's parent, in hex.

View raw schema
{
  "description": "Where blame goes on before the run's commit: its parent, and the file's path there. Absent where the commit made the file.",
  "properties": {
    "path": {
      "description": "The file's path in that parent, from the root.",
      "type": "string"
    },
    "sha": {
      "description": "The commit's parent, in hex.",
      "type": "string"
    }
  },
  "required": [
    "sha",
    "path"
  ],
  "type": "object"
}

Lexicon Garden

@