InfoGrab Docs

배포 키 API

요약

이 API를 사용하여 배포 키와 상호작용합니다. 일부 엔드포인트는 응답의 일부로 공개 키 핑거프린트를 반환합니다. 다음 속성에 배포 키 핑거프린트가 포함됩니다: GitLab 인스턴스의 모든 프로젝트에 걸쳐 있는 모든 배포 키 목록을 가져옵니다.

이 API를 사용하여 배포 키와 상호작용합니다.

배포 키 핑거프린트#

히스토리
  • GitLab 15.2에서 fingerprint_sha256 속성이 도입되었습니다.

일부 엔드포인트는 응답의 일부로 공개 키 핑거프린트를 반환합니다. 이 핑거프린트를 사용하여 배포 키를 생성한 사용자를 식별할 수 있습니다. 자세한 정보는 배포 키 핑거프린트로 사용자 조회를 참조하세요.

다음 속성에 배포 키 핑거프린트가 포함됩니다:

  • fingerprint: MD5 해시를 사용합니다. FIPS 활성화된 시스템에서는 사용할 수 없습니다.
  • fingerprint_sha256: SHA256 해시를 사용합니다.

모든 배포 키 목록 조회#

히스토리
  • projects_with_readonly_access는 GitLab 16.0에서 도입되었습니다.

GitLab 인스턴스의 모든 프로젝트에 걸쳐 있는 모든 배포 키 목록을 가져옵니다. 이 엔드포인트는 관리자 권한이 필요하며 GitLab.com에서는 사용할 수 없습니다.

GET /deploy_keys

지원되는 속성:

속성 유형 필수 설명
public boolean No 공개인 배포 키만 반환합니다. 기본값은 false입니다.

요청 예시:

curl --request GET \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/deploy_keys?public=true"

응답 예시:

[
  {
    "id": 1,
    "title": "Public key",
    "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDNJAkI3Wdf0r13c8a5pEExB2YowPWCSVzfZV22pNBc1CuEbyYLHpUyaD0GwpGvFdx2aP7lMEk35k6Rz3ccBF6jRaVJyhsn5VNnW92PMpBJ/P1UebhXwsFHdQf5rTt082cSxWuk61kGWRQtk4ozt/J2DF/dIUVaLvc+z4HomT41fQ==",
    "fingerprint": "4a:9d:64:15:ed:3a:e6:07:6e:89:36:b3:3b:03:05:d9",
    "fingerprint_sha256": "SHA256:Jrs3LD1Ji30xNLtTVf9NDCj7kkBgPBb2pjvTZ3HfIgU",
    "created_at": "2013-10-02T10:12:29Z",
    "expires_at": null,
    "projects_with_write_access": [
      {
        "id": 73,
        "description": null,
        "name": "project2",
        "name_with_namespace": "Sidney Jones / project2",
        "path": "project2",
        "path_with_namespace": "sidney_jones/project2",
        "created_at": "2021-10-25T18:33:17.550Z"
      },
      {
        "id": 74,
        "description": null,
        "name": "project3",
        "name_with_namespace": "Sidney Jones / project3",
        "path": "project3",
        "path_with_namespace": "sidney_jones/project3",
        "created_at": "2021-10-25T18:33:17.666Z"
      }
    ],
    "projects_with_readonly_access": []
  },
  {
    "id": 3,
    "title": "Another Public key",
    "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDIJFwIL6YNcCgVBLTHgM6hzmoL5vf0ThDKQMWT3HrwCjUCGPwR63vBwn6+/Gx+kx+VTo9FuojzR0O4XfwD3LrYA+oT3ETbn9U4e/VS4AH/G4SDMzgSLwu0YuPe517FfGWhWGQhjiXphkaQ+6bXPmcASWb0RCO5+pYlGIfxv4eFGQ==",
    "fingerprint": "0b:cf:58:40:b9:23:96:c7:ba:44:df:0e:9e:87:5e:75",
    "": "SHA256:lGI/Ys/Wx7PfMhUO1iuBH92JQKYN+3mhJZvWO4Q5ims",
    "created_at": "2013-10-02T11:12:29Z",
    "expires_at": null,
    "projects_with_write_access": [],
    "projects_with_readonly_access": [
      {
        "id": 74,
        "description": null,
        "name": "project3",
        "name_with_namespace": "Sidney Jones / project3",
        "path": "project3",
        "path_with_namespace": "sidney_jones/project3",
        "created_at": "2021-10-25T18:33:17.666Z"
      }
    ]
  }
]

