검색 API
모든 검색 API 호출에는 인증이 필요합니다.
고급 검색이 활성화되면 고급 검색, 그룹 검색(#group-search-api), 및 프로젝트 검색(#project-search-api) API에 대한 추가적인 범위가 사용 가능합니다:
wiki_blobs
commits
blobs
notes
기본 검색을 사용하려면 검색 유형을 지정하세요.
고급 검색 API
GitLab 인스턴스 전체에서 용어를 검색합니다. 응답은 요청된 범위에 따라 달라집니다.
GET /search
속성 | 유형 | 필수 여부 | 설명 |
---|---|---|---|
scope
| string | Yes | 검색할 범위. projects , issues , merge_requests , milestones , snippet_titles , users 와 함께 사용 가능한 값이 있습니다. 추가적인 범위로 wiki_blobs , commits , blobs , 및 notes 가 있습니다.
|
search
| string | Yes | 검색 용어 |
confidential
| boolean | No | 기밀 여부에 따라 필터링합니다. issues 범위를 지원하며, 다른 범위는 무시됩니다.
|
order_by
| string | No |
created_at 만 허용됩니다. 설정되지 않으면, 결과는 기본 검색의 경우 created_at 을 기준으로 내림차순으로 정렬되거나, 고급 검색의 경우 가장 관련성 있는 문서를 기준으로 정렬됩니다.
|
sort
| string | No |
asc 또는 desc 만 허용됩니다. 설정되지 않으면, 결과는 기본 검색의 경우 created_at 을 기준으로 내림차순으로 정렬되거나, 고급 검색의 경우 가장 관련성 있는 문서를 기준으로 정렬됩니다.
|
state
| string | No | 상태로 필터링합니다. issues 및 merge_requests 범위를 지원하며, 다른 범위는 무시됩니다.
|
fields
| 문자열 배열 | No | 검색하려는 필드의 배열, 허용되는 값은 title 뿐입니다. merge_requests 범위를 지원하며, 다른 범위는 무시됩니다. 프리미엄 및 얼티밋 전용입니다.
|
범위: projects
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/search?scope=projects&search=flight"
예시 응답:
[
{
"id": 6,
"description": "Nobis sed ipsam vero quod cupiditate veritatis hic.",
"name": "Flight",
"name_with_namespace": "Twitter / Flight",
"path": "flight",
"path_with_namespace": "twitter/flight",
"created_at": "2017-09-05T07:58:01.621Z",
"default_branch": "main",
"tag_list": [], //deprecated, use `topics` instead
"topics": [],
"ssh_url_to_repo": "ssh://jarka@localhost:2222/twitter/flight.git",
"http_url_to_repo": "http://localhost:3000/twitter/flight.git",
"web_url": "http://localhost:3000/twitter/flight",
"readme_url": "http://localhost:3000/twitter/flight/-/blob/main/README.md",
"avatar_url": null,
"star_count": 0,
"forks_count": 0,
"last_activity_at": "2018-01-31T09:56:30.902Z"
}
]
범위: issues
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/search?scope=issues&search=file"
예시 응답:
[
{
"id": 83,
"iid": 1,
"project_id": 12,
"title": "Add file",
"description": "Add first file",
"state": "opened",
"created_at": "2018-01-24T06:02:15.514Z",
"updated_at": "2018-02-06T12:36:23.263Z",
"closed_at": null,
"labels": [],
"milestone": null,
"assignees": [
{
"id": 20,
"name": "Ceola Deckow",
"username": "sammy.collier",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c23d85a4f50e0ea76ab739156c639231?s=80&d=identicon",
"web_url": "http://localhost:3000/sammy.collier"
}
],
"author": {
"id": 1,
"name": "Administrator",
"username": "root",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
"web_url": "http://localhost:3000/root"
},
"assignee": {
"id": 20,
"name": "Ceola Deckow",
"username": "sammy.collier",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c23d85a4f50e0ea76ab739156c639231?s=80&d=identicon",
"web_url": "http://localhost:3000/sammy.collier"
},
"user_notes_count": 0,
"upvotes": 0,
"downvotes": 0,
"due_date": null,
"confidential": false,
"discussion_locked": null,
"web_url": "http://localhost:3000/h5bp/7bp/subgroup-prj/issues/1",
"time_stats": {
"time_estimate": 0,
"total_time_spent": 0,
"human_time_estimate": null,
"human_total_time_spent": null
}
}
]
참고:
assignee
열은 더이상 사용되지 않습니다. GitLab EE API와 일치하도록 단일 사이즈의 배열인 assignees
로 표시됩니다.
Scope: merge_requests
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/search?scope=merge_requests&search=file"
예시 응답:
[
{
"id": 56,
"iid": 8,
"project_id": 6,
"title": "첫 번째 파일 추가",
"description": "이것은 파일을 추가하는 테스트 MR입니다.",
"state": "opened",
"created_at": "2018-01-22T14:21:50.830Z",
"updated_at": "2018-02-06T12:40:33.295Z",
"target_branch": "main",
"source_branch": "jaja-test",
"upvotes": 0,
"downvotes": 0,
"author": {
"id": 1,
"name": "관리자",
"username": "root",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
"web_url": "http://localhost:3000/root"
},
"assignee": {
"id": 5,
"name": "Jacquelyn Kutch",
"username": "abigail",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/3138c66095ee4bd11a508c2f7f7772da?s=80&d=identicon",
"web_url": "http://localhost:3000/abigail"
},
"source_project_id": 6,
"target_project_id": 6,
"labels": ["ruby", "tests"],
"draft": false,
"work_in_progress": false,
"milestone": {
"id": 13,
"iid": 3,
"project_id": 6,
"title": "v2.0",
"description": "Qui aut qui eos dolor beatae itaque tempore molestiae.",
"state": "active",
"created_at": "2017-09-05T07:58:29.099Z",
"updated_at": "2017-09-05T07:58:29.099Z",
"due_date": null,
"start_date": null
},
"merge_when_pipeline_succeeds": false,
"merge_status": "can_be_merged",
"sha": "78765a2d5e0a43585945c58e61ba2f822e4d090b",
"merge_commit_sha": null,
"squash_commit_sha": null,
"user_notes_count": 0,
"discussion_locked": null,
"should_remove_source_branch": null,
"force_remove_source_branch": true,
"web_url": "http://localhost:3000/twitter/flight/merge_requests/8",
"time_stats": {
"time_estimate": 0,
"total_time_spent": 0,
"human_time_estimate": null,
"human_total_time_spent": null
}
}
]
Scope: milestones
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/search?scope=milestones&search=release"
예시 응답:
[
{
"id": 44,
"iid": 1,
"project_id": 12,
"title": "다음 릴리스",
"description": "다음 릴리스 마일스톤",
"state": "active",
"created_at": "2018-02-06T12:43:39.271Z",
"updated_at": "2018-02-06T12:44:01.298Z",
"due_date": "2018-04-18",
"start_date": "2018-02-04"
}
]
Scope: snippet_titles
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/search?scope=snippet_titles&search=sample"
예시 응답:
[
{
"id": 50,
"title": "샘플 파일",
"file_name": "file.rb",
"description": "간단한 루비 파일",
"author": {
"id": 1,
"name": "관리자",
"username": "root",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
"web_url": "http://localhost:3000/root"
},
"updated_at": "2018-02-06T12:49:29.104Z",
"created_at": "2017-11-28T08:20:18.071Z",
"project_id": 9,
"web_url": "http://localhost:3000/root/jira-test/snippets/50"
}
]
Scope: users
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/search?scope=users&search=doe"
예시 응답:
[
{
"id": 1,
"name": "John Doe1",
"username": "user1",
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/c922747a93b40d1ea88262bf1aebee62?s=80&d=identicon",
"web_url": "http://localhost/user1"
}
]
Scope: wiki_blobs
이 스코프는 고급 검색이 활성화된 경우에만 사용할 수 있습니다.
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/search?scope=wiki_blobs&search=bye"
예시 응답:
[
{
"basename": "home",
"data": "hello\n\nand bye\n\nend",
"path": "home.md",
"filename": "home.md",
"id": null,
"ref": "main",
"startline": 5,
"project_id": 6,
"group_id": null
}
]
참고:
filename
은 path
대신에 deprecated
되었습니다. 두 가지 버전 모두 저장소 안의 파일의 전체 경로를 반환하지만, 향후에는 filename
이 파일 이름만 반환되는 것으로 의도되어 있습니다. 자세한 내용은 issue 34521을 참조하세요.
### 범위: `커밋(commit)`
DETAILS:
**Tier:** Premium, Ultimate
이 범위는 [고급 검색이 활성화](../user/search/advanced_search.md#enable-advanced-search)된 경우에만 사용할 수 있습니다.
```shell
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/search?scope=commits&search=bye"
```
예시 응답:
[
{
"id": "4109c2d872d5fdb1ed057400d103766aaea97f98",
"short_id": "4109c2d8",
"title": "goodbye $.browser",
"created_at": "2013-02-18T22:02:54.000Z",
"parent_ids": ["59d05353ab575bcc2aa958fe1782e93297de64c9"],
"message": "goodbye $.browser\n",
"author_name": "angus croll",
"author_email": "anguscroll@gmail.com",
"authored_date": "2013-02-18T22:02:54.000Z",
"committer_name": "angus croll",
"committer_email": "anguscroll@gmail.com",
"committed_date": "2013-02-18T22:02:54.000Z",
"project_id": 6
}
]
범위: 블롭(blob)
이 범위는 고급 검색이 활성화된 경우에만 사용할 수 있습니다.
이 범위에 대해 다음 필터가 사용 가능합니다:
filename
path
extension
필터를 사용하려면 쿼리에 포함시키면 됩니다. 예를 들면: a query filename:some_name*
.
와일드카드(*
)를 사용하여 Glob 매칭을 할 수 있습니다.
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/search?scope=blobs&search=installation"
예시 응답:
[
{
"basename": "README",
"data": "```\n\n## Installation\n\nQuick start using the [pre-built",
"path": "README.md",
"filename": "README.md",
"id": null,
"ref": "main",
"startline": 46,
"project_id": 6
}
]
참고:
filename
은 path
를 선호하는 방식으로 폐기되었습니다. 두 가지 모두 저장소 내 파일의 전체 경로를 반환하지만 filename
은 앞으로 파일 이름만 반환하는 것이 목표입니다. 자세한 내용은 이슈 34521을 참조하세요.
범위: 노트(note)
이 범위는 고급 검색이 활성화된 경우에만 사용할 수 있습니다.
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/search?scope=notes&search=maxime"
예시 응답:
[
{
"id": 191,
"body": "Harum maxime consequuntur et et deleniti assumenda facilis.",
"attachment": null,
"author": {
"id": 23,
"name": "User 1",
"username": "user1",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/111d68d06e2d317b5a59c2c6c5bad808?s=80&d=identicon",
"web_url": "http://localhost:3000/user1"
},
"created_at": "2017-09-05T08:01:32.068Z",
"updated_at": "2017-09-05T08:01:32.068Z",
"system": false,
"noteable_id": 22,
"noteable_type": "Issue",
"project_id": 6,
"noteable_iid": 2
}
]
그룹 검색 API
지정된 그룹에서 용어를 검색합니다.
만일 사용자가 그룹의 구성원이 아니고 그룹이 비공개인 경우, 해당 그룹에 대한 GET
요청은 404 Not Found
상태 코드를 반환합니다.
GET /groups/:id/search
속성 | 유형 | 필요 여부 | 설명 |
---|---|---|---|
id
| 정수 또는 문자열 | 예 | 그룹의 ID 또는 URL-인코딩된 경로. |
scope
| 문자열 | 예 | 검색할 범위. projects , issues , merge_requests , milestones , users 값을 포함합니다. 추가적인 범위는 wiki_blobs , commits , blobs , notes 입니다.
|
search
| 문자열 | 예 | 검색 용어. |
confidential
| 부울 | 아니오 | 기밀성에 따라 필터링합니다. issues 범위만 지원하며, 다른 범위는 무시됩니다.
|
order_by
| 문자열 | 아니오 |
created_at 만 허용된 값입니다. 설정되지 않은 경우, 결과는 created_at 에 따라 내림차순으로 정렬됩니다. sort 는 기본 검색에 대해서는 최신 문서부터, 고급 검색에 대해서는 가장 관련 있는 문서부터 정렬됩니다.
|
sort
| 문자열 | 아니오 |
asc 또는 desc 만 허용된 값입니다. 설정되지 않은 경우, 결과는 created_at 에 따라 내림차순으로 정렬됩니다. sort 는 기본 검색에 대해서는 최신 문서부터, 고급 검색에 대해서는 가장 관련 있는 문서부터 정렬됩니다.
|
state
| 문자열 | 아니오 | 상태에 따라 필터링합니다. issues 및 merge_requests 만 지원하며, 다른 범위는 무시됩니다.
|
응답은 요청된 범위에 따라 다릅니다.
범위: 프로젝트
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/3/search?scope=projects&search=flight"
예시 응답:
[
{
"id": 6,
"description": "Nobis sed ipsam vero quod cupiditate veritatis hic.",
"name": "Flight",
"name_with_namespace": "Twitter / Flight",
"path": "flight",
"path_with_namespace": "twitter/flight",
"created_at": "2017-09-05T07:58:01.621Z",
"default_branch": "main",
"tag_list": [], //deprecated, use `topics` instead
"topics": [],
"ssh_url_to_repo": "ssh://jarka@localhost:2222/twitter/flight.git",
"http_url_to_repo": "http://localhost:3000/twitter/flight.git",
"web_url": "http://localhost:3000/twitter/flight",
"readme_url": "http://localhost:3000/twitter/flight/-/blob/main/README.md",
"avatar_url": null,
"star_count": 0,
"forks_count": 0,
"last_activity_at": "2018-01-31T09:56:30.902Z"
}
]
### 범위: `이슈`
```shell
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/3/search?scope=issues&search=file"
예시 응답:
[
{
"id": 83,
"iid": 1,
"project_id": 12,
"title": "파일 추가",
"description": "첫 번째 파일 추가",
"state": "열림",
"created_at": "2018-01-24T06:02:15.514Z",
"updated_at": "2018-02-06T12:36:23.263Z",
"closed_at": null,
"labels": [],
"milestone": null,
"assignees": [
{
"id": 20,
"name": "Ceola Deckow",
"username": "sammy.collier",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c23d85a4f50e0ea76ab739156c639231?s=80&d=identicon",
"web_url": "http://localhost:3000/sammy.collier"
}
],
"작성자": {
"id": 1,
"name": "관리자",
"username": "root",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
"web_url": "http://localhost:3000/root"
},
"담당자": {
"id": 20,
"name": "Ceola Deckow",
"username": "sammy.collier",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/c23d85a4f50e0ea76ab739156c639231?s=80&d=identicon",
"web_url": "http://localhost:3000/sammy.collier"
},
"user_notes_count": 0,
"upvotes": 0,
"downvotes": 0,
"due_date": null,
"비밀글": false,
"토론 잠금": null,
"web_url": "http://localhost:3000/h5bp/7bp/subgroup-prj/issues/1",
"time_stats": {
"time_estimate": 0,
"total_time_spent": 0,
"human_time_estimate": null,
"human_total_time_spent": null
}
}
]
참고:
assignee
열은 폐기되었으며, 현재 GitLab EE API에 맞추어 단일 크기의 배열 assignees
로 표시됩니다.
범위: 병합 요청
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/3/search?scope=merge_requests&search=file"
예시 응답:
[
{
"id": 56,
"iid": 8,
"project_id": 6,
"title": "첫 번째 파일 추가",
"description": "파일 추가를 위한 테스트 MR입니다.",
"state": "열림",
"created_at": "2018-01-22T14:21:50.830Z",
"updated_at": "2018-02-06T12:40:33.295Z",
"target_branch": "main",
"source_branch": "jaja-test",
"upvotes": 0,
"downvotes": 0,
"author": {
"id": 1,
"name": "관리자",
"username": "root",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
"web_url": "http://localhost:3000/root"
},
"assignee": {
"id": 5,
"name": "Jacquelyn Kutch",
"username": "abigail",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/3138c66095ee4bd11a508c2f7f7772da?s=80&d=identicon",
"web_url": "http://localhost:3000/abigail"
},
"source_project_id": 6,
"target_project_id": 6,
"labels": ["루비", "테스트"],
"draft": false,
"work_in_progress": false,
"milestone": {
"id": 13,
"iid": 3,
"project_id": 6,
"title": "v2.0",
"description": "Qui aut qui eos dolor beatae itaque tempore molestiae.",
"state": "active",
"created_at": "2017-09-05T07:58:29.099Z",
"updated_at": "2017-09-05T07:58:29.099Z",
"due_date": null,
"start_date": null
},
"merge_when_pipeline_succeeds": false,
"merge_status": "병합 가능",
"sha": "78765a2d5e0a43585945c58e61ba2f822e4d090b",
"병합 커밋 SHA": null,
"스쿼시 커밋 SHA": null,
"user_notes_count": 0,
"토론 잠금": null,
"원본 브랜치 제거 필요 여부": null,
"원본 브랜치 강제 삭제": true,
"web_url": "http://localhost:3000/twitter/flight/merge_requests/8",
"time_stats": {
"time_estimate": 0,
"total_time_spent": 0,
"human_time_estimate": null,
"human_total_time_spent": null
}
}
]
범위: 마일스톤
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/3/search?scope=milestones&search=release"
예시 응답:
[
{
"id": 44,
"iid": 1,
"project_id": 12,
"title": "다음 릴리스",
"description": "다음 릴리스를 위한 마일스톤",
"state": "active",
"created_at": "2018-02-06T12:43:39.271Z",
"updated_at": "2018-02-06T12:44:01.298Z",
"due_date": "2018-04-18",
"start_date": "2018-02-04"
}
]
범위: 사용자
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/3/search?scope=users&search=doe"
예시 응답:
[
{
"id": 1,
"name": "John Doe1",
"username": "user1",
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/c922747a93b40d1ea88262bf1aebee62?s=80&d=identicon",
"web_url": "http://localhost/user1"
}
]
범위: 위키 덩어리
이 범위는 고급 검색이 활성화된 경우에만 사용할 수 있습니다.
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/6/search?scope=wiki_blobs&search=bye"
예시 응답:
[
{
"basename": "home",
"data": "안녕하세요\n\n그리고 안녕\n\n끝",
"path": "home.md",
"filename": "home.md",
"id": null,
"ref": "main",
"startline": 5,
"project_id": 6,
"group_id": 1
}
]
참고:
filename
은 path
의 대체제입니다. 둘 다 저장소 내 파일의 전체 경로를 반환하지만, 앞으로 filename
은 파일 이름만 반환하고 전체 경로는 반환하지 않을 예정입니다. 자세한 내용은 이슈 34521을 참조하세요.
범위: 커밋
이 범위는 고급 검색이 활성화된 경우에만 사용할 수 있습니다.
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/6/search?scope=commits&search=bye"
예시 응답:
[
{
"id": "4109c2d872d5fdb1ed057400d103766aaea97f98",
"short_id": "4109c2d8",
"title": "안녕 $.browser",
"created_at": "2013-02-18T22:02:54.000Z",
"parent_ids": ["59d05353ab575bcc2aa958fe1782e93297de64c9"],
"message": "안녕 $.browser\n",
"author_name": "angus croll",
"author_email": "anguscroll@gmail.com",
"authored_date": "2013-02-18T22:02:54.000Z",
"committer_name": "angus croll",
"committer_email": "anguscroll@gmail.com",
"committed_date": "2013-02-18T22:02:54.000Z",
"project_id": 6
}
]
범위: 블롭
이 범위는 고급 검색이 활성화된 경우에만 사용할 수 있습니다.
이 범위에 대한 다음 필터가 있습니다:
filename
path
extension
필터를 사용하려면 해당 쿼리에 포함시키세요. 예를 들어: a query filename:some_name*
.
와일드카드(*
)를 사용하여 glob 매칭을 할 수 있습니다.
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/6/search?scope=blobs&search=installation"
예시 응답:
[
{
"basename": "README",
"data": "```\n\n## 설치\n\n[pre-built를 사용한 빠른 시작](/url/README)",
"path": "README.md",
"filename": "README.md",
"id": null,
"ref": "main",
"startline": 46,
"project_id": 6
}
]
참고:
filename
은 path
의 대체제입니다. 둘 다 저장소 내 파일의 전체 경로를 반환하지만, 앞으로 filename
은 파일 이름만 반환하고 전체 경로는 반환하지 않을 예정입니다. 자세한 내용은 이슈 34521을 참조하세요.
범위: 노트
이 범위는 고급 검색이 활성화된 경우에만 사용할 수 있습니다.
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/6/search?scope=notes&search=maxime"
예시 응답:
[
{
"id": 191,
"body": "Harum maxime consequuntur et et deleniti assumenda facilis.",
"attachment": null,
"author": {
"id": 23,
"name": "사용자 1",
"username": "user1",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/111d68d06e2d317b5a59c2c6c5bad808?s=80&d=identicon",
"web_url": "http://localhost:3000/user1"
},
"created_at": "2017-09-05T08:01:32.068Z",
"updated_at": "2017-09-05T08:01:32.068Z",
"system": false,
"noteable_id": 22,
"noteable_type": "이슈",
"project_id": 6,
"noteable_iid": 2
}
]
프로젝트 검색 API
지정된 프로젝트에서 용어를 검색합니다.
사용자가 프로젝트 멤버가 아니고 프로젝트가 비공개인 경우, 해당 프로젝트에 대한 GET
요청은 404
상태 코드를 반환합니다.
GET /projects/:id/search
속성 | 유형 | 필수 | 설명 |
---|---|---|---|
id
| 정수 또는 문자열 | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로 |
scope
| 문자열 | 예 | 검색 범위입니다. issues , merge_requests , milestones , users 등의 값이 있습니다. wiki_blobs , commits , blobs , notes 와 같은 추가 범위가 있습니다.
|
search
| 문자열 | 예 | 검색 용어입니다. |
confidential
| 부울 | 아니요 | 기밀 처리에 따라 필터링합니다. issues 범위를 지원하며, 다른 범위는 무시됩니다.
|
ref
| 문자열 | 아니요 | 검색할 리포지토리 브랜치 또는 태그의 이름입니다. 프로젝트의 기본 브랜치가 기본적으로 사용됩니다. blobs , commits , wiki_blobs 범위에만 해당됩니다.
|
order_by
| 문자열 | 아니요 | 허용되는 값은 created_at 뿐입니다. 설정되지 않으면, 기본 검색의 경우 created_at 로 내림차순으로 정렬되며, 고급 검색의 경우 가장 관련 있는 문서로 정렬됩니다.
|
sort
| 문자열 | 아니요 | 허용되는 값은 asc 또는 desc 만입니다. 설정되지 않으면, 기본 검색의 경우 created_at 로 내림차순으로 정렬되며, 고급 검색의 경우 가장 관련 있는 문서로 정렬됩니다.
|
state
| 문자열 | 아니요 | 상태에 따라 필터링합니다. issues 및 merge_requests 범위를 지원하며, 다른 범위는 무시됩니다.
|
응답은 요청된 범위에 따라 달라집니다.
범위: issues
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/12/search?scope=issues&search=file"
예시 응답:
[
{
"id": 83,
"iid": 1,
"project_id": 12,
"title": "파일 추가",
"description": "첫 번째 파일 추가",
"state": "열림",
"created_at": "2018-01-24T06:02:15.514Z",
"updated_at": "2018-02-06T12:36:23.263Z",
"closed_at": null,
"labels": [],
"milestone": null,
"assignees": [
{
"id": 20,
"name": "Ceola Deckow",
"username": "sammy.collier",
"state": "활성",
"avatar_url": "https://www.gravatar.com/avatar/c23d85a4f50e0ea76ab739156c639231?s=80&d=identicon",
"web_url": "http://localhost:3000/sammy.collier"
}
],
"author": {
"id": 1,
"name": "관리자",
"username": "root",
"state": "활성",
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
"web_url": "http://localhost:3000/root"
},
"assignee": {
"id": 20,
"name": "Ceola Deckow",
"username": "sammy.collier",
"state": "활성",
"avatar_url": "https://www.gravatar.com/avatar/c23d85a4f50e0ea76ab739156c639231?s=80&d=identicon",
"web_url": "http://localhost:3000/sammy.collier"
},
"user_notes_count": 0,
"upvotes": 0,
"downvotes": 0,
"due_date": null,
"confidential": false,
"discussion_locked": null,
"web_url": "http://localhost:3000/h5bp/7bp/subgroup-prj/issues/1",
"time_stats": {
"time_estimate": 0,
"total_time_spent": 0,
"human_time_estimate": null,
"human_total_time_spent": null
}
}
]
참고:
assignee
열은 폐기되었으며, 이제 GitLab EE API에 맞추기 위해 단일 사이즈 배열 assignees
로 표시합니다.
범위: merge_requests
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/6/search?scope=merge_requests&search=file"
예시 응답:
[
{
"id": 56,
"iid": 8,
"project_id": 6,
"title": "첫 번째 파일 추가",
"description": "이것은 파일을 추가하기 위한 테스트 MR입니다.",
"state": "열림",
"created_at": "2018-01-22T14:21:50.830Z",
"updated_at": "2018-02-06T12:40:33.295Z",
"target_branch": "main",
"source_branch": "jaja-test",
"upvotes": 0,
"downvotes": 0,
"author": {
"id": 1,
"name": "관리자",
"username": "root",
"state": "활성",
"avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
"web_url": "http://localhost:3000/root"
},
"assignee": {
"id": 5,
"name": "Jacquelyn Kutch",
"username": "abigail",
"state": "활성",
"avatar_url": "https://www.gravatar.com/avatar/3138c66095ee4bd11a508c2f7f7772da?s=80&d=identicon",
"web_url": "http://localhost:3000/abigail"
},
"source_project_id": 6,
"target_project_id": 6,
"labels": ["루비", "테스트"],
"draft": false,
"work_in_progress": false,
"milestone": {
"id": 13,
"iid": 3,
"project_id": 6,
"title": "v2.0",
"description": "Qui aut qui eos dolor beatae itaque tempore molestiae.",
"state": "활성",
"created_at": "2017-09-05T07:58:29.099Z",
"updated_at": "2017-09-05T07:58:29.099Z",
"due_date": null,
"start_date": null
},
"merge_when_pipeline_succeeds": false,
"merge_status": "병합 가능",
"sha": "78765a2d5e0a43585945c58e61ba2f822e4d090b",
"merge_commit_sha": null,
"squash_commit_sha": null,
"user_notes_count": 0,
"discussion_locked": null,
"should_remove_source_branch": null,
"force_remove_source_branch": true,
"web_url": "http://localhost:3000/twitter/flight/merge_requests/8",
"time_stats": {
"time_estimate": 0,
"total_time_spent": 0,
"human_time_estimate": null,
"human_total_time_spent": null
}
}
]
범위: 마일스톤(milestones)
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/12/search?scope=milestones&search=release"
예시 응답:
[
{
"id": 44,
"iid": 1,
"project_id": 12,
"title": "next release",
"description": "Next release milestone",
"state": "active",
"created_at": "2018-02-06T12:43:39.271Z",
"updated_at": "2018-02-06T12:44:01.298Z",
"due_date": "2018-04-18",
"start_date": "2018-02-04"
}
]
범위: 사용자(users)
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/6/search?scope=users&search=doe"
예시 응답:
[
{
"id": 1,
"name": "John Doe1",
"username": "user1",
"state": "active",
"avatar_url": "http://www.gravatar.com/avatar/c922747a93b40d1ea88262bf1aebee62?s=80&d=identicon",
"web_url": "http://localhost/user1"
}
]
범위: 위키 블롭(wiki_blobs)
Tier: Premium, Ultimate
이 범위는 고급 검색이 활성화된 경우에만 사용할 수 있습니다.
이 범위에서 다음 필터를 사용할 수 있습니다:
filename
path
extension
필터를 사용하려면 쿼리에 포함시키세요. 예시: a query filename:some_name*
.
와일드카드(*
)를 사용하여 glob 매칭을 할 수 있습니다.
위키 블롭 검색은 파일 이름과 내용, 둘 다에서 수행됩니다. 검색 결과:
- 파일 이름에서 찾은 내용이 내용에서 찾은 결과보다 먼저 표시됩니다.
- 동일한 블롭에 대해 여러 개의 일치 항목이 포함될 수 있습니다. 이것은 검색 문자열이 파일 이름과 내용 모두에 나타날 수 있거나 내용에서 여러 번 나타날 수 있기 때문입니다.
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/6/search?scope=wiki_blobs&search=bye"
예시 응답:
[
{
"basename": "home",
"data": "hello\n\nand bye\n\nend",
"path": "home.md",
"filename": "home.md",
"id": null,
"ref": "main",
"startline": 5,
"project_id": 6,
"group_id": 1
}
]
참고:
filename
은 path
의 대안으로 사용될 수 있습니다. 둘 다 저장소 내의 파일의 전체 경로를 반환하지만, 앞으로 filename
은 파일 이름만 반환되고 전체 경로는 아닌 의도로 변경될 예정입니다. 자세한 내용은 이슈 34521을 참조하세요.
범위: 커밋(commits)
Tier: Premium, Ultimate
이 범위는 고급 검색이 활성화된 경우에만 사용할 수 있습니다.
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/6/search?scope=commits&search=bye"
예시 응답:
[
{
"id": "4109c2d872d5fdb1ed057400d103766aaea97f98",
"short_id": "4109c2d8",
"title": "goodbye $.browser",
"created_at": "2013-02-18T22:02:54.000Z",
"parent_ids": ["59d05353ab575bcc2aa958fe1782e93297de64c9"],
"message": "goodbye $.browser\n",
"author_name": "angus croll",
"author_email": "anguscroll@gmail.com",
"authored_date": "2013-02-18T22:02:54.000Z",
"committer_name": "angus croll",
"committer_email": "anguscroll@gmail.com",
"committed_date": "2013-02-18T22:02:54.000Z",
"project_id": 6
}
]
범위: 블롭(blobs)
Tier: Premium, Ultimate
이 범위는 고급 검색이 활성화된 경우에만 사용할 수 있습니다.
이 범위에서 다음 필터를 사용할 수 있습니다:
filename
path
extension
필터를 사용하려면 쿼리에 포함시키세요. 예시: a query filename:some_name*
.
와일드카드(*
)를 사용하여 glob 매칭을 할 수 있습니다.
블롭 검색은 파일 이름과 내용, 둘 다에서 수행됩니다. 검색 결과:
- 파일 이름에서 찾은 내용이 내용에서 찾은 결과보다 먼저 표시됩니다.
- 동일한 블롭에 대해 여러 개의 일치 항목이 포함될 수 있습니다. 이것은 검색 문자열이 파일 이름과 내용 모두에 나타날 수 있거나 내용에서 여러 번 나타날 수 있기 때문입니다.
curl --request GET --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/api/v4/projects/6/search?scope=blobs&search=keyword%20filename:*.py
예시 응답:
[
{
"basename": "README",
"data": "```\n\n## Installation\n\nQuick start using the [pre-built",
"path": "README.md",
"filename": "README.md",
"id": null,
"ref": "main",
"startline": 46,
"project_id": 6
}
]
참고:
filename
은 path
의 대안으로 사용될 수 있습니다. 둘 다 저장소 내의 파일의 전체 경로를 반환하지만, 앞으로 filename
은 파일 이름만 반환되고 전체 경로는 아닌 의도로 변경될 예정입니다. 자세한 내용은 이슈 34521을 참조하세요.
범위: 노트
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/6/search?scope=notes&search=maxime"
예시 응답:
[
{
"id": 191,
"body": "Harum maxime consequuntur et et deleniti assumenda facilis.",
"attachment": null,
"author": {
"id": 23,
"name": "User 1",
"username": "user1",
"state": "active",
"avatar_url": "https://www.gravatar.com/avatar/111d68d06e2d317b5a59c2c6c5bad808?s=80&d=identicon",
"web_url": "http://localhost:3000/user1"
},
"created_at": "2017-09-05T08:01:32.068Z",
"updated_at": "2017-09-05T08:01:32.068Z",
"system": false,
"noteable_id": 22,
"noteable_type": "Issue",
"project_id": 6,
"noteable_iid": 2
}
]