Vision / Workflow:
...
Vision / Workflow:
Ideally, the SIS vendors will implement a real-time (versus batch) identity solution in their software which will allow district/school staff to review matches as they add students (instead of having to review after a batch upload).
...
The first step in creating an identity is to do a search to make sure the identity doesn’t exist already. The search will provide a search key which MUST be provided when doing a create. This is not part of the standard Ed-Fi identity implementation.
Additional Wisconsin-specific fields for API requests for each endpoint (GET, FIND, SEARCH, CREATE) are in red in their respective sections.
GET
Expand | |||||
---|---|---|---|---|---|
REQUEST
RESPONSE
IdentityResponse { UniqueId (string, optional), Score (number, optional), 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) } EXAMPLEREQUEST: URL: https://apps.dpi.wi.gov/EdFiWebApi/identity/v2/2023/identities/1001052923 RESPONSE: BODY:
|
...
FIND
Expand | |||||
---|---|---|---|---|---|
REQUEST
RESPONSE
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), 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 (or staff) for the Vendor Software (aka LocalPersonRowKey) 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) } EXAMPLEREQUEST
RESPONSE
|
...
SEARCH
Expand | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
REQUEST
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
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 manual select. CONFIDENCE SCORE LOGIC If one exact or very close match results from a search (excludes synonyms) where 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 < 3 will not show up in the results (no changes from original scoring rules). 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 25 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 25 results for that person. 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) } EXAMPLEREQUEST:
RESPONSE:
|
...
CREATE
Expand | |||||
---|---|---|---|---|---|
REQUEST
IdentityCreateRequest { SearchKey: (GUID, required), LastSurname (string, required), FirstName (string, required), MiddleName (string, optional), GenerationCodeSuffix (string, optional), SexType (string, required), BirthDate (string, required), BirthOrder (integer, optional), BirthLocation (Location, optional), RaceCodes (array[string], required ), A, B, I, P, W MultipleBirthIndicator (bool, optional) IsHispanicLatino: (bool, required), Locals (array[Local], required), Names (array[Name], optional), other names ParentGuardianNames (array[Name], required) : At least one 'Parent/Guardian' record is required for each person record when they have a 'Local Person ID Key Type' that equals 'Student' } 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. This should be the LocalEducationAgencyId and not the SchoolId. LocalPersonId (string, required), : A string uniquely identifying the student (or staff) for the Vendor Software (aka LocalPersonRowKey) Description (string, optional), : A description of the person local row key - ex. Manually created wise id Email (string, optional), TypeDescription (string, required), : 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) } RESPONSE
UniqueId (string, optional): This is the same as a WISEid EXAMPLEREQUEST:
RESPONSE:
|
...