@@ -115,6 +115,69 @@ public Optional<Board> getOptionalBoard(Object projectIdOrPath, Integer boardId)
115
115
}
116
116
}
117
117
118
+ /**
119
+ * Creates a new Issue Board.
120
+ *
121
+ * <p>NOTE: This is only available in GitLab EE</p>
122
+ *
123
+ * <pre><code>GitLab Endpoint: POST /projects/:id/boards</code></pre>
124
+ *
125
+ * @param projectIdOrPath the project in the form of an Integer(ID), String(path), or Project instance
126
+ * @param name the name for the new board
127
+ * @return the created Board instance
128
+ * @throws GitLabApiException if any exception occurs
129
+ */
130
+ public Board createBoard (Object projectIdOrPath , String name ) throws GitLabApiException {
131
+ GitLabApiForm formData = new GitLabApiForm ().withParam ("name" , name , true );
132
+ Response response = post (Response .Status .CREATED , formData .asMap (), "projects" , getProjectIdOrPath (projectIdOrPath ), "boards" );
133
+ return (response .readEntity (Board .class ));
134
+ }
135
+
136
+ /**
137
+ * Updates an existing Issue Board.
138
+ *
139
+ * <p>NOTE: This is only available in GitLab EE</p>
140
+ *
141
+ * <pre><code>GitLab Endpoint: PUT /projects/:id/boards/:board_id</code></pre>
142
+ *
143
+ * @param projectIdOrPath the project in the form of an Integer(ID), String(path), or Project instance, required
144
+ * @param boardId the ID of the board, required
145
+ * @param name the new name of the board, optional (can be null)
146
+ * @param assigneeId the assignee the board should be scoped to, optional (can be null)
147
+ * @param milestoneId the milestone the board should be scoped to, optional (can be null)
148
+ * @param labels a comma-separated list of label names which the board should be scoped to, optional (can be null)
149
+ * @param weight the weight range from 0 to 9, to which the board should be scoped to, optional (can be null)
150
+ * @return the updated Board instance
151
+ * @throws GitLabApiException if any exception occurs
152
+ */
153
+ public BoardList updateBoard (Object projectIdOrPath , Integer boardId , String name ,
154
+ Integer assigneeId , Integer milestoneId , String labels , Integer weight ) throws GitLabApiException {
155
+ GitLabApiForm formData = new GitLabApiForm ()
156
+ .withParam ("name" , name )
157
+ .withParam ("assignee_id" , assigneeId )
158
+ .withParam ("milestone_id" , milestoneId )
159
+ .withParam ("labels" , labels )
160
+ .withParam ("weight" , weight );
161
+ Response response = put (Response .Status .OK , formData .asMap (),
162
+ "projects" , getProjectIdOrPath (projectIdOrPath ), "boards" , boardId );
163
+ return (response .readEntity (BoardList .class ));
164
+ }
165
+
166
+ /**
167
+ * Soft deletes an existing Issue Board.
168
+ *
169
+ * <p>NOTE: This is only available in GitLab EE</p>
170
+ *
171
+ * <pre><code>GitLab Endpoint: DELETE /projects/:id/boards/:board_id</code></pre>
172
+ *
173
+ * @param projectIdOrPath the project in the form of an Integer(ID), String(path), or Project instance
174
+ * @param boardId the ID of the board
175
+ * @throws GitLabApiException if any exception occurs
176
+ */
177
+ public void deleteBoard (Object projectIdOrPath , Integer boardId ) throws GitLabApiException {
178
+ delete (Response .Status .NO_CONTENT , null , "projects" , getProjectIdOrPath (projectIdOrPath ), "boards" , boardId );
179
+ }
180
+
118
181
/**
119
182
* Get a list of the board’s lists. Does not include open and closed lists.
120
183
*
0 commit comments