프로젝트 웹훅

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

REST API를 사용하여 프로젝트 웹훅을 관리합니다. 프로젝트 웹훅은 시스템 전반에 걸친 시스템 훅(system hooks) 및 그룹 웹훅(group webhooks)과는 다릅니다.

필수 조건:

  • 프로젝트의 관리자이거나 적어도 유지자(Maintainer) 역할이 있어야 합니다.

프로젝트 웹훅 목록

프로젝트 웹훅의 목록을 가져옵니다.

GET /projects/:id/hooks

지원되는 속성:

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

프로젝트 웹훅 가져오기

특정 프로젝트 웹훅 가져오기.

GET /projects/:id/hooks/:hook_id

지원되는 속성:

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

예시 응답:

{
  "id": 1,
  "url": "http://example.com/hook",
  "name": "Hook name",
  "description": "Hook description",
  "project_id": 3,
  "push_events": true,
  "push_events_branch_filter": "",
  "issues_events": true,
  ...
}

프로젝트 웹훅 이벤트 목록 가져오기

지난 7일간 특정 프로젝트 웹훅의 이벤트 목록을 가져옵니다.

GET /projects/:id/hooks/:hook_id/events

지원되는 속성:

속성 유형 필수 설명
hook_id 정수 프로젝트 웹훅의 ID.
id 정수 또는 문자열 프로젝트의 ID 또는 URL 인코딩된 경로.
status 정수 또는 문자열 아니요 이벤트의 응답 상태 코드, 예: 200 또는 500. 상태 범주로 검색할 수 있습니다: successful (200-299), client_failure (400-499), server_failure (500-599).
page 정수 아니요 가져올 페이지. 기본값은 1입니다.
per_page 정수 아니요 페이지당 반환할 레코드 수. 기본값은 20입니다.

예시 응답:

[
  {
    "id": 1,
    "url": "https://example.net/",
    "trigger": "push_hooks",
    "request_headers": {
      ...
    },
    "request_data": {
      ...
    },
    "response_headers": {
      ...
    },
    "response_body": "{\"success\":true}",
    "execution_duration": 1.0906479999999874,
    "response_status": "200"
  },
  ...
]

프로젝트 웹훅 이벤트 다시 보내기

특정 프로젝트 웹훅 이벤트를 다시 보냅니다.

이 엔드포인트는 프로젝트 웹훅과 인증된 사용자마다 분당 다섯 번의 요청 제한을 가지고 있습니다. 셀프 매니지드 GitLab 및 GitLab Dedicated에서 이 제한을 해제하려면, 관리자는 web_hook_event_resend_api_endpoint_rate_limit라는 기능 플래그를 비활성화할 수 있습니다.

POST /projects/:id/hooks/:hook_id/events/:hook_event_id/resend

지원되는 속성:

속성 타입 필수여부 설명
hook_id integer Yes 프로젝트 웹훅의 ID.
hook_event_id integer Yes 프로젝트 웹훅 이벤트의 ID.

예시 응답:

{
  "response_status": 200
}

프로젝트에 웹훅 추가

  • namedescription 속성은 GitLab 17.1에서 도입되었습니다.

지정된 프로젝트에 웹훅을 추가합니다.

POST /projects/:id/hooks

지원되는 속성:

