# Erste Schritte mit der REST-API

Erfahren Sie, wie Sie die GitHub REST-API verwenden.

## Einführung

In diesem Artikel wird beschrieben, wie Sie die GitHub REST-API mit GitHub CLI, `curl`oder JavaScript verwenden. Für eine Schnellstartanleitung siehe [Schnellstart für GitHub REST-API](/de/enterprise-server@3.22/rest/quickstart).

<div class="ghd-tool curl">

</div>

## Informationen zu Anforderungen an die REST-API

In diesem Abschnitt werden die Elemente beschrieben, aus denen eine API-Anforderung besteht:

* [HTTP-Methode](#http-method)
* [Pfad](#path)
* [Kopfzeilen](#headers)
* [Medientypen](#media-types)
* [Authentifizierung](#authentication)
* [Parameter](#parameters)

Jede Anforderung an die REST-API enthält eine HTTP-Methode und einen Pfad. Je nach REST-API-Endpunkt müssen Sie möglicherweise auch Anforderungsheader, Authentifizierungsinformationen, Abfrageparameter oder Textparameter angeben.

Die REST-API-Referenzdokumentation beschreibt die HTTP-Methode, den Pfad und die Parameter für jeden Endpunkt. Außerdem werden für jeden Endpunkt Beispielanforderungen und -antworten bereitgestellt. Weitere Informationen finden Sie in der [REST-Referenzdokumentation](/de/enterprise-server@3.22/rest).

### HTTP-Methode

Die HTTP-Methode eines Endpunkts definiert den Typ der Aktion, die er für eine bestimmte Ressource ausführt. Einige gängige HTTP-Methoden sind `GET`, `POST`, `DELETE` und `PATCH`. Die REST-API-Referenzdokumentation stellt die HTTP-Methode für jeden Endpunkt bereit.

Die HTTP-Methode für den [Endpunkt „Repositoryprobleme auflisten“](/de/enterprise-server@3.22/rest/issues/issues#list-repository-issues) lautet z. B. `GET`.“

Wenn möglich, ist die GitHub REST-API bestrebt, für jede Aktion eine entsprechende HTTP-Methode zu verwenden.

* `GET`: Wird zum Abrufen von Ressourcen verwendet.
* `POST`: Wird zum Erstellen von Ressourcen verwendet.
* `PATCH`: Wird zum Aktualisieren von Eigenschaften von Ressourcen verwendet.
* `PUT`: Wird zum Ersetzen von Ressourcen oder Sammlungen von Ressourcen verwendet.
* `DELETE`: Wird zum Löschen von Ressourcen verwendet.

### Pfad

Jeder Endpunkt hat einen Pfad. Die REST-API-Referenzdokumentation gibt den Pfad für jeden Endpunkt an. Der Pfad zum [Endpunkt „Repositoryprobleme auflisten“](/de/enterprise-server@3.22/rest/issues/issues#list-repository-issues) lautet beispielsweise `/repos/{owner}/{repo}/issues`.

Die geschweiften Klammern `{}` in einem Pfad bezeichnen Pfadparameter, die Sie angeben müssen. Pfadparameter ändern den Endpunktpfad und sind in Ihrer Anforderung erforderlich. Die Pfadparameter zum [Endpunkt „Repositoryprobleme auflisten“](/de/enterprise-server@3.22/rest/issues/issues#list-repository-issues) lauten beispielsweise `{owner}` und `{repo}`. Wenn Sie diesen Pfad in Ihrer API-Anforderung verwenden möchten, ersetzen Sie `{repo}` mit dem Namen des Repositorys, für das Sie eine Liste von Issues anfordern möchten, und ersetzen Sie `{owner}` mit dem Namen des Kontos, das das Repository besitzt.

### Header

Header enthalten zusätzliche Informationen zur Anforderung und zur gewünschten Antwort. Im Folgenden finden Sie einige Beispiele für Header, die Sie in Ihren Anforderungen an die GitHub REST-API verwenden können. Ein Beispiel für eine Anforderung, die Header verwendet, findest du unter [Erstellen einer Anforderung](#making-a-request).

#### `Accept`

Die meisten GitHub REST-API-Endpunkte geben an, dass Sie einen `Accept` Header mit einem Wert von `application/vnd.github+json`übergeben sollten. Der Wert des `Accept`-Headers ist ein Medientyp. Weitere Informationen zu Medientypen findest du unter [Medientypen](#media-types).

#### `X-GitHub-Api-Version`

Sie sollten diesen Header verwenden, um eine Version der REST-API anzugeben, die für Ihre Anforderung verwendet werden soll. Weitere Informationen finden Sie unter [API-Versionen](/de/enterprise-server@3.22/rest/about-the-rest-api/api-versions).

<!-- Anchor to maintain links to this heading -->

<a name="media-types"></a>

### Medientypen

Sie können einen oder mehrere Medientypen angeben, indem Sie sie dem `Accept`-Header Ihrer Anforderung hinzufügen. Weitere Informationen zum `Accept`-Header findest du unter [`Accept`](#accept).

Medientypen geben das Format der Daten an, die Sie von der API verbrauchen möchten. Medientypen sind ressourcenspezifisch, sodass sie unabhängig voneinander geändert werden können und Formate unterstützen, die von anderen Ressourcen nicht unterstützt werden. In der Dokumentation für jeden GitHub REST-API-Endpunkt werden die von ihr unterstützten Medientypen beschrieben. Weitere Informationen findest du unter [GitHub REST-API-Dokumentation](/de/enterprise-server@3.22/rest).

Die gängigsten Medientypen, die von der GitHub REST-API unterstützt werden, sind `application/vnd.github+json` und `application/json`.

Es gibt benutzerdefinierte Medientypen, die mit einigen Endpunkten verwendet werden können. Zum Beispiel unterstützt die REST-API zum Verwalten von [Commits](/de/enterprise-server@3.22/rest/commits/commits#get-a-commit) und [Pull Requests](/de/enterprise-server@3.22/rest/pulls/pulls) die Medientypen `diff`, `patch` und `sha`. Die Medientypen `full`, `raw`, `text`, oder `html` werden von einigen anderen Endpunkten verwendet.

Alle benutzerdefinierten Medientypen für GitHub sehen wie folgt aus: `application/vnd.github.PARAM+json`, wo `PARAM` der Name des Medientyps ist. Um z. B. den Medientyp `raw` anzugeben, würden Sie beispielsweise `application/vnd.github.raw+json` verwenden.

Ein Beispiel für eine Anforderung, die Medientypen verwendet, findest du unter [Erstellen einer Anforderung](#making-a-request).

### Authentifizierung

Viele Endpunkte erfordern die Authentifizierung oder senden im Fall einer Authentifizierung zusätzliche Informationen zurück. Darüber hinaus können Sie mehr Anforderungen pro Stunde stellen, wenn Sie authentifiziert sind.

<div class="ghd-tool curl">

Um Ihre Anforderung zu authentifizieren, müssen Sie ein Authentifizierungstoken mit den erforderlichen Bereichen oder Berechtigungen bereitstellen. Es gibt verschiedene Möglichkeiten zum Abrufen eines Tokens: Sie können ein personal access tokenToken erstellen, ein Token mit einem GitHub App generieren oder den integrierten `GITHUB_TOKEN`GitHub Actions Workflow verwenden. Weitere Informationen finden Sie unter [Authentifizieren bei der REST-API](/de/enterprise-server@3.22/rest/authentication/authenticating-to-the-rest-api).

Ein Beispiel für eine Anforderung, die ein Authentifizierungstoken verwendet, findest du unter [Erstellen einer Anforderung](#making-a-request).

> \[!NOTE]
> Wenn Sie kein Token erstellen möchten, können Sie es verwenden GitHub CLI.
> GitHub CLI kümmert sich um die Authentifizierung für Sie und hilft Ihnen, Ihr Konto sicher zu halten. Weitere Informationen finden Sie in der [GitHub CLI Version dieser Seite](/de/enterprise-server@3.22/rest/using-the-rest-api/getting-started-with-the-rest-api?tool=cli).

> \[!WARNING]
> Behandle dein Zugriffstoken auf die gleiche Weise wie deine Kennwörter oder andere vertrauliche Anmeldeinformationen. Weitere Informationen finden Sie unter [Schützen deiner API-Anmeldeinformationen](/de/enterprise-server@3.22/rest/authentication/keeping-your-api-credentials-secure).

</div>

<div class="ghd-tool cli">

Obwohl auf einige REST-API-Endpunkte ohne Authentifizierung zugegriffen werden kann, müssen Sie sich authentifizieren, GitHub CLI bevor Sie den `api` Unterbefehl verwenden können, um eine API-Anforderung zu stellen. Verwenden Sie den `auth login` Unterbefehl, um sich bei GitHub zu authentifizieren. Weitere Informationen findest du unter [Eine Anforderung stellen](#making-a-request).

</div>

<div class="ghd-tool javascript">

Um Ihre Anforderung zu authentifizieren, müssen Sie ein Authentifizierungstoken mit den erforderlichen Bereichen oder Berechtigungen bereitstellen. Es gibt verschiedene Möglichkeiten zum Abrufen eines Tokens: Sie können ein personal access tokenToken erstellen, ein Token mit einem GitHub App generieren oder den integrierten `GITHUB_TOKEN`GitHub Actions Workflow verwenden. Weitere Informationen finden Sie unter [Authentifizieren bei der REST-API](/de/enterprise-server@3.22/rest/authentication/authenticating-to-the-rest-api).

Ein Beispiel für eine Anforderung, die ein Authentifizierungstoken verwendet, findest du unter [Erstellen einer Anforderung](#making-a-request).

> \[!WARNING]
> Behandle dein Zugriffstoken auf die gleiche Weise wie deine Kennwörter oder andere vertrauliche Anmeldeinformationen. Weitere Informationen finden Sie unter [Schützen deiner API-Anmeldeinformationen](/de/enterprise-server@3.22/rest/authentication/keeping-your-api-credentials-secure).

</div>

### Parameter

Viele API-Methoden erfordern oder ermöglichen es Ihnen, zusätzliche Informationen in Parametern in Ihren Anforderung zu senden. Es gibt verschiedene Typen von Parametern: Pfadparameter, Textparameter und Abfrageparameter.

#### Pfadparameter

Pfadparameter ändern den Endpunktspfad. Diese Parameter sind für Ihre Anforderung erforderlich. Weitere Informationen finden Sie unter [Path](#path).

#### Körperparameter

Textparameter ermöglichen es dir, zusätzliche Daten an die API zu übergeben. Diese Parameter können je nach Endpunkt optional oder erforderlich sein. Ein Textparameter kann es Ihnen z. B. ermöglichen, beim Erstellen eines neuen Issues einen Issue-Titel anzugeben oder bestimmte Einstellungen beim Aktivieren oder Deaktivieren eines Features anzugeben. In der Dokumentation für jeden GitHub REST-API-Endpunkt werden die von ihm unterstützten Body-Parameter beschrieben. Weitere Informationen findest du unter [GitHub REST-API-Dokumentation](/de/enterprise-server@3.22/rest).

Beim „Erstellen eines Issues“-Endpunkt müssen Sie zum Beispiel in Ihrer Anforderung einen Titel für das neue Issue angeben. Darüber hinaus können Sie optional andere Informationen angeben, z. B. Text, der in den Issue-Text eingefügt werden soll, Benutzer\*innen, die dem neuen Issue zugewiesen werden sollen, oder Bezeichnungen, die auf den neuen Issue angewendet werden sollen. Ein Beispiel für eine Anforderung, die Textparameter verwendet, findest du unter [Erstellen einer Anforderung](#making-a-request).

Sie müssen Ihre Anforderung authentifizieren, um Textparameter weiterzugeben. Weitere Informationen finden Sie unter [Authentifizierung](#authentication).

#### Abfrageparameter

Mithilfe von Abfrageparametern kannst du steuern, welche Daten für eine Anforderung zurückgegeben werden. Diese Parameter sind üblicherweise optional. In der Dokumentation für jeden GitHub REST-API-Endpunkt werden alle von ihr unterstützten Abfrageparameter beschrieben. Weitere Informationen findest du unter [GitHub REST-API-Dokumentation](/de/enterprise-server@3.22/rest).

Beispielsweise gibt der [Endpunkt „Öffentliche Ereignisse auflisten“](/de/enterprise-server@3.22/rest/activity/events#list-public-events) standardmäßig dreißig Issues zurück. Sie können mit dem Abfrageparameter `per_page` angeben, dass anstelle von 30 Issues zwei Issues zurückgegeben werden. Sie können den Abfrageparameter `page` verwenden, um nur die erste Seite der Ergebnisse abzurufen. Ein Beispiel für eine Anforderung, die Abfrageparameter verwendet, findest du unter [Erstellen einer Anforderung](#making-a-request).

## Erstellen einer Anforderung

<div class="ghd-tool cli">

In diesem Abschnitt wird gezeigt, wie Sie eine authentifizierte Anforderung an die REST-API mithilfe von GitHubGitHub CLI stellen.

### 1. Einrichten

Installieren Sie GitHub CLI unter macOS, Windows oder Linux. Weitere Informationen finden Sie unter [Installation](https://github.com/cli/cli#installation) im GitHub CLI Repository.

### 2. Authentifizieren

1. Um sich bei GitHub zu authentifizieren, führen Sie den folgenden Befehl in Ihrem Terminal aus.

   ```shell
   gh auth login
   ```

   Mit der Option `--scopes` können Sie angeben, was für Bereiche Sie auswählen möchten. Wenn Sie sich mit einem von Ihnen erstellten Token authentifizieren möchten, können Sie die Option `--with-token` verwenden. Weitere Informationen finden Sie in der [GitHub CLI`auth login` Dokumentation](https://cli.github.com/manual/gh_auth_login).

2. Wähle aus, wo du dich authentifizieren möchtest:

   * Wenn Sie auf GitHub bei GitHub.com zugreifen, wählen Sie **GitHub.com** aus.
   * Wenn Sie auf eine andere Domäne zugreifen GitHub , wählen Sie **"Sonstige**" aus, und geben Sie dann Ihren Hostnamen ein (z. B.: `octocorp.ghe.com`).

3. Befolge die restlichen Anweisungen auf dem Bildschirm.

GitHub CLI Speichert Ihre Git-Anmeldeinformationen automatisch für Sie, wenn Sie HTTPS als bevorzugtes Protokoll für Git-Vorgänge auswählen und "Ja" beantworten, um zu fragen, ob Sie sich mit Ihren GitHub Anmeldeinformationen bei Git authentifizieren möchten. Dies kann nützlich sein, da Sie damit Git-Befehle wie `git push`, `git pull`, usw. verwenden können, ohne eine separate Anmeldeinformationsverwaltung einrichten oder SSH verwenden zu müssen.

### 3. Wählen Sie einen Endpunkt für Ihre Anforderung aus.

1. Wählen Sie einen Endpunkt aus, an dem eine Anforderung gestellt werden soll. Sie können die GitHub erkunden, um Endpunkte zu ermitteln[](/de/enterprise-server@3.22/rest), mit GitHubdenen Sie interagieren können.

2. Identifizieren Sie die HTTP-Methode und den Pfad des Endpunkts. Sie werden diese mit Ihrer Anforderung senden. Weitere Informationen findest du unter [HTTP-Methode](#http-method) und [Pfad](#path).

   Der [Endpunkt „Issue erstellen“](/de/enterprise-server@3.22/rest/issues/issues#create-an-issue) verwendet z. B. die HTTP-Methode `POST` und den Pfad `/repos/{owner}/{repo}/issues`.

3. Identifizieren Sie alle erforderlichen Pfadparameter. Erforderliche Pfadparameter werden in geschweiften Klammern `{}` im Pfad des Endpunkts angezeigt. Ersetzen Sie die Parameter-Platzhalter durch die gewünschten Werte. Weitere Informationen finden Sie unter [Path](#path).

   Der [Endpunkt „Issue erstellen“](/de/enterprise-server@3.22/rest/issues/issues#create-an-issue) verwendet z. B. den Pfad `/repos/{owner}/{repo}/issues` und die Pfadparameter sind `{owner}` und `{repo}`. Wenn Sie diesen Pfad in Ihrer API-Anforderung verwenden möchten, ersetzen Sie `{repo}` mit dem Namen des Repositorys, für das Sie ein neues Issue erstellen möchten, und ersetzen Sie `{owner}` durch den Namen des Kontos, das das Repository besitzt.

### 4. Stellen Sie eine Anfrage mit GitHub CLI

Verwenden Sie den GitHub CLI`api` Unterbefehl, um Ihre API-Anforderung zu stellen. Weitere Informationen finden Sie in der [GitHub CLI`api` Dokumentation](https://cli.github.com/manual/gh_api).

Geben Sie in Ihrer Anforderung die folgenden Optionen und Werte an:

* **--Hostname:** Wenn Sie auf mehreren GitHub Plattformen authentifiziert sind, geben Sie an, wo Sie die Anforderung stellen. Beispiel: `--hostname octocorp.ghe.com`
* **--Methode** gefolgt von der HTTP-Methode und dem Pfad des Endpunkts. Weitere Informationen findest du unter [HTTP-Methode](#http-method) und [Pfad](#path).
* **--header**
  * **`Accept`:** Übergib den Medientyp in einem `Accept`-Header. Um mehrere Medientypen in einem `Accept`-Header weiterzugeben, trennen Sie die Medientypen durch ein Komma: `Accept: application/vnd.github+json,application/vnd.github.diff`. Weitere Informationen findest du unter [`Accept`](#accept) und [Medientypen](#media-types).
  * **`X-GitHub-Api-Version`:** Übergeben Sie die API-Version in einem header `X-GitHub-Api-Version`. Weitere Informationen finden Sie unter [`X-GitHub-Api-Version`](#x-github-api-version).
* **`-f`** oder **`-F`** gefolgt von Textparametern oder Abfrageparametern im `key=value`-Format. Verwende die Option `-F`, um einen Parameter zu übergeben, der eine Zahl, ein Boolescher Wert oder null ist. Verwenden Sie die Option `-f`, um Zeichenkettenparameter zu übergeben.

  Einige Endpunkte verwenden Abfrageparameter, die Arrays (Matrix) sind. Um ein Array in der Abfragezeichenfolge zu senden, verwenden Sie den Abfrageparameter einmal pro Arrayelement, und fügen Sie nach dem Namen des Abfrageparameters an `[]` . Um beispielsweise ein Array von zwei Repository-IDs bereitzustellen, verwenden Sie `-f repository_ids[]=REPOSITORY_A_ID -f repository_ids[]=REPOSITORY_B_ID`.

  Wenn Sie keine Textparameter oder Abfrageparameter in Ihrer Anforderung angeben müssen, lassen Sie diese Option aus. Weitere Informationen findest du unter [Textparameter](#body-parameters) und [Abfrageparameter](#query-parameters). Beispiele findest du unter [Beispielanforderung mithilfe von Textparametern](#example-request-using-body-parameters) und [Beispielanforderung mithilfe von Abfrageparametern](#example-request-using-query-parameters).
* **--Hostname:** Wenn Sie auf mehreren GitHub Plattformen authentifiziert sind, geben Sie an, wo Sie die Anforderung stellen. Beispiel: `--hostname octocorp.ghe.com`

#### Beispielanforderung

Die folgende Beispielanforderung verwendet den [„Get Octocat“-Endpunkt](/de/enterprise-server@3.22/rest/meta/meta#get-octocat), um Oktocat als ASCII-Grafik zurückzusenden.

```shell copy
gh api --method GET /octocat \
--header 'Accept: application/vnd.github+json' \
--header "X-GitHub-Api-Version: 2022-11-28"
```

#### Beispielanforderung mithilfe von Abfrageparametern

Der [Endpunkt](/de/enterprise-server@3.22/rest/activity/events#list-public-events) "Öffentliche Ereignisse auflisten" sendet standardmäßig dreißig Issues zurück. Im folgenden Beispiel wird der `per_page`-Abfrageparameter verwendet, um zwei Probleme anstelle von 30 zurückzusenden, und der `page`-Abfrageparameter, um nur die erste Seite der Ergebnisse abzurufen.

```shell copy
gh api --method GET /events -F per_page=2 -F page=1
--header 'Accept: application/vnd.github+json' \
```

#### Beispielanforderung mit Body-Parametern

Im folgenden Beispiel wird der [Endpunkt "Problem erstellen"](/de/enterprise-server@3.22/rest/issues/issues#create-an-issue) verwendet, um ein neues Problem in einem angegebenen zu erstellen. Ersetzen Sie `REPO-NAME` durch den Namen des Repositorys, in dem Sie ein neues Ticket erstellen möchten, und ersetzen Sie `REPO-OWNER` durch den Namen des Kontos, dem das Repository gehört. Suchen Sie in der Antwort das `html_url` Problem, und navigieren Sie im Browser zu Ihrem Problem.

```shell copy
gh api --method POST /repos/REPO-OWNER/REPO-NAME/issues \
--header "Accept: application/vnd.github+json" \
--header "X-GitHub-Api-Version: 2022-11-28" \
-f title='Created with the REST API' \
-f body='This is a test issue created by the REST API' \
```

</div>

<div class="ghd-tool curl">

In diesem Abschnitt wird gezeigt, wie Sie eine authentifizierte Anforderung an die REST-API mithilfe von GitHub`curl` stellen.

### 1. Einrichten

Auf Ihrem Computer muss `curl` installiert sein. Um festzustellen, ob `curl` bereits installiert ist, führen Sie an der Befehlszeile `curl --version` aus.

* Wenn die Ausgabe Informationen über die Version von `curl` enthält, bedeutet dies, dass `curl` installiert ist.
* Wenn Sie eine Meldung ähnlich `command not found: curl` erhalten, bedeutet dies, dass `curl` nicht installiert ist. Laden Sie `curl` herunter und installieren Sie es. Weitere Informationen finden Sie auf der [Downloadseite für curl](https://curl.se/download.html).

### 2. Wählen Sie einen Endpunkt für Ihre Anforderung aus

1. Wählen Sie einen Endpunkt aus, an dem eine Anforderung gestellt werden soll. Sie können die GitHub erkunden, um Endpunkte zu ermitteln[](/de/enterprise-server@3.22/rest), mit GitHubdenen Sie interagieren können.

2. Identifizieren Sie die HTTP-Methode und den Pfad des Endpunkts. Sie werden diese mit Ihrer Anforderung senden. Weitere Informationen findest du unter [HTTP-Methode](#http-method) und [Pfad](#path).

   Der [Endpunkt „Issue erstellen“](/de/enterprise-server@3.22/rest/issues/issues#create-an-issue) verwendet z. B. die HTTP-Methode `POST` und den Pfad `/repos/{owner}/{repo}/issues`.

3. Identifizieren Sie alle erforderlichen Pfadparameter. Erforderliche Pfadparameter werden in geschweiften Klammern `{}` im Pfad des Endpunkts angezeigt. Ersetzen Sie die Parameter-Platzhalter durch die gewünschten Werte. Weitere Informationen finden Sie unter [Path](#path).

   Der [Endpunkt „Issue erstellen“](/de/enterprise-server@3.22/rest/issues/issues#create-an-issue) verwendet z. B. den Pfad `/repos/{owner}/{repo}/issues` und die Pfadparameter sind `{owner}` und `{repo}`. Wenn Sie diesen Pfad in Ihrer API-Anforderung verwenden möchten, ersetzen Sie `{repo}` mit dem Namen des Repositorys, für das Sie ein neues Issue erstellen möchten, und ersetzen Sie `{owner}` durch den Namen des Kontos, das das Repository besitzt.

### 3. Erstellen Sie Authentifizierungsdaten

Erstellen eines Zugriffstokens, um Ihre Anforderung zu authentifizieren. Sie können Ihr Token speichern und für mehrere Anforderungen verwenden. Weisen Sie dem Token alle Bereiche oder Berechtigungen zu, die für den Zugriff auf den Endpunkt erforderlich sind. Sie senden dieses Token in einem `Authorization`-Header mit Ihrer Anfrage. Weitere Informationen finden Sie unter [Authentifizierung](#authentication).

### 4. Übermitteln Sie eine `curl`-Anforderung

Verwenden Sie den Befehl `curl`, um Ihre Anforderung auszuführen. Weitere Informationen finden Sie in der [curl-Dokumentation](https://curl.se/docs/manpage.html).

Geben Sie in Ihrer Anforderung die folgenden Optionen und Werte an:

* **`--request` oder `-X`**, gefolgt von der HTTP-Methode als Wert. Weitere Informationen findest du unter [HTTP-Methode](#http-method).
* **`--url`** gefolgt vom vollständigen Pfad als Wert. Der vollständige Pfad ist eine URL, die die Basis-URL für die GitHub REST-API (`http(s)://HOSTNAME/api/v3`) und den Pfad des Endpunkts zugreifen, wie folgt: `http(s)://HOSTNAME/api/v3/PATH`. Ersetzen Sie `HOSTNAME` durch den Namen von Ihre GitHub Enterprise Server-Instance. Ersetzen Sie `PATH` durch den Pfad des Endpunkts. Weitere Informationen finden Sie unter [Path](#path).

  Um Abfrageparameter zu verwenden, fügen Sie ein `?` am Ende des Pfads ein und hängen dann den Namen und den Wert Ihres Abfrageparameters in der Form `parameter_name=value` an. Trennen Sie mehrere Abfrageparameter durch `&`. Wenn Sie ein Array in der Abfragezeichenkette senden müssen, verwenden Sie den Abfrageparameter einmal pro Array-Element und hängen Sie ein `[]` an den Namen des Abfrageparameters an. Um beispielsweise ein Array von zwei Repository-IDs bereitzustellen, verwenden Sie `?repository_ids[]=REPOSITORY_A_ID&repository_ids[]=REPOSITORY_B_ID`. Weitere Informationen findest du unter [Abfrageparameter](#query-parameters). Ein Beispiel findest du unter [Beispielanforderung mithilfe von Abfrageparametern](#example-request-using-query-parameters-1).
* **`--header` oder `-H`:**
  * **`Accept`:** Übergib den Medientyp in einem `Accept`-Header. Um mehrere Medientypen in einem `Accept`-Header zu übergeben, trennen Sie die Medientypen durch ein Komma, z. B.: `Accept: application/vnd.github+json,application/vnd.github.diff`. Weitere Informationen findest du unter [`Accept`](#accept) und [Medientypen](#media-types).
  * **`X-GitHub-Api-Version`:** Übergeben Sie die API-Version in einem header `X-GitHub-Api-Version`. Weitere Informationen finden Sie unter [`X-GitHub-Api-Version`](#x-github-api-version).
  * **`Authorization`:** Übergeben Sie Ihr Authentifizierungstoken im `Authorization`-Header. Beachten Sie, dass Sie in den meisten Fällen `Authorization: Bearer` oder `Authorization: token` verwenden können, um ein Token zu übergeben. Wenn Sie jedoch ein JWT (JSON Web Token) weitergeben, müssen Sie `Authorization: Bearer` verwenden. Weitere Informationen finden Sie unter [Authentifizierung](#authentication). Ein Beispiel für eine Anforderung, die einen `Authorization`-Header verwendet, findest du unter [Beispielanforderung mithilfe von Textparametern](#example-request-using-body-parameters-1).
* **`--data` oder `-d`** gefolgt von Textparametern innerhalb eines JSON-Objekts. Wenn Sie keine Rumpfparameter in Ihrer Anforderung angeben müssen, können Sie diese Option weglassen. Weitere Informationen findest du unter [Körperparameter](#body-parameters). Ein Beispiel findest du unter [Beispielanforderung mithilfe von Textparametern](#example-request-using-body-parameters-1).

#### Beispielanforderung

Die folgende Beispielanforderung verwendet den [„Get Octocat“-Endpunkt](/de/enterprise-server@3.22/rest/meta/meta#get-octocat), um Oktocat als ASCII-Grafik zurückzusenden.

```shell copy
curl --request GET \
--url "https://api.github.com/octocat" \
--header "Accept: application/vnd.github+json" \
--header "X-GitHub-Api-Version: 2022-11-28"
```

#### Beispielanforderung mithilfe von Abfrageparametern

Der [Endpunkt](/de/enterprise-server@3.22/rest/activity/events#list-public-events) "Öffentliche Ereignisse auflisten" sendet standardmäßig dreißig Issues zurück. Im folgenden Beispiel wird der `per_page`-Abfrageparameter verwendet, um zwei Probleme anstelle von 30 zurückzusenden, und der `page`-Abfrageparameter, um nur die erste Seite der Ergebnisse abzurufen.

```shell copy
curl --request GET \
--url "http(s)://HOSTNAME/api/v3/events?per_page=2&page=1" \
--header "Accept: application/vnd.github+json" \
--header "X-GitHub-Api-Version: 2022-11-28" \
  https://api.github.com/events
```

#### Beispielanforderung mit Body-Parametern

Im folgenden Beispiel wird der [Endpunkt "Problem erstellen"](/de/enterprise-server@3.22/rest/issues/issues#create-an-issue) verwendet, um ein neues Problem in einem angegebenen zu erstellen. Ersetzen Sie `HOSTNAME` durch den Namen von Ihre GitHub Enterprise Server-Instance. Ersetzen Sie `REPO-NAME` durch den Namen des Repositorys, in dem Sie ein neues Ticket erstellen möchten, und ersetzen Sie `REPO-OWNER` durch den Namen des Kontos, dem das Repository gehört. Ersetzen Sie `YOUR-TOKEN` es durch das Authentifizierungstoken, das Sie in einem vorherigen Schritt erstellt haben.

> \[!NOTE]
> Wenn Sie ein fine-grained personal access token verwenden, müssen Sie `REPO-OWNER` und `REPO-NAME` durch ein Repository ersetzen, das Sie besitzen oder das einer Organisation gehört, bei der Sie Mitglied sind. Ihr Token muss Zugriff auf dieses Repository haben und über Lese- und Schreibberechtigungen für Probleme im Repository verfügen. Weitere Informationen finden Sie unter [Verwalten deiner persönlichen Zugriffstoken](/de/enterprise-server@3.22/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens).

```shell copy
curl \
--request POST \
--url "http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues" \
--header "Accept: application/vnd.github+json" \
--header "X-GitHub-Api-Version: 2022-11-28" \
--header "Authorization: Bearer YOUR-TOKEN" \
--data '{
  "title": "Created with the REST API",
  "body": "This is a test issue created by the REST API"
}'
```

</div>

<div class="ghd-tool javascript">

In diesem Abschnitt wird veranschaulicht, wie Sie eine Anforderung an die GitHub REST-API mit JavaScript und [Octokit.js](https://github.com/octokit/octokit.js)stellen. Einen ausführlicheren Leitfaden findest du unter [Skripterstellung mit der REST-API und JavaScript](/de/enterprise-server@3.22/rest/guides/scripting-with-the-rest-api-and-javascript).

### 1. Einrichten

Sie müssen `octokit` installieren, um die Octokit.js-Bibliothek zu verwenden, die in den folgenden Beispielen gezeigt wird.

* Installiere `octokit`. Beispiel: `npm install octokit`. Informationen über andere Möglichkeiten zum Installieren oder Laden von `octokit` findest du in der [Octokit.js-Infodatei](https://github.com/octokit/octokit.js/#readme).

### 2. Wählen Sie einen Endpunkt für Ihre Anforderung aus

1. Wählen Sie einen Endpunkt aus, an dem eine Anforderung gestellt werden soll. Sie können die GitHub erkunden, um Endpunkte zu ermitteln[](/de/enterprise-server@3.22/rest), mit GitHubdenen Sie interagieren können.

2. Identifizieren Sie die HTTP-Methode und den Pfad des Endpunkts. Sie werden diese mit Ihrer Anforderung senden. Weitere Informationen findest du unter [HTTP-Methode](#http-method) und [Pfad](#path).

   Der [Endpunkt „Issue erstellen“](/de/enterprise-server@3.22/rest/issues/issues#create-an-issue) verwendet z. B. die HTTP-Methode `POST` und den Pfad `/repos/{owner}/{repo}/issues`.

3. Identifizieren Sie alle erforderlichen Pfadparameter. Erforderliche Pfadparameter werden in geschweiften Klammern `{}` im Pfad des Endpunkts angezeigt. Ersetzen Sie die Parameter-Platzhalter durch die gewünschten Werte. Weitere Informationen finden Sie unter [Path](#path).

   Der [Endpunkt „Issue erstellen“](/de/enterprise-server@3.22/rest/issues/issues#create-an-issue) verwendet z. B. den Pfad `/repos/{owner}/{repo}/issues` und die Pfadparameter sind `{owner}` und `{repo}`. Wenn Sie diesen Pfad in Ihrer API-Anforderung verwenden möchten, ersetzen Sie `{repo}` mit dem Namen des Repositorys, für das Sie ein neues Issue erstellen möchten, und ersetzen Sie `{owner}` durch den Namen des Kontos, das das Repository besitzt.

### 3. Erstellen Sie ein Zugriffstoken

Erstellen eines Zugriffstokens, um Ihre Anforderung zu authentifizieren. Sie können Ihr Token speichern und für mehrere Anforderungen verwenden. Weisen Sie dem Token alle Bereiche oder Berechtigungen zu, die für den Zugriff auf den Endpunkt erforderlich sind. Sie senden dieses Token in einem `Authorization`-Header mit Ihrer Anfrage. Weitere Informationen finden Sie unter [Authentifizierung](#authentication).

### 4. Stellen Sie eine Anforderung mit Octokit.js

1. Importiere `octokit` in dein Skript. Beispiel: `import { Octokit } from "octokit";`. Informationen über andere Möglichkeiten zum Importieren von `octokit` findest du in der [Octokit.js-Infodatei](https://github.com/octokit/octokit.js/#readme).

2. Erstellen Sie eine Instanz von `Octokit` mit Ihrem Token. Legen Sie die Basis-URL auf `http(s)://HOSTNAME/api/v3`. Ersetzen Sie `HOSTNAME` durch den Namen von Ihre GitHub Enterprise Server-Instance. Ersetzen Sie `YOUR-TOKEN` durch Ihr Token.

   ```javascript copy
   const octokit = new Octokit({ 
     baseUrl: "http(s)://HOSTNAME/api/v3",
     auth: 'YOUR-TOKEN'
   });
   ```

3. Verwenden Sie `octokit.request`, um Ihre Anforderung auszuführen.

   * Senden Sie die HTTP-Methode und den Pfad als erstes Argument an die `request`-Methode. Weitere Informationen findest du unter [HTTP-Methode](#http-method) und [Pfad](#path).
   * Geben Sie alle Pfad-, Abfrage- und Textparameter in einem Objekt als zweites Argument für die `request`-Methode an. Weitere Informationen finden Sie unter [Parameter](#parameters).

   In der folgenden Beispielanforderung lautet `POST`die HTTP-Methode , der Pfad lautet `/repos/{owner}/{repo}/issues`, die Pfadparameter sind `owner: "REPO-OWNER"` und `repo: "REPO-NAME"`, und die Body-Parameter sind `title: "Created with the REST API"` und `body: "This is a test issue created by the REST API"`. Ersetzen Sie den `REPO-OWNER` Namen des Kontos, das das Repository besitzt, und `REPO-NAME` durch den Namen des Repositorys.

   > \[!NOTE]
   > Wenn Sie ein fine-grained personal access token verwenden, müssen Sie `REPO-OWNER` und `REPO-NAME` durch ein Repository ersetzen, das Sie besitzen oder das einer Organisation gehört, bei der Sie Mitglied sind. Ihr Token muss Zugriff auf dieses Repository haben und über Lese- und Schreibberechtigungen für Probleme im Repository verfügen. Weitere Informationen finden Sie unter [Verwalten deiner persönlichen Zugriffstoken](/de/enterprise-server@3.22/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens).

   ```javascript copy
   await octokit.request("POST /repos/{owner}/{repo}/issues", {
     owner: "REPO-OWNER",
     repo: "REPO-NAME",
     title: "Created with the REST API",
     body: "This is a test issue created by the REST API",
   });
   ```

   Bei der `request`-Methode wird der Header `Accept: application/vnd.github+json` automatisch übergeben. Füge zum Übergeben zusätzlicher Header oder eines anderen `Accept`-Headers dem Objekt eine `headers`-Eigenschaft hinzu, die als zweites Argument übergeben wird. Der Wert der Eigenschaft `headers` ist ein Objekt mit den Headernamen als Schlüssel und den Headerwerten als Werte.

   Der folgende Code sendet z. B. einen `content-type` Header mit dem Wert `text/plain` und einer `X-GitHub-Api-Version` Header mit dem Wert `2026-03-10`.

   ```javascript copy
   await octokit.request("GET /octocat", {
     headers: {
       "content-type": "text/plain",
       "X-GitHub-Api-Version": "2026-03-10",
     },
   });
   ```

</div>

## Verwendung der Antwort

Nachdem Sie eine Anforderung gestellt haben, sendet die API den Statuscode der Antwort, die Antwortheader und möglicherweise einen Antworttext zurück.

### Informationen zu Antwortcodes und Headern

Jede Anforderung gibt einen HTTP-Statuscode zurück, der den Erfolgsstatus der Antwort anzeigt. Weitere Informationen zu Antwortcodes findest du in der [MDN-Dokumentation zu HTTP-Antwortstatuscodes](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status).

Außerdem enthält die Antwort Header, die weitere Informationen zur Antwort liefern. Kopfzeilen, die mit `X-` oder `x-` beginnen, sind benutzerdefiniert für GitHub. Die Header `x-ratelimit-remaining` und `x-ratelimit-reset` informieren dich zum Beispiel darüber, wie viele Anforderungen du in einem bestimmten Zeitraum ausführen kannst.

<div class="ghd-tool cli">

Um den Statuscode und die Header anzuzeigen, verwenden Sie beim Senden Ihrer Anforderung die Option `--include` oder `--i`.

Diese Anforderung ruft z. B. eine Liste von Issues im angegebenen octocat/Spoon-Knife-Repository ab.

```shell
gh api \
--header 'Accept: application/vnd.github+json' \
--method GET /repos/REPO-OWNER/REPO-NAME/issues \
-F per_page=2 --include
```

Und sie sendet einen Antwortcode und Header zurück, der ungefähr so aussieht:

```shell
HTTP/2.0 200 OK
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: ETag, Link, Location, Retry-After, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset
Cache-Control: private, max-age=60, s-maxage=60
Content-Security-Policy: default-src 'none'
Content-Type: application/json; charset=utf-8
Date: Thu, 04 Aug 2022 19:56:41 GMT
Etag: W/"a63dfbcfdb73621e9d2e89551edcf9856731ced534bd7f1e114a5da1f5f73418"
Link: <https://api.github.com/repositories/1300192/issues?per_page=1&page=2>; rel="next", <https://api.github.com/repositories/1300192/issues?per_page=1&page=14817>; rel="last"
Referrer-Policy: origin-when-cross-origin, strict-origin-when-cross-origin
Server: GitHub.com
Strict-Transport-Security: max-age=31536000; includeSubdomains; preload
Vary: Accept, Authorization, Cookie, Accept-Encoding, Accept, X-Requested-With
X-Accepted-Oauth-Scopes: repo
X-Content-Type-Options: nosniff
X-Frame-Options: deny
X-Github-Api-Version-Selected: 2022-08-09
X-Github-Media-Type: github.v3; format=json
X-Github-Request-Id: 1C73:26D4:E2E500:1EF78F4:62EC2479
X-Oauth-Client-Id: 178c6fc778ccc68e1d6a
X-Oauth-Scopes: gist, read:org, repo, workflow
X-Ratelimit-Limit: 15000
X-Ratelimit-Remaining: 14996
X-Ratelimit-Reset: 1659645499
X-Ratelimit-Resource: core
X-Ratelimit-Used: 4
X-Xss-Protection: 0
```

In diesem Beispiel lautet der Antwortcode `200`, d. h. die Anforderung war erfolgreich.

</div>

<div class="ghd-tool javascript">

Wenn du eine Anforderung mit „Octokit.js“ ausführst, gibt die Methode `request` eine Zusage zurück. Wenn die Anforderung erfolgreich war, wird die Zusage in ein Objekt aufgelöst, das den HTTP-Statuscode der Antwort (`status`) und die Antwortheader (`headers`) enthält. Wenn ein Fehler auftritt, wird die Zusage in ein Objekt aufgelöst, das den HTTP-Statuscode der Antwort (`status`) und die Antwortheader (`response.headers`) enthält.

Du kannst einen `try/catch`-Block verwenden, um einen eventuell auftretenden Fehler abzufangen. Wenn die Anforderung im folgenden Skript beispielsweise erfolgreich ist, protokolliert das Skript den Statuscode und den Wert des `x-ratelimit-remaining`-Headers. War die Anforderung nicht erfolgreich, protokolliert das Skript den Statuscode, den Wert des `x-ratelimit-remaining`-Headers und die Fehlermeldung.

Ersetzen Sie im folgenden Beispiel `REPO-OWNER` durch den Namen des Kontos, das das Repository besitzt, und `REPO-NAME` durch den Namen des Repositorys.

```javascript copy
try {
  const result = await octokit.request("GET /repos/{owner}/{repo}/issues", {
    owner: "REPO-OWNER",
    repo: "REPO-NAME",
    per_page: 2,
  });

  console.log(`Success! Status: ${result.status}. Rate limit remaining: ${result.headers["x-ratelimit-remaining"]}`)

} catch (error) {
  console.log(`Error! Status: ${error.status}. Rate limit remaining: ${error.headers["x-ratelimit-remaining"]}. Message: ${error.response.data.message}`)
}
```

</div>

<div class="ghd-tool curl">

Um den Statuscode und die Header anzuzeigen, verwenden Sie beim Senden Ihrer Anforderung die Option `--include` oder `--i`.

Diese Anforderung ruft z. B. eine Liste von Issues im angegebenen octocat/Spoon-Knife-Repository ab.

```shell
curl --request GET \
--url "https://api.github.com/repos/REPO-OWNER/REPO-NAME/issues?per_page=2" \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer YOUR-TOKEN" \
--include
```

Und sie sendet einen Antwortcode und Header zurück, der ungefähr so aussieht:

```shell
HTTP/2 200
server: GitHub.com
date: Thu, 04 Aug 2022 20:07:51 GMT
content-type: application/json; charset=utf-8
cache-control: public, max-age=60, s-maxage=60
vary: Accept, Accept-Encoding, Accept, X-Requested-With
etag: W/"7fceb7e8c958d3ec4d02524b042578dcc7b282192e6c939070f4a70390962e18"
x-github-media-type: github.v3; format=json
link: <https://api.github.com/repositories/1300192/issues?per_page=2&sort=updated&direction=asc&page=2>; rel="next", <https://api.github.com/repositories/1300192/issues?per_page=2&sort=updated&direction=asc&page=7409>; rel="last"
access-control-expose-headers: ETag, Link, Location, Retry-After, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Used, X-RateLimit-Resource, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, X-GitHub-SSO, X-GitHub-Request-Id, Deprecation, Sunset
access-control-allow-origin: *
strict-transport-security: max-age=31536000; includeSubdomains; preload
x-frame-options: deny
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: origin-when-cross-origin, strict-origin-when-cross-origin
content-security-policy: default-src 'none'
x-ratelimit-limit: 15000
x-ratelimit-remaining: 14996
x-ratelimit-reset: 1659645535
x-ratelimit-resource: core
x-ratelimit-used: 4
accept-ranges: bytes
content-length: 4936
x-github-request-id: 14E0:4BC6:F1B8BA:208E317:62EC2715
```

In diesem Beispiel lautet der Antwortcode `200`, d. h. die Anforderung war erfolgreich.

</div>

### Informationen zum Antwortkörper

Bei vielen Endpunkten wird ein Antworttext zurückgesendet. Sofern nicht anders angegeben, verwendet der Antworttext das JSON-Format. Leere Felder werden als `null` aufgenommen, anstatt weggelassen zu werden. Alle Zeitstempel werden im UTC-Zeitformat nach ISO 8601 `YYYY-MM-DDTHH:MM:SSZ` zurückgesendet.

Im Gegensatz zur GraphQL-API, bei der du die gewünschten Informationen angibst, liefert die REST-API in der Regel mehr Informationen als du benötigst. Falls gewünscht, kannst du die Antwort analysieren, um bestimmte Informationen herauszufiltern.

<div class="ghd-tool cli">

Sie können zum Beispiel `>` verwenden, um die Antwort in eine Datei umzuleiten. Ersetzen Sie im folgenden Beispiel `REPO-OWNER` durch den Namen des Kontos, das das Repository besitzt, und `REPO-NAME` durch den Namen des Repositorys.

```shell copy
gh api \
--header 'Accept: application/vnd.github+json' \
--method GET /repos/REPO-OWNER/REPO-NAME/issues \
-F per_page=2 > data.json
```

Dann kannst mit jq den Titel und die Autoren-ID für jedes Issue abrufen:

```shell copy
jq '.[] | {title: .title, authorID: .user.id}' data.json
```

Die beiden vorherigen Befehle liefern eine Ausgabe ähnlich der folgenden:

```json
{
  "title": "Update index.html",
  "authorID": 10701255
}
{
  "title": "Edit index file",
  "authorID": 53709285
}
```

Weitere Informationen zu jq findest du in der [jq-Dokumentation](https://stedolan.github.io/jq/).

</div>

<div class="ghd-tool javascript">

Sie können zum Beispiel den Titel und die Autoren-ID für jedes Issue abrufen: Ersetzen Sie im folgenden Beispiel `REPO-OWNER` durch den Namen des Kontos, das das Repository besitzt, und `REPO-NAME` durch den Namen des Repositorys.

```javascript copy
try {
  const result = await octokit.request("GET /repos/{owner}/{repo}/issues", {
    owner: "REPO-OWNER",
    repo: "REPO-NAME",
    per_page: 2,
  });

  const titleAndAuthor = result.data.map(issue => {title: issue.title, authorID: issue.user.id})

  console.log(titleAndAuthor)

} catch (error) {
  console.log(`Error! Status: ${error.status}. Message: ${error.response.data.message}`)
}
```

</div>

<div class="ghd-tool curl">

Sie können zum Beispiel `>` verwenden, um die Antwort in eine Datei umzuleiten. Ersetzen Sie `REPO-OWNER` im folgenden Beispiel den Namen des Kontos, das das Repository besitzt, und `REPO-NAME` durch den Namen des Repositorys. Ersetzen Sie `HOSTNAME` durch den Namen von Ihre GitHub Enterprise Server-Instance.

```shell copy
curl --request GET \
--url "http(s)://HOSTNAME/api/v3/repos/REPO-OWNER/REPO-NAME/issues?per_page=2" \
--header "Accept: application/vnd.github+json" \
--header "Authorization: Bearer YOUR-TOKEN" > data.json
```

Dann kannst mit jq den Titel und die Autoren-ID für jedes Issue abrufen:

```shell copy
jq '.[] | {title: .title, authorID: .user.id}' data.json
```

Die beiden vorherigen Befehle liefern eine Ausgabe ähnlich der folgenden:

```json
{
  "title": "Update index.html",
  "authorID": 10701255
}
{
  "title": "Edit index file",
  "authorID": 53709285
}
```

Weitere Informationen zu jq findest du in der [jq-Dokumentation](https://stedolan.github.io/jq/).

</div>

#### Detaillierte Darstellungen im Vergleich zu Zusammenfassungsdarstellungen

Eine Antwort kann alle Attribute für eine Ressource oder nur eine Teilmenge von Attributen enthalten, je nachdem, ob Sie eine einzelne Ressource oder eine Liste von Ressourcen fetchen.

* Wenn Sie eine *einzelne Ressource* z. B. ein bestimmtes Repository, abrufen, enthält die Antwort in der Regel alle Attribute für diese Ressource. Dies ist die „detaillierte“ Darstellung der Ressource.
* Wenn Sie eine *Liste von Ressourcen* fetchen, z. B. eine Liste mehrerer Repositorys, enthält die Antwort nur eine Teilmenge der Attribute für jede Ressource. Dies ist die „Zusammenfassungsdarstellung“ der Ressource.

Beachten Sie, dass die Autorisierung manchmal die Anzahl der Details in einer Darstellung beeinflusst.

Der Grund dafür ist, dass einige Attribute für die bereitzustellende API rechenintensiv sind, sodass GitHub diese Attribute aus der Zusammenfassungsdarstellung ausgeschlossen werden. Um diese Attribute zu erhalten, können Sie die detaillierte Darstellung abrufen.

Die Dokumentation enthält eine Beispielantwort für jede API-Methode. Die Beispielantwort zeigt alle Attribute an, die von dieser Methode zurückgegeben werden.

#### Hypermedia

Alle Ressourcen verfügen möglicherweise über eine oder mehrere `*_url`-Eigenschaften, die sie mit anderen Ressourcen verknüpfen. Hiermit sollen explizite URLs bereitgestellt werden, damit richtige API-Clients keine URLs selbst erstellen müssen. Es wird dringend empfohlen, dass API-Clients diese verwenden. Auf diese Weise werden zukünftige Upgrades der API für Entwickler\*innen einfacher. Es wird erwartet, dass alle URLs ordnungsgemäße [RFC 6570](https://datatracker.ietf.org/doc/html/rfc6570)-URI-Vorlagen sind.

Anschließend kannst du diese Vorlagen mithilfe des [uri\_template](https://github.com/hannesg/uri_template)-Gems erweitern:

```ruby
>> tmpl = URITemplate.new('/notifications{?since,all,participating}')
>> tmpl.expand
=> "/notifications"

>> tmpl.expand all: 1
=> "/notifications?all=1"

>> tmpl.expand all: 1, participating: 1
=> "/notifications?all=1&participating=1"
```

## Ratenbegrenzung

Die GitHub REST-API beschränkt die Anzahl der Anforderungen, die Sie innerhalb eines bestimmten Zeitraums vornehmen können. Weitere Informationen zu Ratelimits und zum Überprüfen des aktuellen Status des Zinsgrenzwerts finden Sie unter [Ratenbegrenzungen für die REST-API](/de/enterprise-server@3.22/rest/using-the-rest-api/rate-limits-for-the-rest-api).

## Nächste Schritte

In diesem Artikel wurde gezeigt, wie du Issues in einem Repository auflisten und erstellen kannst. Um mehr Übung zu bekommen, kannst du versuchen, ein Issue zu kommentieren, den Titel eines Issue zu bearbeiten oder ein Issue zu schließen. Weitere Informationen finden Sie unter dem [Endpunkt „Erstellen eines Kommentars zu einem Issue“](/de/enterprise-server@3.22/rest/issues/comments#create-an-issue-comment) und [Endpunkt „Aktualisieren eines Issues“](/de/enterprise-server@3.22/rest/issues/issues#update-an-issue).

Weitere Informationen zu anderen Endpunkten, die Sie verwenden können, finden Sie in der [REST-Referenzdokumentation](/de/enterprise-server@3.22/rest).