Skip to content

Choose which repositories to mirror

PATCH
/v1/github/repositories
curl --request PATCH \
--url https://api.pealboard.com/v1/github/repositories \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "enable": [], "disable": [] }'

Turns sync on or off per repository. Turning it on queues a backfill of that repository’s labels, milestones, issues and comments; a repository already being walked is not walked twice. Turning it off stops future updates and leaves what is already cached, so a screen that was working does not empty.

The first time repositories are enabled, a workspace with no default repository is given one — the suggestion GET /v1/github/default-repository/suggestion would have made, which is a repository named issues, roadmap, product, planning, tracker or support before anything else. Nothing is chosen when none of them is, because the cache is still empty at that moment and the second rule has nothing to count. It is recorded in the issue-less activity feed and can be changed at any time with PATCH /v1/workspace.

Turning sync off for the default repository clears the default, on the workspace and on every portal that named it. A default is checked to be a synced repository when it is set, and one that quietly stopped being synced would create issues Pealboard never showed again.

Access. Requires the admin role or above (admin, owner). Enabling a repository starts a walk of its whole history and puts its issues in front of every member. API-key scope: github:write.

Billing. Refused with 402 while the workspace’s billing has lapsed. Reads continue and nothing is deleted.

Media typeapplication/json
object
enable
Array<string>
default:
disable
Array<string>
default:

The repositories, after the change.

Media typeapplication/json
object
data
required
Array<object>
object
id
required

A UUID this API issued.

string format: uuid
githubId
required
number
nodeId
required
string
ownerLogin
required
string
name
required
string
fullName
required
string
private
required
boolean
archived
required
boolean
htmlUrl
required
string format: uri
syncEnabled
required

Whether Pealboard mirrors this repository’s issues. Off until a member turns it on.

boolean
removed
required

True when the installation no longer has access to it.

boolean
syncedAt
required
string | null format: date-time
queued
required

Backfill jobs started.

Array<string>
Examplegenerated
{
"data": [
{
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"githubId": 1,
"nodeId": "example",
"ownerLogin": "example",
"name": "example",
"fullName": "example",
"private": true,
"archived": true,
"htmlUrl": "https://example.com",
"syncEnabled": true,
"removed": true,
"syncedAt": "2026-04-15T12:00:00Z"
}
],
"queued": [
"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"
]
}

No valid credentials.

Media typeapplication/json
object
error
required
object
code
required

A stable identifier for the kind of failure. Safe to branch on.

string
message
required

What went wrong, written for a person.

string
detail

Structured particulars, when there are any.

object
key
additional properties
remedy

What to do about it, when there is something to do.

string
requestId
required

Quote this when asking about a specific failure.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"detail": {
"additionalProperty": "example"
},
"remedy": "example",
"requestId": "example"
}
}

The workspace’s billing has lapsed, so writes are refused.

Media typeapplication/json
object
error
required
object
code
required

A stable identifier for the kind of failure. Safe to branch on.

string
message
required

What went wrong, written for a person.

string
detail

Structured particulars, when there are any.

object
key
additional properties
remedy

What to do about it, when there is something to do.

string
requestId
required

Quote this when asking about a specific failure.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"detail": {
"additionalProperty": "example"
},
"remedy": "example",
"requestId": "example"
}
}

Authenticated, but not permitted.

Media typeapplication/json
object
error
required
object
code
required

A stable identifier for the kind of failure. Safe to branch on.

string
message
required

What went wrong, written for a person.

string
detail

Structured particulars, when there are any.

object
key
additional properties
remedy

What to do about it, when there is something to do.

string
requestId
required

Quote this when asking about a specific failure.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"detail": {
"additionalProperty": "example"
},
"remedy": "example",
"requestId": "example"
}
}

No such resource, or it is not visible to you.

Media typeapplication/json
object
error
required
object
code
required

A stable identifier for the kind of failure. Safe to branch on.

string
message
required

What went wrong, written for a person.

string
detail

Structured particulars, when there are any.

object
key
additional properties
remedy

What to do about it, when there is something to do.

string
requestId
required

Quote this when asking about a specific failure.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"detail": {
"additionalProperty": "example"
},
"remedy": "example",
"requestId": "example"
}
}

The request conflicts with the current state.

Media typeapplication/json
object
error
required
object
code
required

A stable identifier for the kind of failure. Safe to branch on.

string
message
required

What went wrong, written for a person.

string
detail

Structured particulars, when there are any.

object
key
additional properties
remedy

What to do about it, when there is something to do.

string
requestId
required

Quote this when asking about a specific failure.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"detail": {
"additionalProperty": "example"
},
"remedy": "example",
"requestId": "example"
}
}

The request did not match the expected shape.

Media typeapplication/json
object
error
required
object
code
required

A stable identifier for the kind of failure. Safe to branch on.

string
message
required

What went wrong, written for a person.

string
detail

Structured particulars, when there are any.

object
key
additional properties
remedy

What to do about it, when there is something to do.

string
requestId
required

Quote this when asking about a specific failure.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"detail": {
"additionalProperty": "example"
},
"remedy": "example",
"requestId": "example"
}
}

Rate limited. Retry after the interval in the header.

Media typeapplication/json
object
error
required
object
code
required

A stable identifier for the kind of failure. Safe to branch on.

string
message
required

What went wrong, written for a person.

string
detail

Structured particulars, when there are any.

object
key
additional properties
remedy

What to do about it, when there is something to do.

string
requestId
required

Quote this when asking about a specific failure.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"detail": {
"additionalProperty": "example"
},
"remedy": "example",
"requestId": "example"
}
}

GitHub or another dependency refused or did not answer. Nothing in the workspace changed.

Media typeapplication/json
object
error
required
object
code
required

A stable identifier for the kind of failure. Safe to branch on.

string
message
required

What went wrong, written for a person.

string
detail

Structured particulars, when there are any.

object
key
additional properties
remedy

What to do about it, when there is something to do.

string
requestId
required

Quote this when asking about a specific failure.

string
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"detail": {
"additionalProperty": "example"
},
"remedy": "example",
"requestId": "example"
}
}