doc-locale/fr-fr/api/protected_branches.md
{{< details >}}
{{< /details >}}
Utilisez cette API pour gérer les branches protégées.
GitLab Premium et GitLab Ultimate prennent en charge des protections plus granulaires pour les push vers les branches. Les administrateurs peuvent accorder l'autorisation de modifier et de pousser vers des branches protégées uniquement aux clés de déploiement, au lieu d'utilisateurs spécifiques.
La méthode ProtectedRefAccess.allowed_access_levels définit les niveaux d'accès suivants utilisés dans les configurations de push, de fusion et de déprotection.
0 : Aucun accès - Valide pour les niveaux d'accès push et fusion uniquement. Non valide pour les niveaux d'accès de déprotection.30 : Développeur40 : Mainteneur60 : Administrateur - Valide pour GitLab Self-Managed uniquement.En plus des niveaux d'accès basés sur les rôles, vous pouvez attribuer l'accès par :
user_id) : Valide pour les niveaux d'accès push, fusion et déprotection.group_id) : Valide pour les niveaux d'accès push, fusion et déprotection. Le groupe doit avoir le rôle Développeur, Mainteneur ou Propriétaire pour le projet.deploy_key_id) : Valide pour les niveaux d'accès push uniquement.Pour plus d'informations, consultez les exemples de protection des branches du dépôt.
[!note] Pour éviter de verrouiller définitivement les paramètres de protection d'une branche, assurez-vous qu'au moins un utilisateur ou groupe conserve à tout moment les autorisations de déprotection pour la branche. Pour plus d'informations, consultez contrôler qui peut déprotéger les branches.
{{< history >}}
{{< /history >}}
Obtenez une liste des branches protégées d'un projet telles qu'elles sont définies dans l'interface utilisateur. Si un caractère générique est défini, il est retourné à la place du nom exact des branches qui correspondent à ce caractère générique.
GET /projects/:id/protected_branches
Attributs pris en charge :
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | entier ou chaîne | Oui | ID ou chemin encodé par URL du projet. |
search | string | Non | Nom ou partie du nom des branches protégées à rechercher. |
En cas de succès, retourne 200 OK et les attributs de réponse suivants :
| Attribut | Type | Description |
|---|---|---|
allow_force_push | boolean | Si true, le push forcé est autorisé sur cette branche. |
code_owner_approval_required | boolean | Si true, l'approbation du propriétaire du code est requise pour les push vers cette branche. |
id | entier | ID de la branche protégée. |
inherited | boolean | Si true, les paramètres de protection sont hérités du groupe parent. Premium et Ultimate uniquement. |
merge_access_levels | tableau | Tableau des configurations de niveau d'accès pour la fusion. |
merge_access_levels[].access_level | entier | Niveau d'accès pour la fusion. |
merge_access_levels[].access_level_description | string | Description lisible du niveau d'accès. |
merge_access_levels[].group_id | entier | ID du groupe avec accès à la fusion. Premium et Ultimate uniquement. |
merge_access_levels[].id | entier | ID de la configuration du niveau d'accès pour la fusion. |
merge_access_levels[].user_id | entier | ID de l'utilisateur avec accès à la fusion. Premium et Ultimate uniquement. |
name | string | Nom de la branche protégée. |
push_access_levels | tableau | Tableau des configurations de niveau d'accès pour le push. |
push_access_levels[].access_level | entier | Niveau d'accès pour le push. |
push_access_levels[].access_level_description | string | Description lisible du niveau d'accès. |
push_access_levels[].deploy_key_id | entier | ID de la clé de déploiement avec accès push. |
push_access_levels[].group_id | entier | ID du groupe avec accès push. Premium et Ultimate uniquement. |
push_access_levels[].id | entier | ID de la configuration du niveau d'accès pour le push. |
push_access_levels[].user_id | entier | ID de l'utilisateur avec accès push. Premium et Ultimate uniquement. |
Dans l'exemple de requête suivant, l'ID du projet est 5.
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/protected_branches"
L'exemple de réponse suivant comprend :
100 et 101.push_access_levels avec les IDs 1001, 1002 et 1003.merge_access_levels avec les IDs 2001 et 2002.[
{
"id": 100,
"name": "main",
"push_access_levels": [
{
"id": 1001,
"access_level": 40,
"access_level_description": "Maintainers"
},
{
"id": 1002,
"access_level": 40,
"access_level_description": "Deploy key",
"deploy_key_id": 1
}
],
"merge_access_levels": [
{
"id": 2001,
"access_level": 40,
"access_level_description": "Maintainers"
}
],
"allow_force_push":false,
"code_owner_approval_required": false
},
{
"id": 101,
"name": "release/*",
"push_access_levels": [
{
"id": 1003,
"access_level": 40,
"access_level_description": "Maintainers"
}
],
"merge_access_levels": [
{
"id": 2002,
"access_level": 40,
"access_level_description": "Maintainers"
}
],
"allow_force_push":false,
"code_owner_approval_required": false
}
]
Les utilisateurs de GitLab Premium ou Ultimate voient également les paramètres user_id, group_id et inherited. Si le paramètre inherited existe, le paramètre a été hérité du groupe du projet.
L'exemple de réponse suivant comprend :
100.push_access_levels avec les IDs 1001 et 1002.merge_access_levels avec l'ID 2001.[
{
"id": 101,
"name": "main",
"push_access_levels": [
{
"id": 1001,
"access_level": 40,
"user_id": null,
"group_id": null,
"access_level_description": "Maintainers"
},
{
"id": 1002,
"access_level": 40,
"access_level_description": "Deploy key",
"deploy_key_id": 1,
"user_id": null,
"group_id": null
}
],
"merge_access_levels": [
{
"id": 2001,
"access_level": null,
"user_id": null,
"group_id": 1234,
"access_level_description": "Example Merge Group"
}
],
"allow_force_push":false,
"code_owner_approval_required": false,
"inherited": true
}
]
Récupère une branche protégée spécifiée ou une branche protégée avec caractère générique.
GET /projects/:id/protected_branches/:name
Attributs pris en charge :
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | entier ou chaîne | Oui | ID ou chemin encodé par URL du projet. |
name | string | Oui | Nom de la branche ou du caractère générique. |
En cas de succès, retourne 200 OK et les attributs de réponse suivants :
| Attribut | Type | Description |
|---|---|---|
allow_force_push | boolean | Si true, le push forcé est autorisé sur cette branche. |
code_owner_approval_required | boolean | Si true, l'approbation du propriétaire du code est requise pour les push vers cette branche. |
id | entier | ID de la branche protégée. |
merge_access_levels | tableau | Tableau des configurations de niveau d'accès pour la fusion. |
merge_access_levels[].access_level | entier | Niveau d'accès pour la fusion. |
merge_access_levels[].access_level_description | string | Description lisible du niveau d'accès. |
merge_access_levels[].group_id | entier | ID du groupe avec accès à la fusion. Premium et Ultimate uniquement. |
merge_access_levels[].id | entier | ID de la configuration du niveau d'accès pour la fusion. |
merge_access_levels[].user_id | entier | ID de l'utilisateur avec accès à la fusion. Premium et Ultimate uniquement. |
name | string | Nom de la branche protégée. |
push_access_levels | tableau | Tableau des configurations de niveau d'accès pour le push. |
push_access_levels[].access_level | entier | Niveau d'accès pour le push. |
push_access_levels[].access_level_description | string | Description lisible du niveau d'accès. |
push_access_levels[].group_id | entier | ID du groupe avec accès push. Premium et Ultimate uniquement. |
push_access_levels[].id | entier | ID de la configuration du niveau d'accès pour le push. |
push_access_levels[].user_id | entier | ID de l'utilisateur avec accès push. Premium et Ultimate uniquement. |
Dans l'exemple de requête suivant, l'ID du projet est 5 et le nom de la branche est main :
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/protected_branches/main"
Exemple de réponse :
{
"id": 101,
"name": "main",
"push_access_levels": [
{
"id": 1001,
"access_level": 40,
"access_level_description": "Maintainers"
}
],
"merge_access_levels": [
{
"id": 2001,
"access_level": 40,
"access_level_description": "Maintainers"
}
],
"allow_force_push":false,
"code_owner_approval_required": false
}
Les utilisateurs de GitLab Premium ou Ultimate voient également les paramètres user_id et group_id.
Exemple de réponse :
{
"id": 101,
"name": "main",
"push_access_levels": [
{
"id": 1001,
"access_level": 40,
"user_id": null,
"group_id": null,
"access_level_description": "Maintainers"
}
],
"merge_access_levels": [
{
"id": 2001,
"access_level": null,
"user_id": null,
"group_id": 1234,
"access_level_description": "Example Merge Group"
}
],
"allow_force_push":false,
"code_owner_approval_required": false
}
{{< history >}}
deploy_key_id a été introduite dans GitLab 17.5.deploy_key_id a été déplacée de GitLab Premium vers GitLab Free dans GitLab 18.10.{{< /history >}}
Protégez une seule branche du dépôt ou plusieurs branches du dépôt du projet en utilisant une branche protégée avec caractère générique.
POST /projects/:id/protected_branches
Attributs pris en charge :
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | entier ou chaîne | Oui | ID ou chemin encodé par URL du projet. |
name | string | Oui | Nom de la branche ou du caractère générique. |
allow_force_push | boolean | Non | Si true, les membres pouvant effectuer un push vers cette branche peuvent également effectuer un push forcé. La valeur par défaut est false. |
allowed_to_merge | tableau | Non | Tableau des niveaux d'accès pour la fusion, chacun décrit par un hash de la forme {user_id: integer}, {group_id: integer} ou {access_level: integer}. Premium et Ultimate uniquement. |
allowed_to_push | tableau | Non | Tableau des niveaux d'accès pour le push, chacun décrit par un hash de la forme {user_id: integer}, {group_id: integer}, {deploy_key_id: integer} ou {access_level: integer}. user_id, group_id et access_level sont réservés à Premium et Ultimate. |
allowed_to_unprotect | tableau | Non | Tableau des niveaux d'accès pour la déprotection, chacun décrit par un hash de la forme {user_id: integer}, {group_id: integer} ou {access_level: integer}. Le niveau d'accès No access n'est pas disponible pour ce champ. Premium et Ultimate uniquement. |
code_owner_approval_required | boolean | Non | Si true, empêche les push vers cette branche si elle correspond à un élément du fichier CODEOWNERS. La valeur par défaut est false. Premium et Ultimate uniquement. |
merge_access_level | entier | Non | Niveaux d'accès autorisés à fusionner. La valeur par défaut est 40 (rôle Mainteneur). |
push_access_level | entier | Non | Niveaux d'accès autorisés à effectuer un push. La valeur par défaut est 40 (rôle Mainteneur). |
unprotect_access_level | entier | Non | Niveaux d'accès autorisés à déprotéger. La valeur par défaut est 40 (rôle Mainteneur). 0 (Aucun accès) n'est pas valide. |
Lorsque vous configurez des niveaux d'accès :
allowed_to_push et allowed_to_merge.id dans les tableaux allowed_to_push, allowed_to_merge ou allowed_to_unprotect. Le champ id identifie un enregistrement de niveau d'accès existant et n'est valide que lorsque vous mettez à jour une branche protégée. Si vous incluez un id qui ne correspond pas à un enregistrement existant, l'API retourne 404 Not Found.Ce comportement diffère de l'interface utilisateur, qui efface automatiquement les autres sélections de rôle lorsque vous sélectionnez Personne (access_level: 0).
En cas de succès, retourne 201 Created et les attributs de réponse suivants :
| Attribut | Type | Description |
|---|---|---|
allow_force_push | boolean | Si true, le push forcé est autorisé sur cette branche. |
code_owner_approval_required | boolean | Si true, l'approbation du propriétaire du code est requise pour les push vers cette branche. |
id | entier | ID de la branche protégée. |
merge_access_levels | tableau | Tableau des configurations de niveau d'accès pour la fusion. |
merge_access_levels[].access_level | entier | Niveau d'accès pour la fusion. |
merge_access_levels[].access_level_description | string | Description lisible du niveau d'accès. |
merge_access_levels[].group_id | entier | ID du groupe avec accès à la fusion. Premium et Ultimate uniquement. |
merge_access_levels[].id | entier | ID de la configuration du niveau d'accès pour la fusion. |
merge_access_levels[].user_id | entier | ID de l'utilisateur avec accès à la fusion. Premium et Ultimate uniquement. |
name | string | Nom de la branche protégée. |
push_access_levels | tableau | Tableau des configurations de niveau d'accès pour le push. |
push_access_levels[].access_level | entier | Niveau d'accès pour le push. |
push_access_levels[].access_level_description | string | Description lisible du niveau d'accès. |
push_access_levels[].deploy_key_id | entier | ID de la clé de déploiement avec accès push. |
push_access_levels[].group_id | entier | ID du groupe avec accès push. Premium et Ultimate uniquement. |
push_access_levels[].id | entier | ID de la configuration du niveau d'accès pour le push. |
push_access_levels[].user_id | entier | ID de l'utilisateur avec accès push. Premium et Ultimate uniquement. |
unprotect_access_levels | tableau | Tableau des configurations de niveau d'accès pour la déprotection. |
unprotect_access_levels[].access_level | entier | Niveau d'accès pour la déprotection. |
unprotect_access_levels[].access_level_description | string | Description lisible du niveau d'accès. |
unprotect_access_levels[].group_id | entier | ID du groupe avec accès à la déprotection. Premium et Ultimate uniquement. |
unprotect_access_levels[].id | entier | ID de la configuration du niveau d'accès pour la déprotection. |
unprotect_access_levels[].user_id | entier | ID de l'utilisateur avec accès à la déprotection. Premium et Ultimate uniquement. |
Dans l'exemple de requête suivant, l'ID du projet est 5 et le nom de la branche est *-stable.
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/protected_branches?name=*-stable&push_access_level=30&merge_access_level=30&unprotect_access_level=40"
L'exemple de réponse comprend :
101.push_access_levels avec l'ID 1001.merge_access_levels avec l'ID 2001.unprotect_access_levels avec l'ID 3001.{
"id": 101,
"name": "*-stable",
"push_access_levels": [
{
"id": 1001,
"access_level": 30,
"access_level_description": "Developers + Maintainers"
}
],
"merge_access_levels": [
{
"id": 2001,
"access_level": 30,
"access_level_description": "Developers + Maintainers"
}
],
"unprotect_access_levels": [
{
"id": 3001,
"access_level": 40,
"access_level_description": "Maintainers"
}
],
"allow_force_push":false,
"code_owner_approval_required": false
}
Les utilisateurs de GitLab Premium ou Ultimate voient également les paramètres user_id et group_id :
L'exemple de réponse suivant comprend :
101.push_access_levels avec l'ID 1001.merge_access_levels avec l'ID 2001.unprotect_access_levels avec l'ID 3001.{
"id": 1,
"name": "*-stable",
"push_access_levels": [
{
"id": 1001,
"access_level": 30,
"user_id": null,
"group_id": null,
"access_level_description": "Developers + Maintainers"
}
],
"merge_access_levels": [
{
"id": 2001,
"access_level": 30,
"user_id": null,
"group_id": null,
"access_level_description": "Developers + Maintainers"
}
],
"unprotect_access_levels": [
{
"id": 3001,
"access_level": 40,
"user_id": null,
"group_id": null,
"access_level_description": "Maintainers"
}
],
"allow_force_push":false,
"code_owner_approval_required": false
}
{{< details >}}
{{< /details >}}
Les éléments du tableau allowed_to_push / allowed_to_merge / allowed_to_unprotect doivent prendre la forme {user_id: integer}, {group_id: integer} ou {access_level: integer}. Chaque utilisateur doit avoir accès au projet et chaque groupe doit avoir ce projet partagé. Ces niveaux d'accès permettent un contrôle plus granulaire sur l'accès aux branches protégées. Pour plus d'informations, consultez configurer les autorisations de groupe.
L'exemple de requête suivant crée une branche protégée avec un accès push utilisateur et un accès fusion groupe. Le user_id est 2 et le group_id est 3.
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/protected_branches?name=*-stable&allowed_to_push%5B%5D%5Buser_id%5D=2&allowed_to_merge%5B%5D%5Bgroup_id%5D=3"
L'exemple de réponse suivant comprend :
101.push_access_levels avec l'ID 1001.merge_access_levels avec l'ID 2001.unprotect_access_levels avec l'ID 3001.{
"id": 101,
"name": "*-stable",
"push_access_levels": [
{
"id": 1001,
"access_level": null,
"user_id": 2,
"group_id": null,
"access_level_description": "Administrator"
}
],
"merge_access_levels": [
{
"id": 2001,
"access_level": null,
"user_id": null,
"group_id": 3,
"access_level_description": "Example Merge Group"
}
],
"unprotect_access_levels": [
{
"id": 3001,
"access_level": 40,
"user_id": null,
"group_id": null,
"access_level_description": "Maintainers"
}
],
"allow_force_push":false,
"code_owner_approval_required": false
}
{{< history >}}
{{< /history >}}
Les éléments du tableau allowed_to_push doivent prendre la forme {user_id: integer}, {group_id: integer}, {deploy_key_id: integer} ou {access_level: integer}. La clé de déploiement doit être activée pour votre projet et doit avoir un accès en écriture à votre dépôt de projet. Pour les autres exigences, consultez autoriser les clés de déploiement à effectuer un push vers une branche protégée.
Exemple de requête :
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/protected_branches?name=*-stable&allowed_to_push[][deploy_key_id]=1"
L'exemple de réponse suivant comprend :
101.push_access_levels avec l'ID 1001.merge_access_levels avec l'ID 2001.unprotect_access_levels avec l'ID 3001.{
"id": 101,
"name": "*-stable",
"push_access_levels": [
{
"id": 1001,
"access_level": null,
"user_id": null,
"group_id": null,
"deploy_key_id": 1,
"access_level_description": "Deploy"
}
],
"merge_access_levels": [
{
"id": 2001,
"access_level": 40,
"user_id": null,
"group_id": null,
"access_level_description": "Maintainers"
}
],
"unprotect_access_levels": [
{
"id": 3001,
"access_level": 40,
"user_id": null,
"group_id": null,
"access_level_description": "Maintainers"
}
],
"allow_force_push":false,
"code_owner_approval_required": false
}
{{< details >}}
{{< /details >}}
{{< history >}}
{{< /history >}}
Exemple de requête :
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data '{
"name": "main",
"allowed_to_push": [
{"access_level": 30}
],
"allowed_to_merge": [
{"access_level": 30},
{"access_level": 40}
]
}' \
--url "https://gitlab.example.com/api/v4/projects/5/protected_branches"
L'exemple de réponse suivant comprend :
105.push_access_levels avec l'ID 1001.merge_access_levels avec les IDs 2001 et 2002.unprotect_access_levels avec l'ID 3001.{
"id": 105,
"name": "main",
"push_access_levels": [
{
"id": 1001,
"access_level": 30,
"access_level_description": "Developers + Maintainers",
"user_id": null,
"group_id": null
}
],
"merge_access_levels": [
{
"id": 2001,
"access_level": 30,
"access_level_description": "Developers + Maintainers",
"user_id": null,
"group_id": null
},
{
"id": 2002,
"access_level": 40,
"access_level_description": "Maintainers",
"user_id": null,
"group_id": null
}
],
"unprotect_access_levels": [
{
"id": 3001,
"access_level": 40,
"access_level_description": "Maintainers",
"user_id": null,
"group_id": null
}
],
"allow_force_push":false,
"code_owner_approval_required": false
}
{{< details >}}
{{< /details >}}
Pour créer une branche protégée où seul un groupe spécifique peut déprotéger la branche :
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data '{
"name": "production",
"allowed_to_unprotect": [
{"group_id": 789}
]
}' \
--url "https://gitlab.example.com/api/v4/projects/5/protected_branches"
Pour permettre à plusieurs types d'utilisateurs de déprotéger une branche :
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data '{
"name": "main",
"allowed_to_unprotect": [
{"user_id": 123},
{"group_id": 456},
{"access_level": 40}
]
}' \
--url "https://gitlab.example.com/api/v4/projects/5/protected_branches"
Cette configuration permet à ces utilisateurs de déprotéger la branche :
123.456.Déprotège la branche protégée ou la branche protégée avec caractère générique spécifiée.
DELETE /projects/:id/protected_branches/:name
Attributs pris en charge :
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | entier ou chaîne | Oui | ID ou chemin encodé par URL du projet. |
name | string | Oui | Nom de la branche. |
En cas de succès, retourne 204 No Content.
Dans l'exemple de requête suivant, l'ID du projet est 5 et le nom de la branche est *-stable :
curl --request DELETE \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/protected_branches/*-stable"
{{< history >}}
deploy_key_id a été introduite dans GitLab 17.5.{{< /history >}}
Mettre à jour une branche protégée.
PATCH /projects/:id/protected_branches/:name
Attributs pris en charge :
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
id | entier ou chaîne | Oui | ID ou chemin encodé par URL du projet. |
name | string | Oui | Nom de la branche ou du caractère générique. |
allow_force_push | boolean | Non | Si true, les membres pouvant effectuer un push vers cette branche peuvent également effectuer un push forcé. |
allowed_to_merge | tableau | Non | Tableau des niveaux d'accès pour la fusion, chacun décrit par un hash de la forme {user_id: integer}, {group_id: integer} ou {access_level: integer}. Premium et Ultimate uniquement. |
allowed_to_push | tableau | Non | Tableau des niveaux d'accès pour le push, chacun décrit par un hash de la forme {user_id: integer}, {group_id: integer}, {deploy_key_id: integer} ou {access_level: integer}. user_id, group_id et access_level sont réservés à Premium et Ultimate. |
allowed_to_unprotect | tableau | Non | Tableau des niveaux d'accès pour la déprotection, chacun décrit par un hash de la forme {user_id: integer}, {group_id: integer}, {access_level: integer} ou {id: integer, _destroy: true} pour supprimer un niveau d'accès existant. Le niveau d'accès No access n'est pas disponible pour ce champ. Premium et Ultimate uniquement. |
code_owner_approval_required | boolean | Non | Si true, empêche les push vers cette branche si elle correspond à un élément du fichier CODEOWNERS. Premium et Ultimate uniquement. |
Pour plus d'informations sur la façon dont les niveaux d'accès interagissent lorsque vous définissez plusieurs valeurs, consultez protéger les branches du dépôt.
En cas de succès, retourne 200 OK et les attributs de réponse suivants :
| Attribut | Type | Description |
|---|---|---|
allow_force_push | boolean | Si true, le push forcé est autorisé sur cette branche. |
code_owner_approval_required | boolean | Si true, l'approbation du propriétaire du code est requise pour les push vers cette branche. |
id | entier | ID de la branche protégée. |
merge_access_levels | tableau | Tableau des configurations de niveau d'accès pour la fusion. |
merge_access_levels[].access_level | entier | Niveau d'accès pour la fusion. |
merge_access_levels[].access_level_description | string | Description lisible du niveau d'accès. |
merge_access_levels[].group_id | entier | ID du groupe avec accès à la fusion. Premium et Ultimate uniquement. |
merge_access_levels[].id | entier | ID de la configuration du niveau d'accès pour la fusion. |
merge_access_levels[].user_id | entier | ID de l'utilisateur avec accès à la fusion. Premium et Ultimate uniquement. |
name | string | Nom de la branche protégée. |
push_access_levels | tableau | Tableau des configurations de niveau d'accès pour le push. |
push_access_levels[].access_level | entier | Niveau d'accès pour le push. |
push_access_levels[].access_level_description | string | Description lisible du niveau d'accès. |
push_access_levels[].deploy_key_id | entier | ID de la clé de déploiement avec accès push. |
push_access_levels[].group_id | entier | ID du groupe avec accès push. Premium et Ultimate uniquement. |
push_access_levels[].id | entier | ID de la configuration du niveau d'accès pour le push. |
push_access_levels[].user_id | entier | ID de l'utilisateur avec accès push. Premium et Ultimate uniquement. |
unprotect_access_levels | tableau | Tableau des configurations de niveau d'accès pour la déprotection. |
unprotect_access_levels[].access_level | entier | Niveau d'accès pour la déprotection. |
unprotect_access_levels[].access_level_description | string | Description lisible du niveau d'accès. |
unprotect_access_levels[].group_id | entier | ID du groupe avec accès à la déprotection. Premium et Ultimate uniquement. |
unprotect_access_levels[].id | entier | ID de la configuration du niveau d'accès pour la déprotection. |
unprotect_access_levels[].user_id | entier | ID de l'utilisateur avec accès à la déprotection. Premium et Ultimate uniquement. |
Exemple de requête :
curl --request PATCH \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/protected_branches/feature-branch?allow_force_push=true&code_owner_approval_required=true"
Les éléments des tableaux allowed_to_push, allowed_to_merge et allowed_to_unprotect doivent être l'un des éléments suivants : user_id, group_id ou access_level, et prendre la forme {user_id: integer}, {group_id: integer} ou {access_level: integer}.
allowed_to_push inclut un élément supplémentaire, deploy_key_id, qui prend la forme {deploy_key_id: integer}.
Pour mettre à jour :
user_id : Assurez-vous que l'utilisateur mis à jour a accès au projet. Incluez le id de l'enregistrement du niveau d'accès dans le hash.group_id : Assurez-vous que le groupe mis à jour a ce projet partagé. Incluez le id de l'enregistrement du niveau d'accès dans le hash.deploy_key_id : Assurez-vous que la clé de déploiement est activée pour votre projet et dispose d'un accès en écriture à votre dépôt de projet.Pour mettre à jour tout autre champ d'un enregistrement de niveau d'accès existant, incluez le id de l'enregistrement dans le hash.
Pour supprimer, vous devez passer _destroy défini sur true. Consultez les exemples suivants.
push_access_level {#example-create-a-push_access_level-record}curl --header 'Content-Type: application/json' --request PATCH \
--data '{"allowed_to_push": [{"access_level": 40}]}' \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/22034114/protected_branches/main"
Exemple de réponse :
{
"name": "main",
"push_access_levels": [
{
"id": 12,
"access_level": 40,
"access_level_description": "Maintainers",
"user_id": null,
"group_id": null
}
]
}
push_access_level {#example-update-a-push_access_level-record}curl --header 'Content-Type: application/json' --request PATCH \
--data '{"allowed_to_push": [{"id": 12, "access_level": 0}]}' \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/22034114/protected_branches/main"
Exemple de réponse :
{
"name": "main",
"push_access_levels": [
{
"id": 12,
"access_level": 0,
"access_level_description": "No One",
"user_id": null,
"group_id": null
}
]
}
push_access_level {#example-delete-a-push_access_level-record}curl --header 'Content-Type: application/json' --request PATCH \
--data '{"allowed_to_push": [{"id": 12, "_destroy": true}]}' \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/22034114/protected_branches/main"
Exemple de réponse :
{
"name": "main",
"push_access_levels": []
}
unprotect_access_level {#example-update-an-unprotect_access_level-record}Prérequis :
allowed_to_unprotect.user_id doit être membre du projet.group_id doivent avoir accès au projet.Pour modifier qui peut déprotéger une branche protégée existante, incluez le id de l'enregistrement du niveau d'accès existant. Par exemple :
curl --request PATCH \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data '{
"allowed_to_unprotect": [
{"id": 17486, "user_id": 3791}
]
}' \
--url "https://gitlab.example.com/api/v4/projects/5/protected_branches/main"
Pour supprimer des niveaux d'accès spécifiques, utilisez _destroy: true.