This documenatation describes de public HMDA Platform HTTP API
-
/institutions?domain=<domain>
GET
- Returns a list of institutions filtered by their email domain. If none are found, an HTTP 404 error code (not found) is returned
Example response, with HTTP code 200:
{ "institutions": [ { "id": "0", "name": "Bank 0", "domains": ["test@bank0.com"], "externalIds":[ { "value": "1234", "name": "occ-charter-id" }, { "value": "1234", "name": "ncua-charter-id" } ] } ] }
-
/institutions/<institutionID>
GET
Retrieves the details of an institution. If not found, returns HTTP code 404
Example Response with HTTP code 200, in
JSON
format:{ "id": "123", "agency": "CFPB", "activityYear": "2017", "institutionType": "bank", "cra": false, "externalIds": [{ "id": "bank-id", "idType": "fdic-certificate-number" }], "emailDomains": [ "email1", "email2" ], "respondent": { "externalId": { "id": "bank-id", "idType": "fdic-certificate-number" }, "name": "bank 0", "state": "VA", "city": "City Name", "fipsStateNumber": "2" }, "hmdaFilerFlag": true, "parent": { "respondentId": "12-3", "idRssd": 3, "name": "parent name", "city": "parent city", "state": "VA" }, "assets": 123, "otherLenderCode": 0, "topHolder": { "idRssd": 4, "name": "top holder name", "city": "top holder city", "state": "VA", "country": "USA" } }
-
/filers
GET
Retrieves list of HMDA filers. Example response with HTTP code 200, in
JSON
format:{ "institutions": [ { "institutionId": "0", "name": "bank-0 National Association", "period": "2017", "respondentId": "Bank0_RID" }, { "institutionId": "1", "name": "Bak 1", "period": "2016", "respondentId": "Bank1_RID" } ] }
-
/filers/<period>
GET
Retrieves list of HMDA filers, filtered by period. Example response with HTTP code 200, in
JSON
format:{ "institutions": [ { "institutionId": "0", "name": "bank-0 National Association", "period": "2017", "respondentId": "Bank0_RID" } ] }
-
/filers/<period>/<institutionID>/msaMds
GET
Retrieves a list of all MSA/MDs for a given institution and period. Example response with HTTP code 200, in
JSON
format:{ "year": "2017", "institution": { "name": "bank-0 National Association", "id": "0", "respondentId": "Bank0_RID" }, "msaMds": [ { "id": "12345", "name": "Example MSA/MD" } ] }
-
/uli/checkDigit
POST
- Calculates check digit and full ULI from a loan id.
Example payload, in JSON
format:
{
"loanId": "10Bx939c5543TqA1144M999143X"
}
Example response:
{
"loanId": "10Cx939c5543TqA1144M999143X",
"checkDigit": 10,
"uli": "10Cx939c5543TqA1144M999143X10"
}
A file with a list of Loan Ids can also be uploaded to this endpoint for batch check digit generation.
Example file contents:
10Cx939c5543TqA1144M999143X
10Bx939c5543TqA1144M999143X
Example response in JSON
format:
{
"loanIds": [
{
"loanId": "10Bx939c5543TqA1144M999143X",
"checkDigit": 38,
"uli": "10Bx939c5543TqA1144M999143X38"
},
{
"loanId": "10Cx939c5543TqA1144M999143X",
"checkDigit": 10,
"uli": "10Cx939c5543TqA1144M999143X10"
}
]
}
-
/uli/checkDigit/csv
POST
- calculates check digits for loan ids submitted as a file
Example file contents:
10Cx939c5543TqA1144M999143X
10Bx939c5543TqA1144M999143X
Example response in CSV
format:
loanId,checkDigit,uli
10Bx939c5543TqA1144M999143X,38,10Bx939c5543TqA1144M999143X38
10Cx939c5543TqA1144M999143X,10,10Cx939c5543TqA1144M999143X10
-
/uli/validate
POST
- Validates a ULI (correct check digit)
Example payload, in JSON
format:
{
"uli": "10Bx939c5543TqA1144M999143X38"
}
Example response:
{
"isValid": true
}
A file with a list of ULIs can also be uploaded to this endpoint for batch ULI validation.
Example file contents:
10Cx939c5543TqA1144M999143X10
10Bx939c5543TqA1144M999143X38
10Bx939c5543TqA1144M999133X38
Example response in JSON
format:
{
"ulis": [
{
"uli": "10Cx939c5543TqA1144M999143X10",
"isValid": true
},
{
"uli": "10Bx939c5543TqA1144M999143X38",
"isValid": true
},
{
"uli": "10Bx939c5543TqA1144M999133X38",
"isValid": false
}
]
}
-
/uli/validate/csv
POST
- Batch validation of ULIs
Example file contents:
10Cx939c5543TqA1144M999143X10
10Bx939c5543TqA1144M999143X38
10Bx939c5543TqA1144M999133X38
Example response in CSV
format:
uli,isValid
10Cx939c5543TqA1144M999143X10,true
10Bx939c5543TqA1144M999143X38,true
10Bx939c5543TqA1144M999133X38,false
-
rateSpread
POST
- Calculate Rate Spread
Example payload, in JSON
format:
{
"actionTakenType": 1,
"loanTerm": 30,
"amortizationType": "FixedRate",
"apr": 6.0,
"lockInDate": "2017-11-20",
"reverseMortgage": 2
}
RateType
can take the following values: FixedRate
and VariableRate
Example Response, in JSON
format:
{
"rateSpread": "2.01"
}
The response is either a number representing the Rate Spread or "NA"
-
rateSpread/csv
POST
- Batch Rate Spread calculator
Example file contents:
1,30,FixedRate,6.0,2017-11-20,2
1,30,VariableRate,6.0,2017-11-20,2
The contents of this file include the Action Taken Type
(values 1,2,8), Loan Term
(1 - 50 years),
Amortization Type
(FixedRate
or VariableRate
), APR
, Lock In Date
and Reverse Mortgage
(values 1 or 2)
Example response in CSV
format:
action_taken_type,loan_term,amortization_type,apr,lock_in_date,reverse_mortgage,rate_spread
1,30,FixedRate,6.0,2017-11-20,2,2.01
1,30,VariableRate,6.0,2017-11-20,2,2.15
/ts/parse
POST
- Returns a JSON representation of a TS, or a list of errors if the TS fails to parse
Example body:
1|0123456789|9|201301171330|2013|12-9379899|900|MIKES SMALL BANK XXXXXXXXXXX|1234 Main St|Sacramento|CA|99999-9999|MIKES SMALL INC|1234 Kearney St|San Francisco|CA|99999-1234|Mrs. Krabappel|916-999-9999|999-753-9999|krabappel@gmail.com
Example response
{
"parent": {
"city": "San Francisco",
"name": "MIKES SMALL INC",
"state": "CA",
"zipCode": "99999-1234",
"address": "1234 Kearney St"
},
"activityYear": 2013,
"timestamp": 201301171330,
"agencyCode": 9,
"respondent": {
"city": "Sacramento",
"name": "MIKES SMALL BANK XXXXXXXXXXX",
"state": "CA",
"zipCode": "99999-9999",
"id": "0123456789",
"address": "1234 Main St"
},
"contact": {
"name": "Mrs. Krabappel",
"phone": "916-999-9999",
"fax": "999-753-9999",
"email": "krabappel@gmail.com"
},
"id": 1,
"totalLines": 900,
"taxId": "12-9379899"
}
/lar/parse
POST
- Returns a JSON representation of a LAR, or a list of errors if the LAR fails to parse
Example body:
2|0|1|10164 |20170224|1|1|3|1|21|3|1|20170326|45460|18|153|0501.00|2|2|5| | | | |5| | | | |1|2|31|0| | | |NA |2|1
Example reponse
{
"respondentId": "0",
"applicant": {
"coSex": 2,
"coRace5": "",
"coEthnicity": 2,
"race2": "",
"coRace2": "",
"coRace1": 5,
"race4": "",
"race3": "",
"race1": 5,
"sex": 1,
"coRace3": "",
"income": "31",
"coRace4": "",
"ethnicity": 2,
"race5": ""
},
"hoepaStatus": 2,
"agencyCode": 1,
"actionTakenType": 1,
"denial": {
"reason1": "",
"reason2": "",
"reason3": ""
},
"rateSpread": "NA",
"loan": {
"applicationDate": "20170224",
"propertyType": 1,
"amount": 21,
"purpose": 3,
"id": "10164",
"occupancy": 1,
"loanType": 1
},
"id": 2,
"actionTakenDate": 20170326,
"geography": {
"msa": "45460",
"state": "18",
"county": "153",
"tract": "0501.00"
},
"lienStatus": 1,
"preapprovals": 3,
"purchaserType": 0
}
Example error response
{
"lineNumber": 0,
"errorMessages": [
"An incorrect number of data fields were reported: 38 data fields were found, when 39 data fields were expected."
]
}
/ts/validate
POST
- Returns a list of syntactical, validity and/or quality errors.
Query parameter | Description |
---|---|
check | String. Valid entries are: "syntactical", "validity", "quality". If left blank or any other text is entered, will default to all checks. |
Example body:
{
"parent": {
"city": "San Francisco",
"name": "MIKES SMALL INC",
"state": "CA",
"zipCode": "99999-1234",
"address": "1234 Kearney St"
},
"activityYear": 2013,
"timestamp": 201301171330,
"agencyCode": 9,
"respondent": {
"city": "Sacramento",
"name": "MIKES SMALL BANK XXXXXXXXXXX",
"state": "CA",
"zipCode": "99999-9999",
"id": "0123456789",
"address": "1234 Main St"
},
"contact": {
"name": "Mrs. Krabappel",
"phone": "916-999-9999",
"fax": "999-753-9999",
"email": "krabappel@gmail.com"
},
"id": 1,
"totalLines": 900,
"taxId": "12-9379899"
}
Example response:
{
"syntactical": {
"errors": []
},
"validity": {
"errors": []
},
"quality": {
"errors": []
}
}
/lar/validate
POST
- Returns a list of syntactical, validity and/or quality errors. This endpoint omits certain edits that are not relevant to a single LAR. Edits that are omitted: macro edits, TS-only edits (e.g. Q130), and the following: Q022, S025, S270.
Query parameter | Description |
---|---|
check | String. Valid entries are: "syntactical", "validity", "quality". If left blank or any other text is entered, will default to all checks. |
Example body:
{
"respondentId": "0",
"applicant": {
"coSex": 2,
"coRace5": "",
"coEthnicity": 2,
"race2": "",
"coRace2": "",
"coRace1": 5,
"race4": "",
"race3": "",
"race1": 5,
"sex": 1,
"coRace3": "",
"income": "31",
"coRace4": "",
"ethnicity": 2,
"race5": ""
},
"hoepaStatus": 2,
"agencyCode": 1,
"actionTakenType": 1,
"denial": {
"reason1": "",
"reason2": "",
"reason3": ""
},
"rateSpread": "NA",
"loan": {
"applicationDate": "20170224",
"propertyType": 1,
"amount": 21,
"purpose": 3,
"id": "10164",
"occupancy": 1,
"loanType": 1
},
"id": 2,
"actionTakenDate": 20170326,
"geography": {
"msa": "45460",
"state": "18",
"county": "153",
"tract": "0501.00"
},
"lienStatus": 1,
"preapprovals": 3,
"purchaserType": 0
}
Example response:
{
"syntactical": {
"errors": []
},
"validity": {
"errors": []
},
"quality": {
"errors": []
}
}
/ts/parseAndValidate
POST
- Returns a list of syntactical, validity and/or quality errors.
Query parameter | Description |
---|---|
check | String. Valid entries are: "syntactical", "validity", "quality". If left blank or any other text is entered, will default to all checks. |
Example body:
1|0123456789|9|201301171330|2013|12-9379899|900|MIKES SMALL BANK XXXXXXXXXXX|1234 Main St|Sacramento|CA|99999-9999|MIKES SMALL INC|1234 Kearney St|San Francisco|CA|99999-1234|Mrs. Krabappel|916-999-9999|999-753-9999|krabappel@gmail.com
Example response:
{
"syntactical": {
"errors": []
},
"validity": {
"errors": []
},
"quality": {
"errors": []
}
}
/lar/parseAndValidate
POST
- Returns a list of syntactical, validity and/or quality errors. This endpoint omits certain edits that are not relevant to a single LAR. Edits that are omitted: macro edits, TS-only edits (e.g. Q130), and the following: Q022, S025, S270.
Query parameter | Description |
---|---|
check | String. Valid entries are: "syntactical", "validity", "quality". If left blank or any other text is entered, will default to all checks. |
Example body:
2|0|1|10164 |20170224|1|1|3|1|21|3|1|20170326|45460|18|153|0501.00|2|2|5| | | | |5| | | | |1|2|31|0| | | |NA |2|1
Example response:
{
"syntactical": {
"errors": []
},
"validity": {
"errors": []
},
"quality": {
"errors": []
}
}