배포 키 추가#

히스토리
  • GitLab 17.5에서 도입되었습니다.

GitLab 인스턴스에 배포 키를 생성합니다. 이 엔드포인트는 관리자 권한이 필요합니다.

POST /deploy_keys

지원되는 속성:

속성 유형 필수 설명
key string yes 새 배포 키
title string yes 새 배포 키의 제목
expires_at datetime no 배포 키의 만료 날짜. 값이 제공되지 않으면 만료되지 않습니다. ISO 8601 형식(2024-12-31T08:00:00Z)으로 입력합니다.

요청 예시:

curl --request POST \ --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Content-Type: application/json" \
     --data "{"title": "My deploy key", "key": "ssh-rsa AAAA...", "expired_at": "2024-12-31T08:00:00Z"}" \
     --url "https://gitlab.example.com/api/v4/deploy_keys/"

응답 예시:

{
  "id": 5,
  "title": "My deploy key",
  "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDNJAkI3Wdf0r13c8a5pEExB2YowPWCSVzfZV22pNBc1CuEbyYLHpUyaD0GwpGvFdx2aP7lMEk35k6Rz3ccBF6jRaVJyhsn5VNnW92PMpBJ/P1UebhXwsFHdQf5rTt082cSxWuk61kGWRQtk4ozt/J2DF/dIUVaLvc+z4HomT41fQ==",
  "fingerprint": "4a:9d:64:15:ed:3a:e6:07:6e:89:36:b3:3b:03:05:d9",
  "fingerprint_sha256": "SHA256:Jrs3LD1Ji30xNLtTVf9NDCj7kkBgPBb2pjvTZ3HfIgU",
  "usage_type": "auth_and_signing",
  "created_at": "2024-10-03T01:32:21.992Z",
  "expires_at": "2024-12-31T08:00:00.000Z"
}

프로젝트의 배포 키 목록 조회#

프로젝트의 배포 키 목록을 가져옵니다.

GET /projects/:id/deploy_keys
속성 유형 필수 설명
id integer or string yes 프로젝트의 ID 또는 URL 인코딩된 경로
curl --request GET \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5/deploy_keys"

응답 예시:

[
  {
    "id": 1,
    "title": "Public key",
    "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDNJAkI3Wdf0r13c8a5pEExB2YowPWCSVzfZV22pNBc1CuEbyYLHpUyaD0GwpGvFdx2aP7lMEk35k6Rz3ccBF6jRaVJyhsn5VNnW92PMpBJ/P1UebhXwsFHdQf5rTt082cSxWuk61kGWRQtk4ozt/J2DF/dIUVaLvc+z4HomT41fQ==",
    "fingerprint": "4a:9d:64:15:ed:3a:e6:07:6e:89:36:b3:3b:03:05:d9",
    "fingerprint_sha256": "SHA256:Jrs3LD1Ji30xNLtTVf9NDCj7kkBgPBb2pjvTZ3HfIgU",
    "created_at": "2013-10-02T10:12:29Z",
    "expires_at": null,
    "can_push": false
  },
  {
    "id": 3,
    "title": "Another Public key",
    "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDIJFwIL6YNcCgVBLTHgM6hzmoL5vf0ThDKQMWT3HrwCjUCGPwR63vBwn6+/Gx+kx+VTo9FuojzR0O4XfwD3LrYA+oT3ETbn9U4e/VS4AH/G4SDMzgSLwu0YuPe517FfGWhWGQhjiXphkaQ+6bXPmcASWb0RCO5+pYlGIfxv4eFGQ==",
    "fingerprint": "0b:cf:58:40:b9:23:96:c7:ba:44:df:0e:9e:87:5e:75",
    "": "SHA256:lGI/Ys/Wx7PfMhUO1iuBH92JQKYN+3mhJZvWO4Q5ims",
    "created_at": "2013-10-02T11:12:29Z",
    "expires_at": null,
    "can_push": false
  }
]

사용자의 프로젝트 배포 키 목록 조회#

