From 40f7bdb42de076fb897c6752c9d4d034c81726bc Mon Sep 17 00:00:00 2001 From: Alex Burt Date: Wed, 19 Aug 2026 11:09:00 +0100 Subject: [PATCH] SDK-2825: Add support for setting company_profile when creating an IDV session --- .../session/create/CompanyProfilePayload.java | 45 +++++++++++++++++++ .../docs/session/create/SessionSpec.java | 31 ++++++++++++- .../create/CompanyProfilePayloadTest.java | 30 +++++++++++++ .../docs/session/create/SessionSpecTest.java | 11 +++++ 4 files changed, 115 insertions(+), 2 deletions(-) create mode 100644 yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/create/CompanyProfilePayload.java create mode 100644 yoti-sdk-api/src/test/java/com/yoti/api/client/docs/session/create/CompanyProfilePayloadTest.java diff --git a/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/create/CompanyProfilePayload.java b/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/create/CompanyProfilePayload.java new file mode 100644 index 00000000..6fdb55a9 --- /dev/null +++ b/yoti-sdk-api/src/main/java/com/yoti/api/client/docs/session/create/CompanyProfilePayload.java @@ -0,0 +1,45 @@ +package com.yoti.api.client.docs.session.create; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class CompanyProfilePayload { + + @JsonProperty("company_name") + private final String companyName; + + private CompanyProfilePayload(String companyName) { + this.companyName = companyName; + } + + public static Builder builder() { + return new Builder(); + } + + public String getCompanyName() { + return companyName; + } + + public static class Builder { + + private String companyName; + + Builder() {} + + /** + * Sets the company name to be used for the session + * + * @param companyName the company name + * @return the builder + */ + public Builder withCompanyName(String companyName) { + this.companyName = companyName; + return this; + } + + public CompanyProfilePayload build() { + return new CompanyProfilePayload(companyName); + } + + } + +} 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 960cbd92..4ec64ac5 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 @@ -69,6 +69,9 @@ public class SessionSpec { @JsonProperty("create_identity_profile_preview") private final Boolean createIdentityProfilePreview; + @JsonProperty("company_profile") + private final CompanyProfilePayload companyProfile; + private SessionSpec(Integer clientSessionTokenTtl, Integer resourcesTtl, ImportTokenPayload importToken, @@ -85,7 +88,8 @@ private SessionSpec(Integer clientSessionTokenTtl, SubjectPayload subject, ResourceCreationContainer resources, Boolean createIdentityProfilePreview, - AdvancedIdentityProfileRequirementsPayload advancedIdentityProfileRequirements) { + AdvancedIdentityProfileRequirementsPayload advancedIdentityProfileRequirements, + CompanyProfilePayload companyProfile) { this.clientSessionTokenTtl = clientSessionTokenTtl; this.resourcesTtl = resourcesTtl; this.importToken = importToken; @@ -103,6 +107,7 @@ private SessionSpec(Integer clientSessionTokenTtl, this.resources = resources; this.createIdentityProfilePreview = createIdentityProfilePreview; this.advancedIdentityProfileRequirements = advancedIdentityProfileRequirements; + this.companyProfile = companyProfile; } public static Builder builder() { @@ -263,6 +268,15 @@ public AdvancedIdentityProfileRequirementsPayload getAdvancedIdentityProfileRequ return advancedIdentityProfileRequirements; } + /** + * The company profile to be used for the session + * + * @return the company profile + */ + public CompanyProfilePayload getCompanyProfile() { + return companyProfile; + } + public static class Builder { private final List> requestedChecks; @@ -282,6 +296,7 @@ public static class Builder { private SubjectPayload subject; private ResourceCreationContainer resources; private Boolean createIdentityProfilePreview; + private CompanyProfilePayload companyProfile; private Builder() { requestedChecks = new ArrayList<>(); @@ -477,6 +492,17 @@ public Builder withAdvancedIdentityProfileRequirements(AdvancedIdentityProfileRe return this; } + /** + * Sets the company profile to be used for the session + * + * @param companyProfile the company profile + * @return the builder + */ + public Builder withCompanyProfile(CompanyProfilePayload companyProfile) { + this.companyProfile = companyProfile; + return this; + } + /** * Builds the {@link SessionSpec} based on the values supplied to the builder * @@ -500,7 +526,8 @@ public SessionSpec build() { subject, resources, createIdentityProfilePreview, - advancedIdentityProfileRequirementsPayload); + advancedIdentityProfileRequirementsPayload, + companyProfile); } } diff --git a/yoti-sdk-api/src/test/java/com/yoti/api/client/docs/session/create/CompanyProfilePayloadTest.java b/yoti-sdk-api/src/test/java/com/yoti/api/client/docs/session/create/CompanyProfilePayloadTest.java new file mode 100644 index 00000000..a6149342 --- /dev/null +++ b/yoti-sdk-api/src/test/java/com/yoti/api/client/docs/session/create/CompanyProfilePayloadTest.java @@ -0,0 +1,30 @@ +package com.yoti.api.client.docs.session.create; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.nullValue; + +import org.junit.Test; + +public class CompanyProfilePayloadTest { + + private static final String SOME_COMPANY_NAME = "someCompanyName"; + + @Test + public void shouldBuildWithCompanyName() { + CompanyProfilePayload result = CompanyProfilePayload.builder() + .withCompanyName(SOME_COMPANY_NAME) + .build(); + + assertThat(result.getCompanyName(), is(SOME_COMPANY_NAME)); + } + + @Test + public void companyName_shouldBeNullWhenNotSet() { + CompanyProfilePayload result = CompanyProfilePayload.builder() + .build(); + + assertThat(result.getCompanyName(), is(nullValue())); + } + +} diff --git a/yoti-sdk-api/src/test/java/com/yoti/api/client/docs/session/create/SessionSpecTest.java b/yoti-sdk-api/src/test/java/com/yoti/api/client/docs/session/create/SessionSpecTest.java index 5a78a9dd..1dd3acf4 100644 --- a/yoti-sdk-api/src/test/java/com/yoti/api/client/docs/session/create/SessionSpecTest.java +++ b/yoti-sdk-api/src/test/java/com/yoti/api/client/docs/session/create/SessionSpecTest.java @@ -50,6 +50,7 @@ public class SessionSpecTest { @Mock ImportTokenPayload importTokenMock; @Mock IdentityProfileRequirementsPayload identityProfileRequirementsPayloadMock; @Mock SubjectPayload subjectPayloadMock; + @Mock CompanyProfilePayload companyProfilePayloadMock; @Test public void shouldBuildWithMinimalConfiguration() { @@ -72,6 +73,7 @@ public void shouldBuildWithMinimalConfiguration() { assertThat(result.getSubject(), is(nullValue())); assertThat(result.getResources(), is(nullValue())); assertThat(result.getCreateIdentityProfilePreview(), is(nullValue())); + assertThat(result.getCompanyProfile(), is(nullValue())); } @Test @@ -252,4 +254,13 @@ public void shouldBuildWithImportToken() { assertThat(sessionSpec.getImportToken(), is(importTokenMock)); } + @Test + public void withCompanyProfile_shouldSetTheCompanyProfile() { + SessionSpec result = SessionSpec.builder() + .withCompanyProfile(companyProfilePayloadMock) + .build(); + + assertThat(result.getCompanyProfile(), is(companyProfilePayloadMock)); + } + }