Introduction
Bem vindo à API de Reconhecimento Facial da Zaig! Você pode usar a nossa API para acessar os endpoints, cadastrar fotos de clientes e realizar o reconhecimento facial destes antes da execução de transações.
Problemas?
Nós não somos uma companhia que se esconde atrás de uma API! Entre em contato com o nosso suporte e nós responderemos o mais rápido possível. Fique à vontade para nos ligar caso deseje uma resposta rápida!
Adoramos Feedback
Mesmo que você já tenha resolvido o seu problema ou que ele seja muito simples (Até mesmo um typo ou uma organização inadequada que você já entendeu), envie-nos um e-mail, assim nós tornamos a documentação cada vez mais prática e a próxima pessoa não vai precisar sofrer as dores que você sofreu!
Ambientes
Possuímos dois ambientes para os nossos clientes. A URL base das APIs são:
- Produção -
https://api.caas.qitech.app/face_recognition/
- Sandbox -
https://api.sandbox.caas.qitech.app/face_recognition/
Somente HTTPS
Por questão de segurança, toda a comunicação com as APIs da Zaig devem ser realizadas utilizando a comunicação HTTPS. Para garantir que, por desatenção ou qualquer outro motivo, não ocorram chamadas HTTP, este servidor somente disponibiliza a porta 443 com comunicação TLS 1.2. Chamadas realizadas utilizando outros protocolos serão automaticamente negadas.
Autenticação
Para autenticar uma chamada, utilize o código seguinte:
# No shell, você somente precisa adicionar o header adequado em cada requisição
curl "api_endpoint_here"
-H "Authorization: EXAMPLE_API_KEY"
Substitua a API key 'EXAMPLE_API_KEY' com a sua chave adquirida com o nosso suporte.
Utilizamos uma API Key para permitir acesso a nossa API. Ela provavelmente já foi enviada por e-mail para você. Caso ainda não tenha recebido a sua chave, envie um e-mail para suporte.caas@qitech.com.br.
Nossa API espera receber a API Key em todas as requisições ao nosso servidor em um header como o abaixo:
Authorization: EXAMPLE_API_KEY
Imagem
O envio de uma foto de rosto é mandatório para a utilização de nossa API de reconhecimento facial. Visando garantir uma maior confiabilidade das análises executadas, é necessário que o cliente siga algumas regras na hora de tirar a foto:
- A foto deve conter apenas um rosto;
- Todo o rosto deve estar visível na foto;
- O rosto deve ocupar ao menos 15% da area da foto;
- O rosto deve estar encarando a câmera e paralelo a ela;
- O rosto deve estar com os olhos abertos;
- O rosto deve estar com a boca fechada;
- O rosto deve possuir expressão neutra e sem sorrisos;
- O rosto não deve estar coberto por nenhum tipo de acessório (chapéus, óculos ou máscaras).
Além disso, somente imagens .jpeg e .png com tamanho máximo de 3mb serão aceitas.
Envio de arquivos
Exemplo de envio de imagem
{
"image": "base64_image_code"
}
Exemplo de retorno
{
"image_key": "f4b5337a-7b50-406e-8c8e-7d0e77b5aa02",
"file_size": 47407,
"width_px": 0,
"height_px": 0,
"created_at": "2020-07-29T18:40:57Z"
}
Em casos que seja necessário o envio de uma imagem sem a execução imediata das rotinas de cadastro ou validação facial, um objeto JSON contendo o Base64 da imagem deve ser enviado. Para tal deve-se enviar uma requisição do tipo POST para o endpoint:
https://api.caas.qitech.app/face_recognition/image
Uma vez enviada, a imagem será submetida a testes de qualidade e, caso aprovada, será retornado um JSON contendo a chave de acesso à imagem. Essa chave deverá ser usada para referenciar a foto durante o cadastro ou validação facial.
Validação de qualidade da imagem
Exemplo de retorno em caso de imagem inválida
{
"title": "image_quality",
"description": "This image was not approved in quality assessment. The face is too close to image edges.",
"image_status": "not_center"
}
Ao realizar um post no endpoint de imagem, caso a imagem não seja suficiente para validação, um HTTP Status Code 400 será retornado.
O valor do campo description é a mensagem que explica o motivo da imagem ser inválida.
Além disso, retornamos um enumerador image_status para que seja maepado o motivo da imagem ser inválida. Abaixo temos a listagem dos possíveis image_status:
image_status | descrição |
---|---|
no_faces | Nenhum rosto identificado. |
multiple_faces | Mais de um rosto identificado. |
close_face | Rosto muito próximo à câmera. |
distant_face | Rosto muito distante à câmera. |
not_centered | Rosto não está centralizado o suficiente. |
inclined_face | Rosto está inclinado. |
wearing_acessories | Pessoa está utilizando acessórios que cobrem parte do rosto. |
facial_expression | A pessoa está com a boca aberta, sorrindo ou com os olhos fechados. |
brightness_problem | A imagem não está com a iluminação adequada. |
sharpness_problem | A imagem não está nítida o suficiente. |
Atenção - Existem outros motivos pelos quais retornaremos 400 (Todos relacionados a dados inválidos). Somente os retornos com title "image_quality" são resultantes da validação de qualidade da imagem e portanto devem ser repassados ao usuário.
Recuperação dos arquivos
Recuperação de imagem
curl "https://api.caas.qitech.app/face_recognition/image/f4b5337a-7b50-406e-8c8e-7d0e77b5aa02/file" \
-H "Authorization: EXAMPLE_API_KEY"
Em qualquer momento é possível recuperar as imagens enviadas. Para isso, basta enviar uma requisição GET adequadamente autenticada no endpoint:
https://api.caas.qitech.app/face_recognition/image/{image_key}/file
Onde image_key é o valor retornado durante o envio da imagem.
Recuperação de arquivo processado
Recuperação de imagem processada
curl "https://api.caas.qitech.app/face_recognition/image/f4b5337a-7b50-406e-8c8e-7d0e77b5aa02/cropped_file" \
-H "Authorization: EXAMPLE_API_KEY"
Após a associação de uma imagem a um cadastro ou uma validação, essa imagem será processada e uma nova imagem contendo apenas o rosto utilizado nas rotinas de reconhecimento facial será gerada.
Esta imagem está disponível para ser recuperada através de uma requisição GET, adequadamente autenticada, no endpoint:
https://api.caas.qitech.app/face_recognition/image/{image_key}/cropped_file
Onde image_key é o valor retornado durante o envio da imagem base.
Recuperação dos meta-dados do arquivo
Recuperação de meta dados
curl "https://api.caas.qitech.app/face_recognition/image/f4b5337a-7b50-406e-8c8e-7d0e77b5aa02" \
-H "Authorization: EXAMPLE_API_KEY"
Após o envio de uma imagem para a API, é possível recuperar os meta-dados da imagem utilizando o endpoint:
https://api.caas.qitech.app/face_recognition/image/{image_key}
Onde image_key é o valor retornado durante o envio da imagem.
Padrões
Para facilitar a integração e garantir a integridade da informação, foram definidos alguns padrões que são seguidos em toda a API.
Data e Hora com Fuso Horário
Alguns exemplos:
2019-10-15T22:35:12-03:00
2018-05-01T13:32:11+00:00
2019-05-01T00:00:00+00:00
É representada conforme a ISO 8601. Neste caso, o fuso-horário é colocado logo após o horário e deve representar o fuso do local onde aquele dado será valido. Por exemplo, se um aluguel estiver marcado para começar às 09:30 no aeroporto de Brasília, o horário enviado deverá ser representado por 09:30-03:00, se o aluguel estiver marcado para começar às 09:30 em Manaus, deverá ser representado por 09:30-04:00.
A máscara utilizada para validação é a seguinte:
YYYY-MM-ddThh:mm:ss±hh:mm
Data e Hora sem Fuso Horario
Alguns exemplos:
2019-10-15T22:35:12Z
2018-05-01T13:32:11Z
2019-05-01T00:00:00Z
É representada conforme a ISO 8601. Dados que independem de fuso-horário deverão ser enviados sem ele, sempre em UTC, com a letra Z indicando que este dado está em UTC. O seguinte formato, portanto, será validado:
YYYY-MM-ddThh:mm:ssZ
Data
Alguns exemplos
2019-10-15
2019-01-01
2017-03-20
No caso de campos que recebem somente data, uma data de nascimento, por exemplo, somente a data, sem nenhum horário deve ser enviada com o seguinte formato:
YYYY-MM-dd
Documentos
Uma vez que os números de documento são bastante variados e muitos deles possuem caracteres que não se enquadram como numéricos, definem-se todos os números de documento como string. Outro bom motivo para definí-los como string é evitar que os zeros à esquerda desapareçam. Documentos previstos nesta página possuem uma máscara bem definida e estarão sujeitos a validação. O restante dos documentos, como RG, dada sua falta de padronização, não serão validados.
CPF
Exemplos de CPFs válidos contra a máscara definida:
123.456.789-12
321.987.543-23
111.283.333-00
Exemplos de CPFs inválidos contra a máscara definida:
8.577.477-8
08.104.627/0001-23
123.456.789-1
23.456.789-01
O CPF é sempre definido como uma string e será validado contra a máscara:
###.###.###-##
Status HTTP
Todas as APIs da Zaig utilizam a seguinte padronização nos status HTTP de retorno, de acordo com o RFC 7231:
Status HTTP | Significado | Descrição |
---|---|---|
400 | Bad Request | A requisição enviada possui algum erro de formatação. Na maioria dos casos, retornamos no corpo da mensagem uma explicação de onde está o erro. |
401 | Unauthorized | Houve algum problema na autenticação, verifique se a API Key está correta e no header correto, de acordo com a seção Autenticação. |
403 | Forbidden | O endpoint acessado é de uso interno e não está disponível para esta API Key. |
404 | Not Found | O dado requisitado não foi encontrado usando a chave utilizada. Este status também é retornado quando um endpoint inválido é requisitado. |
405 | Method Not Allowed | O método HTTP utilizado não se aplica ao endpoint utilizado. |
406 | Not Acceptable | Os dados enviados no corpo da requisição são inválidos. Em geral, isso significa que os dados enviados não são um JSON válido. |
409 | Conflict | O id da requisição corresponde a um id já processado anteriormente. Este status é retornado no caso de requisições duplicadas enviadas ao servidor. |
500 | Internal Server Error | Tivemos um problema para processar esta requisição, ao encontrarmos esse erro nossos especialistas são automaticamente notificados e iniciam a análise e solução imediatamente. |
503 | Service Unavailable | Você se deparou com uma indisponibilidade, planejada ou não, de infraestrutura dos nossos servidores. |