gitsocial rpc serves the library over JSON-RPC 2.0 on stdio, for editors and other clients.
Transport · Lifecycle · Error codes · Methods · Notifications · Types · Notes
Communication uses JSON-RPC 2.0 over stdio (stdin/stdout). Each message is a single line of JSON terminated by \n. Stderr is reserved for logging. A line over 1 MB ends the session with no error response.
Requests and responses follow JSON-RPC 2.0. All messages must be valid JSON on a single line.
Request:
{"jsonrpc":"2.0","id":1,"method":"social.getPosts","params":{"scope":"timeline","limit":50}}
Success response:
{"jsonrpc":"2.0","id":1,"result":[...]}
Error response:
{"jsonrpc":"2.0","id":1,"error":{"code":-32001,"message":"not found","data":{"appCode":"NOT_FOUND"}}}
Server notification (no id):
{"jsonrpc":"2.0","method":"notifications.changed","params":{"unreadCount":3}}
Clients may send JSON-RPC batch requests (an array of request objects). The server must send a batch response in the same order. An empty array returns a single -32600 error.
The client starts gitsocial rpc as a subprocess. The server reads from stdin and writes to stdout, and must not write output before it receives initialize.
The first request must be initialize; only ping, subscribe, unsubscribe and shutdown work before it. The server opens the cache, resolves the workspace, and returns server capabilities. A second initialize returns -32007 CONFLICT, and a missing workdir returns -32602.
Method: initialize
Params:
workdir (string, required): Absolute path to the git repository working directorycacheDir (string): Cache directory (default: ~/.cache/gitsocial)clientName (string): Client identifier, for example "vscode" or "neovim"clientVersion (string): Client versionResult:
{
"version": "0.1.0",
"repoURL": "https://github.com/user/repo",
"extensions": {
"social": {"initialized": true, "branch": "gitmsg/social"},
"pm": {"initialized": true, "branch": "gitmsg/pm"},
"review": {"initialized": false, "branch": ""},
"release": {"initialized": false, "branch": ""}
}
}
Method: shutdown
Params: none
Result: "ok"
The server closes the cache and stops the read loop. Clients should send shutdown before they stop the process.
Method: ping
Params: none
Result: "pong"
Clients use ping for keepalive and health checks.
JSON-RPC 2.0 standard errors:
| Code | Meaning |
|---|---|
-32700 | Parse error |
-32600 | Invalid request |
-32601 | Method not found |
-32602 | Invalid params |
-32603 | Internal error |
Application errors use the -32000 to -32099 range:
| Code | App Code | Meaning |
|---|---|---|
-32000 | INTERNAL | Unexpected server error |
-32001 | NOT_FOUND | Item not found |
-32002 | NOT_A_REPOSITORY | Workdir is not a git repository |
-32003 | NOT_INITIALIZED | Extension not initialized |
-32004 | INVALID_ARGUMENT | Invalid parameter value |
-32007 | CONFLICT | Concurrent modification conflict |
-32010 | NOT_READY | Server not yet initialized |
An error built from a library Result[T] carries data.appCode and, when the library set one, data.details:
{"code":-32001,"message":"post not found","data":{"appCode":"NOT_FOUND"}}
data.details holds an error as its text, and a struct or a map as its JSON object.
The table above is not exhaustive. appCode is the code string from the library, without change, so a -32000 response can carry INVALID_SCOPE, LIST_NOT_FOUND, GIT_ERROR, NO_SBOM, NO_VERSION, SBOM_FAILED or READ_FAILED. Parameter validation (-32602) and the search methods return no data at all.
Methods are namespaced as namespace.method. All methods use the workdir from initialize, and no method accepts a workdir param.
Returns posts for a given scope.
Params:
scope (string, required): "timeline", "repository:my", "repository:workspace", "repository:<url>" or "repository:<url>@<branch>", "list:<id>", "post:<ref>", "thread:<ref>". Any other value returns INVALID_SCOPElimit (int): Max posts to return (0 = all)types (string[]): Filter by type: "post", "comment", "repost", "quote"since (string): RFC 3339 timestamp lower bound; the server ignores a value that does not parseuntil (string): RFC 3339 timestamp upper bound; the server ignores a value that does not parseincludeImplicit (boolean): Include implicit postsPosts come back newest first. A param this list does not name is ignored. The timeline and list:<id> scopes also return action entries: a post with Action set. For a state change, EditOf is the item; a review is its own item.
Result: Post[]
Params:
content (string, required): Post bodyResult: Post
Params:
ref (string, required): Post ref to editcontent (string, required): New contentResult: Post
Params:
ref (string, required): Post ref to retractResult: true
Params:
target (string, required): Ref of post to comment oncontent (string, required): Comment bodyResult: Post
Params:
target (string, required): Ref of post to repostResult: Post
Params:
target (string, required): Ref of post to quotecontent (string, required): Quote bodyResult: Post
Params: none
Result: List[]
Params:
id (string, required): List IDResult: List
Params:
id (string, required): List ID (slug)name (string, required): Display nameResult: List
Params:
id (string, required): List IDResult: {}
Params:
listId (string, required): List IDrepoURL (string, required): Repository URL to addbranch (string): Branch (uses default if omitted)allBranches (boolean): Follow all branches (stores branch:*). Mutually exclusive with branch.Result: string (the added repository URL)
Params:
listId (string, required): List IDrepoURL (string, required): Repository URL to removeResult: {}
Params:
scope (string): "list:<id>" for one list; any other value returns every cached repositorylimit (int): Max repositories to returnResult: Repository[]
Params:
scope (string): Scope filterlimit (int): Max entriestypes (string[]): Filter by log entry typeauthor (string): Filter by authorafter (string): RFC 3339 timestamp lower boundbefore (string): RFC 3339 timestamp upper boundResult: LogEntry[]
Params:
repoURL (string): Repository URL (default: the workspace and its registered forks)branch (string): Branchstates (string[]): Filter: "open", "closed", "canceled"limit (int): Max results; 0 means 1000Result: Issue[]
Params:
ref (string, required): Issue refResult: Issue
Params:
subject (string, required): Issue titlebody (string): Issue descriptionstate (string): Initial state (default: "open")assignees (string[]): Assignee emailsdue (string): RFC 3339 due datemilestone (string): Milestone refsprint (string): Sprint refparent (string): Parent issue ref. The server derives root from it (GITPM.md §1.7), so usually a client sends only parent.root (string): Top-level ancestor ref. Send it only to override the derivation.labels (Label[]): [{"scope":"priority","value":"high"}]Result: Issue
Params:
ref (string, required): Issue refsubject (string): New titlebody (string): New descriptionstate (string): New stateassignees (string[]): New assigneesdue (string): New due datemilestone (string): New milestone refsprint (string): New sprint refparent (string): New parent ref. Without root, the server derives the root again; the value "" clears both.root (string): Top-level ancestor ref. Only send this to override the derivation.labels (Label[]): New labelsResult: Issue
Params:
ref (string, required): Issue refResult: Issue
Params:
ref (string, required): Issue refResult: Issue
Params:
ref (string, required): Ref of a registered fork's issueResult: Issue, the workspace copy; an issue adopted before returns its copy
Params:
ref (string, required): Issue refResult: true
Params:
repoURL (string): Repository URL (default: workspace)branch (string): Branchstates (string[]): Filter by statelimit (int): Max results; 0 means 1000Result: Milestone[]
Params:
ref (string, required): Milestone refResult: Milestone
Params:
title (string, required): Milestone titlebody (string): Descriptionstate (string): Initial statedue (string): RFC 3339 due dateResult: Milestone
Params:
ref (string, required): Milestone reftitle (string): New titlebody (string): New descriptionstate (string): New statedue (string): New due dateResult: Milestone
Params:
ref (string, required): Milestone refResult: Milestone
Params:
ref (string, required): Milestone refResult: true
Params:
ref (string, required): Milestone refstates (string[]): Filter by stateResult: Issue[]
Params:
repoURL (string): Repository URL (default: workspace)branch (string): Branchstates (string[]): Filter: "planned", "active", "completed", "canceled"limit (int): Max results; 0 means 1000Result: Sprint[]
Params:
ref (string, required): Sprint refResult: Sprint
Params:
title (string, required): Sprint titlebody (string): Descriptionstate (string): Initial state (default: "planned")start (string): RFC 3339 start dateend (string): RFC 3339 end dateResult: Sprint
Params:
ref (string, required): Sprint reftitle (string): New titlebody (string): New descriptionstate (string): New statestart (string): New start dateend (string): New end dateResult: Sprint
Params:
ref (string, required): Sprint refResult: Sprint
Params:
ref (string, required): Sprint refResult: true
Params:
ref (string, required): Sprint refstates (string[]): Filter by stateResult: Issue[]
Params:
boardId (string): Board ID (default: first configured board)Result: BoardView
{
"id": "default",
"name": "Default Board",
"columns": [
{"name": "open", "label": "Open", "wip": null, "issues": [...]},
{"name": "closed", "label": "Done", "wip": null, "issues": [...]}
]
}
Params:
ref (string, required): Item ref (issue, milestone, or sprint)content (string, required): Comment bodyResult: Post (social comment)
Params:
ref (string, required): Item refResult: Post[]
Returns the link graph around an item: what it blocks, what blocks it, and what it relates to.
Params:
ref (string, required): Item refResult: {"blocks": Issue[], "blockedBy": Issue[], "related": Issue[]}
Params:
ref (string, required): Item refResult: bool
Params:
repoURL (string): Repository URL (default: workspace)branch (string): Branchstates (string[]): Filter: "open", "merged", "closed"includeForks (bool): Include pull requests from registered forkslimit (int): Max results; 0 means 1000Result: PullRequest[]
Params:
ref (string, required): Pull request refResult: PullRequest
Params:
subject (string, required): Pull request titlebody (string): Pull request descriptionbase (string): Base branch ref. A pull request created without one cannot be mergedhead (string): Head branch ref. A pull request created without one cannot be mergedcloses (string[]): Issue refs to close on mergereviewers (string[]): Reviewer emailsResult: PullRequest
Params:
ref (string, required): Pull request refsubject (string): New titlebody (string): New descriptionstate (string): New statebase (string): New basehead (string): New headcloses (string[]): New close refsreviewers (string[]): New reviewersResult: PullRequest
Params:
ref (string, required): Pull request refMerges fast-forward. The other strategies the CLI offers are not reachable over RPC.
Result: PullRequest
Takes a draft pull request out of draft state.
Params:
ref (string, required): Pull request refResult: PullRequest
Puts an open pull request back into draft state.
Params:
ref (string, required): Pull request refResult: PullRequest
Params:
ref (string, required): Pull request refResult: PullRequest
Params:
ref (string, required): Ref of a registered fork's pull request to this repositoryResult: PullRequest, the workspace copy; a pull request adopted before returns its copy
Params:
ref (string, required): Pull request refResult: true
Params:
ref (string, required): Pull request refResult: Feedback[]
Params:
content (string, required): Feedback bodypullRequest (string, required): Pull request refcommit (string): Commit hash (12 characters)file (string): File patholdLine (int): Line in old filenewLine (int): Line in new fileoldLineEnd (int): End line in old filenewLineEnd (int): End line in new filereviewState (string): "approved" or "changes-requested"suggestion (bool): Body contains suggestion blockResult: Feedback
Params:
ref (string, required): Feedback refcontent (string): New contentreviewState (string): New review stateResult: Feedback
Params:
ref (string, required): Feedback refResult: true
Params:
ref (string, required): Feedback ref containing suggestionResult: string (applied file path)
Returns the diff between the base and the head of a pull request.
Params:
ref (string, required): Pull request refResult: FileDiff[]
[{
"OldPath": "a/theme.go",
"NewPath": "b/theme.go",
"Status": 1,
"Binary": false,
"Hunks": [{
"OldStart": 10, "OldCount": 5,
"NewStart": 10, "NewCount": 8,
"Header": "@@ -10,5 +10,8 @@",
"Lines": [
{"Type": 0, "Content": "func init() {", "OldNum": 10, "NewNum": 10},
{"Type": 2, "Content": "\told := theme()", "OldNum": 11, "NewNum": 0},
{"Type": 1, "Content": "\tnewTheme := darkTheme()", "OldNum": 0, "NewNum": 11}
]
}]
}]
Type is an integer: 0 context, 1 added, 2 removed.
Params:
ref (string, required): Pull request refResult: DiffStats
{"Files": 5, "Added": 120, "Removed": 45}
Params:
ref (string, required): Pull request reffile (string, required): File pathResult: FileDiff
Returns file content at a specific ref.
Params:
ref (string, required): Pull request reffile (string, required): File pathside (string): "base" reads the base; any other value, including an absent one, reads the headResult: string (file contents)
Params:
ref (string, required): Pull request refResult: Post[]
Returns the registered fork URLs. Each fork is at a ref under refs/gitmsg/core/forks/, and all extensions share the list.
Params: none
Result: string[] (fork URLs)
Registers a fork URL at a ref under refs/gitmsg/core/forks/.
Params:
url (string, required): Fork repository URLResult: true
Removes the ref of a registered fork URL. A URL that is not registered returns NOT_FOUND.
Params:
url (string, required): Fork repository URLResult: true
Records the base and head tips of the pull request again, from the current branches.
Params:
ref (string, required): Pull request refResult: PullRequest
Rebases or merges the head branch onto the base, then records the tips again.
Params:
ref (string, required): Pull request refstrategy (string): rebase (default) or mergeResult: PullRequest
Lists all versions of the pull request, oldest first.
Params:
ref (string, required): Pull request refResult: PRVersion[]
Returns the range-diff of two versions of the pull request.
Params:
ref (string, required): Pull request reffrom (int, required): Version number to compare fromto (int, required): Version number to compare toResult: string (the range-diff)
Returns the latest review of each reviewer, with the pull request version that it reviewed and the current version.
Params:
ref (string, required): Pull request refResult: VersionAwareReview[]
Params:
repoURL (string): Repository URL (default: workspace)branch (string): Branchlimit (int): Max resultsResult: Release[]
Params:
ref (string, required): Release refResult: Release
Params:
subject (string, required): Release titlebody (string): Release notestag (string): Git tagversion (string): Version stringprerelease (bool): Pre-release flagartifacts (string[]): Artifact namesartifactURL (string): Download URLchecksums (string): Checksum datasignedBy (string): GPG signersbom (string): SBOM filename, for example sbom.spdx.jsonResult: Release
Params:
ref (string, required): Release refsubject (string): New titlebody (string): New notestag (string): New tagversion (string): New versionprerelease (bool): New pre-release flagartifacts (string[]): New artifactsartifactURL (string): New download URLchecksums (string): New checksumssignedBy (string): New signersbom (string): New SBOM filenameResult: Release
Params:
ref (string, required): Release refResult: true
Params:
ref (string, required): Release refResult: Post[]
Returns the parsed SBOM summary of a release: format, package count, licenses and generator.
Params:
ref (string, required): Release refResult: SBOMSummary
Returns the raw SBOM file content as a JSON string.
Params:
ref (string, required): Release refResult: string (raw SBOM JSON content)
Fetches updates from the followed repositories and returns a fetch ID immediately. Server notifications report the progress and the completion.
Params:
listId (string): Fetch only repositories in this listResult:
{"fetchId": "f-1"}
The server sends fetch.progress and fetch.complete notifications for this fetchId (see Section 5).
Pushes local changes to every default push remote, the list gitsocial push resolves.
Params:
remote (string): One remote to push to (default: every resolved push remote)allBranches (boolean): Publish every local branchallRemotes (boolean): Push to every configured remote in alphabetical order. Mutually exclusive with remotenoCode (boolean): Skip code branchesnoSite (boolean): Skip the static sitesiteOnly (boolean): Rebuild the site, send no refsfull (boolean): Send every object and detach a thin fork bucketdryRun (boolean): Report the plan, send nothingextensions (string[]): Ignored; the server pushes all initialized extensionsResult: for one remote, the object below; for more than one remote, an array of these objects in push order.
{
"push": {"...": "per-branch push counts"},
"site": {"published": true, "complete": true, "forkPullRequests": {"count": 2, "bytes": 1363149}},
"emptyBoot": false
}
site.forkPullRequests is present when the forkPullRequests site key is on (STATIC-SITE.md).
Returns workspace and extension status.
Params: none
Result:
{
"workdir": "/path/to/repo",
"repoURL": "https://github.com/user/repo",
"extensions": {
"social": {"initialized": true, "branch": "gitmsg/social", "unpushed": 3},
"pm": {"initialized": true, "branch": "gitmsg/pm"},
"review": {"initialized": false},
"release": {"initialized": false}
}
}
branch and unpushed are omitted when empty or zero. unpushed counts posts and lists on the extension's branch.
Reads extension configuration.
Params:
extension (string, required): Extension nameResult: object (extension-specific config JSON)
Writes extension configuration.
Params:
extension (string, required): Extension nameconfig (object, required): Config object to writeResult: true
Initializes an extension in the workspace.
Params:
extension (string, required): Extension namebranch (string): Custom branch name, honored for social onlyResult: true
Params:
unreadOnly (bool): Only unread (default: false)types (string[]): Filter by typelimit (int): Max resultsResult: Notification[]
Params: none
Result: int
Params:
repoURL (string, required): Notification repository URLhash (string, required): Notification hashbranch (string, required): Notification branchResult: true
Params: none
Result: true
Returns the edit history of an item, for example a post, an issue, a pull request or a release.
Params:
ref (string, required): Item refResult: MessageVersion[]
[
{"ID": "#commit:abc123456789@gitmsg/social", "CommitHash": "abc123456789",
"Timestamp": "2025-01-06T10:00:00Z", "AuthorName": "Alice", "AuthorEmail": "[email protected]",
"Extension": "social", "Type": "post", "Content": "v1", "EditOf": "", "IsRetracted": false}
]
Params: none
Result: KeyValue[]
[
{"key": "fetch.parallel", "value": "4", "description": "Concurrent fetch workers."},
{"key": "log.level", "value": "info", "description": "Logging verbosity."}
]
description is the description of the key in the registry; the server omits it for a key that is not in the registry.
Params:
key (string, required): Setting keyvalue (string, required): Setting valueResult: true
Searches all extensions: posts, issues, pull requests, releases and feedback.
Params:
query (string): Free-text query, with the inline prefixes of gitsocial searchauthor (string): Filter by author emailrepo (string): Filter by repository URLtype (string): Filter by type: post, comment, repost, quote, issue, milestone, sprint, pr, feedback, releasehash (string): Filter by commit-hash prefixafter (string): RFC 3339 timestamp lower boundbefore (string): RFC 3339 timestamp upper boundlimit (int): Max results (default: 20)scope (string): timeline (default), list:<id>, repository:<url>, repos:<csv>sort (string): score (default) or dateResult: SearchResult
{
"query": "dark mode",
"results": [{"repo_url": "https://github.com/user/repo", "hash": "abc123456789", "branch": "gitmsg/social", "content": "dark mode toggle", "type": "post", "extension": "social", "score": 8.5}],
"total": 3,
"total_searched": 1240,
"has_more": false,
"execution_time_ms": 12
}
The server sends notifications (with no id field) to the client. A client opts in with subscribe, which works before initialize.
Method: subscribe
Params:
events (string[], required): Events to subscribe to: "fetch", "notifications", "workspace"Result: true
Method: unsubscribe
Params:
events (string[], required): Events to unsubscribe fromResult: true
{"jsonrpc":"2.0","method":"fetch.progress","params":{
"fetchId": "f-1",
"repoURL": "https://github.com/user/repo",
"processed": 3,
"total": 10
}}
{"jsonrpc":"2.0","method":"fetch.complete","params":{
"fetchId": "f-1",
"repositories": 10,
"newCommits": 42,
"errors": 0
}}
Sent once when the fetch as a whole fails, not per repository.
{"jsonrpc":"2.0","method":"fetch.error","params":{
"fetchId": "f-1",
"message": "network timeout"
}}
Sent at the end of core.fetch. Mark-as-read and local commits send nothing; a client that changes the read state updates its own count.
{"jsonrpc":"2.0","method":"notifications.changed","params":{
"unreadCount": 5
}}
Reserved. subscribe accepts "workspace", but the server has no emitter for this notification and sends none. A client should expect the payload shape below when an emitter exists.
{"jsonrpc":"2.0","method":"workspace.changed","params":{
"branches": ["gitmsg/social", "gitmsg/pm"]
}}
The methods return the types below. Most are Go structs with no JSON tags, so their field names serialize as written in Go, with a capital first letter. Zero values are not omitted: an unset pointer is null, an unset time is "0001-01-01T00:00:00Z", an unset slice is null. The five tagged types, marked below, serialize under their tag names.
Times are RFC 3339 strings. Refs are strings in #commit:hash@branch or url#commit:hash@branch form. A library Result[T] maps to result or error.
{"Name": "string", "Email": "string"}. pm.Label is {"Scope": "string", "Value": "string"}. IssueRef and review's Ref are {"RepoURL": "string", "Hash": "string", "Branch": "string"}.
| Field | Type | Note |
|---|---|---|
ID | string | ref |
Repository, Branch | string | |
Author | Author | |
Timestamp | string | RFC 3339 |
Content, CleanContent | string | raw message, and the message with the GitMsg header removed |
Type | string | post, comment, repost, quote |
Source | string | where the post was read from |
OriginalPostID, ParentCommentID | string | refs, empty when absent |
EditOf, EditorName, EditorEmail | string | the edit chain |
EditRepoURL, EditHash, EditBranch | string | the latest edit commit |
IsRetracted, IsEdited, HasProposedEdits | bool | |
Depth | int | thread nesting |
Interactions | object | {"Comments": 0, "Reposts": 0, "Quotes": 0} |
Remote | string | |
IsVirtual, IsStale, IsWorkspacePost | bool | |
Display | object | render hints: RepositoryName, CommitURL, IsVerified, Badge and siblings |
OriginalExtension, OriginalType | string | the referenced item's extension and type |
HeaderExt, HeaderType, HeaderState | string | raw GitMsg header fields |
Action | string | the timeline action of the commit; empty for a content entry |
ActionSubject | string | the subject of the item that the action is on |
Closes | string[] | the issue refs that a merged action closes |
Labels | string[] | |
Origin | object | import provenance, null when the post is native |
Raw | object | {"Commit": {...}, "GitMsg": {...}}, the parsed commit and message |
| Field | Type | Note |
|---|---|---|
ID, Repository, Branch | string | |
Author | Author | |
Timestamp | string | RFC 3339 |
Subject, Body | string | |
State | string | open, closed, canceled |
Assignees | string[] | emails |
Due | string | RFC 3339, null when unset |
Milestone, Sprint, Parent, Root | IssueRef | null when unset |
Blocks, BlockedBy, Related | IssueRef[] | |
Labels | Label[] | |
IsEdited, HasProposedEdits, IsRetracted, IsUnpushed | bool | |
Comments | int | |
Origin | object | null when native |
Adopts | string | the fork issue this copy adopts, empty when native |
OriginalAuthor | Author | the adopted issue's author, null when native |
OriginalTime | string | RFC 3339, the adopted issue's time |
ID, Repository, Branch, Author, Timestamp, Title, Body, State, Due, Labels (string[]), IsEdited, HasProposedEdits, IsRetracted, IsUnpushed, IssueCount, ClosedCount, Origin.
The Milestone fields, with Start and End (RFC 3339) in place of Due, and State one of planned, active, completed, canceled.
| Field | Type | Note |
|---|---|---|
ID, Repository, Branch | string | |
Author | Author | |
Timestamp | string | RFC 3339 |
Subject, Body | string | |
State | string | open, merged, closed |
IsDraft | bool | |
Base, BaseTip, Head, HeadTip | string | refs and the tips recorded at the latest version |
DependsOn, Closes, Reviewers, Labels | string[] | |
IsEdited, HasProposedEdits, IsRetracted, IsUnpushed | bool | |
Comments | int | |
ReviewSummary | object | {"Approved": 0, "ChangesRequested": 0, "Pending": 0, "IsBlocked": false, "IsApproved": false} |
MergeBase, MergeHead | string | recorded before the merge |
MergedBy, ClosedBy, OriginalAuthor | Author | null when unset |
MergedAt, ClosedAt, OriginalTime | string | RFC 3339; the zero time when unset |
Origin | object | null when native |
Adopts | string | the fork pull request this copy adopts, empty when native |
ID, Repository, Branch, Author, Timestamp, Content, PullRequest (Ref), Commit, File, OldLine, NewLine, OldLineEnd, NewLineEnd, ReviewState (comment, approved, changes-requested), Suggestion, IsEdited, IsRetracted, Comments.
Tagged type.
{
"number": 0,
"label": "string",
"commit_hash": "string",
"repo_url": "string (URL)",
"branch": "string",
"author_name": "string",
"author_email": "string",
"timestamp": "string (RFC 3339)",
"subject": "string (optional)",
"body": "string (optional)",
"base_tip": "string (optional)",
"head_tip": "string (optional)",
"state": "open | merged | closed",
"is_retracted": false
}
Tagged type.
{
"reviewer_name": "string",
"reviewer_email": "string",
"state": "approved | changes-requested",
"reviewed_at": "string (RFC 3339)",
"reviewed_version": 0,
"reviewed_label": "string",
"current_version": 0,
"current_label": "string",
"head_changed": false,
"code_changed": false,
"stale": false
}
ID, Repository, Branch, Author, Timestamp, Subject, Body, Version, Tag, Prerelease, Artifacts (string[]), ArtifactURL, Checksums, SignedBy, SBOM, Labels (string[]), IsEdited, HasProposedEdits, IsRetracted, IsUnpushed, Comments, Origin.
Tagged type. Every field is always present.
{
"format": "spdx | cyclonedx | syft",
"packages": 127,
"generator": "string, e.g. syft-1.0.0",
"licenses": {"MIT": 42, "Apache-2.0": 15},
"generated": "string (the SBOM's own creation time)",
"items": [
{"name": "string", "version": "string", "license": "string"}
]
}
RepoURL, Hash, Branch, Type (NOTIFICATIONS.md), Source (social, pm, review, release, memo, core), Item (the extension's own notification object), Actor, ActorRepo, Timestamp, IsRead.
ID, CommitHash, Branch, RepoURL, AuthorName, AuthorEmail, Timestamp, Extension, Type, Content, EditOf, IsRetracted, Labels (string[]), Fields (the parsed GitMsg header, key to value).
| Type | Fields |
|---|---|
FileDiff | OldPath, NewPath, Status (int), Hunks, Binary |
Hunk | OldStart, OldCount, NewStart, NewCount, Header, Lines |
DiffLine | Type (int: 0 context, 1 added, 2 removed), Content, OldNum, NewNum |
DiffStats | Files, Added, Removed |
Tagged type. The search method shows the shape.
core.fetch is the exception: it starts a goroutine, returns a fetchId immediately and reports through notifications.initialize. For a different workspace, shut down the server and start a new one; a multi-root editor runs one server for each workspace.-32003 NOT_INITIALIZED is defined, but no method returns it. Read the initialize response to learn which extensions are available.library/rpc/methods_*.go, one file for each namespace. Each handler unmarshals its params, calls the extension API and returns the result; the RPC layer has no business logic.