Перейти к содержанию

Проекты


Описание структур JSON-объектов

Проект
Поле Тип Описание
id String Уникальный ID проекта
title String Название проекта
description String Описание проекта
alias String Псевдоним проекта
defaultBranch String Стандартная ветка проекта
workBranch String Рабочая ветка проекта
siteUrl String Сайт проекта
owner Object Владелец проекта, описание структуры
language String Язык проекта
forEducation Boolean Образовательный проект true или обычный false
forkedFromId String ID проекта от которого был сделан форк
mirrorUrl String URL проекта от которого было сделано зеркало
mirrorType String Тип зеркала. Возможные значения: PULL и PUSH
allowedMemory String Допустимая память под проект
forkUrl String URL проекта от которого был сделан форк
httpTransportUrl String Ссылка на клонирование проекта по HTTPS
sshTransportUrl String Ссылка на клонирование проекта по SSH
topics Set (String) Массив, содержащий топики проекта
mirror Boolean Проект является зеркалом true или нет false
private Boolean Проект является приватным true или публичный false

Владельцы проекта
Поле Тип Описание
alias String Псевдоним владельца
type String Тип владельца проекта. Возможные значения: USER, TEAM и COMPANY

Файл
Поле Тип Описание
uploadFileUuid String UUID файла
filePath String Относительный путь, по которому сохранен файл на файловой системе
webFilePath String Относительный путь, по которому файл доступен для скачивания
fileName String Название файла
fileSize String Размер файла
uploadDate LocalDate Дата загрузки файла

Методы получения проектов

Получение списка публичных проектов

GET /project?q={title}

Запрос возвращает массив публичных проектов, есть возможность настройки количества отображаемых объектов на странице

Переменная пути запроса Тип Описание
q String Необязательный параметр. Название проекта

Responses

STATUS 200 - пример JSON:

Пример ответа
    
{
    "_embedded": {
        "projectList": [
           {
                "id": "06a973fb-aaaa-aaaa-aaaa-d72a21b16087",
                "title": "Project",
                "description": "Repository example",
                "alias": "project",
                "defaultBranch": "master",
                "workBranch": "master",
                "siteUrl": null,
                "owner": {
                    "alias": "team",
                    "type": "TEAM"
                },
                "language": "Markdown",
                "forEducation": false,
                "forkedFromId": "87c79f93-aaaa-aaaa-aaaa-60d08fbbca7b",
                "pullMirrorUrl": null,
                "allowedMemory": "4GB",
                "forkUrl": "https://gitflic.ru/project/team/project",
                "httpTransportUrl": "https://gitflic.ru/project/team/project.git",
                "sshTransportUrl": "git@gitflic.ru:team/project.git",
                "topics": [
                    "gitflic",
                    "docs"
                ],
                "private": false,
                "mirror": false
            },
            {
                "id": "0ed38c25-aaaa-aaaa-aaaa-462c972efcc5",
                "title": "gitflic",
                "description": "example",
                "alias": "gitflic",
                "defaultBranch": "master",
                "workBranch": "master",
                "siteUrl": null,
                "owner": {
                    "alias": "user",
                    "type": "USER"
                },
                "language": "java",
                "forEducation": false,
                "forkedFromId": null,
                "pullMirrorUrl": null,
                "allowedMemory": "4GB",
                "forkUrl": null,
                "httpTransportUrl": "https://gitflic.ru/project/user/gitflic.git",
                "sshTransportUrl": "git@gitflic.ru:user/gitflic.git",
                "topics": [
                    "gitflic"
                ],
                "private": false,
                "mirror": true
            }
        ]
    },
    "page": {
        "size": 10,
        "totalElements": 2,
        "totalPages": 1,
        "number": 0
    }
}
    
  

STATUS 403 - Нет прав для доступа.

STATUS 404 - Данные по запросу не найдены.


Получение проекта по псевдониму

GET /project/{ownerAlias}/{projectAlias}

Запрос возвращает проект с указанным псевдонимом

Переменная пути запроса Тип Описание
ownerAlias String Псевдоним владельца проекта
projectAlias String Псевдоним проекта

Responses

STATUS 200 - пример JSON:

Пример ответа
    
{
    "id": "0ed38c25-aaaa-aaaa-aaaa-462c972efcc5",
    "title": "gitflic",
    "description": "example",
    "alias": "gitflic",
    "defaultBranch": "master",
    "workBranch": "master",
    "siteUrl": null,
    "owner": {
        "alias": "user",
        "type": "USER"
    },
    "language": "java",
    "forEducation": false,
    "forkedFromId": null,
    "pullMirrorUrl": null,
    "allowedMemory": "4GB",
    "forkUrl": null,
    "httpTransportUrl": "https://gitflic.ru/project/user/gitflic.git",
    "sshTransportUrl": "git@gitflic.ru:user/gitflic.git",
    "topics": [
        "gitflic"
    ],
    "private": false,
    "mirror": true
}
    
  

STATUS 403 - Нет прав для доступа.

STATUS 404 - Данные по запросу не найдены.


Получение проекта по uuid

GET /project/{projectUuid}

Запрос возвращает проект с указанным UUID

Переменная пути запроса Тип Описание
projectUuid String ID проекта

Responses

STATUS 200 - пример JSON:

Пример ответа
    
{
    "id": "90a99ad1-aaaa-aaaa-aaaa-9cba78b96ebf",
    "title": "projectname",
    "description": "test",
    "alias": "projectname",
    "defaultBranch": "master",
    "workBranch": "master",
    "siteUrl": null,
    "owner": {
        "alias": "gitflicuser",
        "type": "USER"
    },
    "language": "Markdown",
    "forEducation": false,
    "forkedFromId": null,
    "mirrorUrl": null,
    "mirrorType": null,
    "allowedMemory": "4GB",
    "forkUrl": null,
    "httpTransportUrl": "http://localhost:8080/project/gitflicuser/projectname.git",
    "sshTransportUrl": "git@localhost:8080:gitflicuser/projectname.git",
    "topics": [
        "gitflic"
    ],
    "mirror": false,
    "private": true
}
    
  

