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

Дискуссии к запросам на слияния


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

Поле Тип Описание
discussionUuid String UUID корневой (первой в цепочке) дискуссии. Возвращает null если дискуссия является корневой
baseCommit String Хэш merge-base коммита запроса на слияние
targetCommit String Хэш коммита, который был последним в целевой ветке запроса на слияние в момент создания дискуссии
startCommit String Хэш коммита, который был последним в исходной ветке запроса на слияние в момент создания дискуссии
createdAt Date Дата и время создания дискуссии
newLine Integer Номер строки после изменений. Возвращает null если дискуссия оставлена не к строке или дискуссия не является корневой
oldLine Integer Номер строки перед изменениями. Возвращает null если дискуссия оставлена не к строке или дискуссия не является корневой
initialNewLine Integer Номер строки после изменений. Возвращает null если дискуссия оставлена не к строке
newPath String Путь файла, к строке которого оставлена дискуссия, после изменений. Возвращает null если дискуссия оставлена не к строке
oldPath String Путь файла, к строке которого оставлена дискуссия, перед изменениями. Возвращает null если дискуссия оставлена не к строке
rawMessage String Тест дискуссии с элементами для форматирования текста
message String Тест дискуссии. Значение идентично значению в поле rawMessage
resolved Boolean Возвращает true если дискуссия была закрыта, false если дискуссия открыта
resolvable Deprecated Всегда возвращает null
mergeRequestUuid String UUID запроса на слияние, в котором создана дискуссия
type String Тип дискуссии. Возможные значения: MERGE_REQUEST_COMMENT
author Object Объект, описывающий пользователя, создавшего дискуссию
uuid String UUID дискуссии
formatedDate String Разница во времени между текущей датой и датой создания дискуссии
replies Array Массив ответов на дискуссию. Возвращает объекты с полями, описывающими дискуссию. Может вернуть пустой массив, если дискуссия не является корневой или если ответов нет

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

Поле Тип Описание
id String UUID пользователя
username String Псевдоним пользователя
name String Имя пользователя
surname String Фамилия пользователя
fullName String Полное имя пользователя. Возвращает псевдоним, если фамилия и имя не указаны
avatar String Ссылка на аватар пользователя
cover String Ссылка на фон пользователя

Метод для получения списка всех дискуссий

GET /project/{ownerAlias}/{projectAlias}/merge-request/{mergeRequestLocalId}/discussions

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

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

Responses

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

Пример ответа
    
