diff --git a/gitlab4j-api/src/main/java/org/gitlab4j/api/UserApi.java b/gitlab4j-api/src/main/java/org/gitlab4j/api/UserApi.java index 43d53e74..5ae999f0 100644 --- a/gitlab4j-api/src/main/java/org/gitlab4j/api/UserApi.java +++ b/gitlab4j-api/src/main/java/org/gitlab4j/api/UserApi.java @@ -1046,6 +1046,23 @@ public ImpersonationToken createPersonalAccessToken( userIdOrUsername, name, description, expiresAt, scopes, false); } + /** + * Create a personal access token for your account. + * + *
GitLab Endpoint: POST /user/personal_access_tokens
+ *
+ * @param name the name of the personal access token, required
+ * @param description description of personal access token, optional
+ * @param expiresAt the expiration date of the personal access token, optional
+ * @param scopes an array of scopes of the personal access token. Only accepts k8s_proxy.
+ * @return the created PersonalAccessToken instance
+ * @throws GitLabApiException if any exception occurs
+ */
+ public ImpersonationToken createPersonalAccessToken(String name, String description, Date expiresAt, Scope[] scopes)
+ throws GitLabApiException {
+ return createPersonalAccessTokenOrImpersonationToken(null, name, description, expiresAt, scopes, false);
+ }
+
/**
* Revokes a personal access token. Available only for admin users.
*
@@ -1086,8 +1103,19 @@ private ImpersonationToken createPersonalAccessTokenOrImpersonationToken(
}
String tokenTypePathArg = impersonation ? "impersonation_tokens" : "personal_access_tokens";
- Response response = post(
- Response.Status.CREATED, formData, "users", getUserIdOrUsername(userIdOrUsername), tokenTypePathArg);
+
+ Response response;
+ if (userIdOrUsername != null) {
+ response = post(
+ Response.Status.CREATED,
+ formData,
+ "users",
+ getUserIdOrUsername(userIdOrUsername),
+ tokenTypePathArg);
+ } else {
+ response = post(Response.Status.CREATED, formData, "user", tokenTypePathArg);
+ }
+
return (response.readEntity(ImpersonationToken.class));
}
diff --git a/gitlab4j-models/src/main/java/org/gitlab4j/api/models/ImpersonationToken.java b/gitlab4j-models/src/main/java/org/gitlab4j/api/models/ImpersonationToken.java
index b02dccd0..ac169e9c 100644
--- a/gitlab4j-models/src/main/java/org/gitlab4j/api/models/ImpersonationToken.java
+++ b/gitlab4j-models/src/main/java/org/gitlab4j/api/models/ImpersonationToken.java
@@ -23,6 +23,7 @@ public enum Scope {
WRITE_REPOSITORY,
READ_REGISTRY,
WRITE_REGISTRY,
+ K8S_PROXY,
SUDO;
private static JacksonJsonEnumHelper