본문으로 건너뛰기

스테이지 및 승격 ​

아티팩트의 스테이지(예: release), 리포지토리 간 승격, 스테이지에 해당하는 버전 확인.

이 그룹의 작업과 각 작업의 액세스 규칙, 재시도 규칙, 매개 변수, 응답입니다. 모든 요청에는 키가 포함됩니다: Authorization: Bearer <키>(“인증” 참조).

작업 ​

아티팩트 스테이지 목록 ​

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

액세스: 리포지토리 권한: artifact.read; 파일 키: read · 재시도: 반복해도 안전함(읽기)

게시된 아티팩트의 현재 승격 스테이지(최대 16개)를 반환하며, 각 항목에 추가된 시각, 행위자, 코멘트가 있습니다.

매개 변수

이름위치형식필수규칙
repository경로string예^[a-z0-9][a-z0-9_-]{0,63}$ 패턴과 일치
id경로string (uuid)예—

응답 200

필드형식필수규칙
itemsobject 배열예요소 16개 이하
items[].artifactIdstring (uuid)예—
items[].stagestring예^[a-z0-9][a-z0-9_.-]{0,31}$ 패턴과 일치
items[].promotedAtstring (date-time)예—
items[].actorstring예—
items[].commentstring예1024자 이하; null일 수 있음

응답: 200, 400, 401, 403, 404, 409, 422, 503, 507

예제

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

아티팩트에 스테이지 추가 ​

PUT /api/v1/repositories/{repository}/artifacts/{id}/stages/{stage}

액세스: 리포지토리 권한: artifact.promote, artifact.read; 파일 키: read, write · 재시도: 반복해도 안전함: 같은 요청은 같은 결과를 냄

게시된 아티팩트에 stage(영문 소문자, 숫자, _.- 1–32자, 문자나 숫자로 시작)를 표시하고, 선택 사항인 comment(최대 1,024자)와 함께 승격 저널에 이벤트를 기록합니다. 아티팩트에 이미 있는 스테이지를 추가해도 아무것도 바뀌지 않고 원래 시각이 유지되므로, 같은 버전을 다시 승격하려면(order=promoted를 쓰는 롤백 등) 먼저 스테이지를 제거합니다. 아티팩트는 스테이지를 최대 16개까지 가질 수 있습니다(409 stage_limit).

매개 변수

이름위치형식필수규칙
repository경로string예^[a-z0-9][a-z0-9_-]{0,63}$ 패턴과 일치
id경로string (uuid)예—
stage경로string예^[a-z0-9][a-z0-9_.-]{0,31}$ 패턴과 일치

요청 본문 (application/json)

필드형식필수규칙
commentstring아니요1024자 이하; null일 수 있음

응답 200

필드형식필수규칙
artifactIdstring (uuid)예—
stagestring예^[a-z0-9][a-z0-9_.-]{0,31}$ 패턴과 일치
promotedAtstring (date-time)예—
actorstring예—
commentstring예1024자 이하; null일 수 있음

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

예제

bash
curl -X PUT "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts/$ID/stages/$STAGE" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'

아티팩트에서 스테이지 제거 ​

DELETE /api/v1/repositories/{repository}/artifacts/{id}/stages/{stage}

액세스: 리포지토리 권한: artifact.promote, artifact.read; 파일 키: read, write · 재시도: 반복해도 안전함: 같은 요청은 같은 결과를 냄

게시된 아티팩트에서 stage를 제거하고 승격 저널에 이벤트를 기록하며, 아티팩트에 없는 스테이지를 제거하는 요청도 성공합니다. 이 스테이지로 하는 패키지 확인은 즉시 이 아티팩트를 더 이상 선택하지 않습니다.

매개 변수

이름위치형식필수규칙
repository경로string예^[a-z0-9][a-z0-9_-]{0,63}$ 패턴과 일치
id경로string (uuid)예—
stage경로string예^[a-z0-9][a-z0-9_.-]{0,31}$ 패턴과 일치

응답: 204, 400, 401, 403, 404, 405, 409, 422, 503, 507

예제

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

아티팩트 승격 기록 목록 ​

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

액세스: 리포지토리 권한: artifact.read; 파일 키: read · 재시도: 반복해도 안전함(읽기)

아티팩트 하나의 저널을 오래된 순으로 반환합니다. 추가·제거된 스테이지와 다른 리포지토리로의 승격 및 다른 리포지토리로부터의 승격이 들어 있으며, 각 항목에 대응 아티팩트, 행위자, 코멘트, 시각이 있습니다. 페이지는 limit개 이벤트(1–100, 기본 50)로 구성되며 after에 next 값을 넣어 이어서 조회합니다.

매개 변수

이름위치형식필수규칙
repository경로string예^[a-z0-9][a-z0-9_-]{0,63}$ 패턴과 일치
id경로string (uuid)예—
after쿼리string아니요10진수 숫자로 쓴 정수이며 문자열로 전송
limit쿼리string아니요10진수 숫자로 쓴 정수이며 문자열로 전송; At most 100.

