데이터 관리 API
GitLab v19.5Offering: GitLab Self-Managed
요약
데이터 관리 API로 인스턴스의 데이터를 관리합니다. 인스턴스에 있는 데이터 모델의 정보를 조회합니다. :model_name 파라미터는 다음 중 하나여야 합니다. 이 엔드포인트는 모델의 기본 키에 대해 키셋 페이지네이션을 오름차순 또는 내림차순 정렬로 지원합니다.
히스토리
데이터 관리 API로 인스턴스의 데이터를 관리합니다.
사전 요구 사항:
- 관리자여야 합니다.
모델 정보 조회#
인스턴스에 있는 데이터 모델의 정보를 조회합니다. 이 작업은 실험 기능이며 예고 없이 변경되거나 제거될 수 있습니다.
GET /admin/data_management/:model_name
:model_name 파라미터는 다음 중 하나여야 합니다.
ci_job_artifactsci_pipeline_artifactsci_secure_filescontainer_repositoriesdependency_proxy_blobsdependency_proxy_manifestsdesign_management_repositoriesgroup_wiki_repositorieslfs_objectsmerge_request_diffspackages_debian_project_component_filespackages_nuget_symbolspackages_package_filespages_deploymentsprojectsprojects_wiki_repositoriessnippet_repositoriessupply_chain_attestationsterraform_state_versionsuploads
지원되는 속성:
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
model_name |
string | Yes | 요청 대상 모델의 복수형 이름. 위 :model_name 목록에 포함되어야 합니다. |
checksum_state |
string | No | 체크섬 상태로 검색합니다. 허용 값: pending, started, succeeded, failed, disabled. |
identifiers |
array | No | 요청 대상 모델의 고유 식별자 배열로 결과를 필터링합니다. 식별자는 정수 또는 base64 인코딩 문자열입니다. |
이 엔드포인트는 모델의 기본 키에 대해 키셋 페이지네이션을 오름차순 또는 내림차순 정렬로 지원합니다. 키셋 페이지네이션을 사용하려면 요청에 pagination=keyset 파라미터를 추가합니다. 기본적으로 키셋 페이지네이션은 페이지당 20 개 레코드를 오름차순으로 불러옵니다. 정렬 순서는 쿼리 파라미터 sort와 값 asc 또는 desc로 변경할 수 있습니다. 페이지당 레코드 수는 per_page 파라미터로 지정합니다.
성공하면 200과 모델 정보를 반환합니다. 다음 응답
속성이 포함됩니다.
| 속성 | 유형 | 설명 |
|---|---|---|
checksum_information |
JSON | Geo 전용 체크섬 정보(있는 경우). |
created_at |
timestamp | 생성 타임스탬프(있는 경우). |
file_size |
integer | 객체의 크기(있는 경우). |
model_class |
string | 모델의 클래스 이름. |
record_identifier |
string or integer | 레코드의 고유 식별자. 정수 또는 base64 인코딩 문자열입니다. |
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://primary.example.com/api/v4/admin/data_management/projects?pagination=keyset"
응답 예시:
[
{
"record_identifier": 1,
"model_class": "Project",
"created_at": "2025-02-05T11:27:10.173Z",
"file_size": null,
"checksum_information": {
"checksum": "<object checksum>",
"last_checksum": "2025-07-24T14:22:18.643Z",
"checksum_state": "succeeded",
"checksum_retry_count": 0,
"checksum_retry_at": null,
"checksum_failure": null
}
},
{
"record_identifier": 2,
"model_class": "Project",
"created_at": "2025-02-05T11:27:14.402Z",
"file_size": null,
"checksum_information": {
"checksum": "<object checksum>",
"last_checksum": "2025-07-24T14:22:18.214Z",
"checksum_state": "succeeded",
"checksum_retry_count": 0,
"checksum_retry_at": null,
"checksum_failure": null
}
}
]
모델 레코드의 체크섬 재계산#
지정한 모델의 선택된 레코드에 대해 체크섬을 재계산합니다. checksum_state와 identifiers 파라미터를 지정하면 그 조건으로 필터링합니다. 이 요청은 재계산을 수행할 백그라운드 job을 큐에 넣습니다.
PUT /admin/data_management/:model_name/checksum
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
model_name |
string | Yes | 요청 대상 모델의 복수형 이름. 위 :model_name 목록에 포함되어야 합니다. |
checksum_state |
string | No | 체크섬 상태로 필터링합니다. 허용 값: pending, started, succeeded, failed, disabled. |
identifiers |
array | No | 요청 대상 모델의 고유 식별자 배열로 레코드를 필터링합니다. 식별자는 정수 또는 base64 인코딩 문자열입니다. |
성공하면 200과 다음 정보를 담은 JSON 응답을 반환합니다.
| 속성 | 유형 | 설명 |
|---|---|---|
message |
string | 성공 또는 오류에 대한 안내 메시지. |
status |
string | "success" 또는 "error". |
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://primary.example.com/api/v4/admin/data_management/projects/checksum"
응답 예시:
{
"status": "success",
"message": "Batch update job has been successfully enqueued."
}
identifiers를 지정했지만 어떤 값도 기존 레코드와 일치하지 않으면 job이 큐에 들어가지 않고 레코드도 변경되지 않습니다. 요청은 여전히 유효하므로 엔드포인트는 다른 메시지와 함께 200을 반환합니다. 빈 identifiers[]=는 아무것도 일치하지 않는 필터로 취급되지 않습니다. 이 경우에도 해당 모델의 모든 레코드에 대한 job이 큐에 들어갑니다.
일치하는 레코드가 없을 때의 응답 예시:
{
"status": "success",
"message": "No records matched the given identifiers."
}
모델 레코드 정보 조회#
지정한 모델 레코드의 정보를 조회합니다.
GET /admin/data_management/:model_name/:id
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
model_name |
string | Yes | 요청 대상 모델의 복수형 이름. 위 :model_name 목록에 포함되어야 합니다. |
record_identifier |
string or integer | Yes | 요청 대상 모델의 고유 식별자. 정수 또는 base64 인코딩 문자열입니다. |
성공하면 200과 해당 모델 레코드의 정보를 반환합니다. 다음 응답
속성이 포함됩니다.
| 속성 | 유형 | 설명 |
|---|---|---|
checksum_information |
JSON | Geo 전용 체크섬 정보(있는 경우). |
created_at |
timestamp | 생성 타임스탬프(있는 경우). |
file_size |
integer | 객체의 크기(있는 경우). |
model_class |
string | 모델의 클래스 이름. |
record_identifier |
string or integer | 레코드의 고유 식별자. 정수 또는 base64 인코딩 문자열입니다. |
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://primary.example.com/api/v4/admin/data_management/projects/1"
응답 예시:
{
"record_identifier": 1,
"model_class": "Project",
"created_at": "2025-02-05T11:27:10.173Z",
"file_size": null,
"checksum_information": {
"checksum": "<object checksum>",
"last_checksum": "2025-07-24T14:22:18.643Z",
"checksum_state": "succeeded",
"checksum_retry_count": 0,
"checksum_retry_at": null,
"checksum_failure": null
}
}
모델 레코드의 체크섬 재계산#
지정한 모델 레코드의 체크섬을 재계산합니다. 체크섬 값은 조회 대상 모델을 md5 또는 sha256 알고리즘으로 해시한 값입니다.
PUT /admin/data_management/:model_name/:record_identifier/checksum
| 속성 | 유형 | 필수 | 설명 |
|---|---|---|---|
model_name |
string | Yes | 요청 대상 모델의 복수형 이름. 위 :model_name 목록에 포함되어야 합니다. |
record_identifier |
string or integer | Yes | 레코드의 고유 식별자. 정수 또는 base64 인코딩 문자열이며 GET 쿼리의 응답에서 가져옵니다. |
성공하면 200과 해당 모델 레코드의 정보를 반환합니다.
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://primary.example.com/api/v4/admin/data_management/projects/1/checksum"
응답 예시:
{
"record_identifier": 1,
"model_class": "Project",
"created_at": "2025-02-05T11:27:10.173Z",
"file_size": null,
"checksum_information": {
"checksum": "<sha256 or md5 string>",
"last_checksum": "2025-07-24T14:22:18.643Z",
"checksum_state": "succeeded",
"checksum_retry_count": 0,
"checksum_retry_at": null,
"checksum_failure": null
}
}