Ir para o conteúdo

API - Validações de Documentos ( CPF )

Introdução

A validação de documentos é uma etapa essencial para garantir a integridade e confiabilidade das informações fornecidas por indivíduos em diversas transações. No Brasil, o CPF (Cadastro de Pessoa Física) é amplamente utilizado como identificador único para pessoas físicas.

O CPF é composto por 11 dígitos e pode ser enviado no formato numérico puro ou com pontuação (pontos e traços). A API suporta ambas as formas de envio e oferece endpoints que permitem verificar a existência e a validade das informações associadas a esse documento

Exemplos de CPFs válidos:

  • 12345678901

  • 123.456.789-01

Regras de Validação

  • Formato:

    • O CPF pode ser enviado com ou sem formatação.

    • Se o CPF for inválido (exemplo: 12345678900), a API retornará um erro 422 - Unprocessable Entity.

A API oferece os seguintes endpoints para validação de CPFs:

  1. Validação de Dados Cadastrais Básicos: Retorna informações essenciais associadas ao CPF.

  2. Validação de KYC e Compliance: Fornece informações detalhadas relacionadas a requisitos regulatórios.

  3. Validação de Compliance para Apostas Online: Retorna informações sobre restrições legais ou regulatórias associadas ao CPF, especialmente relacionadas ao segmento de apostas online.

Endpoints

1. Validação de Dados Cadastrais Básicos

Endpoint: POST /api/validations_documents/basic_data/{cpf}

Descrição

Este endpoint retorna informações cadastrais básicas associadas ao CPF consultado. Ele é usado para validações iniciais e identificação de informações fundamentais.

Requisição

  • Parâmetro de Caminho:

    cpf (string): CPF no formato válido, com ou sem pontos e traços.

    Exemplo: 123.456.789-01 ou 12345678901.

  • Headers:

    Authorization (string, obrigatório): Token de autenticação no formato Bearer.

  • Corpo da Requisição:

    Não aplicável.

Exemplo de Requisição

Basic Data

    curl --location 'https://{{ shield_base_url }}/api/validations_documents/basic_data/{{ cpf }}' \\
    --header 'accept: application/json' \
    --header 'Authorization: Bearer {{ token }}' \
    --header 'Content-Type: application/json' \
    --header 'Origin: *' \
    --data '{}'

Comportamento em Caso de Erros

  • CPF inválido: Retorna 422 - Unprocessable Entity.

  • CPF inexistente na Receita Federal: Retorna 200 OK com uma mensagem indicando que o CPF não está registrado.

Respostas

