Arquitetura e Configuração do WCF
:::danger SERVIÇO LEGADO Documentação de referência do serviço legado. Não inicie novos projetos usando WCF. :::
1. Serviços e Endpoints
Cada serviço publica dois endpoints: REST/JSON no endereço raiz e SOAP/XML em /soap.
| Serviço | Endpoint REST/JSON | Endpoint SOAP | Modo de instância |
|---|---|---|---|
AereoNoSession.svc | /AereoNoSession.svc/{Operacao} | /AereoNoSession.svc/soap | Uma instância por chamada, sem sessão |
Aereo.svc | /Aereo.svc/{Operacao} | /Aereo.svc/soap | Uma instância por sessão |
Usuario.svc | /Usuario.svc/{Operacao} | /Usuario.svc/soap | Uma instância por sessão |
AereoNoSession.svc e Aereo.svc compartilham o mesmo contrato de 51 operações. No AereoNoSession.svc o contrato não permite sessão, e nenhum estado é mantido entre duas chamadas.
2. Comportamento do Endpoint REST
- Todas as operações respondem a
POST /{NomeDaOperacao}. Nenhuma operação utilizaGET. - O corpo é sem envelope: o JSON enviado e recebido é a própria representação do objeto de requisição/resposta, sem um nó externo com o nome da operação.
- A página de ajuda do serviço fica em
/{Servico}.svc/help. - O formato da resposta é negociado automaticamente a partir do cabeçalho da requisição. Envie sempre
Content-Type: application/jsoneAccept: application/jsonpara receber JSON. - Nomes de campos são sensíveis a maiúsculas e minúsculas e seguem exatamente os nomes das tabelas desta documentação.
3. Comportamento do Endpoint SOAP
- Endereço:
/{Servico}.svc/soap. - Mensagens SOAP/XML sobre HTTP, com os mesmos contratos de dados do endpoint REST.
- O serviço está configurado para publicar metadados (WSDL). A disponibilidade do WSDL em cada ambiente deve ser confirmada com a Wooba.
4. Timeouts
Na configuração atual, tanto o endpoint REST quanto o SOAP trabalham com limite de 2 minutos para abertura, envio e recebimento. Configure no cliente um timeout de pelo menos 120 segundos, especialmente para Disponibilidade, que pode consultar vários fornecedores.
No Aereo.svc, a sessão HTTP expira após 10 minutos de inatividade.
5. Estrutura Comum das Requisições
Todas as requisições das operações aéreas (exceto Autenticar e AutenticarComUsuario) herdam os campos abaixo:
| Campo | Tipo | Descrição |
|---|---|---|
Login | String | Login da credencial do webservice. |
Senha | String | Senha da credencial do webservice. |
ClienteId | Integer (opcional) | Id do cliente corporativo. |
AutenticacaoUsuario | Objeto (opcional) | Dados de autenticação do usuário da agência (veja Autenticação). |
token | String | Token obtido em Autenticar, para uso com sessão (Aereo.svc). |
transacaoId | String | Identificador livre enviado pelo cliente, gravado nos registros de log para correlação de chamadas. |
:::caution Atenção à caixa dos nomes
Os campos token e transacaoId são escritos com a primeira letra minúscula. Os demais campos iniciam em maiúscula.
:::
6. Estrutura Comum das Respostas
| Campo | Tipo | Descrição |
|---|---|---|
Data | String /Date(...)/ | Data e hora em que a resposta foi gerada. |
DataVersao | String | Data da versão do serviço, no formato dd/MM/yyyy. |
SessaoExpirada | Boolean | true quando a sessão/token informado expirou ou não foi informado junto com as credenciais. |
Exception | Objeto ou null | Preenchido em caso de erro de negócio, com o campo Message. |
Erros de negócio e de autenticação das operações aéreas retornam no objeto Exception, com o texto do erro em Exception.Message. As exceções às regras acima são:
Autenticarretorna umastring: o token em caso de sucesso, ou a mensagem de erro.AutenticarComUsuarioretorna os erros no arrayErros.Desconectarnão possui parâmetros nem corpo de resposta.