跳转至

获取项目讨论列表

GET /api/v5/repos/{owner}/{repo}/discuss

该接口用于获取指定仓库下的项目讨论列表,支持按页码和每页数量进行分页,可按创建时间或评论数量排序并控制升降序,还可根据标题和描述进行搜索,返回讨论的标题、作者、分类、标签及评论数等详细信息。

访问令牌支持说明

  • AtomGit 用户访问令牌(AtomGit user access tokens)

是否允许匿名访问

此接口允许匿名访问

请求参数

参数名 位置 类型 必填 说明
owner path string 是 仓库所属空间地址(企业、组织或个人的地址 path)
repo path string 是 仓库路径(path)
access_token query string 否 用户授权码(可选,允许匿名访问)
page query string 否 当前的页码
per_page query string 否 每页的数量,最大为 100,默认 20
sort query string 否 排序字段:created(创建时间)、comment_size(评论数量);默认 created
direction query string 否 排序方向:asc(升序)/ desc(降序);默认 desc
search query string 否 根据标题和描述搜索

响应参数

响应体为讨论对象数组,每个元素对应一条讨论。

字段 类型 必返 可为空 说明
id string 是 否 讨论 ID
number integer 是 否 讨论编号
title string 是 否 讨论标题
created_at string 是 否 创建时间
updated_at string 是 否 更新时间
author object 是 否 讨论作者信息
is_lock integer 是 否 是否锁定
is_pin integer 是 否 是否置顶
is_category_pin integer 是 否 是否类型下置顶
is_closed integer 是 否 是否关闭
is_answered integer 是 否 是否采纳答案
comment_total integer 是 否 评论数量
category object 是 否 讨论分类信息
namespace object 是 否 所属命名空间
labels object[] 是 否 标签列表

author 对象

字段 类型 必返 可为空 说明
author.avatar_url string 是 否 头像 URL
author.id string 是 否 用户 ID
author.object_id string 是 否 用户对象 ID
author.login string 是 否 登录名
author.name string 是 否 用户名称

category 对象

字段 类型 必返 可为空 说明
category.id string 是 否 分类 ID
category.name string 是 否 分类名称
category.icon string 是 否 分类图标
category.description string 是 否 分类描述
category.type integer 是 否 分类类型

namespace 对象

字段 类型 必返 可为空 说明
namespace.id integer 是 否 命名空间 ID
namespace.kind string 是 否 命名空间类型
namespace.full_path string 是 否 命名空间完整路径

labels 对象

字段 类型 必返 可为空 说明
labels.id string 是 否 标签 ID
labels.name string 是 否 标签名称
labels.color string 是 否 标签颜色
labels.created_at string 是 否 标签创建时间
labels.updated_at string 是 否 标签更新时间

失败响应

该接口允许匿名访问,正常情况下返回 200。以下为可能的失败场景示例,错误字段名以后端实际返回为准。

400 参数错误

{
  "error": "invalid_request",
  "message": "参数不合法"
}

404 资源不存在

{
  "error": "not_found",
  "message": "仓库或讨论不存在"
}

HTTP 响应状态码

状态码 说明
200 成功(OK)
304 未修改(Not modified)
401 需要认证(Requires authentication)
403 禁止访问(Forbidden)
404 资源不存在(Not found)

请求示例

参数说明

  • <owner> 替换为仓库所属空间地址(企业、组织或个人的地址 path);
  • <repo> 替换为仓库路径(path);
  • 该接口允许匿名访问,也可以携带访问令牌以访问非公开内容。

cURL

curl -X GET 'https://api.atomgit.com/api/v5/repos/<owner>/<repo>/discuss?per_page=20&sort=created&direction=desc' \
  -H 'Accept: application/json'

JavaScript

// 原生 fetch (Node.js 18+ / 浏览器)
const response = await fetch(
  "https://api.atomgit.com/api/v5/repos/<owner>/<repo>/discuss?per_page=20&sort=created&direction=desc",
  {
    headers: {
      "Accept": "application/json",
    },
  }
);

if (!response.ok) {
  throw new Error(`请求失败: ${response.status}`);
}

const data = await response.json();
console.log(data);

Python

import requests

resp = requests.get(
    "https://api.atomgit.com/api/v5/repos/<owner>/<repo>/discuss",
    params={"per_page": 20, "sort": "created", "direction": "desc"},
    headers={"Accept": "application/json"},
    timeout=10,
)
resp.raise_for_status()

print(resp.json())

响应示例

状态码: 200

[
  {
    "id": "123456",
    "number": 1,
    "title": "如何集成 OAuth 2.0?",
    "created_at": "2024-01-15T10:30:00Z",
    "updated_at": "2024-01-16T08:00:00Z",
    "author": {
      "avatar_url": "https://api.atomgit.com/assets/avatars/octocat.png",
      "id": "10001",
      "object_id": "abc123",
      "login": "octocat",
      "name": "Octo Cat"
    },
    "is_lock": 0,
    "is_pin": 0,
    "is_category_pin": 0,
    "is_closed": 0,
    "is_answered": 1,
    "comment_total": 3,
    "category": {
      "id": "cat-01",
      "name": "问题反馈",
      "icon": "https://api.atomgit.com/assets/icons/issue.png",
      "description": "问题反馈分类",
      "type": 1
    },
    "namespace": {
      "id": 2001,
      "kind": "project",
      "full_path": "octocat/hello-world"
    },
    "labels": [
      {
        "id": "lab-01",
        "name": "bug",
        "color": "#d73a4a",
        "created_at": "2024-01-15T10:30:00Z",
        "updated_at": "2024-01-15T10:30:00Z"
      }
    ]
  }
]

错误码

错误码 说明
400 参数错误或请求无法解析
401 未认证或凭证无效(缺少/无效的访问凭证)
404 请求路径不存在或资源不存在
429 请求过于频繁,触发限流
500 系统内部错误

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 gitcode-dev/atomgit-api-doc