InfoGrab Docs

보호된 패키지 API

요약

이 API를 사용하여 패키지에 대한 보호 규칙을 관리합니다. 지정된 프로젝트의 모든 패키지 보호 규칙을 나열합니다. 성공 시 200과 패키지 보호 규칙 목록을 반환합니다. 다음 상태 코드를 반환할 수 있습니다: 지정된 프로젝트에 대한 패키지 보호 규칙을 만듭니다.

히스토리
  • GitLab 17.1에서 packages_protected_packages라는 플래그와 함께 도입됨. 기본적으로 비활성화됨.
  • GitLab 17.5에서 GitLab.com에서 활성화됨.
  • GitLab 17.6에서 일반 가용성. 기능 플래그 packages_protected_packages 제거됨.
  • GitLab 17.11에서 packages_protected_packages_delete라는 플래그와 함께 minimum_access_level_for_delete 속성이 추가됨. 기본적으로 비활성화됨.

이 API를 사용하여 패키지에 대한 보호 규칙을 관리합니다.

모든 패키지 보호 규칙 목록 조회#

지정된 프로젝트의 모든 패키지 보호 규칙을 나열합니다.

GET /api/v4/projects/:id/packages/protection/rules

지원되는 속성:

속성 유형 필수 여부 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL 인코딩된 경로.

성공 시 200과 패키지 보호 규칙 목록을 반환합니다.

다음 상태 코드를 반환할 수 있습니다:

  • 200 OK: 패키지 보호 규칙 목록.
  • 401 Unauthorized: 액세스 토큰이 유효하지 않습니다.
  • 403 Forbidden: 사용자가 이 프로젝트의 패키지 보호 규칙을 조회할 권한이 없습니다.
  • 404 Not Found: 프로젝트를 찾을 수 없습니다.

요청 예시:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/7/packages/protection/rules"

응답 예시:

[
 {
  "id": 1,
  "project_id": 7,
  "package_name_pattern": "@flightjs/flight-package-0",
  "package_type": "npm",
  "minimum_access_level_for_delete": "owner",
  "minimum_access_level_for_push": "maintainer"
 },
 {
  "id": 2,
  "project_id": 7,
  "package_name_pattern": "@flightjs/flight-package-1",
  "package_type": "npm",
  "minimum_access_level_for_delete": "owner",
  "minimum_access_level_for_push": "maintainer"
 }
]

패키지 보호 규칙 만들기#

지정된 프로젝트에 대한 패키지 보호 규칙을 만듭니다.

POST /api/v4/projects/:id/packages/protection/rules

지원되는 속성:

속성 유형 필수 여부 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL 인코딩된 경로.
package_name_pattern 문자열 보호 규칙으로 보호되는 패키지 이름. 예: @my-scope/my-package-*. 와일드카드 문자 * 허용.
package_type 문자열 보호 규칙으로 보호되는 패키지 유형. 예: npm.
minimum_access_level_for_delete 문자열 패키지를 삭제하는 데 필요한 최소 GitLab 액세스 레벨. 유효한 값: null, owner 또는 admin. 값이 null이면 기본 최소 액세스 레벨은 maintainer. minimum_access_level_for_push가 설정되지 않은 경우 제공해야 합니다. packages_protected_packages_delete라는 기능 플래그 뒤에 있습니다. 기본적으로 비활성화됨.
minimum_access_level_for_push 문자열 패키지를 푸시하는 데 필요한 최소 GitLab 액세스 레벨. 유효한 값: null, maintainer, owner 또는 admin. 값이 null이면 기본 최소 액세스 레벨은 developer. minimum_access_level_for_delete가 설정되지 않은 경우 제공해야 합니다.

성공 시 201과 생성된 패키지 보호 규칙을 반환합니다.

다음 상태 코드를 반환할 수 있습니다:

  • 201 Created: 패키지 보호 규칙이 성공적으로 만들어졌습니다.
  • 400 Bad Request: 패키지 보호 규칙이 유효하지 않습니다.
  • 401 Unauthorized: 액세스 토큰이 유효하지 않습니다.
  • 403 Forbidden: 사용자가 패키지 보호 규칙을 만들 권한이 없습니다.
  • 404 Not Found: 프로젝트를 찾을 수 없습니다.
  • 422 Unprocessable Entity: package_name_pattern이 이미 사용됨과 같은 이유로 패키지 보호 규칙을 만들 수 없습니다.

