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
userProfile?boolean
Whether users.me can resolve the authenticated user. False when the credential carries no user identity — e.g. GitHub App installation tokens.
booleantagDates?boolean
Whether listed tags carry a date. When false, Tag.date is undefined (GitHub, Azure DevOps, Gitea).
booleanrepoSearch?boolean
Whether repos.list accepts a free-text query. Passing query without it throws unsupported.
booleanownedRepoFilter?boolean
Whether repos.list accepts owned: true. Passing it without support throws unsupported.
booleancommitUserRef?boolean
Whether commit actors can carry a resolved account (GitActor.user). When false, user is always undefined (GitLab, Azure DevOps).
booleanrefSearch?boolean
Whether refs.search can prefix-match branch and tag names server-side. Calling it without support throws unsupported (all current providers support it).
booleanwebhookEvents?WebhookEventType[]
The events webhooks.create / update accept. Any other event throws unsupported.
WebhookEventType[]webhookVerification?'hmac-sha256' | 'shared-token' | 'basic-auth'
How verifyWebhook checks an incoming delivery for this provider.
'hmac-sha256' | 'shared-token' | 'basic-auth'archiveFormats?ArchiveFormat[]
The formats downloadArchive can return. Any other format throws unsupported.
ArchiveFormat[]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.