Skip to content

nxcd/datavalid-node-sdk

Repository files navigation

Datavalid Node SDK

NodeJS SDK to Serpro's DataValid API

Build Status

Summary

What is it

This is a client SDK for DataValid a brazilian service to validate citizen data against government databases.

Usage

Install:

$ npm i @nxcd/datavalid-sdk

Instantiate class:

import {DataValidClient} from '@nxcd/datavalid-sdk'

const options = {
  apiUrl: 'https://apigateway.serpro.gov.br/datavalid/vbeta1',
  authUrl: 'https://apigateway.serpro.gov.br',
  consumerKey: 'key',
  consumerSecret: 'secret'
}

function foo () {
  const client = new DataValidClient(options)
}

All options are required to the client

API

Validate PF Data

Validates data against a physical person database and compare the data results from the database to the ones you sent:

Signature: async validatePFData (data: IDataValidPFInput): Promise<IDataValidSuccessPFResponse>

Input Parameters:

interface IDataValidPFInput {
  key: {
    cpf: string
  }
  answer?: {
    nome?: string
    sexo?: 'M' | 'F'
    data_nascimento?: string
    situacao_cpf?: string
    filiacao?: {
      nome_mae?: string
      nome_pai?: string
    }
    nacionalidade?: number
    endereco?: Address
    documento?: {
      tipo?: number
      numero?: string
      orgao_expedidor?: string
      uf_expedidor?: string
    }
    cnh?: {
      numero_registro?: string
      registro_nacional_estrangeiro?: string
      categoria?: string
      data_primeira_habilitacao?: string
      data_validade?: string
    }
  }
}

type Address = {
  logradouro: string
  numero: string
  complemento: string
  bairro: string
  cep: string
  municipio: string
  uf: string
}

Response:

interface IDataValidSuccessPFResponse {
  sexo: boolean
  data_nascimento: boolean
  situacao_cpf: boolean
  filiacao: {
    nome_mae: boolean
    nome_mae_similaridade: number
    nome_pai: boolean
    nome_pai_similaridade: number
  }
  nacionalidade: boolean
  endereco: {
    logradouro: boolean
    logradouro_similaridade: number
    numero: boolean
    numero_similaridade: number
    bairro: boolean
    bairro_similaridade: number
    cep: boolean
    municipio: boolean
    municipio_similaridade: number
    uf: boolean
    uf_similaridade: number
  }
  documento: {
    tipo: boolean
    numero: boolean
    orgao_expedidor: boolean
    uf_expedidor: boolean
  }
  cnh: {
    categoria: boolean
    registro_nacional_estrangeiro: boolean
    data_primeira_habilitacao: boolean
    data_validade: boolean
    numero_registro: boolean
  }
}

Validate PF Image

Will validate an image against the database to compare similarity

Signature: async validatePFImage (data: IDataValidImageInput): Promise<IDataValidSuccessImageResponse>

Input Parameters:

interface IDataValidImageInput {
  key: {
    cpf: string
  }
  answer: {
    biometria_face: string
  }
}

biometria_face should be the base64 data of an image

Response:

interface IDataValidSuccessImageResponse {
  filiacao: {}
  endereco: {}
  documento: {}
  cnh: {}
  biometria_face: {
    disponivel: boolean
    probabilidade: string
    similaridade: number
  }
}

Validata PJ data

Validates data from a juridic person.

Signature: async validatePJData (data: IDataValidPJInput): Promise<IDataValidSuccessPJResponse>

Input parameters:

export interface IDataValidPJInput {
  key: {
    cnpj: string
  }
  answer?: {
    razao_social?: string
    nome_fantasia?: string
    data_abertura?: string
    cnae_principal?: {
      codigo?: string
      descricao?: string
    }
    natureza_juridica?: {
      codigo?: string
      descricao?: string
    }
    endereco?: Address
    situacao_especial?: string
    situacao_cadastral?: {
      codigo?: number
      data?: string
      motivo?: string
    }
    nome_orgao?: string
    ente_federativo?: string
    correio_eletronico?: string
    capital_social?: number
    porte?: string
    telefone?: {
      ddd?: string
      numero?: string
    }
  }
}

type Address = {
  logradouro: string
  numero: string
  complemento: string
  bairro: string
  cep: string
  municipio: string
  uf: string
}

Response:

interface IDataValidSuccessPJResponse {
  razao_social: boolean
  razao_social_similaridade: number
  nome_fantasia: boolean
  nome_fantasia_similaridade: number
  data_abertura: boolean
  cnae_principal: {
    codigo: boolean
    descricao: boolean
    descricao_similaridade: number
  }
  natureza_juridica: {
    codigo: boolean
    descricao: boolean
    descricao_similaridade: number
  }
  endereco: {
    logradouro: boolean
    logradouro_similaridade: number
    numero: boolean
    numero_similaridade: number
    complemento: boolean
    complemento_similaridade: number
    bairro: boolean
    bairro_similaridade: number
    cep: boolean
    municipio: boolean
    municipio_similaridade: number
    uf: boolean
    uf__similaridade: number
  }
  situacao_especial: boolean
  situacao_especial_similaridade: number
  situacao_cadastral: {
    codigo: boolean
    data: boolean
    motivo: boolean
    motivo_similaridade: number
  }
  nome_orgao: boolean
  nome_orgao_similaridade: number
  ente_federativo: boolean
  ente_similaridade: number
  correio_eletronico: boolean
  correio_eletronico_similaridade: number
  capital_social: boolean
  porte: boolean
  telefone: {
    ddd: boolean
    numero: boolean
    data_primeira_habilitacao: boolean
    data_validade: true
  }
}