更新时间:2024-09-02 GMT+08:00
分享

创建MR检视意见

功能介绍

为代码创建MR检视意见

调试

您可以在API Explorer中调试该接口,支持自动认证鉴权。API Explorer可以自动生成SDK代码示例,并提供SDK代码示例调试功能。

URI

POST /v2/repositories/{repository_id}/merge_requests/{merge_request_iid}/discussions

表1 路径参数

参数

是否必选

参数类型

描述

repository_id

Integer

参数解释:

仓库id。

约束限制:

必传。

取值范围:

最小值:1

最大值:2147483647

merge_request_iid

Integer

参数解释:

合并请求iid(仓库的第几个mr)。

约束限制:

必传。

取值范围:

最小值:1

最大值:2147483647

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

参数解释:

用户Token。通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。

约束限制:

必传。

取值范围:

字符串长度不少于1,不超过10万。

默认取值:

不涉及。

表3 请求Body参数

参数

是否必选

参数类型

描述

body

String

参数解释:

检视意见内容。

约束限制:

必传。

取值范围:

长度限制:8000字符。

字符限制:unicode编码\u0000 - \uffff,不支持emoji表情、部分生僻字等特殊字符。

blank限制:不能为null或空字符串或全是空格。

severity

String

参数解释:

严重程度,非建议级别意见指派人和MR/Commit作者不能点解决。

取值范围:

(不传或不为枚举值,默认为suggestion)

  • suggestion:建议;
  • minor:一般;
  • major: 严重;
  • fatal:致命。

assignee_id

String

参数解释:

指派人id,可传用户id或用户名。

取值范围:

长度为[0,255]个字符。

review_categories

String

参数解释:

检视意见分类。

约束限制:

仅可使用设置里配置的分类,配置方法:设置->检视意见。

review_modules

String

参数解释:

检视意见模块。

约束限制:

仅可使用设置里配置的模块,配置方法:设置->检视意见。

proposer_id

String

参数解释:

检视人id,可传用户id或用户名。

取值范围:

长度为[0,255]个字符。

position

PositionDto object

参数解释:

代码位置信息:意见关联何处代码 。

取值范围:

无。

lineTypes

String

参数解释:

所关联的代码行的类型。

取值范围:

  • new:提在文件对比右侧
  • old:提在文件对比左侧
表4 PositionDto

参数

是否必选

参数类型

描述

base_sha

String

参数解释:

源分支base提交节点。

取值范围:

只能为数字和字母,长度为40字符。

start_sha

String

参数解释:

目标分支最新提交节点。

取值范围:

只能为数字和字母,长度为40字符。

head_sha

String

参数解释:

源分支最新提交节点。

取值范围:

只能为数字和字母,长度为40字符。

old_path

String

参数解释:

修改前文件路径。

取值范围:

无。

new_path

String

参数解释:

修改后文件路径。

取值范围:

无。

position_type

String

参数解释:

变更类型。

取值范围:

无。

默认取值:

text。

old_line

Integer

参数解释:

修改前行号,小于等于0或为null,表示此行为新增行,即对比时位于右侧,绿色显示。

取值范围:

[-1, 2147483647]或为null。

new_line

Integer

参数解释:

修改后行号。

小于等于0或为null,表示此行为删除行,即对比时位于左侧,红色显示。

取值范围:

[-1, 2147483647]或为null。

响应参数

状态码: 200

表5 响应Body参数

参数

参数类型

描述

result

MergeRequestDiscussionDto object

参数解释:

返回新建检视意见的相关信息。

取值范围:

无。

status

String

参数解释:

响应状态。

取值范围:

  • success,表示接口调用成功。
  • error,表示接口调用失败。
表6 MergeRequestDiscussionDto

参数

参数类型

描述

id

String

参数解释:

主评论和回复共用的id,一般称为discussion_id。

取值范围:

只能为数字和字母,长度为40字符。

individual_note

Boolean

参数解释:

是否为个人意见,即不需要他人解决的意见。

取值范围:

  • true:不需要解决的意见
  • false:需要解决的意见

notes

Array of NoteDto objects

参数解释:

主评论和回复列表,主评论为第一个(此接口为新建主评论,所以数量为1)。

取值范围:

无。

project_id

Integer

参数解释:

仓库id

取值范围:

最小值:1

最大值:2147483647

noteable_type

