Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current Restore this Version View Page History

« Previous Version 10 Next »

Data Structure for Mirror Balance

Data Structure for Account Mirror

This section presents the Fiserv endpoints of the Account domain and proposes the MongoDB data structure for Mirror Account based on the corresponding request/response.

Fiserv - Account endpoint list

Account Details

Source

  • Fiserv endpoint: GET /account/details

  • Class: FiservRepository

  • Service: getAccountDetails

Target (MongoDB)

  • Collection name: accountDetails

  • Schema:

    db.createCollection("accountDetails", {
      validator: {
        $jsonSchema: {
          bsonType: "object",
          title: "Account Details Object Validation",
          required: [ "accountDataKey.accountNumber","accountDataKey.organizationNumber"],
          properties: {
            accountDataKey: {
              bsonType: "object",
              properties: {
                accountNumber: {
                  bsonType: "string",
                  description: "'accountNumber' must be a string and is required"
                },
                organizationNumber: {
                  bsonType: [ "string" ],
                  description: "'organizationNumber' must be a string and is required"
                }
              }
            },
            accountData: {
              bsonType: "object",
              properties: {
                customerNumber: {
                  bsonType: "string",
                  description: "'customerNumber' must be a string"
                },
                blockCode1: {
                  bsonType: "string",
                  description: "'blockCode1' must be a string"
                },
                blockCode1Date: {
                  bsonType: "string",
                  description: "'blockCode1Date' must be a string"
                },
                blockCode2: {
                  bsonType: "string",
                  description: "'blockCode2' must be a string"
                },
                blockCode2Date: {
                  bsonType: "string",
                  description: "'blockCode2Date' must be a string"
                },
                accountMakerDateOfBirth: {
                  bsonType: "string",
                  description: "'accountMakerDateOfBirth' must be a string"
                },
                availableCredit: {
                  bsonType: [ "double" ],
                  description: "'availableCredit' must be a double"
                },
                userAmounts9: {
                  bsonType: [ "double" ],
                  description: "'userAmounts9' must be a double"
                },
                userAmounts10: {
                  bsonType: [ "double" ],
                  description: "'userAmounts10' must be a double"
                },
                userAmounts7: {
                  bsonType: [ "double" ],
                  description: "'userAmounts7' must be a double"
                }
              }
            }
          }
        }
      }
    });
  • Index

    db.accountDetails.createIndex({accountDataKey: 1});
    db.accountDetails.createIndex({"accountDataKey.accountNumber": 1});

Target (Java)

import lombok.Getter;
import lombok.Setter;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Getter
@Setter
@Document(collection = "accountDetails")
public class AccountDetail {

  @Id
  private String id;

  private AccountDataKey accountDataKey;

  private AccountData accountData;
}
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.mongodb.core.mapping.Document;

@Getter
@Setter
@Document
public class AccountData {

  private String customerNumber;

  private String blockCode1;

  private String blockCode1Date;

  private String blockCode2;

  private String blockCode2Date;

  private String accountMakerDateOfBirth;

  //this comes in pesos
  private Double availableCredit;

  //daily posted average balance
  private Double userAmounts9;

  //daily memo average balance
  private Double userAmounts10;

  //Total current memo balance
  private Double userAmounts7;

  public Double getAvailableCredit() {
    return availableCredit * 100;
  }

  public Double getUserAmounts9() {
    return userAmounts9 * 100;
  }

  public Double getUserAmounts7() {
    return userAmounts7 * 100;
  }

  public Double getUserAmounts10() {
    return userAmounts10 * 100;
  }
}
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotNull;
import org.springframework.data.mongodb.core.mapping.Document;

@Getter
@Setter
@Document
public class AccountDataKey {

  @NotNull(message="account number is mandatory")
  private String accountNumber;

  @NotNull(message="organization number is mandatory")
  private String organizationNumber;
}  

Account Block Code

Source

  • Fiserv endpoint: POST /account/block-code

  • Class: FiservRepository

  • Service: setAccountBlockCode