200 - Exemplo: CPF Inexistente na base da Receita Federal
{
    "Result": [
        {
            "MatchKeys": "doc{02106092888}",
            "BasicData": {
                "TaxIdStatusDate": "0001-01-01T00:00:00"
            }
        }
    ],
    "QueryId": "0c8814c9-977b-43bf-8bb8-bcdfea940ce7",
    "ElapsedMilliseconds": 86,
    "QueryDate": "2024-12-11T20:23:16.6152517Z",
    "Status": {
        "basic_data": [
            {
                "Code": -114,
                "Message": "INVALID DOC PARAMETER"
            }
        ]
    },
    "Evidences": {}
}
200 - Exemplo: CPF Válido com Dados
{
    "Result": [
        {
            "MatchKeys": "doc**********84}",
            "BasicData": {
                "TaxIdNumber": "140*****254",
                "TaxIdCountry": "BRAZIL",
                "AlternativeIdNumbers": {},
                "ExtendedDocumentInformation": {
                    "RG": {
                        "DocumentLast4Digits": "1225",
                        "CreationDate": "2020-11-28T23:03:40.212Z",
                        "LastUpdateDate": "2020-11-28T23:03:40.212Z",
                        "Sources": [
                            "ENADE"
                        ]
                    }
                },
                "Name": "JOS************MAR",
                "Aliases": {
                    "CommonName": "JOSE******MAR",
                    "StandardizedName": "JOS************MAR"
                },
                "Gender": "M",
                "NameWordCount": 3,
                "NumberOfFullNameNamesakes": 1,
                "NameUniquenessScore": 1,
                "FirstNameUniquenessScore": 0.001,
                "FirstAndLastNameUniquenessScore": 0.001,
                "BirthDate": "1986-08-05T00:00:00Z",
                "Age": 28,
                "ZodiacSign": "LEAO",
                "ChineseSign": "Rat",
                "BirthCountry": "BRASILEIRA",
                "MotherName": "LED****************IRA",
                "FatherName": "",
                "MaritalStatusData": {},
                "TaxIdStatus": "REGULAR",
                "TaxIdOrigin": "RECEITA FEDERAL",
                "TaxIdFiscalRegion": "ES-RJ",
                "HasObitIndication": false,
                "TaxIdStatusDate": "2024-08-11T00:00:00",
                "TaxIdStatusRegistrationDate": "2009-12-14T00:00:00Z",
                "CreationDate": "2016-08-23T00:00:00Z",
                "LastUpdateDate": "2024-09-10T00:00:00Z"
            }
        }
    ],
    "QueryId": "9b57e2c0-9324-43cb-a200-c986eb841912",
    "ElapsedMilliseconds": 70,
    "QueryDate": "2024-09-24T18:47:32.3585033Z",
    "Status": {
        "basic_data": [
            {
                "Code": 0,
                "Message": "OK"
            }
        ]
    },
    "Evidences": {}
}
200 - Exemplo: CPF Válido sem Dados
{
    "Result": [
        {
            "MatchKeys": "doc**********87}",
            "BasicData": {
                "TaxIdStatusDate": "0001-01-01T00:00:00"
            }
        }
    ],
    "QueryId": "84c33c28-2865-41fe-a520-90dbc1d047f4",
    "ElapsedMilliseconds": 13458,
    "QueryDate": "2024-01-05T10:58:59.5867667Z",
    "Status": {
        "basic_data": [
            {
                "Code": 0,
                "Message": "OK"
            }
        ]
    },
    "Evidences": {}
}

2. Validação de KYC e Compliance

Endpoint: POST /api/validations_documents/kyc/{cpf}

Descrição

Este endpoint realiza uma validação avançada de KYC (Know Your Customer), retornando informações detalhadas, como histórico de PEPs (Pessoas Politicamente Expostas) e sanções.

Requisição

  • Parâmetro de Caminho:

    cpf (string): CPF no formato válido, com ou sem pontos e traços.

    Exemplo: 123.456.789-01 ou 12345678901.

  • Headers:

    Authorization (string, obrigatório): Token de autenticação no formato Bearer.

  • Corpo da Requisição:

    query_parameters (objeto, opcional): Configurações adicionais para a análise.

    minmatch (integer, opcional): Nível mínimo de correspondência esperado.

    Valor padrão: `95`
    

Exemplo de Requisição

KYC e Compliance - minmatch = 95

    curl --location 'https://{{ shield_base_url }}/api/validations_documents/kyc/{{ cpf }}' \\
    --header 'accept: application/json' \
    --header 'Authorization: Bearer {{ token }}' \
    --header 'Content-Type: application/json' \
    --header 'Origin: *' \
    --data '{}'

Exemplo de Requisição

KYC e Compliance - minmatch = 100

    curl --location 'https://{{ shield_base_url }}/api/validations_documents/kyc/{{ cpf }}' \\
    --header 'accept: application/json' \
    --header 'Authorization: Bearer {{ token }}' \
    --header 'Content-Type: application/json' \
    --header 'Origin: *' \
    --data '{"query_parameters": {"minmatch": 100}}'
  • O minmatch é um parâmetro que define o nível mínimo de correspondência esperado para a validação, valores válidos de 0 a 100.

Comportamento em Caso de Erros

  • CPF inválido: Retorna 422 - Unprocessable Entity.

  • CPF inexistente na Receita Federal: Retorna 200 OK, mas com informações vazias no retorno.