응답 200

필드형식필수규칙
itemsobject 배열예요소 100개 이하
items[].sequencestring예10진수 숫자로 쓴 정수이며 문자열로 전송
items[].repositorystring예^[a-z0-9][a-z0-9_-]{0,63}$ 패턴과 일치
items[].artifactIdstring (uuid)예—
items[].actionstring예stage.added, stage.removed, promoted, received 중 하나
items[].stagestring예^[a-z0-9][a-z0-9_.-]{0,31}$ 패턴과 일치; null일 수 있음
items[].modestring예copy, move, null 중 하나; null일 수 있음
items[].peerRepositorystring예^[a-z0-9][a-z0-9_-]{0,63}$ 패턴과 일치; null일 수 있음
items[].peerArtifactIdstring (uuid)예null일 수 있음
items[].actorstring예—
items[].commentstring예1024자 이하; null일 수 있음
items[].occurredAtstring (date-time)예—
nextstring예null일 수 있음

응답: 200, 400, 401, 403, 404, 409, 422, 503, 507

예제

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

아티팩트를 다른 리포지토리로 승격 ​

POST /api/v1/repositories/{repository}/artifacts/{id}/promote

액세스: 리포지토리 권한: artifact.read, content.read; 파일 키: read · 재시도: 반복해도 안전함: 같은 요청은 같은 결과를 냄

바이트를 다시 보내지 않고 target에 아티팩트를 게시하며, 선택적으로 stages와 comment를 지정할 수 있습니다. 호출자는 대상 리포지토리에서도 artifact.promote 권한이 필요합니다. mode가 copy(기본)이면 원본을 유지하고, move는 이쪽에서도 artifact.promote가 필요하며 같은 트랜잭션에서 원본을 삭제 처리하고 스테이지를 함께 옮기며, 원본을 삭제할 수 없으면 409로 거부됩니다. 응답은 사본과 함께 201이고, 반복하면 같은 사본을 200으로 반환합니다. 대상에 이 패키지 버전이 이미 있으면 SHA-256이 같을 때는 그 아티팩트를 반환하고 다를 때는 409 version_exists입니다. 빌드 첨부 파일과 파일 경로는 옮겨지지 않습니다.

매개 변수

이름위치형식필수규칙
repository경로string예^[a-z0-9][a-z0-9_-]{0,63}$ 패턴과 일치
id경로string (uuid)예—

요청 본문 (application/json)

필드형식필수규칙
targetstring예^[a-z0-9][a-z0-9_-]{0,63}$ 패턴과 일치
modestring아니요copy, move 중 하나
stagesstring 배열아니요요소 16개 이하; 중복 항목 없음; 각 요소: ^[a-z0-9][a-z0-9_.-]{0,31}$ 패턴과 일치
commentstring아니요1024자 이하; null일 수 있음

응답 200

필드형식필수규칙
repositorystring예^[a-z0-9][a-z0-9_-]{0,63}$ 패턴과 일치
artifactIdstring (uuid)예—
sourceRepositorystring예^[a-z0-9][a-z0-9_-]{0,63}$ 패턴과 일치
sourceArtifactIdstring (uuid)예—
modestring예copy, move 중 하나
createdboolean예—
stagesstring 배열예요소 16개 이하; 중복 항목 없음; 각 요소: ^[a-z0-9][a-z0-9_.-]{0,31}$ 패턴과 일치

응답: 200, 201, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

예제

bash
curl -X POST "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/artifacts/$ID/promote" \
  -H "Authorization: Bearer $ARKVORY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"target":"<target>"}'

스테이지가 있는 아티팩트 목록 ​

GET HEAD /api/v1/repositories/{repository}/stages

액세스: 리포지토리 권한: artifact.list; 파일 키: read · 재시도: 반복해도 안전함(읽기)

리포지토리의 스테이지 항목(아티팩트, 스테이지, 시각, 행위자, 코멘트)을 아티팩트와 스테이지 순으로 나열하며, 선택적으로 stage만, 또는 ids(쉼표로 구분한 ID 1–100개, 예: 패키지 한 페이지의 스테이지를 한 번에 표시)에 있는 아티팩트만 대상으로 합니다. 페이지는 limit개 항목(1–100, 기본 100)으로 구성되며 after에 next 값(<artifactId>/<stage>)을 넣어 이어서 조회합니다.

매개 변수

이름위치형식필수규칙
repository경로string예^[a-z0-9][a-z0-9_-]{0,63}$ 패턴과 일치
stage쿼리string아니요^[a-z0-9][a-z0-9_.-]{0,31}$ 패턴과 일치
after쿼리string아니요—
limit쿼리string아니요10진수 숫자로 쓴 정수이며 문자열로 전송; At most 100.
ids쿼리string아니요3699자 이하; Up to 100 comma-separated artifact ids.

응답 200

