프로젝트 이슈 보드 API

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

이슈 보드에 대한 모든 API 호출은 인증되어야 합니다.

개인 프로젝트의 멤버가 아닌 경우, 해당 프로젝트에 대한 GET 요청은 404 상태 코드로 결과됩니다.

프로젝트 이슈 보드 디렉터리

주어진 프로젝트의 프로젝트 이슈 보드를 나열합니다.

GET /projects/:id/boards
속성 유형 필수 여부 설명
id 정수/문자열 인증된 사용자가 소유한 프로젝트의 ID 또는 URL로 인코딩된 경로
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/boards"

예시 응답:

[
  {
    "id" : 1,
    "name": "board1",
    "project": {
      "id": 5,
      "name": "Diaspora Project Site",
      "name_with_namespace": "Diaspora / Diaspora Project Site",
      "path": "diaspora-project-site",
      "path_with_namespace": "diaspora/diaspora-project-site",
      "http_url_to_repo": "http://example.com/diaspora/diaspora-project-site.git",
      "web_url": "http://example.com/diaspora/diaspora-project-site"
    },
    "milestone":   {
      "id": 12,
      "title": "10.0"
    },
    "lists" : [
      {
        "id" : 1,
        "label" : {
          "name" : "Testing",
          "color" : "#F0AD4E",
          "description" : null
        },
        "position" : 1,
        "max_issue_count": 0,
        "max_issue_weight": 0,
        "limit_metric": null
      },
      {
        "id" : 2,
        "label" : {
          "name" : "Ready",
          "color" : "#FF0000",
          "description" : null
        },
        "position" : 2,
        "max_issue_count": 0,
        "max_issue_weight": 0,
        "limit_metric":  null
      },
      {
        "id" : 3,
        "label" : {
          "name" : "Production",
          "color" : "#FF5F00",
          "description" : null
        },
        "position" : 3,
        "max_issue_count": 0,
        "max_issue_weight": 0,
        "limit_metric":  null
      }
    ]
  }
]

프로젝트에 활성화되거나 존재하지 않는 보드가 없는 경우의 다른 예시 응답:

[]

단일 이슈 보드 표시

단일 프로젝트 이슈 보드를 가져옵니다.

GET /projects/:id/boards/:board_id
속성 유형 필수 여부 설명
id 정수/문자열 인증된 사용자가 소유한 프로젝트의 ID 또는 URL로 인코딩된 경로
board_id 정수 보드의 ID
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/boards/1"

예시 응답:

  {
    "id": 1,
    "name": "project issue board",
    "project": {
      "id": 5,
      "name": "Diaspora Project Site",
      "name_with_namespace": "Diaspora / Diaspora Project Site",
      "path": "diaspora-project-site",
      "path_with_namespace": "diaspora/diaspora-project-site",
      "http_url_to_repo": "http://example.com/diaspora/diaspora-project-site.git",
      "web_url": "http://example.com/diaspora/diaspora-project-site"
    },
    "milestone":   {
      "id": 12,
      "title": "10.0"
    },
    "lists" : [
      {
        "id" : 1,
        "label" : {
          "name" : "Testing",
          "color" : "#F0AD4E",
          "description" : null
        },
        "position" : 1,
        "max_issue_count": 0,
        "max_issue_weight": 0,
        "limit_metric":  null
      },
      {
        "id" : 2,
        "label" : {
          "name" : "Ready",
          "color" : "#FF0000",
          "description" : null
        },
        "position" : 2,
        "max_issue_count": 0,
        "max_issue_weight": 0,
        "limit_metric":  null
      },
      {
        "id" : 3,
        "label" : {
          "name" : "Production",
          "color" : "#FF5F00",
          "description" : null
        },
        "position" : 3,
        "max_issue_count": 0,
        "max_issue_weight": 0,
        "limit_metric":  null
      }
    ]
  }

이슈 보드 생성

프로젝트 이슈 보드를 만듭니다.

POST /projects/:id/boards
속성 유형 필수 여부 설명
id 정수/문자열 인증된 사용자가 소유한 프로젝트의 ID 또는 URL로 인코딩된 경로
name 문자열 새로운 보드의 이름
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/boards?name=newboard"