Respostas

200 - Exemplo: CPF Inexistente
  {
  "Result": [
      {
          "MatchKeys": "doc{02106092888}",
          "KycData": {}
      }
  ],
  "QueryId": "c8b0a59c-a91d-43c3-a131-b6922a5e2107",
  "ElapsedMilliseconds": 94,
  "QueryDate": "2024-12-11T20:23:38.3051112Z",
  "Status": {
      "kyc": [
          {
              "Code": -114,
              "Message": "INVALID DOC PARAMETER"
          }
      ]
  },
  "Evidences": {}
} 
200 - Exemplo: CPF Válido com Dados
{
  "Result": [
      {
          "MatchKeys": "doc**********11}",
          "KycData": {
              "PEPHistory": [
                  {
                      "Level": "1",
                      "JobTitle": "PRESIDENTE",
                      "Department": "COMPANHIA DE TESTE (2011)",
                      "Motive": "STATE EMPLOYEE",
                      "Source": "QSA",
                      "TaxId": "122*****301",
                      "StartDate": "2023-08-16T00:00:00Z",
                      "EndDate": "2029-10-11T00:00:00Z"
                  }
              ],
              "IsCurrentlyPEP": true,
              "SanctionsHistory": [
                  {
                      "Source": "ofac",
                      "Type": "Money Laundering",
                      "StandardizedSanctionType": "FINANCIAL CRIMES",
                      "MatchRate": 51,
                      "NameUniquenessScore": "0,125",
                      "Details": {
                          "OriginalName": "LUC**************MES",
                          "SanctionName": "LUC*************NES",
                          "BirthDate": "15 Dec 1975",
                          "StandardizedBirthDate": "1975-12-15T00:00:00",
                          "SourcePossibleDateOfBirthScore": "0",
                          "SanctionAliases|MatchRate": "El Borrego|5",
                          "remarks": "(linked to: LA TEST)"
                      },
                      "NormalizedDetails": {
                          "OriginalName": "LUC**************MAR",
                          "SanctionName": "LUC*************MAR",
                          "SanctionAliasesAndMatchRate": "El Borrego|5",
                          "BirthDate": "12 Dec 1978",
                          "StandardizedBirthDate": "1975-12-15T00:00:00",
                          "SourcePossibleDateOfBirthScore": "0"
                      },
                      "StartDate": "0001-01-01T00:00:00",
                      "EndDate": "9999-12-31T23:59:59.9999999",
                      "CreationDate": "2024-11-01T03:04:52.705",
                      "LastUpdateDate": "2024-11-01T03:04:52.705",
                      "IsCurrentlyPresentOnSource": true,
                      "WasRecentlyPresentOnSource": true
                  },
                  {
                      "Source": "ofac",
                      "Type": "Money Laundering",
                      "StandardizedSanctionType": "FINANCIAL CRIMES",
                      "MatchRate": 50,
                      "NameUniquenessScore": "0,125",
                      "Details": {
                          "OriginalName": "LUC**************MES",
                          "SanctionName": "LUC*****************ANO",
                          "BirthDate": "13 Dec 1946",
                          "StandardizedBirthDate": "1946-12-13T00:00:00",
                          "SourcePossibleDateOfBirthScore": "0"
                      },
                      "NormalizedDetails": {
                          "OriginalName": "LUC**************MES",
                          "SanctionName": "LUC*****************ANO",
                          "BirthDate": "13 Dec 1946",
                          "StandardizedBirthDate": "1946-12-13T00:00:00",
                          "SourcePossibleDateOfBirthScore": "0"
                      },
                      "StartDate": "0001-01-01T00:00:00",
                      "EndDate": "9999-12-31T23:59:59.9999999",
                      "CreationDate": "2024-11-01T03:03:46.034",
                      "LastUpdateDate": "2024-11-01T03:03:46.034",
                      "IsCurrentlyPresentOnSource": true,
                      "WasRecentlyPresentOnSource": true
                  }
              ],
              "IsCurrentlySanctioned": false,
              "WasPreviouslySanctioned": false,
              "Last30DaysSanctions": 0,
              "Last90DaysSanctions": 0,
              "Last180DaysSanctions": 0,
              "Last365DaysSanctions": 0,
              "LastYearPEPOccurence": 1,
              "Last3YearsPEPOccurence": 0,
              "Last5YearsPEPOccurence": 0,
              "Last5PlusYearsPEPOccurence": 0,
              "FirstPEPOccurenceDate": "2023-08-16T00:00:00Z",
              "LastPEPOccurenceDate": "2023-08-16T00:00:00Z",
              "FirstSanctionDate": "0001-01-01T00:00:00",
              "LastSanctionDate": "0001-01-01T00:00:00",
              "IsCurrentlyElectoralDonor": false,
              "IsHistoricalElectoralDonor": true,
              "TotalElectoralDonations": 2,
              "TotalElectoralDonationAmount": 30000,
              "ElectoralDonations": {
                  "2016": {
                      "DonationsCount": 2,
                      "AmountDonated": 30000
                  }
              }
          }
      }
  ],
  "QueryId": "1f88c0fb-c648-4a92-88ac-c5769e9f28e2",
  "ElapsedMilliseconds": 147,
  "QueryDate": "2023-10-01T17:19:13.7795502Z",
  "Status": {
      "kyc": [
          {
              "Code": 0,
              "Message": "OK"
          }
      ]
  },
  "Evidences": {}
}
200 - Exemplo: CPF Válido sem Dados
{
    "Result": [
        {
            "MatchKeys": "doc**********64}",
            "KycData": {
                "PEPHistory": [],
                "IsCurrentlyPEP": false,
                "SanctionsHistory": [],
                "IsCurrentlySanctioned": false,
                "WasPreviouslySanctioned": false,
                "Last30DaysSanctions": 0,
                "Last90DaysSanctions": 0,
                "Last180DaysSanctions": 0,
                "Last365DaysSanctions": 0,
                "LastYearPEPOccurence": 0,
                "Last3YearsPEPOccurence": 0,
                "Last5YearsPEPOccurence": 0,
                "Last5PlusYearsPEPOccurence": 0,
                "IsCurrentlyElectoralDonor": false,
                "IsHistoricalElectoralDonor": false,
                "TotalElectoralDonations": 0,
                "TotalElectoralDonationAmount": 0,
                "ElectoralDonations": {}
            }
        }
    ],
    "QueryId": "f6ccee7f-da9b-4282-b588-15e6cc917777",
    "ElapsedMilliseconds": 150,
    "QueryDate": "2024-11-01T17:19:16.2869226Z",
    "Status": {
        "kyc": [
            {
                "Code": 0,
                "Message": "OK"
            }
        ]
    },
    "Evidences": {}
}

