Skip to content

Workspaces

What happened across a workspace's repositories that you can read, newest first: pull requests merged, opened and closed, issues opened and closed, releases published, deployments that succeeded or failed, pushes (with default_branch true for what landed on the default branch without a pull request), reviews, packages, and workflow runs that finished (workflow, run_number, conclusion, run_id for workflow get_run).

GET/workspaces/{workspace}/activity

Each event has its kind, time, repo (owner/name), actor (a username), and where it has them its number, title, url (its page on g1t), branch, commit, commits, tag and error. summary counts merged pull requests, releases, production deployments, default-branch pushes and failed runs: what shipped, and what broke. landed lists the commits made on default branches in the span, one line each (repo, commit, subject, author, time, url): what shipped where it was pushed rather than merged. The span is since to until (RFC 3339; the last 24 hours when since is left out, at most 31 days); narrow it with kinds (merged, pulls, issues, releases, deployments, pushes, reviews, comments, packages, runs; all but comments when left out) and limit (100 unless you say, at most 200). complete is false when more happened than was read: narrow the span or the kinds. For one repository’s full timeline use list_events.

What shipped today across a workspace: since at midnight UTC and kinds=merged,releases,deployments,pushes. Each event links to its page on g1t (url). Ask g1t reads this to answer questions about a workspace.

  • Authentication: Required. Send an access token as Authorization: Bearer.
  • MCP tool: workspace with action activity, and the same inputs
  • Scope: An access token needs repo:read.
Name Type Required Description
workspace string Yes The workspace’s slug, e.g. “flagon-io”.
Name Type Required Description
since string No RFC 3339: the start of the span, inclusive. The last 24 hours when left out; for “today”, midnight UTC.
until string No RFC 3339: the end of the span, exclusive. Now when left out.
kinds array of strings No What to read: merged (merged pull requests only), pulls, issues, releases, deployments, pushes, reviews, comments, packages, runs (workflow runs that finished). All but comments when left out. One of merged, pulls, issues, releases, deployments, pushes, reviews, comments, packages, runs.
limit integer No The most events to return, newest first: 100 unless you say, at most 200.
curl "https://api.g1t.sh/workspaces/flagon-io/activity?since=2026-10-12T00%3A00%3A00Z&kinds=merged%2Creleases%2Cdeployments" \
-H "Authorization: Bearer $G1T_TOKEN"

A successful request answers 200 with:

{
"workspace": "flagon-io",
"since": "2026-10-12T00:00:00Z",
"until": "2026-10-12T21:40:00Z",
"repositories": 4,
"summary": {
"merged_pull_requests": 1,
"releases": 1,
"production_deployments": 1,
"failed_deployments": 0,
"default_branch_pushes": 0,
"failed_runs": 0
},
"events": [
{
"kind": "deployment_succeeded",
"time": "2026-10-12T21:12:04Z",
"repo": "flagon-io/g1t",
"actor": "syntaqx",
"environment": "production",
"project": "g1t",
"branch": "main",
"commit": "75c6704f2b1a",
"url": "https://g1t.sh/flagon-io/g1t/deployments/dpl_01kkp3m8w2f6t9qh4c7d1r5n0x"
},
{
"kind": "release_published",
"time": "2026-10-12T19:30:51Z",
"repo": "flagon-io/runner",
"actor": "syntaqx",
"tag": "v0.3.3",
"title": "Runner 0.3.3",
"url": "https://g1t.sh/flagon-io/runner/releases/tag/v0.3.3"
},
{
"kind": "pull_merged",
"time": "2026-10-12T18:02:17Z",
"repo": "flagon-io/g1t",
"actor": "syntaqx",
"number": 412,
"title": "Ask g1t answers with the workspace's own AI provider",
"url": "https://g1t.sh/flagon-io/g1t/pull/412",
"issue": 398
}
],
"complete": true
}

A failed request answers with one of these statuses and a body like {"error": {"code": "not_found", "message": "Repository not found."}}. See errors.

Status Code When
401 unauthenticated A token is required, or the one sent is not valid.
403 forbidden The token is valid but not allowed to do this, such as a member-only change, or a token without the scope it needs.
404 not_found It does not exist, or you cannot see it.
422 invalid The input is not valid. message says which field and why.