diff --git a/examples/doc-scan/src/main/resources/templates/success.html b/examples/doc-scan/src/main/resources/templates/success.html index 26b11171..1eab041d 100644 --- a/examples/doc-scan/src/main/resources/templates/success.html +++ b/examples/doc-scan/src/main/resources/templates/success.html @@ -955,6 +955,61 @@

Identity Profile

+ +
+
+

+ Advanced Identity Profile + + +

+
+
+ +
+
+ + Subject ID: + +
+
+ + +
+ Generated Profile Media: + +
+ +
+ +
+

+ +

+
+
+
+
+ + Type:
+ Objective:
+ Label:
+ Requirements Met:
+ Requirements Not Met Info:
+
+
+
+
+
+
+
diff --git a/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/create/SessionSpec.java b/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/create/SessionSpec.java index e15317a6..b7a0a763 100644 --- a/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/create/SessionSpec.java +++ b/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/create/SessionSpec.java @@ -7,6 +7,7 @@ import com.yoti.api.client.docs.session.create.check.RequestedCheck; import com.yoti.api.client.docs.session.create.filters.RequiredDocument; +import com.yoti.api.client.docs.session.create.identityprofile.advanced.AdvancedIdentityProfileRequirementsPayload; import com.yoti.api.client.docs.session.create.resources.ResourceCreationContainer; import com.yoti.api.client.docs.session.create.task.RequestedTask; @@ -56,6 +57,9 @@ public class SessionSpec { @JsonProperty(Property.IDENTITY_PROFILE_REQUIREMENTS) private final Map identityProfile; + @JsonProperty(Property.ADVANCED_IDENTITY_PROFILE_REQUIREMENTS) + private final AdvancedIdentityProfileRequirementsPayload advancedIdentityProfileRequirements; + @JsonProperty(Property.SUBJECT) private final Map subject; @@ -80,7 +84,8 @@ public class SessionSpec { Map identityProfile, Map subject, ResourceCreationContainer resources, - Boolean createIdentityProfilePreview) { + Boolean createIdentityProfilePreview, + AdvancedIdentityProfileRequirementsPayload advancedIdentityProfileRequirements) { this.clientSessionTokenTtl = clientSessionTokenTtl; this.resourcesTtl = resourcesTtl; this.importToken = importToken; @@ -97,6 +102,7 @@ public class SessionSpec { this.subject = subject; this.resources = resources; this.createIdentityProfilePreview = createIdentityProfilePreview; + this.advancedIdentityProfileRequirements = advancedIdentityProfileRequirements; } public static Builder builder() { @@ -248,6 +254,15 @@ public Boolean getCreateIdentityProfilePreview() { return createIdentityProfilePreview; } + /** + * The Advanced Identity Profile that is being requested. + * + * @return the advanced identity profile payload + */ + public AdvancedIdentityProfileRequirementsPayload getAdvancedIdentityProfileRequirements() { + return advancedIdentityProfileRequirements; + } + public static class Builder { private final List> requestedChecks; @@ -263,6 +278,7 @@ public static class Builder { private IbvOptions ibvOptions; private ZonedDateTime sessionDeadline; private Map identityProfile; + private AdvancedIdentityProfileRequirementsPayload advancedIdentityProfileRequirementsPayload; private Map subject; private ResourceCreationContainer resources; private Boolean createIdentityProfilePreview; @@ -450,6 +466,17 @@ public Builder withCreateIdentityProfilePreview(boolean createIdentityProfilePre return this; } + /** + * Sets the advanced identity profile requirements to be requested + * + * @param advancedIdentityProfileRequirements the advanced identity profile requirements + * @return the builder + */ + public Builder withAdvancedIdentityProfileRequirements(AdvancedIdentityProfileRequirementsPayload advancedIdentityProfileRequirements) { + this.advancedIdentityProfileRequirementsPayload = advancedIdentityProfileRequirements; + return this; + } + /** * Builds the {@link SessionSpec} based on the values supplied to the builder * @@ -472,7 +499,8 @@ public SessionSpec build() { identityProfile, subject, resources, - createIdentityProfilePreview); + createIdentityProfilePreview, + advancedIdentityProfileRequirementsPayload); } } @@ -490,6 +518,7 @@ private static final class Property { private static final String BLOCK_BIOMETRIC_CONSENT = "block_biometric_consent"; private static final String IBV_OPTIONS = "ibv_options"; private static final String IDENTITY_PROFILE_REQUIREMENTS = "identity_profile_requirements"; + private static final String ADVANCED_IDENTITY_PROFILE_REQUIREMENTS = "advanced_identity_profile_requirements"; private static final String SUBJECT = "subject"; private static final String RESOURCES = "resources"; private static final String CREATE_IDENTITY_PROFILE_PREVIEW = "create_identity_profile_preview"; diff --git a/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/create/identityprofile/advanced/AdvancedIdentityProfilePayload.java b/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/create/identityprofile/advanced/AdvancedIdentityProfilePayload.java new file mode 100644 index 00000000..cad49ebf --- /dev/null +++ b/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/create/identityprofile/advanced/AdvancedIdentityProfilePayload.java @@ -0,0 +1,80 @@ +package com.yoti.api.client.docs.session.create.identityprofile.advanced; + +import java.util.ArrayList; +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class AdvancedIdentityProfilePayload { + + @JsonProperty("trust_framework") + private final String trustFramework; + + @JsonProperty("schemes") + private final List schemes; + + private AdvancedIdentityProfilePayload(String trustFramework, List schemes) { + this.trustFramework = trustFramework; + this.schemes = schemes; + } + + public static AdvancedIdentityProfilePayload.Builder builder() { + return new AdvancedIdentityProfilePayload.Builder(); + } + + /** + * Returns the trust framework of the profile being requested + * + * @return the trust framework + */ + public String getTrustFramework() { + return trustFramework; + } + + /** + * Returns the schemes being requested under the trust framework + * + * @return the schemes + */ + public List getSchemes() { + return schemes; + } + + public static final class Builder { + + private String trustFramework; + private List schemes; + + private Builder() { + schemes = new ArrayList<>(); + } + + /** + * Sets the trust framework of the requested profile + * + * @param trustFramework the trust framework + * @return the builder + */ + public Builder withTrustFramework(String trustFramework) { + this.trustFramework = trustFramework; + return this; + } + + /** + * Adds a scheme to be requested under the trust framework + * + * @param scheme the scheme + * @return the builder + */ + public Builder withScheme(AdvancedIdentityProfileSchemePayload scheme) { + this.schemes.add(scheme); + return this; + } + + public AdvancedIdentityProfilePayload build() { + return new AdvancedIdentityProfilePayload(trustFramework, schemes); + } + + } + +} diff --git a/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/create/identityprofile/advanced/AdvancedIdentityProfileRequirementsPayload.java b/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/create/identityprofile/advanced/AdvancedIdentityProfileRequirementsPayload.java new file mode 100644 index 00000000..b74f820f --- /dev/null +++ b/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/create/identityprofile/advanced/AdvancedIdentityProfileRequirementsPayload.java @@ -0,0 +1,49 @@ +package com.yoti.api.client.docs.session.create.identityprofile.advanced; + +import java.util.ArrayList; +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class AdvancedIdentityProfileRequirementsPayload { + + @JsonProperty("profiles") + private final List profiles; + + private AdvancedIdentityProfileRequirementsPayload(List profiles) { + this.profiles = profiles; + } + + public static AdvancedIdentityProfileRequirementsPayload.Builder builder() { + return new AdvancedIdentityProfileRequirementsPayload.Builder(); + } + + /** + * Returns the list of profiles that have been requested as part of the Advanced Identity Profile + * + * @return the list of profiles + */ + public List getProfiles() { + return profiles; + } + + public static final class Builder { + + private List profiles; + + private Builder() { + profiles = new ArrayList<>(); + } + + public Builder withProfile(AdvancedIdentityProfilePayload profile) { + this.profiles.add(profile); + return this; + } + + public AdvancedIdentityProfileRequirementsPayload build() { + return new AdvancedIdentityProfileRequirementsPayload(profiles); + } + + } + +} diff --git a/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/create/identityprofile/advanced/AdvancedIdentityProfileSchemeConfigPayload.java b/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/create/identityprofile/advanced/AdvancedIdentityProfileSchemeConfigPayload.java new file mode 100644 index 00000000..9e1d426b --- /dev/null +++ b/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/create/identityprofile/advanced/AdvancedIdentityProfileSchemeConfigPayload.java @@ -0,0 +1,53 @@ +package com.yoti.api.client.docs.session.create.identityprofile.advanced; + +import com.yoti.api.client.docs.session.create.filters.DocumentFilter; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class AdvancedIdentityProfileSchemeConfigPayload { + + @JsonProperty("filter") + private final DocumentFilter filter; + + private AdvancedIdentityProfileSchemeConfigPayload(DocumentFilter filter) { + this.filter = filter; + } + + public static AdvancedIdentityProfileSchemeConfigPayload.Builder builder() { + return new AdvancedIdentityProfileSchemeConfigPayload.Builder(); + } + + /** + * Gets the filter for the configuration + * + * @return the filter + */ + public DocumentFilter getFilter() { + return filter; + } + + public static final class Builder { + + private DocumentFilter filter; + + private Builder() {} + + /** + * Sets the filter for the scheme configuration + * + * @param filter the document filter + * @return the builder + */ + public Builder withFilter(DocumentFilter filter) { + this.filter = filter; + return this; + } + + public AdvancedIdentityProfileSchemeConfigPayload build() { + return new AdvancedIdentityProfileSchemeConfigPayload(filter); + } + + } + + +} diff --git a/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/create/identityprofile/advanced/AdvancedIdentityProfileSchemePayload.java b/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/create/identityprofile/advanced/AdvancedIdentityProfileSchemePayload.java new file mode 100644 index 00000000..0f4028ff --- /dev/null +++ b/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/create/identityprofile/advanced/AdvancedIdentityProfileSchemePayload.java @@ -0,0 +1,104 @@ +package com.yoti.api.client.docs.session.create.identityprofile.advanced; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class AdvancedIdentityProfileSchemePayload { + + @JsonProperty("type") + private final String type; + + @JsonProperty("objective") + private final String objective; + + @JsonProperty("label") + private final String label; + + @JsonProperty("config") + private final AdvancedIdentityProfileSchemeConfigPayload config; + + private AdvancedIdentityProfileSchemePayload(String type, String objective, String label, AdvancedIdentityProfileSchemeConfigPayload config) { + this.type = type; + this.objective = objective; + this.label = label; + this.config = config; + } + + public static AdvancedIdentityProfileSchemePayload.Builder builder() { + return new AdvancedIdentityProfileSchemePayload.Builder(); + } + + public String getType() { + return type; + } + + public String getObjective() { + return objective; + } + + public String getLabel() { + return label; + } + + public AdvancedIdentityProfileSchemeConfigPayload getConfig() { + return config; + } + + public static final class Builder { + + private String type; + private String objective; + private String label; + private AdvancedIdentityProfileSchemeConfigPayload config; + + private Builder() {} + + /** + * Sets the type of the scheme + * + * @param type the type + * @return the builder + */ + public Builder withType(String type) { + this.type = type; + return this; + } + + /** + * Sets the objective of the scheme + * + * @param objective the objective + * @return the builder + */ + public Builder withObjective(String objective) { + this.objective = objective; + return this; + } + + /** + * Sets the label for the scheme + * + * @param label the label + * @return the builder + */ + public Builder withLabel(String label) { + this.label = label; + return this; + } + + /** + * Sets the configuration for the scheme + * + * @param config the configuration + * @return the builder + */ + public Builder withConfig(AdvancedIdentityProfileSchemeConfigPayload config) { + this.config = config; + return this; + } + + public AdvancedIdentityProfileSchemePayload build() { + return new AdvancedIdentityProfileSchemePayload(type, objective, label, config); + } + + } +} diff --git a/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/retrieve/GetSessionResult.java b/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/retrieve/GetSessionResult.java index 6d77e445..5c56bad8 100644 --- a/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/retrieve/GetSessionResult.java +++ b/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/retrieve/GetSessionResult.java @@ -3,6 +3,8 @@ import java.util.List; import java.util.stream.Collectors; +import com.yoti.api.client.docs.session.retrieve.identityprofile.advanced.AdvancedIdentityProfileResponse; + import com.fasterxml.jackson.annotation.JsonProperty; public class GetSessionResult { @@ -34,9 +36,15 @@ public class GetSessionResult { @JsonProperty(Property.IDENTITY_PROFILE) private IdentityProfileResponse identityProfile; + @JsonProperty(Property.ADVANCED_IDENTITY_PROFILE) + private AdvancedIdentityProfileResponse advancedIdentityProfile; + @JsonProperty(Property.IDENTITY_PROFILE_PREVIEW) private IdentityProfilePreviewResponse identityProfilePreview; + @JsonProperty(Property.ADVANCED_IDENTITY_PROFILE_PREVIEW) + private IdentityProfilePreviewResponse advancedIdentityProfilePreview; + @JsonProperty(Property.IMPORT_TOKEN) private ImportTokenResponse importToken; @@ -76,10 +84,18 @@ public IdentityProfileResponse getIdentityProfile() { return identityProfile; } + public AdvancedIdentityProfileResponse getAdvancedIdentityProfile() { + return advancedIdentityProfile; + } + public IdentityProfilePreviewResponse getIdentityProfilePreview() { return identityProfilePreview; } + public IdentityProfilePreviewResponse getAdvancedIdentityProfilePreview() { + return advancedIdentityProfilePreview; + } + public ImportTokenResponse getImportToken() { return importToken; } @@ -162,7 +178,9 @@ private static final class Property { private static final String CHECKS = "checks"; private static final String RESOURCES = "resources"; private static final String IDENTITY_PROFILE = "identity_profile"; + private static final String ADVANCED_IDENTITY_PROFILE = "advanced_identity_profile"; private static final String IDENTITY_PROFILE_PREVIEW = "identity_profile_preview"; + private static final String ADVANCED_IDENTITY_PROFILE_PREVIEW = "advanced_identity_profile_preview"; private static final String IMPORT_TOKEN = "import_token"; private Property() { } diff --git a/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/retrieve/identityprofile/advanced/AdvancedIdentityProfileReportResponse.java b/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/retrieve/identityprofile/advanced/AdvancedIdentityProfileReportResponse.java new file mode 100644 index 00000000..b2906e69 --- /dev/null +++ b/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/retrieve/identityprofile/advanced/AdvancedIdentityProfileReportResponse.java @@ -0,0 +1,35 @@ +package com.yoti.api.client.docs.session.retrieve.identityprofile.advanced; + +import java.util.List; + +import com.yoti.api.client.docs.session.retrieve.MediaResponse; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class AdvancedIdentityProfileReportResponse { + + @JsonProperty("compliance") + private List compliance; + + @JsonProperty("media") + private MediaResponse media; + + /** + * Gets the compliance reports for the advanced identity profile + * + * @return the compliance reports + */ + public List getCompliance() { + return compliance; + } + + /** + * Gets the media for the generated profile of the advanced identity profile + * + * @return the generated media + */ + public MediaResponse getMedia() { + return media; + } + +} diff --git a/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/retrieve/identityprofile/advanced/AdvancedIdentityProfileResponse.java b/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/retrieve/identityprofile/advanced/AdvancedIdentityProfileResponse.java new file mode 100644 index 00000000..9d1e9c35 --- /dev/null +++ b/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/retrieve/identityprofile/advanced/AdvancedIdentityProfileResponse.java @@ -0,0 +1,57 @@ +package com.yoti.api.client.docs.session.retrieve.identityprofile.advanced; + +import com.yoti.api.client.docs.session.retrieve.IdentityProfileFailureResponse; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class AdvancedIdentityProfileResponse { + + @JsonProperty("subject_id") + private String subjectId; + + @JsonProperty("result") + private String result; + + @JsonProperty("failure_reason") + private IdentityProfileFailureResponse failureReason; + + @JsonProperty("identity_profile_report") + private AdvancedIdentityProfileReportResponse identityProfileReport; + + /** + * Returns the subject ID of the Advanced Identity Profile + * + * @return the subject ID + */ + public String getSubjectId() { + return subjectId; + } + + /** + * Returns the result of the Advanced Identity Profile + * + * @return the result + */ + public String getResult() { + return result; + } + + /** + * Returns the failure reason of the Advanced Identity Profile + * + * @return the failure reason + */ + public IdentityProfileFailureResponse getFailureReason() { + return failureReason; + } + + /** + * Returns the report for the Advanced Identity Profile + * + * @return the report + */ + public AdvancedIdentityProfileReportResponse getIdentityProfileReport() { + return identityProfileReport; + } + +} diff --git a/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/retrieve/identityprofile/advanced/AdvancedIdentityProfileSchemeComplianceReportResponse.java b/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/retrieve/identityprofile/advanced/AdvancedIdentityProfileSchemeComplianceReportResponse.java new file mode 100644 index 00000000..9cc05a67 --- /dev/null +++ b/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/retrieve/identityprofile/advanced/AdvancedIdentityProfileSchemeComplianceReportResponse.java @@ -0,0 +1,28 @@ +package com.yoti.api.client.docs.session.retrieve.identityprofile.advanced; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class AdvancedIdentityProfileSchemeComplianceReportResponse { + + @JsonProperty("scheme") + private AdvancedIdentityProfileSchemeResponse scheme; + + @JsonProperty("requirements_met") + private Boolean requirementsMet; + + @JsonProperty("requirements_not_met_info") + private String requirementsNotMetInfo; + + public AdvancedIdentityProfileSchemeResponse getScheme() { + return scheme; + } + + public Boolean getRequirementsMet() { + return requirementsMet; + } + + public String getRequirementsNotMetInfo() { + return requirementsNotMetInfo; + } + +} diff --git a/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/retrieve/identityprofile/advanced/AdvancedIdentityProfileSchemeResponse.java b/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/retrieve/identityprofile/advanced/AdvancedIdentityProfileSchemeResponse.java new file mode 100644 index 00000000..62348d9c --- /dev/null +++ b/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/retrieve/identityprofile/advanced/AdvancedIdentityProfileSchemeResponse.java @@ -0,0 +1,28 @@ +package com.yoti.api.client.docs.session.retrieve.identityprofile.advanced; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class AdvancedIdentityProfileSchemeResponse { + + @JsonProperty("type") + private String type; + + @JsonProperty("objective") + private String objective; + + @JsonProperty("label") + private String label; + + public String getType() { + return type; + } + + public String getObjective() { + return objective; + } + + public String getLabel() { + return label; + } + +} diff --git a/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/retrieve/identityprofile/advanced/AdvancedIdentityProfileTrustFrameworkResponse.java b/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/retrieve/identityprofile/advanced/AdvancedIdentityProfileTrustFrameworkResponse.java new file mode 100644 index 00000000..33cdc50a --- /dev/null +++ b/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/retrieve/identityprofile/advanced/AdvancedIdentityProfileTrustFrameworkResponse.java @@ -0,0 +1,33 @@ +package com.yoti.api.client.docs.session.retrieve.identityprofile.advanced; + +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class AdvancedIdentityProfileTrustFrameworkResponse { + + @JsonProperty("trust_framework") + private String trustFramework; + + @JsonProperty("schemes_compliance") + private List schemesCompliance; + + /** + * Gets the trust framework for the report + * + * @return the trust framework + */ + public String getTrustFramework() { + return trustFramework; + } + + /** + * Gets the list of schemes that are part of the trust framework report + * + * @return the scheme compliances + */ + public List getSchemesCompliance() { + return schemesCompliance; + } + +}