REQUEST NOTES Passing only UniqueId will perform will result in 1 or no matches returned. FirstName, LastSurname, and Birthdate are required (unless UniqueId is present). Values provided by all name fields are case insensitive. The following fields affect score: UniqueId, FirstName, LastSurname, MiddleName, Birthdate, Suffix (Exact Match), LocalPersonId, EducationOrganizationId. The following fields boost score: 6 point boost for an exact match on FirstName, LastSurname, and Birthdate. 3 point boost for an exact match on LastSurname and Birthdate. The EducationOrganizationId is highly recommended and it helps determine if Email and LocalPersonId should be returned for ApiKeys that are associated with more than one Education Organization. If the EducationOrganizationId field is omitted, not valid, or is not authorized for the associated ApiKey, then the default Education Organization associated with the ApiKey will be used to determine if the Email and LocalPersonId should be returned. The fields Email and LocalPersonId are only returned if they are associated with final determining EducationOrganizationId. When implementing Identity V3.x if a new student has Multiple Birth indicator = Y (in the SIS/vendor application database) always send the student to match review (your UI that displays possible matches) so that twins with similar names won’t be combined into the same or wrong person by auto-matching. You want to give the user the ability to create a new WISEid in this scenario. URL: https://apps.dpi.wi.gov/ For information on year-based extensions, please refer to the section. HTTP METHOD: POST BODY IdentitySearchRequests (array[IdentitySearchRequest], optional) IdentitySearchRequest{ UniqueId (string, optional), LastSurname (string, Required), FirstName (string, Required), BirthDate (string, Required), MiddleName (string, optional), GenerationCodeSuffix (string, optional), SexType (string, optional), LocalPersonId (string, optional), A string uniquely identifying the student (or staff) for the Vendor Software (aka LocalPersonRowKey) EducationOrganizationId (integer, optional): It’s highly recommended that vendors send the EducationOrganizationId with the request. The the EducationOrganizationId field helps determine if Email and LocalPersonId should be returned for ApiKeys that are associated with more than one Education Organization. If this field is omitted, not valid, or is not authorized for the associated ApiKey, then the default EducationOrganizationId associated with the ApiKey will be used to determine if the Email and LocalPersonId should be returned. The fields Email and LocalPersonId are only returned if they are associated with final determining EducationOrganizationId. RESPONSE NOTES: The fields in red are specific to WI DPI implementation of Ed-Fi Identity. The fields Email and LocalPersonId are only returned if they are associated with final determining EducationOrganizationId (see additional notes above about the request field EducationOrganizationId). SearchKey is returned, which is required when using the create endpoint. This serves the purpose of requiring a search before creating a new WISEid person record. The SearchKey is only valid for a CREATE when using the same request parameters that were passed in the SEARCH (FirstName, LastName, Birthdate, etc.) and with the same API Key/Secret. The SearchKey expires after 10 mins. CONFIDENCE SCORE LOGIC If one exact or very close match results from a search (excludes synonyms) based on the core search fields provided in the request match, then a score of 100 will be generated. So 100 is a Best match - exact or very close match. If more than one exact or very close match exists based on the core search fields provided, a score of 80 + (Lucene score * .1) will be generated for each match. So any score >80 and <100 is in this range and is a Good match. Results that are not an exact or very close match to the core search fields but are > 3 in the Lucene scoring system will be given a score of 50 + (Lucene score * .1). So any score >50 and <80 is in this range and is a OK match. Results having a Lucene score less than 3 will not show up in the results (no changes from the original scoring rules. Anything with a score less than 50 is omitted). The sort order can be done from either score OR order of results returned by Identity API as they are the same descending order Only the top 30 score matches per person maximum will be returned. Even if scores are above the cut off they will be omitted if not in the top 30 results for that person. If a person has a Multiple Birth indicator = Y always send to match review no matter what you get above. Could be a twin with a similar name. BODY IdentitySearchResponse { Status (string, optional) = ['Incomplete' or 'Complete'], SearchKey (guid, optional), SearchResponses (array[IdentitySearchResponses], optional) } IdentitySearchResponses { Responses (array[IdentityResponse], optional) } IdentityResponse { UniqueId (string, optional), Score (number, optional), Anytime more than one possible match is returned, DO NOT automate the selection of a WISEid based on score or other logic. An LEA user needs to be presented with the possible matches and then manually select(see the confidence score logic above) LastSurname (string, optional), FirstName (string, optional), MiddleName (string, optional), GenerationCodeSuffix (string, optional), SexType (string, optional), BirthDate (string, optional), BirthOrder (integer, optional), BirthLocation (Location, optional) MultipleBirthIndicator (bool, option) IsHispanicLatino (bool, option) RaceKey (string, option) RaceCodes (array[string], option), A, B, I, P, W Locals (array[Local], optional), Names (array[Name], optional), other names ParentGuardianNames (array[Name], optional), Enrollments (array[Enrollment], optional), : Does not include DOC/ DHS, InactiveUniqueIds (array[string], option), Old (duplicate) UniqueIds for the student which were merged to the current UniqueId } Location { City (string, optional), StateAbbreviation (string, optional), InternationalProvince (string, optional), Country (string, optional), County (string, optional) } Local { EducationOrganizationId (integer, optional): it’s highly recommended that vendors send the EducationOrganizationId with the request. LocalPersonId (string, optional), : A string uniquely identifying the student for the Vendor Software Description (string, optional), : A description of the person local row key - ex. Manually created wise id Email (string, optional), TypeDescription (string, optional), : Either Student or Teacher WiseSecureRoleDescription (string, optional) : A role federation role Ex Student or Teacher } Name { FirstName (string, optional), MiddleName (string, optional), LastSurname (string, optional) } Enrollment { SchoolYear (integer, optional), School (SchoolReference, optional), EntryGradeLevelDescriptor (string, optional), EntryDate (date, optional), ExitWithdrawDate (date, optional) } SchoolReference { SchoolId (integer, optional), NameOfInstitution (string, optional), LocalEducationAgency (LocalEducationAgencyReference, optional) } LocalEducationAgencyReference { LocalEducationAgencyId (integer, optional), NameOfInstitution (string, optional) } EXAMPLE REQUEST: URL: https://apps.dpi.wi.gov/ For information on year-based extensions, please refer to the section. BODY: [
{
LastSurname: "HANSON",
FirstName: "JENNA LEA",
BirthDate: "1990-06-30T00:00:00",
MiddleName: "",
GenerationCodeSuffix: "",
SexType: "F",
LocalPersonId: "PID - 6673465",
EducationOrganizationId: 12337
}
] RESPONSE: BODY: {
"status": 1,
"searchKey": "6b055675-6f15-400d-8c7b-752bbe0ca2f9",
"searchResponses": [
{
"responses": [
{
"uniqueId": "1001052923",
"score": 34.86381,
"lastSurname": "HANSON",
"firstName": "JENNA LEA",
"middleName": "A",
"sexType": "F",
"birthDate": "1990-06-30T00:00:00",
"birthLocation": {},
"raceKey": "0031",
"MultipleBirthIndicator": true,
"isHispanicLatino": true,
"raceCodes": ["W"],
"locals": [
{
"educationOrganizationId": 12337,
"localPersonId": "PID - 6673465",
"description": "Uploaded on 2018-08-27",
"email": "6673465@dpi.wi.gov",
"typeDescription": "Staff",
"wiseSecureRoleDescription": "Teacher"
}
],
"names": [
{
"firstName": "JENNALEA",
"middleName": "A",
"lastSurname": "HANSON"
},
{
"firstName": "JENNA LEA",
"middleName": "A",
"lastSurname": "HANSON"
}
],
"parentGuardianNames": [
{
"firstName": "CYNTHIA",
"lastSurname": "HANSON",
"typeDescription": "Mother"
},
{
"firstName": "DAVID",
"lastSurname": "HANSON",
"typeDescription": "Father"
}
],
"enrollments": [
{
"schoolYear": 2008,
"school": {
"schoolId": 14956,
"nameOfInstitution": "Tomah Hi",
"localEducationAgency": {
"localEducationAgencyId": 15006,
"nameOfInstitution": "Tomah Area School District"
}
},
"entryGradeLevelDescriptor": "12",
"entryDate": "2007-07-01T00:00:00",
"exitWithdrawDate": "2008-06-06T00:00:00"
},
{
"schoolYear": 2007,
"school": {
"schoolId": 14956,
"nameOfInstitution": "Tomah Hi",
"localEducationAgency": {
"localEducationAgencyId": 15006,
"nameOfInstitution": "Tomah Area School District"
}
},
"entryGradeLevelDescriptor": "11",
"entryDate": "2006-07-01T00:00:00",
"exitWithdrawDate": "2007-06-30T00:00:00"
},
{
"schoolYear": 2006,
"school": {
"schoolId": 14956,
"nameOfInstitution": "Tomah Hi",
"localEducationAgency": {
"localEducationAgencyId": 15006,
"nameOfInstitution": "Tomah Area School District"
}
},
"entryGradeLevelDescriptor": "10",
"entryDate": "2005-07-01T00:00:00",
"exitWithdrawDate": "2006-06-30T00:00:00"
}
],
"inactiveUniqueIds": ["1234567890"]
}
]
}