STATUS 403 - Нет прав для доступа.

STATUS 404 - Данные по запросу не найдены.


Получение списка проектов активного пользователя

GET /project/my?q={title}

Запрос возвращает массив проектов активного пользователя, есть возможность настройки количества отображаемых объектов на странице

Переменная пути запроса Тип Описание
q String Необязательный параметр. Название проекта

Responses

STATUS 200 - пример JSON:

Пример ответа
    
{
    "_embedded": {
        "projectList": [
           {
                "id": "06a973fb-aaaa-aaaa-aaaa-d72a21b16087",
                "title": "Project",
                "description": "Repository example",
                "alias": "project",
                "defaultBranch": "master",
                "workBranch": "master",
                "siteUrl": null,
                "owner": {
                    "alias": "user",
                    "type": "USER"
                },
                "language": "Markdown",
                "forEducation": false,
                "forkedFromId": "87c79f93-aaaa-aaaa-aaaa-60d08fbbca7b",
                "pullMirrorUrl": null,
                "allowedMemory": "4GB",
                "forkUrl": "https://gitflic.ru/project/team/project",
                "httpTransportUrl": "https://gitflic.ru/project/user/project.git",
                "sshTransportUrl": "git@gitflic.ru:team/project.git",
                "topics": [
                    "gitflic"
                ],
                "private": false,
                "mirror": false
            },
            {
                "id": "0ed38c25-aaaa-aaaa-aaaa-462c972efcc5",
                "title": "gitflic",
                "description": "example",
                "alias": "gitflic",
                "defaultBranch": "master",
                "workBranch": "master",
                "siteUrl": null,
                "owner": {
                    "alias": "user",
                    "type": "USER"
                },
                "language": "java",
                "forEducation": false,
                "forkedFromId": null,
                "pullMirrorUrl": null,
                "allowedMemory": "4GB",
                "forkUrl": null,
                "httpTransportUrl": "https://gitflic.ru/project/user/gitflic.git",
                "sshTransportUrl": "git@gitflic.ru:user/gitflic.git",
                "topics": [
                    "gitflic"
                ],
                "private": false,
                "mirror": true
            }
        ]
    },
    "page": {
        "size": 10,
        "totalElements": 2,
        "totalPages": 1,
        "number": 0
    }
}
    
  

STATUS 403 - Нет прав для доступа.

STATUS 404 - Данные по запросу не найдены.


Получение списка проектов с участием пользователя

GET /project/shared?q={title}

Запрос возвращает массив проектов с участием пользователя, есть возможность настройки количества отображаемых объектов на странице

Переменная пути запроса Тип Описание
q String Необязательный параметр. Название проекта

Responses

Пример ответа
    
{
    "_embedded": {
        "projectList": [
           {
                "id": "06a973fb-aaaa-aaaa-aaaa-d72a21b16087",
                "title": "Project",
                "description": "Repository example",
                "alias": "project",
                "defaultBranch": "master",
                "workBranch": "master",
                "siteUrl": null,
                "owner": {
                    "alias": "user",
                    "type": "USER"
                },
                "language": "Markdown",
                "forEducation": false,
                "forkedFromId": "87c79f93-aaaa-aaaa-aaaa-60d08fbbca7b",
                "pullMirrorUrl": null,
                "allowedMemory": "4GB",
                "forkUrl": "https://gitflic.ru/project/team/project",
                "httpTransportUrl": "https://gitflic.ru/project/user/project.git",
                "sshTransportUrl": "git@gitflic.ru:team/project.git",
                "topics": [
                    "gitflic"
                ],
                "private": false,
                "mirror": false
            },
            {
                "id": "0ed38c25-aaaa-aaaa-aaaa-462c972efcc5",
                "title": "gitflic",
                "description": "example",
                "alias": "gitflic",
                "defaultBranch": "master",
                "workBranch": "master",
                "siteUrl": null,
                "owner": {
                    "alias": "user",
                    "type": "USER"
                },
                "language": "java",
                "forEducation": false,
                "forkedFromId": null,
                "pullMirrorUrl": null,
                "allowedMemory": "4GB",
                "forkUrl": null,
                "httpTransportUrl": "https://gitflic.ru/project/user/gitflic.git",
                "sshTransportUrl": "git@gitflic.ru:user/gitflic.git",
                "topics": [
                    "gitflic"
                ],
                "private": false,
                "mirror": true
            }
        ]
    },
    "page": {
        "size": 10,
        "totalElements": 2,
        "totalPages": 1,
        "number": 0
    }
}
    
  

STATUS 403 - Нет прав для доступа.

STATUS 404 - Данные по запросу не найдены.


Получения списка форков проекта

GET /project/{ownerAlias}/{projectAlias}/forked

Запрос возвращает массив публичных форков проекта, есть возможность настройки количества отображаемых объектов на странице

Переменная пути запроса Тип Описание
ownerAlias String Псевдоним владельца проекта
projectAlias String Псевдоним проекта

Responses

STATUS 200 - пример JSON:

Пример ответа
    
{
    "_embedded": {
        "projectList": [
            {
                "id": "a8c92b63-aaaa-aaaa-aaaa-9fbedc8e3876",
                "title": "project-форк",
                "description": "",
                "alias": "project-fork",
                "defaultBranch": "master",
                "workBranch": "master",
                "siteUrl": null,
                "owner": {
                    "alias": "adminuser",
                    "type": "USER"
                },
                "language": "Markdown",
                "forEducation": false,
                "forkedFromId": "d1e64fd6-aaaa-aaaa-aaaa-76e68db48ed0",
                "mirrorUrl": null,
                "mirrorType": null,
                "allowedMemory": "4GB",
                "forkUrl": "https://localhost:8080/project/adminuser/project",
                "httpTransportUrl": "https://localhost:8080/project/adminuser/project.git",
                "sshTransportUrl": "ssh://gitlocalhost:8080:22/adminuser/project-fork.git",
                "topics": [],
                "mirror": false,
                "private": false
            }
        ]
    },
    "page": {
        "size": 10,
        "totalElements": 1,
        "totalPages": 1,
        "number": 0
    }
}
    
  