String

参数解释:

意见类型。

取值范围:

  • MergeRequest:MR下提的意见(MR下点提交记录,选择一次提交加检视意见,仍是MergeRequest类型)
  • Commit:代码下或一次提交下提的意见

commit_id

String

参数解释:

关联的提交id:noteable_type为Commit的检视意见的特有字段,为此次提交的sha值。

取值范围:

只能为数字和字母,长度为40字符。

project_full_path

String

参数解释:

仓库路径。

取值范围:

无。

a_mode

String

参数解释:

关联文件变更前文件的文件模式,如果为新增文件此处为0。

取值范围:

git支持的文件权限数字,例如:100644,100755,120000,160000等。

b_mode

String

参数解释:

变更后文件的文件模式,如果为删除文件此处为0。

取值范围:

git支持的文件权限数字,例如:100644,100755,120000,160000等。

deleted_file

Boolean

参数解释:

关联文件是否是删除文件。

取值范围:

  • true:关联文件是删除文件。
  • false或null:关联文件不是删除文件。

new_file

Boolean

参数解释:

关联文件是否是新增文件。

取值范围:

  • true:关联文件是新增文件。
  • false或null:关联文件不是新增文件。

resolved

Boolean

参数解释:

检视意见是否已解决。

取值范围:

  • true:检视意见已解决。
  • false或null:检视意见未解决。

archived

Boolean

参数解释:

检视意见是否已归档,归档后不允许编辑删除回复解决该意见。

取值范围:

  • true:检视意见已归档。
  • false或null:检视意见未归档。

review_categories

String

参数解释:

检视意见分类的key。

自定义分类的review_categories、review_categories_cn、review_categories_en一致。

取值范围:

无。

review_categories_cn

String

参数解释:

检视意见分类的中文名。

自定义分类的review_categories、review_categories_cn、review_categories_en一致。

取值范围:

无。

review_categories_en

String

参数解释:

检视意见分类的英文名。

自定义分类的review_categories、review_categories_cn、review_categories_en一致。

取值范围:

无。

review_modules

String

参数解释:

检视意见模块。

取值范围:

无。

severity

String

参数解释:

检视意见严重程度的key。

取值范围:

  • suggestion:建议。
  • minor:一般。
  • major:严重。
  • fatal:致命。

severity_cn

String

参数解释:

严重程度中文名。

取值范围:

  • 建议
  • 一般
  • 严重
  • 致命

severity_en

String

参数解释:

严重程度英文名。

取值范围:

  • Suggestion:建议
  • Minor:一般
  • Major:严重
  • Fatal:致命

assignee

UserBasicDto object

参数解释:

指派人详细信息。

取值范围:

无。

proposer

UserBasicDto object

参数解释:

提出人详细信息。

取值范围:

无。

merge_request_version_params

MergeRequestVersionParamsDto object

参数解释:

MR版本详细信息。

取值范围:

无。

diff_file

String

参数解释:

变更文件路径。

取值范围:

无。

added_lines

Integer

参数解释:

新增行数。

取值范围:

最小值:0

最大值:2147483647

removed_lines

Integer

参数解释:

删除行数。

取值范围:

最小值:0

最大值:2147483647

表7 NoteDto

参数

参数类型

描述

id

Integer

参数解释:

评论id,主评论和回复不共用。

取值范围:

最小值:1

最大值:2147483647

type

String

参数解释:

note类型。

取值范围:

  • DiffNote:文件变更页提的需要解决的检视意见。
  • MergeRequestNote:详情页提的需要解决的检视意见。
  • null:详情页提的不需要解决的意见。

body

String

参数解释:

检视意见内容。

取值范围:

长度限制:8000字符。

字符限制:unicode编码\u0000 - \uffff,不支持emoji表情、部分生僻字等特殊字符。

blank限制:不能为null或空字符串或全是空格。

attachment

String

参数解释:

附件(废弃字段)。

取值范围:

无。

author

UserBasicDto object

参数解释:

作者详细信息。

取值范围:

无。

created_at

String

参数解释:

创建时间。

约束限制:

格式:yyyy-MM-ddTHH:mm:ss.SSS+08:00

updated_at

String

参数解释:

更新时间。

约束限制:

格式:yyyy-MM-ddTHH:mm:ss.SSS+08:00

system

Boolean

参数解释:

是否是系统生成的日志。

