# Início

Disponibilizamos uma API caso queira uma integração mais personalizada com possibilidade de acesso direto de sua aplicação aos serviços do BioDoc, permitindo personalização de fluxo e visualizações, sendo possível integrar a qualquer solução que desejar como por exemplo autenticação em aplicativos mobile, autenticação para acesso restrito de locais, autenticação para pagamentos, livro de registro de pessoas visitantes, etc.

# Autenticação

É obrigatório o envio do Token através do header Authorization incluindo a palavra 'Bearer'.

# Exemplo

  • Respostas - Status Code:
Code Descrição
200 Requisição processada com sucesso
201 Requisição processada, dados criados com sucesso
400 Requisição mal formada, parâmetros inválidos
401 Erro de autorização
403 Acesso não permitido
422 Requisição recebida, no entanto, não foi possível concluir o processamento com êxito
500 Erro interno
// ajax
$.ajax({
  url: 'ENDPOINT',
  headers: {
    'Authorization': `Bearer ${TOKEN DA EMPRESA}`,
  },
  method: 'MÉTODO DO ENDPOINT',
  data: PARAMETROS,
  success: function(data){
    console.log('success: '+data);
  }
});

// axios
axios({
  method: 'MÉTODO DO ENDPOINT',
  url: ENDPOINT,
  data: PARAMETROS,
  headers: { 'Authorization': `Bearer ${TOKEN DA EMPRESA}` }
});


# Ambientes de Integração

# Sandbox

Ambiente de testes e desenvolvimento:

URL

https://api.sandbox.biodoc.com.br/api

# Produção

Ambiente de produção:

URL

https://api.biodoc.com.br/api

# Endpoints

Nesta sessão, abordaremos os Endpoints disponíveis para a troca de informação entre seu sistema e o BioDoc.

ATENÇÃO

Caso necessite de alguma informação não disponível nos endpoints da API, entre em contato com nosso Suporte para que possamos evoluir os retornos de nossa API.


# /card/integration/mainimage

  • Descrição: Endpoint responsável por realizar a busca da imagem principal de um cartão.
  • Método: GET
  • Formato dos parâmetros: query

# Parâmetros da Requisição

Parâmetro Descrição Formato Obrigatório
idCard Número Identificador do Cartão string Sim
procedure Código do Procedimento string Não
// Exemplo da chamada

const PARAMETROS = {
      idCard: "12345678901234567",
      procedure: "1234567"
}

// ajax
$.ajax({
    url: URL + '/card/integration/mainimage',
    headers: {
        'Authorization': `Bearer ${TOKEN DA EMPRESA}`
    },
    method: 'GET',
    data: PARAMETROS,
    success: function(data){
      console.log('success: '+data);
    }
  });

// axios
axios({
    method: 'GET',
    url: URL + '/card/integration/mainimage',
    data: PARAMETROS,
    headers: {
        'Authorization': `Bearer ${TOKEN DA EMPRESA}`,
        'Content-Type': 'application/json'
    }
});

# Resposta

Parâmetro Descrição Formato Retorno / Observação
cardStatus Status do cartão informado int Enum de Status
name Nome do Beneficiário string
mainImage URL temporária da imagem de verificação do cartão string A URL possuí prazo de expiração
quantityJustifies Quantidade de Justificativas int Justificativas totais já realizadas pelo beneficiario
base64Image Base64 da imagem do beneficiario string
releaseBiometric Isento de Biometria bool Caso true a biometria deve ser dispensada
closeTopLocation Atualizar a url do frame bool
markFace Adicionar identificador para centralizar face bool Configuração da empresa, caso true no atendimento deve aparecer uma marcação onde deve centralizar a face
livenessActive Adicionar camada de verificação de foto de foto bool Configuração da empresa, caso true a verificação passará por uma análise, verificando se é uma foto de foto ou uma foto real do beneficiário
livenessVersion Selecionar modelo do Liveness, ativo ou passivo. string Configuração da empresa, caso 1.0 a verificação do Liveness será no modelo passivo, caso 2.0 será no modelo ativo
automaticAprove Atualização de imagem automatica bool Configuração da empresa, caso true a solicitação será aprovada autamaticamente
verifyCardCompany Verificar regra de intercâmbio bool Configuração da empresa, caso true será verificado a regra de intercâmbio
registerNoImage Registrar sem imagem bool Configuração da empresa, caso true poderá fazer um cadastro sem o envio de uma imagem
changeImage Atualizar imagem bool Configuração da empresa, caso true o local de atendimento pode abrir uma solicitação de troca de imagem
justify Justificar bool Configuração da empresa, caso true o local de atendimento pode realizar justificativa
justifyAfterAttempts Justificativa na verificação bool Configuração da empresa, caso true após três falhas consecutivas de verificação, terá a possibilidade de realizar uma justificativa e prosseguir sem biometria