{
    "_embedded": {
        "restDiscussionModelList": [
            {
                "rootNote": {
                    "discussionUuid": null,
                    "baseCommit": "e07892271de5c4aaaaaaaaaaaa5d1913c453d45d",
                    "targetCommit": "e07892271de5c4aaaaaaaaaaaa5d1913c453d45d",
                    "startCommit": "8ab2acb852f4beaaaaaaaaaaaa3b0f9cf1b4943c",
                    "createdAt": "2025-01-01T12:00:00.00000Z",
                    "newLine": 10,
                    "oldLine": 10,
                    "initialNewLine": 10,
                    "newPath": "README.md",
                    "oldPath": "README.md",
                    "rawMessage": "Поправить здесь",
                    "message": "Поправить здесь",
                    "resolved": true,
                    "resolvable": null,
                    "mergeRequestUuid": "b7741169-aaaa-aaaa-aaaa-88714b46c558",
                    "type": "MERGE_REQUEST_COMMENT",
                    "author": {
                        "id": "6736240a-aaaa-aaaa-aaaa-cab026562172",
                        "username": "adminuser",
                        "name": "Admin user",
                        "surname": null,
                        "fullName": "Admin user",
                        "avatar": "https://gitflic.ru/static/image/avatar.jpg",
                        "cover": "https://gitflic.ru/static/image/user-cover.png"
                    },
                    "uuid": "a6bd97a8-aaaa-aaaa-aaaa-2729e030844f",
                    "formatedDate": "1 час назад"
                },
                "replies": [
                    {
                        "discussionUuid": "a6bd97a8-aaaa-aaaa-aaaa-2729e030844f",
                        "baseCommit": "e07892271de5c4aaaaaaaaaaaa5d1913c453d45d",
                        "targetCommit": "e07892271de5c4aaaaaaaaaaaa5d1913c453d45d",
                        "startCommit": "8ab2acb852f4beaaaaaaaaaaaa3b0f9cf1b4943c",
                        "createdAt": "2025-01-01T12:30:00.00000Z",
                        "newLine": 10,
                        "oldLine": 10,
                        "initialNewLine": 10,
                        "newPath": "README.md",
                        "oldPath": "README.md",
                        "rawMessage": "Исправлено",
                        "message": "Исправлено",
                        "resolved": true,
                        "resolvable": null,
                        "mergeRequestUuid": null,
                        "type": "MERGE_REQUEST_COMMENT",
                        "author": {
                            "id": "7cda0fdc-aaaa-aaaa-aaaa-6b0bfe8bbddf",
                            "username": "user",
                            "name": "Name",
                            "surname": "Surname",
                            "fullName": "Name Surname",
                            "avatar": "https://gitflic.ru/static/image/avatar.jpg",
                            "cover": "https://gitflic.ru/static/image/user-cover.png"
                        },
                        "uuid": "5d2cf8af-aaaa-aaaa-aaaa-c212f287cd72",
                        "formatedDate": "30 минут назад"
                    }
                ]
            },
            {
                "rootNote": {
                    "discussionUuid": null,
                    "baseCommit": "e07892271de5c4aaaaaaaaaaaa5d1913c453d45d",
                    "targetCommit": "e07892271de5c4aaaaaaaaaaaa5d1913c453d45d",
                    "startCommit": "8ab2acb852f4beaaaaaaaaaaaa3b0f9cf1b4943c",
                    "createdAt": "2025-01-01T12:40:00.00000Z",
                    "newLine": null,
                    "oldLine": null,
                    "initialNewLine": null,
                    "newPath": null,
                    "oldPath": null,
                    "rawMessage": "Исправить конфликты",
                    "message": "Исправить конфликты",
                    "resolved": false,
                    "resolvable": null,
                    "mergeRequestUuid": null,
                    "type": "MERGE_REQUEST_COMMENT",
                    "author": {
                        "id": "6736240a-aaaa-aaaa-aaaa-cab026562172",
                        "username": "adminuser",
                        "name": "Admin user",
                        "surname": null,
                        "fullName": "Admin user",
                        "avatar": "https://gitflic.ru/static/image/avatar.jpg",
                        "cover": "https://gitflic.ru/static/image/user-cover.png"
                    },
                    "uuid": "a1ab0564-aaaa-aaaa-aaaa-8c3f107fb49f",
                    "formatedDate": "20 минут назад"
                },
                "replies": []
            }
        ]
    },
    "page": {
        "size": 10,
        "totalElements": 2,
        "totalPages": 1,
        "number": 0
    }
}
    
  

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

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


Метод для получения дискуссии по UUID

GET /project/{ownerAlias}/{projectAlias}/merge-request/{mergeRequestLocalId}/discussions/{discussionUuid}

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

Переменная пути запроса Тип Описание
ownerAlias String Псевдоним владельца проекта
projectAlias String Псевдоним проекта
mergeRequestLocalId Long ID запроса на слияние
discussionUuid String UUID дискуссии, которая должна быть возвращена

Responses

STATUS 200 - Дискуссия успешно возвращена.

Пример ответа
    
{
    "discussionUuid": null,
    "baseCommit": "e07892271de5c4aaaaaaaaaaaa5d1913c453d45d",
    "targetCommit": "e07892271de5c4aaaaaaaaaaaa5d1913c453d45d",
    "startCommit": "8ab2acb852f4beaaaaaaaaaaaa3b0f9cf1b4943c",
    "createdAt": "2025-01-01T12:00:00.00000Z",
    "newLine": 10,
    "oldLine": 10,
    "initialNewLine": 10,
    "newPath": "README.md",
    "oldPath": "README.md",
    "rawMessage": "Поправить здесь",
    "message": "Поправить здесь",
    "resolved": true,
    "resolvable": null,
    "mergeRequestUuid": "b7741169-aaaa-aaaa-aaaa-88714b46c558",
    "type": "MERGE_REQUEST_COMMENT",
    "author": {
        "id": "6736240a-aaaa-aaaa-aaaa-cab026562172",
        "username": "adminuser",
        "name": "Admin user",
        "surname": null,
        "fullName": "Admin user",
        "avatar": "https://gitflic.ru/static/image/avatar.jpg",
        "cover": "https://gitflic.ru/static/image/user-cover.png"
    },
    "uuid": "a6bd97a8-aaaa-aaaa-aaaa-2729e030844f",
    "formatedDate": "1 час назад"
}
    
  

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

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