요청 예시:

curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --header "Content-Type: application/json" \
  --url "https://gitlab.example.com/api/v4/projects/7/packages/protection/rules" \
  --data '{
       "package_name_pattern": "package-name-pattern-*",
       "package_type": "npm",
       "minimum_access_level_for_delete": "owner",
       "minimum_access_level_for_push": "maintainer"
    }'

패키지 보호 규칙 업데이트#

지정된 프로젝트에 대한 패키지 보호 규칙을 업데이트합니다.

PATCH /api/v4/projects/:id/packages/protection/rules/:package_protection_rule_id

지원되는 속성:

속성 유형 필수 여부 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL 인코딩된 경로.
package_protection_rule_id 정수 업데이트할 패키지 보호 규칙의 ID.
package_name_pattern 문자열 아니요 보호 규칙으로 보호되는 패키지 이름. 예: @my-scope/my-package-*. 와일드카드 문자 * 허용.
package_type 문자열 아니요 보호 규칙으로 보호되는 패키지 유형. 예: npm.
minimum_access_level_for_delete 문자열 아니요 패키지를 삭제하는 데 필요한 최소 GitLab 액세스 레벨. 유효한 값: null, owner 또는 admin. 값이 null이면 기본 최소 액세스 레벨은 maintainer. minimum_access_level_for_push가 설정되지 않은 경우 제공해야 합니다. packages_protected_packages_delete라는 기능 플래그 뒤에 있습니다. 기본적으로 비활성화됨.
minimum_access_level_for_push 문자열 아니요 패키지를 푸시하는 데 필요한 최소 GitLab 액세스 레벨. 유효한 값: null, maintainer, owner 또는 admin. 값이 null이면 기본 최소 액세스 레벨은 developer. minimum_access_level_for_delete가 설정되지 않은 경우 제공해야 합니다.

성공 시 200과 업데이트된 패키지 보호 규칙을 반환합니다.

다음 상태 코드를 반환할 수 있습니다:

  • 200 OK: 패키지 보호 규칙이 성공적으로 패치되었습니다.
  • 400 Bad Request: 패치가 유효하지 않습니다.
  • 401 Unauthorized: 액세스 토큰이 유효하지 않습니다.
  • 403 Forbidden: 사용자가 패키지 보호 규칙을 패치할 권한이 없습니다.
  • 404 Not Found: 프로젝트를 찾을 수 없습니다.
  • 422 Unprocessable Entity: package_name_pattern이 이미 사용됨과 같은 이유로 패키지 보호 규칙을 패치할 수 없습니다.

요청 예시:

curl --request PATCH \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --header "Content-Type: application/json" \
  --url "https://gitlab.example.com/api/v4/projects/7/packages/protection/rules/32" \
  --data '{
       "package_name_pattern": "new-package-name-pattern-*"
    }'

패키지 보호 규칙 삭제#

지정된 프로젝트에서 패키지 보호 규칙을 삭제합니다.

DELETE /api/v4/projects/:id/packages/protection/rules/:package_protection_rule_id

지원되는 속성:

속성 유형 필수 여부 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL 인코딩된 경로.
package_protection_rule_id 정수 삭제할 패키지 보호 규칙의 ID.

성공 시 204 No Content를 반환합니다.

다음 상태 코드를 반환할 수 있습니다:

  • 204 No Content: 패키지 보호 규칙이 성공적으로 삭제되었습니다.
  • 400 Bad Request: id 또는 package_protection_rule_id가 없거나 유효하지 않습니다.
  • 401 Unauthorized: 액세스 토큰이 유효하지 않습니다.
  • 403 Forbidden: 사용자가 패키지 보호 규칙을 삭제할 권한이 없습니다.
  • 404 Not Found: 프로젝트 또는 패키지 보호 규칙을 찾을 수 없습니다.

요청 예시:

curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/7/packages/protection/rules/32"

보호된 패키지 API