ENUM DE STATUS

1 = Biometria com imagem;

2 = Beneficiário não cadastrado;

3 = Biometria sem imagem;

4 = Solicitação de troca de imagem obrigatória;

5 = Alteração de biometria pendente;

6 = Alteração de biometria obrigatória pendente;


// Exemplo de resposta da chamada

{
  data: {
    "cardStatus": 1,
    "name": "NOME DO BENEFICIÁRIO",
    "mainImage": "URL TEMPORÁRIA DA IMAGEM",
    "quantityJustifies": 2,
    "releaseBiometric": false,
    "base64Image": "BASE DA IMGEM",
    "closeTopLocation": false,
    "markFace": false,
    "livenessActive": true,
    "livenessVersion": "2.0",
    "automaticAprove": false,
    "verifyCardCompany": false,
    "registerNoImage": false,
    "changeImage": false,
    "justify": false,
    "justifyAfterAttempts": true
  }
}


# /integrations/justify

  • Descrição: Endpoint Realiza a busca de justificativas cadastradas para o token informado.
  • Método: GET
  • Formato dos parâmetros: QueryString

# Parâmetros da Requisição

Parâmetro Descrição Formato Obrigatório
message Quando informado realiza filtro entre as justificativas cadastradas String Não
// Exemplo da chamada

// ajax
$.ajax({
    url: URL + '/integrations/justify?message=TEXTO',
    headers: {
        'Authorization': `Bearer ${TOKEN DA EMPRESA}`,
        'Content-Type': 'application/json'
    },
    method: 'GET',
    success: function(data){
      console.log('success: '+data);
    }
  });

// axios
axios({
    method: 'GET',
    url: URL + '/integrations/justify?message=TEXTO',
    headers: {
        'Authorization': `Bearer ${TOKEN DA EMPRESA}`,
        'Content-Type': 'application/json'
    }
});

# Resposta

[
  {
    id: 1,
    message: "Urgência",
    id_Company: 1,
    active: true,
    company: null,
    cardImage: null,
    logs: null,
  },
  {
    id: 2,
    message: "Problema na câmera",
    id_Company: 1,
    active: true,
    company: null,
    cardImage: null,
    logs: null,
  },
];

# /card/register

  • Descrição: Endpoint responsável pelo cadastro do cartão do beneficiário
  • Método: POST
  • Formato dos parâmetros: json

# Parâmetros da Requisição

Parâmetro Descrição Formato Obrigatório
id Número Identificador do Cartão string Sim
name Nome do beneficiário string Sim
image Imagem capturada em Base64 string / Base64 Sim
detail JSON com chave/valor com detalhes e maiores informações que gostaria de guardar no cadastro string / JSON Não
// Exemplo da chamada

const PARAMETROS = {
    "id": "123456781100",
    "name": "Usuario para Testes",
    "image": "Base64String",
    "detail": "{'guia': '123456', 'prestador' : '123'}",
};

// ajax
$.ajax({
    url: URL + '/integrations/register',
    headers: {
        'Authorization': `Bearer ${TOKEN DA EMPRESA}`,
        'Content-Type': 'application/json'
    },
    method: 'POST',
    data: PARAMETROS,
    success: function(data){
      console.log('success: '+data);
    }
  });

// axios
axios({
    method: 'POST',
    url: URL + '/integrations/register',
    data: PARAMETROS,
    headers: {
        'Authorization': `Bearer ${TOKEN DA EMPRESA}`,
        'Content-Type': 'application/json'
    }
});

# Resposta

{
    "data": {
        "reference_Id": "a7601509-6dd6-4b4a-9a05-2e751305f046"
    },
    "token": null
};

# /card/integration/verify'

  • Descrição: Endpoint responsável por realizar a verificação de face.
  • Método: POST
  • Formato dos parâmetros: formData

# Parâmetros da Requisição

Parâmetro Descrição Formato Obrigatório
id Número Identificador do Cartão string Sim
image Imagem capturada em Base64 string / Base64 Sim
detail JSON com chave/valor com detalhes e maiores informações que gostaria de guardar no cadastro string / JSON Não
// Exemplo da chamada