Метод для создания дискуссии

POST /project/{ownerAlias}/{projectAlias}/merge-request/{mergeRequestLocalId}/discussions/create

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

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

Request

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

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

Переменная JSON Тип Описание
newLine Long Необязательно поле. Номер строки после изменений, к которой будет оставлена дискуссия
oldLine Long Необязательно поле. Номер строки перед изменениями, к которой будет оставлена дискуссия
newPath String Необязательно поле. Путь файла, к строке которого будет оставлена дискуссия, после изменений
oldPath String Необязательно поле. Путь файла, к строке которого будет оставлена дискуссия, перед изменениями
message String Сообщение дискуссии

Если в теле запроса указано хотя бы одно из полей newLine, oldLine, newPath или oldPath, то для создания дискуссии обязательно передать все остальные.

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

{
    "newLine": 10,
    "oldLine": 10,
    "newPath": "README.md",
    "oldPath": "README.md",
    "message": "Поправить здесь"
}

Responses

STATUS 200 - дискуссия успешно создана и возвращена.

Пример ответа
    
{
    "discussionUuid": null,
    "baseCommit": "e07892271de5c4aaaaaaaaaaaa5d1913c453d45d",
    "targetCommit": "e07892271de5c4aaaaaaaaaaaa5d1913c453d45d",
    "startCommit": "8ab2acb852f4beaaaaaaaaaaaa3b0f9cf1b4943c",
    "createdAt": "2025-01-01T12:00:00.00000Z",
    "newLine": 10,
    "oldLine": 10,
    "initialNewLine": 10,
    "newPath": "README.md",
    "oldPath": "README.md",
    "rawMessage": "Поправить здесь",
    "message": "Поправить здесь",
    "resolved": true,
    "resolvable": null,
    "mergeRequestUuid": "b7741169-aaaa-aaaa-aaaa-88714b46c558",
    "type": "MERGE_REQUEST_COMMENT",
    "author": {
        "id": "6736240a-aaaa-aaaa-aaaa-cab026562172",
        "username": "adminuser",
        "name": "Admin user",
        "surname": null,
        "fullName": "Admin user",
        "avatar": "https://gitflic.ru/static/image/avatar.jpg",
        "cover": "https://gitflic.ru/static/image/user-cover.png"
    },
    "uuid": "a6bd97a8-aaaa-aaaa-aaaa-2729e030844f",
    "formatedDate": "1 час назад"
}
    
  

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

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

STATUS 422 - В теле запроса не указано обязательно поле


Метод для создания ответа на дискуссию

POST /project/{ownerAlias}/{projectAlias}/merge-request/{mergeRequestLocalId}/discussions/reply

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

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

Request

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

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

Переменная JSON Тип Описание
discussionUuid String UUID дискуссии, к которой необходимо создать ответ
message String Сообщение ответа на дискуссию

Если в качестве discussionUuid передается UUID дискуссии, которая является ответом (то есть не корневой), то ответ автоматически будет прикреплен к корневой дискуссии этого ответа.

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

{
    "discussionUuid": "a6bd97a8-aaaa-aaaa-aaaa-2729e030844f",
    "message": "Исправлено"
}

Responses

STATUS 200 - Ответ на дискуссию успешно создан и возвращен.

Пример ответа
    