STATUS 403 - Нет прав для доступа.

STATUS 404 - Данные по запросу не найдены.


Методы создания проектов

Создание проекта

POST /project

Запрос создает проект и возвращает информацию о нем

Request

Поддерживаемый формат JSON

Структура тела POST-запроса:

Передаваемые параметры Тип Описание
title String Название проекта
isPrivate Boolean Приватный проект или нет. Принимает true или false
alias String Псевдоним проекта
ownerAlias String Псевдоним владельца
ownerAliasType String Тип владельца проекта. Принимает USER, TEAM или COMPANY
language String Язык программирования
description String Описание проекта, необязательное поле

Пример JSON объекта

{
    "title": "my project",
    "isPrivate": "true",
    "alias": "example",
    "ownerAlias": "example-user",
    "ownerAliasType": "USER",
    "language": "java",
    "description": "description"
}

Responses

STATUS 200 - пример JSON:

Пример ответа
    
{
    "id": "2f58c38f-aaaa-aaaa-aaaa-3819c74b2c36",
    "title": "my project",
    "description": "description",
    "alias": "example",
    "defaultBranch": "master",
    "workBranch": "master",
    "siteUrl": null,
    "owner": {
        "alias": "example-user",
        "type": "USER"
    },
    "language": "java",
    "forEducation": false,
    "forkedFromId": null,
    "pullMirrorUrl": null,
    "allowedMemory": "4GB",
    "forkUrl": null,
    "httpTransportUrl": "https://gitflic.ru/project/example-user/example.git",
    "sshTransportUrl": "git@gitflic.ru:example-user/example.git",
    "topics": [
        "gitflic"
    ],
    "private": true,
    "mirror": false
}
    
  

STATUS 403 - Нет прав для доступа.

STATUS 404 - Данные по запросу не найдены.


Импорт проекта

POST /project/import-base

Запрос импортирует проект и возвращает информацию о нем

Request

Поддерживаемый формат JSON

Структура тела POST-запроса:

Передаваемые параметры Тип Описание
title String Название проекта
isPrivate Boolean Приватный проект или нет. Принимает true или false
alias String Псевдоним проекта
ownerAlias String Псевдоним владельца проекта
ownerAliasType String Тип владельца проекта. Принимает USER, TEAM или COMPANY
language String Язык программирования
gitSource String Ссылка на импортируемый проект
login String Логин. Необходим для импорта приватного проекта
token String Токен. Необходим для импорта приватного проекта
description String Описание проекта, необязательное поле

Пример JSON объекта

{
    "title": "example",
    "isPrivate": false,
    "alias": "import",
    "ownerAlias": "user",
    "ownerAliasType": "USER",
    "language": "java",
    "gitSource": "https://gitflic.ru/project/user/example.git",
    "login": "user",
    "token": "e2ff0fa4-aaaa-aaaa-aaaa-c86f7c0d0ab0",
    "description": "example"
}

Responses

STATUS 200 - пример JSON:

Пример ответа
    
{
    "id": "4bfe5723-aaaa-aaaa-aaaa-347804f2d47e",
    "title": "example",
    "description": "example",
    "alias": "example",
    "defaultBranch": "master",
    "workBranch": "master",
    "siteUrl": null,
    "owner": {
        "alias": "user",
        "type": "USER"
    },
    "language": "java",
    "forEducation": false,
    "forkedFromId": null,
    "mirrorUrl": null,
    "mirrorType": null,
    "allowedMemory": "4GB",
    "forkUrl": null,
    "httpTransportUrl": "https://gitflic.ru/project/example/example.git",
    "sshTransportUrl": "git@gitflic.ru:example/example.git",
    "topics": [
        "gitflic"
    ],
    "private": false,
    "mirror": false
}
    
  

STATUS 403 - Нет прав для доступа.

STATUS 404 - Данные по запросу не найдены.


Создание зеркала

POST /project/create-mirror

Запрос создает проект типа зеркало и возвращает информацию о нем

Request

Поддерживаемый формат json

Структура тела POST-запроса:

Параметр Описание
title Название команды
description Описание, необязательный параметр
isPrivate Приватный проект или нет. Принимает true или false
alias Псевдоним проекта
ownerAlias Псевдоним владельца проекта
ownerAliasType Тип владельца проекта. Принимает USER, TEAM или COMPANY
language Язык программирования
gitSource Ссылка на git репозиторий
mirrorType Тип зеркала. Принимает PULL или PUSH
login Логин. Необходим для доступа к приватному проекту
token Токен. Необходим для доступа к приватному проекту
refSpecs Настройка RefSpec для зеркалирования конкретных веток или тегов есть
{
    "title": "mirror",
    "description": "mirror",
    "isPrivate": true,
    "alias": "mirror",
    "ownerAlias": "user",
    "ownerAliasType": "USER",
    "language": "java",
    "gitSource": "https://gitflic.ru/project/user/project.git",
    "mirrorType": "PULL",
    "login": "",
    "token": "",
    "refSpecs": ["refs/heads/master:refs/heads/main"]
}

Responses

STATUS 200 - пример JSON:

Пример ответа
    
{
    "id": "4ad463df-aaaa-aaaa-aaaa-137d65545fa3",
    "title": "example",
    "description": "example",
    "alias": "example",
    "defaultBranch": "master",
    "workBranch": "master",
    "siteUrl": null,
    "owner": {
        "alias": "example",
        "type": "USER"
    },
    "language": "Java",
    "forEducation": false,
    "forkedFromId": null,
    "mirrorUrl": "example.git",
    "mirrorType": "PULL",
    "allowedMemory": "4GB",
    "forkUrl": null,
    "httpTransportUrl": "http://gitflic.ru/project/example/example.git",
    "sshTransportUrl": "git@gitflic.ru:example/example.git",
    "topics": [
        "gitflic"
    ],
    "mirror": true,
    "private": true
}
    
  

