## VerifyPerson 🇸🇪 VerifyPerson service looks up a citizen’s address and birth data from the national population registry, by a narrowing query workflow with 18 separate query steps. The query must include the `countryCode`, and currently only countryCode “se”, Sweden, is supported. The response count is currently limited to at most one best hit. But in case of not single best hit available a “No hit” will be returned. The hit is of type: **[address](https://docs.zignsec.com/faq/common-data/#addressmodel)** . ### API [Set up:](https://developers.zignsec.com/legacy/register-checks#verifyPerson) POST to _https://`env`.zignsec.com/v2/ekyc/verifyperson_ where `env` is **API** or **test**. ## Request |**Name**|**Description**|**Required**| |---|---|---| |Query|[Address](https://docs.zignsec.com/faq/common-data/#addressmodel) model|Required| |PersonalNumber|Personal number. Give as 12 digits.|Optional| |DateOfBirth|Give as `yyyymmdd`/`yyyy-mm-dd`, `yyyymm`/`yyyy-mm` or `yyyy`. The hyphen separating the date parts is optional.|Optional| |MatchSteps|Gives a possibility to limit what kind of queries to include. Default is all rules: 1,2,3,...18<br><br>- 1 – personalNumber, firstName, lastName, address, postalCode, city<br>- 2 – personalNumber, firstName, lastName, postalCode<br>- 3 – personalNumber, firstName, lastName, city<br>- 4 – personalNumber, firstName, lastName<br>- 5 – personalNumber, phoneNr<br>- 6 – personalNumber<br>- 7 – firstName, lastName, address, postalCode, city<br>- 8 – firstName, lastName, address, postalCode<br>- 9 – firstName, lastName, address, city<br>- 10 – firstName, lastName, address<br>- 11 – firstName, lastName, postalCode, city<br>- 12 – firstName, lastName, postalCode<br>- 13 – firstName, lastName, postalCode(first two)<br>- 14 – firstName, lastName, city<br>- 15 – firstName, lastName<br>- 16 – firstName, lastName, phoneNr<br>- 17 – firstName, postalCode, phoneNr<br>- 18 – lastName, postalCode, phoneNr|Optional| |VerifyAge|Sets the Verify Age of searched person. There is `AgeVerificationFaulted` in response model that set verified user or not.|Optional| **Request example:** ```swift POST https://test.zignsec.com/v2/ekyc/verifyperson HTTP/1.1 Content-Type: application/json; charset=UTF-8 Authorization: yourkey-here. { "Query":{ "FirstName":"Sara Maria", "LastName":"Karlsson", "Gender":"Female", "Address":"Vasavägen", "PostalCode":"67040", "CountryCode": "se" } } ``` **Response** on root level |**Name**|**Description**| |---|---| |WasFound|Boolean.| |Persons|Array of hits, currently at most one best hit. [Address](http://docs.zignsec.com/api/common-data/#addressmodel) model.| |ResponseCode|String. Possible values `SingleMatch`, `MultipleMatches`, `TooManyMatches`, `NoMatch`.| Address model you can find [here](https://docs.zignsec.com/faq/common-data/#addressmodel). There are additional fields to model: |**Name**|**Description**| |---|---| |AgeVerificationFaulted|Boolean. Indicates that the user has a verified by age set in the request field `VerifyAge`| |MatchedStep|Specifies, which rule was run to get the hit(s).| |MatchedStepDescription|Specifies, in [text form](https://developers.zignsec.com/legacy/register-checks#MatchStepDescription), which rule was run to get the hit(s). `personalNumber` string can be replaced by `personalNumber (partial)` if the search includes a `dateOfBirth` field.| ### How to test Here is a link to an excel sheet which contains test data which can be used to test the products. [Link to testdata](https://25357801.fs1.hubspotusercontent-eu1.net/hubfs/25357801/Support%20Files/TestdatabasPersoner.xlsx)