{
    "discussionUuid": "a6bd97a8-aaaa-aaaa-aaaa-2729e030844f",
    "baseCommit": "e07892271de5c4aaaaaaaaaaaa5d1913c453d45d",
    "targetCommit": "e07892271de5c4aaaaaaaaaaaa5d1913c453d45d",
    "startCommit": "8ab2acb852f4beaaaaaaaaaaaa3b0f9cf1b4943c",
    "createdAt": "2025-01-01T12:00:00.00000Z",
    "newLine": 10,
    "oldLine": 10,
    "initialNewLine": 10,
    "newPath": "README.md",
    "oldPath": "README.md",
    "rawMessage": "Исправлено",
    "message": "Исправлено",
    "resolved": true,
    "resolvable": null,
    "mergeRequestUuid": "b7741169-aaaa-aaaa-aaaa-88714b46c558",
    "type": "MERGE_REQUEST_COMMENT",
    "author": {
        "id": "6736240a-aaaa-aaaa-aaaa-cab026562172",
        "username": "adminuser",
        "name": "Admin user",
        "surname": null,
        "fullName": "Admin user",
        "avatar": "https://gitflic.ru/static/image/avatar.jpg",
        "cover": "https://gitflic.ru/static/image/user-cover.png"
    },
    "uuid": "5d2cf8af-aaaa-aaaa-aaaa-c212f287cd72",
    "formatedDate": "1 час назад"
}
    
  

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

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

STATUS 422 - В теле запроса не указано обязательно поле.


Метод для закрытия дискуссии

POST /project/{ownerAlias}/{projectAlias}/merge-request/{mergeRequestLocalId}/discussions/resolve/{discussionUuid}

Запрос закрывает дискуссию к запросу на слияние.

Переменная пути запроса Тип Описание
ownerAlias String Псевдоним владельца проекта
projectAlias String Псевдоним проекта
mergeRequestLocalId Long ID запроса на слияние
discussionUuid String UUID дискуссии, которая должна быть закрыта

Если в качестве discussionUuid передается UUID дискуссии, которая является ответом (то есть не корневой), то автоматически будет закрыта корневая дискуссии этого ответа.

Responses

STATUS 200 - Дискуссия успешно закрыта.

Пример ответа
    
{
    "discussionUuid": null,
    "baseCommit": "e07892271de5c4aaaaaaaaaaaa5d1913c453d45d",
    "targetCommit": "e07892271de5c4aaaaaaaaaaaa5d1913c453d45d",
    "startCommit": "8ab2acb852f4beaaaaaaaaaaaa3b0f9cf1b4943c",
    "createdAt": "2025-01-01T12:00:00.00000Z",
    "newLine": 10,
    "oldLine": 10,
    "initialNewLine": 10,
    "newPath": "README.md",
    "oldPath": "README.md",
    "rawMessage": "Поправить здесь",
    "message": "Поправить здесь",
    "resolved": true,
    "resolvable": null,
    "mergeRequestUuid": "b7741169-aaaa-aaaa-aaaa-88714b46c558",
    "type": "MERGE_REQUEST_COMMENT",
    "author": {
        "id": "6736240a-aaaa-aaaa-aaaa-cab026562172",
        "username": "adminuser",
        "name": "Admin user",
        "surname": null,
        "fullName": "Admin user",
        "avatar": "https://gitflic.ru/static/image/avatar.jpg",
        "cover": "https://gitflic.ru/static/image/user-cover.png"
    },
    "uuid": "a6bd97a8-aaaa-aaaa-aaaa-2729e030844f",
    "formatedDate": "1 час назад"
}
    
  

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

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


Метод для удаления дискуссии

POST /project/{ownerAlias}/{projectAlias}/merge-request/{mergeRequestLocalId}/discussions/delete/{discussionUuid}

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

Переменная пути запроса Тип Описание
ownerAlias String Псевдоним владельца проекта
projectAlias String Псевдоним проекта
mergeRequestLocalId Long ID запроса на слияние
discussionUuid String UUID дискуссии, которая должна быть удалена

Если в качестве discussionUuid передается UUID дискуссии, которая является корневой (самой первой в ветке обсуждений), то будут удалены все дискуссии в этой ветке.

Responses

STATUS 204 - Дискуссия успешно удалена.

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

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