Upgrading to School Profile V4
Introduction
ATTOM is pleased to announce a significant enhancement to the school data available via ATTOM API brought about by switching to a new source already being used by other ATTOM products. Because we are making what we consider a breaking change to the endpoints, they are being deployed as a new version. This provides us with the opportunity of merging two endpoints (School Details and School Snapshot) into a single endpoint (School Profile)
- We have moved to a new source for school data that increases the amount and quality of data we can make available in ATTOM API. The small subset of school data made available in this endpoint has been updated to the new source.
- IDs used to reference the schools in the earlier version have been updated to adopt ATTOM's new geocode standard (geoIdV4)
These are considered breaking changes and customers are encouraged to modify applications to use the new versions of these endpoints on or before June 30, 2023.
New Data
School Profile
The new version of the school profile endpoint adds 125 new fields, including:
- AP classes available (high schools)
- Enrollment by race
- Free lunch programs offered
- Religious (and other) affiliations of private schools
New Endpoint
School Search
Searches for schools located within:
- Specific geography (geoIdV4) such as a county, postal city, zip code
- A circle defined using latitude, longitude, and radius
This endpoint returns a summary for each matching school and school district.
Endpoints Affected
The following endpoints are impacted by this change
Name | Original Endpoint | New Endpoint |
School Detail | /propertyapi/v1.0.0/school/detail | /v4/school/profile |
School Snapshot | /propertyapi/v1.0.0/school/snapshot | /v4/school/search |
Example
The following call requests school profile data for New Trier Township High School Winnetka (geoIdV4: 68395c88b7a98b5714de7d79d48506ea)
https://api.gateway.attomdata.com/v4/school/profile?geoIdV4=68395c88b7a98b5714de7d79d48506ea
{ "status": { "version": "4", "code": 0, "msg": "SuccessWithResult", "total": 1, "page": 1, "pageSize": 1, "transactionID": "bd93a2e02b355d5c66deb06b959c6e84" }, "school": { "location": { "geoIdV4": "68395c88b7a98b5714de7d79d48506ea", "latitude": 42.0946, "longitude": -87.7192, "addressLine1": "385 Winnetka Ave", "city": "Winnetka", "stateCode": "IL", "zipCode": "60093", "stateFIPs": "17", "countyFIPs": "031", "countyName": "Cook" }, "detail": { "ncesSchoolId": "172820002975", "stateSchoolId": "IL-05-016-2030-17-0501620300001", "schoolName": "New Trier Township High School Winnetka", "phone": "8474467000", "schoolUrl": "http://www.newtrier.k12.il.us/", "mailAddressLine1": "385 Winnetka Ave", "mailCity": "Winnetka", "mailStateCode": "IL", "mailZipCode": "60093", "mailStateFIPs": "17", "mailCountyFIPs": "031", "mailCountyName": "Cook", "institutionType": "Public", "schoolType": "Regular", "status": "Operational", "instructionalLevel": "High", "gradeSpanLow": "10", "gradeSpanHigh": "12", "elementarySchoolInd": "N", "middleSchoolInd": "N", "highSchoolInd": "Y", "eeInd": "N", "pkInd": "N", "kgInd": "N", "transitionalKgInd": "N", "transitionalGrade01Ind": "N", "grade01Ind": "N", "grade02Ind": "N", "grade03Ind": "N", "grade04Ind": "N", "grade05Ind": "N", "grade06Ind": "N", "grade07Ind": "N", "grade08Ind": "N", "grade09Ind": "N", "grade10Ind": "Y", "grade11Ind": "Y", "grade12Ind": "Y", "ungradedInd": "N", "studentCnt": 3040, "studentCntRange": "750+", "charterInd": "N", "acceleratedChristianEducationInd": "N", "americanAssocOfChristianSchoolsInd": "N", "assocOfChristianSchoolsIntlInd": "N", "assocOfChristianTeachersAndSchoolsInd": "N", "assocOfClassicalAndChristianSchoolsInd": "N", "christianSchoolsIntlInd": "N", "councilOfIslamicSchoolsInNorthAmericaInd": "N", "evangelicalLutheranEducationAssocInd": "N", "friendsCouncilOnEducationInd": "N", "generalConferenceOfSeventhDayAdventistChurchInd": "N", "islamicSchoolLeagueOfAmericaInd": "N", "jesuitSecondaryEducationAssocInd": "N", "nationalAssocOfEpiscopalSchoolsInd": "N", "nationalCatholicEducationAssocInd": "N", "nationalChristianSchoolAssocInd": "N", "nationalSocietyOfHebrewDaySchoolsInd": "N", "oralRobertsUniversityEducationFellowshipInd": "N", "prizmahCenterForJewishDaySchoolsInd": "N", "southernBaptistAssocOfChristianSchoolsInd": "N", "otherReligiousSchoolAssocsInd": "N", "americanMontessoriSocietyInd": "N", "assocMontessoriIntlInd": "N", "otherMontessoriAssocsInd": "N", "assocMilitaryCollegesAndSchoolsInd": "N", "assocWaldorfSchoolsOfNorthAmericaInd": "N", "nationalAssocOfPrivateSpecialEducationCentersInd": "N", "otherAssocsForExceptionalChildrenInd": "N", "europeanCouncilForInternationalSchoolsInd": "N", "nationalAssocForTheEducationOfYoungChildrenInd": "N", "nationalAssocOfLaboratorySchoolsInd": "N", "nationalCoalitionOfGirlsSchoolsInd": "N", "otherSpecialEmphasisAssocsInd": "N", "alternativeSchoolNetworkInd": "N", "nationalAssocatiationOfIndependentSchoolsInd": "N", "stateOrRegionalIndependentSchoolAssocInd": "N", "nationalCoalitionOfAlternativeCommunitySchoolsInd": "N", "nationalIndependentPrivateSchoolsAssocInd": "N", "theAssocOfBoardingSchoolsInd": "N", "otherSchoolAssocsInd": "N", "enrollPk": 0, "enrollKg": 0, "enrollG01": 0, "enrollG02": 0, "enrollG03": 0, "enrollG04": 0, "enrollG05": 0, "enrollG06": 0, "enrollG07": 0, "enrollG08": 0, "enrollG09": 1, "enrollG10": 999, "enrollG11": 1006, "enrollG12": 1034, "enrollUngraded": 0, "enrollAm": 8, "enrollAsian": 291, "enrollHisp": 210, "enrollBlack": 13, "enrollWhite": 2374, "enrollPacific": 6, "enrollMultipleRaces": 138, "enrollAmPct": 0.26, "enrollAsianPct": 9.57, "enrollHispPct": 6.91, "enrollBlackPct": 0.43, "enrollWhitePct": 78.09, "enrollPacificPct": 0.2, "enrollMultipleRacesPct": 4.54, "enrollMale": 1585, "enrollFemale": 1455, "enrollFreeLunch": 0, "enrollReducedLunch": 0, "enrollFreeOrReducedLunch": 0, "blueRibbonYears": "1991, 2009", "urbanCentricCommunityType": "Suburb", "urbanCentricLocaleType": "Suburb - Large", "apInd": "Y", "apArtHistoryInd": "N", "apArtStudio2DDesignInd": "Y", "apArtStudio3DDesignInd": "Y", "apArtStudioDrawingInd": "Y", "apBiologyInd": "Y", "apCalculusAbInd": "Y", "apCalculusBcInd": "Y", "apChemistryInd": "Y", "apChineseLanguageCultureInd": "Y", "apComputerScienceAInd": "Y", "apComputerScienceAbInd": "N", "apComputerSciencePrinciplesInd": "N", "apEconomicsMacroInd": "Y", "apEconomicsMicroInd": "Y", "apEnglishLanguageCompositionInd": "Y", "apEnglishLiteratureCompositionInd": "Y", "apEnvironmentalScienceInd": "Y", "apEuropeanHistoryInd": "Y", "apFrenchLanguageInd": "Y", "apFrenchLiteratureInd": "N", "apGeographyHumanInd": "N", "apGermanLanguageInd": "Y", "apGovernmentPoliticsComparativeInd": "Y", "apGovernmentPoliticsUsInd": "Y", "apItalianLanguageCultureInd": "N", "apJapaneseLanguageCultureInd": "Y", "apLatinCatullusHoraceInd": "N", "apLatinVergilInd": "Y", "apMusicTheoryInd": "Y", "apPhysics1Ind": "Y", "apPhysics2Ind": "Y", "apPhysicsBInd": "N", "apPhysicsCElectricyMagnetismInd": "Y", "apPhysicsCMechanicsInd": "Y", "apPsychologyInd": "Y", "apResearchInd": "N", "apSeminarInd": "N", "apSpanishLanguageInd": "Y", "apSpanishLiteratureInd": "Y", "apStatisticsInd": "Y", "apUsHistoryInd": "Y", "apWorldHistoryInd": "N", "priorYearStudentCnt": 3034, "studentYearlyChangeCnt": 6, "studentYearlyChangePct": 0.2, "schoolRating": "A+", "saaInd": "Y", "updatedate": "2022-07-04T11:07:58.96" }, "testScores": [ { "year": 2018, "subject": "ELA", "grade": "11", "score": 79.9, "institutionType": "School" }, { "year": 2018, "subject": "Math", "grade": "11", "score": 76.6, "institutionType": "School" } ], "district": { "schoolDistrictGeoId": "efcc419cb0e9a00619645cd787fe2dd6", "schoolDistrictName": "New Trier Township High School District 203", "latitude": 42.090091, "longitude": -87.764688, "phone": "8477846109", "addressLine1": "7 Happ Rd", "city": "Northfield", "stateCode": "IL" } } }
Migration Process
The following outlines the series of steps necessary to upgrade applications from previous versions of school endpoints. It is important these changes be made as soon as possible as the older versions are being deprecated. It is likely that the older versions will stop working after June 30, 2023. Please plan accordingly.
- 1
-
Identify calls to Endpoints
Identify all the places in your code in which a call is made to any of the two school endpoints: -
- /propertyapi/v1.0.0/school/detail
- /propertyapi/v1.0.0/school/snapshot
- 2
-
Identify calls to other endpoints
Identify any other calls to ATTOM API that might be generating geocodes (geoid) that are used in calls to the school endpoints.
- 3
-
Change endpoint path
The endpoint paths should be changed to v4 (or higher) and the endpoint names should be mapped to the new names.
Original Endpoint New Endpoint /propertyapi/v1.0.0/school/detail /v4/school/profile /propertyapi/v1.0.0/school/snapshot /v4/school/search - 4
-
Make changes to business logic
Check the attached spreadsheet to determine if any of the fields returned are listed as having changed in some way. If they are, you will need to adjust the application's business logic to reflect the nature of the change.
School-Migration-Kit.xlsxThe following is a summary of the options provided in the above spreadsheet for each field
Category
ActionNumber of Fields Name Change Only Change logic to extract value from the endpoint using the new field name 48 Field Value Change Change logic and/or display to match the new format of the data 10 School District Make a separate call to the school district 6 Removed Field No equivalent is available. Evaluate the option of removing data from display or calculations 33 New field Decide if you wish to take advantage (at this time) of the many new fields added. 125