STATUS 403 - Нет прав для доступа.

STATUS 404 - Данные по запросу не найдены.


Превращение существующего проекта в PUSH зеркало

POST /project/{ownerAlias}/{projectAlias}/to-push-mirror

Запрос меняет тип проекта на PUSH зеркало и возвращает информацию о нем

Переменная пути запроса Тип Описание
ownerAlias String Псевдоним владельца проекта
projectAlias String Псевдоним проекта

Request

Поддерживаемый формат json

Структура тела POST-запроса:

Параметр Описание
source Ссылка на git репозиторий
login Логин. Необходим для доступа к приватному проекту
token Токен. Необходим для доступа к приватному проекту
controlString Контрольная строка. Имеет вид ownerAlias/projectAlias, где ownerAlias это псевдоним владельца проекта, а projectAlias это псевдоним проекта
{
    "source": "https://gitflic.ru/project/user/project.git",
    "login": "example",
    "token": "example",
    "controlString": "user/example"
}

Responses

STATUS 200 - пример JSON:

Пример ответа
    
    {
    "id": "4ad463df-aaaa-aaaa-aaaa-137d65545fa3",
    "title": "example",
    "description": "example",
    "alias": "example",
    "defaultBranch": "master",
    "workBranch": "master",
    "siteUrl": null,
    "owner": {
        "alias": "user",
        "type": "USER"
    },
    "language": "java",
    "forEducation": false,
    "forkedFromId": null,
    "mirrorUrl": "example.git",
    "mirrorType": "PUSH",
    "allowedMemory": "4GB",
    "forkUrl": null,
    "httpTransportUrl": "http://gitflic.ru/project/example/example.git",
    "sshTransportUrl": "git@gitflic.ru:example/example.git",
    "topics": [
        "gitflic"
    ],
    "mirror": true,
    "private": true
}
    
  

STATUS 403 - Нет прав для доступа.

STATUS 404 - Данные по запросу не найдены.


Обновление зеркала

POST /project/{ownerAlias}/{projectAlias}/manual-update

Запрос обновляет зеркало и возвращает информацию о проекте. Данный запрос выполняется без дополнительной информации в теле.

Переменная пути запроса Тип Описание
ownerAlias String Псевдоним владельца проекта
projectAlias String Псевдоним проекта

Responses

STATUS 200 - пример JSON:

Пример ответа
    
{
    "id": "4ad463df-aaaa-aaaa-aaaa-137d65545fa3",
    "title": "example",
    "description": "example",
    "alias": "example",
    "defaultBranch": "master",
    "workBranch": "master",
    "siteUrl": null,
    "owner": {
        "alias": "example",
        "type": "USER"
    },
    "language": "Java",
    "forEducation": false,
    "forkedFromId": null,
    "mirrorUrl": "example.git",
    "mirrorType": "PULL",
    "allowedMemory": "4GB",
    "forkUrl": null,
    "httpTransportUrl": "http://gitflic.ru/project/example/example.git",
    "sshTransportUrl": "git@gitflic.ru:example/example.git",
    "topics": [
        "gitflic"
    ],
    "mirror": true,
    "private": true
}
    
  

STATUS 403 - Нет прав для доступа.

STATUS 404 - Данные по запросу не найдены.


Создание форка проекта

POST /project/{ownerAlias}/{projectAlias}/create-fork

Запрос создает форк проекта и возвращает информацию о нем

Переменная пути запроса Тип Описание
ownerAlias String Псевдоним владельца проекта
projectAlias String Псевдоним проекта

Request

Поддерживаемый формат json

Структура тела POST-запроса:

Параметр Описание
title Название проекта
description Описание, необязательный параметр
isPrivate Приватный проект или нет. Принимает true или false
alias Псевдоним проекта
ownerAlias Псевдоним владельца проекта
ownerAliasType Тип владельца проекта. Принимает USER, TEAM или COMPANY
language Язык программирования
{
    "title": "fork",
    "description": "fork description",
    "isPrivate": true,
    "alias": "fork",
    "ownerAlias": "user",
    "ownerAliasType": "USER",
    "language": "java",
}

Responses

STATUS 200 - пример JSON:

Пример ответа
    
        {
        "id": "4ad463df-aaaa-aaaa-aaaa-137d65545fa3",
        "title": "fork",
        "description": "fork description",
        "alias": "fork",
        "defaultBranch": "master",
        "workBranch": "master",
        "siteUrl": null,
        "owner": {
            "alias": "user,
            "type": "USER"
        },
        "language": "Java",
        "forEducation": false,
        "forkedFromId": "38ee2d74-aaaa-aaaa-aaaa-291aec22db4e"
        "mirrorUrl": null,
        "mirrorType": null,
        "allowedMemory": "4GB",
        "forkUrl": http://gitflic.ru/project/example/example.git,
        "httpTransportUrl": "http://gitflic.ru/project/user/fork.git",
        "sshTransportUrl": "git@gitflic.ru:user/fork.git",
        "topics": [],
        "mirror": true,
        "private": true
        }
    
  

STATUS 403 - Нет прав для доступа.

STATUS 404 - Данные по запросу не найдены.


Получение возможных владельцев при создании проекта

GET /project/allowed-owners

Запрос возвращает список возможных владельцев, для которых текущий пользователь может создать проект

Responses

Данный запрос возвращает уникальный объект состоящий из трех массивов:

Множество "companySet":

Параметры ответа Тип Описание
id String UUID компании
alias String Псевдоним компании
uuid String UUID компании
title String Название компании
description String Описание компании
url String Ссылка на сайт компании
contactPhone String Телефон компании
contactEmail String Почта компании
ownerAlias String Псевдоним владельца компании
avatar String Ссылка на аватар компании
private Boolean Компания является приватной true или публичной false
selectorTitle String Название компании в селекторе выбора владельца проекта
selectorId String UUID селектора выбора владельца проекта
selectorAlias String Псевдоним селектора выбора владельца проекта
selectorColor String Цвет селектора выбора владельца проекта
selectorHash String Хэш селектора выбора владельца проекта
hexColor String Код цвета селектора выбора владельца проекта в формате HEX
selectorOwnerAlias String Псевдоним владельца селектора выбора владельца проекта
isDeleted Boolean Копания удалена true или нет false
links Deprecated Устаревший параметр. По умолчанию возвращает пустой массив

