---
title: "Pushin.eu"
description: "Use Pushin.eu, a European git host: repositories, issues, pull requests, reviews, labels, teams, notifications and releases."
canonical_url: "https://forgeslink-3mwmle35v-poetry.vercel.app/providers/pushin"
---
# Pushin.eu

> Use Pushin.eu, a European git host: repositories, issues, pull requests, reviews, labels, teams, notifications and releases.

The Pushin.eu provider works with [Pushin.eu](https://pushin.eu), a European Git host whose API is modelled on GitHub's. It can read repositories, labels, collaborators, teams, issues, pull requests, comments, reviews, notifications and releases. It can also create issues, pull requests, comments, labels and releases, add collaborators, reply to review comments, and resolve review threads. The [OpenAPI specification](https://pushin.eu/api/v1/openapi.json) of the API documents its endpoints.

<provider-header provider="pushin">
<table>
<thead>
  <tr>
    <th>
      Detail
    </th>
    
    <th>
      Value
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      Import
    </td>
    
    <td>
      <code>
        forges/pushin
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      Factories
    </td>
    
    <td>
      <code>
        pushin()
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      Auth
    </td>
    
    <td>
      <code>
        token
      </code>
      
      , <code>
        anonymous
      </code>
    </td>
  </tr>
</tbody>
</table>
</provider-header>

<note>

The Pushin.eu provider is experimental, because the Pushin.eu API is young and can still change. To learn what that means, see [Capabilities](https://forgeslink-3mwmle35v-poetry.vercel.app/concepts/capabilities).

</note>

## Authentication

The provider accepts a personal access token, which you create in your Pushin.eu settings. These tokens start with `pun_pat_` and aren't scoped to specific resources. The provider sends the token in an `Authorization: Bearer <token>` header:

```ts
import { pushin } from 'forges/pushin'

const forge = pushin({
  auth: { type: 'token', token: process.env.PUSHIN_TOKEN! },
})
```

If you leave out `auth`, the provider reads public repositories anonymously.

## Instance

The `baseUrl` defaults to `https://pushin.eu`, and the provider appends `/api/v1` itself.

## Issues and pull requests

`threads.get()` reads both issues and pull requests, and `threads.comments()` reads the comments on both. `threads.list()` lists both kinds by default. To select only one, set `kind: 'issue'` or `kind: 'pull_request'`.

`threads.create()` opens both kinds. A pull request needs `head` and `base`, and `labels` must name labels that already exist. The API doesn't set assignees on a new thread, so `threads.create()` rejects `assignees`. The API has no endpoints for editing, closing or reopening a thread, or for editing or deleting a comment, so the provider doesn't support them.

Listings use `Link` pagination, and they include rate-limit information from the headers of the response.

## Reviews

`threads.reviews()` and `threads.getReview()` read the reviews of a pull request, with their inline comments. A review thread's id is the id of its first comment, which is what `threads.resolveReviewThread()` and `threads.unresolveReviewThread()` take. Reviews are created and submitted in the web interface only, so `threads.createReview()` isn't available.

## Collaborators

The API grants `pull`, `push` and `admin` permissions only. `repos.addCollaborator()` grants `push` for `maintain` and `pull` for `triage`, and rejects `none`. The collaborator has access immediately, without an invitation.

## Notifications

`notifications.list()` reads the notifications of the authenticated account. Set `all: true` to include notifications that have been read, or `since` to filter by the time of the activity. The provider doesn't support changing notifications.

## Thread events

The API has no timeline, so the provider can't list the events of a thread directly. Instead, `threads.events()` is `'emulated'` from the comment listing, which means it returns comment events only.

## Labels

When the API supplies a six-digit hex colour for a label, `Label.colour` contains it. If the API uses a named colour such as `purple`, `Label.colour` stays unset.

## Accounts

The API only reads the authenticated account, so `users.get(login)` isn't available.

## Releases

Pushin.eu doesn't create tags for releases. `releases.create()` stores `target` on the release but doesn't tag that commit, so you need to push the tag before you publish a release. If the tag doesn't exist, the API rejects a published release, so you can only create a draft. `releases.update()` changes the stored `target` in the same way, without moving the tag.

`release.assets` only includes assets that have finished uploading. An asset that is still uploading has no download URL, so it is left out.

## Webhooks

The API has no endpoints for hooks and no documented signature scheme. For this reason, `capabilities.webhooks.ingest` is `'not_applicable'`, and the provider doesn't verify or translate deliveries.

## Capabilities

<provider-capabilities provider="pushin">
<table>
<thead>
  <tr>
    <th>
      Capability
    </th>
    
    <th>
      Support
    </th>
    
    <th>
      Without credentials
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        experimental
      </code>
    </td>
    
    <td>
      ✅
    </td>
    
    <td>
      ✅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        sources.stream
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        repos.get
      </code>
    </td>
    
    <td>
      ✅
    </td>
    
    <td>
      ✅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        users.get
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        users.me
      </code>
    </td>
    
    <td>
      ✅
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        users.sponsorable
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        users.events
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        users.block
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        repos.list
      </code>
    </td>
    
    <td>
      ✅
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        repos.byOwner
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        repos.labels
      </code>
    </td>
    
    <td>
      ✅
    </td>
    
    <td>
      ✅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        repos.createLabel
      </code>
    </td>
    
    <td>
      ✅
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        repos.milestones
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        repos.issueTypes
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        repos.collaborators
      </code>
    </td>
    
    <td>
      ✅
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        repos.contributors
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        repos.contributorStats
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        repos.templates
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        repos.permissionFor
      </code>
    </td>
    
    <td>
      ✅
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        repos.branchRules
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        repos.addCollaborator
      </code>
    </td>
    
    <td>
      ✅
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        repos.assignableUsers
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        repos.reviewerCandidates
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        repos.events
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        orgs.teams
      </code>
    </td>
    
    <td>
      ✅
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        orgs.teamMembers
      </code>
    </td>
    
    <td>
      ✅
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        orgs.block
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.get
      </code>
    </td>
    
    <td>
      issue, PR
    </td>
    
    <td>
      issue, PR
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.list
      </code>
    </td>
    
    <td>
      issue, PR
    </td>
    
    <td>
      issue, PR
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.getMany
      </code>
    </td>
    
    <td>
      ✅
    </td>
    
    <td>
      ✅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.closingIssues
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.closingPullRequests
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.events
      </code>
    </td>
    
    <td>
      issue (emulated), PR (emulated)
    </td>
    
    <td>
      issue (emulated), PR (emulated)
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.comments
      </code>
    </td>
    
    <td>
      issue, PR
    </td>
    
    <td>
      issue, PR
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.getComment
      </code>
    </td>
    
    <td>
      issue (emulated), PR (emulated)
    </td>
    
    <td>
      issue (emulated), PR (emulated)
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.createComment
      </code>
    </td>
    
    <td>
      issue, PR
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.updateComment
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.deleteComment
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.hideComment
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.reactions
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.react
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.create
      </code>
    </td>
    
    <td>
      issue, PR
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.update
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.close
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.reopen
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.lock
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.setLabels
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.addLabels
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.removeLabels
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.setMilestone
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.setIssueType
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.setAssignees
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.requestReview
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.merge
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.updateBranch
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.transfer
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.markDuplicate
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.subscription
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.subscribe
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.checks
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.files
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.commits
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.reviews
      </code>
    </td>
    
    <td>
      ✅
    </td>
    
    <td>
      ✅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.getReview
      </code>
    </td>
    
    <td>
      ✅
    </td>
    
    <td>
      ✅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.createReview
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.submitReview
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.approve
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.replyToReviewComment
      </code>
    </td>
    
    <td>
      ✅
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.reviewThreads
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        threads.resolveReviewThread
      </code>
    </td>
    
    <td>
      ✅
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        notifications.list
      </code>
    </td>
    
    <td>
      ✅
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        notifications.markRead
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        notifications.markDone
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        notifications.unsubscribe
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        notifications.markAllRead
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        notifications.markAllDone
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        notifications.unreadCount
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        installations.list
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        checks.list
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        checks.get
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        checks.report
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        checks.rerun
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        ci.runs
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        ci.getRun
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        ci.jobs
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        ci.getJob
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        ci.log
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        ci.rerunFailed
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        contents.getFile
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        contents.tree
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        contents.branches
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        contents.tags
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        contents.resolveRef
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        contents.compare
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        contents.commitFiles
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        commits.list
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        commits.get
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        commits.comments
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        commits.getComment
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        commits.createComment
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        commits.updateComment
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        commits.deleteComment
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        commits.hideComment
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        releases.list
      </code>
    </td>
    
    <td>
      ✅
    </td>
    
    <td>
      ✅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        releases.get
      </code>
    </td>
    
    <td>
      ✅
    </td>
    
    <td>
      ✅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        releases.latest
      </code>
    </td>
    
    <td>
      ✅
    </td>
    
    <td>
      ✅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        releases.getByTag
      </code>
    </td>
    
    <td>
      ✅
    </td>
    
    <td>
      ✅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        releases.downloadAsset
      </code>
    </td>
    
    <td>
      ✅
    </td>
    
    <td>
      ✅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        releases.create
      </code>
    </td>
    
    <td>
      ✅
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        releases.update
      </code>
    </td>
    
    <td>
      ✅
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        webhooks.ingest
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        webhooks.list
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        webhooks.create
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        webhooks.update
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        webhooks.delete
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        webhooks.rotateSecret
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        webhooks.deliveries
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        webhooks.redeliver
      </code>
    </td>
    
    <td>
      ∅
    </td>
    
    <td>
      ∅
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        search.threads
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        search.repos
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        search.commits
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        search.code
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        securityAlerts.list
      </code>
    </td>
    
    <td>
      ❌
    </td>
    
    <td>
      ❌
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        eventKinds
      </code>
    </td>
    
    <td>
      native
    </td>
    
    <td>
      native
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        authKinds
      </code>
    </td>
    
    <td>
      <code>
        token
      </code>
      
      , <code>
        anonymous
      </code>
    </td>
    
    <td>
      <code>
        token
      </code>
      
      , <code>
        anonymous
      </code>
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        limits
      </code>
    </td>
    
    <td>
      unknown
    </td>
    
    <td>
      unknown
    </td>
  </tr>
</tbody>
</table>
</provider-capabilities>


## Sitemap

See the full [sitemap](https://forgeslink-3mwmle35v-poetry.vercel.app/sitemap.md) for all pages.