히스토리
  • GitLab 15.1에서 도입되었습니다.

지정된 사용자(피요청자)와 인증된 사용자(요청자)의 공통 프로젝트 배포 키 목록을 가져옵니다. 요청자와 피요청자의 공통 프로젝트에서 활성화된 프로젝트 키만 나열합니다.

GET /users/:id_or_username/project_deploy_keys

파라미터:

속성 유형 필수 설명
id_or_username string yes 프로젝트 배포 키를 가져올 사용자의 ID 또는 사용자명
[
  {
    "id": 1,
    "title": "Key A",
    "created_at": "2022-05-30T12:28:27.855Z",
    "expires_at": null,
    "key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILkYXU2fVeO4/0rDCSsswP5iIX2+B6tv15YT3KObgyDl Key",
    "fingerprint": "40:8e:fa:df:70:f7:a7:06:1e:0d:6f:ae:f2:27:92:01",
    "fingerprint_sha256": "SHA256:Ojq2LZW43BFK/AMP81jBkDGn9YpPWYRNcViKBB44LPU"
  },
  {
    "id": 2,
    "title": "Key B",
    "created_at": "2022-05-30T13:34:56.219Z",
    "expires_at": null,
    "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDNJAkI3Wdf0r13c8a5pEExB2YowPWCSVzfZV22pNBc1CuEbyYLHpUyaD0GwpGvFdx2aP7lMEk35k6Rz3ccBF6jRaVJyhsn5VNnW92PMpBJ/P1UebhXwsFHdQf5rTt082cSxWuk61kGWRQtk4ozt/J2DF/dIUVaLvc+z4HomT41fQ==",
    "fingerprint": "4a:9d:64:15:ed:3a:e6:07:6e:89:36:b3:3b:03:05:d9",
    "": "SHA256:Jrs3LD1Ji30xNLtTVf9NDCj7kkBgPBb2pjvTZ3HfIgU"
  }
]
curl --request GET \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/users/20/project_deploy_keys"

응답 예시:

[
  {
    "id": 1,
    "title": "Key A",
    "created_at": "2022-05-30T12:28:27.855Z",
    "expires_at": "2022-10-30T12:28:27.855Z",
    "key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILkYXU2fVeO4/0rDCSsswP5iIX2+B6tv15YT3KObgyDl Key",
    "fingerprint": "40:8e:fa:df:70:f7:a7:06:1e:0d:6f:ae:f2:27:92:01",
    "fingerprint_sha256": "SHA256:Ojq2LZW43BFK/AMP81jBkDGn9YpPWYRNcViKBB44LPU"
  }
]

배포 키 조회#

지정된 배포 키를 조회합니다.

GET /projects/:id/deploy_keys/:key_id

파라미터:

속성 유형 필수 설명
id integer or string yes 프로젝트의 ID 또는 URL 인코딩된 경로
key_id integer yes 배포 키의 ID
curl --request GET \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5/deploy_keys/11"

응답 예시:

{
  "id": 1,
  "title": "Public key",
  "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDNJAkI3Wdf0r13c8a5pEExB2YowPWCSVzfZV22pNBc1CuEbyYLHpUyaD0GwpGvFdx2aP7lMEk35k6Rz3ccBF6jRaVJyhsn5VNnW92PMpBJ/P1UebhXwsFHdQf5rTt082cSxWuk61kGWRQtk4ozt/J2DF/dIUVaLvc+z4HomT41fQ==",
  "fingerprint": "4a:9d:64:15:ed:3a:e6:07:6e:89:36:b3:3b:03:05:d9",
  "fingerprint_sha256": "SHA256:Jrs3LD1Ji30xNLtTVf9NDCj7kkBgPBb2pjvTZ3HfIgU",
  "created_at": "2013-10-02T10:12:29Z",
  "expires_at": null,
  "can_push": false
}

프로젝트에 배포 키 추가#

지정된 프로젝트에 배포 키를 추가합니다.

배포 키가 다른 프로젝트에 이미 존재하는 경우, 원래의 키가 동일한 사용자에 의해 접근 가능한 경우에만 현재 프로젝트에 조인됩니다.

