diff --git a/src/main/java/org/gitlab4j/api/GroupApi.java b/src/main/java/org/gitlab4j/api/GroupApi.java index 2494e18f..57d87aad 100644 --- a/src/main/java/org/gitlab4j/api/GroupApi.java +++ b/src/main/java/org/gitlab4j/api/GroupApi.java @@ -2121,7 +2121,7 @@ public GroupAccessToken createGroupAccessToken(Object groupIdOrPath, String name GitLabApiForm formData = new GitLabApiForm() .withParam("name", name, true) .withParam("scopes", Arrays.asList(scopes)) - .withParam("expires_at", expiresAt) + .withParam("expires_at", ISO8601.dateOnly(expiresAt)) .withParam("access_level", accessLevel); Response response = post(Response.Status.CREATED, formData, "groups", getGroupIdOrPath(groupIdOrPath), "access_tokens"); @@ -2139,10 +2139,30 @@ public GroupAccessToken createGroupAccessToken(Object groupIdOrPath, String name * @throws GitLabApiException if any exception occurs */ public GroupAccessToken rotateGroupAccessToken(Object groupIdOrPath, Long tokenId) throws GitLabApiException { - Response response = post(Response.Status.OK, (Form)null, "groups", getGroupIdOrPath(groupIdOrPath), "access_tokens", tokenId, "rotate"); + return rotateGroupAccessToken(groupIdOrPath, tokenId, null); + } + + + /** + * Rotate a group access token. Revokes the previous token and creates a new token that expires in one week. + * + *
GitLab Endpoint: POST /groups/:id/access_tokens/:token_id/rotate
+ *
+ * @param groupIdOrPath the group in the form of an Long(ID), String(path), or Group instance
+ * @param tokenId ID of the group access token
+ * @param expiresAt Expiration date of the access token
+ * @return the updated GroupAccessToken instance
+ * @throws GitLabApiException if any exception occurs
+ */
+ public GroupAccessToken rotateGroupAccessToken(Object groupIdOrPath, Long tokenId, Date expiresAt) throws GitLabApiException {
+ GitLabApiForm formData = new GitLabApiForm()
+ .withParam("expires_at", ISO8601.dateOnly(expiresAt));
+
+ Response response = post(Response.Status.OK, formData, "groups", getGroupIdOrPath(groupIdOrPath), "access_tokens", tokenId, "rotate");
return (response.readEntity(GroupAccessToken.class));
}
+
/**
* Revoke a group access token.
*
diff --git a/src/main/java/org/gitlab4j/api/ProjectApi.java b/src/main/java/org/gitlab4j/api/ProjectApi.java
index 6fc7a24d..bf27db63 100644
--- a/src/main/java/org/gitlab4j/api/ProjectApi.java
+++ b/src/main/java/org/gitlab4j/api/ProjectApi.java
@@ -4024,7 +4024,25 @@ public ProjectAccessToken createProjectAccessToken(Object projectIdOrPath, Strin
* @throws GitLabApiException if any exception occurs
*/
public ProjectAccessToken rotateProjectAccessToken(Object projectIdOrPath, Long tokenId) throws GitLabApiException {
- Response response = post(Response.Status.OK, (Object) null, "projects", getProjectIdOrPath(projectIdOrPath), "access_tokens", tokenId, "rotate");
+ return rotateProjectAccessToken(projectIdOrPath, tokenId, null);
+ }
+
+ /**
+ * Rotates the given project access token.
+ * The token is revoked and a new one which will expire in one week is created to replace it.
+ * Only working with GitLab 16.0 and above.
+ *
+ * @param projectIdOrPath the project in the form of a Long(ID), String(path), or Project instance
+ * @param tokenId the id
+ * @param expiresAt Expiration date of the access token
+ * @return the newly created ProjectAccessToken.
+ * @throws GitLabApiException if any exception occurs
+ */
+ public ProjectAccessToken rotateProjectAccessToken(Object projectIdOrPath, Long tokenId, Date expiresAt) throws GitLabApiException {
+ GitLabApiForm formData = new GitLabApiForm()
+ .withParam("expires_at", ISO8601.dateOnly(expiresAt));
+
+ Response response = post(Response.Status.OK, formData, "projects", getProjectIdOrPath(projectIdOrPath), "access_tokens", tokenId, "rotate");
return (response.readEntity(ProjectAccessToken.class));
}