flagon-io/g1t

public

Git for AI scale: a forge for thousands of agents working on the same code at once.

g1t/apps/api/src/reference.json

2,628 lines69,272 bytesCodeBlame
{
	"device_code": {
		"request": {
			"client_name": "Claude Code"
		},
		"response": {
			"device_code": "Gm3k…",
			"user_code": "WDJB-MJHT",
			"verification_uri": "https://g1t.sh/device",
			"verification_uri_complete": "https://g1t.sh/device?code=WDJB-MJHT",
			"expires_in": 900,
			"interval": 5
		}
	},
	"device_token": {
		"request": {
			"device_code": "Gm3k…"
		},
		"response": {
			"status": "approved",
			"token": "g1t_…",
			"username": "syntaqx",
			"verified": true
		}
	},
	"whoami": {
		"response": {
			"id": "usr_01kkntcg1eeb98j62xjm7eh09p",
			"username": "syntaqx",
			"kind": "user",
			"verified": true,
			"workspaces": [
				{
					"slug": "acme",
					"role": "member"
				},
				{
					"slug": "syntaqx",
					"role": "owner"
				}
			]
		},
		"notes": "`kind` is `user`, `workspace` for a [workspace access token](/guides/workspaces/#workspace-access-tokens), or `agent` for the token a g1t agent works with. For a workspace token, `username` is the workspace's slug and `workspaces` holds only that workspace."
	},
	"create_workspace": {
		"request": {
			"slug": "syntaqx-labs",
			"name": "Syntaqx Labs"
		},
		"response": {
			"id": "wsp_01m43teqa9em6bje0bhvdj4jkb",
			"slug": "syntaqx-labs",
			"name": "Syntaqx Labs",
			"description": null,
			"createdAt": "2026-10-04T16:02:51.337Z",
			"memberCount": 1
		}
	},
	"list_repos": {
		"query": {
			"q": "hello"
		},
		"response": [
			{
				"id": "rep_01m3m5q6p0e2qaw6mmjahk0qrr",
				"namespace": "syntaqx",
				"name": "hello",
				"description": "A tiny service that says hello.",
				"isPrivate": false,
				"ownerId": "usr_01kkntcg1eeb98j62xjm7eh09p",
				"defaultBranch": "main",
				"forkOf": null,
				"protected": true,
				"createdAt": "2026-09-28T14:11:52.640Z"
			}
		],
		"notes": "Returns at most 50 repositories, newest first. Forks made for pull requests are left out."
	},
	"create_repo": {
		"request": {
			"workspace": "syntaqx",
			"name": "hello-cli",
			"description": "Command-line client for hello.",
			"private": false
		},
		"response": {
			"id": "rep_01m43tk1jhehztx23drs87f5fc",
			"namespace": "syntaqx",
			"name": "hello-cli",
			"description": "Command-line client for hello.",
			"isPrivate": false,
			"ownerId": "usr_01kkntcg1eeb98j62xjm7eh09p",
			"defaultBranch": "main",
			"forkOf": null,
			"protected": false,
			"createdAt": "2026-10-04T16:05:12.913Z"
		},
		"notes": "`ownerId` is the id of the person who created the repository. With `import_url`, `defaultBranch` is the default branch of the repository copied."
	},
	"get_repo": {
		"response": {
			"id": "rep_01m3m5q6p0e2qaw6mmjahk0qrr",
			"namespace": "syntaqx",
			"name": "hello",
			"description": "A tiny service that says hello.",
			"isPrivate": false,
			"ownerId": "usr_01kkntcg1eeb98j62xjm7eh09p",
			"defaultBranch": "main",
			"forkOf": null,
			"protected": true,
			"createdAt": "2026-09-28T14:11:52.640Z"
		}
	},
	"update_repo": {
		"request": {
			"description": "Says hello, politely.",
			"protected": true
		},
		"response": {
			"id": "rep_01m3m5q6p0e2qaw6mmjahk0qrr",
			"namespace": "syntaqx",
			"name": "hello",
			"description": "Says hello, politely.",
			"isPrivate": false,
			"ownerId": "usr_01kkntcg1eeb98j62xjm7eh09p",
			"defaultBranch": "main",
			"forkOf": null,
			"protected": true,
			"createdAt": "2026-09-28T14:11:52.640Z"
		}
	},
	"get_repo_settings": {
		"response": {
			"autoMerge": false,
			"requireUpToDate": false,
			"requiredApprovals": 0,
			"countAgentApprovals": true,
			"allowIgnoringChecks": true,
			"agentReview": true,
			"maxRevisions": 2,
			"mergeQueue": false,
			"updatedBy": null,
			"updatedAt": null
		}
	},
	"update_repo_settings": {
		"request": {
			"required_approvals": 1,
			"count_agent_approvals": false,
			"merge_queue": true
		},
		"response": {
			"autoMerge": false,
			"requireUpToDate": false,
			"requiredApprovals": 1,
			"countAgentApprovals": false,
			"allowIgnoringChecks": true,
			"agentReview": true,
			"maxRevisions": 2,
			"mergeQueue": true,
			"updatedBy": "syntaqx",
			"updatedAt": "2026-10-04T16:20:37.508Z"
		},
		"notes": "`required_approvals` is at most 6 and `max_revisions` at most 5. See [what a repository can ask for](/guides/g1t-agents/#what-a-repository-can-ask-for)."
	},
	"list_events": {
		"query": {
			"before": "evt_01m43t2a6c9e3g7j1m5q9t3x7b"
		},
		"response": [
			{
				"id": "evt_01m43smh3ve52vkcna207vqctf",
				"type": "pull.opened",
				"source": "work",
				"time": "2026-10-01T18:20:02.117Z",
				"repoId": "rep_01m3m5q6p0e2qaw6mmjahk0qrr",
				"actor": "usr_01kkntcg1eeb98j62xjm7eh09p",
				"data": {
					"pullId": "pr_01m43smh3vexsr5pmp60qwv0vs",
					"repoId": "rep_01m3m5q6p0e2qaw6mmjahk0qrr",
					"number": 14,
					"issue": 12,
					"agent": "claude-code"
				}
			},
			{
				"id": "evt_01m43shrzpf2vt5rxbb02z0xjt",
				"type": "issue.opened",
				"source": "work",
				"time": "2026-10-01T18:04:11.482Z",
				"repoId": "rep_01m3m5q6p0e2qaw6mmjahk0qrr",
				"actor": "usr_01kkntcg1eeb98j62xjm7eh09p",
				"data": {
					"issueId": "iss_01m43shrzpfe49x74ga7sj1c6v",
					"repoId": "rep_01m3m5q6p0e2qaw6mmjahk0qrr",
					"number": 12,
					"title": "Greeting should name the caller"
				}
			}
		],
		"notes": "Returns 50 events a page. To page back, send the `id` of the last event you have as `before`. `actor` is a user id, and `data` depends on `type`."
	},
	"list_issues": {
		"query": {
			"state": "open",
			"label": "feature"
		},
		"response": [
			{
				"id": "iss_01m43shrzpfe49x74ga7sj1c6v",
				"repoId": "rep_01m3m5q6p0e2qaw6mmjahk0qrr",
				"number": 12,
				"title": "Greeting should name the caller",
				"body": "Take a name from the first argument; fall back to world.",
				"labels": [
					"feature"
				],
				"checks": [
					"cargo test"
				],
				"state": "open",
				"reason": null,
				"resolvedBy": null,
				"author": {
					"id": "usr_01kkntcg1eeb98j62xjm7eh09p",
					"username": "syntaqx",
					"kind": "user",
					"verified": false,
					"workspaces": []
				},
				"createdAt": "2026-10-01T18:04:11.482Z",
				"updatedAt": "2026-10-01T18:04:11.482Z",
				"closedAt": null,
				"pullCount": 1,
				"commentCount": 0,
				"assignees": [],
				"blockedBy": [],
				"queued": false,
				"agent": "claude-code"
			}
		],
		"notes": "Returns at most 100 issues, newest first. `commentCount` counts comments, not events such as \"opened #14 for this\"."
	},
	"create_issue": {
		"request": {
			"title": "Greeting should name the caller",
			"body": "Take a name from the first argument; fall back to world.",
			"labels": [
				"feature"
			],
			"checks": [
				"cargo test"
			]
		},
		"response": {
			"id": "iss_01m43shrzpfe49x74ga7sj1c6v",
			"repoId": "rep_01m3m5q6p0e2qaw6mmjahk0qrr",
			"number": 12,
			"title": "Greeting should name the caller",
			"body": "Take a name from the first argument; fall back to world.",
			"labels": [
				"feature"
			],
			"checks": [
				"cargo test"
			],
			"state": "open",
			"reason": null,
			"resolvedBy": null,
			"author": {
				"id": "usr_01kkntcg1eeb98j62xjm7eh09p",
				"username": "syntaqx",
				"kind": "user",
				"verified": false,
				"workspaces": []
			},
			"createdAt": "2026-10-01T18:04:11.482Z",
			"updatedAt": "2026-10-01T18:04:11.482Z",
			"closedAt": null,
			"pullCount": 0,
			"commentCount": 0,
			"assignees": [],
			"blockedBy": [],
			"queued": false,
			"agent": null
		},
		"notes": "Labels are lowercased. A label not used before is created."
	},
	"get_issue": {
		"response": {
			"issue": {
				"id": "iss_01m43shrzpfe49x74ga7sj1c6v",
				"repoId": "rep_01m3m5q6p0e2qaw6mmjahk0qrr",
				"number": 12,
				"title": "Greeting should name the caller",
				"body": "Take a name from the first argument; fall back to world.",
				"labels": [
					"feature"
				],
				"checks": [
					"cargo test"
				],
				"state": "closed",
				"reason": "completed",
				"resolvedBy": 14,
				"author": {
					"id": "usr_01kkntcg1eeb98j62xjm7eh09p",
					"username": "syntaqx",
					"kind": "user",
					"verified": false,
					"workspaces": []
				},
				"createdAt": "2026-10-01T18:04:11.482Z",
				"updatedAt": "2026-10-01T18:52:17.093Z",
				"closedAt": "2026-10-01T18:52:17.093Z",
				"pullCount": 2,
				"commentCount": 0,
				"assignees": [],
				"blockedBy": [],
				"queued": false,
				"agent": null
			},
			"pulls": [
				{
					"id": "pr_01m43sjq8tcz5rbm2a7k4d9e6w",
					"repoId": "rep_01m3m5q6p0e2qaw6mmjahk0qrr",
					"number": 13,
					"issue": 12,
					"title": "Greeting should name the caller",
					"body": null,
					"agent": "claude-code",
					"runtime": "external",
					"status": "closed",
					"fork": {
						"namespace": "pulls",
						"name": "pr_01m43sjq8tcz5rbm2a7k4d9e6w"
					},
					"forkRepoId": "rep_01m43smh5xd7aw2kq9tv0b4c8e",
					"branch": null,
					"headCommit": null,
					"mergeBase": null,
					"mergedBy": null,
					"mergedAt": null,
					"supersededBy": 14,
					"checkStatus": null,
					"files": [],
					"assignees": [],
					"reviewers": [],
					"author": {
						"id": "usr_01kkntcg1eeb98j62xjm7eh09p",
						"username": "syntaqx",
						"kind": "user",
						"verified": false,
						"workspaces": []
					},
					"createdAt": "2026-10-01T18:20:02.117Z",
					"updatedAt": "2026-10-01T18:20:02.117Z"
				},
				{
					"id": "pr_01m43smh3vexsr5pmp60qwv0vs",
					"repoId": "rep_01m3m5q6p0e2qaw6mmjahk0qrr",
					"number": 14,
					"issue": 12,
					"title": "Greeting should name the caller",
					"body": "Reads a name from the first argument. `hello ana` prints \"Hello, ana!\".",
					"agent": "claude-code",
					"runtime": "external",
					"status": "merged",
					"fork": {
						"namespace": "pulls",
						"name": "pr_01m43smh3vexsr5pmp60qwv0vs"
					},
					"forkRepoId": "rep_01m43smh5xd7aw2kq9tv0b4c8e",
					"branch": null,
					"headCommit": "9f2c4e1a7b3d5f60812a4c6e8b0d2f4a6c8e0b13",
					"mergeBase": "3a7e9c1b5d2f4a6c8e0b2d4f6a8c0e2b4d6f8a1c",
					"mergedBy": "syntaqx",
					"mergedAt": "2026-10-01T18:52:17.093Z",
					"supersededBy": null,
					"checkStatus": "passed",
					"files": [
						{
							"path": "src/main.rs",
							"additions": 6,
							"deletions": 2
						}
					],
					"assignees": [],
					"reviewers": [
						"ana"
					],
					"author": {
						"id": "usr_01kkntcg1eeb98j62xjm7eh09p",
						"username": "syntaqx",
						"kind": "user",
						"verified": false,
						"workspaces": []
					},
					"createdAt": "2026-10-01T18:20:02.117Z",
					"updatedAt": "2026-10-01T18:52:17.093Z"
				}
			],
			"comments": [
				{
					"id": "cmt_01m43sr2b7d5f0j6k3n8p1q4v9",
					"kind": "event",
					"author": {
						"id": "usr_01kkntcg1eeb98j62xjm7eh09p",
						"username": "syntaqx",
						"kind": "user",
						"verified": false,
						"workspaces": []
					},
					"body": "opened #14 for this",
					"path": null,
					"line": null,
					"verdict": null,
					"createdAt": "2026-10-01T18:20:02.141Z"
				}
			]
		},
		"notes": "A closed issue says how it was closed: `reason` is `completed` or `not_planned`, and `resolvedBy` is the number of the pull request whose merge closed it. Each pull request made for it is listed; one closed because another was merged has `supersededBy` set."
	},
	"update_issue": {
		"request": {
			"labels": [
				"feature",
				"good first issue"
			],
			"assignees": [
				"syntaqx"
			]
		},
		"response": {
			"id": "iss_01m43shrzpfe49x74ga7sj1c6v",
			"repoId": "rep_01m3m5q6p0e2qaw6mmjahk0qrr",
			"number": 12,
			"title": "Greeting should name the caller",
			"body": "Take a name from the first argument; fall back to world.",
			"labels": [
				"feature",
				"good first issue"
			],
			"checks": [
				"cargo test"
			],
			"state": "open",
			"reason": null,
			"resolvedBy": null,
			"author": {
				"id": "usr_01kkntcg1eeb98j62xjm7eh09p",
				"username": "syntaqx",
				"kind": "user",
				"verified": false,
				"workspaces": []
			},
			"createdAt": "2026-10-01T18:04:11.482Z",
			"updatedAt": "2026-10-01T18:09:47.305Z",
			"closedAt": null,
			"pullCount": 0,
			"commentCount": 0,
			"assignees": [
				"syntaqx"
			],
			"blockedBy": [],
			"queued": false,
			"agent": null
		}
	},
	"close_issue": {
		"request": {
			"reason": "not_planned"
		},
		"response": {
			"id": "iss_01m43shrzpfe49x74ga7sj1c6v",
			"repoId": "rep_01m3m5q6p0e2qaw6mmjahk0qrr",
			"number": 12,
			"title": "Greeting should name the caller",
			"body": "Take a name from the first argument; fall back to world.",
			"labels": [
				"feature"
			],
			"checks": [
				"cargo test"
			],
			"state": "closed",
			"reason": "not_planned",
			"resolvedBy": null,
			"author": {
				"id": "usr_01kkntcg1eeb98j62xjm7eh09p",
				"username": "syntaqx",
				"kind": "user",
				"verified": false,
				"workspaces": []
			},
			"createdAt": "2026-10-01T18:04:11.482Z",
			"updatedAt": "2026-10-01T19:30:00.214Z",
			"closedAt": "2026-10-01T19:30:00.214Z",
			"pullCount": 0,
			"commentCount": 0,
			"assignees": [],
			"blockedBy": [],
			"queued": false,
			"agent": null
		}
	},
	"reopen_issue": {
		"response": {
			"id": "iss_01m43shrzpfe49x74ga7sj1c6v",
			"repoId": "rep_01m3m5q6p0e2qaw6mmjahk0qrr",
			"number": 12,
			"title": "Greeting should name the caller",
			"body": "Take a name from the first argument; fall back to world.",
			"labels": [
				"feature"
			],
			"checks": [
				"cargo test"
			],
			"state": "open",
			"reason": null,
			"resolvedBy": null,
			"author": {
				"id": "usr_01kkntcg1eeb98j62xjm7eh09p",
				"username": "syntaqx",
				"kind": "user",
				"verified": false,
				"workspaces": []
			},
			"createdAt": "2026-10-01T18:04:11.482Z",
			"updatedAt": "2026-10-01T19:41:52.830Z",
			"closedAt": null,
			"pullCount": 0,
			"commentCount": 0,
			"assignees": [],
			"blockedBy": [],
			"queued": false,
			"agent": null
		}
	},
	"assign_issue": {
		"request": {
			"instructions": "Keep the change to src/main.rs."
		},
		"response": {
			"id": "pr_01m43smh3vexsr5pmp60qwv0vs",
			"repoId": "rep_01m3m5q6p0e2qaw6mmjahk0qrr",
			"number": 14,
			"issue": 12,
			"title": "Greeting should name the caller",
			"body": null,
			"agent": "g1t-agent",
			"runtime": "hosted",
			"status": "draft",
			"fork": {
				"namespace": "pulls",
				"name": "pr_01m43smh3vexsr5pmp60qwv0vs"
			},
			"forkRepoId": "rep_01m43smh5xd7aw2kq9tv0b4c8e",
			"branch": null,
			"headCommit": null,
			"mergeBase": null,
			"mergedBy": null,
			"mergedAt": null,
			"supersededBy": null,
			"checkStatus": null,
			"files": [],
			"assignees": [],
			"reviewers": [],
			"author": {
				"id": "usr_01kkntcg1eeb98j62xjm7eh09p",
				"username": "syntaqx",
				"kind": "user",
				"verified": false,
				"workspaces": []
			},
			"createdAt": "2026-10-01T18:20:02.117Z",
			"updatedAt": "2026-10-01T18:20:02.117Z"
		},
		"notes": "The response is the pull request the g1t agent opened, still a draft. Follow it with [get a pull request](/reference/api/pull-requests/get-pull-request/): `lifecycle` says what the agent is doing."
	},
	"add_comment": {
		"request": {
			"body": "Should an empty name fall back to \"world\"?"
		},
		"response": {
			"id": "cmt_01m43sv4c8e2g6j0m4q8t2x6a1",
			"kind": "comment",
			"author": {
				"id": "usr_01kkntcg1eeb98j62xjm7eh09p",
				"username": "syntaqx",
				"kind": "user",
				"verified": true,
				"workspaces": [
					{
						"slug": "syntaqx",
						"role": "owner"
					}
				]
			},
			"body": "Should an empty name fall back to \"world\"?",
			"path": null,
			"line": null,
			"verdict": null,
			"createdAt": "2026-10-01T18:12:30.551Z"
		}
	},
	"list_labels": {
		"response": [
			"bug",
			"feature",
			"docs",
			"chore",
			"question",
			"good first issue"
		],
		"notes": "The five default labels come first, then the others used on the repository's issues, alphabetically."
	},
	"plan_work": {
		"request": {
			"brief": "Greet people by name, from the command line and the web page."
		},
		"response": {
			"planId": "pln_01m43s9c4e8g2j6m0q4t8x2b6d"
		}
	},
	"get_plan": {
		"params": {
			"plan": "pln_01m43s9c4e8g2j6m0q4t8x2b6d"
		},
		"response": {
			"id": "pln_01m43s9c4e8g2j6m0q4t8x2b6d",
			"repoId": "rep_01m3m5q6p0e2qaw6mmjahk0qrr",
			"brief": "Greet people by name, from the command line and the web page.",
			"status": "ready",
			"summary": "Name parsing first, then the two places that print the greeting.",
			"issues": [
				{
					"title": "Greeting should name the caller",
					"body": "Accept an optional name in `greet()` and use it.",
					"labels": [
						"feature"
					],
					"checks": [
						"cargo test"
					],
					"files": [
						"src/greet.rs"
					],
					"dependsOn": [],
					"number": null
				},
				{
					"title": "Show the caller's name on the web page",
					"body": "Read `?name=` and pass it to `greet()`.",
					"labels": [
						"feature"
					],
					"checks": [
						"cargo test"
					],
					"files": [
						"src/web.rs"
					],
					"dependsOn": [
						1
					],
					"number": null
				}
			],
			"error": null,
			"author": {
				"id": "usr_01kkntcg1eeb98j62xjm7eh09p",
				"username": "syntaqx",
				"kind": "user",
				"verified": false,
				"workspaces": []
			},
			"createdAt": "2026-10-01T17:58:40.006Z",
			"finishedAt": "2026-10-01T18:01:12.774Z",
			"progress": [],
			"exchanges": []
		},
		"notes": "A plan still `planning` after 20 minutes is reported as `failed`. `progress` follows each issue once the plan is applied."
	},
	"apply_plan": {
		"params": {
			"plan": "pln_01m43s9c4e8g2j6m0q4t8x2b6d"
		},
		"request": {
			"assign": true
		},
		"response": {
			"id": "pln_01m43s9c4e8g2j6m0q4t8x2b6d",
			"repoId": "rep_01m3m5q6p0e2qaw6mmjahk0qrr",
			"brief": "Greet people by name, from the command line and the web page.",
			"status": "applied",
			"summary": "Name parsing first, then the two places that print the greeting.",
			"issues": [
				{
					"title": "Greeting should name the caller",
					"body": "Accept an optional name in `greet()` and use it.",
					"labels": [
						"feature"
					],
					"checks": [
						"cargo test"
					],
					"files": [
						"src/greet.rs"
					],
					"dependsOn": [],
					"number": 12
				},
				{
					"title": "Show the caller's name on the web page",
					"body": "Read `?name=` and pass it to `greet()`.",
					"labels": [
						"feature"
					],
					"checks": [
						"cargo test"
					],
					"files": [
						"src/web.rs"
					],
					"dependsOn": [
						1
					],
					"number": 13
				}
			],
			"error": null,
			"author": {
				"id": "usr_01kkntcg1eeb98j62xjm7eh09p",
				"username": "syntaqx",
				"kind": "user",
				"verified": false,
				"workspaces": []
			},
			"createdAt": "2026-10-01T17:58:40.006Z",
			"finishedAt": "2026-10-01T18:01:12.774Z",
			"progress": [],
			"exchanges": []
		},
		"notes": "Each opened issue's `number` is filled in. Issues left out with `keep` stay `null`."
	},
	"list_pull_requests": {
		"query": {
			"state": "open"
		},
		"response": [
			{
				"id": "pr_01m43smh3vexsr5pmp60qwv0vs",
				"repoId": "rep_01m3m5q6p0e2qaw6mmjahk0qrr",
				"number": 14,
				"issue": 12,
				"title": "Greeting should name the caller",
				"body": "Reads a name from the first argument. `hello ana` prints \"Hello, ana!\".",
				"agent": "claude-code",
				"runtime": "external",
				"status": "open",
				"fork": {
					"namespace": "pulls",
					"name": "pr_01m43smh3vexsr5pmp60qwv0vs"
				},
				"forkRepoId": "rep_01m43smh5xd7aw2kq9tv0b4c8e",
				"branch": null,
				"headCommit": "9f2c4e1a7b3d5f60812a4c6e8b0d2f4a6c8e0b13",
				"mergeBase": null,
				"mergedBy": null,
				"mergedAt": null,
				"supersededBy": null,
				"checkStatus": "passed",
				"files": [
					{
						"path": "src/main.rs",
						"additions": 6,
						"deletions": 2
					}
				],
				"assignees": [],
				"reviewers": [
					"ana"
				],
				"author": {
					"id": "usr_01kkntcg1eeb98j62xjm7eh09p",
					"username": "syntaqx",
					"kind": "user",
					"verified": false,
					"workspaces": []
				},
				"createdAt": "2026-10-01T18:20:02.117Z",
				"updatedAt": "2026-10-01T18:35:44.902Z"
			}
		],
		"notes": "Returns at most 100 pull requests, newest first. `checkStatus` is `queued`, `running`, `passed`, `failed`, `errored`, or `null` when no checks have run against the head."
	},
	"create_pull_request": {
		"request": {
			"issue": 12,
			"agent": "claude-code"
		},
		"response": {
			"pull": {
				"id": "pr_01m43smh3vexsr5pmp60qwv0vs",
				"repoId": "rep_01m3m5q6p0e2qaw6mmjahk0qrr",
				"number": 14,
				"issue": 12,
				"title": "Greeting should name the caller",
				"body": null,
				"agent": "claude-code",
				"runtime": "external",
				"status": "draft",
				"fork": {
					"namespace": "pulls",
					"name": "pr_01m43smh3vexsr5pmp60qwv0vs"
				},
				"forkRepoId": "rep_01m43smh5xd7aw2kq9tv0b4c8e",
				"branch": null,
				"headCommit": null,
				"mergeBase": null,
				"mergedBy": null,
				"mergedAt": null,
				"supersededBy": null,
				"checkStatus": null,
				"files": [],
				"assignees": [],
				"reviewers": [],
				"author": {
					"id": "usr_01kkntcg1eeb98j62xjm7eh09p",
					"username": "syntaqx",
					"kind": "user",
					"verified": false,
					"workspaces": []
				},
				"createdAt": "2026-10-01T18:20:02.117Z",
				"updatedAt": "2026-10-01T18:20:02.117Z"
			},
			"git": {
				"remote": "https://g1t.sh/pulls/pr_01m43smh3vexsr5pmp60qwv0vs.git",
				"username": "syntaqx",
				"password": "your g1t access token"
			}
		},
		"notes": "`title` defaults to the issue's title, and is required when there is no `issue`. Push to `git.remote` with your username and an access token as the password.\n\nSend `branch` to open the pull request from a branch already pushed to the repository. No fork is made, `fork` is `null`, `git.remote` is the repository itself, and the pull request is `open` at once."
	},
	"get_pull_request": {
		"response": {
			"pull": {
				"id": "pr_01m43smh3vexsr5pmp60qwv0vs",
				"repoId": "rep_01m3m5q6p0e2qaw6mmjahk0qrr",
				"number": 14,
				"issue": 12,
				"title": "Greeting should name the caller",
				"body": "Reads a name from the first argument. `hello ana` prints \"Hello, ana!\".",
				"agent": "claude-code",
				"runtime": "external",
				"status": "open",
				"fork": {
					"namespace": "pulls",
					"name": "pr_01m43smh3vexsr5pmp60qwv0vs"
				},
				"forkRepoId": "rep_01m43smh5xd7aw2kq9tv0b4c8e",
				"branch": null,
				"headCommit": "9f2c4e1a7b3d5f60812a4c6e8b0d2f4a6c8e0b13",
				"mergeBase": null,
				"mergedBy": null,
				"mergedAt": null,
				"supersededBy": null,
				"checkStatus": "passed",
				"files": [
					{
						"path": "src/main.rs",
						"additions": 6,
						"deletions": 2
					}
				],
				"assignees": [],
				"reviewers": [
					"ana"
				],
				"author": {
					"id": "usr_01kkntcg1eeb98j62xjm7eh09p",
					"username": "syntaqx",
					"kind": "user",
					"verified": false,
					"workspaces": []
				},
				"createdAt": "2026-10-01T18:20:02.117Z",
				"updatedAt": "2026-10-01T18:35:44.902Z"
			},
			"issue": {
				"id": "iss_01m43shrzpfe49x74ga7sj1c6v",
				"repoId": "rep_01m3m5q6p0e2qaw6mmjahk0qrr",
				"number": 12,
				"title": "Greeting should name the caller",
				"body": "Take a name from the first argument; fall back to world.",
				"labels": [
					"feature"
				],
				"checks": [
					"cargo test"
				],
				"state": "open",
				"reason": null,
				"resolvedBy": null,
				"author": {
					"id": "usr_01kkntcg1eeb98j62xjm7eh09p",
					"username": "syntaqx",
					"kind": "user",
					"verified": false,
					"workspaces": []
				},
				"createdAt": "2026-10-01T18:04:11.482Z",
				"updatedAt": "2026-10-01T18:20:02.117Z",
				"closedAt": null,
				"pullCount": 1,
				"commentCount": 0,
				"assignees": [],
				"blockedBy": [],
				"queued": false,
				"agent": "claude-code"
			},
			"comments": [
				{
					"id": "cmt_01m43st6d0f4h8k2n6r0v4z8c2",
					"kind": "event",
					"author": {
						"id": "usr_01kkntcg1eeb98j62xjm7eh09p",
						"username": "syntaqx",
						"kind": "user",
						"verified": false,
						"workspaces": []
					},
					"body": "marked this ready for review",
					"path": null,
					"line": null,
					"verdict": null,
					"createdAt": "2026-10-01T18:33:10.420Z"
				}
			],
			"checks": {
				"id": "chk_01m43sw8e2g6j0m4q8t2x6a0c4",
				"headCommit": "9f2c4e1a7b3d5f60812a4c6e8b0d2f4a6c8e0b13",
				"status": "passed",
				"results": [
					{
						"command": "cargo test",
						"passed": true,
						"exitCode": 0,
						"output": "test result: ok. 3 passed; 0 failed",
						"durationMs": 18234
					}
				],
				"error": null,
				"createdAt": "2026-10-01T18:33:11.002Z",
				"finishedAt": "2026-10-01T18:35:44.902Z"
			},
			"overlaps": [],
			"behind": false,
			"review_pending": false,
			"lifecycle": null,
			"landing": false,
			"stalled": null,
			"messages": [
				{
					"id": "msg_01m43tx5egeh4t3f9zcnjenqvz",
					"author": "syntaqx",
					"body": "Keep \"world\" as the default when no name is given.",
					"createdAt": "2026-10-01T18:25:00.310Z",
					"deliveredAt": "2026-10-01T18:25:31.007Z",
					"kind": "message",
					"fromNumber": null,
					"toNumber": 14,
					"answer": null,
					"declined": false
				}
			],
			"statuses": []
		},
		"notes": "| Field | |\n| --- | --- |\n| `pull.files` | The files it changes, with lines added and removed. |\n| `checks` | The latest run of the acceptance checks against its head, with each command's output. |\n| `overlaps` | Other pull requests in progress that change the same files. |\n| `behind` | Whether the default branch has moved since it was made. |\n| `landing` | Whether it is being brought up to date to land. |\n| `lifecycle` | For a pull request the g1t agent is seeing through: its stage, such as `working`, `checking`, `reviewing` or `needs_you`. |\n| `comments` | Comments, reviews and events, with `path`, `line` and `verdict`. |\n| `messages` | Messages sent to the agent working on it. |\n| `statuses` | Commit statuses reported for its head, such as workflow runs. |\n| `mergeable` | Whether it merges cleanly into its target: `clean`, `conflicting`, `checking` (being worked out) or `unknown`. Worked out ahead of time whenever it or its target moves. |\n| `conflicts` | When `mergeable` is `conflicting`, the files that conflict. Resolve them by merging the target in, or have the g1t agent do it. |\n| `earlierChecks` | Earlier runs of the acceptance checks, newest first, without their output. |\n\nChecks are started by g1t, not through the API. They run when a pull request becomes ready for review and again when its head moves."
	},
	"get_pull_request_changes": {
		"response": {
			"base": "3a7e9c1b5d2f4a6c8e0b2d4f6a8c0e2b4d6f8a1c",
			"head": "9f2c4e1a7b3d5f60812a4c6e8b0d2f4a6c8e0b13",
			"files": [
				{
					"path": "src/main.rs",
					"status": "modified",
					"additions": 1,
					"deletions": 1,
					"binary": false,
					"hunks": [
						{
							"lines": [
								{
									"kind": "context",
									"old": 3,
									"new": 3,
									"text": "fn main() {"
								},
								{
									"kind": "delete",
									"old": 4,
									"new": null,
									"text": "    println!(\"Hello, world!\");"
								},
								{
									"kind": "add",
									"old": null,
									"new": 4,
									"text": "    println!(\"Hello, {}!\", std::env::args().nth(1).unwrap_or(\"world\".into()));"
								},
								{
									"kind": "context",
									"old": 5,
									"new": 5,
									"text": "}"
								}
							]
						}
					]
				}
			],
			"truncated": false
		},
		"notes": "A file's `status` is `added`, `modified` or `deleted`. A binary file has no `hunks`. In a line, `old` is `null` when it was added and `new` is `null` when it was deleted."
	},
	"mark_pull_request_ready": {
		"request": {
			"summary": "Reads a name from the first argument. `hello ana` prints \"Hello, ana!\"."
		},
		"response": {
			"id": "pr_01m43smh3vexsr5pmp60qwv0vs",
			"repoId": "rep_01m3m5q6p0e2qaw6mmjahk0qrr",
			"number": 14,
			"issue": 12,
			"title": "Greeting should name the caller",
			"body": "Reads a name from the first argument. `hello ana` prints \"Hello, ana!\".",
			"agent": "claude-code",
			"runtime": "external",
			"status": "open",
			"fork": {
				"namespace": "pulls",
				"name": "pr_01m43smh3vexsr5pmp60qwv0vs"
			},
			"forkRepoId": "rep_01m43smh5xd7aw2kq9tv0b4c8e",
			"branch": null,
			"headCommit": "9f2c4e1a7b3d5f60812a4c6e8b0d2f4a6c8e0b13",
			"mergeBase": null,
			"mergedBy": null,
			"mergedAt": null,
			"supersededBy": null,
			"checkStatus": null,
			"files": [
				{
					"path": "src/main.rs",
					"additions": 6,
					"deletions": 2
				}
			],
			"assignees": [],
			"reviewers": [],
			"author": {
				"id": "usr_01kkntcg1eeb98j62xjm7eh09p",
				"username": "syntaqx",
				"kind": "user",
				"verified": false,
				"workspaces": []
			},
			"createdAt": "2026-10-01T18:20:02.117Z",
			"updatedAt": "2026-10-01T18:33:10.398Z"
		}
	},
	"review_pull_request": {
		"request": {
			"verdict": "request_changes",
			"body": "Trim the name before using it."
		},
		"response": {
			"id": "cmt_01m43sx9f3h7k1n5r9v3z7d1g5",
			"kind": "comment",
			"author": {
				"id": "usr_01kz9d3f7h1k5n9r3v7z1c5g9b",
				"username": "ana",
				"kind": "user",
				"verified": true,
				"workspaces": [
					{
						"slug": "syntaqx",
						"role": "member"
					}
				]
			},
			"body": "Trim the name before using it.",
			"path": null,
			"line": null,
			"verdict": "request_changes",
			"createdAt": "2026-10-01T18:40:05.019Z"
		}
	},
	"merge_pull_request": {
		"request": {
			"keep_issue_open": false
		},
		"response": {
			"id": "pr_01m43smh3vexsr5pmp60qwv0vs",
			"repoId": "rep_01m3m5q6p0e2qaw6mmjahk0qrr",
			"number": 14,
			"issue": 12,
			"title": "Greeting should name the caller",
			"body": "Reads a name from the first argument. `hello ana` prints \"Hello, ana!\".",
			"agent": "claude-code",
			"runtime": "external",
			"status": "merged",
			"fork": {
				"namespace": "pulls",
				"name": "pr_01m43smh3vexsr5pmp60qwv0vs"
			},
			"forkRepoId": "rep_01m43smh5xd7aw2kq9tv0b4c8e",
			"branch": null,
			"headCommit": "9f2c4e1a7b3d5f60812a4c6e8b0d2f4a6c8e0b13",
			"mergeBase": "3a7e9c1b5d2f4a6c8e0b2d4f6a8c0e2b4d6f8a1c",
			"mergedBy": "syntaqx",
			"mergedAt": "2026-10-01T18:52:17.093Z",
			"supersededBy": null,
			"checkStatus": "passed",
			"files": [
				{
					"path": "src/main.rs",
					"additions": 6,
					"deletions": 2
				}
			],
			"assignees": [],
			"reviewers": [
				"ana"
			],
			"author": {
				"id": "usr_01kkntcg1eeb98j62xjm7eh09p",
				"username": "syntaqx",
				"kind": "user",
				"verified": false,
				"workspaces": []
			},
			"createdAt": "2026-10-01T18:20:02.117Z",
			"updatedAt": "2026-10-01T18:52:17.093Z"
		},
		"notes": "A draft, or one whose checks have not passed, answers `409`. A pull request still `open` in the response has not landed yet: `landing` is true on it while it is brought up to date, and [get the merge queue](/reference/api/pull-requests/get-merge-queue/) shows it waiting in the [merge queue](/guides/merge-queue/). Merging records the pull request in the issue's `resolvedBy` and sets `supersededBy` on the pull requests it closes."
	},
	"close_pull_request": {
		"response": {
			"id": "pr_01m43smh3vexsr5pmp60qwv0vs",
			"repoId": "rep_01m3m5q6p0e2qaw6mmjahk0qrr",
			"number": 14,
			"issue": 12,
			"title": "Greeting should name the caller",
			"body": "Reads a name from the first argument. `hello ana` prints \"Hello, ana!\".",
			"agent": "claude-code",
			"runtime": "external",
			"status": "closed",
			"fork": {
				"namespace": "pulls",
				"name": "pr_01m43smh3vexsr5pmp60qwv0vs"
			},
			"forkRepoId": "rep_01m43smh5xd7aw2kq9tv0b4c8e",
			"branch": null,
			"headCommit": "9f2c4e1a7b3d5f60812a4c6e8b0d2f4a6c8e0b13",
			"mergeBase": null,
			"mergedBy": null,
			"mergedAt": null,
			"supersededBy": null,
			"checkStatus": null,
			"files": [
				{
					"path": "src/main.rs",
					"additions": 6,
					"deletions": 2
				}
			],
			"assignees": [],
			"reviewers": [],
			"author": {
				"id": "usr_01kkntcg1eeb98j62xjm7eh09p",
				"username": "syntaqx",
				"kind": "user",
				"verified": false,
				"workspaces": []
			},
			"createdAt": "2026-10-01T18:20:02.117Z",
			"updatedAt": "2026-10-01T19:02:48.760Z"
		}
	},
	"get_merge_queue": {
		"response": {
			"enabled": true,
			"active": [
				{
					"id": "qen_01m43rn0qsft1tpap1awkewzbb",
					"number": 14,
					"title": "Greeting should name the caller",
					"agent": "claude-code",
					"state": "testing",
					"ahead": [],
					"baseCommit": "3a7e9c1b5d2f4a6c8e0b2d4f6a8c0e2b4d6f8a1c",
					"combinedCommit": null,
					"error": null,
					"results": [],
					"enqueuedBy": "syntaqx",
					"createdAt": "2026-10-04T15:31:20.441Z",
					"finishedAt": null
				}
			],
			"recent": [
				{
					"id": "qen_01m43khqjmeb5a1magayrnk63z",
					"number": 11,
					"title": "Fix trailing newline in greeting",
					"agent": "g1t-agent",
					"state": "landed",
					"ahead": [],
					"baseCommit": "4b1d7e9c2a5f8e3d6c0b9a7e5d3c1b8a6f4e2d0c",
					"combinedCommit": "c3e8a1f6d4b2097e5c3a1f8d6b4e2c0a9f7d5b3e",
					"error": null,
					"results": [
						{
							"command": "cargo test",
							"passed": true,
							"exitCode": 0,
							"output": "test result: ok. 12 passed; 0 failed\n",
							"durationMs": 48211
						}
					],
					"enqueuedBy": "g1t",
					"createdAt": "2026-10-04T14:02:09.876Z",
					"finishedAt": "2026-10-04T14:09:55.102Z"
				}
			]
		},
		"notes": "An entry's `state` is `waiting`, `testing`, `passed`, `failed`, `landed` or `removed`. `active` is in queue order; `recent` holds at most 20, newest first."
	},
	"message_agent": {
		"request": {
			"body": "Keep \"world\" as the default when no name is given."
		},
		"response": {
			"id": "msg_01m43tx5egeh4t3f9zcnjenqvz",
			"author": "syntaqx",
			"body": "Keep \"world\" as the default when no name is given.",
			"createdAt": "2026-10-01T18:25:00.310Z",
			"deliveredAt": null,
			"kind": "message",
			"fromNumber": null,
			"toNumber": 14,
			"answer": null,
			"declined": false
		},
		"notes": "The response is the message. `deliveredAt` is set once the agent has read it."
	},
	"answer_message": {
		"params": {
			"id": "msg_01m43t66tde8hs2vpxhh3v8tqw"
		},
		"request": {
			"body": "No. greet() keeps its name; only greet_named() is added."
		},
		"response": {
			"id": "msg_01m43t66tde8hs2vpxhh3v8tqw",
			"author": "g1t-agent",
			"body": "Are you renaming greet() in src/lib.rs? I need to call it from #16.",
			"createdAt": "2026-10-01T18:58:12.301Z",
			"deliveredAt": "2026-10-01T18:58:40.117Z",
			"kind": "question",
			"fromNumber": 16,
			"toNumber": 14,
			"answer": "No. greet() keeps its name; only greet_named() is added.",
			"declined": false
		},
		"notes": "The response is the question or handoff that was answered, with `answer` and `declined` filled in."
	},
	"take_messages": {
		"response": [
			{
				"id": "msg_01m43tx5egeh4t3f9zcnjenqvz",
				"author": "syntaqx",
				"body": "Keep \"world\" as the default when no name is given.",
				"createdAt": "2026-10-01T18:25:00.310Z",
				"deliveredAt": "2026-10-01T18:25:31.007Z",
				"kind": "message",
				"fromNumber": null,
				"toNumber": 14,
				"answer": null,
				"declined": false
			}
		],
		"notes": "Only a g1t agent's token can take messages. They come oldest first, and each is marked delivered."
	},
	"read_session": {
		"query": {
			"after": 0
		},
		"response": [
			{
				"seq": 1,
				"kind": "prompt",
				"text": "Make the greeting name the caller (issue #12).",
				"tool": null,
				"commit": null,
				"at": "2026-10-01T18:21:00.004Z"
			},
			{
				"seq": 2,
				"kind": "tool_call",
				"text": "cargo test",
				"tool": "bash",
				"commit": "9f2c4e1a7b3d5f60812a4c6e8b0d2f4a6c8e0b13",
				"at": "2026-10-01T18:30:12.660Z"
			}
		]
	},
	"record_session": {
		"request": {
			"entries": [
				{
					"kind": "message",
					"text": "Reading src/main.rs."
				},
				{
					"kind": "tool_call",
					"text": "cargo test",
					"tool": "bash"
				}
			]
		},
		"response": {
			"count": 2
		},
		"notes": "Up to 200 entries can be appended per request. Each is recorded against the pull request's head commit at the time. See [sessions and why-blame](/guides/why-blame/)."
	},
	"list_workflows": {
		"response": [
			{
				"id": "wfl_01kpw2c5d8e1f4g7h0j3k6m9np",
				"path": ".g1t/workflows/ci.yml",
				"name": "CI",
				"events": [
					"push",
					"pull_request",
					"workflow_dispatch"
				],
				"state": "active",
				"error": null,
				"notes": [
					{
						"severity": "unsupported",
						"job": "test",
						"message": "`services` containers (such as a database) are not started on g1t yet."
					}
				],
				"dispatch": {
					"debug": {
						"description": "Verbose logs",
						"type": "boolean",
						"default": false
					}
				},
				"lastRun": {
					"id": "run_01kpx7b3c6d9e2f5g8h1j4k7mr",
					"workflowId": "wfl_01kpw2c5d8e1f4g7h0j3k6m9np",
					"path": ".g1t/workflows/ci.yml",
					"name": "CI",
					"title": "Greeting should name the caller",
					"number": 12,
					"attempt": 1,
					"event": "push",
					"ref": "refs/heads/main",
					"sha": "9f2c4e1a7b3d5f60812a4c6e8b0d2f4a6c8e0b13",
					"pull": null,
					"status": "completed",
					"conclusion": "success",
					"error": null,
					"actor": "syntaqx",
					"createdAt": "2026-10-04T15:42:07.318Z",
					"startedAt": "2026-10-04T15:42:09.020Z",
					"finishedAt": "2026-10-04T15:44:31.877Z"
				}
			},
			{
				"id": "wfl_01kpw2c5d8e1f4g7h0j3k6m9nq",
				"path": ".g1t/workflows/nightly.yml",
				"name": "Nightly",
				"events": [
					"schedule"
				],
				"state": "disabled",
				"error": null,
				"notes": [],
				"dispatch": null,
				"lastRun": null
			}
		],
		"notes": "`state` is `active` or `disabled`. `dispatch` holds the `workflow_dispatch` inputs, or is `null` when the workflow cannot be run by hand. See [GitHub Actions](/guides/actions/)."
	},
	"list_workflow_runs": {
		"query": {
			"workflow": "ci.yml",
			"branch": "main",
			"per_page": 20
		},
		"response": [
			{
				"id": "run_01kpx7b3c6d9e2f5g8h1j4k7mr",
				"workflowId": "wfl_01kpw2c5d8e1f4g7h0j3k6m9np",
				"path": ".g1t/workflows/ci.yml",
				"name": "CI",
				"title": "Greeting should name the caller",
				"number": 12,
				"attempt": 1,
				"event": "push",
				"ref": "refs/heads/main",
				"sha": "9f2c4e1a7b3d5f60812a4c6e8b0d2f4a6c8e0b13",
				"pull": null,
				"status": "completed",
				"conclusion": "success",
				"error": null,
				"actor": "syntaqx",
				"createdAt": "2026-10-04T15:42:07.318Z",
				"startedAt": "2026-10-04T15:42:09.020Z",
				"finishedAt": "2026-10-04T15:44:31.877Z"
			}
		],
		"notes": "A run's `status` is `queued`, `pending` (waiting for its concurrency group), `in_progress` or `completed`; `conclusion` is set once it completes."
	},
	"list_runs_of_workflow": {
		"params": {
			"workflow": "ci.yml"
		},
		"query": {
			"branch": "main",
			"per_page": 20
		},
		"response": [
			{
				"id": "run_01kpx7b3c6d9e2f5g8h1j4k7mr",
				"workflowId": "wfl_01kpw2c5d8e1f4g7h0j3k6m9np",
				"path": ".g1t/workflows/ci.yml",
				"name": "CI",
				"title": "Greeting should name the caller",
				"number": 12,
				"attempt": 1,
				"event": "push",
				"ref": "refs/heads/main",
				"sha": "9f2c4e1a7b3d5f60812a4c6e8b0d2f4a6c8e0b13",
				"pull": null,
				"status": "completed",
				"conclusion": "success",
				"error": null,
				"actor": "syntaqx",
				"createdAt": "2026-10-04T15:42:07.318Z",
				"startedAt": "2026-10-04T15:42:09.020Z",
				"finishedAt": "2026-10-04T15:44:31.877Z"
			}
		]
	},
	"get_workflow_run": {
		"params": {
			"id": "run_01kpx7b3c6d9e2f5g8h1j4k7mr"
		},
		"response": {
			"run": {
				"id": "run_01kpx7b3c6d9e2f5g8h1j4k7mr",
				"workflowId": "wfl_01kpw2c5d8e1f4g7h0j3k6m9np",
				"path": ".g1t/workflows/ci.yml",
				"name": "CI",
				"title": "Greeting should name the caller",
				"number": 12,
				"attempt": 1,
				"event": "push",
				"ref": "refs/heads/main",
				"sha": "9f2c4e1a7b3d5f60812a4c6e8b0d2f4a6c8e0b13",
				"pull": null,
				"status": "completed",
				"conclusion": "failure",
				"error": null,
				"actor": "syntaqx",
				"createdAt": "2026-10-04T15:42:07.318Z",
				"startedAt": "2026-10-04T15:42:09.020Z",
				"finishedAt": "2026-10-04T15:44:31.877Z"
			},
			"jobs": [
				{
					"id": "job_01kpx7b3d0e4f8g2h6j0k4m8ns",
					"runId": "run_01kpx7b3c6d9e2f5g8h1j4k7mr",
					"key": "test",
					"name": "test",
					"needs": [],
					"status": "completed",
					"conclusion": "failure",
					"steps": [
						{
							"number": 1,
							"name": "Run actions/checkout@v4",
							"status": "completed",
							"conclusion": "success",
							"startedAt": "2026-10-04T15:42:10.101Z",
							"finishedAt": "2026-10-04T15:42:12.433Z"
						},
						{
							"number": 2,
							"name": "Run cargo test",
							"status": "completed",
							"conclusion": "failure",
							"startedAt": "2026-10-04T15:42:12.440Z",
							"finishedAt": "2026-10-04T15:44:30.902Z"
						}
					],
					"annotations": [
						{
							"level": "error",
							"message": "assertion failed: greeting names the caller",
							"title": "greet",
							"file": "src/main.rs",
							"line": 41
						}
					],
					"reason": null,
					"startedAt": "2026-10-04T15:42:09.020Z",
					"finishedAt": "2026-10-04T15:44:31.002Z"
				},
				{
					"id": "job_01kpx7b3d0e4f8g2h6j0k4m8nt",
					"runId": "run_01kpx7b3c6d9e2f5g8h1j4k7mr",
					"key": "deploy",
					"name": "deploy",
					"needs": [
						"test"
					],
					"status": "completed",
					"conclusion": "skipped",
					"steps": [],
					"annotations": [],
					"reason": "A job it needs did not succeed.",
					"startedAt": null,
					"finishedAt": "2026-10-04T15:44:31.877Z"
				}
			],
			"notes": [
				{
					"severity": "unsupported",
					"job": "test",
					"message": "`services` containers (such as a database) are not started on g1t yet."
				}
			]
		}
	},
	"get_job_logs": {
		"params": {
			"job": "job_01kpx7b3d0e4f8g2h6j0k4m8ns"
		},
		"query": {
			"after": 0
		},
		"response": {
			"chunks": [
				{
					"seq": 1,
					"step": 0,
					"text": "Preparing the sandbox\n"
				},
				{
					"seq": 2,
					"step": 2,
					"text": "> cargo test\ntest greet ... FAILED\n"
				}
			],
			"done": true
		},
		"notes": "Returns at most 500 chunks. Step 0 is the job's setup. While `done` is false, call again with the last `seq` as `after`."
	},
	"dispatch_workflow": {
		"params": {
			"workflow": "ci.yml"
		},
		"request": {
			"ref": "main",
			"inputs": {
				"debug": true
			}
		},
		"response": {
			"id": "run_01kpx8d4e7f0g3h6j9k2m5n8pq",
			"workflowId": "wfl_01kpw2c5d8e1f4g7h0j3k6m9np",
			"path": ".g1t/workflows/ci.yml",
			"name": "CI",
			"title": "CI run by syntaqx",
			"number": 13,
			"attempt": 1,
			"event": "workflow_dispatch",
			"ref": "refs/heads/main",
			"sha": "9f2c4e1a7b3d5f60812a4c6e8b0d2f4a6c8e0b13",
			"pull": null,
			"status": "queued",
			"conclusion": null,
			"error": null,
			"actor": "syntaqx",
			"createdAt": "2026-10-04T16:30:00.512Z",
			"startedAt": null,
			"finishedAt": null
		}
	},
	"cancel_workflow_run": {
		"params": {
			"id": "run_01kpx7b3c6d9e2f5g8h1j4k7mr"
		},
		"response": {
			"id": "run_01kpx7b3c6d9e2f5g8h1j4k7mr",
			"workflowId": "wfl_01kpw2c5d8e1f4g7h0j3k6m9np",
			"path": ".g1t/workflows/ci.yml",
			"name": "CI",
			"title": "Greeting should name the caller",
			"number": 12,
			"attempt": 1,
			"event": "push",
			"ref": "refs/heads/main",
			"sha": "9f2c4e1a7b3d5f60812a4c6e8b0d2f4a6c8e0b13",
			"pull": null,
			"status": "completed",
			"conclusion": "cancelled",
			"error": null,
			"actor": "syntaqx",
			"createdAt": "2026-10-04T15:42:07.318Z",
			"startedAt": "2026-10-04T15:42:09.020Z",
			"finishedAt": "2026-10-04T15:44:31.877Z"
		}
	},
	"rerun_workflow_run": {
		"params": {
			"id": "run_01kpx7b3c6d9e2f5g8h1j4k7mr"
		},
		"request": {
			"failed_only": true
		},
		"response": {
			"id": "run_01kpx7b3c6d9e2f5g8h1j4k7mr",
			"workflowId": "wfl_01kpw2c5d8e1f4g7h0j3k6m9np",
			"path": ".g1t/workflows/ci.yml",
			"name": "CI",
			"title": "Greeting should name the caller",
			"number": 12,
			"attempt": 2,
			"event": "push",
			"ref": "refs/heads/main",
			"sha": "9f2c4e1a7b3d5f60812a4c6e8b0d2f4a6c8e0b13",
			"pull": null,
			"status": "queued",
			"conclusion": null,
			"error": null,
			"actor": "syntaqx",
			"createdAt": "2026-10-04T15:42:07.318Z",
			"startedAt": null,
			"finishedAt": null
		},
		"notes": "The run keeps its id; `attempt` goes up by one."
	},
	"rerun_failed_jobs": {
		"params": {
			"id": "run_01kpx7b3c6d9e2f5g8h1j4k7mr"
		},
		"response": {
			"id": "run_01kpx7b3c6d9e2f5g8h1j4k7mr",
			"workflowId": "wfl_01kpw2c5d8e1f4g7h0j3k6m9np",
			"path": ".g1t/workflows/ci.yml",
			"name": "CI",
			"title": "Greeting should name the caller",
			"number": 12,
			"attempt": 2,
			"event": "push",
			"ref": "refs/heads/main",
			"sha": "9f2c4e1a7b3d5f60812a4c6e8b0d2f4a6c8e0b13",
			"pull": null,
			"status": "queued",
			"conclusion": null,
			"error": null,
			"actor": "syntaqx",
			"createdAt": "2026-10-04T15:42:07.318Z",
			"startedAt": null,
			"finishedAt": null
		}
	},
	"update_workflow": {
		"params": {
			"workflow": "nightly.yml"
		},
		"request": {
			"enabled": false
		},
		"response": {
			"id": "wfl_01kpw2c5d8e1f4g7h0j3k6m9nq",
			"path": ".g1t/workflows/nightly.yml",
			"name": "Nightly",
			"events": [
				"schedule"
			],
			"state": "disabled",
			"error": null,
			"notes": [],
			"dispatch": null,
			"lastRun": null
		}
	},
	"enable_workflow": {
		"params": {
			"workflow": "nightly.yml"
		},
		"response": {
			"id": "wfl_01kpw2c5d8e1f4g7h0j3k6m9nq",
			"path": ".g1t/workflows/nightly.yml",
			"name": "Nightly",
			"events": [
				"schedule"
			],
			"state": "active",
			"error": null,
			"notes": [],
			"dispatch": null,
			"lastRun": null
		}
	},
	"disable_workflow": {
		"params": {
			"workflow": "nightly.yml"
		},
		"response": {
			"id": "wfl_01kpw2c5d8e1f4g7h0j3k6m9nq",
			"path": ".g1t/workflows/nightly.yml",
			"name": "Nightly",
			"events": [
				"schedule"
			],
			"state": "disabled",
			"error": null,
			"notes": [],
			"dispatch": null,
			"lastRun": null
		}
	},
	"list_actions_secrets": {
		"response": [
			{
				"id": "set_01kpv9q4r7s0t3v6w9x2y5z8ab",
				"name": "NPM_TOKEN",
				"kind": "secret",
				"value": null,
				"scope": "workspace",
				"updatedAt": "2026-10-01T09:12:44.020Z",
				"availableTo": [
					"workflows"
				],
				"environments": [],
				"projects": [],
				"note": null,
				"updatedBy": "syntaqx"
			},
			{
				"id": "set_01kpv9q4r7s0t3v6w9x2y5z8ac",
				"name": "STRIPE_KEY",
				"kind": "secret",
				"value": null,
				"scope": "project",
				"updatedAt": "2026-10-04T15:42:07.318Z",
				"availableTo": [
					"workflows",
					"deployments"
				],
				"environments": [
					"production"
				],
				"projects": [],
				"note": "Rotate in the Stripe dashboard.",
				"updatedBy": "syntaqx"
			}
		],
		"notes": "Values are never returned. A repository's list includes the workspace's rows that reach it, with `scope` set to `workspace`. Empty `environments` means every environment."
	},
	"list_actions_secrets_for_workspace": {
		"params": {
			"workspace": "syntaqx"
		},
		"response": [
			{
				"id": "set_01kpv9q4r7s0t3v6w9x2y5z8ab",
				"name": "NPM_TOKEN",
				"kind": "secret",
				"value": null,
				"scope": "workspace",
				"updatedAt": "2026-10-04T15:42:07.318Z",
				"availableTo": [
					"workflows"
				],
				"environments": [],
				"projects": [],
				"note": null,
				"updatedBy": "syntaqx"
			}
		],
		"notes": "Values are never returned. A repository's list includes the workspace's rows that reach it, with `scope` set to `workspace`. Empty `environments` means every environment."
	},
	"set_actions_secret": {
		"params": {
			"setting": "STRIPE_KEY"
		},
		"request": {
			"value": "sk_live_…",
			"available_to": [
				"workflows",
				"deployments"
			],
			"environments": [
				"production"
			]
		},
		"response": {
			"id": "set_01kpv9q4r7s0t3v6w9x2y5z8ac",
			"name": "STRIPE_KEY",
			"kind": "secret",
			"value": null,
			"scope": "project",
			"updatedAt": "2026-10-04T15:42:07.318Z",
			"availableTo": [
				"workflows",
				"deployments"
			],
			"environments": [
				"production"
			],
			"projects": [],
			"note": null,
			"updatedBy": "syntaqx"
		},
		"notes": "Keys are uppercased. See [secrets and variables](/guides/secrets-and-variables/)."
	},
	"set_actions_secret_for_workspace": {
		"params": {
			"workspace": "syntaqx",
			"setting": "NPM_TOKEN"
		},
		"request": {
			"value": "npm_…",
			"projects": [
				"hello"
			]
		},
		"response": {
			"id": "set_01kpv9q4r7s0t3v6w9x2y5z8ac",
			"name": "NPM_TOKEN",
			"kind": "secret",
			"value": null,
			"scope": "workspace",
			"updatedAt": "2026-10-04T15:42:07.318Z",
			"availableTo": [
				"workflows"
			],
			"environments": [],
			"projects": [
				"hello"
			],
			"note": null,
			"updatedBy": "syntaqx"
		}
	},
	"delete_actions_secret": {
		"params": {
			"setting": "STRIPE_KEY"
		},
		"response": true
	},
	"delete_actions_secret_for_workspace": {
		"params": {
			"workspace": "syntaqx",
			"setting": "NPM_TOKEN"
		},
		"response": true
	},
	"list_actions_variables": {
		"response": [
			{
				"id": "set_01kpv9q4r7s0t3v6w9x2y5z8ad",
				"name": "NODE_VERSION",
				"kind": "variable",
				"value": "20",
				"scope": "project",
				"updatedAt": "2026-10-04T15:42:07.318Z",
				"availableTo": [
					"workflows",
					"deployments"
				],
				"environments": [],
				"projects": [],
				"note": null,
				"updatedBy": "syntaqx"
			}
		],
		"notes": "A repository's list includes the workspace's rows that reach it, with `scope` set to `workspace`. Empty `environments` means every environment."
	},
	"list_actions_variables_for_workspace": {
		"params": {
			"workspace": "syntaqx"
		},
		"response": [
			{
				"id": "set_01kpv9q4r7s0t3v6w9x2y5z8ad",
				"name": "NODE_VERSION",
				"kind": "variable",
				"value": "20",
				"scope": "workspace",
				"updatedAt": "2026-10-04T15:42:07.318Z",
				"availableTo": [
					"workflows",
					"deployments"
				],
				"environments": [],
				"projects": [],
				"note": null,
				"updatedBy": "syntaqx"
			}
		]
	},
	"set_actions_variable": {
		"request": {
			"setting": "NODE_VERSION",
			"value": "20"
		},
		"response": {
			"id": "set_01kpv9q4r7s0t3v6w9x2y5z8ad",
			"name": "NODE_VERSION",
			"kind": "variable",
			"value": "20",
			"scope": "project",
			"updatedAt": "2026-10-04T15:42:07.318Z",
			"availableTo": [
				"workflows",
				"deployments"
			],
			"environments": [],
			"projects": [],
			"note": null,
			"updatedBy": "syntaqx"
		},
		"notes": "GitHub's clients send the key as `name`; that is accepted too."
	},
	"set_actions_variable_for_workspace": {
		"params": {
			"workspace": "syntaqx"
		},
		"request": {
			"setting": "NODE_VERSION",
			"value": "20"
		},
		"response": {
			"id": "set_01kpv9q4r7s0t3v6w9x2y5z8ad",
			"name": "NODE_VERSION",
			"kind": "variable",
			"value": "20",
			"scope": "workspace",
			"updatedAt": "2026-10-04T15:42:07.318Z",
			"availableTo": [
				"workflows",
				"deployments"
			],
			"environments": [],
			"projects": [],
			"note": null,
			"updatedBy": "syntaqx"
		}
	},
	"update_actions_variable": {
		"params": {
			"setting": "NODE_VERSION"
		},
		"request": {
			"value": "22"
		},
		"response": {
			"id": "set_01kpv9q4r7s0t3v6w9x2y5z8ad",
			"name": "NODE_VERSION",
			"kind": "variable",
			"value": "22",
			"scope": "project",
			"updatedAt": "2026-10-04T15:42:07.318Z",
			"availableTo": [
				"workflows",
				"deployments"
			],
			"environments": [],
			"projects": [],
			"note": null,
			"updatedBy": "syntaqx"
		}
	},
	"update_actions_variable_for_workspace": {
		"params": {
			"workspace": "syntaqx",
			"setting": "NODE_VERSION"
		},
		"request": {
			"value": "22"
		},
		"response": {
			"id": "set_01kpv9q4r7s0t3v6w9x2y5z8ad",
			"name": "NODE_VERSION",
			"kind": "variable",
			"value": "22",
			"scope": "workspace",
			"updatedAt": "2026-10-04T15:42:07.318Z",
			"availableTo": [
				"workflows",
				"deployments"
			],
			"environments": [],
			"projects": [],
			"note": null,
			"updatedBy": "syntaqx"
		}
	},
	"delete_actions_variable": {
		"params": {
			"setting": "NODE_VERSION"
		},
		"response": true
	},
	"delete_actions_variable_for_workspace": {
		"params": {
			"workspace": "syntaqx",
			"setting": "NODE_VERSION"
		},
		"response": true
	},
	"list_webhooks": {
		"response": [
			{
				"id": "hk_01kpx5p9s4h0t1w6x8y2a3b4cd",
				"scope": "repo",
				"workspace": "syntaqx",
				"repo": "syntaqx/hello",
				"url": "https://hooks.example.com/g1t",
				"events": [
					"git.push",
					"pull.merged"
				],
				"active": true,
				"secretHint": "…9c2e",
				"createdBy": "syntaqx",
				"createdAt": "2026-10-04T15:42:07.318Z",
				"lastStatus": "delivered",
				"lastDeliveredAt": "2026-10-04T15:42:07.611Z"
			}
		]
	},
	"list_webhooks_for_workspace": {
		"params": {
			"workspace": "syntaqx"
		},
		"response": [
			{
				"id": "hk_01kpx5p9s4h0t1w6x8y2a3b4cd",
				"scope": "workspace",
				"workspace": "syntaqx",
				"repo": null,
				"url": "https://hooks.example.com/g1t",
				"events": [
					"git.push",
					"pull.merged"
				],
				"active": true,
				"secretHint": "…9c2e",
				"createdBy": "syntaqx",
				"createdAt": "2026-10-04T15:42:07.318Z",
				"lastStatus": "delivered",
				"lastDeliveredAt": "2026-10-04T15:42:07.611Z"
			}
		]
	},
	"create_webhook": {
		"request": {
			"url": "https://hooks.example.com/g1t",
			"events": [
				"git.push",
				"pull.merged"
			]
		},
		"response": {
			"hook": {
				"id": "hk_01kpx5p9s4h0t1w6x8y2a3b4cd",
				"scope": "repo",
				"workspace": "syntaqx",
				"repo": "syntaqx/hello",
				"url": "https://hooks.example.com/g1t",
				"events": [
					"git.push",
					"pull.merged"
				],
				"active": true,
				"secretHint": "…9c2e",
				"createdBy": "syntaqx",
				"createdAt": "2026-10-04T15:42:07.318Z",
				"lastStatus": "delivered",
				"lastDeliveredAt": "2026-10-04T15:42:07.611Z"
			},
			"secret": "whsec_…"
		},
		"notes": "A ping is sent before the response, so `lastStatus` is usually set already. When g1t made the signing secret, `secret` holds it: it is shown only this once. See [webhooks](/guides/webhooks/)."
	},
	"create_webhook_for_workspace": {
		"params": {
			"workspace": "syntaqx"
		},
		"request": {
			"url": "https://hooks.example.com/g1t"
		},
		"response": {
			"hook": {
				"id": "hk_01kpx5p9s4h0t1w6x8y2a3b4cd",
				"scope": "workspace",
				"workspace": "syntaqx",
				"repo": null,
				"url": "https://hooks.example.com/g1t",
				"events": [
					"*"
				],
				"active": true,
				"secretHint": "…9c2e",
				"createdBy": "syntaqx",
				"createdAt": "2026-10-04T15:42:07.318Z",
				"lastStatus": "delivered",
				"lastDeliveredAt": "2026-10-04T15:42:07.611Z"
			},
			"secret": "whsec_…"
		},
		"notes": "A ping is sent before the response, so `lastStatus` is usually set already. When g1t made the signing secret, `secret` holds it: it is shown only this once. See [webhooks](/guides/webhooks/)."
	},
	"update_webhook": {
		"params": {
			"id": "hk_01kpx5p9s4h0t1w6x8y2a3b4cd"
		},
		"request": {
			"active": false
		},
		"response": {
			"id": "hk_01kpx5p9s4h0t1w6x8y2a3b4cd",
			"scope": "repo",
			"workspace": "syntaqx",
			"repo": "syntaqx/hello",
			"url": "https://hooks.example.com/g1t",
			"events": [
				"git.push",
				"pull.merged"
			],
			"active": false,
			"secretHint": "…9c2e",
			"createdBy": "syntaqx",
			"createdAt": "2026-10-04T15:42:07.318Z",
			"lastStatus": "delivered",
			"lastDeliveredAt": "2026-10-04T15:42:07.611Z"
		}
	},
	"update_webhook_for_workspace": {
		"params": {
			"workspace": "syntaqx",
			"id": "hk_01kpx5p9s4h0t1w6x8y2a3b4cd"
		},
		"request": {
			"active": false
		},
		"response": {
			"id": "hk_01kpx5p9s4h0t1w6x8y2a3b4cd",
			"scope": "workspace",
			"workspace": "syntaqx",
			"repo": null,
			"url": "https://hooks.example.com/g1t",
			"events": [
				"git.push",
				"pull.merged"
			],
			"active": false,
			"secretHint": "…9c2e",
			"createdBy": "syntaqx",
			"createdAt": "2026-10-04T15:42:07.318Z",
			"lastStatus": "delivered",
			"lastDeliveredAt": "2026-10-04T15:42:07.611Z"
		}
	},
	"delete_webhook": {
		"params": {
			"id": "hk_01kpx5p9s4h0t1w6x8y2a3b4cd"
		},
		"response": true
	},
	"delete_webhook_for_workspace": {
		"params": {
			"workspace": "syntaqx",
			"id": "hk_01kpx5p9s4h0t1w6x8y2a3b4cd"
		},
		"response": true
	},
	"ping_webhook": {
		"params": {
			"id": "hk_01kpx5p9s4h0t1w6x8y2a3b4cd"
		},
		"response": {
			"id": "dlv_01kpx5p9v2j7k3m8n4p5q6r7st",
			"hookId": "hk_01kpx5p9s4h0t1w6x8y2a3b4cd",
			"eventId": "",
			"event": "ping",
			"status": "delivered",
			"attempts": 1,
			"responseStatus": 200,
			"responseBody": "ok",
			"error": null,
			"durationMs": 184,
			"payload": "{\"hook\":{\"events\":[\"git.push\",\"pull.merged\"],\"id\":\"hk_01kpx5p9s4h0t1w6x8y2a3b4cd\",\"url\":\"https://hooks.example.com/g1t\"},\"message\":\"g1t will send this webhook's events here.\",\"time\":\"2026-10-04T16:01:12.440Z\",\"type\":\"ping\"}",
			"createdAt": "2026-10-04T16:01:12.440Z",
			"deliveredAt": "2026-10-04T16:01:12.631Z",
			"nextAttemptAt": null
		},
		"notes": "`payload` is the JSON that was sent, as a string."
	},
	"ping_webhook_for_workspace": {
		"params": {
			"workspace": "syntaqx",
			"id": "hk_01kpx5p9s4h0t1w6x8y2a3b4cd"
		},
		"response": {
			"id": "dlv_01kpx5p9v2j7k3m8n4p5q6r7st",
			"hookId": "hk_01kpx5p9s4h0t1w6x8y2a3b4cd",
			"eventId": "",
			"event": "ping",
			"status": "delivered",
			"attempts": 1,
			"responseStatus": 200,
			"responseBody": "ok",
			"error": null,
			"durationMs": 184,
			"payload": "{\"hook\":{\"events\":[\"git.push\",\"pull.merged\"],\"id\":\"hk_01kpx5p9s4h0t1w6x8y2a3b4cd\",\"url\":\"https://hooks.example.com/g1t\"},\"message\":\"g1t will send this webhook's events here.\",\"time\":\"2026-10-04T16:01:12.440Z\",\"type\":\"ping\"}",
			"createdAt": "2026-10-04T16:01:12.440Z",
			"deliveredAt": "2026-10-04T16:01:12.631Z",
			"nextAttemptAt": null
		}
	},
	"list_webhook_deliveries": {
		"params": {
			"id": "hk_01kpx5p9s4h0t1w6x8y2a3b4cd"
		},
		"response": [
			{
				"id": "dlv_01kpx6a2b3c4d5e6f7g8h9j0kz",
				"hookId": "hk_01kpx5p9s4h0t1w6x8y2a3b4cd",
				"eventId": "",
				"event": "ping",
				"status": "pending",
				"attempts": 1,
				"responseStatus": 503,
				"responseBody": "Service Unavailable",
				"error": null,
				"durationMs": 212,
				"payload": "{\"hook\":{\"events\":[\"git.push\",\"pull.merged\"],\"id\":\"hk_01kpx5p9s4h0t1w6x8y2a3b4cd\",\"url\":\"https://hooks.example.com/g1t\"},\"message\":\"g1t will send this webhook's events here.\",\"time\":\"2026-10-04T16:01:12.440Z\",\"type\":\"ping\"}",
				"createdAt": "2026-10-04T16:20:03.100Z",
				"deliveredAt": null,
				"nextAttemptAt": "2026-10-04T16:21:03.312Z"
			},
			{
				"id": "dlv_01kpx5p9v2j7k3m8n4p5q6r7st",
				"hookId": "hk_01kpx5p9s4h0t1w6x8y2a3b4cd",
				"eventId": "",
				"event": "ping",
				"status": "delivered",
				"attempts": 1,
				"responseStatus": 200,
				"responseBody": "ok",
				"error": null,
				"durationMs": 184,
				"payload": "{\"hook\":{\"events\":[\"git.push\",\"pull.merged\"],\"id\":\"hk_01kpx5p9s4h0t1w6x8y2a3b4cd\",\"url\":\"https://hooks.example.com/g1t\"},\"message\":\"g1t will send this webhook's events here.\",\"time\":\"2026-10-04T16:01:12.440Z\",\"type\":\"ping\"}",
				"createdAt": "2026-10-04T16:01:12.440Z",
				"deliveredAt": "2026-10-04T16:01:12.631Z",
				"nextAttemptAt": null
			}
		],
		"notes": "Returns at most 50, newest first. `status` is `pending`, `delivered` or `failed`; `nextAttemptAt` is set while it is pending."
	},
	"list_webhook_deliveries_for_workspace": {
		"params": {
			"workspace": "syntaqx",
			"id": "hk_01kpx5p9s4h0t1w6x8y2a3b4cd"
		},
		"response": [
			{
				"id": "dlv_01kpx6a2b3c4d5e6f7g8h9j0kz",
				"hookId": "hk_01kpx5p9s4h0t1w6x8y2a3b4cd",
				"eventId": "",
				"event": "ping",
				"status": "pending",
				"attempts": 1,
				"responseStatus": 503,
				"responseBody": "Service Unavailable",
				"error": null,
				"durationMs": 212,
				"payload": "{\"hook\":{\"events\":[\"git.push\",\"pull.merged\"],\"id\":\"hk_01kpx5p9s4h0t1w6x8y2a3b4cd\",\"url\":\"https://hooks.example.com/g1t\"},\"message\":\"g1t will send this webhook's events here.\",\"time\":\"2026-10-04T16:01:12.440Z\",\"type\":\"ping\"}",
				"createdAt": "2026-10-04T16:20:03.100Z",
				"deliveredAt": null,
				"nextAttemptAt": "2026-10-04T16:21:03.312Z"
			},
			{
				"id": "dlv_01kpx5p9v2j7k3m8n4p5q6r7st",
				"hookId": "hk_01kpx5p9s4h0t1w6x8y2a3b4cd",
				"eventId": "",
				"event": "ping",
				"status": "delivered",
				"attempts": 1,
				"responseStatus": 200,
				"responseBody": "ok",
				"error": null,
				"durationMs": 184,
				"payload": "{\"hook\":{\"events\":[\"git.push\",\"pull.merged\"],\"id\":\"hk_01kpx5p9s4h0t1w6x8y2a3b4cd\",\"url\":\"https://hooks.example.com/g1t\"},\"message\":\"g1t will send this webhook's events here.\",\"time\":\"2026-10-04T16:01:12.440Z\",\"type\":\"ping\"}",
				"createdAt": "2026-10-04T16:01:12.440Z",
				"deliveredAt": "2026-10-04T16:01:12.631Z",
				"nextAttemptAt": null
			}
		]
	},
	"redeliver_webhook": {
		"params": {
			"id": "hk_01kpx5p9s4h0t1w6x8y2a3b4cd",
			"delivery": "dlv_01kpx6a2b3c4d5e6f7g8h9j0kz"
		},
		"response": {
			"id": "dlv_01kpx6c8d1e2f3g4h5j6k7m8np",
			"hookId": "hk_01kpx5p9s4h0t1w6x8y2a3b4cd",
			"eventId": "",
			"event": "ping",
			"status": "delivered",
			"attempts": 1,
			"responseStatus": 200,
			"responseBody": "ok",
			"error": null,
			"durationMs": 171,
			"payload": "{\"hook\":{\"events\":[\"git.push\",\"pull.merged\"],\"id\":\"hk_01kpx5p9s4h0t1w6x8y2a3b4cd\",\"url\":\"https://hooks.example.com/g1t\"},\"message\":\"g1t will send this webhook's events here.\",\"time\":\"2026-10-04T16:01:12.440Z\",\"type\":\"ping\"}",
			"createdAt": "2026-10-04T16:25:40.007Z",
			"deliveredAt": "2026-10-04T16:25:40.178Z",
			"nextAttemptAt": null
		},
		"notes": "The response is the new delivery."
	},
	"redeliver_webhook_for_workspace": {
		"params": {
			"workspace": "syntaqx",
			"id": "hk_01kpx5p9s4h0t1w6x8y2a3b4cd",
			"delivery": "dlv_01kpx6a2b3c4d5e6f7g8h9j0kz"
		},
		"response": {
			"id": "dlv_01kpx6c8d1e2f3g4h5j6k7m8np",
			"hookId": "hk_01kpx5p9s4h0t1w6x8y2a3b4cd",
			"eventId": "",
			"event": "ping",
			"status": "delivered",
			"attempts": 1,
			"responseStatus": 200,
			"responseBody": "ok",
			"error": null,
			"durationMs": 171,
			"payload": "{\"hook\":{\"events\":[\"git.push\",\"pull.merged\"],\"id\":\"hk_01kpx5p9s4h0t1w6x8y2a3b4cd\",\"url\":\"https://hooks.example.com/g1t\"},\"message\":\"g1t will send this webhook's events here.\",\"time\":\"2026-10-04T16:01:12.440Z\",\"type\":\"ping\"}",
			"createdAt": "2026-10-04T16:25:40.007Z",
			"deliveredAt": "2026-10-04T16:25:40.178Z",
			"nextAttemptAt": null
		}
	},
	"list_integrations": {
		"params": {
			"workspace": "syntaqx"
		},
		"response": [
			{
				"id": "con_01kpx3m7q2f8r9t4v6w0y1z2ab",
				"workspace": "syntaqx",
				"provider": "anthropic",
				"kind": "models",
				"name": "Anthropic",
				"config": {
					"assign": false,
					"writeBack": true
				},
				"secretHint": "…3f9a",
				"webhookUrl": null,
				"createdBy": "syntaqx",
				"createdAt": "2026-10-04T15:42:07.318Z",
				"lastUsedAt": "2026-10-04T15:42:08.102Z",
				"lastError": null,
				"models": [
					"claude-haiku-4-5",
					"claude-sonnet-4-5"
				]
			},
			{
				"id": "con_01kpx4n8r3g9s0v5w7x1z2a3bc",
				"workspace": "syntaqx",
				"provider": "jira",
				"kind": "tracker",
				"name": "Jira",
				"config": {
					"assign": false,
					"writeBack": true,
					"site": "https://acme.atlassian.net",
					"email": "syntaqx@example.com",
					"keys": [
						"TECH"
					]
				},
				"secretHint": "…x7Qe",
				"webhookUrl": null,
				"createdBy": "syntaqx",
				"createdAt": "2026-10-04T15:42:07.318Z",
				"lastUsedAt": null,
				"lastError": null,
				"models": []
			}
		],
		"notes": "`kind` is `models`, `alerts` or `tracker`. `secretHint` shows the end of the secret; the secret itself is never returned. `webhookUrl` is where an alert source sends its alerts."
	},
	"connect_integration": {
		"params": {
			"workspace": "syntaqx"
		},
		"request": {
			"provider": "webhook",
			"config": {
				"repo": "syntaqx/hello",
				"label": "bug"
			}
		},
		"response": {
			"connection": {
				"id": "con_01kpx4n8r3g9s0v5w7x1z2a3bd",
				"workspace": "syntaqx",
				"provider": "webhook",
				"kind": "alerts",
				"name": "Webhook",
				"config": {
					"repo": "syntaqx/hello",
					"label": "bug",
					"assign": false,
					"writeBack": true
				},
				"secretHint": null,
				"webhookUrl": "https://api.g1t.sh/hooks/con_01kpx4n8r3g9s0v5w7x1z2a3bd",
				"createdBy": "syntaqx",
				"createdAt": "2026-10-04T15:42:07.318Z",
				"lastUsedAt": null,
				"lastError": null,
				"models": []
			},
			"signingSecret": "g1ts_9f2c4a7e1b0d3c6f8a2e5b7d9c1f4a6e8b0d2c4f6a8e1b3d"
		},
		"notes": "`signingSecret` is set only when g1t made it, for `datadog` and `webhook`, and is shown only this once. A model provider is tested as it is connected. See [integrations](/guides/integrations/) and [model providers](/guides/models/)."
	},
	"disconnect_integration": {
		"params": {
			"workspace": "syntaqx",
			"id": "con_01kpx3m7q2f8r9t4v6w0y1z2ab"
		},
		"response": true
	},
	"test_integration": {
		"params": {
			"workspace": "syntaqx",
			"id": "con_01kpx3m7q2f8r9t4v6w0y1z2ab"
		},
		"response": {
			"ok": true,
			"message": "Anthropic accepted the key and offers 9 models."
		},
		"notes": "Credentials that do not work still answer `200`, with `ok` false and `message` saying what went wrong."
	},
	"get_model_routes": {
		"params": {
			"workspace": "syntaqx"
		},
		"response": [
			{
				"task": "default",
				"connectionId": "con_01kpx3m7q2f8r9t4v6w0y1z2ab",
				"model": "claude-sonnet-4-5"
			},
			{
				"task": "review",
				"connectionId": null,
				"model": null
			}
		]
	},
	"set_model_routes": {
		"params": {
			"workspace": "syntaqx"
		},
		"request": {
			"routes": [
				{
					"task": "default",
					"connection_id": "con_01kpx3m7q2f8r9t4v6w0y1z2ab",
					"model": "claude-sonnet-4-5"
				},
				{
					"task": "review",
					"connection_id": null
				}
			]
		},
		"response": [
			{
				"task": "default",
				"connectionId": "con_01kpx3m7q2f8r9t4v6w0y1z2ab",
				"model": "claude-sonnet-4-5"
			},
			{
				"task": "review",
				"connectionId": null,
				"model": null
			}
		],
		"notes": "The response is the routes as saved, ordered by task."
	},
	"get_context": {
		"query": {
			"reference": "TECH-1234"
		},
		"response": {
			"provider": "jira",
			"key": "TECH-1234",
			"title": "Checkout fails for EU cards",
			"url": "https://acme.atlassian.net/browse/TECH-1234",
			"status": "In Progress",
			"body": "Customers with 3DS cards see a 500 at /pay.",
			"fetchedAt": "2026-10-04T15:42:07.318Z"
		}
	},
	"import_issue": {
		"request": {
			"reference": "TECH-1234"
		},
		"response": {
			"number": 42,
			"item": {
				"provider": "jira",
				"key": "TECH-1234",
				"title": "Checkout fails for EU cards",
				"url": "https://acme.atlassian.net/browse/TECH-1234",
				"status": "In Progress",
				"body": "Customers with 3DS cards see a 500 at /pay.",
				"fetchedAt": "2026-10-04T15:42:07.318Z"
			},
			"created": true
		},
		"notes": "`created` is false when the ticket was imported before; `number` is then that issue."
	},
	"remember": {
		"request": {
			"text": "The tests need TZ=UTC or the date tests fail.",
			"scope": "project",
			"kind": "gotcha",
			"from_number": 14
		},
		"response": {
			"id": "mem_01m43v8q2w3e4r5t6y7u8i9o0p",
			"scope": "project",
			"workspace": "syntaqx",
			"repo": {
				"namespace": "syntaqx",
				"name": "hello"
			},
			"text": "The tests need TZ=UTC or the date tests fail.",
			"kind": "gotcha",
			"source": {
				"kind": "run",
				"runId": "arn_01m43v2c1p9k8d7e6f5a4b3c2d",
				"repo": {
					"namespace": "syntaqx",
					"name": "hello"
				},
				"number": 14
			},
			"createdBy": "g1t-agent",
			"pinned": false,
			"createdAt": "2026-10-01T18:40:12.000Z",
			"updatedAt": "2026-10-01T18:40:12.000Z",
			"lastUsedAt": null
		},
		"notes": "Text that looks like a key, a token or a password is refused with `invalid`: memory is read by every agent in the workspace. Saving the same text again in the same scope returns the memory already kept."
	},
	"recall": {
		"query": {
			"q": "pnpm"
		},
		"response": {
			"project": [],
			"workspace": [
				{
					"id": "mem_01m43t0a1s2d3f4g5h6j7k8l9z",
					"scope": "workspace",
					"workspace": "syntaqx",
					"repo": null,
					"text": "We use pnpm everywhere, never npm or yarn.",
					"kind": "convention",
					"source": {
						"kind": "person",
						"runId": null,
						"repo": null,
						"number": null
					},
					"createdBy": "syntaqx",
					"pinned": true,
					"createdAt": "2026-10-01T18:40:12.000Z",
					"updatedAt": "2026-10-01T18:40:12.000Z",
					"lastUsedAt": null
				}
			]
		},
		"notes": "Members of the workspace only. Each memory returned is marked used, which keeps it near the front of what agents are given."
	}
}