GitHub Reference
Supported GitHub objects
At the moment, we support the following GitHub objects:
Collection Name | Read | Write |
---|---|---|
Repositories | ✅ | 🛠️ Ask us |
Pull Requests | ✅ | 🛠️ Ask us |
Commits | ✅ | 🛠️ Ask us |
Issues | ✅ | ✅ |
Releases | ✅ | 🛠️ Ask us |
Comments | 🛠️ Ask us | 🛠️ Ask us |
Discussions | 🛠️ Ask us | 🛠️ Ask us |
Labels | 🛠️ Ask us | 🛠️ Ask us |
Reactions | 🛠️ Ask us | 🛠️ Ask us |
Refs (branches/tags) | 🛠️ Ask us | 🛠️ Ask us |
Users | 🛠️ Ask us | 🛠️ Ask us |
🛠️ Want a GitHub object we’re not syncing? We can add it fast. Send us a note.
Setup & installation
To connect Sequin to your GitHub data, in our setup flow you’ll install Sequin’s GitHub app. You’ll install the app to either a GitHub user (i.e. your user) or to a GitHub organization:
During installation, GitHub will prompt you which repositories to share with Sequin. Sequin will sync whichever repositories you choose as well as the related objects (e.g. Pull Requests and Commits) for those objects.
If you want to sync data from multiple users or organizations, you’ll setup separate installations and syncs for each user or organization.
Managing the installation
You can change the list of repositories that Sequin has access to at any time. Find the Sequin GitHub installation on your GitHub installation page. Note that after granting Sequin access to a new repository, you’ll need to kick-off a backfill for your sync in the Sequin console. This will backfill historical data for the newly-selected repositories and associated objects to your database.
Installation permission errors
If you’re trying to install Sequin’s GitHub app into an organization but don’t have permission to do so, you’ll get this error:
You can try again with a narrower scope by selecting only the repositories your GitHub user is allowed to grant access to.
Or, you can ask your account admin to install the app for you. GitHub will send an email to your organization’s admins, asking for permission to install Sequin. You can notify your admin about the install and they can grant access to Sequin with a couple button clicks.
Once they grant access, you’ll return to Sequin and re-connect GitHub. This time, you should be able to sail through the connection process.
See our step-by-step setup guide for GitHub.
The syncing process
We first backfill your database with all your GitHub data. The time for the backfill depends on the size of your GitHub account. Unless your GitHub account has over a million records, the backfill should complete in under an hour. Smaller accounts complete in just a few minutes. We’ll email you when your backfill is complete and all your data is loaded into your database.
Sequin’s GitHub application is given a dedicated API rate limit quota, meaning that Sequin’s requests will not affect any other apps or services you have connected to your account.
After the initial backfill, we’ll rely on GitHub’s webhooks to monitor changes. We backstop the webhooks with an occasional polling process to ensure we don’t miss any events. This means changes on GitHub should propagate to your database in just a few seconds.
Learn more about our syncing process.
Writes
The Sequin Postgres Proxy
At the moment, Sequin supports writes for GitHub Issues.
To create, update, or delete objects in GitHub, you can insert
, update
, or delete
rows in your Postgres database.
When you’re connected to your database through the Sequin Proxy, the Proxy listens for changes. When you make a mutation, the Proxy applies the mutation to GitHub’s API first. If the mutation succeeds, your database is updated as well. If it fails, your database mutation will be rolled back, and you’ll receive a Postgres error.
Data flows from GitHub to your Postgres database. Your code or SQL client then reads from the database. To mutate your data, you update records in your database. Those mutations are applied to GitHub then to your database.
With this architecture, GitHub remains the source of truth and your database never gets out-of-sync.
How updates via the Proxy work
The Postgres Proxy forwards changes to GitHub’s API before applying them to your database.
The order of operations is therefore expressed in the following example, sequentially:
- You make an
insert
to create a new entry in the “Issues” table on GitHub. - The Sequin Proxy forwards the request to GitHub.
- GitHub responds with a
200
. The body contains the new issue. - The Sequin Proxy writes the new issue to the
issue
table in your Sequin database. - Your Postgres client returns successfully.
IDs
GitHub objects have two IDs. One is used for making calls to GitHub’s REST API and the other is for making calls to their GraphQL API.
In your database, the id
column and all foreign key columns (e.g. the repository_id
column in the pull_request
table) will be the REST IDs, which are integers. The GraphQL IDs, which are strings, are also included in the node_id
column.