속성 타입 필수여부 설명
id integer 또는 string Yes 프로젝트의 ID 또는 URL-인코딩된 경로.
url string Yes 프로젝트 웹훅 URL.
name string No 프로젝트 웹훅 이름.
description string No 웹훅 설명.
confidential_issues_events boolean No 기밀 문제 이벤트에서 프로젝트 웹훅 트리거.
confidential_note_events boolean No 기밀 노트 이벤트에서 프로젝트 웹훅 트리거.
deployment_events boolean No 배포 이벤트에서 프로젝트 웹훅 트리거.
enable_ssl_verification boolean No 웹훅을 트리거할 때 SSL 검증 수행.
feature_flag_events boolean No 피처 플래그 이벤트에서 프로젝트 웹훅 트리거.
issues_events boolean No 문제 이벤트에서 프로젝트 웹훅 트리거.
job_events boolean No 작업 이벤트에서 프로젝트 웹훅 트리거.
merge_requests_events boolean No 머지 요청 이벤트에서 프로젝트 웹훅 트리거.
note_events boolean No 노트 이벤트에서 프로젝트 웹훅 트리거.
pipeline_events boolean No 파이프라인 이벤트에서 프로젝트 웹훅 트리거.
push_events_branch_filter string No 일치하는 브랜치에서의 푸시 이벤트에서 프로젝트 웹훅 트리거.
branch_filter_strategy string No 브랜치별 푸시 이벤트 필터링 방법. 가능한 값은 wildcard (기본값), regex, all_branches.
push_events boolean No 푸시 이벤트에서 프로젝트 웹훅 트리거.
releases_events boolean No 릴리즈 이벤트에서 프로젝트 웹훅 트리거.
tag_push_events boolean No 태그 푸시 이벤트에서 프로젝트 웹훅 트리거.
token string No 수신된 payloads를 유효성 검사하기 위한 비밀 토큰; 응답에는 토큰이 포함되지 않습니다.
wiki_page_events boolean No 위키 페이지 이벤트에서 프로젝트 웹훅 트리거.
resource_access_token_events boolean No 프로젝트 엑세스 토큰 만료 이벤트에서 프로젝트 웹훅 트리거.
custom_webhook_template string No 프로젝트 웹훅에 대한 사용자 정의 웹훅 템플릿.
custom_headers array No 프로젝트 웹훅을 위한 사용자 정의 헤더.

프로젝트 웹훅 편집

  • namedescription 속성은 GitLab 17.1에서 도입되었습니다.

지정된 프로젝트의 웹훅을 편집합니다.

PUT /projects/:id/hooks/:hook_id

지원되는 속성:

속성 타입 필수여부 설명
hook_id integer Yes 프로젝트 웹훅의 ID.
id integer 또는 string Yes 프로젝트의 ID 또는 URL-인코딩된 경로.
url string Yes 프로젝트 웹훅 URL.
name string No 프로젝트 웹훅 이름.
description string No 프로젝트 웹훅 설명.
confidential_issues_events boolean No 기밀 문제 이벤트에서 프로젝트 웹훅 트리거.
confidential_note_events boolean No 기밀 노트 이벤트에서 프로젝트 웹훅 트리거.
deployment_events boolean No 배포 이벤트에서 프로젝트 웹훅 트리거.
enable_ssl_verification boolean No 웹훅을 트리거할 때 SSL 검증 수행.
feature_flag_events boolean No 피처 플래그 이벤트에서 프로젝트 웹훅 트리거.
issues_events boolean No 문제 이벤트에서 프로젝트 웹훅 트리거.
job_events boolean No 작업 이벤트에서 프로젝트 웹훅 트리거.
merge_requests_events boolean No 머지 요청 이벤트에서 프로젝트 웹훅 트리거.
note_events boolean No 노트 이벤트에서 프로젝트 웹훅 트리거.
pipeline_events boolean No 파이프라인 이벤트에서 프로젝트 웹훅 트리거.
push_events_branch_filter string No 일치하는 브랜치에서의 푸시 이벤트에서 프로젝트 웹훅 트리거.
branch_filter_strategy string No 브랜치별 푸시 이벤트 필터링 방법. 가능한 값은 wildcard (기본값), regex, all_branches.
push_events boolean No 푸시 이벤트에서 프로젝트 웹훅 트리거.
releases_events boolean No 릴리즈 이벤트에서 프로젝트 웹훅 트리거.
tag_push_events boolean No 태그 푸시 이벤트에서 프로젝트 웹훅 트리거.
token string No 수신된 payloads를 유효성 검사하기 위한 비밀 토큰. 응답에는 토큰이 반환되지 않습니다. 웹훅 URL을 변경하면 비밀 토큰이 초기화되고 유지되지 않습니다.
wiki_page_events boolean No 위키 페이지 이벤트에서 프로젝트 웹훅 트리거.
resource_access_token_events boolean No 프로젝트 엑세스 토큰 만료 이벤트에서 프로젝트 웹훅 트리거.
custom_webhook_template string No 프로젝트 웹훅에 대한 사용자 정의 웹훅 템플릿.
custom_headers array No 프로젝트 웹훅을 위한 사용자 정의 헤더.

