Providers

Gitee

Use gitee.com through the Gitee Open API v5: issues, pull requests, notifications, releases and webhooks.

The Gitee provider covers gitee.com through the Gitee Open API v5. It reads and writes issues and pull requests. It also covers notifications, releases, repository contents, check runs and repository webhooks. The provider doesn't cover the enterprise edition (e.gitee.com).

DetailValue
Importforges/gitee
Factoriesgitee(), giteeLite()
Authtoken, anonymous
The Gitee provider is experimental. No recording of the live forge verifies it, so most of its capabilities are 'experimental'. See Capabilities.

Authentication

The provider accepts a personal access token or an OAuth access token. It sends the token in an Authorization: token <token> header, so the token doesn't appear in URLs:

import { gitee } from 'forges/gitee'

const forge = gitee({
  auth: { type: 'token', token: process.env.GITEE_TOKEN! },
}).create()

Without auth, the provider makes anonymous public reads.

Instance

The instance is gitee.com. baseUrl defaults to https://gitee.com, and the provider appends /api/v5.

Issue numbers and states

Issue numbers are alphanumeric, such as I8ABCD. Pull request numbers are integers.

A Gitee issue is open, progressing, closed or rejected. The provider maps these states as follows:

  • progressing issues are open, so a listing of open issues includes them.
  • rejected issues are closed, with stateReason: 'not_planned'.

Assignees and reviewers

On Gitee, the reviewers of a pull request are stored as its assignees. The provider reports them in thread.reviewers, and requestReview() sets them. An issue has a single assignee, so assigning more than one user rejects.

Merging

Gitee doesn't report which merge methods a repository allows, so merge() requires method. Without it, the call throws MergeMethodRequiredError. whenChecksPass is unavailable.

Reviews

Gitee records an approval, but it has no endpoint to read reviews. threads.reviews() is unavailable, and createReview() accepts the approve event only.

Latest release

The release that Gitee marks as latest can be a prerelease. releases.latest() returns the newest release that isn't a prerelease.

search.threads() searches issues only. A search with kind: 'pull_request' returns an empty page with a kind_unsupported warning.

Webhooks

Set webhookSecret to the hook's password or signing secret:

const forge = gitee({
  webhookSecret: process.env.GITEE_WEBHOOK_SECRET,
}).create()

const events = await forge.webhooks.ingest({
  headers: request.headers,
  body: await request.text(),
})

Gitee sends the password or the signature in X-Gitee-Token, and the provider accepts either one:

  • In password mode, X-Gitee-Token contains the password.
  • In signing mode, X-Gitee-Token contains the URL-encoded base64 HMAC-SHA256 of <X-Gitee-Timestamp>\n<secret>. The signature covers the timestamp but not the body. The provider rejects timestamps more than one hour from the current time.

Webhook management works on repositories only. Gitee has no delivery log, so webhooks.deliveries() and webhooks.redeliver() are unavailable.

Recording fixtures

GITEE_TOKEN=... FIXTURE_GITEE_REPO=owner/repo FIXTURE_GITEE_PULL=1 \
pnpm record-fixtures gitee

To add an issue, set FIXTURE_GITEE_ISSUE.

Capabilities

Generated by pnpm capability-matrix; do not edit by hand.

CapabilitySupport
experimental✅
sources.poll✅
sources.webhook✅
sources.subscribe❌
repos.get✅
users.getexperimental
repos.listexperimental
repos.labelsexperimental
repos.createLabelexperimental
repos.milestones❌
repos.collaboratorsexperimental
repos.permissionFor❌
repos.addCollaborator❌
repos.assignableUsers❌
repos.reviewerCandidates❌
threads.getissue (experimental), PR
threads.listissue (experimental), PR
threads.getMany✅
comments.listissue (experimental), PR
comments.editissue (experimental), PR (experimental)
comments.deleteissue (experimental), PR (experimental)
reactions.list❌
notifications.list✅
notifications.markRead✅
notifications.markDone❌
notifications.unsubscribe❌
notifications.markAllReadexperimental
notifications.markAllDone❌
notifications.unreadCountexperimental
writes.commentissue (experimental), PR
writes.upsertCommentissue (emulated), PR (emulated)
writes.closeissue, PR
writes.reopenissue (experimental), PR
writes.createissue (experimental), PR (experimental)
writes.updateissue (experimental), PR (experimental)
writes.setLabelsissue (experimental), PR (experimental)
writes.addLabelsissue (experimental), PR (experimental)
writes.removeLabelsissue (experimental), PR (experimental)
writes.setMilestone❌
writes.react❌
writes.setAssigneesissue (experimental)
writes.requestReviewPR (experimental)
writes.merge✅
writes.approveAndMerge✅
writes.transfer❌
writes.markDuplicate❌
subscriptions.get❌
subscriptions.set❌
installations❌
checks.threadPR
checks.listexperimental
checks.report❌
checks.rerun❌
ci.runs❌
ci.run❌
ci.jobs❌
ci.log❌
contents.fileexperimental
contents.treeexperimental
contents.branchesexperimental
contents.tagsexperimental
contents.resolveRefexperimental
contents.commitsexperimental
contents.commitexperimental
contents.compareexperimental
contents.threadFilesexperimental
contents.threadCommitsexperimental
reviews.list❌
reviews.createemulated
reviews.submit❌
reviews.approveemulated
reviews.resolveThread❌
releases.list✅
releases.get✅
releases.latest✅
releases.getByTagexperimental
releases.downloadAsset❌
webhooks.listexperimental
webhooks.createexperimental
webhooks.updateexperimental
webhooks.deleteexperimental
webhooks.rotateSecretexperimental
webhooks.deliveries❌
webhooks.redeliver❌
search.threadsexperimental
search.reposexperimental
search.commits❌
securityAlerts❌
eventKindsnative
authtoken, anonymous
limitsunknown
Copyright © 2026