Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 58 additions & 1 deletion src/main/java/com/crowdin/client/teams/TeamsApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
import com.crowdin.client.core.http.exceptions.HttpException;
import com.crowdin.client.core.model.*;
import com.crowdin.client.teams.model.*;
import com.crowdin.client.users.model.ProjectPermissions;
import com.crowdin.client.users.model.ProjectPermissionsResponseList;

import java.util.List;
import java.util.Map;
Expand Down Expand Up @@ -52,7 +54,9 @@ public ResponseList<GroupTeam> listGroupTeams(ListGroupTeamsParams params) throw
}

Map<String, Optional<Object>> queryParams = HttpRequestConfig.buildUrlParams(
"orderBy", Optional.ofNullable(OrderByField.generateSortParam(params.getOrderByList()))
"orderBy", Optional.ofNullable(OrderByField.generateSortParam(params.getOrderByList())),
"limit", Optional.ofNullable(params.getLimit()),
"offset", Optional.ofNullable(params.getOffset())
);

GroupTeamResponseList response = this.httpClient.get(this.url + "/groups/" + params.getGroupId() + "/teams", new HttpRequestConfig(queryParams), GroupTeamResponseList.class);
Expand Down Expand Up @@ -99,6 +103,59 @@ public ProjectTeamResources addTeamToProject(Long projectId, AddTeamToProjectReq
return this.httpClient.post(this.url + "/projects/" + projectId + "/teams", request, new HttpRequestConfig(), ProjectTeamResources.class);
}

/**
* List project teams. For Crowdin Enterprise only
* @param projectId project identifier
* @param params query parameters (orderBy, limit, offset), may be null
* @return list of project teams
* @see <ul>
* <li><a href="https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.teams.getMany" target="_blank"><b>Enterprise API Documentation</b></a></li>
* </ul>
*/
public ResponseList<ProjectTeamResource> listProjectTeams(Long projectId, ListProjectTeamsParams params) throws HttpException, HttpBadRequestException {
ListProjectTeamsParams query = Optional.ofNullable(params).orElse(new ListProjectTeamsParams());
Map<String, Optional<Object>> queryParams = HttpRequestConfig.buildUrlParams(
"orderBy", Optional.ofNullable(OrderByField.generateSortParam(query.getOrderBy())),
"limit", Optional.ofNullable(query.getLimit()),
"offset", Optional.ofNullable(query.getOffset())
);
ProjectTeamResourceResponseList response = this.httpClient.get(this.url + "/projects/" + projectId + "/teams", new HttpRequestConfig(queryParams), ProjectTeamResourceResponseList.class);
return ProjectTeamResourceResponseList.to(response);
}

/**
* List team project permissions. For Crowdin Enterprise only
* @param teamId team identifier
* @param limit maximum number of items to retrieve (default 25)
* @param offset starting offset in the collection (default 0)
* @return list of team project permissions
* @see <ul>
* <li><a href="https://developer.crowdin.com/enterprise/api/v2/#operation/api.teams.projects.permissions.getMany" target="_blank"><b>Enterprise API Documentation</b></a></li>
* </ul>
*/
public ResponseList<ProjectPermissions> listTeamProjectPermissions(Long teamId, Integer limit, Integer offset) throws HttpException, HttpBadRequestException {
Map<String, Optional<Object>> queryParams = HttpRequestConfig.buildUrlParams(
"limit", Optional.ofNullable(limit),
"offset", Optional.ofNullable(offset)
);
ProjectPermissionsResponseList response = this.httpClient.get(this.url + "/teams/" + teamId + "/projects/permissions", new HttpRequestConfig(queryParams), ProjectPermissionsResponseList.class);
return ProjectPermissionsResponseList.to(response);
}

/**
* Edit team project permissions. For Crowdin Enterprise only
* @param teamId team identifier
* @param request request object (path format: /{projectId}/roles)
* @return list of updated team project permissions
* @see <ul>
* <li><a href="https://developer.crowdin.com/enterprise/api/v2/#operation/api.teams.projects.permissions.patch" target="_blank"><b>Enterprise API Documentation</b></a></li>
* </ul>
*/
public ResponseList<ProjectPermissions> editTeamProjectPermissions(Long teamId, List<PatchRequest> request) throws HttpException, HttpBadRequestException {
ProjectPermissionsResponseList response = this.httpClient.patch(this.url + "/teams/" + teamId + "/projects/permissions", request, new HttpRequestConfig(), ProjectPermissionsResponseList.class);
return ProjectPermissionsResponseList.to(response);
}

