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 11cc1014..b6468988 100644 --- a/gitlab4j-api/src/main/java/org/gitlab4j/api/UserApi.java +++ b/gitlab4j-api/src/main/java/org/gitlab4j/api/UserApi.java @@ -13,6 +13,7 @@ import jakarta.ws.rs.core.Response; import org.gitlab4j.api.GitLabApi.ApiVersion; +import org.gitlab4j.api.models.Associations; import org.gitlab4j.api.models.CustomAttribute; import org.gitlab4j.api.models.Email; import org.gitlab4j.api.models.Exists; @@ -1502,6 +1503,20 @@ public Pager getMemberships(Long userId, int itemsPerPage) throws Gi return (new Pager<>(this, Membership.class, itemsPerPage, formData.asMap(), "users", userId, "memberships")); } + /** + * Get a count of a user’s projects, groups, issues, and merge requests + * + *
GitLab Endpoint: GET /user/:id/associations_count
+ * + * @param userId the ID of the user to get the associations for + * @return the count of each type of association + * @throws GitLabApiException if any exception occurs + */ + public Associations getAssociationsCount(Long userId) throws GitLabApiException { + Response response = get(Response.Status.OK, null, "users", userId, "associations_count"); + return (response.readEntity(Associations.class)); + } + /** * Activates the given user (admin only) * diff --git a/gitlab4j-models/src/main/java/org/gitlab4j/api/models/Associations.java b/gitlab4j-models/src/main/java/org/gitlab4j/api/models/Associations.java new file mode 100644 index 00000000..ee0834d7 --- /dev/null +++ b/gitlab4j-models/src/main/java/org/gitlab4j/api/models/Associations.java @@ -0,0 +1,51 @@ +package org.gitlab4j.api.models; + +import java.io.Serializable; + +import org.gitlab4j.models.utils.JacksonJson; + +public class Associations implements Serializable { + private static final long serialVersionUID = 1L; + + private int groupsCount; + private int projectsCount; + private int issuesCount; + private int mergeRequestsCount; + + public int getGroupsCount() { + return groupsCount; + } + + public void setGroupsCount(int groupsCount) { + this.groupsCount = groupsCount; + } + + public int getProjectsCount() { + return projectsCount; + } + + public void setProjectsCount(int projectsCount) { + this.projectsCount = projectsCount; + } + + public int getIssuesCount() { + return issuesCount; + } + + public void setIssuesCount(int issuesCount) { + this.issuesCount = issuesCount; + } + + public int getMergeRequestsCount() { + return mergeRequestsCount; + } + + public void setMergeRequestsCount(int mergeRequestsCount) { + this.mergeRequestsCount = mergeRequestsCount; + } + + @Override + public String toString() { + return (JacksonJson.toJsonString(this)); + } +}