POST /projects/:id/deploy_keys
속성 유형 필수 설명
id integer or string yes 프로젝트의 ID 또는 URL 인코딩된 경로
key string yes 새 배포 키
title string yes 새 배포 키의 제목
can_push boolean no 배포 키가 프로젝트의 리포지터리에 푸시할 수 있는지 여부
expires_at datetime no 배포 키의 만료 날짜. 값이 제공되지 않으면 만료되지 않습니다. ISO 8601 형식(2019-03-15T08:00:00Z)으로 입력합니다.
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Content-Type: application/json" \
     --data "{"title": "My deploy key", "key": "ssh-rsa AAAA...", "can_push": "true"}" \
     --url "https://gitlab.example.com/api/v4/projects/5/deploy_keys/"

응답 예시:

{
  "key": "ssh-rsa AAAA...",
  "id": 12,
  "title": "My deploy key",
  "can_push": true,
  "created_at": "2015-08-29T12:44:31.550Z",
  "expires_at": null
}

배포 키 업데이트#

프로젝트의 배포 키를 업데이트합니다.

PUT /projects/:id/deploy_keys/:key_id
속성 유형 필수 설명
id integer or string yes 프로젝트의 ID 또는 URL 인코딩된 경로
can_push boolean no 배포 키가 프로젝트의 리포지터리에 푸시할 수 있는지 여부
title string no 새 배포 키의 제목
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Content-Type: application/json" \
     --data "{"title": "New deploy key", "can_push": true}" \
     --url "https://gitlab.example.com/api/v4/projects/5/deploy_keys/11"

응답 예시:

{
  "id": 11,
  "title": "New deploy key",
  "key": "ssh-rsa AAAA...",
  "created_at": "2015-08-29T12:44:31.550Z",
  "expires_at": null,
  "can_push": true
}

배포 키 삭제#

프로젝트에서 배포 키를 제거합니다. 배포 키가 이 프로젝트에서만 사용되는 경우 시스템에서 삭제됩니다.

DELETE /projects/:id/deploy_keys/:key_id
속성 유형 필수 설명
id integer or string yes 프로젝트의 ID 또는 URL 인코딩된 경로
key_id integer yes 배포 키의 ID
curl --request DELETE \
     --header "PRIVATE-TOKEN: <your_access_token>" \
     --url "https://gitlab.example.com/api/v4/projects/5/deploy_keys/13"

배포 키 활성화#

프로젝트에 대한 배포 키를 활성화하여 사용할 수 있게 합니다. 성공 시 활성화된 키와 함께 상태 코드 201을 반환합니다.

POST /projects/:id/deploy_keys/:key_id/enable
속성 유형 필수 설명
id integer or string yes 프로젝트의 ID 또는 URL 인코딩된 경로
key_id integer yes 배포 키의 ID
curl --request POST \
     --header "PRIVATE-TOKEN: <your_access_token>" \
     --url "https://gitlab.example.com/api/v4/projects/5/deploy_keys/12/enable"

응답 예시:

{
  "key": "ssh-rsa AAAA...",
  "id": 12,
  "title": "My deploy key",
  "created_at": "2015-08-29T12:44:31.550Z",
  "expires_at": null
}

여러 프로젝트에 배포 키 추가#

동일한 그룹 내의 여러 프로젝트에 동일한 배포 키를 추가하려면 API를 사용합니다.

먼저, 모든 프로젝트를 나열하여 관심 있는 프로젝트의 ID를 찾습니다:

curl --request GET \
     --header "PRIVATE-TOKEN: <your_access_token>" \
     --url "https://gitlab.example.com/api/v4/projects"

또는 그룹의 ID를 찾습니다:

curl --request GET \
     --header "PRIVATE-TOKEN: <your_access_token>" \
     --url "https://gitlab.example.com/api/v4/groups"

그런 다음 해당 그룹의 모든 프로젝트를 나열합니다(예: 그룹 1234):

curl --request GET \
     --header "PRIVATE-TOKEN: <your_access_token>" \
     --url "https://gitlab.example.com/api/v4/groups/1234"

해당 ID를 사용하여 모두에 동일한 배포 키를 추가합니다:

for project_id in 321 456 987; do
    curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
         --header "Content-Type: application/json" \
         --data "{"title": "my key", "key": "ssh-rsa AAAA..."}" \
         "https://gitlab.example.com/api/v4/projects/${project_id}/deploy_keys"
