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 enumHelper = new JacksonJsonEnumHelper<>(Scope.class);