构建附件
附加到制品的日志、报告和其他文件,以及它们的历史记录。
本组中的操作及其访问规则、重试规则、参数和响应。每个请求都需携带密钥:Authorization: Bearer <密钥>(参见“身份验证”)。
操作
获取构建的附件
GET HEAD /api/v1/repositories/{repository}/artifacts/{id}/attachments
访问: 仓库权限:annotation.read; 文件密钥:read · 重试: 可安全重试(读取)
返回制品当前的附件修订版本:最多 32 个条目,每个条目指向仓库中另一个已发布的制品,包含 name、kind(manifest、sbom、signature、report、file)和 description,以及变更的操作者和时间。修订版本为 0 且没有条目,表示从未附加过任何内容。通过 artifactId 下载附件。
参数
| 名称 | 位置 | 类型 | 必需 | 规则 |
|---|---|---|---|---|
repository | 路径 | string | 是 | 匹配 ^[a-z0-9][a-z0-9_-]{0,63}$ |
id | 路径 | string (uuid) | 是 | — |
响应 200
| 字段 | 类型 | 必需 | 规则 |
|---|---|---|---|
revision | integer | 是 | 0–2147483647 |
items | 数组(object) | 是 | 最多 32 项 |
items[].name | string | 是 | 1–240 个字符 |
items[].kind | string | 是 | 取值之一:manifest, sbom, signature, report, file |
items[].artifactId | string (uuid) | 是 | — |
items[].description | string | 是 | 最多 512 个字符 |
actor | string | 是 | 可以为 null |
createdAt | string (date-time) | 是 | 可以为 null |
响应: 200, 400, 401, 403, 404, 409, 422, 503, 507
示例
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts/$ID/attachments" \
-H "Authorization: Bearer $ARKVORY_TOKEN"替换构建的附件
PUT /api/v1/repositories/{repository}/artifacts/{id}/attachments
访问: 仓库权限:annotation.write, artifact.read; 文件密钥:read, write · 重试: 仅在携带预期修订版本时重试(compare-and-swap)
替换制品的整个附件列表(最多 32 个条目;空列表会移除全部)并返回新的修订版本。每个目标必须是同一仓库中已发布的另一个制品(请先上传),名称在忽略大小写后必须唯一,描述最长 512 个字符。expectedRevision 必须是当前修订版本(首个列表为 0),否则返回 409 revision_mismatch;任何修订版本中提到的制品都继续受到删除保护。
参数
| 名称 | 位置 | 类型 | 必需 | 规则 |
|---|---|---|---|---|
repository | 路径 | string | 是 | 匹配 ^[a-z0-9][a-z0-9_-]{0,63}$ |
id | 路径 | string (uuid) | 是 | — |
请求正文 (application/json)
| 字段 | 类型 | 必需 | 规则 |
|---|---|---|---|
expectedRevision | integer | 是 | 0–2147483646 |
items | 数组(object) | 是 | 最多 32 项 |
items[].name | string | 是 | 1–240 个字符 |
items[].kind | string | 是 | 取值之一:manifest, sbom, signature, report, file |
items[].artifactId | string (uuid) | 是 | — |
items[].description | string | 是 | 最多 512 个字符 |
响应 200
| 字段 | 类型 | 必需 | 规则 |
|---|---|---|---|
revision | integer | 是 | 0–2147483647 |
items | 数组(object) | 是 | 最多 32 项 |
items[].name | string | 是 | 1–240 个字符 |
items[].kind | string | 是 | 取值之一:manifest, sbom, signature, report, file |
items[].artifactId | string (uuid) | 是 | — |
items[].description | string | 是 | 最多 512 个字符 |
actor | string | 是 | 可以为 null |
createdAt | string (date-time) | 是 | 可以为 null |
响应: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507
示例
curl -X PUT "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts/$ID/attachments" \
-H "Authorization: Bearer $ARKVORY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"expectedRevision":0,"items":[]}'列出构建的附件历史
GET HEAD /api/v1/repositories/{repository}/artifacts/{id}/attachments/history
访问: 仓库权限:annotation.read; 文件密钥:read · 重试: 可安全重试(读取)
按从新到旧的顺序,返回制品早期和当前的附件修订版本,每页 20 个,每个包含其条目、操作者和时间;将 before 设为 next 即可继续。每个修订版本中附加的制品都仍可下载,因为它们受到删除保护。
参数
| 名称 | 位置 | 类型 | 必需 | 规则 |
|---|---|---|---|---|
repository | 路径 | string | 是 | 匹配 ^[a-z0-9][a-z0-9_-]{0,63}$ |
id | 路径 | string (uuid) | 是 | — |
before | 查询 | integer | 否 | 1–2147483647 |
响应 200
| 字段 | 类型 | 必需 | 规则 |
|---|---|---|---|
items | 数组(object) | 是 | 最多 20 项 |
items[].revision | integer | 是 | 0–2147483647 |
items[].items | 数组(object) | 是 | 最多 32 项 |
items[].items[].name | string | 是 | 1–240 个字符 |
items[].items[].kind | string | 是 | 取值之一:manifest, sbom, signature, report, file |
items[].items[].artifactId | string (uuid) | 是 | — |
items[].items[].description | string | 是 | 最多 512 个字符 |
items[].actor | string | 是 | 可以为 null |
items[].createdAt | string (date-time) | 是 | 可以为 null |
next | integer | 是 | 1–2147483647; 可以为 null |
响应: 200, 400, 401, 403, 404, 409, 422, 503, 507
示例
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts/$ID/attachments/history" \
-H "Authorization: Bearer $ARKVORY_TOKEN"