用户问题反馈读取

  • Scope:admin.v1.client-feedback.read
  • 权限项:用户问题反馈读取(client-feedback)
  • 权限类型:读取
  • 接口:GET/api/openapi/v1/client-feedback

认证与请求头

使用应用 API Key 调用。当前接口只校验上方独立 Scope;读取、管理与执行权限互不隐含。

名称位置类型必填说明示例
Authorizationheaderstring是应用 API Key,使用 Bearer 方式传递。Bearer qwk_***
X-Request-Idheaderstring否可选的调用追踪标识;未传入时由服务端生成。req-20260831-001

请求参数

名称位置类型必填说明示例
fromquerystring · date-time必填Inclusive creation/event time, RFC3339 with timezone; keep fixed while paging."2026-08-27T10:00:00Z"
toquerystring · date-time必填Exclusive creation/event time, after from and at most 180 days later; keep fixed while paging."2026-08-27T10:00:00Z"
cursorquerystring否Opaque next_cursor from the previous page of the same organization and time interval."<string>"
page_sizequeryinteger · int64否-20

请求示例

cURL

curl --request GET \
  --url 'https://example.invalid/api/openapi/v1/client-feedback?from=<from>&to=<to>&cursor=<cursor>&page_size=20' \
  --header 'Authorization: Bearer <API_KEY>'

文件链接有效期与转存

截图的 screenshots[].url、screenshots[].download_url 和诊断日志的 diagnostic.url 均为临时签名链接,不保证长期可用。各文件链接的到期时间以对应的 expires_at 为准,不要在对接程序中硬编码有效时长。

拉取数据后,应及时在 expires_at 之前下载需要保留的文件,并转存至对接方自有的对象存储或文件存储;保存反馈 id 与转存文件的关联关系。不能只保存接口返回的链接作为长期文件地址。

下载文件时直接请求返回的完整链接,无需携带 OpenAPI API Key,也不要把 API Key 发送给对象存储。链接包含临时访问签名,应按凭据保护,避免写入公开日志。

若下载前链接已过期,可使用原 from、to 时间区间重新拉取并按 id 去重,获取新链接后立即下载。刷新链接不代表文件永久保留;原文件不存在时不能依赖重新拉取恢复文件。

diagnostic 在没有诊断文件时为 null;有文件时为包含 url、name 和 expires_at 的对象。截图与诊断日志均遵循上述下载和转存要求。

响应

200 OK

名称类型必填说明示例
has_moreboolean是-false
itemsarray<OpenapifacadeFeedbackRecord>是-[{"can_report":false,"created_at":"2026-08-27T10:00:00Z","description":"<string>","diagnostic":{"url":"<signed-url>","name":"diagnostic.zip","expires_at":"2026-08-27T10:15:00Z"},"diagnostic_available":true,"diagnostic_filename":"<string>","id":"<string>","official_issue_id":"<string>","org_id":"<string>","read_at":"2026-08-27T10:00:00Z","read_by":"<string>","report_status":"<string>","reported_at":"2026-08-27T10:00:00Z","screenshots":[{"download_url":"<string>","expires_at":"2026-08-27T10:00:00Z","name":"<string>","url":"<string>"}],"status":"unread","updated_at":"2026-08-27T10:00:00Z","updated_by":"<string>","updated_by_email":"<string>","updated_by_name":"<string>","user_email":"<string>","user_id":"<string>","user_name":"<string>"}]
items[].can_reportboolean是-false
items[].created_atstring · date-time是-"2026-08-27T10:00:00Z"
items[].descriptionstring是-"<string>"
items[].diagnosticobject | null是诊断日志文件;无文件时为 null,有文件时包含下列字段。null
items[].diagnostic.urlstring有文件时临时签名下载链接;到期前下载并转存,不保证长期可用。"<signed-url>"
items[].diagnostic.namestring有文件时诊断日志文件名。"diagnostic.zip"
items[].diagnostic.expires_atstring · date-time有文件时诊断日志链接的到期时间,RFC3339 格式。"2026-08-27T10:15:00Z"
items[].diagnostic_availableboolean是-false
items[].diagnostic_filenamestring否-"<string>"
items[].idstring是-"<string>"
items[].official_issue_idstring | null是-"<string>"
items[].org_idstring是-"<string>"
items[].read_atstring | null · date-time是-"2026-08-27T10:00:00Z"
items[].read_bystring | null是-"<string>"
items[].report_statusstring是-"<string>"
items[].reported_atstring | null · date-time是-"2026-08-27T10:00:00Z"
items[].screenshotsarray<OpenapifacadeFeedbackAttachment>是-[{"download_url":"<string>","expires_at":"2026-08-27T10:00:00Z","name":"<string>","url":"<string>"}]
items[].screenshots[].download_urlstring否临时签名下载链接;到期前下载并转存。"<string>"
items[].screenshots[].expires_atstring · date-time是该截图预览与下载链接的到期时间,RFC3339 格式。"2026-08-27T10:00:00Z"
items[].screenshots[].namestring是-"<string>"
items[].screenshots[].urlstring是临时签名预览链接,不保证长期可用。"<string>"
items[].statusstring是-"unread"
items[].updated_atstring · date-time否-"2026-08-27T10:00:00Z"
items[].updated_bystring否-"<string>"
items[].updated_by_emailstring否-"<string>"
items[].updated_by_namestring否-"<string>"
items[].user_emailstring是-"<string>"
items[].user_idstring是-"<string>"
items[].user_namestring是-"<string>"
next_cursorstring是-"<string>"
official_reporting_enabledboolean是-false

响应示例

{
  "has_more": false,
  "items": [
    {
      "can_report": false,
      "created_at": "2026-08-27T10:00:00Z",
      "description": "<string>",
      "diagnostic": {
        "url": "<signed-url>",
        "name": "diagnostic.zip",
        "expires_at": "2026-08-27T10:15:00Z"
      },
      "diagnostic_available": true,
      "diagnostic_filename": "<string>",
      "id": "<string>",
      "official_issue_id": "<string>",
      "org_id": "<string>",
      "read_at": "2026-08-27T10:00:00Z",
      "read_by": "<string>",
      "report_status": "<string>",
      "reported_at": "2026-08-27T10:00:00Z",
      "screenshots": [
        {
          "download_url": "<string>",
          "expires_at": "2026-08-27T10:00:00Z",
          "name": "<string>",
          "url": "<string>"
        }
      ],
      "status": "unread",
      "updated_at": "2026-08-27T10:00:00Z",
      "updated_by": "<string>",
      "updated_by_email": "<string>",
      "updated_by_name": "<string>",
      "user_email": "<string>",
      "user_id": "<string>",
      "user_name": "<string>"
    }
  ],
  "next_cursor": "<string>",
  "official_reporting_enabled": false
}

default Flat business error

名称类型必填说明示例
codestring否Stable business error code"<string>"
detailstring是Human-readable error description"<string>"
detailsOpenapiErrorDetails否-{"field":"<string>","reason":"<string>","suggestion":"<string>"}
details.fieldstring否Request field that failed validation"<string>"
details.reasonstring否Stable validation failure reason"<string>"
details.suggestionstring否Suggested normalized value"<string>"
errorstring是Stable HTTP error type"<string>"

响应示例

{
  "code": "<string>",
  "detail": "<string>",
  "details": {
    "field": "<string>",
    "reason": "<string>",
    "suggestion": "<string>"
  },
  "error": "<string>"
}