Skip to content
repo-sdk
Esc
navigateopen⌘Jpreview
On this page

Capability matrix

The full per-provider RepoCapabilities reference.

A complete reference of the RepoCapabilities values for each provider — tag dates, repo search, owned filter, webhook events, webhook verification, and archive formats.

Every provider exposes this object as capabilities, also surfaced on client.capabilities. The client gates on these values and throws unsupported rather than silently dropping an option — see Capabilities.

Matrix

Capability Type GitHub GitLab Bitbucket Azure DevOps Gitea
userProfile boolean true (false under App auth) true true true true
tagDates boolean false true true false false
repoSearch boolean true true true false true
ownedRepoFilter boolean true true true false true
commitUserRef boolean true false true false true
refSearch boolean true true true true true
webhookEvents WebhookEventType[] push, tag_push, release push, tag_push, release push, tag_push push, tag_push push, tag_push, release
webhookVerification WebhookVerificationMethod hmac-sha256 shared-token hmac-sha256 basic-auth hmac-sha256
archiveFormats ArchiveFormat[] zip, tar.gz zip, tar.gz zip, tar.gz zip zip, tar.gz

What each field gates

PropType
userProfile?boolean

Whether users.me can resolve the authenticated user. False when the credential carries no user identity — e.g. GitHub App installation tokens.

Typeboolean
tagDates?boolean

Whether listed tags carry a date. When false, Tag.date is undefined (GitHub, Azure DevOps, Gitea).

Typeboolean
repoSearch?boolean

Whether repos.list accepts a free-text query. Passing query without it throws unsupported.

Typeboolean
ownedRepoFilter?boolean

Whether repos.list accepts owned: true. Passing it without support throws unsupported.

Typeboolean
commitUserRef?boolean

Whether commit actors can carry a resolved account (GitActor.user). When false, user is always undefined (GitLab, Azure DevOps).

Typeboolean
refSearch?boolean

Whether refs.search can prefix-match branch and tag names server-side. Calling it without support throws unsupported (all current providers support it).

Typeboolean
webhookEvents?WebhookEventType[]

The events webhooks.create / update accept. Any other event throws unsupported.

TypeWebhookEventType[]
webhookVerification?'hmac-sha256' | 'shared-token' | 'basic-auth'

How verifyWebhook checks an incoming delivery for this provider.

Type'hmac-sha256' | 'shared-token' | 'basic-auth'
archiveFormats?ArchiveFormat[]

The formats downloadArchive can return. Any other format throws unsupported.

TypeArchiveFormat[]

Reading capabilities at runtime

Because capabilities are plain data, you can branch on them before offering a feature:

if (client.capabilities.repoSearch) {
  const { data } = await client.repos.list({ query: userInput });
}

if (client.capabilities.webhookEvents.includes('release')) {
  // offer release webhooks in the UI
}

Provider support

The broader feature-by-provider matrix, including auth and self-hosting.

Was this page helpful?