/**
* @param limit maximum number of items to retrieve (default 25)
* @param offset starting offset in the collection (default 0)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,16 @@ public class AddTeamToProjectRequest {

private Long teamId;
/**
* @deprecated
* @deprecated deprecated in the API, use {@link #roles} instead
*/
@Deprecated
private Boolean accessToAllWorkflowSteps;
private Boolean managerAccess;
private Boolean developerAccess;
/**
* @deprecated
* @deprecated deprecated in the API, use {@link #roles} instead
*/
@Deprecated
private Object permissions;
private List<TranslatorRole> roles;
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,6 @@ public class ListGroupTeamsParams {
@NonNull
private final Long groupId;
private List<OrderByField> orderByList;
private Integer limit;
private Integer offset;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.crowdin.client.teams.model;

import com.crowdin.client.core.model.OrderByField;
import com.crowdin.client.core.model.Pagination;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.List;

@Data
@EqualsAndHashCode(callSuper = true)
public class ListProjectTeamsParams extends Pagination {
private List<OrderByField> orderBy;
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
public class ProjectTeamResource {

private Long id;
private String name;
private boolean hasManagerAccess;
private boolean hasDeveloperAccess;
/**
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.crowdin.client.teams.model;

import com.crowdin.client.core.model.Pagination;
import com.crowdin.client.core.model.ResponseList;
import com.crowdin.client.core.model.ResponseObject;
import lombok.Data;

import java.util.List;
import java.util.stream.Collectors;

@Data
public class ProjectTeamResourceResponseList {

private List<ProjectTeamResourceResponseObject> data;
private Pagination pagination;

public static ResponseList<ProjectTeamResource> to(ProjectTeamResourceResponseList projectTeamResourceResponseList) {
return ResponseList.of(
projectTeamResourceResponseList.getData().stream()
.map(ProjectTeamResourceResponseObject::getData)
.map(ResponseObject::of)
.collect(Collectors.toList()),
projectTeamResourceResponseList.getPagination()
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.crowdin.client.teams.model;

import lombok.Data;

@Data
public class ProjectTeamResourceResponseObject {

private ProjectTeamResource data;
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

@Data
public class ProjectTeamResources {

private ProjectTeamResource skipped;
private ProjectTeamResource updated;
private ProjectTeamResource added;
}
1 change: 1 addition & 0 deletions src/main/java/com/crowdin/client/teams/model/Team.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ public class Team {
private Long id;
private String name;
private Integer totalMembers;
private String webUrl;
private Date createdAt;
private Date updatedAt;
}
96 changes: 95 additions & 1 deletion src/main/java/com/crowdin/client/users/UsersApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,9 @@ public ResponseList<GroupManager> listGroupManagers(Long groupId, ListGroupManag

Map<String, Optional<Object>> queryParams = HttpRequestConfig.buildUrlParams(
"teamIds", Optional.ofNullable(query.getTeamIds()),
"orderBy", Optional.ofNullable(OrderByField.generateSortParam(query.getOrderBy()))
"orderBy", Optional.ofNullable(OrderByField.generateSortParam(query.getOrderBy())),
"limit", Optional.ofNullable(query.getLimit()),
"offset", Optional.ofNullable(query.getOffset())
);
GroupManagerResponseList response = this.httpClient.get(this.url + "/groups/" + groupId + "/managers", new HttpRequestConfig(queryParams), GroupManagerResponseList.class);
return GroupManagerResponseList.to(response);
Expand Down Expand Up @@ -147,6 +149,7 @@ public ResponseList<ProjectMember> listProjectMembersEnterprise(Long projectId,
* @param request request object
* @return project team members response info
* @see <ul>
* <li><a href="https://developer.crowdin.com/api/v2/#operation/api.projects.members.post" target="_blank"><b>API Documentation</b></a></li>
* <li><a href="https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.members.post" target="_blank"><b>Enterprise API Documentation</b></a></li>
* </ul>
*/
Expand All @@ -159,6 +162,7 @@ public ProjectMembersResponse addProjectMember(Long projectId, AddProjectMemberR
* @param memberId member identifier
* @return project member info
* @see <ul>
* <li><a href="https://developer.crowdin.com/api/v2/#operation/api.projects.members.get" target="_blank"><b>API Documentation</b></a></li>
* <li><a href="https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.members.get" target="_blank"><b>Enterprise API Documentation</b></a></li>
* </ul>
*/
Expand All @@ -175,6 +179,7 @@ public ResponseObject<ProjectMember> getProjectMemberPermissions(Long projectId,
* @param request request object
* @return updated project member info
* @see <ul>
* <li><a href="https://developer.crowdin.com/api/v2/#operation/api.projects.members.put" target="_blank"><b>API Documentation</b></a></li>
* <li><a href="https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.members.put" target="_blank"><b>Enterprise API Documentation</b></a></li>
* </ul>
*/
Expand All @@ -188,6 +193,7 @@ public ResponseObject<ProjectMember> replaceProjectMemberPermissions(Long projec
* @param projectId project identifier
* @param memberId member identifier
* @see <ul>
* <li><a href="https://developer.crowdin.com/api/v2/#operation/api.projects.members.delete" target="_blank"><b>API Documentation</b></a></li>
* <li><a href="https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.members.delete" target="_blank"><b>Enterprise API Documentation</b></a></li>
* </ul>
*/
Expand Down Expand Up @@ -351,6 +357,71 @@ public ResponseObject<User> getAuthenticatedUser() throws HttpException, HttpBad
return ResponseObject.of(languageResponseObject.getData());
}

/**
* Edit authenticated user. For Crowdin only
* @param request request object (supported paths: /username, /fullName, /timezone, /avatarStorageId)
* @return updated authenticated user
* @see <ul>
* <li><a href="https://developer.crowdin.com/api/v2/#operation/api.user.patch" target="_blank"><b>API Documentation</b></a></li>
* </ul>
*/
public ResponseObject<User> editAuthenticatedUser(List<PatchRequest> request) throws HttpException, HttpBadRequestException {
UserResponseObject userResponseObject = this.httpClient.patch(this.url + "/user", request, new HttpRequestConfig(), UserResponseObject.class);
return ResponseObject.of(userResponseObject.getData());
}

/**
* List user project permissions. For Crowdin Enterprise only
* @param userId user identifier
* @param limit maximum number of items to retrieve (default 25)
* @param offset starting offset in the collection (default 0)
* @return list of user project permissions
* @see <ul>
* <li><a href="https://developer.crowdin.com/enterprise/api/v2/#operation/api.users.projects.permissions.getMany" target="_blank"><b>Enterprise API Documentation</b></a></li>
* </ul>
*/
public ResponseList<ProjectPermissions> listUserProjectPermissions(Long userId, Integer limit, Integer offset) throws HttpException, HttpBadRequestException {
Map<String, Optional<Object>> queryParams = HttpRequestConfig.buildUrlParams(
"limit", Optional.ofNullable(limit),
"offset", Optional.ofNullable(offset)
);
ProjectPermissionsResponseList response = this.httpClient.get(this.url + "/users/" + userId + "/projects/permissions", new HttpRequestConfig(queryParams), ProjectPermissionsResponseList.class);
return ProjectPermissionsResponseList.to(response);
}

/**
* Edit user project permissions. For Crowdin Enterprise only
* @param userId user identifier
* @param request request object (path format: /{projectId}/roles)
* @return list of updated user project permissions
* @see <ul>
* <li><a href="https://developer.crowdin.com/enterprise/api/v2/#operation/api.users.projects.permissions.patch" target="_blank"><b>Enterprise API Documentation</b></a></li>
* </ul>
*/
public ResponseList<ProjectPermissions> editUserProjectPermissions(Long userId, List<PatchRequest> request) throws HttpException, HttpBadRequestException {
ProjectPermissionsResponseList response = this.httpClient.patch(this.url + "/users/" + userId + "/projects/permissions", request, new HttpRequestConfig(), ProjectPermissionsResponseList.class);
return ProjectPermissionsResponseList.to(response);
}

/**
* List user project contributions. For Crowdin Enterprise only
* @param userId user identifier
* @param limit maximum number of items to retrieve (default 25)
* @param offset starting offset in the collection (default 0)
* @return list of user project contributions
* @see <ul>
* <li><a href="https://developer.crowdin.com/enterprise/api/v2/#operation/api.users.projects.contributions.getMany" target="_blank"><b>Enterprise API Documentation</b></a></li>
* </ul>
*/
public ResponseList<UserProjectContribution> listUserProjectContributions(Long userId, Integer limit, Integer offset) throws HttpException, HttpBadRequestException {
Map<String, Optional<Object>> queryParams = HttpRequestConfig.buildUrlParams(
"limit", Optional.ofNullable(limit),
"offset", Optional.ofNullable(offset)
);
UserProjectContributionResponseList response = this.httpClient.get(this.url + "/users/" + userId + "/projects/contributions", new HttpRequestConfig(queryParams), UserProjectContributionResponseList.class);
return UserProjectContributionResponseList.to(response);
}

/**
* @param projectId project identifier
* @param search search users by firstName, lastName, username, or email (2 or more characters)
Expand Down Expand Up @@ -393,6 +464,29 @@ public ResponseList<TeamMember> listProjectMembers(Long projectId, String search
return TeamMemberResponseList.to(teamMemberResponseList);
}

/**
* List project members. For Crowdin only
* @param projectId project identifier
* @param params query parameters (search, role, languageId, orderBy, limit, offset)
* @return list of team members
* @see <ul>
* <li><a href="https://developer.crowdin.com/api/v2/#operation/api.projects.members.getMany" target="_blank"><b>API Documentation</b></a></li>
* </ul>
*/
public ResponseList<TeamMember> listProjectMembers(Long projectId, ListProjectMembersParams params) throws HttpException, HttpBadRequestException {
ListProjectMembersParams query = Optional.ofNullable(params).orElse(new ListProjectMembersParams());
Map<String, Optional<Object>> queryParams = HttpRequestConfig.buildUrlParams(
"search", Optional.ofNullable(query.getSearch()),
"role", Optional.ofNullable(query.getRole()),
"languageId", Optional.ofNullable(query.getLanguageId()),
"orderBy", Optional.ofNullable(OrderByField.generateSortParam(query.getOrderBy())),
"limit", Optional.ofNullable(query.getLimit()),
"offset", Optional.ofNullable(query.getOffset())
);
TeamMemberResponseList teamMemberResponseList = this.httpClient.get(this.url + "/projects/" + projectId + "/members", new HttpRequestConfig(queryParams), TeamMemberResponseList.class);
return TeamMemberResponseList.to(teamMemberResponseList);
}

/**
* @param projectId project identifier
* @param memberId member identifier
Expand Down
Loading
Loading