Skip to content

Commit f493962

Browse files
committed
SDK-2756: Add support for requesting, and fetching Share Code resources + tasks
1 parent 5e5b5b4 commit f493962

File tree

11 files changed

+237
-2
lines changed

11 files changed

+237
-2
lines changed

yoti-sdk-api/src/main/java/com/yoti/api/client/docs/DocScanConstants.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ private DocScanConstants() { }
3636
public static final String SUPPLEMENTARY_DOCUMENT_TEXT_DATA_CHECK = "SUPPLEMENTARY_DOCUMENT_TEXT_DATA_CHECK";
3737
public static final String SUPPLEMENTARY_DOCUMENT_TEXT_DATA_EXTRACTION = "SUPPLEMENTARY_DOCUMENT_TEXT_DATA_EXTRACTION";
3838

39+
public static final String VERIFY_SHARE_CODE_TASK = "VERIFY_SHARE_CODE_TASK";
40+
3941
public static final String LIVENESS = "LIVENESS";
4042
public static final String ZOOM = "ZOOM";
4143
public static final String STATIC = "STATIC";
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package com.yoti.api.client.docs.session.create;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
5+
public class RequiredShareCodePayload {
6+
7+
@JsonProperty("issuer")
8+
private final String issuer;
9+
10+
@JsonProperty("scheme")
11+
private final String scheme;
12+
13+
public RequiredShareCodePayload(String issuer, String scheme) {
14+
this.issuer = issuer;
15+
this.scheme = scheme;
16+
}
17+
18+
public static RequiredShareCodePayload.Builder builder() {
19+
return new RequiredShareCodePayload.Builder();
20+
}
21+
22+
public static final class Builder {
23+
24+
private String issuer;
25+
private String scheme;
26+
27+
/**
28+
* Sets the issuer of the required Share Code
29+
*
30+
* @param issuer the issuer
31+
* @return the builder
32+
*/
33+
public Builder withIssuer(String issuer) {
34+
this.issuer = issuer;
35+
return this;
36+
}
37+
38+
/**
39+
* Sets the scheme of the required Share Code
40+
*
41+
* @param scheme the scheme
42+
* @return
43+
*/
44+
public Builder withScheme(String scheme) {
45+
this.scheme = scheme;
46+
return this;
47+
}
48+
49+
/**
50+
* Builds an {@link RequiredShareCodePayload} using the supplied properties in the builder.
51+
*
52+
* @return the built {@link RequiredShareCodePayload}
53+
*/
54+
public RequiredShareCodePayload build() {
55+
return new RequiredShareCodePayload(issuer, scheme);
56+
}
57+
58+
}
59+
60+
}

yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/create/SessionSpec.java

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,9 @@ public class SessionSpec {
6969
@JsonProperty("create_identity_profile_preview")
7070
private final Boolean createIdentityProfilePreview;
7171

72+
@JsonProperty("required_share_codes")
73+
private final List<RequiredShareCodePayload> requiredShareCodes;
74+
7275
SessionSpec(Integer clientSessionTokenTtl,
7376
Integer resourcesTtl,
7477
ImportTokenPayload importToken,
@@ -85,7 +88,8 @@ public class SessionSpec {
8588
SubjectPayload subject,
8689
ResourceCreationContainer resources,
8790
Boolean createIdentityProfilePreview,
88-
AdvancedIdentityProfileRequirementsPayload advancedIdentityProfileRequirements) {
91+
AdvancedIdentityProfileRequirementsPayload advancedIdentityProfileRequirements,
92+
List<RequiredShareCodePayload> requiredShareCodes) {
8993
this.clientSessionTokenTtl = clientSessionTokenTtl;
9094
this.resourcesTtl = resourcesTtl;
9195
this.importToken = importToken;
@@ -103,6 +107,7 @@ public class SessionSpec {
103107
this.resources = resources;
104108
this.createIdentityProfilePreview = createIdentityProfilePreview;
105109
this.advancedIdentityProfileRequirements = advancedIdentityProfileRequirements;
110+
this.requiredShareCodes = requiredShareCodes;
106111
}
107112

108113
public static Builder builder() {
@@ -263,6 +268,15 @@ public AdvancedIdentityProfileRequirementsPayload getAdvancedIdentityProfileRequ
263268
return advancedIdentityProfileRequirements;
264269
}
265270

271+
/**
272+
* The list of Share Codes being requested.
273+
*
274+
* @return the requested Share Codes
275+
*/
276+
public List<RequiredShareCodePayload> getRequiredShareCodes() {
277+
return requiredShareCodes;
278+
}
279+
266280
public static class Builder {
267281

268282
private final List<RequestedCheck<?>> requestedChecks;
@@ -282,11 +296,13 @@ public static class Builder {
282296
private SubjectPayload subject;
283297
private ResourceCreationContainer resources;
284298
private Boolean createIdentityProfilePreview;
299+
private List<RequiredShareCodePayload> requiredShareCodes;
285300

286301
private Builder() {
287302
requestedChecks = new ArrayList<>();
288303
requestedTasks = new ArrayList<>();
289304
requiredDocuments = new ArrayList<>();
305+
requiredShareCodes = new ArrayList<>();
290306
}
291307

292308
/**
@@ -477,6 +493,17 @@ public Builder withAdvancedIdentityProfileRequirements(AdvancedIdentityProfileRe
477493
return this;
478494
}
479495

496+
/**
497+
* Adds a required Share Code to the list
498+
*
499+
* @param requiredShareCode the required share code
500+
* @return the builder
501+
*/
502+
public Builder withRequiredShareCode(RequiredShareCodePayload requiredShareCode) {
503+
this.requiredShareCodes.add(requiredShareCode);
504+
return this;
505+
}
506+
480507
/**
481508
* Builds the {@link SessionSpec} based on the values supplied to the builder
482509
*
@@ -500,7 +527,8 @@ public SessionSpec build() {
500527
subject,
501528
resources,
502529
createIdentityProfilePreview,
503-
advancedIdentityProfileRequirementsPayload);
530+
advancedIdentityProfileRequirementsPayload,
531+
requiredShareCodes);
504532
}
505533
}
506534

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.yoti.api.client.docs.session.retrieve;
2+
3+
import com.yoti.api.client.Media;
4+
5+
import com.fasterxml.jackson.annotation.JsonProperty;
6+
7+
public class IdPhotoResponse {
8+
9+
@JsonProperty("media")
10+
private Media media;
11+
12+
public Media getMedia() {
13+
return media;
14+
}
15+
16+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.yoti.api.client.docs.session.retrieve;
2+
3+
import com.yoti.api.client.Media;
4+
5+
import com.fasterxml.jackson.annotation.JsonProperty;
6+
7+
public class LookupProfileResponse {
8+
9+
@JsonProperty("media")
10+
private Media media;
11+
12+
public Media getMedia() {
13+
return media;
14+
}
15+
16+
}

yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/retrieve/ResourceContainer.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ public class ResourceContainer {
2323
@JsonProperty("applicant_profiles")
2424
private List<ApplicantProfileResourceResponse> applicantProfiles;
2525

26+
@JsonProperty("share_codes")
27+
private List<ShareCodeResourceResponse> shareCodes;
28+
2629
/**
2730
* Returns ID documents that were uploaded by the user
2831
*
@@ -97,6 +100,15 @@ public List<ApplicantProfileResourceResponse> getApplicantProfiles() {
97100
return applicantProfiles;
98101
}
99102

103+
/**
104+
* Returns ShareCode resources uploaded by the user
105+
*
106+
* @return the list of Share Code resources
107+
*/
108+
public List<ShareCodeResourceResponse> getShareCodes() {
109+
return shareCodes;
110+
}
111+
100112
ResourceContainer filterForCheck(CheckResponse checkResponse) {
101113
ResourceContainer newResourceContainer = new ResourceContainer();
102114
newResourceContainer.idDocuments = filterResources(this.idDocuments, checkResponse.getResourcesUsed());
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.yoti.api.client.docs.session.retrieve;
2+
3+
import com.yoti.api.client.Media;
4+
5+
import com.fasterxml.jackson.annotation.JsonProperty;
6+
7+
public class ReturnedProfileResponse {
8+
9+
@JsonProperty("media")
10+
private Media media;
11+
12+
public Media getMedia() {
13+
return media;
14+
}
15+
16+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.yoti.api.client.docs.session.retrieve;
2+
3+
import java.util.List;
4+
5+
import com.fasterxml.jackson.annotation.JsonProperty;
6+
7+
public class ShareCodeResourceResponse extends ResourceResponse {
8+
9+
@JsonProperty("lookup_profile")
10+
private LookupProfileResponse lookupProfile;
11+
12+
@JsonProperty("returned_profile")
13+
private ReturnedProfileResponse returnedProfile;
14+
15+
@JsonProperty("id_photo")
16+
private IdPhotoResponse idPhoto;
17+
18+
@JsonProperty("file")
19+
private FileResponse file;
20+
21+
public LookupProfileResponse getLookupProfile() {
22+
return lookupProfile;
23+
}
24+
25+
public ReturnedProfileResponse getReturnedProfile() {
26+
return returnedProfile;
27+
}
28+
29+
public IdPhotoResponse getIdPhoto() {
30+
return idPhoto;
31+
}
32+
33+
public FileResponse getFile() {
34+
return file;
35+
}
36+
37+
public List<ShareCodeTaskResponse> getVerifyShareCodeTasks() {
38+
return filterTasksByType(ShareCodeTaskResponse.class);
39+
}
40+
41+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package com.yoti.api.client.docs.session.retrieve;
2+
3+
public class ShareCodeTaskResponse extends TaskResponse {
4+
}

yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/retrieve/TaskResponse.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
@JsonSubTypes({
1414
@JsonSubTypes.Type(value = IdDocTextExtractionTaskResponse.class, name = DocScanConstants.ID_DOCUMENT_TEXT_DATA_EXTRACTION),
1515
@JsonSubTypes.Type(value = SupplementaryDocumentTextExtractionTaskResponse.class, name = DocScanConstants.SUPPLEMENTARY_DOCUMENT_TEXT_DATA_EXTRACTION),
16+
@JsonSubTypes.Type(value = ShareCodeTaskResponse.class, name = DocScanConstants.VERIFY_SHARE_CODE_TASK)
1617
})
1718
public class TaskResponse {
1819

0 commit comments

Comments
 (0)