Target (MongoDB)

  • Collection name: blockUnblockAccounts

  • Schema:

    db.createCollection("blockUnblockAccounts", {
      validator: {
        $jsonSchema: {
          bsonType: "object",
          title: "Block Unblock Accounts Object Validation",
          required: ["accountBlockUnblockKey.accountNumber","accountBlockUnblockKey.blockCode"
          ,"accountBlockUnblockKey.blockCodeIndicator","accountBlockUnblockKey.foreignUse","accountBlockUnblockKey.functionCode","accountBlockUnblockKey.organizationNumber"],
          properties: {
            accountBlockUnblockKey: {
              bsonType: "object",
              properties: {
                accountNumber: {
                  bsonType: "string",
                  description: "'accountNumber' must be a string and is required"
                },
                blockCode: {
                  bsonType: "string",
                  description: "'blockCode' must be a string and is required"
                },
                blockCodeIndicator: {
                  bsonType: "int",
                  description: "'blockCodeIndicator' must be a int and is required"
                },
                foreignUse: {
                  bsonType: "int",
                  description: "'foreignUse' must be a int and is required"
                },
                functionCode: {
                  bsonType: "string",
                  description: "'functionCode' must be a string and is required"
                },
                organizationNumber: {
                  bsonType: [ "string" ],
                  description: "'organizationNumber' must be a string and is required"
                }
              }
            },
            blockCode1Local: {
              bsonType: "string",
              description: "'blockCode1Local' must be a string"
            },
            localOrganization: {
              bsonType: "string",
              description: "'localOrganization' must be a string"
            }
          }
        }
      }
    });
  • Index

    db.blockUnblockAccounts.createIndex({accountBlockUnblockKey: 1});
    db.blockUnblockAccounts.createIndex({"accountBlockUnblockKey.accountNumber": 1});

Target (Java)

import lombok.Getter;
import lombok.Setter;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Getter
@Setter
@Document(collection = "blockUnblockAccounts")
public class AccountBlockUnblock {

  @Id
  private String id;

  private AccountBlockUnblockKey accountBlockUnblockKey;

  private String blockCode1Local;

  private Integer localOrganization;
}
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotNull;
import org.springframework.data.mongodb.core.mapping.Document;

@Getter
@Setter
@Document
public class AccountBlockUnblockKey {

  @NotNull(message="account number is mandatory")
  private String accountNumber;

  @NotNull(message="organization number is mandatory")
  private String organizationNumber;

  @NotNull(message="block is mandatory")
  private String blockCode;

  @NotNull(message="block code indicator is mandatory")
  private Integer blockCodeIndicator;

  @NotNull(message="foreign use is mandatory")
  private Integer foreignUse;

  @NotNull(message="function code is mandatory")
  private String functionCode;
}  

Customer

Source

  • Fiserv endpoint: POST /customer

  • Class: FiservRepository

  • Service: createCustomer

