Graphite Insights
Graphite Insights tracks team engineering velocity (PR throughput, review latency, and related stats) over indexed repositories, surfaced in the Graphite web app. No public analytics API is documented.
Graphite Insights tracks team engineering velocity (PR throughput, review latency, and related stats) over indexed repositories, surfaced in the Graphite web app. No public analytics API is documented.
openapi: 3.0.1
info:
title: Graphite Platform
description: >-
Graphite does not publish a standalone public REST API. Graphite is built on
top of GitHub: it installs as a GitHub App (graphite-app) that consumes GitHub
webhooks and calls GitHub's APIs with short-lived tokens, and it is driven by
the gt CLI which authenticates with a Graphite auth token. This OpenAPI models
the real, observable surface area as logical operations: the GitHub App
install entry point and the documented gt CLI stacked-PR workflow operations.
Endpoint paths for CLI operations are illustrative of the platform actions the
CLI performs and are not a documented public HTTP contract.
termsOfService: https://graphite.dev/terms
contact:
name: Graphite Support
url: https://graphite.com/docs/feature-requests-bugs
version: '1.0'
servers:
- url: https://app.graphite.dev
description: Graphite hosted platform (driven by the gt CLI and web app)
- url: https://github.com
description: GitHub App install and marketplace entry points (GitHub-mediated)
tags:
- name: GitHub App
description: GitHub App install and webhook integration entry points.
- name: Authentication
description: Graphite CLI authentication with a Graphite auth token.
- name: Stacks
description: Create, submit, sync, and merge stacked pull requests via the gt CLI.
- name: Merge Queue
description: Graphite merge queue actions.
paths:
/apps/graphite-app:
get:
operationId: installGitHubApp
tags:
- GitHub App
summary: Install the Graphite GitHub App
description: >-
Entry point to install the Graphite GitHub App on an organization. The
installed app receives GitHub webhooks for CI status, mergeability, and
push events and calls GitHub's APIs with fine-grained permissions and
short-lived tokens. Served by GitHub, not by Graphite.
responses:
'200':
description: GitHub App installation page.
/marketplace/graphite-dev:
get:
operationId: getMarketplaceListing
tags:
- GitHub App
summary: Graphite GitHub Marketplace listing
description: >-
The Graphite listing on the GitHub Marketplace, from which an
organization owner can install the app. Served by GitHub.
responses:
'200':
description: GitHub Marketplace listing page.
/auth:
post:
operationId: authenticateCli
tags:
- Authentication
summary: Authenticate the gt CLI
description: >-
Logical representation of `gt auth`, which registers a Graphite auth
token so the CLI can create and update pull requests on the user's
behalf. The token is obtained from the Graphite web app.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AuthRequest'
responses:
'200':
description: CLI authenticated.
content:
application/json:
schema:
$ref: '#/components/schemas/AuthResult'
'401':
description: Invalid or expired auth token.
/stacks/branches:
post:
operationId: createBranch
tags:
- Stacks
summary: Create a stacked branch
description: >-
Logical representation of `gt create`: create a new branch stacked on
the current branch with committed changes.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateBranchRequest'
responses:
'201':
description: Stacked branch created.
content:
application/json:
schema:
$ref: '#/components/schemas/Branch'
/stacks/submit:
post:
operationId: submitStack
tags:
- Stacks
summary: Submit a stack to GitHub
description: >-
Logical representation of `gt submit`: push stacked branches to GitHub
and create or update their pull requests.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SubmitRequest'
responses:
'200':
description: Pull requests created or updated.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PullRequest'
/stacks/sync:
post:
operationId: syncStack
tags:
- Stacks
summary: Sync branches with remote
description: >-
Logical representation of `gt sync`: pull from remote, delete merged
PRs, and restack local branches.
responses:
'200':
description: Local stack synced with remote.
content:
application/json:
schema:
$ref: '#/components/schemas/SyncResult'
/stacks/merge:
post:
operationId: mergeStack
tags:
- Merge Queue
summary: Merge a stack of pull requests
description: >-
Logical representation of `gt merge`: merge pull requests from trunk
through the current branch via Graphite, optionally through the merge
queue.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/MergeRequest'
responses:
'200':
description: Stack merged or enqueued in the merge queue.
content:
application/json:
schema:
$ref: '#/components/schemas/MergeResult'
components:
securitySchemes:
graphiteAuthToken:
type: http
scheme: bearer
description: >-
Graphite auth token registered via `gt auth`, used by the CLI to act on
the user's behalf.
schemas:
AuthRequest:
type: object
properties:
token:
type: string
description: Graphite auth token copied from the web app.
required:
- token
AuthResult:
type: object
properties:
authenticated:
type: boolean
user:
type: string
Branch:
type: object
properties:
name:
type: string
parent:
type: string
description: Parent branch in the stack.
trunk:
type: boolean
CreateBranchRequest:
type: object
properties:
name:
type: string
message:
type: string
description: Commit message for the new branch.
all:
type: boolean
description: Stage all changes before committing.
required:
- name
SubmitRequest:
type: object
properties:
stack:
type: boolean
description: Submit the entire stack rather than only the current branch.
draft:
type: boolean
publish:
type: boolean
PullRequest:
type: object
properties:
number:
type: integer
title:
type: string
branch:
type: string
url:
type: string
format: uri
state:
type: string
enum:
- draft
- open
- merged
- closed
SyncResult:
type: object
properties:
restacked:
type: array
items:
type: string
deleted:
type: array
items:
type: string
MergeRequest:
type: object
properties:
useMergeQueue:
type: boolean
description: Route the merge through the Graphite merge queue.
MergeResult:
type: object
properties:
merged:
type: array
items:
type: string
enqueued:
type: boolean
security:
- graphiteAuthToken: []