取值范围:

  • true:系统创建的检视意见。
  • false:用户创建的检视意见。

noteable_id

Integer

参数解释:

MR的id。

取值范围:

最小值:1

最大值:2147483647

noteable_type

String

参数解释:

意见类型。

取值范围:

  • MergeRequest:MR或CR下提的意见(MR或CR下点提交记录,选择一次提交加检视意见,仍是MergeRequest类型)
  • Commit:代码下或一次提交下提的意见

commit_id

String

参数解释:

关联的提交id:noteable_type为Commit的检视意见的特有字段,为此次提交的sha值。

取值范围:

只能为数字和字母,长度为40字符。

resolvable

Boolean

参数解释:

意见是否需要解决。

取值范围:

  • true:可解决的检视意见。
  • false或null:不可解决的检视意见。

is_reply

Boolean

参数解释:

是否是回复的评论。

取值范围:

  • true:回复的评论。
  • false:主评论。

resolved_by

UserBasicDto object

参数解释:

检视意见的解决人。

取值范围:

无。

noteable_iid

Integer

参数解释:

MR的iid,表示为该仓库第几个MR。

取值范围:

最小值:1

最大值:2147483647

discussion_id

String

参数解释:

检视意见id,主评论和回复共用。

取值范围:

只能为数字和字母,长度为40字符。

project

String

参数解释:

项目路径。

取值范围:

无。

diff_file

String

参数解释:

变更文件路径。

取值范围:

无。

diff

String

参数解释:

变更文件内容。

取值范围:

无。

archived

Boolean

参数解释:

检视意见是否已归档,归档后不允许编辑删除回复解决该意见。

取值范围:

  • true:检视意见已归档。
  • false或null:检视意见未归档。

review_categories

String

参数解释:

检视意见分类的key。

自定义分类的review_categories、review_categories_cn、review_categories_en一致。

取值范围:

无。

review_categories_cn

String

参数解释:

检视意见分类的中文名。

自定义分类的review_categories、review_categories_cn、review_categories_en一致。

取值范围:

无。

review_categories_en

String

参数解释:

检视意见分类的英文名。

自定义分类的review_categories、review_categories_cn、review_categories_en一致。

取值范围:

无。

review_modules

String

参数解释:

检视意见模块。

取值范围:

无。

severity

String

参数解释:

严重程度,非建议级别意见指派人和MR/Commit作者不能点解决。

取值范围:

  • suggestion:建议;
  • minor:一般;
  • major: 严重;
  • fatal:致命。

severity_cn

String

参数解释:

严重程度中文名。

取值范围:

  • 建议
  • 一般
  • 严重
  • 致命

severity_en

String

参数解释:

严重程度英文名。

取值范围:

  • Suggestion:建议
  • Minor:一般
  • Major:严重
  • Fatal:致命

file_path

String

参数解释:

文件路径(弃用)。

取值范围:

无。

line

String

参数解释:

行号(弃用)。

取值范围:

无。

assignee

UserBasicDto object

参数解释:

指派人详细信息。

取值范围:

无。

proposer

UserBasicDto object

参数解释:

检视人详细信息。

取值范围:

无。

position

PositionDto object

参数解释:

代码位置信息:意见关联何处代码 。

取值范围:

无。

resolved

Boolean

参数解释:

检视意见是否已解决。

取值范围:

  • true:检视意见已解决。
  • false或null:检视意见未解决。

is_outdated

Boolean

参数解释:

是否过时。

取值范围:

  • true:基于最新提交的检视意见。
  • false或null:不是基于最新提交的检视意见
表8 PositionDto

参数

参数类型

描述

base_sha

String

参数解释:

源分支base提交节点。

取值范围:

只能为数字和字母,长度为40字符。

start_sha

String

参数解释:

源分支最新提交节点。

取值范围:

只能为数字和字母,长度为40字符。

head_sha

String

参数解释:

目标分支最新提交节点。

取值范围:

只能为数字和字母,长度为40字符。

old_path

String

参数解释:

修改前文件路径。

取值范围:

无。

new_path

String

参数解释:

修改后文件路径。

取值范围:

无。

position_type

String

参数解释:

变更类型。

取值范围:

无。

默认取值:

text。

old_line

Integer

参数解释:

修改前行号,小于等于0或为null,表示此行为新增行,即对比时位于右侧,绿色显示。