예시 응답:

  {
    "id": 1,
    "project": {
      "id": 5,
      "name": "Diaspora Project Site",
      "name_with_namespace": "Diaspora / Diaspora Project Site",
      "path": "diaspora-project-site",
      "path_with_namespace": "diaspora/diaspora-project-site",
      "http_url_to_repo": "http://example.com/diaspora/diaspora-project-site.git",
      "web_url": "http://example.com/diaspora/diaspora-project-site"
    },
    "name": "newboard",
    "lists" : [],
    "group": null,
    "milestone": null,
    "assignee" : null,
    "labels" : [],
    "weight" : null
  }

이슈 보드 업데이트

프로젝트 이슈 보드를 업데이트합니다.

PUT /projects/:id/boards/:board_id
속성 유형 필수 여부 설명
id 정수/문자열 인증된 사용자가 소유한 프로젝트의 ID 또는 URL로 인코딩된 경로
board_id 정수 보드의 ID
name 문자열 아니요 보드의 새 이름
assignee_id 정수 아니요 보드가 적용되어야 하는 담당자. Premium 및 Ultimate 전용
milestone_id 정수 아니요 보드가 적용되어야 하는 마일스톤. Premium 및 Ultimate 전용
labels 문자열 아니요 보드가 적용되어야 하는 라벨 이름의 쉼표로 구분된 디렉터리. Premium 및 Ultimate 전용
weight 정수 아니요 보드가 적용되어야 하는 0에서 9까지의 가중치 범위. Premium 및 Ultimate 전용
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/boards/1?name=new_name&milestone_id=43&assignee_id=1&labels=Doing&weight=4"

예시 응답:

  {
    "id": 1,
    "project": {
      "id": 5,
      "name": "Diaspora Project Site",
      "name_with_namespace": "Diaspora / Diaspora Project Site",
      "path": "diaspora-project-site",
      "path_with_namespace": "diaspora/diaspora-project-site",
      "created_at": "2018-07-03T05:48:49.982Z",
      "default_branch": null,
      "tag_list": [], //deprecated, use `topics` instead
      "topics": [],
      "ssh_url_to_repo": "ssh://user@example.com/diaspora/diaspora-project-site.git",
      "http_url_to_repo": "http://example.com/diaspora/diaspora-project-site.git",
      "web_url": "http://example.com/diaspora/diaspora-project-site",
      "readme_url": null,
      "avatar_url": null,
      "star_count": 0,
      "forks_count": 0,
      "last_activity_at": "2018-07-03T05:48:49.982Z"
    },
    "lists": [],
    "name": "new_name",
    "group": null,
    "milestone": {
      "id": 43,
      "iid": 1,
      "project_id": 15,
      "title": "Milestone 1",
      "description": "Milestone 1 desc",
      "state": "active",
      "created_at": "2018-07-03T06:36:42.618Z",
      "updated_at": "2018-07-03T06:36:42.618Z",
      "due_date": null,
      "start_date": null,
      "web_url": "http://example.com/root/board1/milestones/1"
    },
    "assignee": {
      "id": 1,
      "name": "Administrator",
      "username": "root",
      "state": "active",
      "avatar_url": "https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
      "web_url": "http://example.com/root"
    },
    "labels": [{
      "id": 10,
      "name": "Doing",
      "color": "#5CB85C",
      "description": null
    }],
    "weight": 4
  }

이슈 보드 삭제

프로젝트의 이슈 보드를 삭제합니다.

DELETE /projects/:id/boards/:board_id
속성 타입 필요 여부 설명
id integer/string 인증된 사용자가 소유한 프로젝트의 ID 또는 URL-encoded path
board_id integer 보드의 ID
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/boards/1"

프로젝트 이슈 보드의 보드 디렉터리 나열

보드의 디렉터리을 가져옵니다. openclosed 디렉터리은 포함되지 않습니다.

