CA API do Rating funciona de maneira assíncrona.
Isso se dá pelo fato de a carga de dados a ser suportada ser grande, por esse motivo o processamento síncrono pode causar lentidão em interfaces e risco de perdas de dados nessa espera.
Envio por lotes
Como a carga de dados pode atingir valores altos, o envio para os endpoints são limitados por valores que definem um lote.
A quantidade máxima que cada endpoint pode recepcionar é um parâmetro por endpoint, a ser definido em tempo de implantação no arquivo de configuração de API. (para mais detalhes, vide RT - Rating - Parâmetros Técnicos (sistema))
Caso a quantidade de registros passado nos endpoints ultrapasse o parâmetrizado, o endpoint retornará um erro.
Definição de quantidade por Lote
Cada item de cada endpoint pode variar o tamanho.
Abaixo temos uma referência do tamanho representado e um valor recomendado por endpoint
- Operação
- 1 registro ≈ 7,12KB (sem compressão)
- Valor recomendado: 14.000 (equivalendo cerca de 100MB por requisição)
- Cálculo Provisão
- 1 registro ≈ 550B (sem compressão)
- Valor recomendado: 180.000 (equivalendo cerca de 100MB por requisição)
- Motivo Perda
- 1 registro ≈ 136B (sem compressão)
- Valor recomendado: 735.000 (equivalendo a 100MB por requisição)
- Motivo Alocação
- 1 registro ≈ 175B (sem compressão)
- Valor recomendado: 570.000 (equivalendo a 100MB por requisição)
Fluxo de processamento
O fluxo de processamento é descrito na imagem abaixo
Os endpoints da etapa 3/5 (Consulta Status Lote) e 7 (Consulta Erros Lote) estão descritos abaixo
Endpoints processamento
Endpoints para acompanhamento de processamento assíncrono
Consulta Status Lote
Endpoint: /processamento/{cd_emp}/{dt_mov}/{id_request}
Método: GET
Content Type: Não possui (sem corpo de requisição)
Corpo: Não possui
Retornos
200 - OK: Retornando status de processamento
Content Type: application/json
Corpo
{ "dsStatus": "string", // AGUARDANDO, PROCESSANDO, FINALIZADO, ERRO "qtLote": "number", // Quantidade de itens totais "qtProc": "number", // Quantidade de itens processados "qtErro": "number" // Quantidade de itens erros }
404 - Não achado: Não achado processamento para os parâmetros
Content Type: application/json
Corpo
{ "status": 0, "error": "string", "message": "string" }
500 - Erro Interno
Content Type: application/json
Corpo
{ "status": 0, "error": "string", "message": "string" }
Consulta Erros Lote
Endpoint: /processamento/{cd_emp}/{dt_mov}/{id_request}/erro
QueryString:
- ?page=0 (paginação, default 0)
- ?size= 50 (tamanho página, default 50)
Método: GET
Content Type: Não possui (sem corpo de requisição)
Corpo: Não possui
Retornos
200 - OK: Retornando erros de processamento
Content Type: application/json
Corpo
[{ "dsErro": "string", "dsObj": { // Campos que identificam objeto e variam com o fluxo // (mais detalhes abaixo) } }, .... //Demais elementos ]
40X - Erro: Requisição
Content Type: application/json
Corpo
{ "status": 0, "error": "string", "message": "string" }
500 - Erro Interno
Content Type: application/json
Corpo
{ "status": 0, "error": "string", "message": "string" }