取值范围:

[-1, 2147483647]或为null。

new_line

Integer

参数解释:

修改后行号。

小于等于0或为null,表示此行为删除行,即对比时位于左侧,红色显示。

取值范围:

[-1, 2147483647]或为null。

表9 UserBasicDto

参数

参数类型

描述

id

Integer

参数解释:

用户id。

取值范围:

最小值:1

最大值:2147483647

name

String

参数解释:

名字。

取值范围:

长度为[0,255]个字符。

username

String

参数解释:

用户名。

取值范围:

长度为[0,255]个字符。

state

String

参数解释:

状态。

取值范围:

长度为[0,255]个字符。

avatar_url

String

参数解释:

获取头像的url。

取值范围:

无。

avatar_path

String

参数解释:

获取头像的路径。

取值范围:

无。

email

String

参数解释:

邮箱。

取值范围:

无。

name_cn

String

参数解释:

中文名。

取值范围:

无。

web_url

String

参数解释:

主页url。

取值范围:

无。

nick_name

String

参数解释:

昵称。

取值范围:

无。

tenant_name

String

参数解释:

租户名称。

取值范围:

无。

表10 MergeRequestVersionParamsDto

参数

参数类型

描述

diff_id

Integer

参数解释:

MR每个版本提交都有其对应的diff_id(此处为MR最新提交)。

取值范围:

最小值:1

最大值:2147483647

start_sha

String

参数解释:

目标分支最新提交节点。

取值范围:

只能为数字和字母,长度为40字符。

commit_id

String

参数解释:

关联的提交id:noteable_type为Commit的检视意见的特有字段,为此次提交的sha值。

取值范围:

只能为数字和字母,长度为40字符。

请求示例

POST https://{endpoint}/v2/repositories/{repository_id}/merge_requests/{merge_request_iid}/discussions

{
    "body": "检视意见内容",
    "lineTypes": "new",
    "position": {
        "base_sha": "a9ce1513d5185d5fe2bac52c597f204ce695c4be",
        "start_sha": "a9ce1513d5185d5fe2bac52c597f204ce695c4be",
        "head_sha": "53c75fa88dc4e7d0b68d108b7f1ee0a5c4564f44",
        "position_type": "text",
        "new_path": "a.txt",
        "old_path": "a.txt",
        "new_line": 1,
        "old_line": -1
    },
    "assignee_id": 9124,
    "proposer_id": null,
    "severity": "suggestion",
    "review_modules": "模块",
    "review_categories": "分类"
}

响应示例

状态码: 200

OK

