doc-locale/fr-fr/api/deploy_keys.md
{{< details >}}
{{< /details >}}
Utilisez cette API pour interagir avec les clés de déploiement.
{{< history >}}
fingerprint_sha256 dans GitLab 15.2.{{< /history >}}
Certains points de terminaison renvoient des empreintes de clé publique dans la réponse. Vous pouvez utiliser ces empreintes pour identifier l'utilisateur qui a créé la clé de déploiement. Pour plus d'informations, voir obtenir un utilisateur par empreinte de clé de déploiement.
Les attributs suivants contiennent l'empreinte de la clé de déploiement :
fingerprint : Utilise un hachage MD5. Non disponible sur les systèmes compatibles FIPS.fingerprint_sha256 : Utilise un hachage SHA256.{{< details >}}
{{< /details >}}
{{< history >}}
projects_with_readonly_access introduit dans GitLab 16.0.{{< /history >}}
Récupère la liste de toutes les clés de déploiement dans tous les projets de l'instance GitLab. Ce point de terminaison nécessite un accès administrateur et n'est pas disponible sur GitLab.com.
GET /deploy_keys
Attributs pris en charge :
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
public | boolean | Non | Ne renvoie que les clés de déploiement qui sont publiques. La valeur par défaut est false. |
Exemple de requête :
curl --request GET \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/deploy_keys?public=true"
Exemple de réponse :
[
{
"id": 1,
"title": "Public key",
"key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDNJAkI3Wdf0r13c8a5pEExB2YowPWCSVzfZV22pNBc1CuEbyYLHpUyaD0GwpGvFdx2aP7lMEk35k6Rz3ccBF6jRaVJyhsn5VNnW92PMpBJ/P1UebhXwsFHdQf5rTt082cSxWuk61kGWRQtk4ozt/J2DF/dIUVaLvc+z4HomT41fQ==",
"fingerprint": "4a:9d:64:15:ed:3a:e6:07:6e:89:36:b3:3b:03:05:d9",
"fingerprint_sha256": "SHA256:Jrs3LD1Ji30xNLtTVf9NDCj7kkBgPBb2pjvTZ3HfIgU",
"created_at": "2013-10-02T10:12:29Z",
"expires_at": null,
"projects_with_write_access": [
{
"id": 73,
"description": null,
"name": "project2",
"name_with_namespace": "Sidney Jones / project2",
"path": "project2",
"path_with_namespace": "sidney_jones/project2",
"created_at": "2021-10-25T18:33:17.550Z"
},
{
"id": 74,
"description": null,
"name": "project3",
"name_with_namespace": "Sidney Jones / project3",
"path": "project3",
"path_with_namespace": "sidney_jones/project3",
"created_at": "2021-10-25T18:33:17.666Z"
}
],
"projects_with_readonly_access": []
},
{
"id": 3,
"title": "Another Public key",
"key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDIJFwIL6YNcCgVBLTHgM6hzmoL5vf0ThDKQMWT3HrwCjUCGPwR63vBwn6+/Gx+kx+VTo9FuojzR0O4XfwD3LrYA+oT3ETbn9U4e/VS4AH/G4SDMzgSLwu0YuPe517FfGWhWGQhjiXphkaQ+6bXPmcASWb0RCO5+pYlGIfxv4eFGQ==",
"fingerprint": "0b:cf:58:40:b9:23:96:c7:ba:44:df:0e:9e:87:5e:75",
"": "SHA256:lGI/Ys/Wx7PfMhUO1iuBH92JQKYN+3mhJZvWO4Q5ims",
"created_at": "2013-10-02T11:12:29Z",
"expires_at": null,
"projects_with_write_access": [],
"projects_with_readonly_access": [
{
"id": 74,
"description": null,
"name": "project3",
"name_with_namespace": "Sidney Jones / project3",
"path": "project3",
"path_with_namespace": "sidney_jones/project3",
"created_at": "2021-10-25T18:33:17.666Z"
}
]
}
]
{{< details >}}
{{< /details >}}
{{< history >}}
{{< /history >}}
Crée une clé de déploiement pour l'instance GitLab. Ce point de terminaison nécessite un accès administrateur.
POST /deploy_keys
Attributs pris en charge :
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
key | string | oui | Nouvelle clé de déploiement |
title | string | oui | Titre de la nouvelle clé de déploiement |
expires_at | datetime | non | Date d'expiration de la clé de déploiement. N'expire pas si aucune valeur n'est fournie. Format ISO 8601 attendu (2024-12-31T08:00:00Z) |
Exemple de requête :
curl --request POST \ --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data "{"title": "My deploy key", "key": "ssh-rsa AAAA...", "expired_at": "2024-12-31T08:00:00Z"}" \
--url "https://gitlab.example.com/api/v4/deploy_keys/"
Exemple de réponse :
{
"id": 5,
"title": "My deploy key",
"key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDNJAkI3Wdf0r13c8a5pEExB2YowPWCSVzfZV22pNBc1CuEbyYLHpUyaD0GwpGvFdx2aP7lMEk35k6Rz3ccBF6jRaVJyhsn5VNnW92PMpBJ/P1UebhXwsFHdQf5rTt082cSxWuk61kGWRQtk4ozt/J2DF/dIUVaLvc+z4HomT41fQ==",
"fingerprint": "4a:9d:64:15:ed:3a:e6:07:6e:89:36:b3:3b:03:05:d9",
"fingerprint_sha256": "SHA256:Jrs3LD1Ji30xNLtTVf9NDCj7kkBgPBb2pjvTZ3HfIgU",
"usage_type": "auth_and_signing",
"created_at": "2024-10-03T01:32:21.992Z",
"expires_at": "2024-12-31T08:00:00.000Z"
}
Récupère la liste des clés de déploiement d'un projet.
GET /projects/:id/deploy_keys
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | entier ou chaîne de caractères | oui | L'ID ou le chemin encodé en URL du projet |
curl --request GET \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/deploy_keys"
Exemple de réponse :
[
{
"id": 1,
"title": "Public key",
"key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDNJAkI3Wdf0r13c8a5pEExB2YowPWCSVzfZV22pNBc1CuEbyYLHpUyaD0GwpGvFdx2aP7lMEk35k6Rz3ccBF6jRaVJyhsn5VNnW92PMpBJ/P1UebhXwsFHdQf5rTt082cSxWuk61kGWRQtk4ozt/J2DF/dIUVaLvc+z4HomT41fQ==",
"fingerprint": "4a:9d:64:15:ed:3a:e6:07:6e:89:36:b3:3b:03:05:d9",
"fingerprint_sha256": "SHA256:Jrs3LD1Ji30xNLtTVf9NDCj7kkBgPBb2pjvTZ3HfIgU",
"created_at": "2013-10-02T10:12:29Z",
"expires_at": null,
"can_push": false
},
{
"id": 3,
"title": "Another Public key",
"key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDIJFwIL6YNcCgVBLTHgM6hzmoL5vf0ThDKQMWT3HrwCjUCGPwR63vBwn6+/Gx+kx+VTo9FuojzR0O4XfwD3LrYA+oT3ETbn9U4e/VS4AH/G4SDMzgSLwu0YuPe517FfGWhWGQhjiXphkaQ+6bXPmcASWb0RCO5+pYlGIfxv4eFGQ==",
"fingerprint": "0b:cf:58:40:b9:23:96:c7:ba:44:df:0e:9e:87:5e:75",
"": "SHA256:lGI/Ys/Wx7PfMhUO1iuBH92JQKYN+3mhJZvWO4Q5ims",
"created_at": "2013-10-02T11:12:29Z",
"expires_at": null,
"can_push": false
}
]
{{< history >}}
{{< /history >}}
Récupère la liste des clés de déploiement de projet communes à un utilisateur spécifié (destinataire) et à l'utilisateur authentifié (demandeur). Elle répertorie uniquement les clés de projet activées issues des projets communs au demandeur et au destinataire de la demande.
GET /users/:id_or_username/project_deploy_keys
Paramètres :
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id_or_username | string | oui | L'identifiant ou le nom d'utilisateur de l'utilisateur pour lequel récupérer les clés de déploiement de projet. |
[
{
"id": 1,
"title": "Key A",
"created_at": "2022-05-30T12:28:27.855Z",
"expires_at": null,
"key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILkYXU2fVeO4/0rDCSsswP5iIX2+B6tv15YT3KObgyDl Key",
"fingerprint": "40:8e:fa:df:70:f7:a7:06:1e:0d:6f:ae:f2:27:92:01",
"fingerprint_sha256": "SHA256:Ojq2LZW43BFK/AMP81jBkDGn9YpPWYRNcViKBB44LPU"
},
{
"id": 2,
"title": "Key B",
"created_at": "2022-05-30T13:34:56.219Z",
"expires_at": null,
"key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDNJAkI3Wdf0r13c8a5pEExB2YowPWCSVzfZV22pNBc1CuEbyYLHpUyaD0GwpGvFdx2aP7lMEk35k6Rz3ccBF6jRaVJyhsn5VNnW92PMpBJ/P1UebhXwsFHdQf5rTt082cSxWuk61kGWRQtk4ozt/J2DF/dIUVaLvc+z4HomT41fQ==",
"fingerprint": "4a:9d:64:15:ed:3a:e6:07:6e:89:36:b3:3b:03:05:d9",
"": "SHA256:Jrs3LD1Ji30xNLtTVf9NDCj7kkBgPBb2pjvTZ3HfIgU"
}
]
curl --request GET \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/users/20/project_deploy_keys"
Exemple de réponse :
[
{
"id": 1,
"title": "Key A",
"created_at": "2022-05-30T12:28:27.855Z",
"expires_at": "2022-10-30T12:28:27.855Z",
"key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILkYXU2fVeO4/0rDCSsswP5iIX2+B6tv15YT3KObgyDl Key",
"fingerprint": "40:8e:fa:df:70:f7:a7:06:1e:0d:6f:ae:f2:27:92:01",
"fingerprint_sha256": "SHA256:Ojq2LZW43BFK/AMP81jBkDGn9YpPWYRNcViKBB44LPU"
}
]
Récupère une clé de déploiement spécifiée.
GET /projects/:id/deploy_keys/:key_id
Paramètres :
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | entier ou chaîne de caractères | oui | L'ID ou le chemin encodé en URL du projet |
key_id | integer | oui | L'identifiant de la clé de déploiement |
curl --request GET \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/deploy_keys/11"
Exemple de réponse :
{
"id": 1,
"title": "Public key",
"key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDNJAkI3Wdf0r13c8a5pEExB2YowPWCSVzfZV22pNBc1CuEbyYLHpUyaD0GwpGvFdx2aP7lMEk35k6Rz3ccBF6jRaVJyhsn5VNnW92PMpBJ/P1UebhXwsFHdQf5rTt082cSxWuk61kGWRQtk4ozt/J2DF/dIUVaLvc+z4HomT41fQ==",
"fingerprint": "4a:9d:64:15:ed:3a:e6:07:6e:89:36:b3:3b:03:05:d9",
"fingerprint_sha256": "SHA256:Jrs3LD1Ji30xNLtTVf9NDCj7kkBgPBb2pjvTZ3HfIgU",
"created_at": "2013-10-02T10:12:29Z",
"expires_at": null,
"can_push": false
}
Ajoute une clé de déploiement pour un projet spécifié.
Si la clé de déploiement existe déjà dans un autre projet, elle est associée au projet actuel uniquement si l'originale est accessible par le même utilisateur.
POST /projects/:id/deploy_keys
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | entier ou chaîne de caractères | oui | L'ID ou le chemin encodé en URL du projet |
key | string | oui | Nouvelle clé de déploiement |
title | string | oui | Titre de la nouvelle clé de déploiement |
can_push | boolean | non | La clé de déploiement peut-elle pousser vers le dépôt du projet |
expires_at | datetime | non | Date d'expiration de la clé de déploiement. N'expire pas si aucune valeur n'est fournie. Format ISO 8601 attendu (2019-03-15T08:00:00Z) |
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data "{"title": "My deploy key", "key": "ssh-rsa AAAA...", "can_push": "true"}" \
--url "https://gitlab.example.com/api/v4/projects/5/deploy_keys/"
Exemple de réponse :
{
"key": "ssh-rsa AAAA...",
"id": 12,
"title": "My deploy key",
"can_push": true,
"created_at": "2015-08-29T12:44:31.550Z",
"expires_at": null
}
Met à jour une clé de déploiement pour un projet.
PUT /projects/:id/deploy_keys/:key_id
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | entier ou chaîne de caractères | oui | L'ID ou le chemin encodé en URL du projet |
can_push | boolean | non | La clé de déploiement peut-elle pousser vers le dépôt du projet |
title | string | non | Titre de la nouvelle clé de déploiement |
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data "{"title": "New deploy key", "can_push": true}" \
--url "https://gitlab.example.com/api/v4/projects/5/deploy_keys/11"
Exemple de réponse :
{
"id": 11,
"title": "New deploy key",
"key": "ssh-rsa AAAA...",
"created_at": "2015-08-29T12:44:31.550Z",
"expires_at": null,
"can_push": true
}
Supprime une clé de déploiement du projet. Si la clé de déploiement n'est utilisée que pour ce projet, elle est supprimée du système.
DELETE /projects/:id/deploy_keys/:key_id
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | entier ou chaîne de caractères | oui | L'ID ou le chemin encodé en URL du projet |
key_id | integer | oui | L'identifiant de la clé de déploiement |
curl --request DELETE \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/deploy_keys/13"
Active une clé de déploiement pour un projet afin qu'elle puisse être utilisée. Renvoie la clé activée, avec un code de statut 201 en cas de succès.
POST /projects/:id/deploy_keys/:key_id/enable
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | entier ou chaîne de caractères | oui | L'ID ou le chemin encodé en URL du projet |
key_id | integer | oui | L'identifiant de la clé de déploiement |
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/deploy_keys/12/enable"
Exemple de réponse :
{
"key": "ssh-rsa AAAA...",
"id": 12,
"title": "My deploy key",
"created_at": "2015-08-29T12:44:31.550Z",
"expires_at": null
}
Si vous souhaitez ajouter la même clé de déploiement à plusieurs projets du même groupe, cela peut être réalisé via l'API.
Tout d'abord, trouvez l'identifiant des projets qui vous intéressent, soit en listant tous les projets :
curl --request GET \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects"
Soit en trouvant l'identifiant d'un groupe :
curl --request GET \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups"
Puis en listant tous les projets de ce groupe (par exemple, le groupe 1234) :
curl --request GET \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/groups/1234"
Avec ces identifiants, ajoutez la même clé de déploiement à tous :
for project_id in 321 456 987; do
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data "{"title": "my key", "key": "ssh-rsa AAAA..."}" \
"https://gitlab.example.com/api/v4/projects/${project_id}/deploy_keys"
done