프로젝트 웹훅 삭제

프로젝트에서 웹훅을 제거합니다. 이 방법은 멱등성을 가지며 여러 번 호출할 수 있습니다. 프로젝트 웹훅은 사용 가능하거나 사용 불가능합니다.

DELETE /projects/:id/hooks/:hook_id

지원되는 속성:

속성 유형 필수 설명
hook_id integer 프로젝트 웹훅의 ID입니다.
id integer or string 프로젝트의 ID 또는 URL로 인코딩된 경로입니다.

프로젝트 웹훅이 사용 가능하거나 사용 불가능한 경우 JSON 응답이 다릅니다. 웹훅이 사용 가능하면 JSON 응답에 나타나며, 그렇지 않으면 빈 응답이 반환됩니다.

테스트 프로젝트 웹훅 트리거

지정된 프로젝트에 대해 테스트 프로젝트 웹훅을 트리거합니다.

GitLab 17.0 이상에서 이 엔드포인트는 특별한 속도 제한이 있습니다:

  • GitLab 17.0에서는 각 프로젝트 웹훅에 대해 분당 세 개의 요청이 가능했습니다.
  • GitLab 17.1에서는 이것이 각 프로젝트 및 인증된 사용자당 분당 다섯 개 요청으로 변경되었습니다.

자체 호스팅된 GitLab 및 GitLab Dedicated에서 이 제한을 해제하려면 관리자가 web_hook_test_api_endpoint_rate_limit라는 기능 플래그를 비활성화할 수 있습니다.

POST /projects/:id/hooks/:hook_id/test/:trigger

지원되는 속성:

속성 유형 필수 설명
hook_id integer 프로젝트 웹훅의 ID입니다.
id integer or string 프로젝트의 ID 또는 URL로 인코딩된 경로입니다.
trigger string push_events, tag_push_events, issues_events, confidential_issues_events, note_events, merge_requests_events, job_events,pipeline_events, wiki_page_events, releases_events, emoji_events, 또는 resource_access_token_events 중 하나입니다.

예시 응답:

{ "message": "201 Created" }

사용자 정의 헤더 설정

PUT /projects/:id/hooks/:hook_id/custom_headers/:key

지원되는 속성:

속성 유형 필수 설명
id integer or string 프로젝트의 ID 또는 URL로 인코딩된 경로입니다.
hook_id integer 프로젝트 웹훅의 ID입니다.
key string 사용자 정의 헤더의 키입니다.
value string 사용자 정의 헤더의 값입니다.

성공 시, 이 엔드포인트는 응답 코드 204 No Content를 반환합니다.

사용자 정의 헤더 삭제

DELETE /projects/:id/hooks/:hook_id/custom_headers/:key

지원되는 속성:

속성 유형 필수 설명
id integer or string 프로젝트의 ID 또는 URL로 인코딩된 경로입니다.
hook_id integer 프로젝트 웹훅의 ID입니다.
key string 사용자 정의 헤더의 키입니다.

성공 시, 이 엔드포인트는 응답 코드 204 No Content를 반환합니다.

URL 변수 설정

PUT /projects/:id/hooks/:hook_id/url_variables/:key

지원되는 속성:

속성 유형 필수 설명
id integer or string 프로젝트의 ID 또는 URL로 인코딩된 경로입니다.
hook_id integer 프로젝트 웹훅의 ID입니다.
key string URL 변수의 키입니다.
value string URL 변수의 값입니다.

성공 시, 이 엔드포인트는 응답 코드 204 No Content를 반환합니다.

URL 변수 삭제

DELETE /projects/:id/hooks/:hook_id/url_variables/:key

지원되는 속성:

속성 유형 필수 설명
id integer or string 프로젝트의 ID 또는 URL로 인코딩된 경로입니다.
hook_id integer 프로젝트 웹훅의 ID입니다.
key string URL 변수의 키입니다.

성공 시, 이 엔드포인트는 응답 코드 204 No Content를 반환합니다.