Skip to content

Commit 9425244

Browse files
authored
Implemented new code examples for Admin SDK (#62)
* added new admin code examples * upgraded the admin library dependencies * changed return type in getPermissionProfiles method * removed redundant Session property * added a check if account has been deleted
1 parent 0159714 commit 9425244

15 files changed

Lines changed: 502 additions & 12 deletions

File tree

.factorypath

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot-starter-web/2.5.12/spring-boot-starter-web-2.5.12.jar" enabled="true" runInBatchMode="false"/>
2323
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot-starter-json/2.5.12/spring-boot-starter-json-2.5.12.jar" enabled="true" runInBatchMode="false"/>
2424
<factorypathentry kind="VARJAR" id="M2_REPO/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.12.6/jackson-datatype-jdk8-2.12.6.jar" enabled="true" runInBatchMode="false"/>
25-
<factorypathentry kind="VARJAR" id="M2_REPO/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.12.6/jackson-datatype-jsr310-2.12.6.jar" enabled="true" runInBatchMode="false"/>
2625
<factorypathentry kind="VARJAR" id="M2_REPO/com/fasterxml/jackson/module/jackson-module-parameter-names/2.12.6/jackson-module-parameter-names-2.12.6.jar" enabled="true" runInBatchMode="false"/>
2726
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot-starter-tomcat/2.5.12/spring-boot-starter-tomcat-2.5.12.jar" enabled="true" runInBatchMode="false"/>
2827
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/tomcat/embed/tomcat-embed-websocket/9.0.60/tomcat-embed-websocket-9.0.60.jar" enabled="true" runInBatchMode="false"/>
@@ -50,6 +49,7 @@
5049
<factorypathentry kind="VARJAR" id="M2_REPO/com/fasterxml/jackson/datatype/jackson-datatype-joda/2.12.6/jackson-datatype-joda-2.12.6.jar" enabled="true" runInBatchMode="false"/>
5150
<factorypathentry kind="VARJAR" id="M2_REPO/com/fasterxml/jackson/core/jackson-core/2.12.6/jackson-core-2.12.6.jar" enabled="true" runInBatchMode="false"/>
5251
<factorypathentry kind="VARJAR" id="M2_REPO/joda-time/joda-time/2.10.8/joda-time-2.10.8.jar" enabled="true" runInBatchMode="false"/>
52+
<factorypathentry kind="VARJAR" id="M2_REPO/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.12.6/jackson-datatype-jsr310-2.12.6.jar" enabled="true" runInBatchMode="false"/>
5353
<factorypathentry kind="VARJAR" id="M2_REPO/javax/servlet/jstl/1.2/jstl-1.2.jar" enabled="true" runInBatchMode="false"/>
5454
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/tomcat/embed/tomcat-embed-jasper/9.0.60/tomcat-embed-jasper-9.0.60.jar" enabled="true" runInBatchMode="false"/>
5555
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/tomcat/embed/tomcat-embed-core/9.0.60/tomcat-embed-core-9.0.60.jar" enabled="true" runInBatchMode="false"/>
@@ -89,6 +89,6 @@
8989
<factorypathentry kind="VARJAR" id="M2_REPO/com/docusign/docusign-rooms-java/1.1.0/docusign-rooms-java-1.1.0.jar" enabled="true" runInBatchMode="false"/>
9090
<factorypathentry kind="VARJAR" id="M2_REPO/com/docusign/docusign-click-java/1.0.0/docusign-click-java-1.0.0.jar" enabled="true" runInBatchMode="false"/>
9191
<factorypathentry kind="VARJAR" id="M2_REPO/com/docusign/docusign-monitor-java/1.1.0/docusign-monitor-java-1.1.0.jar" enabled="true" runInBatchMode="false"/>
92-
<factorypathentry kind="VARJAR" id="M2_REPO/com/docusign/docusign-admin-java/1.0.0-BETA/docusign-admin-java-1.0.0-BETA.jar" enabled="true" runInBatchMode="false"/>
92+
<factorypathentry kind="VARJAR" id="M2_REPO/com/docusign/docusign-admin-java/1.1.0/docusign-admin-java-1.1.0.jar" enabled="true" runInBatchMode="false"/>
9393
<factorypathentry kind="VARJAR" id="M2_REPO/org/springframework/boot/spring-boot-autoconfigure/2.4.4/spring-boot-autoconfigure-2.4.4.jar" enabled="true" runInBatchMode="false"/>
9494
</factorypath>

src/main/java/com/docusign/common/WorkArguments.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ public class WorkArguments {
6363
private UUID clmProductId;
6464
private String eSignProfileId;
6565
private UUID eSignProductId;
66+
private String PermissionProfileId;
67+
private UUID ProductId;
6668
private UUID dsGroupId;
6769
private UUID userId;
6870
private String resumeDate;

src/main/java/com/docusign/controller/admin/examples/A002CreateActiveCLMESignUser.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,8 @@ protected Object doWork(WorkArguments args, ModelMap model, HttpServletResponse
115115
organizationId,
116116
accountId);
117117

118+
this.session.setEmailAddress(result.getEmail());
119+
118120
// Process results
119121
DoneExample.createDefault(title)
120122
.withMessage("Results from MultiProductUserManagement:addOrUpdateUser method:")
Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
package com.docusign.controller.admin.examples;
2+
3+
import com.docusign.DSConfiguration;
4+
import com.docusign.admin.api.ProductPermissionProfilesApi;
5+
import com.docusign.admin.api.UsersApi;
6+
import com.docusign.admin.model.*;
7+
import com.docusign.common.WorkArguments;
8+
import com.docusign.controller.admin.services.RetrieveDocuSignProfileByEmailAddress;
9+
import com.docusign.controller.admin.services.UpdateUserProductPermissionProfileByEmail;
10+
import com.docusign.core.model.DoneExample;
11+
import com.docusign.core.model.Session;
12+
import com.docusign.core.model.User;
13+
import com.fasterxml.jackson.core.JsonProcessingException;
14+
import com.fasterxml.jackson.databind.ObjectMapper;
15+
import com.fasterxml.jackson.databind.ObjectWriter;
16+
import com.fasterxml.jackson.datatype.joda.JodaModule;
17+
import org.springframework.beans.factory.annotation.Autowired;
18+
import org.springframework.http.MediaType;
19+
import org.springframework.stereotype.Controller;
20+
import org.springframework.ui.ModelMap;
21+
import org.springframework.web.bind.annotation.RequestMapping;
22+
import org.springframework.web.bind.annotation.RequestMethod;
23+
import org.springframework.web.bind.annotation.RequestParam;
24+
import org.springframework.web.bind.annotation.ResponseBody;
25+
26+
import javax.servlet.http.HttpServletResponse;
27+
import java.util.Hashtable;
28+
import java.util.List;
29+
import java.util.UUID;
30+
31+
/**
32+
* This example demonstrates how to update user product permission profiles using an email address.
33+
*/
34+
@Controller
35+
@RequestMapping("/a008")
36+
public class A008UpdateUserProductPermissionProfile extends AbstractAdminController {
37+
38+
private final User user;
39+
private final Hashtable<UUID, String> products = new Hashtable<>();
40+
private ProductPermissionProfilesResponse productPermissionProfiles;
41+
42+
@Autowired
43+
public A008UpdateUserProductPermissionProfile(DSConfiguration config, Session session, User user) {
44+
super(config, "a008", "Update user product permission profiles using an email address");
45+
this.user = user;
46+
}
47+
48+
@Override
49+
protected void onInitModel(WorkArguments args, ModelMap model) throws Exception {
50+
super.onInitModel(args, model);
51+
UUID organizationId = this.getOrganizationId(this.user.getAccessToken(), this.session.getBasePath());
52+
UUID existingAccountId = this.getExistingAccountId(user.getAccessToken(), session.getBasePath(), organizationId);
53+
String emailAddress = this.session.getEmailAddress();
54+
ProductPermissionProfileResponse permissionProfiles = null;
55+
UUID clmProductId = null;
56+
UUID eSignProductId = null;
57+
58+
if (emailAddress != null) {
59+
try {
60+
UsersApi usersApi = createUsersApi(this.user.getAccessToken(), this.session.getBasePath());
61+
RetrieveDocuSignProfileByEmailAddress.getDocuSignProfileByEmailAddress(usersApi, organizationId, emailAddress);
62+
63+
ProductPermissionProfilesApi productPermissionProfilesApi = this.createProductPermissionProfilesApi(
64+
user.getAccessToken(),
65+
session.getBasePath()
66+
);
67+
productPermissionProfiles = productPermissionProfilesApi.getProductPermissionProfiles(organizationId, existingAccountId);
68+
69+
for (ProductPermissionProfileResponse profileResponse : productPermissionProfiles.getProductPermissionProfiles()) {
70+
if (profileResponse.getProductName().equals("CLM")) {
71+
clmProductId = profileResponse.getProductId();
72+
} else {
73+
permissionProfiles = profileResponse;
74+
eSignProductId = profileResponse.getProductId();
75+
}
76+
}
77+
78+
products.put(eSignProductId, "eSignature");
79+
products.put(clmProductId, "CLM");
80+
81+
model.addAttribute("listPermissionProfiles", permissionProfiles);
82+
model.addAttribute("listProducts", products);
83+
model.addAttribute("emailAddress", emailAddress);
84+
} catch(Exception e) {
85+
model.addAttribute("emailAddress", null);
86+
}
87+
} else {
88+
model.addAttribute("emailAddress", null);
89+
}
90+
}
91+
92+
@RequestMapping(value = "/getPermissionProfiles", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
93+
public @ResponseBody
94+
List<PermissionProfileResponse21> getPermissionProfiles(@RequestParam(value = "productId") UUID productId) {
95+
List<PermissionProfileResponse21> permissionProfiles = null;
96+
for (ProductPermissionProfileResponse profileResponse : productPermissionProfiles.getProductPermissionProfiles()) {
97+
if (profileResponse.getProductId().equals(productId)) {
98+
permissionProfiles = profileResponse.getPermissionProfiles();
99+
}
100+
}
101+
102+
return permissionProfiles;
103+
}
104+
105+
@Override
106+
protected Object doWork(WorkArguments args, ModelMap model, HttpServletResponse response) throws Exception {
107+
UUID organizationId = this.getOrganizationId(this.user.getAccessToken(), this.session.getBasePath());
108+
UUID existingAccountId = this.getExistingAccountId(
109+
this.user.getAccessToken(),
110+
this.session.getBasePath(),
111+
organizationId
112+
);
113+
114+
ProductPermissionProfilesApi productPermissionProfilesApi = createProductPermissionProfilesApi(
115+
this.user.getAccessToken(),
116+
this.session.getBasePath());
117+
118+
UserProductPermissionProfilesResponse productPermissionProfile = UpdateUserProductPermissionProfileByEmail
119+
.updateUserProductPermissionProfile(
120+
productPermissionProfilesApi,
121+
args.getPermissionProfileId(),
122+
args.getProductId(),
123+
this.session.getEmailAddress(),
124+
organizationId,
125+
existingAccountId
126+
);
127+
128+
DoneExample.createDefault(title)
129+
.withMessage("Results from MultiProductUserManagement:addUserProductPermissionProfilesByEmail method:")
130+
.withJsonObject(productPermissionProfile)
131+
.addToModel(model);
132+
133+
return DONE_EXAMPLE_PAGE;
134+
}
135+
136+
}
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
package com.docusign.controller.admin.examples;
2+
3+
import com.docusign.DSConfiguration;
4+
import com.docusign.admin.api.ProductPermissionProfilesApi;
5+
import com.docusign.admin.api.UsersApi;
6+
import com.docusign.admin.model.PermissionProfileResponse21;
7+
import com.docusign.admin.model.ProductPermissionProfileResponse;
8+
import com.docusign.admin.model.RemoveUserProductsResponse;
9+
import com.docusign.admin.model.UserProductPermissionProfilesResponse;
10+
import com.docusign.common.WorkArguments;
11+
import com.docusign.controller.admin.services.DeleteUserProductPermissionProfileById;
12+
import com.docusign.controller.admin.services.RetrieveDocuSignProfileByEmailAddress;
13+
import com.docusign.core.model.DoneExample;
14+
import com.docusign.core.model.Session;
15+
import com.docusign.core.model.User;
16+
import org.springframework.beans.factory.annotation.Autowired;
17+
import org.springframework.stereotype.Controller;
18+
import org.springframework.ui.ModelMap;
19+
import org.springframework.web.bind.annotation.RequestMapping;
20+
21+
import javax.servlet.http.HttpServletResponse;
22+
import java.util.Hashtable;
23+
import java.util.List;
24+
import java.util.UUID;
25+
import java.util.stream.Collectors;
26+
27+
/**
28+
* This example demonstrates how to delete user product permission profiles using an email address.
29+
*/
30+
@Controller
31+
@RequestMapping("/a009")
32+
public class A009DeleteUserProductPermissionProfile extends AbstractAdminController {
33+
34+
private final User user;
35+
private final Hashtable<UUID, String> products = new Hashtable<>();
36+
public static UUID clmProductId = UUID.fromString("37f013eb-7012-4588-8028-357b39fdbd00");
37+
public static UUID eSignatureProductId = UUID.fromString("f6406c68-225c-4e9b-9894-64152a26fa83");
38+
private final String CLM_PROFILES_NOT_FOUND = "No CLM permission profiles are connected to this user";
39+
private final String ESIGN_PROFILES_NOT_FOUND = "No eSignature permission profiles are connected to this user";
40+
41+
@Autowired
42+
public A009DeleteUserProductPermissionProfile(DSConfiguration config, Session session, User user) {
43+
super(config, "a009", "Delete user product permission profiles using an email address");
44+
this.user = user;
45+
}
46+
47+
@Override
48+
protected void onInitModel(WorkArguments args, ModelMap model) throws Exception {
49+
super.onInitModel(args, model);
50+
UUID organizationId = this.getOrganizationId(this.user.getAccessToken(), this.session.getBasePath());
51+
UUID existingAccountId = this.getExistingAccountId(user.getAccessToken(), session.getBasePath(), organizationId);
52+
String emailAddress = this.session.getEmailAddress();
53+
List<String> clmProfiles = null;
54+
List<String> eSignProfiles = null;
55+
56+
if (emailAddress != null) {
57+
try {
58+
UsersApi usersApi = createUsersApi(this.user.getAccessToken(), this.session.getBasePath());
59+
RetrieveDocuSignProfileByEmailAddress.getDocuSignProfileByEmailAddress(usersApi, organizationId, emailAddress);
60+
61+
ProductPermissionProfilesApi productPermissionProfilesApi = this.createProductPermissionProfilesApi(
62+
user.getAccessToken(),
63+
session.getBasePath()
64+
);
65+
ProductPermissionProfilesApi.GetUserProductPermissionProfilesByEmailOptions userProductPermissionProfilesByEmailOptions =
66+
productPermissionProfilesApi.new GetUserProductPermissionProfilesByEmailOptions();
67+
userProductPermissionProfilesByEmailOptions.setEmail(emailAddress);
68+
UserProductPermissionProfilesResponse userProductPermissionProfilesByEmail = productPermissionProfilesApi
69+
.getUserProductPermissionProfilesByEmail(organizationId, existingAccountId, userProductPermissionProfilesByEmailOptions);
70+
71+
for (ProductPermissionProfileResponse profileResponse : userProductPermissionProfilesByEmail.getProductPermissionProfiles()) {
72+
if (profileResponse.getProductName().equals("CLM")) {
73+
clmProfiles = profileResponse
74+
.getPermissionProfiles()
75+
.stream()
76+
.map(PermissionProfileResponse21::getPermissionProfileName)
77+
.collect(Collectors.toList());
78+
} else {
79+
eSignProfiles = profileResponse
80+
.getPermissionProfiles()
81+
.stream()
82+
.map(PermissionProfileResponse21::getPermissionProfileName)
83+
.collect(Collectors.toList());
84+
}
85+
}
86+
87+
String clmProfilesFormatted = clmProfiles != null
88+
? String.join(",", clmProfiles)
89+
: CLM_PROFILES_NOT_FOUND;
90+
91+
String eSignProfilesFormatted = eSignProfiles != null
92+
? String.join(",", eSignProfiles)
93+
: ESIGN_PROFILES_NOT_FOUND;
94+
95+
products.put(eSignatureProductId, String.format("eSignature - %s", eSignProfilesFormatted));
96+
products.put(clmProductId, String.format("CLM - %s", clmProfilesFormatted));
97+
98+
model.addAttribute("listProducts", products);
99+
100+
model.addAttribute("emailAddress", emailAddress);
101+
} catch(Exception e) {
102+
model.addAttribute("emailAddress", null);
103+
}
104+
} else {
105+
model.addAttribute("emailAddress", null);
106+
}
107+
}
108+
109+
@Override
110+
protected Object doWork(WorkArguments args, ModelMap model, HttpServletResponse response) throws Exception {
111+
UUID organizationId = this.getOrganizationId(this.user.getAccessToken(), this.session.getBasePath());
112+
UUID existingAccountId = this.getExistingAccountId(this.user.getAccessToken(), this.session.getBasePath(), organizationId);
113+
114+
ProductPermissionProfilesApi productPermissionProfilesApi = createProductPermissionProfilesApi(
115+
this.user.getAccessToken(),
116+
this.session.getBasePath());
117+
118+
RemoveUserProductsResponse removeUserProductsRepsonse = DeleteUserProductPermissionProfileById.deleteUserProductPermissionProfile(
119+
productPermissionProfilesApi,
120+
args.getProductId(),
121+
this.session.getEmailAddress(),
122+
organizationId,
123+
existingAccountId);
124+
125+
DoneExample.createDefault(title)
126+
.withMessage("Results from MultiProductUserManagement:removeUserProductPermission method:")
127+
.withJsonObject(removeUserProductsRepsonse)
128+
.addToModel(model);
129+
130+
return DONE_EXAMPLE_PAGE;
131+
}
132+
133+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.docusign.controller.admin.services;
2+
3+
import com.docusign.admin.api.ProductPermissionProfilesApi;
4+
import com.docusign.admin.model.RemoveUserProductsResponse;
5+
import com.docusign.admin.model.UserProductProfileDeleteRequest;
6+
7+
import java.util.Collections;
8+
import java.util.UUID;
9+
10+
public class DeleteUserProductPermissionProfileById {
11+
public static RemoveUserProductsResponse deleteUserProductPermissionProfile(
12+
ProductPermissionProfilesApi productPermissionProfilesApi,
13+
UUID productId,
14+
String emailAddress,
15+
UUID organizationId,
16+
UUID accountId
17+
) throws Exception {
18+
var userProductProfileDeleteRequest = new UserProductProfileDeleteRequest();
19+
userProductProfileDeleteRequest.setProductIds(Collections.singletonList(productId));
20+
userProductProfileDeleteRequest.setUserEmail(emailAddress);
21+
22+
return productPermissionProfilesApi.removeUserProductPermission(
23+
organizationId,
24+
accountId,
25+
userProductProfileDeleteRequest);
26+
}
27+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.docusign.controller.admin.services;
2+
3+
import com.docusign.admin.api.ProductPermissionProfilesApi;
4+
import com.docusign.admin.model.ProductPermissionProfileRequest;
5+
import com.docusign.admin.model.UserProductPermissionProfilesRequest;
6+
import com.docusign.admin.model.UserProductPermissionProfilesResponse;
7+
8+
import java.util.UUID;
9+
10+
public class UpdateUserProductPermissionProfileByEmail {
11+
public static UserProductPermissionProfilesResponse updateUserProductPermissionProfile(
12+
ProductPermissionProfilesApi productPermissionProfilesApi,
13+
String permissionProfileId,
14+
UUID productId,
15+
String emailAddress,
16+
UUID organizationId,
17+
UUID accountId
18+
) throws Exception {
19+
var productPermissionProfileRequest = new ProductPermissionProfileRequest();
20+
productPermissionProfileRequest.setPermissionProfileId(permissionProfileId);
21+
productPermissionProfileRequest.setProductId(productId);
22+
23+
var userProductPermissionProfilesRequest = new UserProductPermissionProfilesRequest();
24+
userProductPermissionProfilesRequest.email(emailAddress);
25+
userProductPermissionProfilesRequest.addProductPermissionProfilesItem(productPermissionProfileRequest);
26+
27+
return productPermissionProfilesApi.addUserProductPermissionProfilesByEmail(
28+
organizationId,
29+
accountId,
30+
userProductPermissionProfilesRequest);
31+
}
32+
}

src/main/java/com/docusign/core/model/Session.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ public class Session implements Serializable {
3434
private String clickwrapVersionNumber;
3535
private String exportId;
3636
private String importId;
37+
private String emailAddress;
3738
private UUID orgId;
3839
public UUID bulkListId;
3940
}

0 commit comments

Comments
 (0)