NAV
shell
  • Introdução
  • Integrações
  • Autenticação
  • Dinâmica dos Status
  • Objeto Natural Person
  • Objeto Legal Person
  • Atualizar um Cadastro
  • Recuperar um Cadastro
  • Objetos Compartilhados
  • Webhook
  • Padrões
  • Status HTTP
  • Introdução

    Bem vindo à API de Onboarding da Zaig! Esta API dá acesso aos serviços de Prevenção a Fraudes, à lavagem de dinheiro e de KYC em um Cadastro da sua plataforma!

    Esta API pode ser utilizada para a validação cadastral de clientes para:

    Você pode utilizar a nossa API para acessar os endpoints para avaliar os seguintes tipos de Cadastro:

    Os diferentes tipos de Cadastro acima possuem objetos e endpoints específicos com o intuito de cobrir as particularidades de cada entidade.

    Ao lado, você pode observar a implementação da API utilizando cUrl. Com isso você possui exemplos para poder adaptar adequadamente à linguagem de programação da sua preferência.

    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á notou), 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:

    No ambiente de Sandbox, as análises enviadas não são cobradas e são respondidas de acordo com a seguinte regra baseada no primeiro dígito do documento - CPF para Pessoas Físicas e CNPJ para Pessoas Jurídicas:

    Dígito Decisão
    0 Aprovado Automaticamente
    1 Derivado para Análise Manual - Com aprovação posterior
    2 Derivado para Análise Manual - Com reprovação posterior
    3 Reprovado Automaticamente

    Nos casos de CPF ou CNPJ com início nos dígitos 1 ou 2, deve-se entrar em contato com nosso suporte para que a tratativa manual seja feita corretamente.

    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.

    Integrações

    Nossas soluções mobile são compatíveis com as mais diversas tecnologias como Flutter, Ionic Cordova, Capacitor, React Native, Java, Swift entre outras. Caso tenha interesse em alguma dessas integrações, entre em contato com nosso suporte para liberarmos acesso aos nossos repositórios privados.

    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-OF-API-KEY"
    

    Substitua a API Key 'EXAMPLE-OF-API-KEY' pela sua chave, que deve ser obtida através do nosso time de suporte.

    Utilizamos uma API Key para permitir acesso a nossa API. Ela provavelmente já foi enviada por e-mail para você. Caso você 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-OF-API-KEY

    Dinâmica dos Status

    O processo de análise consiste em enviar um cadastro, tanto de Natural Person como de Legal Person no endpoint adequado e esperar a resposta.

    Após a Zaig realizar a análise do cadastro, ela retornará uma resposta com um status referente a análise. Esse status tem o nome de analysis_status, que representa o resultado da analise de cadastro realizado pela Zaig.

    Além do analysis_status a Zaig também possui o client_status que tem como objetivo representar o status que o cliente possui em cada momento de sua vida na sua plataforma.

    analysis_status

    Conforme descrito anteriormente, a Zaig possui sete analysis_status que indicam o status da decisão do motor de onboarding e possui uma máquina de estados bastante simples:

    analysis_status Descrição
    automatically_approved Os algoritmos da Zaig recomendam que este cadastro seja aprovado
    automatically_reproved Os algoritmos da Zaig recomendam que este cadastro seja reprovado
    in_manual_analysis Os algoritmos da Zaig enviaram este cadastro para a análise manual
    manually_approved Após análise manual, o analista decidiu aprovar o cadastro
    manually_reproved Após análise manual, o analista decidiu reprovar o cadastro
    in_queue O cadastro está sendo realizado de forma assíncrona. O resultado do cadastro será respondido via Webhook
    pending As consultas estão demorando mais do que o esperado, este cadastro entrou em uma fila de análise automática e será respondido por meio de Webhook
    not_analysed O cadastro foi enviado com a flag de análise falsa, o que significa que nossos sistemas não retornarão uma recomendação

    client_status

    O client_status indica a situação cadastral do cliente, ou seja, o status do indivíduo ou empresa na sua plataforma. Os seguintes enumeradores existem para este status:

    client_status Descrição
    registered O cliente foi registrado na sua plataforma mas ainda não foi tomada a decisão de aprovação ou reprovação
    approved O cliente está aprovado na sua plataforma
    reproved O cliente está reprovado na sua plataforma
    fraud_blocked O cliente foi bloqueado de usar a sua plataforma devido a supeita ou confirmação de fraude
    default_blocked O cliente foi bloqueado de usar a sua plataforma devido a inadimplência
    canceled O cliente cancelou o uso do seu serviço

    Objeto Natural Person

    Ao final do cadastro de uma pessoa física em sua plataforma, é necessário executar a avaliação de fraude e de KYC deste cliente, o que deve ser realizado através do endpoint de Natural Person. Os dados enviados deverão ser os dados finais, que não serão alterados em hipótese alguma, isto é, não deverá existir a possibilidade de se realizar uma alteração nos dados básicos de cadastro como CPF, Nome, Data de Nascimento e outros após este processo. Isto é muito importante para garantir dois pontos:

    Definição do Objeto Natural Person

    Exemplo

    {
      "id": "12345678",
      "registration_id": "12345678",
      "registration_date": "2019-12-11T11:37:15.12-03:00",
      "client_category": "Premium User",
      "name": "John Sample",
      "document_number": "111.111.111-11",
      "birthdate": "1992-09-15",
      "gender": "male",
      "nationality": "BRA",
      "mother_name": "Maria Sample",
      "father_name": "John Sample",
      "monthly_income": 500000,
      "declared_assets": 7500000,
      "occupation": "Teacher",
      "emails":[
        {
          "email": "johnsample@test.com",
          "validation_type":"zaig_api",
          "validation_key": "e9f0de49-16fb-431e-be1a-ee4bf1096eda"
        }
      ],
      "documents": {
        "rg": {
          "number": "4.366.477-8",
          "issuer": "II",
          "issuer_state": "PR",
          "issuance_date":"2002-01-12",
          "validation_type":"zaig_sdk",
          "ocr_front_key":"a5cf9c8f-2f66-4490-a7db-8a5bc70c1b76",
          "ocr_back_key":"a5cf9c8f-2f66-4490-a7db-8a5bc70c1b76"
        },
        "cnh": {
          "register_number": "05163811694",
          "issuer_state": "PR",
          "first_issuance_date":"2011-03-21",
          "issuance_date":"2016-06-29",
          "expiration_date":"2021-06-25",
          "category": "AB",
          "validation_type":"zaig_sdk",
          "ocr_key":"a5cf9c8f-2f66-4490-a7db-8a5bc70c1b76"
        }
      },
      "address": {
        "street": "Rua do Teste",
        "number": "111",
        "neighborhood": "Bairro do Exemplo",
        "city": "Aparecida de Goiânia",
        "uf": "GO",
        "complement": "Térreo",
        "postal_code": "00000-000",
        "country": "BRA",
        "validation_type":"visit",
        "ocr_key": "265b1b74-4b93-41dc-ac78-e1c37467225d"
      },
      "phones": [
        {
          "international_dial_code": "1",
          "area_code": "11",
          "number": "999999999",
          "type": "mobile",
          "validation_type": "zaig_sms",
          "validation_key": "82589b39-e34f-44f9-b0fe-d8fc0ee6129c"
        }
      ],
      "source": {
        "channel": "app",
        "platform": "android",
        "ip":"255.201.26.1",
        "session_id": "54b8e3cf-15de-41e5-9305-0ecf059d6e2a"
      },
      "face":
      {
        "type":"zaig_sdk",
        "registration_key":"46f38cf4-07b2-4de6-93e9-64b51a68378a"
      }
    }
    

    Todas as trocas de informação de um cadastro utilizam a seguinte definição para este objeto. Em alguns casos, para facilitar a implementação e diminuir o fluxo de dados entre as partes, algumas informações poderão ser omitidas.

    nome tipo descrição
    id string Identificador da análise.
    É essencial que este número seja único para cada requisição
    registration_id string Identificador do cadastro no sistema do cliente. Para realizar mais de uma análise referente a um mesmo cadastro, apenas utilize o mesmo registration_id nas diferentes análises. Este campo não é obrigatório e terá o mesmo valor do id quando não enviado.
    registration_date datetime Data e hora do cadastro
    client_category string Categoria do cliente de acordo com a classificação da sua plataforma ou seu programa de fidelidade
    name string Nome completo do indivíduo sendo cadastrado
    document_number string CPF do indivíduo sendo cadastrado, com pontos e hífens, de acordo com a padronização
    birthdate date Data de nascimento do indivíduo de acordo com a padronização
    gender enum Gênero do indivíduo: 'male' ou 'female'
    nationality string A nacionalidade do cadastro, em ISO 3166-1 alfa-3
    mother_name string Nome completo da mãe
    father_name string Nome completo do pai
    monthly_income integer Renda mensal bruta em centavos de reais
    declared_assets integer Patrimônio declarado em centavos de reais
    occupation string Profissão do indivíduo sendo cadastrado
    emails Lista de Email Lista de objetos do tipo Email que descreve o endereço de e-mail do indíviduo
    documents Document Objetos do tipo CNH e RG
    address Address Objeto do tipo Address que descreve o endereço da moradia do indivíduo
    phones Lista de Phone Lista de objetos do tipo phone que possui a lista de telefones do indivíduo
    source Source Objeto do tipo Source que descreve as informações provenientes da aplicação utilizada para envio do cadastro
    face Face Objeto do tipo Face que descreve as informações da validação facial executada no cadastro, caso haja

    Enviar um Natural Person

    Exemplo de Request

      {
        "id": "12345",
        ...
      }
    

    Exemplo de Retorno

      {
        "id": "12345",
        "analysis_status": "automatically_approved"
      }
    

    Para realizar a avaliação de um Cadastro, basta enviar um objeto do tipo Natural Person ao seguinte endpoint com a flag setada adequadamente:

    POST https://api.caas.qitech.app/onboarding/natural_person?analyze=true

    O parâmetro analyze existe para identificar se o cadastro enviado deve ou não ser analisado pelos algoritmos da Zaig. Caso um cadastro seja enviado com o parâmetro com o valor false, ele não será analisado nem cobrando, mas seus dados serão considerados pelos algoritmos da Zaig para uma análise futura. O valor padrão deste parâmetro é true, de maneira que somente cadastros que forem explicitamente enviados com a flag false não serão analisados.

    Objeto Legal Person

    Ao final do cadastro de uma empresa em sua plataforma, é necessário executar a avaliação de fraude e de KYC desta companhia, o que deve ser realizado através do endpoint de Legal Person. Os dados enviados deverão ser os dados finais, que não serão alterados em hipótese alguma, isto é, não deverá existir a possibilidade de após este processo se realizar uma alteração nos dados básicos de cadastro como CNPJ, Razão Social, Data de Constituição e outros. Isto é muito importante para garantir dois pontos:

    Exemplo

    {
      "id": "12345678",
      "registration_id": "12345678",
      "registration_date": "2019-12-11T11:37:15.12-03:00",
      "client_category" : "Premium Account",
      "legal_name": "John's Company",
      "trading_name": "John's Barbershop",
      "document_number": "11.111.111/0001-11",
      "foundation_date": "1992-09-15",
      "website": "www.johnsbarbershop.com.br",
      "activity": "Barber Shops",
      "activity_code": "96.02-5-01",
      "merchant_category_code": "0742",
      "tier" : "epp",
      "annual_revenues": 72000000,
      "emails":[
        {
          "email": "johnsample@test.com",
          "type":"zaig_api",
          "validation_key": "ccc4b4b4-f91c-4475-8290-07152550aefc"
        }
      ],
      "documents": {
        "ie": {
          "number": "388.108.598.269",
          "issuer": "JUCESP",
          "issuer_state": "SP",
          "issuance_date":"2002-01-12",
          "validation_type": "zaig_api",
          "ocr_key": "c64627db-1ba4-48b6-979d-06222a25d5e9"
        },
        "company_statute": {
          "ocr_key": "60ed79c4-5aba-4cc7-aebb-5de5f92b7d0d"
        }
      },
      "address": {
        "street": "Rua do Teste",
        "number": "111",
        "neighborhood": "Bairro do Exemplo",
        "city": "Aparecida de Goiânia",
        "uf": "GO",
        "complement": "Térreo",
        "postal_code": "00000-000",
        "country": "BRA",
        "validation_type": "visit",
        "ocr_key": "265b1b74-4b93-41dc-ac78-e1c37467225d"
      },
      "phones": [
        {
          "international_dial_code": "1",
          "area_code": "11",
          "number": "999999999",
          "type": "mobile",
          "validation_type": "zaig_sms",
          "validation_key": "82473dec-8e14-4570-997a-59652818c908"
        }
      ],
      "source": {
        "channel": "app",
        "platform": "android",
        "ip":"201.6.142.66",
        "session_id": "c90ad2df-7307-4f82-8938-1da81dff2be6"
      },
      "legal_representatives": [
        {
          "name": "Frederic Attorney",
          "document_number": "111.111.111-11",
          "birthdate": "1987-06-12",
          "gender": "male",
          "nationality": "BRA",
          "mother_name": "Jackie Attorney Mother",
          "occupation": "Accountant",
          "emails":[
            {
              "email": "frederic@attorney.com",
              "validation_type":"zaig_api",
              "validation_key": "d174d522-6003-4b05-adb2-e92e92632c67"
            }
          ],
          "documents": {
            "letter_of_attorney": {
              "ocr_key": "6972894d-d2ef-4b5f-b54f-10f178bf3e5d"
            },
            "cnh": {
              "register_number": "05163811694",
              "issuer_state": "PR",
              "first_issuance_date":"2011-03-21",
              "issuance_date":"2016-06-29",
              "expiration_date":"2021-06-25",
              "category": "AB",
              "validation_type":"zaig_sdk",
              "ocr_key":"a5cf9c8f-2f66-4490-a7db-8a5bc70c1b76"
            }
          },
          "address": {
            "street": "Avenida de Exemplo",
            "number": "99",
            "neighborhood": "Vila do Exemplo",
            "city": "Jundiaí",
            "uf": "SP",
            "complement": "Ap 82",
            "postal_code": "00000-000",
            "country": "BRA",
            "validation_type":"visit",
            "ocr_key": "265b1b74-4b93-41dc-ac78-e1c37467225d"
          },
          "phones": [
            {
              "international_dial_code": "55",
              "area_code": "11",
              "number": "999998877",
              "type": "mobile",
              "validation_type": "zaig_sms",
              "validation_key": "e390d2b3-cb71-4991-9d94-1b7f8b43a04e"
            }
          ],
          "source": {
            "channel": "app",
            "platform": "ios",
            "ip":"175.92.122.2",
            "session_id": "93c68588-7a41-472f-95b3-835ea6ee1ede"
          },
          "face":
          {
            "type":"zaig_sdk",
            "registration_key":"d2677a8c-d575-44e1-a54d-ec00f9310f34"
          }
        }
      ],
      "partners": [
        {
          "name": "John Partner",
          "document_number": "111.111.111-11",
          "birthdate": "1992-09-15",
          "gender": "male",
          "nationality": "BRA",
          "mother_name": "Maria Partner's Mother",
          "occupation": "Teacher",
          "emails":[
            {
              "email": "johnsample@test.com",
              "validation_type":"zaig_api",
              "validation_key": "1fac6f8c-1a16-4a12-9afc-9a2d9ae0a31e"
            }
          ],
          "documents": {
            "rg": {
              "number": "4.366.477-8",
              "issuer": "II",
              "issuer_state": "PR",
              "issuance_date":"2002-01-12",
              "validation_type":"zaig_sdk",
              "ocr_front_key":"a5cf9c8f-2f66-4490-a7db-8a5bc70c1b76",
              "ocr_back_key":"a5cf9c8f-2f66-4490-a7db-8a5bc70c1b76"
            },
            "cnh": {
              "register_number": "05163811694",
              "issuer_state": "PR",
              "first_issuance_date":"2011-03-21",
              "issuance_date":"2016-06-29",
              "expiration_date":"2021-06-25",
              "category": "AB",
              "validation_type":"zaig_sdk",
              "ocr_key":"a5cf9c8f-2f66-4490-a7db-8a5bc70c1b76"
            }
          },
          "address": {
            "street": "Rua do Teste",
            "number": "111",
            "neighborhood": "Bairro do Exemplo",
            "city": "Aparecida de Goiânia",
            "uf": "GO",
            "complement": "Térreo",
            "postal_code": "00000-000",
            "country": "BRA",
            "validation_type":"visit",
            "ocr_key": "265b1b74-4b93-41dc-ac78-e1c37467225d"
          },
          "phones": [
            {
              "international_dial_code": "1",
              "area_code": "11",
              "number": "999999999",
              "type": "mobile",
              "validation_type": "zaig_sms",
              "validation_key": "d1713959-4ae4-4180-befc-6931c658e908"
            }
          ],
          "source": {
            "channel": "app",
            "platform": "android",
            "ip":"255.201.26.1",
            "session_id": "79d5e442-2cb7-4a9e-82c5-7fa3717d7ada"
          },
          "face":
          {
            "type":"zaig_sdk",
            "registration_key":"a2b6ae92-1394-4f9b-b8ee-5be188f93609"
          }
        }
      ]
    }
    

    Todas as trocas de informação de um cadastro utilizam a seguinte definição para este objeto. Em alguns casos, para facilitar a implementação e diminuir o fluxo de dados entre as partes, algumas informações poderão ser omitidas.

    nome tipo descrição
    id string Identificador da análise.
    É essencial que este número seja único para cada requisição
    registration_id string Identificador do cadastro no sistema do cliente. Para realizar mais de uma análise referente a um mesmo cadastro, apenas utilize o mesmo registration_id nas diferentes análises. Este campo não é obrigatório e terá o mesmo valor do id quando não enviado.
    registration_date datetime Data e hora do cadastro
    client_category string Categoria do cliente de acordo com a classificação da sua plataforma ou seu programa de fidelidade
    legal_name string Razão Social da empresa sendo cadastrada
    trading_name string Nome fantasia da empresa sendo cadastrada
    document_number string CNPJ da empresa sendo cadastrado, com pontos e hífens, de acordo com a padronização
    foundation_date date Data de fundação da empresa de acordo com a padronização
    website string O website da empresa sendo cadastrada
    activity string Ramo de atividade da empresa sendo cadastrada
    activity_code string Código do CNAE da atividade da empresa (o CNAE deve ser formatado conforme exemplo anterior)
    merchant_category_code string Código MCC (Merchant Category Code) para o ramo de atividade de acordo bandeiras de cartões
    tier string Porte da empresa
    annual_revenues integer Receita bruta anual da empresa sendo cadastrada em centavos de reais
    emails Lista de Email Lista de objetos do tipo Email que descreve o endereço de e-mail da empresa
    documents Document Objetos do tipo documento (Inscrição estadual - ie , Contrato Social - company_statute)
    address Address Objeto do tipo Address que descreve o endereço da moradia da empresa
    phones Lista de Phone Lista de objetos do tipo Phone que descreve o telefone da empresa
    source Source Objeto do tipo Source que descreve as características da aplicação utilizada para envio do cadastro
    partners Lista de Partner Lista de objetos do tipo Partner que descreve as informações de cada um dos sócios da empresa
    legal_representatives Lista de Representantes Legais Lista de objetos do tipo LegalRepresentative que descreve as informações de cada um dos sócios da empresa

    Exemplo de Request

      {
        "id": "12345",
        ...
      }
    

    Exemplo de Retorno

      {
        "id": "12345",
        "analysis_status": "automatically_approved"
      }
    

    Para realizar a avaliação de um Cadastro, basta enviar um objeto do tipo Legal Person ao seguinte endpoint com a flag setada adequadamente:

    POST https://api.caas.qitech.app/onboarding/legal_person?analyze=true

    O parâmetro analyze existe para identificar se o cadastro enviado deve ou não ser analisado pelos algoritmos da Zaig. Caso um cadastro seja enviado com o parâmetro com o valor false, ele não será analisado nem cobrando, mas seus dados serão considerados pelos algoritmos da Zaig para uma análise futura. O valor padrão deste parâmetro é true, de maneira que somente cadastros que forem explicitamente enviados com a flag false não serão analisados.

    Atualizar um Cadastro

    Corpo da requisição - No bloqueio de um cadastro por fraude ou suspeita de fraude

    {
      "client_status": "fraud_blocked",
      "event_date": "2019-11-05T13:34:12-03:00"
    }
    

    Corpo da requisição - No bloqueio de um cadastro por inadimplência

    {
      "client_status": "default_blocked",
      "event_date": "2019-11-05T13:34:12-03:00"
    }
    

    Corpo da requisição - No cancelamento de um cadastro por solicitação do cliente

    {
      "client_status": "cancelled",
      "event_date": "2019-11-05T13:34:12-03:00"
    }
    

    Para garantir a retroalimentação das regras e do modelo de inteligência artificial, é necessário informar ao sistema quando os Cadastros sofrem alterações, como por exemplo quando são bloqueados, ou quando são cancelados. O status utilizado para essas alterações é o client_status, que deve ser alterado sempre que houver alterações no ciclo de vida do cliente. Para isso, requisições com o método PUT, autenticadas normalmente, devem ser utilizadas e os status devem seguir o padrão detalhado anteriomente:

    PUT https://api.caas.qitech.app/onboarding/natural_person/123456

    PUT https://api.caas.qitech.app/onboarding/legal_person/123456

    Recuperar um Cadastro

    Buscar Cadastro específico

    A fim de recuperar um Cadastro específico, basta realizar uma requisição GET. O resultado retornado é o json mais atualizado do Cadastro em questão. Caso este identificador não esteja relacionado a nenhum objeto, o HTTP Status 404 é retornado.

    GET https://api.caas.qitech.app/onboarding/natural_person/12345678

    GET https://api.caas.qitech.app/onboarding/legal_person/12345678

    curl "https://api.caas.qitech.app/onboarding/natural_person/12345678"
      -H "Authorization: EXAMPLE-OF-API-KEY"
    

    O comando acima retorna o JSON que representa um objeto de Natural Person.

    curl "https://api.caas.qitech.app/onboarding/legal_person/12345678"
      -H "Authorization: EXAMPLE-OF-API-KEY"
    

    O comando acima retorna o JSON que representa um objeto de Legal Person.

    Buscar PDF

    A fim de recuperar um PDF de um cadastro, basta realizar uma requisição GET. O resultado retornado é o arquivo PDF resultante da análise. Caso seja desejado, basta adicionar uma query string denominada base64 com o valor true para que o arquivo PDF seja retornado em base64.

    GET https://api.caas.qitech.app/onboarding/natural_person/12345678/pdf

    GET https://api.caas.qitech.app/onboarding/natural_person/12345678/pdf&base64=true

    GET https://api.caas.qitech.app/onboarding/legal_person/12345678/pdf

    GET https://api.caas.qitech.app/onboarding/legal_person/12345678/pdf&base64=true

    curl "https://api.caas.qitech.app/onboarding/natural_person/12345678/pdf"
      -H "Authorization: EXAMPLE-OF-API-KEY"
    

    O comando acima retorna o arquivo PDF gerado pela consulta.

    curl "https://api.caas.qitech.app/onboarding/legal_person/12345678/pdf"
      -H "Authorization: EXAMPLE-OF-API-KEY"
    

    O comando acima retorna o arquivo PDF gerado pela consulta.

    Objetos Compartilhados

    Boa parte dos dados são compartilhados entre várias APIs. Abaixo as definições destes objetos podem ser localizadas de maneira facilitada.

    Objeto email

    Exemplo

    {
      "email": "johnsample@test.com",
      "validation_type":"zaig_api",
      "validation_key": "e9f0de49-16fb-431e-be1a-ee4bf1096eda"
    }
    

    O objeto email é utilizado para representar os e-mails em toda a API bem como se foi utilizado algum meio de validação dos mesmos. Eles são representados da seguinte maneira:

    nome tipo descrição
    email string Endereço de e-mail cadastrado.
    validation_type enum Tipo de validação utilizada durante o cadastro do e-mail.
    validation_key guid Id retornado pela API de validação de e-mail da Zaig.

    Existem os seguintes enumeradores para validation_type: zaig_api, company_email.

    Objeto cnh

    Exemplo

    {
      "register_number": "05163811694",
      "issuer_state": "PR",
      "first_issuance_date":"2011-03-21",
      "issuance_date":"2016-06-29",
      "expiration_date":"2021-06-25",
      "category": "AB",
      "validation_type":"zaig_sdk",
      "ocr_key":"a5cf9c8f-2f66-4490-a7db-8a5bc70c1b76"
    }
    

    O objeto cnh é utilizado para representar as CNHs em toda a API bem como se foi utilizado algum meio de validação dos mesmos. Eles são representados da seguinte maneira:

    nome tipo descrição
    register_number string Número do registro da CNH cadastrada.
    issuer_state enum Enumerador do estado onde a CNH foi emitida
    first_issuance_date date Data de primeira habilitação.
    issuance_date date Data de emissão
    expiration_date date Data de vencimento
    category enum Categoria da CNH em letras maiúsculas
    validation_type enum Tipo de validação utilizada durante o cadastro do documento.
    ocr_key guid Id retornado pela API de validação de documento da Zaig.

    Existem os seguintes enumeradores para validation_type: zaig_api e zaig_sdk.

    Objeto rg

    Exemplo

    {
      "number": "4.366.477-8",
      "issuer": "II",
      "issuer_state": "PR",
      "issuance_date":"2002-01-12",
      "validation_type":"zaig_sdk",
      "ocr_front_key":"a5cf9c8f-2f66-4490-a7db-8a5bc70c1b76",
      "ocr_back_key":"a5cf9c8f-2f66-4490-a7db-8a5bc70c1b76"
    }
    

    O objeto rg é utilizado para representar os RGs em toda a API bem como se foi utilizado algum meio de validação dos mesmos. Eles são representados da seguinte maneira:

    nome tipo descrição
    number string Número do documento cadastrado, incluindo formatação (Pontos, Hífens, Barras e outros).
    issuer string Órgão emissor do documento (Sigla, e.g.: II, SESP...)
    issuer_state enum UF emissor do documento.
    issuance_date date Data de emissão do documento.
    validation_type enum Tipo de validação utilizada durante o cadastro do documento.
    ocr_key guid Id retornado pela API de validação de documento da Zaig.

    Existem os seguintes enumeradores para validation_type: zaig_api e zaig_sdk.

    Objeto ie

    Exemplo

    {
      "number": "388.108.598.269",
      "issuer": "JUCESP",
      "issuer_state": "SP",
      "issuance_date":"2002-01-12",
      "validation_type": "zaig_api",
      "ocr_key": "c64627db-1ba4-48b6-979d-06222a25d5e9"
    }
    

    O objeto ie é utilizado para representar as Inscrições Estaduais dentro do objeto de documents no endpoint de legal_person, bem como se foi utilizado algum meio de validação do mesmo. Ele é representado da seguinte maneira:

    nome tipo descrição
    number string Número do documento cadastrado, incluindo formatação (Pontos, Hífens, Barras e outros).
    issuer string Órgão emissor do documento (Sigla, e.g.: JUCESP, JUCEGO...)
    issuer_state enum UF emissor do documento.
    issuance_date date Data de emissão do documento.
    validation_type enum Tipo de validação utilizada durante o cadastro do documento.
    ocr_key guid Id retornado pela API de validação de documento da Zaig.

    Existem os seguintes enumeradores para validation_type: zaig_api.

    Objeto company_statute

    Exemplo

    {
      "ocr_key": "60ed79c4-5aba-4cc7-aebb-5de5f92b7d0d"
    }
    

    O objeto company_statute é utilizado para representar documentos de constituição de empresas, como por exemplo um Contrato Social dentro do objeto de documents no endpoint de legal_person. Ele é representado da seguinte maneira:

    nome tipo descrição
    ocr_key guid Id retornado pela API de OCR da Zaig após envio da imagem ou PDF de um documento de constuição de uma empresa.

    Objeto letter_attorney

    Exemplo

    {
      "ocr_key": "13571175-b1d9-4507-82e0-d266516fc5ae"
    }
    

    O objeto letter_attorney é utilizado para representar procurações que instituem poderes a representantes legais dentro do objeto de documents no endpoint de legal_person. Ele é representado da seguinte maneira:

    nome tipo descrição
    ocr_key guid Id retornado pela API de OCR da Zaig após envio da imagem ou PDF de uma procuração.

    Objeto address

    Exemplo

    {
      "street": "Rua do Teste",
      "number": "111",
      "neighborhood": "Bairro do Exemplo",
      "city": "Aparecida de Goiânia",
      "uf": "GO",
      "complement": "Térreo",
      "postal_code": "00000-000",
      "country": "BRA",
      "validation_type":"visit",
      "ocr_key": "265b1b74-4b93-41dc-ac78-e1c37467225d"
    }
    

    O objeto address é utilizado para representar endereços em toda a API, endereços no território brasileiro são representados da seguinte maneira:

    nome tipo descrição
    street string Rua do endereço, incluindo o logradouro, evitando, se possível, abreviações.
    number string Número do imóvel, incluindo letras caso possua.
    neighborhood string Bairro, sem abreviações.
    e.g.: Santa Felicidade
    city string Nome completo da cidade, sem abreviações
    uf string A unidade federativa, com duas letras maiúsculas.
    e.g.: SP
    complement string Quaisquer complementos para localizar o imóvel.
    e.g.: Apartamento 101, Conjunto 12
    postal_code string O código postal da localidade, contendo o hífen.
    country string Código ISO 3166-1 alfa-3 do país do endereço.
    validation_type enum Tipo de validação utilizada durante o cadastro do endereço.
    ocr_key guid Id retornado pela API ou SDK de OCR da Zaig após o envio da imagem comprovante de residência.

    No caso dos endereços cujo país não seja Brasil ("BRA"), o postal_code e a unidade federativa poderão ser preenchidos livremente.

    Existem os seguintes enumeradores para validation_type: visit, zaig_ocr.

    Objeto phone

    Exemplo

    {
      "international_dial_code": "1",
      "area_code": "11",
      "number": "999999999",
      "type": "mobile",
      "validation_type": "zaig_sms",
      "validation_key": "82589b39-e34f-44f9-b0fe-d8fc0ee6129c"
    }
    

    Um objeto phone representa um número telefônico, dentro ou fora do Brasil e sua classificação. Para isso, os campos são:

    nome tipo descrição
    international_dial_code string Código de discagem internacional, sem zero ou +, somente números
    area_code string Código de área, sem zero, somente números
    number string Número do telefone, sem o hífen
    type enum Tipo de número: celular, residencial, comercial, etc.
    validation_type enum Tipo de validação utilizada durante o cadastro do telefone.
    validation_key guid Id retornado pela API de validação de telefone da Zaig.

    Existem os seguintes enumeradores para tipo de telefone: residential, commercial e mobile

    Existem os seguintes enumeradores para as validações de telefone: zaig_sms, zaig_call, company_sms, company_call.

    Objeto source

    Exemplo

      {
        "channel": "app",
        "platform": "android",
        "ip":"211.7.142.62",
        "session_id": "733adf2c-a994-4113-aa59-beb646091fea",
      }
    

    Um objeto source representa o conjunto de informações da plataforma utilizada pelo cliente para seu cadastramento. Para isso, os campos são:

    nome tipo descrição
    channel string Canal de venda/cadastro do cliente
    platform string Plataforma utilizada pelo cliente para realizar seu cadastro
    ip string IP coletado do device que o cliente foi cadastrado
    session_id string Identificador único da sessão, utilizado para fazer o cruzamento do device scan com o cadastro em questão

    Objeto face

    Exemplo

      {
        "type":"zaig_face_sdk",
        "registration_key":"46f38cf4-07b2-4de6-93e9-64b51a68378a"
      }
    

    Um objeto face representa uma validação de reconhecimento facial feita através das APIs ou SDKs da Zaig por você para verificar a autenticidade do cliente prévio ao envio do cadastro. Para isso, os campos são:

    nome tipo descrição
    validation_type enum Tipo da validação de reconhecimento facial realizada.
    registration_key guid Identificador que a API ou SDK da Zaig retornou para identificar aquele registro.
    validation_key guid Identificador que a API ou SDK da Zaig retornou para identificar aquela validação.

    Existem os seguintes enumeradores para as validações de face: zaig_api e zaig_sdk.

    Objeto partner

    Exemplo

      {
        "name": "John Partner",
        "document_number": "111.111.111-11",
        "birthdate": "1992-09-15",
        "gender": "male",
        "nationality": "BRA",
        "mother_name": "Maria Partner's Mother",
        "occupation": "Teacher",
        "emails":[
          {
            "email": "johnsample@test.com",
            "validation_type":"zaig_api",
            "validation_key": "e9f0de49-16fb-431e-be1a-ee4bf1096eda"
          }
        ],
        "documents": {
          "rg": {
            "number": "4.366.477-8",
            "issuer": "II",
            "issuer_state": "PR",
            "issuance_date":"2002-01-12",
            "validation_type":"zaig_sdk",
            "ocr_front_key":"a5cf9c8f-2f66-4490-a7db-8a5bc70c1b76",
            "ocr_back_key":"a5cf9c8f-2f66-4490-a7db-8a5bc70c1b76"
          },
          "cnh": {
            "register_number": "05163811694",
            "issuer_state": "PR",
            "first_issuance_date":"2011-03-21",
            "issuance_date":"2016-06-29",
            "expiration_date":"2021-06-25",
            "category": "AB",
            "validation_type":"zaig_sdk",
            "ocr_key":"a5cf9c8f-2f66-4490-a7db-8a5bc70c1b76"
          }
        },
        "address": {
          "street": "Rua do Teste",
          "number": "111",
          "neighborhood": "Bairro do Exemplo",
          "city": "Aparecida de Goiânia",
          "uf": "GO",
          "complement": "Térreo",
          "postal_code": "00000-000",
          "country": "BRA",
          "validation_type":"visit",
        },
        "phones": [
          {
            "international_dial_code": "1",
            "area_code": "11",
            "number": "999999999",
            "type": "mobile",
            "validation_type": "zaig_sms",
            "validation_key": "82589b39-e34f-44f9-b0fe-d8fc0ee6129c"
          }
        ],
        "source": {
          "channel": "app",
          "platform": "android",
          "ip":"255.321.321.1",
          "session_id": "54b8e3cf-15de-41e5-9305-0ecf059d6e2a"
        },
        "face":
        {
          "type":"zaig_sdk",
          "registration_key":"46f38cf4-07b2-4de6-93e9-64b51a68378a"
        }
      }
    

    Um objeto partner representa os dados de um sócio da empresa que está sendo cadastrada, bem como informações referentes às validações que o sócio foi submetido durante seu processo de cadastro. Para isso, os campos são:

    nome tipo descrição
    name string Nome completo do sócio sendo cadastrado
    document_number string CPF do sócio sendo cadastrado, com pontos e hífens, de acordo com a padronização
    birthdate date Data de nascimento do sócio de acordo com a padronização
    gender enum Gênero do sócio: 'male' ou 'female'
    nationality string A nacionalidade do sócio, em ISO 3166-1 alfa-3
    mother_name string Nome completo da mãe do sócio
    occupation string Profissão do sócio sendo cadastrado
    emails Email Lista de objetos do tipo Email que descreve o endereço de e-mail do sócio
    documents Document Objeto do tipo Document de quaisquer documentos enviados no momento do cadastro do sócio
    address Address Objeto do tipo Address que descreve o endereço da moradia do sócio
    phones Lista de Phone Lista de objetos do tipo phone que possui a lista de telefones do sócio
    source Source Objeto do tipo Source que descreve as características da aplicação utilizada para envio do cadastro
    face Face Objeto do tipo Face que descreve as informações da validação facial

    Exemplo

      {
        "name": "Frederic Attorney",
        "document_number": "111.111.111-11",
        "birthdate": "1987-06-12",
        "gender": "male",
        "nationality": "BRA",
        "mother_name": "Jackie Attorney Mother",
        "occupation": "Accountant",
        "emails":[
          {
            "email": "frederic@attorney.com",
            "validation_type":"zaig_api",
            "validation_key": "d174d522-6003-4b05-adb2-e92e92632c67"
          }
        ],
        "documents": {
          "letter_of_attorney": {
            "ocr_key": "6972894d-d2ef-4b5f-b54f-10f178bf3e5d"
          },
          "cnh": {
            "register_number": "05163811694",
            "issuer_state": "PR",
            "first_issuance_date":"2011-03-21",
            "issuance_date":"2016-06-29",
            "expiration_date":"2021-06-25",
            "category": "AB",
            "validation_type":"zaig_sdk",
            "ocr_key":"a5cf9c8f-2f66-4490-a7db-8a5bc70c1b76"
          }
        },
        "address": {
          "street": "Avenida de Exemplo",
          "number": "99",
          "neighborhood": "Vila do Exemplo",
          "city": "Jundiaí",
          "uf": "SP",
          "complement": "Ap 82",
          "postal_code": "00000-000",
          "country": "BRA",
          "validation_type":"proof_of_address",
          "ocr_key": "265b1b74-4b93-41dc-ac78-e1c37467225d"
        },
        "phones": [
          {
            "international_dial_code": "55",
            "area_code": "11",
            "number": "999998877",
            "type": "mobile",
            "validation_type": "zaig_sms",
            "validation_key": "e390d2b3-cb71-4991-9d94-1b7f8b43a04e"
          }
        ],
        "source": {
          "channel": "app",
          "platform": "ios",
          "ip":"175.92.122.2",
          "session_id": "93c68588-7a41-472f-95b3-835ea6ee1ede"
        },
        "face":
        {
          "type":"zaig_sdk",
          "registration_key":"d2677a8c-d575-44e1-a54d-ec00f9310f34"
        }
      }
    

    Um objeto legal_representative representa os dados de um representante legal da empresa que está sendo cadastrada, bem como informações referentes às validações que o representante legal foi submetido durante seu processo de cadastro. Para isso, os campos são:

    nome tipo descrição
    name string Nome completo do representante legal sendo cadastrado
    document_number string CPF do representante legal sendo cadastrado, com pontos e hífens, de acordo com a padronização
    birthdate date Data de nascimento do representante legal de acordo com a padronização
    gender enum Gênero do representante legal: 'male' ou 'female'
    nationality string A nacionalidade do representante legal, em ISO 3166-1 alfa-3
    mother_name string Nome completo da mãe do representante legal
    occupation string Profissão do representante legal sendo cadastrado
    emails Email Lista de objetos do tipo Email que descreve o endereço de e-mail do representante legal
    documents Document Objeto do tipo Document de quaisquer documentos enviados no momento do cadastro do representante legal
    address Address Objeto do tipo Address que descreve o endereço da moradia do representante legal
    phones Lista de Phone Lista de objetos do tipo phone que possui a lista de telefones do representante legal
    source Source Objeto do tipo Source que descreve as características da aplicação utilizada para envio do cadastro
    face Face Objeto do tipo Face que descreve as informações da validação facial

    Webhook

    Atualizações no status de fraude (Para cadastros que sejam derivados para análise manual ou que sejam respondidos como Pendente), são notificados por meio de Webhook. Para tanto, é necessário, por meio da equipe do suporte, configurar um endereço do endpoint por onde vamos notificar as atualizações e também um secret_token que será utilizado para assinar a requisição.

    O cliente pode, apesar de não recomendável, também utilizar a técnica de polling. Neste caso, basta não configurar o endpoint de webhook e utilizar os endpoints de recuperação de cadastro para proceder com o polling.

    Assinatura

    Exemplo de cálculo de assinatura em Python

        hmac_obj = hmac.new(signature_key.encode('utf-8'), (endpoint + method + payload).encode('utf-8'), hashlib.sha1)
        return hmac_obj.hexdigest()
    

    Para garantir que a requisição recebida no endpoint do webhook parte dos nossos servidores, uma assinatura HMAC é enviada no Header Signature, semelhante ao processo de autenticação.

    Após realizar o cálculo do valor esperado da assinatura do lado do servidor, é necessário comparar a assinatura calculada com a enviada. Caso as assinaturas sejam compatíveis, isso significa que a requisição partiu dos nossos servidores e que é confiável.

    Requisição

    Exemplo de requisição

        {
            "natural_person_id": "123456",
            "analysis_status": "automatically_approved",
            "event_date": "2019-10-01T10:37:25-03:00"
        }
    

    A requisição possui o formato ao lado e notifica a mudança no status de fraude. É importante ressaltar que a requisição utiliza o verbo HTTP POST e o corpo da requisição é enviado como texto codificado em UTF-8.

    Retentativas

    A notificação é considerada realizada quando recebe como resposta um HTTP Status 200. Caso as notificações falhem, serão feitas 5 retentativas, com os seguintes intervalos, até que um 200 seja retornado ou as tentativas terminem:

    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.

    Valores Monetários

    Exemplos:

    10000
    12345
    98741
    1223
    1
    0
    

    As APIs assumem que todos os valores monetários enviados são em Reais Brasileiros. Os valores devem ser enviados como inteiro em centavos.

    Data e Hora com Fuso Horário

    Alguns exemplos:

    2019-10-15T22:35:12.232-03:00
    2018-05-01T13:32:11.297+00:00
    2019-05-01T00:00:00.000+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.

    A máscara utilizada para validação é a seguinte:

    YYYY-MM-ddThh:mm:ss.sss±hh:mm

    Data e Hora sem Fuso Horario

    Alguns exemplos:

    2019-10-15T22:35:12
    2018-05-01T13:32:11
    2019-05-01T00:00:00
    

    É 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:ss.sssZ

    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:

    ###.###.###-##

    CNPJ

    Exemplos de CNPJs válidos contra a máscara definida:

    08.104.627/0001-02
    01.079.210/0114-67
    32.402.502/0001-35
    

    Exemplos de CNPJs inválidos contra a máscara definida:

    8.577.477-8
    123.456.789-12
    321.987.543-23
    32.402.502/0001-3
    032.402.502/0001-3
    

    O CNPJ é sempre definido como uma string e será validado contra a máscara:

    ##.###.###/####-##

    IP

    Exemplos de IPs válidos contra a máscara definida:

    201.81.161.86
    201.081.161.86
    201.81.161.086
    201.81.0.1
    

    Exemplos de IPs inválidos:

    201.81..86
    358.81.161.86
    201.81.161
    

    IPs deverão ser enviados sempre em IPv4, zeros à esquerda poderão ou não ser enviados, respeitando a seguinte 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.