Дискуссии к запросам на слияния
Описание структуры 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
- Данные по запросу не найдены.