diff --git a/pom.xml b/pom.xml index e4fec33..08525d7 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ ai.pluggy pluggy-java - 1.8.5 + 1.9.0 jar diff --git a/src/main/java/ai/pluggy/client/response/Address.java b/src/main/java/ai/pluggy/client/response/Address.java index 962c998..cd0322d 100644 --- a/src/main/java/ai/pluggy/client/response/Address.java +++ b/src/main/java/ai/pluggy/client/response/Address.java @@ -14,4 +14,12 @@ public class Address { String postalCode; String primaryAddress; AddressType type; + /** District / neighborhood (bairro). */ + String district; + /** IBGE municipality code (7 digits). The first two digits identify the Federation Unit. */ + String ibgeTownCode; + /** Country code in alpha3 ISO-3166 format (e.g. 'BRA'). */ + String countryCode; + /** Geographic coordinates of the address. */ + GeographicCoordinates geographicCoordinates; } diff --git a/src/main/java/ai/pluggy/client/response/BusinessOtherDocument.java b/src/main/java/ai/pluggy/client/response/BusinessOtherDocument.java new file mode 100644 index 0000000..e1ee7d0 --- /dev/null +++ b/src/main/java/ai/pluggy/client/response/BusinessOtherDocument.java @@ -0,0 +1,21 @@ +package ai.pluggy.client.response; + +import java.util.Date; + +import lombok.Builder; +import lombok.Data; + +/** + * Additional document for businesses headquartered abroad and not required to register a CNPJ. + */ +@Data +@Builder +public class BusinessOtherDocument { + + /** Type of the document (e.g. 'EIN'). */ + String type; + String number; + /** Issuing country in alpha3 ISO-3166 format. */ + String country; + Date expirationDate; +} diff --git a/src/main/java/ai/pluggy/client/response/BusinessParty.java b/src/main/java/ai/pluggy/client/response/BusinessParty.java new file mode 100644 index 0000000..2654497 --- /dev/null +++ b/src/main/java/ai/pluggy/client/response/BusinessParty.java @@ -0,0 +1,38 @@ +package ai.pluggy.client.response; + +import java.util.Date; + +import lombok.Builder; +import lombok.Data; + +/** + * Partner or administrator of a business. + * + * Partners with less than 25% shareholding may be omitted by the institution. + */ +@Data +@Builder +public class BusinessParty { + + BusinessPartyType type; + BusinessPartyPersonType personType; + BusinessPartyDocumentType documentType; + String documentNumber; + /** Issuing country of the document, alpha3 ISO-3166. */ + String documentCountry; + Date documentExpirationDate; + Date documentIssueDate; + String documentAdditionalInfo; + /** Civil name. Required when personType is NATURAL_PERSON. */ + String civilName; + String socialName; + /** Company name. Required when personType is LEGAL_ENTITY. */ + String companyName; + String tradeName; + Date startDate; + /** + * Shareholding fraction between 0 and 1 (e.g. 0.51 represents 51%, 1 represents 100%). + * Required when type is PARTNER and the shareholding is 25% or higher. + */ + Double shareholding; +} diff --git a/src/main/java/ai/pluggy/client/response/BusinessPartyDocumentType.java b/src/main/java/ai/pluggy/client/response/BusinessPartyDocumentType.java new file mode 100644 index 0000000..40bdc1e --- /dev/null +++ b/src/main/java/ai/pluggy/client/response/BusinessPartyDocumentType.java @@ -0,0 +1,20 @@ +package ai.pluggy.client.response; + +import com.google.gson.annotations.SerializedName; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +public enum BusinessPartyDocumentType { + @SerializedName("CPF") + CPF("CPF"), + @SerializedName("CNPJ") + CNPJ("CNPJ"), + @SerializedName("PASSPORT") + PASSPORT("PASSPORT"), + @SerializedName("OTHER_TRAVEL_DOCUMENT") + OTHER_TRAVEL_DOCUMENT("OTHER_TRAVEL_DOCUMENT"); + + @Getter + private String value; +} diff --git a/src/main/java/ai/pluggy/client/response/BusinessPartyPersonType.java b/src/main/java/ai/pluggy/client/response/BusinessPartyPersonType.java new file mode 100644 index 0000000..d358173 --- /dev/null +++ b/src/main/java/ai/pluggy/client/response/BusinessPartyPersonType.java @@ -0,0 +1,16 @@ +package ai.pluggy.client.response; + +import com.google.gson.annotations.SerializedName; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +public enum BusinessPartyPersonType { + @SerializedName("NATURAL_PERSON") + NATURAL_PERSON("NATURAL_PERSON"), + @SerializedName("LEGAL_ENTITY") + LEGAL_ENTITY("LEGAL_ENTITY"); + + @Getter + private String value; +} diff --git a/src/main/java/ai/pluggy/client/response/BusinessPartyType.java b/src/main/java/ai/pluggy/client/response/BusinessPartyType.java new file mode 100644 index 0000000..f8bb473 --- /dev/null +++ b/src/main/java/ai/pluggy/client/response/BusinessPartyType.java @@ -0,0 +1,16 @@ +package ai.pluggy.client.response; + +import com.google.gson.annotations.SerializedName; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +public enum BusinessPartyType { + @SerializedName("PARTNER") + PARTNER("PARTNER"), + @SerializedName("ADMINISTRATOR") + ADMINISTRATOR("ADMINISTRATOR"); + + @Getter + private String value; +} diff --git a/src/main/java/ai/pluggy/client/response/GeographicCoordinates.java b/src/main/java/ai/pluggy/client/response/GeographicCoordinates.java new file mode 100644 index 0000000..8b16286 --- /dev/null +++ b/src/main/java/ai/pluggy/client/response/GeographicCoordinates.java @@ -0,0 +1,17 @@ +package ai.pluggy.client.response; + +import lombok.Builder; +import lombok.Data; + +/** + * Geographic coordinates in decimal degrees, WGS84 reference system. + */ +@Data +@Builder +public class GeographicCoordinates { + + /** Between -90 and 90. */ + Double latitude; + /** Between -180 and 180. */ + Double longitude; +} diff --git a/src/main/java/ai/pluggy/client/response/IdentityResponse.java b/src/main/java/ai/pluggy/client/response/IdentityResponse.java index d27b5fb..2b8d475 100644 --- a/src/main/java/ai/pluggy/client/response/IdentityResponse.java +++ b/src/main/java/ai/pluggy/client/response/IdentityResponse.java @@ -28,4 +28,27 @@ public class IdentityResponse { Date createdAt; Date updatedAt; String companyName; + /** Social name of the natural person (PF-only). */ + String socialName; + /** Sex of the natural person (PF-only). */ + Sex sex; + /** Marital status of the natural person (PF-only). */ + MaritalStatus maritalStatus; + /** Nationality of the natural person (PF-only). */ + Nationality nationality; + /** Other identification documents the natural person holds (PF-only). */ + List otherDocuments; + /** Passport metadata for the natural person (PF-only). */ + Passport passport; + /** Date the business was incorporated (PJ-only). */ + Date incorporationDate; + /** Partners and administrators of the business (PJ-only). */ + List parties; + /** + * Additional documents for businesses headquartered abroad and not required to register a CNPJ + * (PJ-only). + */ + List businessOtherDocuments; + /** CNPJs of the financial institutions responsible for the customer cadastro. */ + List companiesCnpj; } diff --git a/src/main/java/ai/pluggy/client/response/MaritalStatus.java b/src/main/java/ai/pluggy/client/response/MaritalStatus.java new file mode 100644 index 0000000..e0e5377 --- /dev/null +++ b/src/main/java/ai/pluggy/client/response/MaritalStatus.java @@ -0,0 +1,13 @@ +package ai.pluggy.client.response; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class MaritalStatus { + + MaritalStatusCode code; + /** Free-text complement. Populated when code is OTHER. */ + String additionalInfo; +} diff --git a/src/main/java/ai/pluggy/client/response/MaritalStatusCode.java b/src/main/java/ai/pluggy/client/response/MaritalStatusCode.java new file mode 100644 index 0000000..625dfbe --- /dev/null +++ b/src/main/java/ai/pluggy/client/response/MaritalStatusCode.java @@ -0,0 +1,26 @@ +package ai.pluggy.client.response; + +import com.google.gson.annotations.SerializedName; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +public enum MaritalStatusCode { + @SerializedName("SINGLE") + SINGLE("SINGLE"), + @SerializedName("MARRIED") + MARRIED("MARRIED"), + @SerializedName("WIDOWED") + WIDOWED("WIDOWED"), + @SerializedName("JUDICIALLY_SEPARATED") + JUDICIALLY_SEPARATED("JUDICIALLY_SEPARATED"), + @SerializedName("DIVORCED") + DIVORCED("DIVORCED"), + @SerializedName("STABLE_UNION") + STABLE_UNION("STABLE_UNION"), + @SerializedName("OTHER") + OTHER("OTHER"); + + @Getter + private String value; +} diff --git a/src/main/java/ai/pluggy/client/response/Nationality.java b/src/main/java/ai/pluggy/client/response/Nationality.java new file mode 100644 index 0000000..aa8c8fd --- /dev/null +++ b/src/main/java/ai/pluggy/client/response/Nationality.java @@ -0,0 +1,14 @@ +package ai.pluggy.client.response; + +import java.util.List; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class Nationality { + + Boolean hasBrazilianNationality; + List otherNationalities; +} diff --git a/src/main/java/ai/pluggy/client/response/NationalityDocument.java b/src/main/java/ai/pluggy/client/response/NationalityDocument.java new file mode 100644 index 0000000..74c716e --- /dev/null +++ b/src/main/java/ai/pluggy/client/response/NationalityDocument.java @@ -0,0 +1,18 @@ +package ai.pluggy.client.response; + +import java.util.Date; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class NationalityDocument { + + String type; + String number; + String country; + Date issueDate; + Date expirationDate; + String additionalInfo; +} diff --git a/src/main/java/ai/pluggy/client/response/OtherDocument.java b/src/main/java/ai/pluggy/client/response/OtherDocument.java new file mode 100644 index 0000000..c7a9138 --- /dev/null +++ b/src/main/java/ai/pluggy/client/response/OtherDocument.java @@ -0,0 +1,20 @@ +package ai.pluggy.client.response; + +import java.util.Date; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class OtherDocument { + + OtherDocumentType type; + /** Free-text complement. Populated when type is OTHER. */ + String typeAdditionalInfo; + String number; + String checkDigit; + /** Free-text complement, used to record the issuing authority (e.g. 'SSP/SP') when relevant. */ + String additionalInfo; + Date expirationDate; +} diff --git a/src/main/java/ai/pluggy/client/response/OtherDocumentType.java b/src/main/java/ai/pluggy/client/response/OtherDocumentType.java new file mode 100644 index 0000000..9ce4ace --- /dev/null +++ b/src/main/java/ai/pluggy/client/response/OtherDocumentType.java @@ -0,0 +1,22 @@ +package ai.pluggy.client.response; + +import com.google.gson.annotations.SerializedName; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +public enum OtherDocumentType { + @SerializedName("CNH") + CNH("CNH"), + @SerializedName("RG") + RG("RG"), + @SerializedName("NIF") + NIF("NIF"), + @SerializedName("RNE") + RNE("RNE"), + @SerializedName("OTHER") + OTHER("OTHER"); + + @Getter + private String value; +} diff --git a/src/main/java/ai/pluggy/client/response/OtherNationality.java b/src/main/java/ai/pluggy/client/response/OtherNationality.java new file mode 100644 index 0000000..09acb6e --- /dev/null +++ b/src/main/java/ai/pluggy/client/response/OtherNationality.java @@ -0,0 +1,15 @@ +package ai.pluggy.client.response; + +import java.util.List; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class OtherNationality { + + /** Country code in alpha3 ISO-3166 format. */ + String countryCode; + List documents; +} diff --git a/src/main/java/ai/pluggy/client/response/Passport.java b/src/main/java/ai/pluggy/client/response/Passport.java new file mode 100644 index 0000000..a8b43d7 --- /dev/null +++ b/src/main/java/ai/pluggy/client/response/Passport.java @@ -0,0 +1,17 @@ +package ai.pluggy.client.response; + +import java.util.Date; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class Passport { + + String number; + /** Issuing country in alpha3 ISO-3166 format. */ + String country; + Date issueDate; + Date expirationDate; +} diff --git a/src/main/java/ai/pluggy/client/response/PhoneNumber.java b/src/main/java/ai/pluggy/client/response/PhoneNumber.java index 93ab7ff..0ffec68 100644 --- a/src/main/java/ai/pluggy/client/response/PhoneNumber.java +++ b/src/main/java/ai/pluggy/client/response/PhoneNumber.java @@ -7,4 +7,12 @@ public class PhoneNumber { PhoneNumberType type; String value; + /** International dialing code (DDI). Populated when different from '55'. */ + String countryCallingCode; + /** Area code (DDD) of the phone. */ + String areaCode; + /** Extension number, when part of the phone identification. */ + String extension; + /** Additional info related to the source phone type. */ + String additionalInfo; } diff --git a/src/main/java/ai/pluggy/client/response/Sex.java b/src/main/java/ai/pluggy/client/response/Sex.java new file mode 100644 index 0000000..2927462 --- /dev/null +++ b/src/main/java/ai/pluggy/client/response/Sex.java @@ -0,0 +1,18 @@ +package ai.pluggy.client.response; + +import com.google.gson.annotations.SerializedName; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +public enum Sex { + @SerializedName("FEMALE") + FEMALE("FEMALE"), + @SerializedName("MALE") + MALE("MALE"), + @SerializedName("OTHER") + OTHER("OTHER"); + + @Getter + private String value; +}