Pular para o conteúdo principal

PIX Dict Operation

No momento em que o usuário iniciar uma mudança na DICT, os dados deverão ser enviados para o nosso servidor, de maneira que possamos realizar uma análise do risco envolvido naquele conjunto de dados.

Definição do Objeto de Dict Operation

Request Body
{
"id": "f58e8a19-429d-4e36-a010-ed00a323c2c5",
"dict_key": {
"key_type": "phone",
"key_value": "16981610077",
"assignment_date": "2020-01-15T18:00:00-03:00"
},
"dict_operation_direction": "claimer",
"dict_operation_reason": "user_requested",
"dict_operation_creation_date": "2020-10-14T18:00:00-03:00",
"dict_operation_type": "claim_portability",
"client": {
"id": "123456",
"document_number": "099.912.226-69",
"name": "João Jorge da Silva",
"type": "natural_person",
"address": {
"street": "Avenida 13",
"number": "704",
"neighbourhood": "Centro",
"city": "Ituiutaba",
"uf": "MG",
"complement": "Apt 1101",
"postal_code": "38300-140"
},
"phone": {
"international_dial_code": "55",
"area_code": "65",
"number": "988961210",
"type": "mobile"
},
"sales_channel": "inbound_sales",
"segment": "Personalité"
},
"source_account": {
"participant": "04184779",
"branch": "0001",
"account_number": "1122",
"account_digit": "6",
"owner": {
"type": "legal_person",
"document_number": "94.948.708/0001-12",
"name": "Irmão Soares Ferragista LTDA."
},
"account_type": "CACC",
"opening_date": "2020-01-15T18:00:00-03:00"
},
"destination_account": {
"participant": "00000000",
"branch": "3675",
"account_number": "10442",
"account_digit": "6",
"owner": {
"type": "natural_person",
"document_number": "099.912.226-69",
"name": "João Jorge da Silva"
},
"account_type": "SLRY",
"opening_date": "2020-01-15T18:00:00-03:00"
},
"destination_statistics": {
"account":{
"settlements":{
"d3":12,
"d30":65,
"m6":344
},
"rejected":{
"d3":4,
"d30":67,
"m6":618
},
"reported_frauds":{
"d3":0,
"d30":0,
"m6":0
},
"reported_aml_cft":{
"d3":0,
"d30":0,
"m6":0
},
"confirmed_frauds":{
"d3":0,
"d30":0,
"m6":0
},
"confirmed_aml_cft":{
"d3":0,
"d30":0,
"m6":0
}
},
"owner":{
"settlements":{
"d3":4,
"d30":12,
"m6":88
},
"rejected":{
"d3":4,
"d30":67,
"m6":618
},
"reported_frauds":{
"d3":0,
"d30":0,
"m6":0
},
"reported_aml_cft":{
"d3":0,
"d30":0,
"m6":0
},
"confirmed_frauds":{
"d3":0,
"d30":0,
"m6":0
},
"confirmed_aml_cft":{
"d3":0,
"d30":0,
"m6":0
}
},
"key":{
"settlements":{
"d3":1,
"d30":6,
"m6":12
},
"rejected":{
"d3":4,
"d30":67,
"m6":618
},
"reported_frauds":{
"d3":0,
"d30":0,
"m6":0
},
"reported_aml_cft":{
"d3":0,
"d30":0,
"m6":0
},
"confirmed_frauds":{
"d3":0,
"d30":0,
"m6":0
},
"confirmed_aml_cft":{
"d3":0,
"d30":0,
"m6":0
}
}
},
"source": {
"channel": "internet_banking",
"platform": "android",
"ip": "198.185.065-98",
"session_id": "7839jdqd9a8wd9"
}
}

Uma Dict Operation deve ser enviada para a API antes de ser encaminhada para o sistema de processamento do BCB, a fim de realizar uma validação prévia de fraude de cadastro.

O status da análise da Dict Operation representa a decisão retornada pelo modelo sobre aquela operação. Os seguintes status são utilizados na flag analysis_status:

  • automatically_approved
  • automatically_reproved
  • in_manual_analysis
  • pending

Abaixo estão listados os significados de cada uma das decisões, devolvida na flag analysis_status:

