Supported GitHub objects

At the moment, we support the following GitHub objects:

Collection NameReadWrite
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:

Your GitHub user does not have permission to install the sequin-io GitHub app into
this organization with the repositories you've selected.

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.

Learn more about writes.

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:

  1. You make an insert to create a new entry in the “Issues” table on GitHub.
  2. The Sequin Proxy forwards the request to GitHub.
  3. GitHub responds with a 200. The body contains the new issue.
  4. The Sequin Proxy writes the new issue to the issue table in your Sequin database.
  5. 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.