// criando o formData para enviar na requisição
const PARAMETROS = {
    "id": "123456781100",
    "image": "Base64String",
    "detail": "{'guia': '123456', 'prestador' : '123'}",
};

// ajax
$.ajax({
    url: URL + '/integrations/verify',
    headers: {
        'Authorization': `Bearer ${TOKEN DA EMPRESA}`,
        'Content-Type': 'multipart/form-data'
    },
    method: 'POST',
    data: PARAMETROS,
    success: function(data){
      console.log('success: '+data);
    }
  });

// axios
axios({
    method: 'POST',
    url: URL + '/card/integration/verify',
    data: PARAMETROS,
    headers: {
        'Authorization': `Bearer ${TOKEN DA EMPRESA}`,
        'Content-Type': 'multipart/form-data'
    }
});

# Resposta

{
    "percentage": "100%",
    "response": {
        "id_Log": 1,
        "percentage": "100%",
        "success": true,
        "status": 2,
        "message": "Sucesso ao realizar autenticação, nível de similaridade 100% e qualidade 86,86%.",
        "url": "https://api.sandbox.biodoc.com.br/api/file/1",
        "reference_Id": "ffe92be9-46cf-44e4-ac38-9190cd34d1f3"
    }
};

# /integrations/verify

  • Descrição: Endpoint responsável por realizar a verificação de face.
  • Método: POST
  • Formato dos parâmetros: Body

# Parâmetros da Requisição

Parâmetro Descrição Formato Obrigatório
id Número Identificador do Cartão string Sim
image Imagem capturada em Base64 Base64 Sim
detail JSON com chave/valor com detalhes e maiores informações que gostaria de guardar no cadastro string Sim
// Exemplo da chamada

const PARAMETROS = {
      id: "12345678901234567",
      image: "Base64 Image",
      detail: "{'guia': '123456', 'prestador' : '123'}",
}

// ajax
$.ajax({
    url: URL + '/integrations/verify',
    headers: {
        'Authorization': `Bearer ${TOKEN DA EMPRESA}`,
        'Content-Type': 'application/json'
    },
    method: 'POST',
    data: PARAMETROS,
    success: function(data){
      console.log('success: '+data);
    }
  });

// axios
axios({
    method: 'POST',
    url: URL + '/integrations/verify',
    data: PARAMETROS,
    headers: {
        'Authorization': `Bearer ${TOKEN DA EMPRESA}`,
        'Content-Type': 'application/json'
    }
});

# Resposta

{
    "id_Log": 1000,
    "percentage": "100%",
    "success": true,
    "status": 2,
    "message": "Sucesso ao realizar autenticação, nível de similaridade 100% e qualidade 100%.",
    "url": "https://api.sandbox.com.br/api/file/305",
    "reference_Id": "0c19bfff-9aba-4517-afd7-56e77ea1faeb"
};

# /card/release

  • Descrição: Endpoint responsável por realizar a isenção do beneficiário.
  • Método: POST
  • Formato dos parâmetros: json
  • Observação: O beneficiário deve ser isento se após a consulta o parâmetro releaseBiometric vier como true.

# Parâmetros da Requisição

Parâmetro Descrição Formato Obrigatório
id_card Número Identificador do Cartão string Sim
name Nome do beneficiário string Sim
// Exemplo da chamada

const PARAMETROS = {
      id_card: "12345678901234567",
      name: "Nome do Beneficiário",
}

// ajax
$.ajax({
    url: URL + '/card/release',
    headers: {
        'Authorization': `Bearer ${TOKEN DA EMPRESA}`,
        'Content-Type': 'application/json'
    },
    method: 'POST',
    data: PARAMETROS,
    success: function(data){
      console.log('success: '+data);
    }
  });

// axios
axios({
    method: 'POST',
    url: URL + '/card/release',
    data: PARAMETROS,
    headers: {
        'Authorization': `Bearer ${TOKEN DA EMPRESA}`,
        'Content-Type': 'application/json'
    }
});

# Resposta

{
    "data": {
        "id_Log": 1111,
        "message": "Realizado por meio da isenção!",
        "reference_Id": "66523b92-ff52-49ea-96a3-4d0d47956c10"
    },
    "token": null
};

# /card/integration/setnewimage

  • Descrição: Endpoint seta a obrigatoriedade de uma nova foto.
  • Método: POST
  • Formato dos parâmetros: body