Tier: Free, Premium, Ultimate
Offering: GitLab Self-Managed
원문 보기
요약

이 API를 사용하여 패키지에 대한 보호 규칙을 관리합니다. 지정된 프로젝트의 모든 패키지 보호 규칙을 나열합니다. 성공 시 200과 패키지 보호 규칙 목록을 반환합니다. 다음 상태 코드를 반환할 수 있습니다: 지정된 프로젝트에 대한 패키지 보호 규칙을 만듭니다.

히스토리
  • GitLab 17.1에서 packages_protected_packages라는 플래그와 함께 도입됨. 기본적으로 비활성화됨.
  • GitLab 17.5에서 GitLab.com에서 활성화됨.
  • GitLab 17.6에서 일반 가용성. 기능 플래그 packages_protected_packages 제거됨.
  • GitLab 17.11에서 packages_protected_packages_delete라는 플래그와 함께 minimum_access_level_for_delete 속성이 추가됨. 기본적으로 비활성화됨.

이 API를 사용하여 패키지에 대한 보호 규칙을 관리합니다.

모든 패키지 보호 규칙 목록 조회#

지정된 프로젝트의 모든 패키지 보호 규칙을 나열합니다.

GET /api/v4/projects/:id/packages/protection/rules

지원되는 속성:

속성 유형 필수 여부 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL 인코딩된 경로.

성공 시 200과 패키지 보호 규칙 목록을 반환합니다.

다음 상태 코드를 반환할 수 있습니다:

  • 200 OK: 패키지 보호 규칙 목록.
  • 401 Unauthorized: 액세스 토큰이 유효하지 않습니다.
  • 403 Forbidden: 사용자가 이 프로젝트의 패키지 보호 규칙을 조회할 권한이 없습니다.
  • 404 Not Found: 프로젝트를 찾을 수 없습니다.

요청 예시:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/7/packages/protection/rules"

응답 예시:

[
 {
  "id": 1,
  "project_id": 7,
  "package_name_pattern": "@flightjs/flight-package-0",
  "package_type": "npm",
  "minimum_access_level_for_delete": "owner",
  "minimum_access_level_for_push": "maintainer"
 },
 {
  "id": 2,
  "project_id": 7,
  "package_name_pattern": "@flightjs/flight-package-1",
  "package_type": "npm",
  "minimum_access_level_for_delete": "owner",
  "minimum_access_level_for_push": "maintainer"
 }
]

패키지 보호 규칙 만들기#

지정된 프로젝트에 대한 패키지 보호 규칙을 만듭니다.

POST /api/v4/projects/:id/packages/protection/rules

지원되는 속성:

속성 유형 필수 여부 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL 인코딩된 경로.
package_name_pattern 문자열 보호 규칙으로 보호되는 패키지 이름. 예: @my-scope/my-package-*. 와일드카드 문자 * 허용.
package_type 문자열 보호 규칙으로 보호되는 패키지 유형. 예: npm.
minimum_access_level_for_delete 문자열 패키지를 삭제하는 데 필요한 최소 GitLab 액세스 레벨. 유효한 값: null, owner 또는 admin. 값이 null이면 기본 최소 액세스 레벨은 maintainer. minimum_access_level_for_push가 설정되지 않은 경우 제공해야 합니다. packages_protected_packages_delete라는 기능 플래그 뒤에 있습니다. 기본적으로 비활성화됨.
minimum_access_level_for_push 문자열 패키지를 푸시하는 데 필요한 최소 GitLab 액세스 레벨. 유효한 값: null, maintainer, owner 또는 admin. 값이 null이면 기본 최소 액세스 레벨은 developer. minimum_access_level_for_delete가 설정되지 않은 경우 제공해야 합니다.

성공 시 201과 생성된 패키지 보호 규칙을 반환합니다.

다음 상태 코드를 반환할 수 있습니다:

  • 201 Created: 패키지 보호 규칙이 성공적으로 만들어졌습니다.
  • 400 Bad Request: 패키지 보호 규칙이 유효하지 않습니다.
  • 401 Unauthorized: 액세스 토큰이 유효하지 않습니다.
  • 403 Forbidden: 사용자가 패키지 보호 규칙을 만들 권한이 없습니다.
  • 404 Not Found: 프로젝트를 찾을 수 없습니다.
  • 422 Unprocessable Entity: package_name_pattern이 이미 사용됨과 같은 이유로 패키지 보호 규칙을 만들 수 없습니다.

