# Конечные точки REST API для ключ развертывания

Используйте REST API для создания ключ развертывания и управления ими.

## Сведения о ключ развертывания

Вы можете запустить проекты из репозитория на ваш экземпляр GitHub Enterprise Server на сервер с помощью ключ развертывания, который является ключом SSH, который предоставляет доступ к одному репозиторию. GitHub подключает общедоступную часть ключа непосредственно к репозиторию вместо личная учетная запись, а частная часть ключа остается на сервере. Дополнительные сведения см. в разделе [Доставка развертываний](/ru/enterprise-server@3.19/rest/guides/delivering-deployments).

Ключи развертывания можно настроить либо с помощью следующих API-конечных точек, либо с GitHub помощью веб-интерфейса. Сведения о настройке ключ развертывания в веб-интерфейсе см. в статье [Управление ключами развертывания](/ru/enterprise-server@3.19/authentication/connecting-to-github-with-ssh/managing-deploy-keys).

Возможно, не удается создать ключ развертывания, если ваша организация или владелец предприятия установила политику для ограничения их использования. Кроме того, если эта политика включена на уровне организации или предприятия, существующие ключ развертывания могут быть отключены. Дополнительные сведения см. в разделе \[AUTOTITLE и [Применение политик управления репозиториями в организации](/ru/enterprise-server@3.19/admin/enforcing-policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-deploy-keys)]\(/organizations/managing-organization-settings/restricting-deploy-keys-in-your-organization).

Существует несколько случаев, когда ключ развертывания будут удалены другими действиями:

* Если ключ развертывания создан с personal access tokenпомощью , удаление также personal access token удалит ключ развертывания. Восстановление personal access token не удалит ключ развертывания.
* Если ключ развертывания создан с помощью токена OAuth app , отзыв токена также удаляет ключ развертывания.

И наоборот, эти действия не будут удалять ключ развертывания:

* Если ключ развертывания создан с GitHub App помощью токена доступа пользователя, отзыв токена не удалит ключ развертывания.
* Если ключ развертывания создан с GitHub App помощью токена доступа установки, удаление или удаление приложения не удалит ключ развертывания.
* Если ключ развертывания создан с personal access tokenпомощью , регенерируя , personal access token ключ развертывания не удалится.

> \[!NOTE]
> Most endpoints use `Authorization: Bearer <YOUR-TOKEN>` and `Accept: application/vnd.github+json` headers, plus `X-GitHub-Api-Version: 2022-11-28`. Curl examples below omit these standard headers for brevity.

## List deploy keys

```
GET /repos/{owner}/{repo}/keys
```

### Parameters

#### Headers

* **`accept`** (string)
  Setting to `application/vnd.github+json` is recommended.

#### Path and query parameters

* **`owner`** (string) (required)
  The account owner of the repository. The name is not case sensitive.

* **`repo`** (string) (required)
  The name of the repository without the .git extension. The name is not case sensitive.

* **`per_page`** (integer)
  The number of results per page (max 100). For more information, see "Using pagination in the REST API."
  Default: `30`

* **`page`** (integer)
  The page number of the results to fetch. For more information, see "Using pagination in the REST API."
  Default: `1`

### HTTP response status codes

* **200** - OK

### Code examples

#### Example

**Request:**

```curl
curl -L \
  -X GET \
  http(s)://HOSTNAME/api/v3/repos/OWNER/REPO/keys
```

**Response schema (Status: 200):**

Array of `Deploy Key`:

* `id`: required, integer
* `key`: required, string
* `url`: required, string
* `title`: required, string
* `verified`: required, boolean
* `created_at`: required, string
* `read_only`: required, boolean
* `added_by`: string or null
* `last_used`: string or null, format: date-time
* `enabled`: boolean

## Create a deploy key

```
POST /repos/{owner}/{repo}/keys
```

You can create a read-only deploy key.

### Parameters

#### Headers

* **`accept`** (string)
  Setting to `application/vnd.github+json` is recommended.

#### Path and query parameters

* **`owner`** (string) (required)
  The account owner of the repository. The name is not case sensitive.

* **`repo`** (string) (required)
  The name of the repository without the .git extension. The name is not case sensitive.

#### Body parameters

* **`title`** (string)
  A name for the key.

* **`key`** (string) (required)
  The contents of the key.

* **`read_only`** (boolean)
  If true, the key will only be able to read repository contents. Otherwise, the key will be able to read and write.
  Deploy keys with write access can perform the same actions as an organization member with admin access, or a collaborator on a personal repository. For more information, see "Repository permission levels for an organization" and "Permission levels for a user account repository."

### HTTP response status codes

* **201** - Created

* **422** - Validation failed, or the endpoint has been spammed.

### Code examples

#### Example

**Request:**

```curl
curl -L \
  -X POST \
  http(s)://HOSTNAME/api/v3/repos/OWNER/REPO/keys \
  -d '{
  "title": "octocat@octomac",
  "key": "ssh-rsa AAA...",
  "read_only": true
}'
```

**Response schema (Status: 201):**

* `id`: required, integer
* `key`: required, string
* `url`: required, string
* `title`: required, string
* `verified`: required, boolean
* `created_at`: required, string
* `read_only`: required, boolean
* `added_by`: string or null
* `last_used`: string or null, format: date-time
* `enabled`: boolean

## Get a deploy key

```
GET /repos/{owner}/{repo}/keys/{key_id}
```

### Parameters

#### Headers

* **`accept`** (string)
  Setting to `application/vnd.github+json` is recommended.

#### Path and query parameters

* **`owner`** (string) (required)
  The account owner of the repository. The name is not case sensitive.

* **`repo`** (string) (required)
  The name of the repository without the .git extension. The name is not case sensitive.

* **`key_id`** (integer) (required)
  The unique identifier of the key.

### HTTP response status codes

* **200** - OK

* **404** - Resource not found

### Code examples

#### Example

**Request:**

```curl
curl -L \
  -X GET \
  http(s)://HOSTNAME/api/v3/repos/OWNER/REPO/keys/KEY_ID
```

**Response schema (Status: 200):**

Same response schema as [Create a deploy key](#create-a-deploy-key).

## Delete a deploy key

```
DELETE /repos/{owner}/{repo}/keys/{key_id}
```

Deploy keys are immutable. If you need to update a key, remove the key and create a new one instead.

### Parameters

#### Headers

* **`accept`** (string)
  Setting to `application/vnd.github+json` is recommended.

#### Path and query parameters

* **`owner`** (string) (required)
  The account owner of the repository. The name is not case sensitive.

* **`repo`** (string) (required)
  The name of the repository without the .git extension. The name is not case sensitive.

* **`key_id`** (integer) (required)
  The unique identifier of the key.

### HTTP response status codes

* **204** - No Content

### Code examples

#### Example

**Request:**

```curl
curl -L \
  -X DELETE \
  http(s)://HOSTNAME/api/v3/repos/OWNER/REPO/keys/KEY_ID
```

**Response schema (Status: 204):**