Проект в GitLab может быть либо приватным, либо внутренним, либо публичным.
Это определяется полем visibility
проекта.
Значения для уровня видимости проекта:
private
:
Доступ к проекту должен быть явно предоставлен каждому пользователю.
internal
:
Проект может быть клонирован любым авторизованным пользователем.
public
:
Проект может быть клонирован без какой-либо аутентификации.
Получение списка видимых проектов для авторизованного пользователя. При доступе без аутентификации возвращаются только публичные проекты.
GET /projects
Параметры:| Атрибут | Тип | Обязательный | Описание |
| --------- | ---- | -------- | ----------- |
| archived
| boolean | нет | Ограничение по статусу архивации |
| visibility
| string | нет | Ограничение по видимости public
, internal
, или private
|
| order_by
| string | нет | Возвращение проектов, отсортированных по полям id
, name
, path
, created_at
, updated_at
, или last_activity_at
. По умолчанию используется created_at
|
| sort
| string | нет | Возвращение проектов, отсортированных в порядке asc
или desc
. По умолчанию используется desc
|
| search
| string | нет | Возвращение списка проектов, соответствующих критериям поиска |
| simple
| boolean | нет | Возвращение только ID, URL, имени и пути каждого проекта |
| owned
| boolean | нет | Ограничение по проектам, владельцем которых является текущий пользователь |
| membership
| boolean | нет | Ограничение по проектам, в которых текущий пользователь является участником |
| starred
| boolean | нет | Ограничение по проектам, отмеченным текущим пользователем |
| statistics
| boolean | нет | Включение статистики проекта |
| with_issues_enabled
| boolean | нет | Ограничение по включенной функции проблем |
| with_merge_requests_enabled
| boolean | нет | Ограничение по включенной функции слияния запросов |```json
[
{
"id": 4,
"description": null,
"default_branch": "master",
"visibility": "private",
"ssh_url_to_repo": "git@example.com:diaspora/diaspora-client.git",
"http_url_to_repo": "http://example.com/diaspora/diaspora-client.git",
"web_url": "http://example.com/diaspora/diaspora-client",
"tag_list": [
"example",
"disapora client"
],
"owner": {
"id": 3,
"name": "Diaspora",
"created_at": "2013-09-30T13:46:02Z"
},
] "name": "Diaspora Client",
"name_with_namespace": "Diaspora / Diaspora Client",
"path": "diaspora-client",
"path_with_namespace": "diaspora/diaspora-client",
"issues_enabled": true,
"open_issues_count": 1,
"merge_requests_enabled": true,
"jobs_enabled": true,
"wiki_enabled": true,
"snippets_enabled": false,
"container_registry_enabled": false,
"created_at": "2013-09-30T13:46:02Z",
"last_activity_at": "2013-09-30T13:46:02Z",
"creator_id": 3,
"namespace": {
"id": 3,
"name": "Diaspora",
"path": "diaspora",
"kind": "group",
"full_path": "diaspora"
},
"import_status": "none",
"archived": false,
"avatar_url": "http://example. com/uploads/project/avatar/4/uploads/avatar. png",
"shared_runners_enabled": true,
"forks_count": 0,
"star_count": 0,
"runners_token": "b8547b1dc37721d05889db52fa2f02",
"public_jobs": true,
"shared_with_groups": [],
"only_allow_merge_if_pipeline_succeeds": false,
"only_allow_merge_if_all_discussions_are_resolved": false,
"request_access_enabled": false,
"statistics": {
"commit_count": 37,
"storage_size": 1038090,
"repository_size": 1038090,
"lfs_objects_size": 0,
"job_artifacts_size": 0
}
},
{
"id": 6,
"description": null,
"default_branch": "master",
"visibility": "private",
"ssh_url_to_repo": "git@example. com:brightbox/puppet. git",
"http_url_to_repo": "http://example. com/brightbox/puppet. git",
"web_url": "http://example. com/brightbox/puppet",
"tag_list": [
"example",
"puppet"
],
"owner": {
"id": 4,
"name": "Brightbox",
"created_at": "2013-09-30T13:46:02Z"
},
"name": "Puppet",
"name_with_namespace": "Brightbox / Puppet",
"path": "puppet",
"path_with_namespace": "brightbox/puppet",
"issues_enabled": true,
"open_issues_count": 1,
"merge_requests_enabled": true,
"jobs_enabled": true,
"wiki_enabled": true,
"snippets_enabled": false,
"container_registry_enabled": false,
"created_at": "2013-09-30T13:46:02Z",
"last_activity_at": "2013-09-30T13:46:02Z",
"creator_id": 3,
"namespace": {
"id": 4,
"name": "Brightbox",
"path": "brightbox",
"kind": "group",
"full_path": "brightbox"
}
] "full_path": "brightbox",
},
"import_status": "none",
"import_error": null,
"permissions": {
"project_access": {
"access_level": 10,
"notification_level": 3
},
"group_access": {
"access_level": 50,
"notification_level": 3
}
},
"archived": false,
"avatar_url": null,
"shared_runners_enabled": true,
"forks_count": 0,
"star_count": 0,
"runners_token": "b8547b1dc37721d05889db52fa2f02",
"public_jobs": true,
"shared_with_groups": [],
"only_allow_merge_if_pipeline_succeeds": false,
"only_allow_merge_if_all_discussions_are_resolved": false,
"request_access_enabled": false,
"statistics": {
"commit_count": 12,
"storage_size": 2066080,
"repository_size": 2066080,
"lfs_objects_size": 0,
"job_artifacts_size": 0
}
}
]
GET /projects/:id
Параметры:| Атрибут | Тип | Обязательный | Описание |
| -------- | ---- | ------------ | ----------- |
| `id` | integer/string | да | Идентификатор или [URL-кодированная строка пути проекта](README.md#namespaced-path-encoding) |
| `statistics` | boolean | нет | Включить статистику проекта |```json
{
"id": 3,
"description": null,
"default_branch": "master",
"visibility": "private",
"ssh_url_to_repo": "git@example.com:diaspora/diaspora-project-site.git",
"http_url_to_repo": "http://example.com/diaspora/diaspora-project-site.git",
"web_url": "http://example.com/diaspora/diaspora-project-site",
"tag_list": [
"пример",
"проект diaspora"
],
"owner": {
"id": 3,
"name": "Diaspora",
"created_at": "2013-09-30T13:46:02Z"
},
"name": "Сайт проекта Diaspora",
"name_with_namespace": "Diaspora / Сайт проекта Diaspora",
"path": "diaspora-project-site",
"path_with_namespace": "diaspora/diaspora-project-site",
"issues_enabled": true,
"open_issues_count": 1,
"merge_requests_enabled": true,
"jobs_enabled": true,
"wiki_enabled": true,
"snippets_enabled": false,
"container_registry_enabled": false,
"created_at": "2013-09-30T13:46:02Z",
"last_activity_at": "2013-09-30T13:46:02Z",
"creator_id": 3,
"namespace": {
"id": 3,
"name": "Diaspora",
"path": "diaspora",
"kind": "group",
"full_path": "diaspora"
},
"import_status": "none",
"import_error": null,
"permissions": {
"project_access": {
"access_level": 10,
"notification_level": 3
},
"group_access": {
"access_level": 50,
"notification_level": 3
}
},
"archived": false,
"avatar_url": "http://example.com/uploads/project/avatar/3/uploads/avatar.png",
"shared_runners_enabled": true,
"forks_count": 0,
"star_count": 0,
"runners_token": "b8bc4a7a29eb76ea83cf79e4908c2b",
"public_jobs": true,
"shared_with_groups": [
{
"group_id": 4,
"group_name": "Twitter",
"group_access_level": 30
},
{
"group_id": 3,
"group_name": "Gitlab Org",
"group_access_level": 10
}
],
"only_allow_merge_if_pipeline_succeeds": false,
"only_allow_merge_if_all_discussions_are_resolved": false,
"printing_merge_requests_link_enabled": true,
} "request_access_enabled": false,
"statistics": {
"commit_count": 37,
"storage_size": 1038090,
"repository_size": 1038090,
"lfs_objects_size": 0,
"job_artifacts_size": 0
}
}
```## Получить список пользователей проекта```Получить список пользователей проекта.
Параметры:
| Атрибут | Тип | Обязательный | Описание |
| -------- | ---- | ------------ | --------- |
| `search` | string | нет | Поиск конкретных пользователей |
GET /projects/:id/users
```json
[
{
"id": 1,
"username": "john_smith",
"name": "John Smith",
"state": "active",
"avatar_url": "http://localhost:3000/uploads/user/avatar/1/cd8.jpeg",
"web_url": "http://localhost:3000/john_smith"
},
{
"id": 2,
"username": "jack_smith",
"name": "Jack Smith",
"state": "blocked",
"avatar_url": "http://gravatar.com/../e32131cd8.jpeg",
"web_url": "http://localhost:3000/jack_smith"
}
]
Для получения дополнительной информации обратитесь к документации API событий
Создает новый проект, владельцем которого является аутентифицированный пользователь.
POST /projects
```Параметры:| Атрибут | Тип | Обязательный | Описание |
| --------- | ---- | -------- | ----------- |
| `name` | string | да, если путь не указан | Имя нового проекта. Равно пути, если путь не указан. |
| `path` | string | да, если имя не указано | Путь репозитория для нового проекта. Генерируется на основе имени, если путь не указан (генерируется в нижнем регистре с дефисами). |
| `namespace_id` | integer | нет | Пространство имен для нового проекта (по умолчанию текущее пространство имен пользователя) |
| `description` | string | нет | Краткое описание проекта |
| `issues_enabled` | boolean | нет | Включить задачи для этого проекта |
| `merge_requests_enabled` | boolean | нет | Включить запросы на слияние для этого проекта |
| `jobs_enabled` | boolean | нет | Включить задания для этого проекта |
| `wiki_enabled` | boolean | нет | Включить wiki для этого проекта |
| `snippets_enabled` | boolean | нет | Включить фрагменты кода для этого проекта |
| `container_registry_enabled` | boolean | нет | Включить реестр контейнеров для этого проекта |
| `shared_runners_enabled` | boolean | нет | Включить общие строители для этого проекта |
| `visibility` | string | нет | См. [уровень видимости проекта](#project-visibility-level) |
| `import_url` | string | нет | URL для импорта репозитория |
| `public_jobs` | boolean | нет | Если `true`, задания могут быть просмотрены неучастниками проекта |
| `only_allow_merge_if_pipeline_succeeds` | boolean | нет | Установить, могут ли запросы на слияние быть выполнены только при успешном выполнении конвейера || `only_allow_merge_if_all_discussions_are_resolved` | boolean | нет | Установить, могут ли запросы на слияние быть выполнены только при разрешении всех обсуждений |
| `lfs_enabled` | boolean | нет | Включить LFS |
| `request_access_enabled` | boolean | нет | Разрешить пользователям запрашивать доступ к проекту |
| `tag_list` | array | нет | Список тегов для проекта; передайте массив тегов, которые должны быть в конечном итоге присвоены проекту |
| `avatar` | mixed | нет | Изображение для аватара проекта |
| `printing_merge_request_link_enabled` | boolean | нет | Показывать ссылку для создания/просмотра запроса на слияние при отправке из командной строки |
### Создание проекта для пользователяСоздает новый проект, владельцем которого является указанный пользователь. Доступно только для администраторов.
POST /projects/user/:user_id
Параметры:| Атрибут | Тип | Обязательный | Описание |
| -------- | ---- | ------------ | --------- |
| `user_id` | integer | да | ID пользователя, который является владельцем проекта |
| `name` | string | да | Название нового проекта |
| `path` | string | нет | Пользовательское имя репозитория для нового проекта. По умолчанию генерируется на основе названия |
| `default_branch` | string | нет | По умолчанию `master` |
| `namespace_id` | integer | нет | Namespace для нового проекта (по умолчанию используется namespace текущего пользователя) |
| `description` | string | нет | Краткое описание проекта |
| `issues_enabled` | boolean | нет | Включение задач для этого проекта |
| `merge_requests_enabled` | boolean | нет | Включение запросов на слияние для этого проекта |
| `jobs_enabled` | boolean | нет | Включение задач для этого проекта |
| `wiki_enabled` | boolean | нет | Включение wiki для этого проекта |
| `snippets_enabled` | boolean | нет | Включение фрагментов кода для этого проекта |
| `container_registry_enabled` | boolean | нет | Включение реестра контейнеров для этого проекта |
| `shared_runners_enabled` | boolean | нет | Включение общих сборщиков для этого проекта |
| `visibility` | string | нет | См. [уровень видимости проекта](#уровень-видимости-проекта) |
| `import_url` | string | нет | URL для импорта репозитория |
| `public_jobs` | boolean | нет | Если `true`, задачи могут быть просмотрены неучастниками проекта |
| `only_allow_merge_if_pipeline_succeeds` | boolean | нет | Установка того, могут ли запросы на слияние быть выполнены только при успешном выполнении задач || `only_allow_merge_if_all_discussions_are_resolved` | boolean | нет | Установка того, могут ли запросы на слияние быть выполнены только при разрешении всех обсуждений |
| `lfs_enabled` | boolean | нет | Включение LFS |
| `request_access_enabled` | boolean | нет | Разрешение пользователям запрашивать доступ участника |
| `tag_list` | array | нет | Список тегов для проекта; передайте массив тегов, которые должны быть в конечном итоге присвоены проекту |
| `avatar` | mixed | нет | Файл изображения для аватара проекта |
| `printing_merge_request_link_enabled` | boolean | нет | Отображение ссылки для создания/просмотра запроса на слияние при отправке из командной строки |### Редактирование проекта
Обновляет существующий проект.
PUT /projects/:id
Параметры:| Атрибут | Тип | Обязательный | Описание |
| --------- | ---- | -------- | ----------- |
| `id` | integer/string | да | ID или [URL-кодированное имя проекта](README.md#namespaced-path-encoding) |
| `name` | string | да | Имя проекта |
| `path` | string | нет | Пользовательское имя репозитория для проекта. По умолчанию генерируется на основе имени |
| `default_branch` | string | нет | По умолчанию `master` |
| `description` | string | нет | Краткое описание проекта |
| `issues_enabled` | boolean | нет | Включить задачи для этого проекта |
| `merge_requests_enabled` | boolean | нет | Включить слияния запросов для этого проекта |
| `jobs_enabled` | boolean | нет | Включить задания для этого проекта |
| `wiki_enabled` | boolean | нет | Включить wiki для этого проекта |
| `snippets_enabled` | boolean | нет | Включить фрагменты кода для этого проекта |
| `container_registry_enabled` | boolean | нет | Включить реестр контейнеров для этого проекта |
| `shared_runners_enabled` | boolean | нет | Включить общие сборщики для этого проекта |
| `visibility` | string | нет | См. [уровень видимости проекта](#project-visibility-level) |
| `import_url` | string | нет | URL для импорта репозитория |
| `public_jobs` | boolean | нет | Если `true`, задания могут быть просмотрены неучастниками проекта |
| `only_allow_merge_if_pipeline_succeeds` | boolean | нет | Установить, могут ли запросы слияния быть выполнены только при успешном выполнении заданий |
| `only_allow_merge_if_all_discussions_are_resolved` | boolean | нет | Установить, могут ли запросы слияния быть выполнены только при разрешении всех обсуждений |
| `lfs_enabled` | boolean | нет | Включить LFS || `request_access_enabled` | boolean | нет | Разрешить пользователям запрашивать доступ к проекту |
| `tag_list` | array | нет | Список тегов для проекта; передайте массив тегов, которые должны быть назначены проекту |
| `avatar` | mixed | нет | Изображение для аватара проекта |### Клонирование проекта
Клонирует проект в пространство имен пользователя, аутентифицированного пользователя или указанного пользователя.
Процесс клонирования проекта асинхронный и завершается в фоновом режиме. Запрос вернётся немедленно. Чтобы определить, завершилось ли клонирование проекта, запросите `import_status` для нового проекта.
POST /projects/:id/fork
Параметры:
| Атрибут | Тип | Обязательный | Описание |
| -------- | ---- | ------------ | --------- |
| `id` | integer/string | да | ID или [URL-кодированное имя проекта](README.md#namespaced-path-encoding) |
| `namespace` | integer/string | да | ID или путь пространства имен, в которое будет форкнут проект |
### Добавить звездочку проекту
Добавляет звездочку к указанному проекту. Возвращает статус-код `304`, если проект уже имеет звездочку.
POST /projects/:id/star
Параметры:
| Атрибут | Тип | Обязательный | Описание |
| -------- | ---- | ------------ | --------- |
| `id` | integer/string | да | ID или [URL-кодированное имя проекта](README.md#namespaced-path-encoding) |
```bash
curl --request POST --header "PRIVATE-TOKEN: bkjXpg98eAheJpvBs5tK" "https://gitlab.example.com/api/v4/projects/5/star"
Пример ответа:```json { "id": 3, "description": null, "default_branch": "master", "visibility": "internal", "ssh_url_to_repo": "git@example.com:diaspora/diaspora-project-site.git", "http_url_to_repo": "http://example.com/diaspora/diaspora-project-site.git", "web_url": "http://example.com/diaspora/diaspora-project-site", "tag_list": [ "example", "disapora project" ], "name": "Diaspora Project Site", "name_with_namespace": "Diaspora / Diaspora Project Site", "path": "diaspora-project-site", "path_with_namespace": "diaspora/diaspora-project-site", "issues_enabled": true, "open_issues_count": 1, "merge_requests_enabled": true, "jobs_enabled": true, "wiki_enabled": true, "snippets_enabled": false, "container_registry_enabled": false, "created_at": "2013-09-30T13:46:02Z", "last_activity_at": "2013-09-30T13:46:02Z", "creator_id": 3, "namespace": { "id": 3, "name": "Diaspora", "path": "diaspora", "kind": "group", "full_path": "diaspora" }, "import_status": "none", "archived": true, "avatar_url": "http://example.com/uploads/project/avatar/3/uploads/avatar.png", "shared_runners_enabled": true, "forks_count": 0, "star_count": 1, "public_jobs": true, "shared_with_groups": [], "only_allow_merge_if_pipeline_succeeds": false, "only_allow_merge_if_all_discussions_are_resolved": false, "request_access_enabled": false }
### Отменить отметку звездой проектаОтменяет отметку звездой для заданного проекта. Возвращает статус-код `304`, если проект не отмечен звездой.
POST /projects/:id/unstar
| Атрибут | Тип | Обязательный | Описание |
| -------- | ---- | -------- | ----------- |
| `id` | integer/string | да | ID или [URL-кодированный путь проекта](README.md#namespaced-path-encoding) |
```bash
curl --request POST --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" "https://gitlab.example.com/api/v4/projects/5/unstar"
Пример ответа:
{
"id": 3,
"description": null,
"default_branch": "master",
"visibility": "internal",
"ssh_url_to_repo": "git@example.com:diaspora/diaspora-project-site.git",
"http_url_to_repo": "http://example.com/diaspora/diaspora-project-site.git",
"web_url": "http://example.com/diaspora/diaspora-project-site",
"tag_list": [
"example",
"disapora project"
],
"name": "Diaspora Project Site",
"name_with_namespace": "Diaspora / Diaspora Project Site",
"path": "diaspora-project-site",
"path_with_namespace": "diaspora/diaspora-project-site",
"issues_enabled": true,
"open_issues_count": 1,
"merge_requests_enabled": true,
"jobs_enabled": true,
"wiki_enabled": true,
"snippets_enabled": false,
"container_registry_enabled": false,
"created_at": "2013-09-30T13:46:02Z",
"last_activity_at": "2013-09-30T13:46:02Z",
"creator_id": 3,
"namespace": {
"id": 3,
"name": "Diaspora",
"path": "diaspora",
"kind": "group",
"full_path": "diaspora"
},
"import_status": "none",
"archived": true,
"avatar_url": "http://example.com/uploads/project/avatar/3/uploads/avatar.png",
"shared_runners_enabled": true,
"forks_count": 0,
"star_count": 0,
"public_jobs": true,
"shared_with_groups": [],
"only_allow_merge_if_pipeline_succeeds": false,
"only_allow_merge_if_all_discussions_are_resolved": false,
"request_access_enabled": false
}
Архивирует проект, если пользователь является администратором или владельцем проекта. Эта операция идемпотентна, то есть архивирование уже архивированного проекта не изменит проект.``` POST /projects/:id/archive
| Атрибут | Тип | Обязательный | Описание |
| -------- | ---- | -------- | ----------- |
| `id` | integer/string | да | ID или [URL-кодированный путь проекта](README.md#namespaced-path-encoding) |
Пример запроса:
```bash
curl --request POST --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" "https://gitlab.example.com/api/v4/projects/5/archive"
Пример ответа:
{
"id": 3,
"description": null,
"default_branch": "master",
"visibility": "private",
"ssh_url_to_repo": "git@example.com:diaspora/diaspora-project-site.git",
"http_url_to_repo": "http://example.com/diaspora/diaspora-project-site.git",
"web_url": "http://example.com/diaspora/diaspora-project-site",
"tag_list": [
"example",
"disapora project"
],
"owner": {
"id": 3,
"name": "Diaspora",
"created_at": "2013-09-30T13:46:02Z"
},
"name": "Diaspora Project Site",
"name_with_namespace": "Diaspora / Diaspora Project Site",
"path": "diaspora-project-site",
"path_with_namespace": "diaspora/diaspora-project-site",
"issues_enabled": true,
"open_issues_count": 1,
"merge_requests_enabled": true,
"jobs_enabled": true,
"wiki_enabled": true,
"snippets_enabled": false,
"container_registry_enabled": false,
"created_at": "2013-09-30T13:46:02Z",
"last_activity_at": "2013-09-30T13:46:02Z",
"creator_id": 3,
"namespace": {
"id": 3,
"name": "Diaspora",
"path": "diaspora",
"kind": "group",
"full_path": "diaspora"
},
"import_status": "none",
"import_error": null,
"permissions": {
"project_access": {
"access_level": 10,
"notification_level": 3
},
"group_access": {
"access_level": 50,
"notification_level": 3
}
},
"archived": true,
"avatar_url": "http://example.com/uploads/project/avatar/3/uploads/avatar.png",
"shared_runners_enabled": true,
"forks_count": 0,
"star_count": 0,
"runners_token": "b8bc4a7a29eb76ea83cf79e4908c2b",
"public_jobs": true,
"shared_with_groups": [],
"only_allow_merge_if_pipeline_succeeds": false,
"only_allow_merge_if_all_discussions_are_resolved": false,
"request_access_enabled": false
}
POST /projects/:id/unarchive
Атрибут | Тип | Обязательный | Описание |
---|---|---|---|
id |
integer/string | да | ID или URL-кодированное имя пространства имен проекта |
curl --request POST --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" "https://gitlab.example.com/api/v4/projects/5/unarchive"
Пример ответа:```json { "id": 3, "description": null, "default_branch": "master", "visibility": "private", "ssh_url_to_repo": "git@example.com:diaspora/diaspora-project-site.git", "http_url_to_repo": "http://example.com/diaspora/diaspora-project-site.git", "web_url": "http://example.com/diaspora/diaspora-project-site", "tag_list": [ "example", "diaspora project" ], "owner": { "id": 3, "name": "Diaspora", "created_at": "2013-09-30T13:46:02Z" }, "name": "Diaspora Project Site", "name_with_namespace": "Diaspora / Diaspora Project Site", "path": "diaspora-project-site", "path_with_namespace": "diaspora/diaspora-project-site", "issues_enabled": true, "open_issues_count": 1, "merge_requests_enabled": true, "jobs_enabled": true, "wiki_enabled": true, "snippets_enabled": false, "container_registry_enabled": false, "created_at": "2013-09-30T13:46:02Z", "last_activity_at": "2013-09-30T13:46:02Z", "creator_id": 3, "namespace": { "id": 3, "name": "Diaspora", "path": "diaspora", "kind": "group", "full_path": "diaspora" }, "import_status": "none", "import_error": null, "permissions": { "project_access": { "access_level": 10, "notification_level": 3 }, "group_access": { "access_level": 50, "notification_level": 3 } }, "archived": false, "avatar_url": "http://example.com/uploads/project/avatar/3/uploads/avatar.png", "shared_runners_enabled": true, "forks_count": 0, "star_count": 0, "runners_token": "b8bc4a7a29eb76ea83cf79e4908c2b", "public_jobs": true, "shared_with_groups": [], "only_allow_merge_if_pipeline_succeeds": false, "only_allow_merge_if_all_discussions_are_resolved": false, "request_access_enabled": false }
Удаляет проект, включая все связанные ресурсы (issues, merge requests и т.д.)
DELETE /projects/:id
Параметры:
| Атрибут | Тип | Обязательный | Описание |
| -------- | ---- | ------------ | --------- |
| `id` | integer/string | да | ID или [URL-кодированный путь проекта](README.md#namespaced-path-encoding) |
## Загрузки
### Загрузка файла
Загружает файл в указанный проект для использования в описании задачи или объединения запроса, или в комментариях.
POST /projects/:id/uploads
Параметры:
| Атрибут | Тип | Обязательный | Описание |
| -------- | ---- | ------------ | --------- |
| `id` | integer/string | да | ID или [URL-кодированный путь проекта](README.md#namespaced-path-encoding) |
| `file` | string | да | Файл для загрузки |
Для загрузки файла из файловой системы используйте аргумент `--form`. Это заставляет cURL отправлять данные с помощью заголовка `Content-Type: multipart/form-data`. Параметр `file=` должен указывать на файл в файловой системе и предшествовать `@`. Например:
```bash
curl --request POST --header "PRIVATE-TOKEN: 9koXpg98eAheJpvBs5tK" --form "file=@dk.png" https://gitlab.example.com/api/v3/projects/5/uploads
Возвращаемый объект:
{
"alt": "dk",
"url": "/uploads/66dbcd21ec5d24ed6ea225176098d52b/dk.png",
"markdown": ""
}
Примечание: Возвращенное значение url
является относительным к пути проекта. В контексте Markdown ссылка автоматически расширяется при использовании формата в markdown
.
Пожалуйста, обратитесь к документации Участники проекта.### Поделиться проектом с группой
Позволяет поделиться проектом с группой.
POST /projects/:id/share
Параметры:
Атрибут | Тип | Обязательный | Описание |
---|---|---|---|
id |
integer/string | да | ID или URL-кодированный путь проекта |
group_id |
integer | да | ID группы для поделиться с |
group_access |
integer | да | Уровень разрешений для предоставления группе |
expires_at |
string | нет | Дата истечения срока действия в формате ISO 8601: 2016-09-26 |
Отменяет поделение проекта с группой. Возвращает 204
и пустое содержимое при успехе.
DELETE /projects/:id/share/:group_id
Параметры:
Атрибут | Тип | Обязательный | Описание |
---|---|---|---|
id |
integer/string | да | ID или URL-кодированный путь проекта |
group_id |
integer | да | ID группы |
Также известны как проектные хуки и веб-хуки. Эти хуки отличаются от системных хуков, которые действуют на уровне всей системы.
Получить список проектных хуков.
GET /projects/:id/hooks
Параметры:
Атрибут | Тип | Обязательный | Описание |
---|---|---|---|
id |
integer/string | да | ID или URL-кодированный путь проекта |
Получить проектный хук.
GET /projects/:id/hooks/:hook_id
Параметры:
Атрибут | Тип | Обязательный | Описание |
---|---|---|---|
id |
integer/string | да | ID или URL-кодированный путь проекта |
hook_id |
integer | да | ID хука |
GET /projects/:id/hooks/:hook_id
Параметры:
Атрибут | Тип | Обязательный | Описание |
---|---|---|---|
id |
integer/string | да | ID или URL-кодированный путь проекта |
hook_id |
integer | да | ID проектного хука |
{
"id": 1,
"url": "http://example.com/hook",
"project_id": 3,
"push_events": true,
"issues_events": true,
"merge_requests_events": true,
"tag_push_events": true,
"note_events": true,
"job_events": true,
"pipeline_events": true,
"wiki_page_events": true,
"enable_ssl_verification": true,
"created_at": "2012-10-12T17:04:47Z"
}
Добавить хук к указанному проекту.
POST /projects/:id/hooks
Параметры:
Атрибут | Тип | Обязательный | Описание |
---|---|---|---|
id |
integer/string | да | ID или URL-кодированный путь проекта |
url |
string | да | URL хука |
push_events |
boolean | нет | Вызывать хук при событиях push |
issues_events |
boolean | нет | Вызывать хук при событиях issues |
merge_requests_events |
boolean | нет | Вызывать хук при событиях merge requests |
tag_push_events |
boolean | нет | Вызывать хук при событиях push тегов |
note_events |
boolean | нет | Вызывать хук при событиях заметок |
job_events |
boolean | нет | Вызывать хук при событиях задач |
pipeline_events |
boolean | нет | Вызывать хук при событиях pipeline |
wiki_events |
boolean | нет | Вызывать хук при событиях wiki |
enable_ssl_verification |
boolean | нет | Выполнять проверку SSL при вызове хука |
token |
string | нет | Секретный токен для проверки полученных данных; этот токен не будет возвращен в ответе |
PUT /projects/:id/hooks/:hook_id
Параметры:
Атрибут | Тип | Обязательный | Описание |
---|---|---|---|
id |
integer/string | да | ID или URL-кодированное имя проекта |
hook_id |
integer | да | ID хука проекта |
url |
string | да | URL хука |
push_events |
boolean | нет | Вызывать хук при событии push |
issues_events |
boolean | нет | Вызывать хук при событии issues |
merge_requests_events |
boolean | нет | Вызывать хук при событии merge requests |
tag_push_events |
boolean | нет | Вызывать хук при событии tag push |
note_events |
boolean | нет | Вызывать хук при событии note |
job_events |
boolean | нет | Вызывать хук при событии job |
pipeline_events |
boolean | нет | Вызывать хук при событии pipeline |
wiki_events |
boolean | нет | Вызывать хук при событии wiki |
enable_ssl_verification |
boolean | нет | Включать SSL-верификацию при вызове хука |
token |
string | нет | Секретный токен для проверки полученных данных; этот токен не будет возвращен в ответе |
Удаляет хук из проекта. Это идемпотентный метод и может быть вызван несколько раз. Хук либо существует, либо нет.
DELETE /projects/:id/hooks/:hook_id
Параметры:
Атрибут | Тип | Обязательный | Описание |
---|---|---|---|
id |
integer/string | да | ID или URL-кодированное имя проекта |
hook_id |
integer | да | ID хука проекта |
Для получения дополнительной информации обратитесь к документации по веткам.
Возвращает список всех веток проекта.
GET /projects/:id/repository/branches
Параметры:
Атрибут | Тип | Обязательный | Описание |
---|---|---|---|
id |
integer/string | да | ID или URL-кодированное имя проекта |
Пример ответа:
[
{
"name": "async",
"commit": {
"id": "a2b702edecdf41f07b42653eb1abe30ce98b9fca",
"parent_ids": [
"3f94fc7c85061973edc9906ae170cc269b07ca55"
],
"message": "дать Caolan кредит за его работу (в начале)",
"author_name": "Jeremy Ashkenas",
"author_email": "jashkenas@example.com",
"authored_date": "2010-12-08T21:28:50+00:00",
"committer_name": "Jeremy Ashkenas",
"committer_email": "jashkenas@example.com",
"committed_date": "2010-12-08T21:28:50+00:00"
},
"protected": false,
"developers_can_push": false,
"developers_can_merge": false
},
{
"name": "gh-pages",
"commit": {
"id": "101c10a60019fe870d21868835f65c25d64968fc",
"parent_ids": [
"9c15d2e26945a665131af5d7b6d30a06ba338aaa"
],
"message": "Underscore.js 1.5.2",
"author_name": "Jeremy Ashkenas",
"author_email": "jashkenas@example.com",
"authored_date": "2013-09-07T12:58:21+00:00",
"committer_name": "Jeremy Ashkenas",
"committer_email": "jashkenas@example.com",
"committed_date": "2013-09-07T12:58:21+00:00"
},
"protected": false,
"developers_can_push": false,
"developers_can_merge": false
}
]
Определенная ветка проекта.
GET /projects/:id/repository/branches/:branch
Параметры:| Атрибут | Тип | Обязательный | Описание |
| -------- | ---- | ------------ | --------- |
| id
| integer/string | да | ID или URL-кодированное имя проекта |
| branch
| string | да | Название ветки |
| developers_can_push
| boolean | нет | Флаг, указывающий, могут ли разработчики отправлять изменения в ветку |
| developers_can_merge
| boolean | нет | Флаг, указывающий, могут ли разработчики объединять изменения в ветку |### Защита отдельной ветки
Защита определенной ветки проекта.
PUT /projects/:id/repository/branches/:branch/protect
Параметры:
Атрибут | Тип | Обязательный | Описание |
---|---|---|---|
id |
integer/string | да | ID или URL-кодированное имя проекта |
branch |
string | да | Название ветки |
Отмена защиты определенной ветки проекта.
PUT /projects/:id/repository/branches/:branch/unprotect
Параметры:
Атрибут | Тип | Обязательный | Описание |
---|---|---|---|
id |
integer/string | да | ID или URL-кодированное имя проекта |
branch |
string | да | Название ветки |
Позволяет изменять связь форка между существующими проектами. Доступна только для администраторов.
POST /projects/:id/fork/:forked_from_id
Параметры:
Атрибут | Тип | Обязательный | Описание |
---|---|---|---|
id |
integer/string | да | ID или URL-кодированное имя проекта |
forked_from_id |
integer | да | ID проекта, с которого был сделан форк |
DELETE /projects/:id/fork
Параметры:
Атрибут | Тип | Обязательный | Описание |
---|---|---|---|
id |
integer/string | да | ID или URL-кодированное имя проекта |
GET /projects/search/:query
Параметры:
Атрибут | Тип | Обязательный | Описание |
---|---|---|---|
query |
string | да | Строка, содержащаяся в имени проекта |
order_by |
string | нет | Возвращает запросы, отсортированные по полям id , name , created_at или last_activity_at
|
sort |
string | нет | Возвращает запросы, отсортированные в порядке asc или desc
|
Примечание: Эта функция была введена в GitLab 9.0
POST /projects/:id/housekeeping
Параметры:
Атрибут | Тип | Обязательный | Описание |
---|---|---|---|
id |
integer/string | да | ID проекта или NAMESPACE/PROJECT_NAME |
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )