Skip to content

Build attachments ​

Logs, reports and other files attached to an artifact, with their history.

Operations of this group with their access rule, retry rule, parameters and answers. Every request carries a key: Authorization: Bearer <key> (see Authentication).

Operations ​

Get the attachments of a build ​

GET HEAD /api/v1/repositories/{repository}/artifacts/{id}/attachments

Access: Repository permission: annotation.read; file keys: read · Retry: Safe to repeat (read)

Returns the current attachment revision of an artifact: up to 32 entries, each naming another published artifact of the repository with a name, a kind (manifest, sbom, signature, report, file) and a description, plus the actor and time of the change. Revision 0 with no items means nothing was ever attached. Download an attached file by its artifactId.

Parameters

NameInTypeRequiredRules
repositorypathstringyesmatches ^[a-z0-9][a-z0-9_-]{0,63}$
idpathstring (uuid)yes—

Response 200

FieldTypeRequiredRules
revisionintegeryes0–2147483647
itemsarray of objectyesup to 32 items
items[].namestringyes1–240 characters
items[].kindstringyesone of manifest, sbom, signature, report, file
items[].artifactIdstring (uuid)yes—
items[].descriptionstringyesup to 512 characters
actorstringyesmay be null
createdAtstring (date-time)yesmay be null

Responses: 200, 400, 401, 403, 404, 409, 422, 503, 507

Example

bash
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts/$ID/attachments" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Replace the attachments of a build ​

PUT /api/v1/repositories/{repository}/artifacts/{id}/attachments

Access: Repository permission: annotation.write, artifact.read; file keys: read, write · Retry: Repeat only with the expected revision (compare-and-swap)

Replaces the whole attachment list of an artifact (up to 32 entries; an empty list removes them all) and returns the new revision. Each target must be another artifact already published in the same repository (upload it first), names are unique ignoring case and descriptions have up to 512 characters. expectedRevision must be the current revision (0 for the first list), otherwise 409 revision_mismatch; artifacts named in any revision stay protected from deletion.

Parameters

NameInTypeRequiredRules
repositorypathstringyesmatches ^[a-z0-9][a-z0-9_-]{0,63}$
idpathstring (uuid)yes—

Request body (application/json)

FieldTypeRequiredRules
expectedRevisionintegeryes0–2147483646
itemsarray of objectyesup to 32 items
items[].namestringyes1–240 characters
items[].kindstringyesone of manifest, sbom, signature, report, file
items[].artifactIdstring (uuid)yes—
items[].descriptionstringyesup to 512 characters

Response 200

FieldTypeRequiredRules
revisionintegeryes0–2147483647
itemsarray of objectyesup to 32 items
items[].namestringyes1–240 characters
items[].kindstringyesone of manifest, sbom, signature, report, file
items[].artifactIdstring (uuid)yes—
items[].descriptionstringyesup to 512 characters
actorstringyesmay be null
createdAtstring (date-time)yesmay be null

Responses: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

Example

bash
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":[]}'

List the attachment history of a build ​

GET HEAD /api/v1/repositories/{repository}/artifacts/{id}/attachments/history

Access: Repository permission: annotation.read; file keys: read · Retry: Safe to repeat (read)

Returns the earlier and current attachment revisions of an artifact, newest first, 20 per page, each with its entries, actor and time; continue with before set to next. The attached artifacts of every revision remain downloadable, because they are protected from deletion.

Parameters

NameInTypeRequiredRules
repositorypathstringyesmatches ^[a-z0-9][a-z0-9_-]{0,63}$
idpathstring (uuid)yes—
beforequeryintegerno1–2147483647

Response 200

FieldTypeRequiredRules
itemsarray of objectyesup to 20 items
items[].revisionintegeryes0–2147483647
items[].itemsarray of objectyesup to 32 items
items[].items[].namestringyes1–240 characters
items[].items[].kindstringyesone of manifest, sbom, signature, report, file
items[].items[].artifactIdstring (uuid)yes—
items[].items[].descriptionstringyesup to 512 characters
items[].actorstringyesmay be null
items[].createdAtstring (date-time)yesmay be null
nextintegeryes1–2147483647; may be null

Responses: 200, 400, 401, 403, 404, 409, 422, 503, 507

Example

bash
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts/$ID/attachments/history" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Arkvory · ProAnimaStudio