Множество "teamSet":

Параметры ответа Тип Описание
id String UUID команды
alias String Псевдоним команды
title String Название команды
description String Описание команды
isPrivate Boolean Команда является приватной true или публичной false
ownerAlias String Псевдоним владельца команды
avatar String Ссылка на аватар команды
selectorTitle String Название команды в селекторе выбора владельца проекта
selectorOwnerAlias String Псевдоним владельца селектора выбора владельца проекта
selectorId String UUID селектора выбора владельца проекта
selectorAlias String Псевдоним селектора выбора владельца проекта
selectorColor String Цвет селектора выбора владельца проекта
selectorHash String Хэш селектора выбора владельца проекта
hexColor String Код цвета селектора выбора владельца проекта в формате HEX
isDeleted Boolean Команда удалена true или нет false
links Deprecated Устаревший параметр. По умолчанию возвращает пустой массив

Множество "user":

Параметры ответа Тип Описание
id String UUID владельца
username String Псевдоним пользователя
name String Имя пользователя
surname String Фамилия пользователя
fullName String Полное имя пользователя
avatar String Ссылка на аватар
links Deprecated Устаревший параметр. По умолчанию возвращает пустой массив

STATUS 200 - пример JSON:

Пример ответа
    
{
    "companySet": [
        {
            "id": "43f8bb0e-aaaa-aaaa-aaaa-b421e0782626",
            "alias": "example-company",
            "uuid": "43f8bb0e-aaaa-aaaa-aaaa-b421e0782626",
            "title": "example-company",
            "description": "example description",
            "url": "https://example.ru",
            "contactPhone": "+79999999999",
            "contactEmail": "example@email.ru",
            "ownerAlias": "adminuser",
            "avatar": "http://localhost:8079/upload/img/1e528f78-aaaa-aaaa-aaaa-fe65b5a4b59a.png",
            "private": true,
            "selectorTitle": "example-company",
            "selectorId": "43f8bb0e-aaaa-aaaa-aaaa-b421e0782626",
            "selectorAlias": null,
            "selectorColor": null,
            "selectorHash": null,
            "hexColor": null,
            "selectorOwnerAlias": null,
            "isDeleted": false,
            "links": []
        }
    ],
    "teamSet": [
        {
            "id": "41f9c3fa-aaaa-aaaa-aaaa-ed615d6548dd",
            "alias": "example-team",
            "title": "example-team",
            "description": "example description",
            "isPrivate": true,
            "ownerAlias": "adminuser",
            "avatar": "http://localhost:8079/upload/img/a187f9f0-aaaa-aaaa-aaaa-748c0ac84648.png",
            "selectorTitle": "example-team",
            "selectorOwnerAlias": "adminuser",
            "selectorId": "41f9c3fa-aaaa-aaaa-aaaa-ed615d6548dd",
            "selectorAlias": null,
            "selectorColor": null,
            "selectorHash": null,
            "hexColor": null,
            "isDeleted": false,
            "links": []
        }
    ],
    "user": {
        "id": "6736240a-aaaa-aaaa-aaaa-cab026562172",
        "username": "adminuser",
        "name": "Admin user",
        "surname": null,
        "fullName": "Admin user",
        "avatar": null,
        "links": []
    }
}
    
  

STATUS 403 - Нет прав для доступа.

STATUS 404 - Данные по запросу не найдены.


Общие методы для проектов

Получение информации о файлах проекта

GET /project/{ownerAlias}/{projectAlias}/files?filepath={filepath}&branch={branchName}

Запрос возвращает массив файлов проекта, есть возможность настройки количества отображаемых объектов на странице

Переменная пути запроса Тип Описание
ownerAlias String Псевдоним владельца проекта
projectAlias String Псевдоним проекта
filepath String Не обязательный параметр. Дополнительный путь к файлу
branch String Не обязательный параметр. Название ветки

Responses

STATUS 200 - пример JSON:

Пример ответа
    
{
    "path": "README.md",
    "baseName": "README",
    "filename": "README.md",
    "isTree": false,
    "lastCommitSha": null,
    "lastCommit": null,
    "timeDifference": null,
    "tree": false
},
{
    "path": "folder",
    "baseName": "folder",
    "filename": "folder",
    "isTree": true,
    "lastCommitSha": null,
    "lastCommit": null,
    "timeDifference": null,
    "tree": true
}
    
  

STATUS 403 - Нет прав для доступа.

STATUS 404 - Данные по запросу не найдены.


Получение информации о подписчиках проекта

GET /project/{ownerAlias}/{projectAlias}/followers

