diff --git a/README.md b/README.md
index 5a6666ec..187ddf61 100644
--- a/README.md
+++ b/README.md
@@ -23,14 +23,14 @@ And then add the artifact `incognia-api-client` **or** `incognia-api-client-shad
com.incognia
incognia-api-client
- 3.14.0
+ 3.15.0
```
```xml
com.incognia
incognia-api-client-shaded
- 3.14.0
+ 3.15.0
```
@@ -47,13 +47,13 @@ repositories {
And then add the dependency
```gradle
dependencies {
- implementation 'com.incognia:incognia-api-client:3.14.0'
+ implementation 'com.incognia:incognia-api-client:3.15.0'
}
```
OR
```gradle
dependencies {
- implementation 'com.incognia:incognia-api-client-shaded:3.14.0'
+ implementation 'com.incognia:incognia-api-client-shaded:3.15.0'
}
```
diff --git a/build.gradle b/build.gradle
index 4833104d..f81a0367 100644
--- a/build.gradle
+++ b/build.gradle
@@ -8,7 +8,7 @@ plugins {
}
group = "com.incognia"
-version = "3.14.0"
+version = "3.15.0"
task createProjectVersionFile {
def projectVersionDir = "$projectDir/src/main/java/com/incognia/api"
diff --git a/src/main/java/com/incognia/api/IncogniaAPI.java b/src/main/java/com/incognia/api/IncogniaAPI.java
index beaf3490..df950a8a 100644
--- a/src/main/java/com/incognia/api/IncogniaAPI.java
+++ b/src/main/java/com/incognia/api/IncogniaAPI.java
@@ -543,6 +543,7 @@ public void registerFeedback(
.externalId(identifiers.getExternalId())
.requestToken(identifiers.getRequestToken())
.personId(identifiers.getPersonId())
+ .financialAccount(identifiers.getFinancialAccount())
.expiresAt(
Optional.ofNullable(identifiers.getExpiresAt()).map(Instant::toString).orElse(null))
.build();
diff --git a/src/main/java/com/incognia/common/HolderTaxID.java b/src/main/java/com/incognia/common/HolderTaxID.java
new file mode 100644
index 00000000..467e3af0
--- /dev/null
+++ b/src/main/java/com/incognia/common/HolderTaxID.java
@@ -0,0 +1,27 @@
+package com.incognia.common;
+
+import lombok.Builder;
+import lombok.Value;
+
+@Value
+@Builder
+public class HolderTaxID implements TypedValue {
+ String type;
+ String value;
+
+ public static HolderTaxID ofCPF(String cpfValue) {
+ return HolderTaxID.builder().type("cpf").value(cpfValue).build();
+ }
+
+ public static HolderTaxID ofSSN(String ssnValue) {
+ return HolderTaxID.builder().type("ssn").value(ssnValue).build();
+ }
+
+ public static HolderTaxID ofEIN(String einValue) {
+ return HolderTaxID.builder().type("ein").value(einValue).build();
+ }
+
+ public static HolderTaxID ofCNPJ(String cnpjValue) {
+ return HolderTaxID.builder().type("cnpj").value(cnpjValue).build();
+ }
+}
diff --git a/src/main/java/com/incognia/common/PersonID.java b/src/main/java/com/incognia/common/PersonID.java
index 095c40f3..712ca90d 100644
--- a/src/main/java/com/incognia/common/PersonID.java
+++ b/src/main/java/com/incognia/common/PersonID.java
@@ -5,7 +5,7 @@
@Value
@Builder
-public class PersonID {
+public class PersonID implements TypedValue {
String type;
String value;
diff --git a/src/main/java/com/incognia/common/TypedValue.java b/src/main/java/com/incognia/common/TypedValue.java
new file mode 100644
index 00000000..331847bc
--- /dev/null
+++ b/src/main/java/com/incognia/common/TypedValue.java
@@ -0,0 +1,7 @@
+package com.incognia.common;
+
+public interface TypedValue {
+ String getType();
+
+ String getValue();
+}
diff --git a/src/main/java/com/incognia/feedback/FeedbackIdentifiers.java b/src/main/java/com/incognia/feedback/FeedbackIdentifiers.java
index 9714b013..4dc44a3b 100644
--- a/src/main/java/com/incognia/feedback/FeedbackIdentifiers.java
+++ b/src/main/java/com/incognia/feedback/FeedbackIdentifiers.java
@@ -1,6 +1,7 @@
package com.incognia.feedback;
import com.incognia.common.PersonID;
+import com.incognia.transaction.payment.BankAccountInfo;
import java.time.Instant;
import lombok.Builder;
import lombok.Value;
@@ -18,4 +19,5 @@ public class FeedbackIdentifiers {
String externalId;
Instant expiresAt;
PersonID personId;
+ BankAccountInfo financialAccount;
}
diff --git a/src/main/java/com/incognia/feedback/PostFeedbackRequestBody.java b/src/main/java/com/incognia/feedback/PostFeedbackRequestBody.java
index 959673d9..01f5134b 100644
--- a/src/main/java/com/incognia/feedback/PostFeedbackRequestBody.java
+++ b/src/main/java/com/incognia/feedback/PostFeedbackRequestBody.java
@@ -1,6 +1,7 @@
package com.incognia.feedback;
import com.incognia.common.PersonID;
+import com.incognia.transaction.payment.BankAccountInfo;
import lombok.Builder;
import lombok.Value;
@@ -19,4 +20,5 @@ public class PostFeedbackRequestBody {
String signupId;
String expiresAt;
PersonID personId;
+ BankAccountInfo financialAccount;
}
diff --git a/src/main/java/com/incognia/transaction/payment/BankAccountInfo.java b/src/main/java/com/incognia/transaction/payment/BankAccountInfo.java
index a83f923e..72bc2ea7 100644
--- a/src/main/java/com/incognia/transaction/payment/BankAccountInfo.java
+++ b/src/main/java/com/incognia/transaction/payment/BankAccountInfo.java
@@ -1,6 +1,6 @@
package com.incognia.transaction.payment;
-import com.incognia.common.PersonID;
+import com.incognia.common.HolderTaxID;
import java.util.Collections;
import java.util.List;
import lombok.Builder;
@@ -12,7 +12,7 @@ public class BankAccountInfo {
String accountType;
String accountPurpose;
String holderType;
- PersonID holderTaxId;
+ HolderTaxID holderTaxId;
String country;
String ispbCode;
String branchCode;
diff --git a/src/test/java/com/incognia/api/IncogniaAPITest.java b/src/test/java/com/incognia/api/IncogniaAPITest.java
index 5ef91761..81b8e7b0 100644
--- a/src/test/java/com/incognia/api/IncogniaAPITest.java
+++ b/src/test/java/com/incognia/api/IncogniaAPITest.java
@@ -13,6 +13,7 @@
import com.incognia.api.clients.TokenAwareDispatcher;
import com.incognia.common.Address;
import com.incognia.common.Coordinates;
+import com.incognia.common.HolderTaxID;
import com.incognia.common.Location;
import com.incognia.common.PersonID;
import com.incognia.common.Reason;
@@ -835,7 +836,7 @@ void testRegisterPayment_whenDataIsValid(Boolean eval) {
.accountType("checking")
.accountPurpose("general")
.holderType("individual")
- .holderTaxId(PersonID.builder().type("cpf").value("12345678901").build())
+ .holderTaxId(HolderTaxID.builder().type("cpf").value("12345678901").build())
.country("BR")
.ispbCode("12345678")
.branchCode("0000")
@@ -983,6 +984,14 @@ void testRegisterFeedback_whenDataIsValid(boolean dryRun) {
String signupId = UUID.randomUUID().toString();
Instant timestamp = Instant.now();
PersonID personId = PersonID.ofCPF("12345678901");
+ HolderTaxID holderTaxID = HolderTaxID.ofCPF("12345678901");
+ BankAccountInfo financialAccount =
+ BankAccountInfo.builder()
+ .accountNumber("123456")
+ .branchCode("1234")
+ .holderTaxId(holderTaxID)
+ .holderType("individual")
+ .build();
dispatcher.setExpectedFeedbackRequestBody(
PostFeedbackRequestBody.builder()
@@ -993,6 +1002,7 @@ void testRegisterFeedback_whenDataIsValid(boolean dryRun) {
.event(FeedbackEvent.ACCOUNT_TAKEOVER)
.timestamp(timestamp.toEpochMilli())
.personId(personId)
+ .financialAccount(financialAccount)
.build());
mockServer.setDispatcher(dispatcher);
client.registerFeedback(
@@ -1004,6 +1014,7 @@ void testRegisterFeedback_whenDataIsValid(boolean dryRun) {
.externalId(externalId)
.signupId(signupId)
.personId(personId)
+ .financialAccount(financialAccount)
.build(),
dryRun);
}