요청 예시:

curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --header "Content-Type: application/json" \
  --url "https://gitlab.example.com/api/v4/projects/7/packages/protection/rules" \
  --data '{
       "package_name_pattern": "package-name-pattern-*",
       "package_type": "npm",
       "minimum_access_level_for_delete": "owner",
       "minimum_access_level_for_push": "maintainer"
    }'

패키지 보호 규칙 업데이트#

지정된 프로젝트에 대한 패키지 보호 규칙을 업데이트합니다.

PATCH /api/v4/projects/:id/packages/protection/rules/:package_protection_rule_id

지원되는 속성:

속성 유형 필수 여부 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL 인코딩된 경로.
package_protection_rule_id 정수 업데이트할 패키지 보호 규칙의 ID.
package_name_pattern 문자열 아니요 보호 규칙으로 보호되는 패키지 이름. 예: @my-scope/my-package-*. 와일드카드 문자 * 허용.
package_type 문자열 아니요 보호 규칙으로 보호되는 패키지 유형. 예: npm.
minimum_access_level_for_delete 문자열 아니요 패키지를 삭제하는 데 필요한 최소 GitLab 액세스 레벨. 유효한 값: null, owner 또는 admin. 값이 null이면 기본 최소 액세스 레벨은 maintainer. minimum_access_level_for_push가 설정되지 않은 경우 제공해야 합니다. packages_protected_packages_delete라는 기능 플래그 뒤에 있습니다. 기본적으로 비활성화됨.
minimum_access_level_for_push 문자열 아니요 패키지를 푸시하는 데 필요한 최소 GitLab 액세스 레벨. 유효한 값: null, maintainer, owner 또는 admin. 값이 null이면 기본 최소 액세스 레벨은 developer. minimum_access_level_for_delete가 설정되지 않은 경우 제공해야 합니다.

성공 시 200과 업데이트된 패키지 보호 규칙을 반환합니다.

다음 상태 코드를 반환할 수 있습니다:

  • 200 OK: 패키지 보호 규칙이 성공적으로 패치되었습니다.
  • 400 Bad Request: 패치가 유효하지 않습니다.
  • 401 Unauthorized: 액세스 토큰이 유효하지 않습니다.
  • 403 Forbidden: 사용자가 패키지 보호 규칙을 패치할 권한이 없습니다.
  • 404 Not Found: 프로젝트를 찾을 수 없습니다.
  • 422 Unprocessable Entity: package_name_pattern이 이미 사용됨과 같은 이유로 패키지 보호 규칙을 패치할 수 없습니다.

요청 예시:

curl --request PATCH \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --header "Content-Type: application/json" \
  --url "https://gitlab.example.com/api/v4/projects/7/packages/protection/rules/32" \
  --data '{
       "package_name_pattern": "new-package-name-pattern-*"
    }'

패키지 보호 규칙 삭제#

지정된 프로젝트에서 패키지 보호 규칙을 삭제합니다.

DELETE /api/v4/projects/:id/packages/protection/rules/:package_protection_rule_id

지원되는 속성:

속성 유형 필수 여부 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL 인코딩된 경로.
package_protection_rule_id 정수 삭제할 패키지 보호 규칙의 ID.

성공 시 204 No Content를 반환합니다.

다음 상태 코드를 반환할 수 있습니다:

  • 204 No Content: 패키지 보호 규칙이 성공적으로 삭제되었습니다.
  • 400 Bad Request: id 또는 package_protection_rule_id가 없거나 유효하지 않습니다.
  • 401 Unauthorized: 액세스 토큰이 유효하지 않습니다.
  • 403 Forbidden: 사용자가 패키지 보호 규칙을 삭제할 권한이 없습니다.
  • 404 Not Found: 프로젝트 또는 패키지 보호 규칙을 찾을 수 없습니다.

요청 예시:

curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/7/packages/protection/rules/32"