done

배포 키 API

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

이 API를 사용하여 배포 키와 상호작용합니다. 일부 엔드포인트는 응답의 일부로 공개 키 핑거프린트를 반환합니다. 다음 속성에 배포 키 핑거프린트가 포함됩니다: GitLab 인스턴스의 모든 프로젝트에 걸쳐 있는 모든 배포 키 목록을 가져옵니다.

이 API를 사용하여 배포 키와 상호작용합니다.

배포 키 핑거프린트#

히스토리
  • GitLab 15.2에서 fingerprint_sha256 속성이 도입되었습니다.

일부 엔드포인트는 응답의 일부로 공개 키 핑거프린트를 반환합니다. 이 핑거프린트를 사용하여 배포 키를 생성한 사용자를 식별할 수 있습니다. 자세한 정보는 배포 키 핑거프린트로 사용자 조회를 참조하세요.

다음 속성에 배포 키 핑거프린트가 포함됩니다:

  • fingerprint: MD5 해시를 사용합니다. FIPS 활성화된 시스템에서는 사용할 수 없습니다.
  • fingerprint_sha256: SHA256 해시를 사용합니다.

모든 배포 키 목록 조회#

히스토리
  • projects_with_readonly_access는 GitLab 16.0에서 도입되었습니다.

GitLab 인스턴스의 모든 프로젝트에 걸쳐 있는 모든 배포 키 목록을 가져옵니다. 이 엔드포인트는 관리자 권한이 필요하며 GitLab.com에서는 사용할 수 없습니다.

GET /deploy_keys

지원되는 속성:

속성 유형 필수 설명
public boolean No 공개인 배포 키만 반환합니다. 기본값은 false입니다.

요청 예시:

curl --request GET \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/deploy_keys?public=true"

응답 예시:

[
  {
    "id": 1,
    "title": "Public key",
    "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDNJAkI3Wdf0r13c8a5pEExB2YowPWCSVzfZV22pNBc1CuEbyYLHpUyaD0GwpGvFdx2aP7lMEk35k6Rz3ccBF6jRaVJyhsn5VNnW92PMpBJ/P1UebhXwsFHdQf5rTt082cSxWuk61kGWRQtk4ozt/J2DF/dIUVaLvc+z4HomT41fQ==",
    "fingerprint": "4a:9d:64:15:ed:3a:e6:07:6e:89:36:b3:3b:03:05:d9",
    "fingerprint_sha256": "SHA256:Jrs3LD1Ji30xNLtTVf9NDCj7kkBgPBb2pjvTZ3HfIgU",
    "created_at": "2013-10-02T10:12:29Z",
    "expires_at": null,
    "projects_with_write_access": [
      {
        "id": 73,
        "description": null,
        "name": "project2",
        "name_with_namespace": "Sidney Jones / project2",
        "path": "project2",
        "path_with_namespace": "sidney_jones/project2",
        "created_at": "2021-10-25T18:33:17.550Z"
      },
      {
        "id": 74,
        "description": null,
        "name": "project3",
        "name_with_namespace": "Sidney Jones / project3",
        "path": "project3",
        "path_with_namespace": "sidney_jones/project3",
        "created_at": "2021-10-25T18:33:17.666Z"
      }
    ],
    "projects_with_readonly_access": []
  },
  {
    "id": 3,
    "title": "Another Public key",
    "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDIJFwIL6YNcCgVBLTHgM6hzmoL5vf0ThDKQMWT3HrwCjUCGPwR63vBwn6+/Gx+kx+VTo9FuojzR0O4XfwD3LrYA+oT3ETbn9U4e/VS4AH/G4SDMzgSLwu0YuPe517FfGWhWGQhjiXphkaQ+6bXPmcASWb0RCO5+pYlGIfxv4eFGQ==",
    "fingerprint": "0b:cf:58:40:b9:23:96:c7:ba:44:df:0e:9e:87:5e:75",
    "": "SHA256:lGI/Ys/Wx7PfMhUO1iuBH92JQKYN+3mhJZvWO4Q5ims",
    "created_at": "2013-10-02T11:12:29Z",
    "expires_at": null,
    "projects_with_write_access": [],
    "projects_with_readonly_access": [
      {
        "id": 74,
        "description": null,
        "name": "project3",
        "name_with_namespace": "Sidney Jones / project3",
        "path": "project3",
        "path_with_namespace": "sidney_jones/project3",
        "created_at": "2021-10-25T18:33:17.666Z"
      }
    ]
  }
]