GET /projects/:id/boards/:board_id/lists
속성 타입 필요 여부 설명
id integer/string 인증된 사용자가 소유한 프로젝트의 ID 또는 URL-encoded path
board_id integer 보드의 ID
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/boards/1/lists"

응답 예시:

[
  {
    "id" : 1,
    "label" : {
      "name" : "테스팅",
      "color" : "#F0AD4E",
      "description" : null
    },
    "position" : 1,
    "max_issue_count": 0,
    "max_issue_weight": 0,
    "limit_metric":  null
  },
  {
    "id" : 2,
    "label" : {
      "name" : "준비 완료",
      "color" : "#FF0000",
      "description" : null
    },
    "position" : 2,
    "max_issue_count": 0,
    "max_issue_weight": 0,
    "limit_metric":  null
  },
  {
    "id" : 3,
    "label" : {
      "name" : "운영",
      "color" : "#FF5F00",
      "description" : null
    },
    "position" : 3,
    "max_issue_count": 0,
    "max_issue_weight": 0,
    "limit_metric":  null
  }
]

단일 보드 디렉터리 표시

단일 보드 디렉터리을 가져옵니다.

GET /projects/:id/boards/:board_id/lists/:list_id
속성 타입 필요 여부 설명
id integer/string 인증된 사용자가 소유한 프로젝트의 ID 또는 URL-encoded path
board_id integer 보드의 ID
list_id integer 보드 디렉터리의 ID
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/boards/1/lists/1"

응답 예시:

{
  "id" : 1,
  "label" : {
    "name" : "테스팅",
    "color" : "#F0AD4E",
    "description" : null
  },
  "position" : 1,
  "max_issue_count": 0,
  "max_issue_weight": 0,
  "limit_metric":  null
}

보드 디렉터리 생성

새로운 이슈 보드 디렉터리을 생성합니다.

POST /projects/:id/boards/:board_id/lists
속성 타입 필요 여부 설명
id integer/string 인증된 사용자가 소유한 프로젝트의 ID 또는 URL-encoded path
board_id integer 보드의 ID
label_id integer 아니요 label의 ID
assignee_id integer 아니요 사용자의 ID. Premium 및 Ultimate 전용
milestone_id integer 아니요 마일스톤의 ID. Premium 및 Ultimate 전용
note
Label, assignee, milestone 매개변수는 상호 배타적이며, 즉 요청에서 이 중 하나만 허용됩니다. 각 디렉터리 유형에 대한 필요한 라이선스에 대한 자세한 내용은 이슈 보드 문서를 확인하세요.
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/boards/1/lists?label_id=5"

응답 예시:

{
  "id" : 1,
  "label" : {
    "name" : "테스팅",
    "color" : "#F0AD4E",
    "description" : null
  },
  "position" : 1,
  "max_issue_count": 0,
  "max_issue_weight": 0,
  "limit_metric":  null
}

보드에서 디렉터리 재정렬

기존 이슈 보드 디렉터리을 업데이트합니다. 이 호출은 디렉터리 위치를 변경하는 데 사용됩니다.

PUT /projects/:id/boards/:board_id/lists/:list_id
속성 타입 필요 여부 설명
id integer/string 인증된 사용자가 소유한 프로젝트의 ID 또는 URL-encoded path
board_id integer 보드의 ID
list_id integer 보드 디렉터리의 ID
position integer 디렉터리의 위치
curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/boards/1/lists/1?position=2"

응답 예시:

{
  "id" : 1,
  "label" : {
    "name" : "테스팅",
    "color" : "#F0AD4E",
    "description" : null
  },
  "position" : 1,
  "max_issue_count": 0,
  "max_issue_weight": 0,
  "limit_metric":  null
}

보드에서 디렉터리 삭제

관리자 및 프로젝트 소유자만 가능합니다. 보드 디렉터리을 삭제합니다.

DELETE /projects/:id/boards/:board_id/lists/:list_id
속성 타입 필요 여부 설명
id integer/string 인증된 사용자가 소유한 프로젝트의 ID 또는 URL-encoded path
board_id integer 보드의 ID
list_id integer 보드 디렉터리의 ID
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/boards/1/lists/1"