필드형식필수규칙
itemsobject 배열예요소 100개 이하
items[].artifactIdstring (uuid)예—
items[].stagestring예^[a-z0-9][a-z0-9_.-]{0,31}$ 패턴과 일치
items[].promotedAtstring (date-time)예—
items[].actorstring예—
items[].commentstring예1024자 이하; null일 수 있음
nextstring예null일 수 있음

응답: 200, 400, 401, 403, 404, 409, 422, 503, 507

예제

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

리포지토리 승격 저널 따라가기 ​

GET HEAD /api/v1/repositories/{repository}/promotions

액세스: 리포지토리 권한: artifact.list; 파일 키: read · 재시도: 반복해도 안전함(읽기)

리포지토리의 모든 아티팩트에 대한 스테이지 및 승격 이벤트를 오래된 순으로 반환하며, CI/CD가 폴링하는 용도입니다. 이벤트는 스테이지 추가 또는 제거, 다른 리포지토리로의 승격, 다른 리포지토리로부터의 수신입니다. 페이지는 limit개 이벤트(1–100, 기본 50)로 구성되며, 마지막 sequence를 저장해 두었다가 after에 next 값을 넣어 이어서 조회합니다.

매개 변수

이름위치형식필수규칙
repository경로string예^[a-z0-9][a-z0-9_-]{0,63}$ 패턴과 일치
after쿼리string아니요10진수 숫자로 쓴 정수이며 문자열로 전송
limit쿼리string아니요10진수 숫자로 쓴 정수이며 문자열로 전송; At most 100.

응답 200

필드형식필수규칙
itemsobject 배열예요소 100개 이하
items[].sequencestring예10진수 숫자로 쓴 정수이며 문자열로 전송
items[].repositorystring예^[a-z0-9][a-z0-9_-]{0,63}$ 패턴과 일치
items[].artifactIdstring (uuid)예—
items[].actionstring예stage.added, stage.removed, promoted, received 중 하나
items[].stagestring예^[a-z0-9][a-z0-9_.-]{0,31}$ 패턴과 일치; null일 수 있음
items[].modestring예copy, move, null 중 하나; null일 수 있음
items[].peerRepositorystring예^[a-z0-9][a-z0-9_-]{0,63}$ 패턴과 일치; null일 수 있음
items[].peerArtifactIdstring (uuid)예null일 수 있음
items[].actorstring예—
items[].commentstring예1024자 이하; null일 수 있음
items[].occurredAtstring (date-time)예—
nextstring예null일 수 있음

응답: 200, 400, 401, 403, 404, 409, 422, 503, 507

예제

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

패키지 버전 확인 ​

GET HEAD /api/v1/repositories/{repository}/packages/resolve

액세스: 리포지토리 권한: package.read; 파일 키: read · 재시도: 반복해도 안전함(읽기)

downloadPackageContent와 같은 규칙으로 등록된 UPack 버전 하나를 선택해 바이트 없이 반환합니다. 응답에는 버전, 아티팩트 ID, SHA-256, 크기, 게시 시각, 현재 스테이지가 있습니다. name은 필수이고 group의 기본값은 루트 그룹이며, 정확한 version 또는 SemVer range로 선택하고 선택적으로 stage, prerelease=true, order=promoted(stage 필요)를 지정합니다. version과 range가 없으면 가장 높은 안정 버전입니다. 일치하는 항목이 없으면 404이며, 그 버전에 머무르려면 결과를 아티팩트 ID로 다운로드합니다.

매개 변수

이름위치형식필수규칙
repository경로string예^[a-z0-9][a-z0-9_-]{0,63}$ 패턴과 일치
group쿼리string아니요128자 이하
name쿼리string예1–128자
version쿼리string아니요128자 이하; Exact version; excludes range.
range쿼리string아니요256자 이하; SemVer range: 1.2.3, ^1.2, ~1.2.3, 1.x, >=1.0.0 <2.0.0, a || b.
stage쿼리string아니요^[a-z0-9][a-z0-9_.-]{0,31}$ 패턴과 일치; Only versions promoted to this stage.
prerelease쿼리string아니요true, false 중 하나; Include prereleases.
order쿼리string아니요version, promoted 중 하나; promoted picks the most recently staged version and requires stage.

응답 200

필드형식필수규칙
groupstring예—
namestring예—
versionstring예—
artifactIdstring (uuid)예—
sha256string예SHA-256: 소문자 16진수 64자리
sizestring예10진수 숫자로 쓴 정수이며 문자열로 전송
publishedAtstring (date-time)예—
stagedAtstring (date-time)예null일 수 있음
stagesstring 배열예요소 16개 이하; 중복 항목 없음; 각 요소: ^[a-z0-9][a-z0-9_.-]{0,31}$ 패턴과 일치

응답: 200, 400, 401, 403, 404, 409, 422, 503, 507

예제

bash
curl -X GET "$ARKVORY_URL/api/v1/repositories/$REPOSITORY/packages/resolve?name=$NAME" \
  -H "Authorization: Bearer $ARKVORY_TOKEN"

Arkvory · ProAnimaStudio