배포 키 추가#

히스토리
  • GitLab 17.5에서 도입되었습니다.

GitLab 인스턴스에 배포 키를 생성합니다. 이 엔드포인트는 관리자 권한이 필요합니다.

POST /deploy_keys

지원되는 속성:

속성 유형 필수 설명
key string yes 새 배포 키
title string yes 새 배포 키의 제목
expires_at datetime no 배포 키의 만료 날짜. 값이 제공되지 않으면 만료되지 않습니다. ISO 8601 형식(2024-12-31T08:00:00Z)으로 입력합니다.

요청 예시:

curl --request POST \ --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Content-Type: application/json" \
     --data "{"title": "My deploy key", "key": "ssh-rsa AAAA...", "expired_at": "2024-12-31T08:00:00Z"}" \
     --url "https://gitlab.example.com/api/v4/deploy_keys/"

응답 예시:

{
  "id": 5,
  "title": "My deploy key",
  "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDNJAkI3Wdf0r13c8a5pEExB2YowPWCSVzfZV22pNBc1CuEbyYLHpUyaD0GwpGvFdx2aP7lMEk35k6Rz3ccBF6jRaVJyhsn5VNnW92PMpBJ/P1UebhXwsFHdQf5rTt082cSxWuk61kGWRQtk4ozt/J2DF/dIUVaLvc+z4HomT41fQ==",
  "fingerprint": "4a:9d:64:15:ed:3a:e6:07:6e:89:36:b3:3b:03:05:d9",
  "fingerprint_sha256": "SHA256:Jrs3LD1Ji30xNLtTVf9NDCj7kkBgPBb2pjvTZ3HfIgU",
  "usage_type": "auth_and_signing",
  "created_at": "2024-10-03T01:32:21.992Z",
  "expires_at": "2024-12-31T08:00:00.000Z"
}

프로젝트의 배포 키 목록 조회#

프로젝트의 배포 키 목록을 가져옵니다.

GET /projects/:id/deploy_keys
속성 유형 필수 설명
id integer or string yes 프로젝트의 ID 또는 URL 인코딩된 경로
curl --request GET \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5/deploy_keys"

응답 예시:

[
  {
    "id": 1,
    "title": "Public key",
    "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDNJAkI3Wdf0r13c8a5pEExB2YowPWCSVzfZV22pNBc1CuEbyYLHpUyaD0GwpGvFdx2aP7lMEk35k6Rz3ccBF6jRaVJyhsn5VNnW92PMpBJ/P1UebhXwsFHdQf5rTt082cSxWuk61kGWRQtk4ozt/J2DF/dIUVaLvc+z4HomT41fQ==",
    "fingerprint": "4a:9d:64:15:ed:3a:e6:07:6e:89:36:b3:3b:03:05:d9",
    "fingerprint_sha256": "SHA256:Jrs3LD1Ji30xNLtTVf9NDCj7kkBgPBb2pjvTZ3HfIgU",
    "created_at": "2013-10-02T10:12:29Z",
    "expires_at": null,
    "can_push": false
  },
  {
    "id": 3,
    "title": "Another Public key",
    "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDIJFwIL6YNcCgVBLTHgM6hzmoL5vf0ThDKQMWT3HrwCjUCGPwR63vBwn6+/Gx+kx+VTo9FuojzR0O4XfwD3LrYA+oT3ETbn9U4e/VS4AH/G4SDMzgSLwu0YuPe517FfGWhWGQhjiXphkaQ+6bXPmcASWb0RCO5+pYlGIfxv4eFGQ==",
    "fingerprint": "0b:cf:58:40:b9:23:96:c7:ba:44:df:0e:9e:87:5e:75",
    "": "SHA256:lGI/Ys/Wx7PfMhUO1iuBH92JQKYN+3mhJZvWO4Q5ims",
    "created_at": "2013-10-02T11:12:29Z",
    "expires_at": null,
    "can_push": false
  }
]

사용자의 프로젝트 배포 키 목록 조회#

히스토리
  • GitLab 15.1에서 도입되었습니다.