Target (MongoDB)

  • Collection name: customers

  • Schema:

    db.createCollection("customers", {
      validator: {
        $jsonSchema: {
          bsonType: "object",
          title: "Customers Object Validation",
          required: ["customerNumber, customerKey.org","customerKey.logo","customerKey.address","customerKey.houseNumber","customerKey.externalNumber","customerKey.colony","customerKey.city","customerKey.state","customerKey.postalCode","customerKey.dateOfBirth","customerKey.stateOfBirth","customerKey.email","customerKey.genderCode","customerKey.firstName","customerKey.lastName","customerKey.maternalLastName","customerKey.mobilePhoneNumber","customerKey.identificationNumberFlag","customerKey.identificationNumber","customerKey.ine","customerKey.occupation"],
          properties: {
            customerKey: {
              bsonType: "object",
              properties: {
                customerNumber: {
                  bsonType: "string",
                  description: "'customerNumber' must be a string and is required"
                },
              }
            },
            org: {
              bsonType: "string",
              description: "'org' must be a string and is required"
            },
            logo: {
              bsonType: "string",
              description: "'logo' must be a string and is required"
            },
            address: {
              bsonType: "string",
              description: "'address' must be a string and is required"
            },
            houseNumber: {
              bsonType: "string",
              description: "'houseNumber' must be a string and is required"
            },
            externalNumber: {
              bsonType: "string",
              description: "'externalNumber' must be a string and is required"
            },
            colony: {
              bsonType: "string",
              description: "'colony' must be a string and is required"
            },
            city: {
              bsonType: "string",
              description: "'city' must be a string and is required"
            },
            state: {
              bsonType: "string",
              description: "'state' must be a string and is required"
            },
            postalCode: {
              bsonType: "string",
              description: "'postalCode' must be a string and is required"
            },
            dateOfBirth: {
              bsonType: "string",
              description: "'dateOfBirth' must be a string and is required"
            },
            stateOfBirth: {
              bsonType: "string",
              description: "'stateOfBirth' must be a string and is required"
            },
            email: {
              bsonType: "string",
              description: "'email' must be a string and is required"
            },
            genderCode: {
              bsonType: "int",
              description: "'genderCode' must be a int and is required"
            },
            firstName: {
              bsonType: "string",
              description: "'firstName' must be a string and is required"
            },
            lastName: {
              bsonType: "string",
              description: "'lastName' must be a string and is required"
            },
            maternalLastName: {
              bsonType: "string",
              description: "'maternalLastName' must be a string and is required"
            },
            mobilePhoneNumber: {
              bsonType: "string",
              description: "'mobilePhoneNumber' must be a string and is required"
            },
            identificationNumberFlag: {
              bsonType: "string",
              description: "'identificationNumberFlag' must be a string and is required"
            },
            identificationNumber: {
              bsonType: "string",
              description: "'identificationNumber' must be a string and is required"
            },
            ine: {
              bsonType: "string",
              description: "'ine' must be a string and is required"
            },
            occupation: {
              bsonType: "string",
              description: "'occupation' must be a string and is required"
            }
          }
        }
      }
    });
  • Index

    db.customers.createIndex({customerKey: 1});

Target (Java)

import lombok.Getter;
import lombok.Setter;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Getter
@Setter
@Document(collection = "customers")
public class Customer {

  @Id
  private String id;

  private CustomerKey customerKey;

  @NotNull(message="org is mandatory")
  private String org;

  @NotNull(message="logo is mandatory")
  private String logo;

  @NotNull(message="address is mandatory")
  private String address;

  @NotNull(message="house number is mandatory")
  private String houseNumber;

  @NotNull(message="external number is mandatory")
  private String externalNumber;

  @NotNull(message="colony is mandatory")
  private String colony;

  @NotNull(message="city is mandatory")
  private String city;

  @NotNull(message="state is mandatory")
  private String state;

  @NotNull(message="postal code is mandatory")
  private String postalCode;

  @NotNull(message="date of birth is mandatory")
  private String dateOfBirth;

  @NotNull(message="state of birth is mandatory")
  private String stateOfBirth;

  @NotNull(message="email is mandatory")
  private String email;

  @NotNull(message="gender code is mandatory")
  private int genderCode;

  @NotNull(message="first name is mandatory")
  private String firstName;

  @NotNull(message="last name is mandatory")
  private String lastName;

  @NotNull(message="maternal last name is mandatory")
  private String maternalLastName;

  @NotNull(message="mobile phone number is mandatory")
  private String mobilePhoneNumber;

  @NotNull(message="identification number flag is mandatory")
  private String identificationNumberFlag;

  @NotNull(message="identification number is mandatory")
  private String identificationNumber;

  @NotNull(message="ine is mandatory")
  private String ine;

  @NotNull(message="occupation number is mandatory")
  private String occupation;
}
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.mongodb.core.mapping.Document;

@Getter
@Setter
@Document
public class CustomerKey{

  @NotNull(message="customer number is mandatory")
  private String customerNumber;
}

Account Customer Linking

Source

  • Fiserv endpoint: POST /account/customer

  • Class: FiservRepository

  • Service: linkAccountToCustomer