{
    "result": {
        "id": "996f57b8fdd5e62678b16f0ea4f91688405fa72f",
        "individual_note": false,
        "notes": [
            {
                "id": 2111974336,
                "type": "DiffNote",
                "body": "检视意见内容",
                "author": {
                    "id": 9124,
                    "name": "CodeHub_beta_dev",
                    "username": "c369c68f1ff84679b5a8ed904d8bff1c",
                    "state": "active",
                    "avatar_url": "",
                    "email": "liujian@example.com",
                    "name_cn": "CodeHub_beta_dev",
                    "web_url": "https://test.com/c369c68f1ff84679b5a8ed904d8bff1c",
                    "nick_name": "我是昵称",
                    "tenant_name": "devcloud_codehub_l00314597_01"
                },
                "created_at": "2024-07-29T22:01:37.000+08:00",
                "updated_at": "2024-07-29T22:01:37.000+08:00",
                "system": false,
                "noteable_id": 38517,
                "noteable_type": "MergeRequest",
                "resolvable": true,
                "is_reply": false,
                "noteable_iid": 18,
                "discussion_id": "996f57b8fdd5e62678b16f0ea4f91688405fa72f",
                "project": "sll_test00006/mr_test",
                "diff_file": "a.txt",
                "diff": "@@ -0,0 +1,0 @@\n+1\r\n",
                "archived": false,
                "review_categories": "分类",
                "review_categories_cn": "分类",
                "review_categories_en": "分类",
                "review_modules": "模块",
                "severity": "suggestion",
                "severity_cn": "建议",
                "severity_en": "Suggestion",
                "assignee": {
                    "id": 9124,
                    "name": "CodeHub_beta_dev",
                    "username": "c369c68f1ff84679b5a8ed904d8bff1c",
                    "state": "active",
                    "avatar_url": "",
                    "email": "liujian@example.com",
                    "name_cn": "CodeHub_beta_dev",
                    "web_url": "https://test.com/c369c68f1ff84679b5a8ed904d8bff1c",
                    "nick_name": "我是昵称",
                    "tenant_name": "devcloud_codehub_l00314597_01"
                },
                "proposer": {
                    "id": 9124,
                    "name": "CodeHub_beta_dev",
                    "username": "c369c68f1ff84679b5a8ed904d8bff1c",
                    "state": "active",
                    "avatar_url": "",
                    "email": "liujian@example.com",
                    "name_cn": "CodeHub_beta_dev",
                    "web_url": "https://test.com/c369c68f1ff84679b5a8ed904d8bff1c",
                    "nick_name": "我是昵称",
                    "tenant_name": "devcloud_codehub_l00314597_01"
                },
                "position": {
                    "base_sha": "a9ce1513d5185d5fe2bac52c597f204ce695c4be",
                    "start_sha": "a9ce1513d5185d5fe2bac52c597f204ce695c4be",
                    "head_sha": "53c75fa88dc4e7d0b68d108b7f1ee0a5c4564f44",
                    "old_path": "a.txt",
                    "new_path": "a.txt",
                    "position_type": "text",
                    "new_line": 1
                },
                "resolved": false,
                "is_outdated": false
            }
        ],
        "project_id": 2111704470,
        "noteable_type": "MergeRequest",
        "project_full_path": "sll_test00006/mr_test",
        "a_mode": "0",
        "b_mode": "100644",
        "deleted_file": false,
        "new_file": true,
        "resolved": false,
        "archived": false,
        "review_categories": "分类",
        "review_categories_cn": "分类",
        "review_categories_en": "分类",
        "review_modules": "模块",
        "severity": "suggestion",
        "severity_cn": "建议",
        "severity_en": "Suggestion",
        "assignee": {
            "id": 9124,
            "name": "CodeHub_beta_dev",
            "username": "c369c68f1ff84679b5a8ed904d8bff1c",
            "state": "active",
            "avatar_url": "",
            "email": "liujian@example.com",
            "name_cn": "CodeHub_beta_dev",
            "web_url": "https://test.com/c369c68f1ff84679b5a8ed904d8bff1c",
            "nick_name": "我是昵称",
            "tenant_name": "devcloud_codehub_l00314597_01"
        },
        "proposer": {
            "id": 9124,
            "name": "CodeHub_beta_dev",
            "username": "c369c68f1ff84679b5a8ed904d8bff1c",
            "state": "active",
            "avatar_url": "",
            "email": "liujian@example.com",
            "name_cn": "CodeHub_beta_dev",
            "web_url": "https://test.com/c369c68f1ff84679b5a8ed904d8bff1c",
            "nick_name": "我是昵称",
            "tenant_name": "devcloud_codehub_l00314597_01"
        },
        "merge_request_version_params": {},
        "diff_file": "@@ -0,0 +1,0 @@\n+1\r\n",
        "added_lines": 2,
        "removed_lines": 0
    },
    "status": "success"
}

状态码

状态码

描述

200

OK

错误码

状态码

错误码

错误信息

描述

处理措施

400

CH.00401999

'body': The body is out of max length (8000 characters).

检视意见内容超过8000字符

降低内容长度

400

CH.00401015

英文:String cannot contain emoticons or uncommon characters

中文:字符串不可包括表情包或生僻字等无法识别的字符

unicode编码\u0000 - \uffff,不支持emoji表情、部分生僻字等特殊字符

删除特殊字符

405

CH.00406019

英文:The current MR/CR is not allowed to be reviewed after being merged, change the settings to enable this operation

中文:当前合并/变更请求不允许在合并后新增检视意见,请改变设置后再进行操作

MR/CR已合并,不允许继续新增检视意见

设置->合并请求->勾选“允许合并请求合并或关闭后继续做代码检视和评论”

404

CH.00406026

中文:MR/CR extend not found

英文:合并/变更请求额外属性未找到

数据库未查询到MR/CR的额外信息

刷新页面重试

400

CH.00406029

中文: The current MR/CR is in merging process, can not add new review

英文: 当前合并/变更请求处于过程中,不能添加新的检视意见

MR/CR正在合入

稍后重试

相关文档