3. Validação de Compliance para Apostas Online

Endpoint: POST /api/validations_documents/check_aptitude/{cpf}

Descrição

Este endpoint verifica se o CPF informado está associado a restrições legais ou regulatórias específicas para o segmento de apostas online. Ele é usado para determinar a aptidão de um indivíduo para participar de atividades de apostas, com base em listas de autoexclusão e outras restrições relevantes.

Requisição

  • Parâmetro de Caminho:

    cpf (string): CPF no formato válido, com ou sem pontos e traços.

    Exemplo: 123.456.789-01 ou 12345678901.

  • Headers:

    Authorization (string, obrigatório): Token de autenticação no formato Bearer.

  • Corpo da Requisição:

    Não aplicável.

Exemplo de Requisição

Compliance para Apostas Online

    curl --location 'https://{{ shield_base_url }}/api/validations_documents/check_aptitude/{{ cpf }}' \\
    --header 'accept: application/json' \
    --header 'Authorization: Bearer {{ token }}' \
    --header 'Content-Type: application/json' \
    --header 'Origin: *' \
    --data '{}'

Comportamento em Caso de Erros

  • CPF inválido: Retorna 422 - Unprocessable Entity.

  • CPF inexistente na Receita Federal: Retorna 200 OK, mas com informações indicando que o CPF não possui restrições associadas.

