Para fazer a verificação de impressão digital de um indivíduo, usa-se a operação verify, cujo URL é: https://api.biopassid.com/multibiometrics/verify. O corpo da requisição é composto por um objeto Person que possui os objetos CustomID, Fingers e Face. O campo CustomID deve ser preenchido com uma string que identifica o indivíduo no qual deseja verificar a biometria. No campo Fingers deve-se colocar um array que contém todas as strings de base64 que representam as imagens das impressões digitais do indivíduo a ser verificado. Por fim, no campo Face, não é necessário inserir nada, já que o sistema fará a verificação mesmo que não haja uma face sendo informada.

Um exemplo com o corpo da requisição pode ser visto abaixo:

{
  "Person": {
    "CustomID": "1234",
    "Fingers": [
        {
            "Finger-1": "SUkqABaNAQCAP4AQOCQWDQeEQmFQuGQ2HQ..."
        }
    ]
  }
}


Para o header, bastará colocar o tipo de conteúdo e sua chave de acesso, onde está escrito <API-KEY> no exemplo abaixo:

{
  'Content-Type': 'application/json-patch+json',
  'Ocp-Apim-Subscription-Key': '<API-KEY>'
}


Por fim, deve ser feito o pedido da requisição, informando o método POST, a URL, o header e o corpo da mensagem, conforme no exemplo abaixo, que foi escrito em Python, mas pode ser verificado em diversas outras linguagens de programação em nossa documentação:

import http.client
import json

conn = http.client.HTTPSConnection("hml-api.biopassid.com")
payload = json.dumps({
  "Person": {
    "CustomID": "1234",
    "Fingers": [
      {
        "Finger-1": "SUkqABaNAQCAP4AQOCQWDQeEQmFQuGQ2HQ..."
      }
    ]
  }
})
headers = {
  'Content-Type': 'application/json-patch+json',
  'Ocp-Apim-Subscription-Key': '<API-KEY>'
}
conn.request("POST", "/multibiometrics/verify", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))

Ao enviar a requisição, caso não encontre erros, o sistema retornará uma mensagem que também contém um objeto Person, com os atributos CustomID, que foi informado pelo programador na requisição, Match, que possui o valor booleano indicando se a as informações dadas coincidem com as contidas na base, e um atributo MatchDetails, que é composto por dois campos:

  1. FaceMatched: valor booleano que diz se a face deu compatibilidade. No caso de uma verificação exclusiva de impressão digital, em que uma face não foi informada, esse valor será por padrão falso.
  2. NonMatchedFingers: um array de strings que contém todas digitais que não são compatíveis. Isso inclui digitais que não foram oferecidas. Ou seja, se forem inseridas apenas três digitais, as outras sete serão retornadas por padrão como não compatíveis.

Um exemplo de resposta da requisição feita no exemplo pode ser verificado abaixo:

{
    "Person": {
        "CustomID": "1234",
        "Match": true,
        "MatchDetails": {
            "FaceMatched": false,
            "NonMatchedFingers": [
                "Finger-2",
                "Finger-3",
                "Finger-4",
                "Finger-5",
                "Finger-6",
                "Finger-7",
                "Finger-8",
                "Finger-9",
                "Finger-10"
            ]
        }
    }
}

Observe que na resposta foi identificado que ocorreu compatibilidade na verificação, mas que não houve compatibilidade na face, uma vez que não foi enviada uma para o sistema. Além disso, no array que contém os dedos que não foram compatíveis, todos os dedos do segundo ao décimo foram retornados, uma vez que também não foram enviados. O primeiro dedo, que foi o informado na requisição, foi o que resultou na compatibilidade.

Ao término do envio da requisição, caso receba uma mensagem com código de resposta 200 (OK), isso significa que a transação ocorreu com sucesso e a verificação foi concluída. Caso receba uma mensagem de erro, verifique se o conteúdo do corpo e da requisição e a chave de acesso foram preenchidos corretamente.