지정된 사용자(피요청자)와 인증된 사용자(요청자)의 공통 프로젝트 배포 키 목록을 가져옵니다. 요청자와 피요청자의 공통 프로젝트에서 활성화된 프로젝트 키만 나열합니다.

GET /users/:id_or_username/project_deploy_keys

파라미터:

속성 유형 필수 설명
id_or_username string yes 프로젝트 배포 키를 가져올 사용자의 ID 또는 사용자명
[
  {
    "id": 1,
    "title": "Key A",
    "created_at": "2022-05-30T12:28:27.855Z",
    "expires_at": null,
    "key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILkYXU2fVeO4/0rDCSsswP5iIX2+B6tv15YT3KObgyDl Key",
    "fingerprint": "40:8e:fa:df:70:f7:a7:06:1e:0d:6f:ae:f2:27:92:01",
    "fingerprint_sha256": "SHA256:Ojq2LZW43BFK/AMP81jBkDGn9YpPWYRNcViKBB44LPU"
  },
  {
    "id": 2,
    "title": "Key B",
    "created_at": "2022-05-30T13:34:56.219Z",
    "expires_at": null,
    "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDNJAkI3Wdf0r13c8a5pEExB2YowPWCSVzfZV22pNBc1CuEbyYLHpUyaD0GwpGvFdx2aP7lMEk35k6Rz3ccBF6jRaVJyhsn5VNnW92PMpBJ/P1UebhXwsFHdQf5rTt082cSxWuk61kGWRQtk4ozt/J2DF/dIUVaLvc+z4HomT41fQ==",
    "fingerprint": "4a:9d:64:15:ed:3a:e6:07:6e:89:36:b3:3b:03:05:d9",
    "": "SHA256:Jrs3LD1Ji30xNLtTVf9NDCj7kkBgPBb2pjvTZ3HfIgU"
  }
]
curl --request GET \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/users/20/project_deploy_keys"

응답 예시:

[
  {
    "id": 1,
    "title": "Key A",
    "created_at": "2022-05-30T12:28:27.855Z",
    "expires_at": "2022-10-30T12:28:27.855Z",
    "key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILkYXU2fVeO4/0rDCSsswP5iIX2+B6tv15YT3KObgyDl Key",
    "fingerprint": "40:8e:fa:df:70:f7:a7:06:1e:0d:6f:ae:f2:27:92:01",
    "fingerprint_sha256": "SHA256:Ojq2LZW43BFK/AMP81jBkDGn9YpPWYRNcViKBB44LPU"
  }
]

배포 키 조회#

지정된 배포 키를 조회합니다.

GET /projects/:id/deploy_keys/:key_id

파라미터:

속성 유형 필수 설명
id integer or string yes 프로젝트의 ID 또는 URL 인코딩된 경로
key_id integer yes 배포 키의 ID
curl --request GET \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/5/deploy_keys/11"

응답 예시:

{
  "id": 1,
  "title": "Public key",
  "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDNJAkI3Wdf0r13c8a5pEExB2YowPWCSVzfZV22pNBc1CuEbyYLHpUyaD0GwpGvFdx2aP7lMEk35k6Rz3ccBF6jRaVJyhsn5VNnW92PMpBJ/P1UebhXwsFHdQf5rTt082cSxWuk61kGWRQtk4ozt/J2DF/dIUVaLvc+z4HomT41fQ==",
  "fingerprint": "4a:9d:64:15:ed:3a:e6:07:6e:89:36:b3:3b:03:05:d9",
  "fingerprint_sha256": "SHA256:Jrs3LD1Ji30xNLtTVf9NDCj7kkBgPBb2pjvTZ3HfIgU",
  "created_at": "2013-10-02T10:12:29Z",
  "expires_at": null,
  "can_push": false
}

프로젝트에 배포 키 추가#

지정된 프로젝트에 배포 키를 추가합니다.

배포 키가 다른 프로젝트에 이미 존재하는 경우, 원래의 키가 동일한 사용자에 의해 접근 가능한 경우에만 현재 프로젝트에 조인됩니다.

