키 API
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
이 API를 사용하여 SSH 키에 대한 정보를 검색합니다. API 호출에서 SHA256 핑거프린트를 사용하는 경우 핑거프린트를 URL 인코딩해야 합니다. 지정된 SSH 키를 소유한 사용자에 대한 정보를 검색합니다. 성공하면 200 OK와 다음 응답 속성을 반환합니다:
이 API를 사용하여 SSH 키에 대한 정보를 검색합니다. 배포 키 핑거프린트에 대한 쿼리는 해당 키를 사용하는 프로젝트에 대한 정보도 검색합니다.
API 호출에서 SHA256 핑거프린트를 사용하는 경우 핑거프린트를 URL 인코딩해야 합니다.
SSH 키 ID로 사용자 검색#
사전 요구사항:
- 인스턴스에 대한 관리자 접근 권한이 있어야 합니다.
지정된 SSH 키를 소유한 사용자에 대한 정보를 검색합니다.
GET /keys/:id
지원되는 속성:
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
id |
integer | Yes | SSH 키의 ID. |
성공하면 200 OK와 다음 응답 속성을 반환합니다:
| 속성 | 유형 | 설명 |
|---|---|---|
created_at |
string | ISO 8601 형식의 SSH 키 생성 날짜 및 시간. |
expires_at |
string | ISO 8601 형식의 SSH 키 만료 날짜 및 시간. |
id |
integer | SSH 키의 ID. |
key |
string | SSH 키 내용. |
last_used_at |
string | ISO 8601 형식의 SSH 키 최종 사용 날짜 및 시간. |
title |
string | SSH 키의 제목. |
usage_type |
string | SSH 키의 사용 유형 (예: auth 또는 auth_and_signing). |
user |
object | SSH 키와 관련된 사용자. |
user.avatar_url |
string | 사용자 아바타의 URL. |
user.bio |
string | 사용자의 바이오. |
user.created_at |
string | ISO 8601 형식의 사용자 계정 생성 날짜 및 시간. |
user.id |
integer | 사용자의 ID. |
user.linkedin |
string | 사용자의 LinkedIn 프로필 URL. |
user.location |
string | 사용자의 위치. |
user.name |
string | 사용자의 이름. |
user.organization |
string | 사용자의 조직. |
user.public_email |
string | 사용자의 공개 이메일 주소. |
user.state |
string | 사용자의 상태. |
user.twitter |
string | 사용자의 Twitter 프로필 URL. |
user.username |
string | 사용자의 사용자 이름. |
user.web_url |
string | 사용자 프로필의 URL. |
user.website_url |
string | 사용자의 웹사이트 URL. |
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/keys/1"
응답 예시:
{
"id": 1,
"title": "Sample key 25",
"key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt1256k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",
"created_at": "2015-09-03T07:24:44.627Z",
"expires_at": "2020-05-05T00:00:00.000Z",
"last_used_at": "2020-04-07T00:00:00.000Z",
"usage_type": "auth",
"user": {
"name": "John Smith",
"username": "john_smith",
"id": 25,
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/cfa35b8cd2ec278026357769582fa563?s=40\u0026d=identicon",
"web_url": "http://localhost:3000/john_smith",
"created_at": "2015-09-03T07:24:01.670Z",
"bio": null,
"location": null,
"public_email": "john@example.com",
"linkedin": "",
"twitter": "",
"website_url": "",
"organization": null,
"last_sign_in_at": "2015-09-03T07:24:01.670Z",
"confirmed_at": "2015-09-03T07:24:01.670Z",
"last_activity_on": "2015-09-03",
"email": "john@example.com",
"theme_id": 2,
"color_scheme_id": 1,
"projects_limit": 10,
"current_sign_in_at": null,
"identities": [],
"can_create_group": true,
"can_create_project": true,
"two_factor_enabled": false,
"external": false,
"private_profile": null
}
}
SSH 키 핑거프린트로 사용자 검색#
사전 요구사항:
- 인스턴스에 대한 관리자 접근 권한이 있어야 합니다.
지정된 SSH 키를 소유한 사용자에 대한 정보를 검색합니다.
GET /keys
지원되는 속성:
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
fingerprint |
string | Yes | SSH 키의 핑거프린트. |
성공하면 200 OK와 다음 응답 속성을 반환합니다:
| 속성 | 유형 | 설명 |
|---|---|---|
created_at |
string | ISO 8601 형식의 SSH 키 생성 날짜 및 시간. |
expires_at |
string | ISO 8601 형식의 SSH 키 만료 날짜 및 시간. |
id |
integer | SSH 키의 ID. |
key |
string | SSH 키 내용. |
last_used_at |
string | ISO 8601 형식의 SSH 키 최종 사용 날짜 및 시간. |
title |
string | SSH 키의 제목. |
usage_type |
string | SSH 키의 사용 유형 (예: auth 또는 auth_and_signing). |
user |
object | SSH 키와 관련된 사용자. |
user.avatar_url |
string | 사용자 아바타의 URL. |
user.bio |
string | 사용자의 바이오. |
user.can_create_group |
boolean | true이면 사용자가 그룹을 만들 수 있습니다. |
user.can_create_project |
boolean | true이면 사용자가 프로젝트를 만들 수 있습니다. |
user.color_scheme_id |
integer | 사용자의 색상 구성표 ID. |
user.confirmed_at |
string | ISO 8601 형식의 사용자 확인 날짜 및 시간. |
user.created_at |
string | ISO 8601 형식의 사용자 계정 생성 날짜 및 시간. |
user.current_sign_in_at |
string | ISO 8601 형식의 사용자 현재 로그인 날짜 및 시간. |
user.email |
string | 사용자의 이메일 주소. |
user.external |
boolean | true이면 사용자는 외부 사용자입니다. |
user.id |
integer | 사용자의 ID. |
user.identities |
array | 사용자와 관련된 ID. |
user.last_activity_on |
string | 사용자의 마지막 활동 날짜. |
user.last_sign_in_at |
string | ISO 8601 형식의 사용자 마지막 로그인 날짜 및 시간. |
user.linkedin |
string | 사용자의 LinkedIn 프로필 URL. |
user.location |
string | 사용자의 위치. |
user.name |
string | 사용자의 이름. |
user.organization |
string | 사용자의 조직. |
user.private_profile |
boolean | true이면 사용자의 프로필은 비공개입니다. |
user.projects_limit |
integer | 사용자의 프로젝트 제한. |
user.public_email |
string | 사용자의 공개 이메일 주소. |
user.state |
string | 사용자 계정의 상태. |
user.theme_id |
integer | 사용자의 테마 ID. |
user.twitter |
string | 사용자의 Twitter 프로필 URL. |
user.two_factor_enabled |
boolean | true이면 사용자에 대한 이중 인증이 활성화되어 있습니다. |
user.username |
string | 사용자의 사용자 이름. |
user.web_url |
string | 사용자 프로필의 URL. |
user.website_url |
string | 사용자의 웹사이트 URL. |
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/keys?fingerprint=ba:81:59:68:d7:6c:cd:02:02:bf:6a:9b:55:4e:af:d1"
응답 예시:
{
"id": 1,
"title": "Sample key 1",
"key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt1016k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",
"created_at": "2019-11-14T15:11:13.222Z",
"expires_at": "2020-05-05T00:00:00.000Z",
"last_used_at": "2020-04-07T00:00:00.000Z",
"usage_type": "auth",
"user": {
"id": 1,
"name": "Administrator",
"username": "root",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
"web_url": "http://0.0.0.0:3000/root",
"created_at": "2019-11-14T15:09:34.831Z",
"bio": null,
"location": null,
"public_email": "",
"linkedin": "",
"twitter": "",
"website_url": "",
"organization": null,
"last_sign_in_at": "2019-11-16T22:41:26.663Z",
"confirmed_at": "2019-11-14T15:09:34.575Z",
"last_activity_on": "2019-11-20",
"email": "admin@example.com",
"theme_id": 1,
"color_scheme_id": 1,
"projects_limit": 100000,
"current_sign_in_at": "2019-11-19T14:42:18.078Z",
"identities": [],
"can_create_group": true,
"can_create_project": true,
"two_factor_enabled": false,
"external": false,
"private_profile": false,
"shared_runners_minutes_limit": null,
"extra_shared_runners_minutes_limit": null
}
}
배포 키 핑거프린트로 사용자 검색#
지정된 배포 키 핑거프린트를 사용하는 사용자와 프로젝트에 대한 정보를 검색합니다. 배포 키는 생성한 사용자에게 바인딩됩니다.
GET /keys
지원되는 속성:
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
fingerprint |
string | Yes | 배포 키의 핑거프린트. |
성공하면 200 OK와 다음 응답 속성을 반환합니다:
| 속성 | 유형 | 설명 |
|---|---|---|
created_at |
string | ISO 8601 형식의 배포 키 생성 날짜 및 시간. |
deploy_keys_projects |
array | 배포 키 프로젝트 정보. |
deploy_keys_projects[].can_push |
boolean | true이면 배포 키가 프로젝트에 push할 수 있습니다. |
deploy_keys_projects[].created_at |
string | ISO 8601 형식의 생성 날짜 및 시간. |
deploy_keys_projects[].deploy_key_id |
integer | 배포 키의 ID. |
deploy_keys_projects[].id |
integer | 배포 키 프로젝트 관계의 ID. |
deploy_keys_projects[].project_id |
integer | 프로젝트의 ID. |
deploy_keys_projects[].updated_at |
string | ISO 8601 형식의 마지막 업데이트 날짜 및 시간. |
expires_at |
string | ISO 8601 형식의 배포 키 만료 날짜 및 시간. |
id |
integer | 배포 키의 ID. |
key |
string | 배포 키 내용. |
last_used_at |
string | ISO 8601 형식의 배포 키 최종 사용 날짜 및 시간. |
title |
string | 배포 키의 제목. |
usage_type |
string | 배포 키의 사용 유형 (예: auth 또는 auth_and_signing). |
user |
object | 배포 키와 관련된 사용자. |
user.avatar_url |
string | 사용자 아바타의 URL. |
user.bio |
string | 사용자의 바이오. |
user.can_create_group |
boolean | true이면 사용자가 그룹을 만들 수 있습니다. |
user.can_create_project |
boolean | true이면 사용자가 프로젝트를 만들 수 있습니다. |
user.color_scheme_id |
integer | 사용자의 색상 구성표 ID. |
user.confirmed_at |
string | ISO 8601 형식의 사용자 확인 날짜 및 시간. |
user.created_at |
string | ISO 8601 형식의 사용자 계정 생성 날짜 및 시간. |
user.current_sign_in_at |
string | ISO 8601 형식의 사용자 현재 로그인 날짜 및 시간. |
user.email |
string | 사용자의 이메일 주소. |
user.external |
boolean | true이면 사용자는 외부 사용자입니다. |
user.extra_shared_runners_minutes_limit |
integer | 사용자의 추가 공유 러너 분 제한. |
user.id |
integer | 사용자의 ID. |
user.identities |
array | 사용자와 관련된 ID. |
user.last_activity_on |
string | 사용자의 마지막 활동 날짜. |
user.last_sign_in_at |
string | ISO 8601 형식의 사용자 마지막 로그인 날짜 및 시간. |
user.linkedin |
string | 사용자의 LinkedIn 프로필 URL. |
user.location |
string | 사용자의 위치. |
user.name |
string | 사용자의 이름. |
user.organization |
string | 사용자의 조직. |
user.private_profile |
boolean | true이면 사용자의 프로필은 비공개입니다. |
user.projects_limit |
integer | 사용자의 프로젝트 제한. |
user.public_email |
string | 사용자의 공개 이메일 주소. |
user.shared_runners_minutes_limit |
integer | 사용자의 공유 러너 분 제한. |
user.state |
string | 사용자 계정의 상태. |
user.theme_id |
integer | 사용자의 테마 ID. |
user.twitter |
string | 사용자의 Twitter 프로필 URL. |
user.two_factor_enabled |
boolean | true이면 사용자에 대한 이중 인증이 활성화되어 있습니다. |
user.username |
string | 사용자의 사용자 이름. |
user.web_url |
string | 사용자 프로필의 URL. |
user.website_url |
string | 사용자의 웹사이트 URL. |
MD5 핑거프린트가 있는 요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/keys?fingerprint=ba:81:59:68:d7:6c:cd:02:02:bf:6a:9b:55:4e:af:d1"
SHA256 핑거프린트가 있는 요청 예시 (URL 인코딩):
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/keys?fingerprint=SHA256%3AnUhzNyftwADy8AH3wFY31tAKs7HufskYTte2aXo%2FlCg"
SHA256 예시에서 /는 %2F로, :는 %3A로 표현됩니다.
응답 예시:
{
"id": 1,
"title": "Sample key 1",
"key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt1016k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",
"created_at": "2019-11-14T15:11:13.222Z",
"expires_at": "2020-05-05T00:00:00.000Z",
"last_used_at": "2020-04-07T00:00:00.000Z",
"usage_type": "auth",
"user": {
"id": 1,
"name": "Administrator",
"username": "root",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
"web_url": "http://0.0.0.0:3000/root",
"created_at": "2019-11-14T15:09:34.831Z",
"bio": null,
"location": null,
"public_email": "",
"linkedin": "",
"twitter": "",
"website_url": "",
"organization": null,
"last_sign_in_at": "2019-11-16T22:41:26.663Z",
"confirmed_at": "2019-11-14T15:09:34.575Z",
"last_activity_on": "2019-11-20",
"email": "admin@example.com",
"theme_id": 1,
"color_scheme_id": 1,
"projects_limit": 100000,
"current_sign_in_at": "2019-11-19T14:42:18.078Z",
"identities": [],
"can_create_group": true,
"can_create_project": true,
"two_factor_enabled": false,
"external": false,
"private_profile": false,
"shared_runners_minutes_limit": null,
"extra_shared_runners_minutes_limit": null
},
"deploy_keys_projects": [
{
"id": 1,
"deploy_key_id": 1,
"project_id": 1,
"created_at": "2020-01-09T07:32:52.453Z",
"updated_at": "2020-01-09T07:32:52.453Z",
"can_push": false
}
]
}