Respostas

200 - Exemplo: CPF Inexistente
{
    "Result": [
        {
            "MatchKeys": "doc{01406092888}",
            "OnlineBettingCompliance": {}
        }
    ],
    "QueryId": "3fca8f74-bd1e-467f-b777-6cf6f6115e94",
    "ElapsedMilliseconds": 95,
    "QueryDate": "2024-12-11T22:35:45.680699Z",
    "Status": {
        "online_betting_compliance": [
            {
                "Code": -114,
                "Message": "INVALID DOC PARAMETER"
            }
        ]
    },
    "Evidences": {}
}
200 - Exemplo: CPF com Restrições
{
    "Result": [
        {
            "MatchKeys": "doc**********77}",
            "OnlineBettingCompliance": {
                "SportsExposure": {
                    "Sports": [
                        {
                            "SportName": "SO**QR",
                            "Region": "BRAZIL",
                            "TotalRelatedEntities": 1,
                            "RelatedEntities": [
                                {
                                    "DocNumber": "808*****850",
                                    "DocType": "CPF",
                                    "RelationshipLevel": "BUSINESS PARTNER",
                                    "InstitutionName": "FLA**NGO",
                                    "InstitutionActivity": "CLUBES SOCIAIS, ESPORTIVOS E SIMILARES",
                                    "Role": "MANAGER",
                                    "IsActive": true,
                                    "StartDate": "0001-01-01T00:00:00",
                                    "EndDate": "9999-12-31T23:59:59.9999999",
                                    "Source": "FLAMENGOCOUNCIL"
                                }
                            ]
                        }
                    ]
                },
                "ForbiddenBet": {
                    "Name": "PED*************************AES",
                    "Age": "53",
                    "TaxIdStatus": "REGULAR",
                    "IsFromMinisterioDaFazenda": false,
                    "IsBookmakerOwner": true,
                    "BookmakerOwnerMotives": [
                        {
                            "Source": "SIGAP",
                            "CNPJ": "46786961000174",
                            "CompanyName": "KAI********************DA.",
                            "EconomicActivityCodes": "6463800;7319004;9200399",
                            "AdditionalDetails": {
                                "SIGAPApplicationNumber": "000**024",
                                "SIGAPRegistrationDate": "2024-05-26 22:35:16"
                            }
                        }
                    ],
                    "MinisterioDaFazendaMotives": {}
                }
            }
        }
    ],
    "QueryId": "fb90339c-787a-4001-a30f-dfecc5a21a4b",
    "ElapsedMilliseconds": 854,
    "QueryDate": "2024-12-10T17:41:30.6211076Z",
    "Status": {
        "online_betting_compliance": [
            {
                "Code": 0,
                "Message": "OK"
            }
        ]
    },
    "Evidences": {}
}
200 - Exemplo: CPF Sem Restrições
{
    "Result": [
        {
            "MatchKeys": "doc**********88}",
            "OnlineBettingCompliance": {
                "SportsExposure": {
                    "Sports": []
                },
                "ForbiddenBet": {
                    "Name": "JOA*****************************MAR",
                    "Age": "1",
                    "TaxIdStatus": "REGULAR",
                    "IsFromMinisterioDaFazenda": false,
                    "IsBookmakerOwner": false,
                    "BookmakerOwnerMotives": [],
                    "MinisterioDaFazendaMotives": {}
                }
            }
        }
    ],
    "QueryId": "708fa54e-488e-4778-a090-297a82f2f959",
    "ElapsedMilliseconds": 136,
    "QueryDate": "2024-12-10T17:41:31.507089Z",
    "Status": {
        "online_betting_compliance": [
            {
                "Code": 0,
                "Message": "OK"
            }
        ]
    },
    "Evidences": {}
}