statusdescrição
automatically_approvedRecomenda-se que esta operação seja aprovada.
automatically_reprovedRecomenda-se que esta operação seja reprovada.
in_manual_analysisRecomenda-se que a operação seja analisada manualmente por um analista.
pendingA operação está sendo processada.
nometipodescrição
idstringIdentificador da operação no sistema do cliente.
É essencial que este número seja único para cada processo de autorização
clientclientObjeto que representa os dados do cliente, seja ele o doador ou o recebedor.
transaction_datedatetimeA data e hora de início da transação, com fuso horário.
dict_keydict_keyObjeto que representa os dados da chave de vínculo no DICT, utilizada pelo cliente na trasação.
dict_key_typeenumeradorTipo da chave de vínculo ao DICT.
dict_operation_directionenumeradorDireção de operação no DICT, isto é, se uma chave está sendo cedida ou obtida.
dict_operation_reasonenumeradorA razão pelo qual a Operação na Dict está sendo realizada.
dict_operation_creation_datedatetimeData da operação no DICT.
dict_operation_typeenumeradorTipo de operação no DICT.
source_accountsource_accountObjeto que representa os dados da conta que está cedendo a chave de vínculo.
destination_accountdestination_accountObjeto que representa os dados da conta que está recebendo a chave de vínculo.
destination_statisticsdestination_statisticsObjeto que representa o histórico de transações e fraudes da conta que esta recebendo a chave de vinculo.
sourcesourceObjeto do tipo Source que descreve as informações provenientes da aplicação utilizada para envio do cadastro

O campo dict_key_type aceita os mesmos enumeradores definidos na API do DICT: cpf,cnpj,email,phone e evp.

O campo dict_operation_direction aceita os enumeradores: donor e claimer.

O campo dict_operation_type aceita os enumeradores registration, claim_ownership e claim_portability. Sendo estas todos os tipos de operações na DICT definidas pelo BCB.

Enviar uma Dict Operation

Request Body
  {
"id": "f58e8a19-429d-4e36-a010-ed00a323c2c5",
...
}
Response Body
  {
"dict_operation_key": "7f85e162-5a7d-41fa-a578-69df6f3df958",
"status": "automatically_approved"
}

Para realizar a avaliação de um pagamento, basta enviar um objeto do tipo Payment ao seguinte endpoint:

POST https://api.caas.qitech.app/pix/dict_operation

Recuperar uma Dict Operation

Response Body
  {
"id": "f58e8a19-429d-4e36-a010-ed00a323c2c5",
...
}

Para recuperar uma Dict Operation, basta enviar uma requisição ao seguinte endpoint:

GET https://api.caas.qitech.app/pix/dict_operation/{dict_operation_id}

Onde dict_operation_id é o identificador da operação que nos foi enviado no momento do cadastro desta, no campo "id".

Será, então, retornado o objeto Dict Operation associado a chave provida.

Atualizar uma Dict Operation

Request Body
  {
"dict_operation_status": "cancelled_by_client",
"reason": "user_requested",
"event_date": "2020-10-07T15:06:25-03:00"
}

Uma Dict Operation possui várias fases junto ao BCB antes que seja concluída. Deste modo, é necessário que sejam informadas todas as atualizações de status das operações, através do endpoint:

PUT https://api.caas.qitech.app/pix/dict_operation/{dict_operation_id}

Deste modo, garate-se que nossa base de dados seja atualizada e esteja sempre coerente com a base de dados do BCB.

Algumas operações na DICT demandam que seja submetida a razão da operação juntos dos dados. Para estes casos, é necessário informar o campo reason no objeto de envio, contendo o mesmo enumerador provido ao sistema do BCB. São esses:

enumeradordescrição
user_requestedA operação foi requisitada pelo cliente.
account_closureA operação foi iniciada devido ao fechamento da conta do cliente.
branch_transferA operação foi requisitada devido a mudança de agência do cliente.
entry_inactivityA operação foi requisitada devido a inatividade na conta do cliente.
reconciliationA operação foi requisitada após um processo de reconcialiation.
default_operationA operação foi requisitada por uma ação padrão do participante.
fraudA operação foi requisitada devido a um fraude ligada a conta do cliente.

As fases de uma operação na DICT aceitas pelo campo dict_operation_status são:

enumeradordescrição
createdA dict_operation foi criada mas ainda não foi analisada.
reprovedA dict_operation foi reprovada na análise e não será enviada ao BCB.
waiting_resolutionA dict_operation foi enviada ao BCB e está esperando a resolução.
cancelled_by_clientA dict_operation foi cancelada pelo cliente.
cancelled_by_counterpartA dict_operation foi cancelada pela outra parte da operação.
confirmedA dict_operation foi confirmada pela outra parte da operação.
completedA dict_operation foi completada e adicionada a base de dados do BCB.