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
+
+
+
+
+
+
+
+
+
+
+ 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;
+ }
+
+}