Extração de estoque (WIP)
Pedido assíncrono do estoque de um fundo pela API do investidor: o arquivo CSV, uma linha por parcela, chega por link no e-mail cadastrado da credencial. Rota em estágio inicial.
POST /v1/inventory-exports · header iorq-fund-id · resultado por e-mail
Em estágio inicial (WIP)Esta rota é a primeira versão da extração de estoque. O contrato da rota, as colunas do arquivo e os limites abaixo ainda estão em revisão e podem mudar sem nova versão da API. Antes de automatizar algo em cima do arquivo, fale com o seu contato na IORQ.
1. O que esta rota faz
Ela pede o estoque do fundo: a lista das parcelas do fundo, com os dados da operação, do devedor e dos valores. A geração é assíncrona:
- a chamada responde
202com umexport_idassim que o pedido é aceito; - a IORQ gera o arquivo CSV em seguida;
- o link de download chega no e-mail cadastrado da credencial, válido por 12 horas.
O arquivo não vem na resposta da chamada, e não há rota para consultar o pedido pelo export_id. O resultado chega só por e-mail.
2. Quem pode pedir
- A permissão é própria e vale por fundo. A credencial precisa da permissão de extração de estoque no fundo do header. A IORQ concede essa permissão fundo a fundo, a pedido.
- Ela é independente da permissão de leitura. A permissão de leitura de covenants e indicadores não abre esta rota, e a de estoque não abre as rotas de leitura.
- Vale para os dois perfis. Uma credencial de originador que também é cotista do fundo pode receber esta permissão, além da credencial de investidor. Ver Perfis de acesso.
- O link vai para o e-mail cadastrado na credencial. É o endereço informado à IORQ quando a credencial foi criada. Para trocá-lo, fale com o seu contato na IORQ. O arquivo leva CPF/CNPJ e nome de devedor: confira que esse endereço é de quem deve receber o estoque.
3. Fluxo
sequenceDiagram
participant CLI as Cliente
participant AUTH as IORQ Auth (Cognito)
participant API as API do investidor
participant IORQ as IORQ (geração)
participant MAIL as E-mail cadastrado
CLI->>AUTH: POST /oauth2/token (client_id + client_secret)
AUTH-->>CLI: access_token (JWT, exp=1h)
CLI->>API: POST /v1/inventory-exports (Bearer + iorq-fund-id)
API-->>CLI: 202 { export_id }
API->>IORQ: pedido enfileirado
IORQ->>IORQ: gera o CSV do estoque do fundo
IORQ->>MAIL: e-mail com o link de download (12 h)
MAIL->>IORQ: download do CSV pelo link
4. O pedido
curl -X POST 'https://investor-api.iorq.com.br/v1/inventory-exports' \
-H 'Authorization: Bearer eyJraWQiOiJyc2EtMjAyNiIs...' \
-H 'iorq-fund-id: 6f1c2d3e-4b5a-4c7d-8e9f-0a1b2c3d4e5f'Sem corpo. O fundo vai só no header iorq-fund-id, com o id do fundo.
{
"export_id": "2fe09d49-b6f3-4361-9060-5b83587b740e"
}Guarde o export_id: é ele que a IORQ usa para localizar o pedido quando um estoque não chega.
5. O arquivo
- Formato: CSV em UTF-8 com BOM, separador
;, quebra de linha CRLF. Números com vírgula decimal e sem separador de milhar; datas no formato ISO (aaaa-mm-dd); campo sem valor sai vazio. Um texto que começaria uma fórmula numa planilha (=,+,-,@) sai com'na frente. - Granularidade: uma linha por parcela.
- Sem filtro de estado: entram parcelas em qualquer estado, inclusive as já liquidadas. Isso permite conciliar uma parcela que já foi baixada na IORQ e ainda aparece de pé na administradora.
- É uma foto do instante da geração, não uma posição numa data-base. Dois pedidos em momentos diferentes podem trazer valores e estados diferentes.
- É a visão da gestora (IORQ), não a da administradora do fundo. As duas podem divergir enquanto um evento ainda não foi refletido na administradora.
| Coluna | O que é |
|---|---|
created_at | Criação da operação na IORQ, aaaa-mm-dd hh:mm:ss.mmm em UTC, sem fuso. Não é a data da operação |
Numero do Contrato | Código da proposta no originador |
Numero CCB | Código da proposta no banco emissor |
Seu Numero | Id da parcela na IORQ (UUID) |
Codigo de Parcela | Código da parcela informado na cessão |
Estado da parcela | Estado da parcela, em inglês (active, late, paid, settled...) |
Tipo de produto do Originador | Tipo de produto informado pelo originador |
Data da aquisicao | Data da aquisição pelo fundo |
Data de Pagamento | Data de pagamento da parcela, quando paga |
Vencimento de Parcela | Vencimento da parcela |
Tipo de divida | Tipo da dívida da operação |
CPF/CNPJ | Documento do devedor, pessoa física ou jurídica |
Devedor | Nome do devedor |
Valor de Face | Valor de face da parcela |
Valor de Aquisicao | Valor pago pelo fundo pela parcela |
Taxa de Aquisição Fundo | Taxa mensal de aquisição do fundo, como registrada na operação |
Taxa Mensal | Taxa mensal da operação, em fração e com ponto decimal. Vazia em operação pós-fixada |
Taxa mensal (%) | A mesma taxa em percentual, truncada em duas casas (2,69%). Vazia em operação pós-fixada |
Colunas em revisãoA lista acima é a primeira versão. Colunas podem entrar, sair ou mudar de nome. Não dependa da posição de uma coluna: leia pelo nome do cabeçalho.
6. Pedidos repetidos
Um novo pedido da mesma credencial para o mesmo fundo em até 15 minutos do anterior também responde 202, com um export_id novo, mas não gera um segundo arquivo nem um segundo e-mail: o e-mail que chega é o do primeiro pedido. Depois de 15 minutos, um pedido novo gera um arquivo novo.
Credenciais diferentes no mesmo fundo, e a mesma credencial em fundos diferentes, não se bloqueiam.
7. Limites desta primeira versão
- Falha silenciosa. Se a geração falhar, hoje nenhum e-mail é enviado: nem o link, nem um aviso. Se o e-mail não chegar em alguns minutos, peça de novo; se continuar sem chegar, informe o
export_idao seu contato na IORQ. - Sem consulta de status. Não há rota para saber se um pedido terminou nem para baixar o arquivo pelo
export_id. - Link de 12 horas. Depois disso o link expira; peça o estoque de novo.
- Fundos muito grandes. A geração tem um tempo máximo. Num fundo com volume muito alto de parcelas ela pode não terminar, e então nenhum e-mail chega.
- Só por e-mail. O arquivo não é entregue por webhook nem pela resposta da chamada.
8. Erros
O formato dos erros é o mesmo das demais rotas da API do investidor (Erros). Os específicos desta rota:
| HTTP | Origem | error_code ou corpo | Causa | O que fazer |
|---|---|---|---|---|
400 | Serviço | FUND_HEADER_MISSING, FUND_HEADER_INVALID | Header iorq-fund-id ausente ou fora do formato UUID | Enviar o id do fundo |
401 | Gateway / Serviço | {"message": "Unauthorized"}, CALLER_NOT_PROVISIONED | Authorization ausente; credencial desconhecida, suspensa ou removida | Incluir o token; falar com o seu contato na IORQ |
403 | Gateway | {"message": "Forbidden"} | Token inválido ou expirado | Renovar o token e repetir |
403 | Serviço | INVENTORY_EXPORT_DENIED | Fundo não vinculado à credencial, inexistente, ou sem a permissão de extração de estoque | Falar com o seu contato na IORQ |
422 | Serviço | CALLER_EMAIL_INVALID | A credencial não tem um e-mail válido cadastrado para receber o link | Falar com o seu contato na IORQ para cadastrar o e-mail |
429 | Gateway | {"message": "Too Many Requests"} | Taxa acima do limite do gateway | Repetir com backoff |
500 | Serviço | FUND_TENANT_UNKNOWN | Falta configuração do fundo na IORQ | Falar com o seu contato na IORQ |
503 | Serviço | INVENTORY_EXPORT_QUEUE_UNAVAILABLE, ou {"message": "Unexpected error", ...} | A fila de pedidos ou uma dependência interna não respondeu | Repetir com backoff; se persistir, informar o cid |
Em todo erro acima, nada é enfileirado e nenhum e-mail é enviado.
Updated 19 days ago