# Parâmetros da Requisição

Parâmetro Descrição Formato Obrigatório
id Número Identificador do Cartão string Sim
// Exemplo da chamada

const PARAMETROS = {
      id: "12345678901234567",
}

// ajax
$.ajax({
    url: URL + '/card/integration/setnewimage',
    headers: {
        'Authorization': `Bearer ${TOKEN DA EMPRESA}`,
        'Content-Type': 'application/json'
    },
    method: 'POST',
    data: PARAMETROS,
    success: function(data){
      console.log('success: '+data);
    }
  });

// axios
axios({
    method: 'POST',
    url: URL + '/card/integration/setnewimage',
    data: PARAMETROS,
    headers: {
        'Authorization': `Bearer ${TOKEN DA EMPRESA}`,
        'Content-Type': 'application/json'
    }
});


# /card/integration/justify

  • Descrição: Endpoint reponsável por realizar uma justificativa (sem foto).
  • Método: POST
  • Formato dos parâmetros: body

# Parâmetros da Requisição

Parâmetro Descrição Formato Obrigatório
id Número Identificador do Cartão string Sim
name Nome do Beneficiário do Cartão string Sim
IdJustifyMessage Id retornado do endpoint ### /integrations/justify Integer Não
justify Justificativa de Verificação sem captura de Formato string Sim
detail JSON com chave/valor com detalhes e maiores informações que gostaria de guardar no cadastro string / JSON Não
// Exemplo da chamada

const PARAMETROS = {
      id: "12345678901234567",
      name: "Nome do Beneficiario"
      IdJustifyMessage: 1
      justify: "Justificativa para o cadastro sem foto",
      detail: "{'guia': '123456', 'prestador' : '123'}",
}

// ajax
$.ajax({
    url: URL + '/card/integration/justify',
    headers: {
        'Authorization': `Bearer ${TOKEN DA EMPRESA}`,
        'Content-Type': 'application/json'
    },
    method: 'POST',
    data: PARAMETROS,
    success: function(data){
      console.log('success: '+data);
    }
  });

// axios
axios({
    method: 'POST',
    url: URL + '/card/integration/justify',
    data: PARAMETROS,
    headers: {
        'Authorization': `Bearer ${TOKEN DA EMPRESA}`,
        'Content-Type': 'application/json'
    }
});

# Resposta

{
    "data": {
        "reference_Id": "a7601509-6dd6-4b4a-9a05-2e751305f046"
    },
    "token": null
};

# /requestnewimage

  • Descrição: Endpoint responsável por sugerir uma nova foto para autenticação.
  • Método: POST
  • Formato dos parâmetros: Form Data

# Parâmetros da Requisição

Parâmetro Descrição Formato Obrigatório
idCard Número Identificador do Cartão string Sim
image Imagem capturada em Base64 Base64 Sim
description Justificativa da sugestão de troca de foto string Sim
// Exemplo da chamada

// criando o formData para enviar na requisição
const PARAMETROS = {
      idCard: "12345678901234567",
      image: "Base64 Image",
      description: "Solicitação de nova imagem",
}

// ajax
$.ajax({
    url: URL + '/requestnewimage',
    headers: {
        'Authorization': `Bearer ${TOKEN DA EMPRESA}`,
        'Content-Type': 'multipart/form-data'
    },
    method: 'POST',
    data: PARAMETROS,
    success: function(data){
      console.log('success: '+data);
    }
  });

// axios
axios({
    method: 'POST',
    url: URL + '/requestnewimage',
    data: PARAMETROS,
    headers: {
        'Authorization': `Bearer ${TOKEN DA EMPRESA}`,
        'Content-Type': 'multipart/form-data'
    }
});

# Resposta

{
    "data": null,
    "token": null
};

# /integrations/log/{reference_Id}

  • Descrição: Endpoint responsável por consultar uma interação pelo reference_Id.
  • Método: GET
// Exemplo da chamada

// ajax
$.ajax({
  url: URL + '/integrations/log/' + reference_Id,
  headers: {
    'Authorization': `Bearer ${TOKEN DA EMPRESA}`,
    'Content-Type': 'application/json'
  },
  method: 'GET',
  success: function(data){
    console.log('success: '+data);
  }
});

// axios
axios({
  method: 'POST',
  url: `${URL}/integrations/log/${reference_Id}`,
  headers: {
    'Authorization': `Bearer ${TOKEN DA EMPRESA}`,
    'Content-Type': 'application/json'
  }
});