POST /projects/:id/deploy_keys
속성 유형 필수 설명
id integer or string yes 프로젝트의 ID 또는 URL 인코딩된 경로
key string yes 새 배포 키
title string yes 새 배포 키의 제목
can_push boolean no 배포 키가 프로젝트의 리포지터리에 푸시할 수 있는지 여부
expires_at datetime no 배포 키의 만료 날짜. 값이 제공되지 않으면 만료되지 않습니다. ISO 8601 형식(2019-03-15T08:00:00Z)으로 입력합니다.
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Content-Type: application/json" \
     --data "{"title": "My deploy key", "key": "ssh-rsa AAAA...", "can_push": "true"}" \
     --url "https://gitlab.example.com/api/v4/projects/5/deploy_keys/"

응답 예시:

{
  "key": "ssh-rsa AAAA...",
  "id": 12,
  "title": "My deploy key",
  "can_push": true,
  "created_at": "2015-08-29T12:44:31.550Z",
  "expires_at": null
}

배포 키 업데이트#

프로젝트의 배포 키를 업데이트합니다.

PUT /projects/:id/deploy_keys/:key_id
속성 유형 필수 설명
id integer or string yes 프로젝트의 ID 또는 URL 인코딩된 경로
can_push boolean no 배포 키가 프로젝트의 리포지터리에 푸시할 수 있는지 여부
title string no 새 배포 키의 제목
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Content-Type: application/json" \
     --data "{"title": "New deploy key", "can_push": true}" \
     --url "https://gitlab.example.com/api/v4/projects/5/deploy_keys/11"

응답 예시:

{
  "id": 11,
  "title": "New deploy key",
  "key": "ssh-rsa AAAA...",
  "created_at": "2015-08-29T12:44:31.550Z",
  "expires_at": null,
  "can_push": true
}

배포 키 삭제#

프로젝트에서 배포 키를 제거합니다. 배포 키가 이 프로젝트에서만 사용되는 경우 시스템에서 삭제됩니다.

DELETE /projects/:id/deploy_keys/:key_id
속성 유형 필수 설명
id integer or string yes 프로젝트의 ID 또는 URL 인코딩된 경로
key_id integer yes 배포 키의 ID
curl --request DELETE \
     --header "PRIVATE-TOKEN: <your_access_token>" \
     --url "https://gitlab.example.com/api/v4/projects/5/deploy_keys/13"

배포 키 활성화#

프로젝트에 대한 배포 키를 활성화하여 사용할 수 있게 합니다. 성공 시 활성화된 키와 함께 상태 코드 201을 반환합니다.

POST /projects/:id/deploy_keys/:key_id/enable
속성 유형 필수 설명
id integer or string yes 프로젝트의 ID 또는 URL 인코딩된 경로
key_id integer yes 배포 키의 ID
curl --request POST \
     --header "PRIVATE-TOKEN: <your_access_token>" \
     --url "https://gitlab.example.com/api/v4/projects/5/deploy_keys/12/enable"

응답 예시:

{
  "key": "ssh-rsa AAAA...",
  "id": 12,
  "title": "My deploy key",
  "created_at": "2015-08-29T12:44:31.550Z",
  "expires_at": null
}

여러 프로젝트에 배포 키 추가#

동일한 그룹 내의 여러 프로젝트에 동일한 배포 키를 추가하려면 API를 사용합니다.

먼저, 모든 프로젝트를 나열하여 관심 있는 프로젝트의 ID를 찾습니다:

curl --request GET \
     --header "PRIVATE-TOKEN: <your_access_token>" \
     --url "https://gitlab.example.com/api/v4/projects"

또는 그룹의 ID를 찾습니다:

curl --request GET \
     --header "PRIVATE-TOKEN: <your_access_token>" \
     --url "https://gitlab.example.com/api/v4/groups"

그런 다음 해당 그룹의 모든 프로젝트를 나열합니다(예: 그룹 1234):

curl --request GET \
     --header "PRIVATE-TOKEN: <your_access_token>" \
     --url "https://gitlab.example.com/api/v4/groups/1234"

해당 ID를 사용하여 모두에 동일한 배포 키를 추가합니다:

for project_id in 321 456 987; do
    curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
         --header "Content-Type: application/json" \
         --data "{"title": "my key", "key": "ssh-rsa AAAA..."}" \
         "https://gitlab.example.com/api/v4/projects/${project_id}/deploy_keys"
done