Gitee 帮助中心 / 帮助详情

    WebHook 推送数据类型说明

    webhook 钩子的推送数据中带有丰富的 json 聚合信息,按信息的聚合单元区分,大致可分为如下几种

    辅助说明:
    1、[] 里的键值对是视数据情况而定的,不确保存在
    2、*user、*commit 等表示引用对应的 json 数据聚
    3、该文档仅供参考,请以实际收到的数据为准
    4、如果发现文档有误,十分抱歉,请到 Gitee 反馈中心 提 issue

    # 标签。issue 和 pull request 的对应标签
    label: {
      id: Number,
      name: String,        # 标签名。eg:fixbug
      color: String        # 标签的颜色。eg:000000
    }
    
    # 企业信息
    enterprise: {
      name: String,        # 企业名。eg:开源中国
      url: String          # 企业在 Gitee 上的 url。eg:https://gitee.com/oschina
    }
    
    # 评论信息
    note: {
      id: Number,
      body: String,            # 评论内容。eg:好的东西应该开源...
      user: *user,             # 评论的作者信息。
      created_at: String,      # 评论的创建时间。eg:2020-01-01T00:00:00+08:00
      updated_at: String,      # 评论的更新时间。eg:2020-11-11T11:11:11+08:00
      html_url: String,        # 这条评论在 Gitee 上的 url。eg:https://gitee.com/oschina/git-osc#note_1
      [position: String],      # 在代码 commit 评论中对应的代码位置。eg:76ec1c6df700af34ae5f8dd00bd7bcb56c1bd706_9_9
      [commit_id: String]      # 在代码 commit 评论中对应的 commit id。eg:611de62f634d353bb75a290f59fa238ff2d8d3c7
    }
    
    # 用户信息
    user: {
      [id: Number],
      name: String,                   # 用户的昵称。eg:红薯
      email: String,                  # 用户的邮箱。eg:git@oschina.cn
      [username: String],             # 用户的 Gitee 个人空间地址。eg:gitee
      [user_name: String],            # 与上面的 username 一致。
      [url: String],                  # 用户的 Gitee 个人主页 url。eg:https://gitee.com/gitee
      [login: String],                # 与上面的 username 一致。
      [avatar_url: String || null],   # 用户头像 url。eg:https://gitee.com/assets/favicon.ico
      [html_url: String],             # 与上面的 url 一致。
      [type: String],                 # 用户类型,目前固定为 User。
      [site_admin: Boolean],          # 是不是管理员。
      [time: String],                 # git commit 中的时间。eg:2020-01-01T00:00:00+08:00
      [remark: String]                # 用户备注名。eg:Ruby 大神
    }
    
    # git commit 中的信息
    commit: {
      id: String,
      tree_id: String,                  # commit tree oid。eg:db78f3594ec0683f5d857ef731df0d860f14f2b2
      parent_ids: [String],             # commit parent_ids。eg:['a3bddf21a35af54348aae5b0f5627e6ba35be51c']
      message: String,                  # commit 的信息。eg:fix(cache): 修复了缓存问题
      timestamp: String,                # commit 的时间。eg:2020-01-01T00:00:00+08:00
      url: String,                      # commit 对应的 Gitee url。eg:https://gitee.com/mayun-team/oauth2_dingtalk/commit/664b34859fc4a924cd60be2592c0fc788fbeaf8f
      author: *user,                    # 作者信息。
      committer: *user,                 # 提交者信息。
      distinct: Boolean,                # 特殊的 commit,没任何改动,如 tag
      added: [String] || null,          # 新加入的文件名。eg:['README.md']
      removed: [String] || null,        # 被移除的文件名。eg:['README.md']
      modified: [String] || null        # 修改过的文件名。eg:['README.md']
    }
    
    # 里程碑信息
    milestone: {
      html_url: String,                 # Gitee 上对应的 url。eg:https://gitee.com/oschina/git-osc/milestones/1
      id: Number,
      number: Number,                   # 与上面的 id 一致
      title: String,                    # 里程碑的标题。eg:开源计划
      description: String || null,      # 里程碑的详细描述。eg:走向世界
      open_issues: Number,              # 开启状态的 issue 数量
      closed_issues: Number,            # 关闭状态的 issue 数量
      state: String,                    # 里程碑的状态。eg:open
      created_at: String,               # 里程碑创建的时间。eg:2020-01-01T00:00:00+08:00
      updated_at: String,               # 里程碑更新的时间。eg:2020-01-01T00:00:00+08:00
      due_on: String || null            # 里程碑结束的时间。eg:2020-01-01T00:00:00+08:00
    }
    
    # issue 信息
    issue: {
      html_url: String,                 # Gitee 上对应的 url。eg:https://gitee.com/oschina/git-osc/issues/1
      id: Number,
      number: String,                   # issue 对应的标识。eg:IG6E9
      title: String,                    # issue 标题。eg:这是一个 issue 标题
      user: *user,                      # issue 创建者。
      labels: [*label] || null,         # issue 对应的标签。
      state: String,                    # issue 状态。eg:open
      state_name: String,               # issue 状态名。eg:代办的
      type_name: String,                # issue 类型。eg:任务
      assignee: *user || null,          # issue 负责人。
      collaborators: [*user] || null,   # issue 协助者。
      milestone: *milestone || null,    # issue 所属的里程碑。
      comments: Number,                 # issue 的评论总数
      created_at: String,               # issue 的创建时间。eg:2020-01-01T00:00:00+08:00
      updated_at: String,               # issue 的更新时间。eg:2020-01-01T00:00:00+08:00
      body: String                      # issue 的内容体。eg:数据库优化...
    }
    
    # project 信息
    project: {
      id: Number,
      name: String,                    # 仓库名。eg:gitee
      path: String,                    # 仓库所属的空间地址。eg:oschian
      full_name: String,               # 完整的名字,name + path。eg:gitee/oschian
      owner: *user,                    # 仓库的所有者。
      private: Boolean,                # 是否公开。
      html_url: String,                # 对应 Gitee 的 url。eg:https://gitee.com/oschina/git-osc
      url: String,                     # 与上面 html_url 一致
      description: String,             # 仓库描述。eg:这是一个开源仓库...
      fork: Boolean,                   # 是不是 fork 仓库。
      created_at: String,              # 仓库的创建时间。eg:2020-01-01T00:00:00+08:00
      updated_at: String,              # 仓库的更新时间。eg:2020-01-01T00:00:00+08:00
      pushed_at: String,               # 仓库的最近一次推送时间。eg:2020-01-01T00:00:00+08:00
      git_url: String,                 # 仓库的 git 地址。eg:git://gitee.com:oschina/git-osc.git
      ssh_url: String,                 # 仓库的 ssh 地址。eg:git@gitee.com:oschina/git-osc.git
      clone_url: String,               # 仓库的 clone 地址。eg:https://gitee.com/oschina/git-osc.git
      svn_url: String,                 # 仓库的 svn 地址。eg:svn://gitee.com/oschina/git-osc
      git_http_url: String,            # 与上面的 clone_url 一致。
      git_ssh_url: String,             # 与上面的 ssh_url 一致。
      git_svn_url: String,             # 与上面的 svn_url 一致。
      homepage: String || null,        # 仓库的网页主页。eg:https://gitee.com
      stargazers_count: Number,        # 仓库的 star 数量。
      watchers_count: Number,          # 仓库的 watch 数量。
      forks_count: Number,             # 仓库的 fork 数量。
      language: String,                # 仓库的编程语言。eg: Ruby
      has_issues: Boolean,             # 仓库的是否开启了 issue 功能。
      has_wiki: Boolean,               # 仓库的是否开启了 wiki 功能。
      has_pages: Boolean,              # 仓库的是否开启了 page 服务。
      license: String || null,         # 仓库的开源协议。eg:MIT
      open_issues_count: Number,       # 仓库开启状态的 issue 总数。
      default_branch: String,          # 仓库的默认复制。eg:master
      namespace: String,               # 仓库所属的 Gitee 地址。eg:oschina
      name_with_namespace: String,     # 与上面的 full_name 一致。
      path_with_namespace: String      # 仓库的在 Gitee 的资源唯一标识。eg:oschia/git-osc
    }
    
    # 分支信息
    branch: {
      label: String,    # 分支标记。eg:oschina:master
      ref: String,      # 分支名。eg:master
      sha: String,      # git 提交记录中 sha 值。eg:51b1acb1b4044fcdb2ff8a75ad15a4b655101754
      user: *user,      # 分支所在仓库的所有者信息
      repo: *project    # 分支所在仓库的信息
    }
    
    # PR 信息
    pull_request: {
      id: Number,
      number: Number,                       # 与上面 id 一致
      state: String,                        # PR 状态。eg:open
      html_url: String,                     # PR 在 Gitee 上 url。eg:https://gitee.com/oschina/pulls/1
      diff_url: String,                     # PR diff 信息 url。eg:https://gitee.com/oschina/pulls/1.diff
      patch_url: String,                    # PR patch 信息 url。eg:https://gitee.com/oschina/pulls/1.patch
      title: String,                        # PR 的标题。eg:这是一个 PR 标题
      body: String || null,                 # PR 的内容。eg:升级服务...
      created_at: String,                   # PR 的创建时间。eg:2020-01-01T00:00:00+08:00
      updated_at: String,                   # PR 的更新时间。eg:2020-01-01T00:00:00+08:00
      closed_at: String || null,            # PR 的关闭时间。eg:2020-01-01T00:00:00+08:00
      merged_at: String || null,            # PR 的合并时间。eg:2020-01-01T00:00:00+08:00
      merge_commit_sha: String || null,     # PR 合并产生的 commit id。eg:51b1acb1b4044fcdb2ff8a75ad15a4b655101754
      merge_reference_name: String,         # PR 的源分支目标。eg:refs/pull/1/MERGE
      user: *user,                          # PR 的创建者。
      assignee: *user || null,              # PR 的负责人。
      assignees: [*user] || null,           # PR 的审核人。
      tester: *user || null,                # PR 的测试者。
      testers: [*user] || null,             # PR 的所有测试者。
      need_test: Boolean,                   # PR 是否需要测试。
      need_review: Boolean,                 # PR 是否需要审核。
      milestone: *milestone || null,        # PR 所属的里程碑。
      head: *branch || null,                # PR 的源分支。
      base: *branch,                        # PR 要合并的目标分支
      merged: Boolean,                      # PR 是否已合并。
      mergeable: Boolean,                   # PR 是否可以合并。
      merge_status: String,                 # PR 的合并状态。eg:unchecked
      updated_by: *user || null,            # PR 的修改者。
      comments: Number,                     # PR 的总评论数量。
      commits: Number,                      # PR 的总 commit 数量。
      additions: Number,                    # PR 新增了多少行。
      deletions: Number,                    # PR 删除了多少行。
      changed_files: Number                 # PR 修改了多少行。
    }

    目前 Gitee 支持的四类 webhook 钩子

    Issue Hook 数据格式

    {
      hook_id: self.id,                  # 钩子 id。
      hook_url: hook_url,                # 钩子路由。
      hook_name: String,                 # 钩子名,固定为 issue_hooks。
      password: String,                  # 钩子密码。eg:123456
      timestamp: Number,                 # 触发钩子的时间戳。eg: 1576754827988
      sign: String,                      # 钩子根据密钥计算的签名。eg: "rLEHLuZRIQHuTPeXMib9Czoq9dVXO4TsQcmQQHtjXHA="
      action: String,                    # issue 状态。eg:open
      issue: *issue,                     # issue 信息。
      repository: *project || null,      # 仓库信息。
      project: *project || null,         # 仓库信息。
      sender: *user,                     # 触发 hook 的用户信息。
      target_user: *user || null,        # 被委托处理 issue 的用户信息。
      user: *user,                       # issue 创建者。
      assignee: *user || null,           # issue 负责人。
      updated_by: *user,                 # 触发 hook 的用户信息。
      iid: String,                       # issue 对应的标识。eg:IG6E9
      title: String,                     # issue 标题。eg:这是一个 issue 标题
      description: String,               # issue 的内容体。eg:数据库优化...
      state: String,                     # issue 状态。eg:open
      milestone: String || null,         # 里程碑的标题。eg:开源计划
      url: String,                       # issue 在 Gitee 上对应的 url。eg:https://gitee.com/oschina/git-osc/issues/1
      enterprise: *enterprise || null    # issue 所属的企业信息。
    }

    Push / Tag Hook 数据格式

    {
      hook_id: self.id,                    # 钩子 id。
      hook_url: hook_url,                  # 钩子路由。
      hook_name: String,                   # 钩子名,固定为 push_hooks/tag_push_hooks。
      password: String,                    # 钩子密码。eg:123456
      timestamp: Number,                   # 触发钩子的时间戳。eg: 1576754827988
      sign: String,                        # 钩子根据密钥计算的签名。eg: "rLEHLuZRIQHuTPeXMib9Czoq9dVXO4TsQcmQQHtjXHA="
      ref: String,                         # 推送的分支。eg:refs/heads/master
      before: String,                      # 推送前分支的 commit id。eg:5221c062df39e9e477ab015df22890b7bf13fbbd
      after: String,                       # 推送后分支的 commit id。eg:1cdcd819599cbb4099289dbbec762452f006cb40
      [total_commits_count: Number],       # 推送包含的 commit 总数。
      [commits_more_than_ten: Boolean],    # 推送包含的 commit 总数是否大于十二。
      created: Boolean,                    # 推送的是否是新分支。
      deleted: Boolean,                    # 推送的是否是删除分支。
      compare: String,                     # 推送的 commit 差异 url。eg:https://gitee.com/oschina/git-osc/compare/5221c062df39e9e477ab015df22890b7bf13fbbd...1cdcd819599cbb4099289dbbec762452f006cb40
      commits: [*commit] || null,          # 推送的全部 commit 信息。
      head_commit: commit,                 # 推送最前面的 commit 信息。
      repository: *project,                # 推送的目标仓库信息。
      project: *project,                   # 推送的目标仓库信息。
      user_id: Number,
      user_name: String,                   # 推送者的昵称。
      user: *user,                         # 推送者的用户信息。
      pusher: *user,                       # 推送者的用户信息。
      sender: *user,                       # 推送者的用户信息。
      enterprise: *enterprise || ull       # 推送的目标仓库所在的企业信息。
    }

    Pull Request Hook 数据格式

    {
      hook_id: self.id,                    # 钩子 id。
      hook_url: hook_url,                  # 钩子路由。
      hook_name: String,                   # 钩子名,固定为 merge_request_hooks。
      password: String,                    # 钩子密码。eg:123456
      timestamp: Number,                   # 触发钩子的时间戳。eg: 1576754827988
      sign: String,                        # 钩子根据密钥计算的签名。eg: "rLEHLuZRIQHuTPeXMib9Czoq9dVXO4TsQcmQQHtjXHA="
      action: String,                      # PR 状态。eg:open
      pull_request: *pull_request,         # PR 的信息。
      number: Number,                      # PR 的 id。
      iid: Number,                         # 与上面 number 一致。
      title: String,                       # PR 的标题。eg:这是一个 PR 标题
      body: String || nil,                 # PR 的内容。eg:升级服务...
      state: String,                       # PR 状态。eg:open
      merge_status: String,                # PR 的合并状态。eg:unchecked
      merge_commit_sha: String,            # PR 合并产生的 commit id。eg:51b1acb1b4044fcdb2ff8a75ad15a4b655101754
      url: String,                         # PR 在 Gitee 上 url。eg:https://gitee.com/oschina/pulls/1
      source_branch: String || null,       # PR 的源分支名。eg:fixbug
      source_repo: {
        project: *project,                 # PR 的源仓库信息。
        repository: *project               # PR 的源仓库信息。
      } || null,
      target_branch: String,               # PR 的目标分支名。master
      target_repo: {
        project: *project,                 # PR 的目标仓库信息。
        repository: *project               # PR 的目标仓库信息。
      },
      project: *project,                   # PR 的目标仓库信息。
      repository: *project,                # PR 的目标仓库信息。
      author: *user,                       # PR 的创建者信息。
      updated_by: *user,                   # PR 的更新者信息。
      sender: *user,                       # PR 的更新者信息。
      target_user: *user || null,          # 被委托处理 PR 的用户信息。
      enterprise: *enterprise || null      # PR 仓库所在的企业信息。
    }

    Note Hook 数据格式

    {
      hook_id: self.id,                     # 钩子 id。
      hook_url: hook_url,                   # 钩子路由。
      hook_name: String,                    # 钩子名,固定为 note_hooks。
      password: String,                     # 钩子密码。eg:123456
      timestamp: Number,                    # 触发钩子的时间戳。eg: 1576754827988
      sign: String,                         # 钩子根据密钥计算的签名。eg: "rLEHLuZRIQHuTPeXMib9Czoq9dVXO4TsQcmQQHtjXHA="
      action: String,                       # 评论的动作。eg:comment
      comment: *note,                       # 评论的数据信息。
      repository: *project || null,         # 评论所在仓库的信息。
      project: *project || null,            # 评论所在仓库的信息。
      author: *user,                        # 评论的作者信息。
      sender: *user,                        # 评论的作者信息。
      url: String,                          # 这条评论在 Gitee 上的 url。eg:https://gitee.com/oschina/git-osc#note_1
      note: String,                         # 评论内容。eg:好的东西应该开源...
      noteable_type: String,                # 被评论的目标类型。eg:Issue
      noteable_id: Number,                  # 被评论的目标 id。
      [issue: *issue],                      # 被评论的 Issue 信息。
      [pull_request: *pull_request],        # 被评论的 PR 信息。
      title: String || null,                # 被评论的目标标题。eg:这是一个 PR 标题
      per_iid: String,                      # 被评论的目标标识。eg:IG6E9
      short_commit_id: String || null,      # 被平路的 commit 提交中的简短 sha。eg:51b1acb
      enterprise: *enterprise || null       # 被评论的目标所在的企业信息。
    }

    搜索帮助