Запрос возвращает массив подписчиков [проекта](#project, есть возможность настройки количества отображаемых объектов на странице

Переменная пути запроса Тип Описание
ownerAlias String Псевдоним владельца проекта
projectAlias String Псевдоним проекта

Responses

STATUS 200 - пример JSON:

Пример ответа
    
{
    "_embedded": {
        "userList": [
            {
                "id": "67248766-aaaa-aaaa-aaaa-624a59869252",
                "username": "test",
                "name": "testname",
                "surname": "testSURNAME",
                "fullName": "testname testSURNAME",
                "avatar": "https://gitflic.ru/upload/img/6ce797dd-aaaa-aaaa-aaaa-37a55d6c8057.jpg",
                "cover": null
            },
            {
                "id": "6736240a-aaaa-aaaa-aaaa-cab026562172",
                "username": "superuser",
                "name": "Василий",
                "surname": "Сметанин",
                "fullName": "Василий Сметанин",
                "avatar": "https://gitflic.ru/static/image/avatar.jpg",
                "cover": null
            }
        ]
    },
    "page": {
        "size": 10,
        "totalElements": 2,
        "totalPages": 1,
        "number": 0
    }
}
    
  

STATUS 403 - Нет прав для доступа.

STATUS 404 - Данные по запросу не найдены.


Получение информации о пользователях, добавивших проект в избранное

GET /project/{ownerAlias}/{projectAlias}/stars

Запрос возвращает массив пользователей, добавивших проект в избранное, есть возможность настройки количества отображаемых объектов на странице

Переменная пути запроса Тип Описание
ownerAlias String Псевдоним владельца проекта
projectAlias String Псевдоним проекта

Responses

STATUS 200 - пример JSON:

Пример ответа
    
{
    "_embedded": {
        "userList": [
            {
                "id": "67248766-aaaa-aaaa-aaaa-624a59869252",
                "username": "test",
                "name": "testname",
                "surname": "testSURNAME",
                "fullName": "testname testSURNAME",
                "avatar": "https://gitflic.ru/upload/img/6ce797dd-aaaa-aaaa-aaaa-37a55d6c8057.jpg",
                "cover": null
            }
        ]
    },
    "page": {
        "size": 10,
        "totalElements": 1,
        "totalPages": 1,
        "number": 0
    }
}
    
  

STATUS 403 - Нет прав для доступа.

STATUS 404 - Данные по запросу не найдены.


Запуск пользовательского скрипта

POST /project{ownerAlias}/{projectAlias}/script/{scriptUuid}

Запрос запускает пользовательский скрипт с указанным UUID на выполнение

Переменная пути запроса Тип Описание
ownerAlias String Псевдоним владельца проекта
projectAlias String Псевдоним проекта
scriptUuid String UUID скрипта на выполнение

Responses

STATUS 200 - пример JSON:

Описание структуры JSON-объекта, описывающего пользовательский скрипт

Параметр Тип Описание
executionUuid String UUID результата выполнения
scriptUuid String UUID пользовательского скрипта
triggerType String Тип триггера. Всегда возвращает REQUEST
triggerName String Название триггера. Всегда возвращает rest-api
triggeringUserUuid String UUID пользователя, запустившего скрипт
executionStartTimestamp Long Время начала выполнения скрипта
executionEndTimestamp Long Время окончания выполнения скрипта
queueAppendTimestamp Long Время добавления в очередь на выполнение
result String Результат выполнения. Возможные значения: SUCCESS - успешное выполнение, RUNTIME_ERROR - ошибка во время выполнения, TIME_EXCEEDED - превышение время выполнения и UNKNOWN_ERROR - неизвестная ошибка
returnedValue String Возвращенное значение
Пример ответа
    
{
    "executionUuid": "f88973b1-aaaa-aaaa-aaaa-ced340466db6",
    "scriptUuid": "1c8722cf-aaaa-aaaa-aaaa-3ea880353a75",
    "triggerType": "REQUEST",
    "triggerName": "rest-api",
    "triggeringUserUuid": "44f4d17d-aaaa-aaaa-aaaa-805754a16fba",
    "executionStartTimestamp": 1729511625673,
    "executionEndTimestamp": 1729511626052,
    "queueAppendTimestamp": 1729511625673,
    "result": "SUCCESS",
    "returnedValue": null
}
    
  

STATUS 403 - Нет прав для доступа.

STATUS 404 - Данные по запросу не найдены.


Методы для настроек проекта

Данные методы доступны только пользователям, с ролью не ниже Администратор

Обновление информации о проекте

PUT /project/{ownerAlias}/{projectAlias}/setting/change-setting

Запрос изменяет информацию о проекте и возвращает его

Переменная пути запроса Тип Описание
ownerAlias String Псевдоним владельца проекта
projectAlias String Псевдоним проекта

Request

Поддерживаемый формат json

Структура тела PUT-запроса:

Параметр Тип Описание
title String Название проекта
description String Описание проекта
language String Язык программирования
topics Set (String) Массив с топиками проекта

Responses

STATUS 200 - пример JSON:

Пример ответа
    
{
    "id": "c94aedd2-aaaa-aaaa-aaaa-67fbf1112a82",
    "title": "project",
    "description": "description",
    "alias": "project",
    "defaultBranch": "master",
    "workBranch": "master",
    "siteUrl": "https://gitflic.ru",
    "owner": {
        "alias": "adminuser",
        "type": "USER"
    },
    "language": "Markdown",
    "forEducation": false,
    "forkedFromId": null,
    "mirrorUrl": null,
    "mirrorType": null,
    "allowedMemory": "4GB",
    "forkUrl": null,
    "httpTransportUrl": "https://gitflic.ru/project/adminuser/project.git",
    "sshTransportUrl": "git@gitflic.ru:adminuser/project.git",
    "defaultIssueStatus": null,
    "topics": [
        "docs",
        "gitflic"
    ],
    "private": true,
    "mirror": false
}    
    
  

STATUS 403 - Нет прав для доступа.

STATUS 404 - Данные по запросу не найдены.


Получение размера проекта

GET /project/{projectUuid}/project-size

Запрос возвращает размер категорий, а так же полный размер хранилища проекта

Responses

Данный запрос возвращает уникальный набор параметров:

Параметры ответа Тип Описание
readableDirectorySize String Размер git-репозитория
readableLfsFilesSize String Размер хранилища больших файлов
readableRegistryFilesSize String Размер файлов реестра пакетов
readableReleaseFilesSize String Размер файлов релизов
readableArtifactFilesSize String Размер файлов артефактов
readableFilledSpace String Суммарный занятый размер хранилища

STATUS 200 - пример JSON:

Пример ответа
    
{
    "readableDirectorySize": "3,4MB",
    "readableLfsFilesSize": 103,3MB",
    "readableRegistryFilesSize": "1,7MB",
    "readableReleaseFilesSize": "83,3MB",
    "readableArtifactFilesSize": "13,2MB",
    "readableFilledSpace": "204,9MB"
}
    
  

STATUS 403 - Нет прав для доступа.

STATUS 404 - Данные по запросу не найдены.


Создание токена развертывания

POST /project/{ownerAlias}/{projectAlias}/setting/deploy-token/create

Запрос создает токен развертывания с указанным набором прав

Переменная пути запроса Тип Описание
ownerAlias String Псевдоним владельца проекта
projectAlias String Псевдоним проекта

Request

Поддерживаемый формат json

Структура тела POST-запроса:

Параметр Описание
expiresAt Дата истечения действия токена
title Наименование токена
scopes Массив с набором прав: REPOSITORY_READ - Pull репозитория, REPOSITORY_WRITE - Push репозитория
{
    "expiresAt" : "2030-01-01",
    "title" : "Токен через API",
    "scopes" : [
        "REPOSITORY_READ",
        "REPOSITORY_WRITE"
    ]
}

Responses

STATUS 200 - пример JSON:

Описание структуры JSON-объекта, описывающего токен развертывания

Параметр Тип Описание
token String Токен развертывания
tokenUuid String UUID токена развертывания
expiresAt ZonedDateTime Дата истечения действия токена
title String Наименование токена
scopes List Массив с набором прав: REPOSITORY_READ - Pull репозитория, REPOSITORY_WRITE - Push репозитория
Пример ответа
    
{
    "token": "d36f5ae4-aaaa-aaaa-aaaa-5de5aae3dc3f",
    "tokenUuid": "b1f23eb4-aaaa-aaaa-aaaa-2f04e8564855",
    "expiresAt": "2025-01-01T00:00:00",
    "title": "Токен через API",
    "scopes": [
        "REPOSITORY_READ",
        "REPOSITORY_WRITE"
    ]
}
    
  

STATUS 403 - Нет прав для доступа.

STATUS 404 - Данные по запросу не найдены.


Методы управления доступом в проект

Добавление пользователя в проект

POST /project/{projectUuid}/member/invite

Запрос добавляет пользователя в проект с указанной ролью

Переменная пути запроса Тип Описание
projectUuid String UUID проекта, в который необходимо добавить пользователя

Request

Поддерживаемый формат json

Структура тела POST-запроса:

Параметр Описание
userAlias Псевдоним пользователя, который будет добавлен в проект
role Роль, с которой будет добавлен пользователь. Возможные значения: GUEST - гость, REPORTER - докладчик, DEVELOPER - разработчик, ADMIN - администратор и OWNER - владелец
{
    "userAlias" : "user",
    "role" : "OWNER"
}

Responses

STATUS 200 - Пользователю отправлено приглашение в проект.

STATUS 403 - Нет прав для доступа.

STATUS 404 - Данные по запросу не найдены.


Получение списка пользователей проекта

GET /project/{projectUuid}/member?q={userName}

Запрос возвращает список участников проекта, есть возможность настройки количества отображаемых объектов на странице

Переменная пути запроса Тип Описание
projectUuid String UUID проекта, из которого необходимо получить список пользователей
q String Необязательный параметр. Имя пользователя для поиска

Responses

STATUS 200 - Успешно возвращен список участников проекта.

Пример ответа
    
{
    "_embedded": {
        "userList": [
            {
                "id": "67248766-aaaa-aaaa-aaaa-624a59869252",
                "username": "test",
                "name": "testname",
                "surname": "testSURNAME",
                "fullName": "testname testSURNAME",
                "avatar": "https://gitflic.ru/upload/img/6ce797dd-aaaa-aaaa-aaaa-37a55d6c8057.jpg",
                "cover": null
            },
            {
                "id": "6736240a-aaaa-aaaa-aaaa-cab026562172",
                "username": "superuser",
                "name": "Василий",
                "surname": "Сметанин",
                "fullName": "Василий Сметанин",
                "avatar": "https://gitflic.ru/static/image/avatar.jpg",
                "cover": null
            }
        ]
    },
    "page": {
        "size": 10,
        "totalElements": 2,
        "totalPages": 1,
        "number": 0
    }
}
    
  

STATUS 403 - Нет прав для доступа.

STATUS 404 - Данные по запросу не найдены.


Изменение роли пользователя в проекте

PUT /project/{projectUuid}/member/role

Запрос изменяет роль пользователя в проекте

Переменная пути запроса Тип Описание
projectUuid String UUID проекта, в котором необходимо изменить роль пользователя

Request

Поддерживаемый формат json

Структура тела PUT-запроса:

Параметр Описание
userAlias Псевдоним пользователя, роль которого будет изменена в проекте
role Новая роль участника проекта. Возможные значения: GUEST - гость, REPORTER - докладчик, DEVELOPER - разработчик, ADMIN - администратор и OWNER - владелец
{
    "userAlias" : "user",
    "role" : "OWNER"
}

Responses

STATUS 200 - Изменена роль пользователя.

STATUS 403 - Нет прав для доступа.

STATUS 404 - Данные по запросу не найдены.


Удаление пользователя из проекта

DELETE /project/{projectUuid}/member/{userAlias}

Запрос удаляет пользователя из проекта

Переменная пути запроса Тип Описание
projectUuid String UUID проекта, в котором необходимо удалить пользователя
userAlias String Псевдоним пользователя, которого необходимо удалить из проекта

Responses

STATUS 200 - Пользователь удален из проекта.

STATUS 403 - Нет прав для доступа.

STATUS 404 - Данные по запросу не найдены.


Добавление команды в проект

POST /project/{projectUuid}/member/team/invite

Запрос добавляет команду в проект с указанной ролью

Переменная пути запроса Тип Описание
projectUuid String UUID проекта, в который необходимо добавить команду

Request

Поддерживаемый формат json

Структура тела POST-запроса:

Параметр Описание
teamAlias Псевдоним команды, которая будет добавлена в проект
maxRole Роль, с которой будет добавлена команда. Возможные значения: GUEST - гость, REPORTER - докладчик, DEVELOPER - разработчик и ADMIN - администратор
{
    "teamAlias" : "team",
    "maxRole" : "DEVELOPER"
}

Responses

STATUS 200 - Команда добавлена в проект.

STATUS 403 - Нет прав для доступа.

STATUS 404 - Данные по запросу не найдены.


Изменение роли команды в проекте

PUT /project/{projectUuid}/member/team/role

Запрос изменяет роль команды в проекте

Переменная пути запроса Тип Описание
projectUuid String UUID проекта, в котором необходимо изменить роль команды

Request

Поддерживаемый формат json

Структура тела PUT-запроса:

Параметр Описание
teamAlias Псевдоним команды, роль которой будет изменена в проекте
maxRole Новая роль команды проекта. Возможные значения: GUEST - гость, REPORTER - докладчик, DEVELOPER - разработчик и ADMIN - администратор
{
    "teamAlias" : "team",
    "maxRole" : "GUEST"
}

Responses

STATUS 200 - Изменена роль команды.

STATUS 403 - Нет прав для доступа.

STATUS 404 - Данные по запросу не найдены.


Удаление команды из проекта

DELETE /project/{projectUuid}/member/team/{teamAlias}

Запрос удаляет команду из проекта

Переменная пути запроса Тип Описание
projectUuid String UUID проекта, в котором необходимо удалить команду
teamAlias String Псевдоним команды, которую необходимо удалить из проекта

Responses

STATUS 200 - Команда удалена из проекта.

STATUS 403 - Нет прав для доступа.

STATUS 404 - Данные по запросу не найдены.


Методы для прикрепленных к проекту файлов

Файлы, прикрепленные к проекту, доступны для прикрепления к проблемам.

Получение списка прикрепленных к проекту файлов

GET /project/{ownerAlias}/{projectAlias}/upload-files

Запрос возвращает список файлов прикрепленных к проекту.

Переменная пути запроса Тип Описание
ownerAlias String Псевдоним владельца проекта, список прикрепленных файлов которого будет возвращен
projectAlias String Псевдоним проекта, список прикрепленных файлов которого будет возвращен

Responses

STATUS 200 - Успешно возвращен список прикрепленных к проекту файлов

Пример ответа
    
{
    "_embedded": {
        "restProjectUploadFileModelList": [
            {
                "uploadFileUuid": "8be8f27c-aaaa-aaaa-aaaa-1024dd2f5d80",
                "filePath": "project/1b/1b7f0fca-aaaa-aaaa-aaaa-140978fab4e2/attachment/45b0f1a4-aaaa-aaaa-aaaa-86a0c3ae8e3d/gitflic.jar",
                "webFilePath": "/upload/-/project/1b7f0fca-aaaa-aaaa-aaaa-140978fab4e2/attachment/45b0f1a4-aaaa-aaaa-aaaa-86a0c3ae8e3d/gitflic.jar",
                "fileName": "gitflic.jar",
                "fileSize": "400MB",
                "uploadDate": "2025-01-01T12:00:00.000000"
            },
            {
                "uploadFileUuid": "0cfc3414-aaaa-aaaa-aaaa-03faa70b5639",
                "filePath": "project/1b/1b7f0fca-aaaa-aaaa-aaaa-140978fab4e2/attachment/8a216b75-aaaa-aaaa-aaaa-dfb573a770d3/error.log",
                "webFilePath": "/upload/-/project/1b7f0fca-aaaa-aaaa-aaaa-140978fab4e2/attachment/8a216b75-aaaa-aaaa-aaaa-dfb573a770d3/error.log",
                "fileName": "error.log",
                "fileSize": "150KB",
                "uploadDate": "2025-01-01T12:00:00.000000"
            }
        ]
    },
    "page": {
        "size": 10,
        "totalElements": 2,
        "totalPages": 1,
        "number": 0
    }
}
    
  

STATUS 403 - Нет прав для доступа.

STATUS 404 - Данные по запросу не найдены.


Прикрепление файла к проекту

POST /project/{ownerAlias}/{projectAlias}/upload

Запрос прикрепляет файл к проекту и возвращает его.

Для gitflic.ru существует ограничение в 10 МБ.

Переменная пути запроса Тип Описание
ownerAlias String Псевдоним владельца проекта, к которому будет прикреплен файл
projectAlias String Псевдоним проекта, к которому будет прикреплен файл

Request

Поддерживаемый формат: multipart/form-data

Ключ Тип
attachment file

Responses

STATUS 200 - Файл успешно прикреплен к проекту и возвращен.

Пример ответа
    
{
    "uploadFileUuid": "0cfc3414-aaaa-aaaa-aaaa-03faa70b5639",
    "filePath": "project/1b/1b7f0fca-aaaa-aaaa-aaaa-140978fab4e2/attachment/8a216b75-aaaa-aaaa-aaaa-dfb573a770d3/error.log",
    "webFilePath": "/upload/-/project/1b7f0fca-aaaa-aaaa-aaaa-140978fab4e2/attachment/8a216b75-aaaa-aaaa-aaaa-dfb573a770d3/error.log",
    "fileName": "error.log",
    "fileSize": "150KB",
    "uploadDate": "2025-01-01T12:00:00.000000"
}
    
  

STATUS 400 - Выбранный файл слишком большой.

STATUS 403 - Нет прав для доступа.

STATUS 404 - Данные по запросу не найдены.

STATUS 413 - Нельзя загрузить файл, если менее 10 процентов памяти проекта свободно.


Удаление прикрепленного к проекту файла

DELETE /project/{ownerAlias}/{projectAlias}/delete-file?uploadFileUuid={fileUuid}

Запрос удаляет прикрепленный к проекту файл.

Переменная пути запроса Тип Описание
ownerAlias String Псевдоним владельца проекта, в котором будет удален файл
projectAlias String Псевдоним проекта, в котором будет удален файл
fileUuid String UUID файла, который будет удален

Responses

STATUS 200 - Прикрепленный к проекту файл успешно удален

STATUS 403 - Нет прав для доступа.

STATUS 404 - Данные по запросу не найдены.


Удаление проекта

DELETE /project/{projectUuid}/delete

Запрос удаляет проект.

Переменная пути запроса Тип Описание
projectUuid String UUID проекта, который необходимо удалить

Responses

STATUS 200 - Проект удален.

STATUS 403 - Нет прав для доступа.

STATUS 404 - Данные по запросу не найдены.