Target (MongoDB)

  • Collection name: accountCustomerLinks

  • Schema:

    db.createCollection("accountCustomerLinks", {
      validator: {
        $jsonSchema: {
          bsonType: "object",
          title: "Account Customer Links Object Validation",
          required: ["customerNumber","accountNumber","qualification","organizationNumber","customerTypeIndicator","foreignUseIndicator"],
          properties: {
            customerNumber: {
              bsonType: "string",
              description: "'customerNumber' must be a string and is required"
            },
            accountNumber: {
              bsonType: "string",
              description: "'accountNumber' must be a string and is required"
            },
            qualification: {
              bsonType: "string",
              description: "'qualification' must be a string and is required"
            },
            organizationNumber: {
              bsonType: "string",
              description: "'organizationNumber' must be a string and is required"
            },
            customerTypeIndicator: {
              bsonType: "int",
              description: "'customerTypeIndicator' must be a int and is required"
            },
            foreignUseIndicator: {
              bsonType: "int",
              description: "'foreignUseIndicator' must be a int and is required"
            },
            expirationDate: {
              bsonType: "string",
              description: "'expirationDate' must be a string"
            },
            status: {
              bsonType: "string",
              description: "'status' must be a string"
            }
          }
        }
      }
    });
  • Index

    db.accountCustomerLinks.createIndex({customerNumber: 1});
    db.accountCustomerLinks.createIndex({accountNumber: 1});
    db.accountCustomerLinks.createIndex({"customerNumber,accountNumber": 1});
    db.accountCustomerLinks.createIndex({"customerNumber,accountNumber,organizationNumber": 1});

Target (Java)

import lombok.Getter;
import lombok.Setter;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Getter
@Setter
@Document(collection = "accountCustomerLinks")
public class AccountToCustomerLinking {

  @Id
  private String id;

  @NotNull(message="account number is mandatory")
  private String accountNumber;

  @NotNull(message="customer number is mandatory")
  private String customerNumber;

  @NotNull(message="qualification is mandatory")
  private String qualification;

  @NotNull(message="organization number is mandatory")
  private String organizationNumber;

  @NotNull(message="customer type indicator is mandatory")
  private Integer customerTypeIndicator;

  @NotNull(message="foreign use indicator is mandatory")
  private Integer foreignUseIndicator;

  private String expirationDate;

  private String status;
}

Account Card Linking

Source

  • Fiserv endpoint: POST /account/prepaid

  • Class: FiservRepository

  • Service: linkCardToAccount

Target (MongoDB)

  • Collection name: accountCardLinks

  • Schema:

    db.createCollection("accountCardLinks", {
      validator: {
        $jsonSchema: {
          bsonType: "object",
          title: "Account Card Links Object Validation",
          required: ["cardNumber","cardholderType","customerOrAccountNumber"],
          properties: {
            cardNumber: {
              bsonType: "string",
              description: "'cardNumber' must be a string and is required"
            },
            cardholderType: {
              bsonType: "int",
              description: "'cardholderType' must be a string and is required"
            },
            customerOrAccountNumber: {
              bsonType: "string",
              description: "'customerOrAccountNumber' must be a string and is required"
            }
          }
        }
      }
    });
  • Index

    db.accountCardLinks.createIndex({cardNumber: 1});
    db.accountCardLinks.createIndex({cardholderType: 1});
    db.accountCardLinks.createIndex({customerOrAccountNumber: 1});
    db.accountCardLinks.createIndex({"cardNumber,cardholderType,customerOrAccountNumber": 1});

Target (Java)

import lombok.Getter;
import lombok.Setter;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Getter
@Setter
@Document(collection = "accountCardLinks")
public class CardToAccountLinking {

  @Id
  private String id;

  @NotNull(message="card number is mandatory")
  private String cardNumber;

  @NotNull(message="cardholder type is mandatory")
  private Integer cardholderType;

  @NotNull(message="customer or account number is mandatory")
  private String customerOrAccountNumber;
}

0 Comments

You are not logged in. Any changes you make will be marked as anonymous. You may want to Log In if you already have an account.