# Resposta

{
    "id": 1,
    "id_Card": "12345678901234567",
    "description": "Descrição da Interação",
    "observation": null,
    "date": "Data da interação",
    "status": 2,
    "path": "URL Temporária da imagem",
    "id_Company": 100,
    "required": null,
    "detail": null,
    "mainImage": "URL Temporária da imagem",
    "name": "Nome do Beneficiário",
    "userName": null,
    "lastUpdate": null,
    "auditor": null,
    "containsHistory": false,
    "thumbNail": null,
    "reguiredName": "Nome da empresa que realizou a interação",
    "json": null
};

# /card/integration/deleteMany

  • Descrição: Endpoint para exclusão de cadastros de beneficiários na aplicação. Podem ser utilizados para exclusão de 1 ou mais registros, limitados a 50.
  • Método: POST
  • Formato dos parâmetros: body

# Parâmetros da Requisição (Limitado à 50 Id's):

Parâmetro Descrição Formato obrigatório
idCard Número Identificador do Cartão array Sim
// Exemplo da chamada

const PARAMETROS = {
      idList: [ "12345678901234567" ]
}

// ajax

$.ajax({
    url: URL + '/card/integration/deleteMany',
    headers: {
        'Authorization': `Bearer ${TOKEN DA EMPRESA}`,
        'Content-Type': 'application/json'
    },
    method: 'POST',
    data: PARAMETROS,
    success: function(data){
      console.log('success: '+data);
    }
  });

// axios
axios({
    method: 'POST',
    url: URL + '/card/integration/deleteMany',
    data: PARAMETROS,
    headers: {
        'Authorization': `Bearer ${TOKEN DA EMPRESA}`,
        'Content-Type': 'application/json'
    }
});

# Resposta

  • Descrição: Objeto data com o seguinte conteúdo:
Parâmetro Descrição Formato
allSuccess Retorna false se ocorreu algum erro boolean
menssage Se todos os registros foram removidos com sucesso, será retornado: "Todos os registros foram removidos com sucesso." Caso não for possível remover algum registro da lista, será retornado: "A solicitação de exclusão de registros foi finalizada com exceções." string
listStatus Retorna uma lista com o status da remoção de cada registro array
idCard identificador do registro string
deleted caso true a carteirinha foi removida boolean
message mensagem amigável do status dessa carteirinha string
imageList Lista com status das imagens salvas dessa carteirinhaimagList array
key Identificador da imagem int
deleted true se a imagem foi removida boolean
{
 "result": {
   "allSuccess": true,
   "listStatus": [
      {
       "idCard": "10574705971",
       "deleted": true,
       "message": "Registro removido com sucesso.",
       "imageList": [
         {
           "key": 10047857,
           "deleted": true
        }
       ]
      }
    ],
    "message": "Todos os registros foram removidos com sucesso.""
  }
}


# /logs/external-audits

  • Descrição: Endpoint Realiza a busca de auditorias.
  • Método: GET
  • Formato dos parâmetros: QueryString

# Parâmetros da Requisição

Parâmetro Descrição Formato Obrigatório
idCard Carteirinha do beneficiário para busca das auditorias String Sim
initialDate Quando informada realiza busca com este início de data String Não
endDate Quando informada realiza busca com este fim de data String Não
// Exemplo da chamada

// ajax
$.ajax({
    url: URL + '/logs/external-audits?idCard=CARTEIRINHA&initialDate=2023-11-01&endDate=2023-11-30',
    headers: {
        'Authorization': `Bearer ${TOKEN DA EMPRESA}`,
        'Content-Type': 'application/json'
    },
    method: 'GET',
    success: function(data){
      console.log('success: '+data);
    }
  });

// axios
axios({
    method: 'GET',
    url: URL + '/logs/external-audits?idCard=CARTEIRINHA&initialDate=2023-11-01&endDate=2023-11-30',
    headers: {
        'Authorization': `Bearer ${TOKEN DA EMPRESA}`,
        'Content-Type': 'application/json'
    }
});

# Resposta

{
	"data": {
		"logs": [
			{
				"id": 677,
				"id_Card": "123456789",
				"name": "Nome Beneficiário",
				"status": "Justificado",
				"date": "2023-11-10T14:59:40.067569",
				"observation": null,
				"description": "teste teste",
				"required": 28,
				"required_Name": "Empresa que realizou"
			}
		]
	},
	"token": null
};