Dois exemplos completos — um REST e um SOAP — para confirmar que a credencial funciona e entender o formato das respostas antes de escrever a integração de verdade.Antes de começar você precisa do domínio do cliente, do usuário e da senha. Se ainda não tem, veja Credenciais e Suporte.
Parte 1 — Uma chamada REST#
GET /consulta/operacao é a chamada mais simples da API: só lê dados, não altera nada e aceita os dois modos de credencial. É o teste ideal.Requisição#
O -i faz o cURL mostrar os headers de resposta — útil para ver o status HTTP.| Parâmetro | Obrigatório | Descrição |
|---|
data | Não | Data das operações, em DD/MM/AAAA ou DD-MM-AAAA. Ausente, assume hoje |
codigoSituacao | Não | Filtra por situação, no código Fromtis |
formato | Não | json (padrão) ou xml |
Resposta esperada#
200 OK, com um array de operações:[
{
"nomeArquivo": "REM0001.REM",
"nomeArquivoEntrada": "REM0001.REM",
"cnpjFundo": "12345678000190",
"nomeCedente": "CEDENTE EXEMPLO LTDA",
"documentoCedente": "98765432000110",
"calculoTotalPagamento": 15000.00,
"codigoSituacaoOperacao": 5
}
]
Um array vazio ([]) também é sucesso: significa que não há operações na data consultada. Operações cuja situação no QTrust não tem correspondente no domínio Fromtis são omitidas da lista.Se der errado#
| Resposta | O que fazer |
|---|
401 com "error": "MissingCredentials" | O header não chegou. Confira se o -u (ou o Authorization) está na chamada |
401 com "error": "AuthenticationFailed" | Usuário ou senha recusados. Teste a mesma credencial no portal web antes de repetir |
401 com "error": "AuthorizationError" | Credencial válida, mas o usuário não está vinculado a Consultoria nem a Gestora. É cadastro no portal |
400 com "error": "ValidationError" | Formato de data ou codigoSituacao inválido. A mensagem diz qual |
Lembre que as rotas de consulta usam o envelope de erro { "error": ..., "message": ... }, diferente do resto da API — veja Primeiros Passos.
Parte 2 — Uma chamada SOAP#
O fluxo do relatório de estoque mostra bem o padrão SOAP da API: agendar, consultar até ficar pronto, baixar.Passo 1 — Pegue o WSDL#
O contrato autoritativo da operação está sempre no mesmo caminho, via GET com ?wsdl:É a partir dele que você gera o cliente (svcutil, wsimport, "Add Service Reference", zeep). O host vem já substituído pelo host da requisição.⚠️ Sem a query string ?wsdl, o GET responde 404. Isso não significa que o endpoint não existe — ele só aceita POST.
Passo 2 — Agende o relatório#
Salve o envelope em agendar.xml:<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:tns="http://soap.consulta.servicos.portal.fidc.fromtis.com.br/">
<soap:Body>
<tns:agendadorRelatorioEstoque>
<requisicaoRelatorioEstoque>
<cnpjFundo>12345678000190</cnpjFundo>
<dataReferencia>2026-09-10</dataReferencia>
</requisicaoRelatorioEstoque>
</tns:agendadorRelatorioEstoque>
</soap:Body>
</soap:Envelope>
dataReferencia aceita AAAA-MM-DD, AAAA/MM/DD, DD/MM/AAAA ou DD-MM-AAAA. Data futura é recusada. O elemento opcional cpfCnpjCedente restringe o relatório a um cedente.<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:agendadorRelatorioEstoqueResponse xmlns:ns2="http://soap.consulta.servicos.portal.fidc.fromtis.com.br/">
<retornoRelatorioEstoque>
<idAgendamento>4455</idAgendamento>
<messangemRetorno>
<tipoRetorno>SUCESSO</tipoRetorno>
<descricaoRetorno>Agendamento do Relatório de Estoque Realizado com Sucesso.</descricaoRetorno>
</messangemRetorno>
</retornoRelatorioEstoque>
</ns2:agendadorRelatorioEstoqueResponse>
</S:Body>
</S:Envelope>
⚠️ Leia tipoRetorno, não o status HTTP. Fundo não encontrado, data futura, ausência de estoque na data — tudo isso responde 200 com tipoRetorno igual a ERRO e sem idAgendamento. Só SUCESSO confirma o agendamento.
Passo 3 — Consulte até ficar pronto#
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:tns="http://soap.consulta.servicos.portal.fidc.fromtis.com.br/">
<soap:Body>
<tns:consultarRelatorio>
<requisicaoConsultaRelatorio>
<idAgendamento>4455</idAgendamento>
</requisicaoConsultaRelatorio>
</tns:consultarRelatorio>
</soap:Body>
</soap:Envelope>
Faça polling até idMensagem chegar a 5:idMensagem | Significado |
|---|
1 | Em processamento |
5 | Finalizado com sucesso, disponível para download |
9 | Erro ao processar o relatório |
90 | Agendamento não encontrado |
91 | idAgendamento ausente ou não numérico |
Essa operação também responde sempre 200, inclusive quando o agendamento não existe.Passo 4 — Baixe#
Com idMensagem igual a 5, chame POST /soap/agendador/realizarDownload com o mesmo idAgendamento. O contrato está no WSDL da operação.Se der errado#
Falhas de credencial e de envelope vêm como SOAP Fault, com status 401 ou 400:<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<S:Fault>
<faultcode>AuthenticationFailed</faultcode>
<faultstring>Usuário ou senha inválidos.</faultstring>
</S:Fault>
</S:Body>
</S:Envelope>
faultcode | Status | Causa |
|---|
MissingCredentials | 401 | Nenhuma credencial informada |
AuthenticationFailed | 401 | Credencial recusada |
AuthorizationError | 401 | Usuário sem permissão para a operação ou para o fundo |
InvalidRequest | 400 | XML malformado, ou elemento obrigatório ausente no envelope |
ValidationError | 400 | Dados do envelope inválidos |
InternalError | 400 | Exceção não tratada |
Modificado em 2026-09-23 15:34:56