검색 API

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

모든 검색 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 상태로 필터링합니다. issuesmerge_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

Tier: Premium, Ultimate

이 스코프는 고급 검색이 활성화된 경우에만 사용할 수 있습니다.

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
  }
]

참고: filenamepath 대신에 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)

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/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
  }
]

참고: filenamepath를 선호하는 방식으로 폐기되었습니다. 두 가지 모두 저장소 내 파일의 전체 경로를 반환하지만 filename은 앞으로 파일 이름만 반환하는 것이 목표입니다. 자세한 내용은 이슈 34521을 참조하세요.

범위: 노트(note)

Tier: Premium, Ultimate

이 범위는 고급 검색이 활성화된 경우에만 사용할 수 있습니다.

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 문자열 아니오 상태에 따라 필터링합니다. issuesmerge_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"
  }
]

범위: 위키 덩어리

Tier: 프리미엄, 얼티메이트

이 범위는 고급 검색이 활성화된 경우에만 사용할 수 있습니다.

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
  }
]

참고: filenamepath의 대체제입니다. 둘 다 저장소 내 파일의 전체 경로를 반환하지만, 앞으로 filename은 파일 이름만 반환하고 전체 경로는 반환하지 않을 예정입니다. 자세한 내용은 이슈 34521을 참조하세요.

범위: 커밋

Tier: 프리미엄, 얼티메이트

이 범위는 고급 검색이 활성화된 경우에만 사용할 수 있습니다.

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
  }
]

범위: 블롭

Tier: 프리미엄, 얼티메이트

이 범위는 고급 검색이 활성화된 경우에만 사용할 수 있습니다.

이 범위에 대한 다음 필터가 있습니다:

  • 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
  }
]

참고: filenamepath의 대체제입니다. 둘 다 저장소 내 파일의 전체 경로를 반환하지만, 앞으로 filename은 파일 이름만 반환하고 전체 경로는 반환하지 않을 예정입니다. 자세한 내용은 이슈 34521을 참조하세요.

범위: 노트

Tier: 프리미엄, 얼티메이트

이 범위는 고급 검색이 활성화된 경우에만 사용할 수 있습니다.

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 문자열 아니요 상태에 따라 필터링합니다. issuesmerge_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
  }
]

참고: filenamepath의 대안으로 사용될 수 있습니다. 둘 다 저장소 내의 파일의 전체 경로를 반환하지만, 앞으로 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
  }
]

참고: filenamepath의 대안으로 사용될 수 있습니다. 둘 다 저장소 내의 파일의 전체 경로를 반환하지만, 앞으로 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
  }
]