Documentação · v0.2
Orquestrador Mobility ⟷ Omie
Referência completa das rotas que substituem o WOOFFICE, das regras de negócio aplicadas em cada uma e da configuração do ambiente.
Visão geral
URL base
https://mobility.iaxys.com.br
Autenticação
X-Api-Key: <chave>
Formato
JSON UTF-8, datas ISO 8601, valores em reais com ponto decimal.
A Mobility envia cada reserva confirmada para o orquestrador. O orquestrador valida, grava o detalhe operacional que a Omie não comporta e cria na Omie o cliente, a Ordem de Serviço e os títulos a receber e a pagar.
Depois, a Omie avisa o orquestrador por webhook sobre baixas, faturamento e alterações. O orquestrador repassa esses eventos para a Mobility com assinatura HMAC, ou os deixa disponíveis para consulta.
curl -X POST https://mobility.iaxys.com.br/api/mobility/v1/vendas \ -H "X-Api-Key: $MOBILITY_API_KEY" \ -H "Content-Type: application/json" \ -d @venda.json
Rotas
Cada rota lista parâmetros, respostas possíveis e as regras de negócio que a compõem.
Vendas
/api/mobility/v1/vendasX-Api-KeyImportar venda
Recebe uma reserva confirmada e a transforma em cliente, OS e títulos financeiros na Omie.
Substitui: ImportacaoDeVenda.svc → ImportarVenda (ExportarVendasMobilToWooffice)
Recebe o payload de uma reserva (o antigo XML ImportacaoVenda, agora em JSON camelCase). A Mobility envia um payload por reserva, e várias reservas podem compartilhar o mesmo File.
A resposta é imediata (202) e o processamento na Omie acontece em segundo plano. O resultado fica disponível na consulta de status e é enviado no callback para a Mobility.
Dados de cartão e documentos de condutores são mascarados antes de qualquer gravação.
Corpo
Objeto VendaImportacao. Use as amostras reais do painel de testes como referência.
Respostas
- 202Aceita. Devolve protocolo, chave da reserva e as outras reservas já recebidas no mesmo File.
- 400Corpo não é JSON válido.
- 401X-Api-Key ausente ou inválida.
- 409Esta reserva já foi importada e não está em ERRO. Devolve o estado atual.
- 422Falha de validação do contrato. O campo detalhes lista cada problema.
- 503MOBILITY_API_KEY não configurada no servidor.
Regras de negócio aplicadas
Exemplo de resposta
{
"protocolo": "MOB-20260911-00341130-A1B2C3",
"file": "00341130",
"chave": "29-26-00341130-341131",
"localizadores": [
"FOPB8XW"
],
"status": "RECEBIDO",
"outrasReservasDoFile": [
{
"chave": "29-26-00341130-341130",
"status": "INTEGRADO"
}
],
"persistencia": "postgres",
"consulta": "/api/mobility/v1/vendas/00341130?empresa=29&filial=26"
}/api/mobility/v1/vendas/{file}X-Api-KeyStatus do File
Estado consolidado do File, com cada reserva, a OS e os títulos criados na Omie.
Devolve o status de todas as reservas exportadas com aquele File. O status consolidado é INTEGRADO só quando todas as reservas estão integradas.
Empresa e filial são opcionais, mas recomendadas quando o mesmo número de File pode existir em mais de uma filial.
Parâmetros
| file | path · obrigatório | Número do File na Mobility. | 00341130 |
| empresa | query | Id da empresa no WOOFFICE. | 29 |
| filial | query | Id da filial no WOOFFICE. | 26 |
Respostas
- 200Status consolidado e lista de reservas.
- 404Nenhuma reserva recebida com esse File.
Regras de negócio aplicadas
Exemplo de resposta
{
"file": "00341130",
"status": "INTEGRADO",
"quantidadeReservas": 2,
"reservas": [
{
"chave": "29-26-00341130-341130",
"localizadores": [
"FOJOKLB"
],
"status": "INTEGRADO",
"osOmie": {
"nCodOS": 987654,
"cCodIntOS": "MOB-29-26-00341130-341130",
"cNumOS": "000123"
},
"titulosReceber": [
{
"codigoIntegracao": "MOB-00341130-CRE-341130-R1-P1",
"valor": 117.39,
"vencimento": "20/09/2026",
"parcela": "1/1"
}
],
"titulosPagar": [
{
"codigoIntegracao": "MOB-00341130-CPA-341130-1",
"valor": 0.11,
"tipo": "COMISSAO"
}
],
"erros": []
}
]
}/api/mobility/v1/vendas/{file}/creditoX-Api-KeyConsultar crédito do File
Itens financeiros do File (CRE e CPA), situação na Omie e rentabilidade.
Substitui: ConsultaVendas.svc → BuscarDadosDaVenda (ConsultarCrédito)
Mesma semântica do TurVendaDadosModelo do WOOFFICE. Lista os títulos a receber (CRE) e a pagar (CPA) de todas as reservas do File.
Por padrão consulta cada título ao vivo na Omie para saber se já foi baixado. Use omie=0 para responder só com os dados do orquestrador.
Parâmetros
| file | path · obrigatório | Número do File. | 00341130 |
| empresa | query | Id da empresa. | 29 |
| filial | query | Id da filial. | 26 |
| omie | query | 0 para não consultar a Omie ao vivo. | 1 |
Respostas
- 200Itens, totais e rentabilidade. Falhas pontuais na Omie aparecem em avisos.
- 404File não encontrado.
Regras de negócio aplicadas
Exemplo de resposta
{
"file": "00341130",
"situacao": "VendaImportada",
"formaDePagamento": "FATURADO",
"formaDeRecebimento": "CC",
"valorTotalCre": 352.17,
"valorTotalCpa": 0.11,
"valorRentabilidade": 352.06,
"percentualRentabilidade": 99.97,
"itens": [
{
"tipo": "CRE",
"subProduto": "CARRO",
"situacao": "Previsto",
"localizador": "FOJOKLB",
"total": 117.39
}
]
}/api/mobility/v1/vendas/{file}/reprocessarX-Api-KeyReprocessar File
Roda de novo, na hora, as reservas do File que não estão integradas.
Útil depois de corrigir um cadastro na Omie (cliente, categoria, serviço) ou quando a venda ficou em ERRO.
O processamento retoma de onde parou: o que já foi criado na Omie não é duplicado.
Parâmetros
| file | path · obrigatório | Número do File. | 00341130 |
| empresa | query | Id da empresa. | 29 |
| filial | query | Id da filial. | 26 |
Respostas
- 200Lista das reservas reprocessadas e o novo status consolidado.
- 404File não encontrado.
Regras de negócio aplicadas
/api/mobility/v1/vendasX-Api-KeyResumo por status
Quantidade de reservas em cada status, para monitoramento.
Contagem por status de todas as reservas recebidas pelo orquestrador.
Respostas
- 200Objeto porStatus e o modo de persistência.
Regras de negócio aplicadas
Exemplo de resposta
{
"persistencia": "postgres",
"porStatus": {
"INTEGRADO": 14,
"RETRY": 1,
"ERRO": 1
}
}Câmbio
/api/mobility/v1/cotacoesX-Api-KeyConsultar câmbio
Cotação PTAX do Banco Central por moeda e data, com os últimos dias úteis.
Substitui: Financeiro/CotacaoMoeda.svc → BuscarCotacaoUltimosDias (ConsultarCâmbio)
Fonte oficial PTAX do Banco Central, boletim de fechamento, cotação de venda.
Devolve as últimas N cotações de dias úteis até a data pedida, da mais recente para a mais antiga.
Parâmetros
| moeda | query · obrigatório | Código ISO da moeda. | USD |
| tipo | query | Tipo de produto (mantido por compatibilidade). | Carro |
| data | query | Data de referência YYYY-MM-DD. Padrão: hoje. | 2026-09-10 |
| dias | query | Quantidade de dias úteis (1 a 30). | 3 |
Respostas
- 200Lista de cotações.
- 400Moeda ausente ou inválida.
- 404Sem cotação no período.
- 502Banco Central indisponível.
Regras de negócio aplicadas
Exemplo de resposta
[
{
"moeda": "USD",
"tipo": "Carro",
"data": "2026-09-10",
"valor": 5.0846,
"fonte": "PTAX"
}
]Eventos
/api/mobility/v1/eventosX-Api-KeyEventos da Omie (polling)
Eventos recebidos dos webhooks da Omie, para leitura incremental.
Alternativa ao callback enquanto a Mobility não tiver um endpoint próprio. Guarde o campo proximoDesde e envie no parâmetro desde da próxima chamada.
Parâmetros
| desde | query | Data ISO do último evento lido. | 2026-09-11T00:00:00Z |
| limite | query | Máximo de eventos (até 500). | 100 |
Respostas
- 200Lista de eventos e o cursor proximoDesde.
Regras de negócio aplicadas
Webhooks
/api/omie/webhookappKey OmieReceptor de webhooks da Omie
URL cadastrada no Developer Omie. Grava cada evento e repassa para a Mobility.
A Omie chama esta rota a cada evento dos tópicos cadastrados. A URL é cadastrada no Developer Omie sem token, porque a Omie não oferece esse recurso.
A autenticidade vem do appKey que a Omie envia no corpo de cada evento: ele precisa ser igual ao OMIE_APP_KEY da integração. Eventos sem appKey, como a notificação de teste, recebem 200 e são ignorados.
O orquestrador responde em menos de 7 segundos, grava o evento na base Eventos Omie, descobre o File pelos códigos MOB- e encaminha para a Mobility.
No painel de testes os eventos são simulações marcadas como simulado, autenticadas por um header interno do servidor.
Corpo
Evento no formato da Omie: messageId, topic, event, author.
Respostas
- 200Evento recebido (recebido: true) ou ignorado por não trazer appKey (recebido: false).
- 403appKey do evento é de outra conta Omie.
Regras de negócio aplicadas
Configuração
/api/configuracoesSessão ou X-Api-KeyConsultar configurações
Parâmetros efetivos do orquestrador e de onde cada um veio (Notion, .env ou padrão).
Lê as bases Configurações e Formas de recebimento e pagamento da página Mobility no Notion. Cada item informa a origem do valor.
Segredos (chaves da Omie, da Mobility, tokens) nunca aparecem. Use recarregar=1 para ignorar o cache de 60 segundos.
A alteração é feita com PATCH na mesma rota, só pelo perfil Admin do painel, ou editando direto no Notion.
Parâmetros
| recarregar | query | 1 para reler o Notion na hora. | 1 |
Respostas
- 200Itens, formas de recebimento e pagamento, pendências e origem de cada valor.
- 401Sem sessão do painel e sem X-Api-Key válida.
Regras de negócio aplicadas
Exemplo de resposta
{
"fonte": "notion",
"itens": [
{
"chave": "OMIE_CATEG_RECEITA",
"valor": "1.01.02",
"origem": "notion",
"grupo": "Omie",
"tipo": "texto"
}
],
"formas": [
{
"codigo": 4,
"legenda": "CC",
"tipo": "Recebimento",
"prazo": 30
}
],
"pendencias": [
"MOBILITY_WEBHOOK_URL (base Configurações; sem ela, eventos só por polling)"
]
}/api/configuracoesSessão ou X-Api-KeyAlterar configuração
Altera um parâmetro ou o prazo de uma forma de recebimento/pagamento, gravando no Notion.
Corpo { chave, valor } para um parâmetro ou { forma: { tipo, codigo, prazo } } para um prazo.
Valida o tipo (número, booleano), grava na base do Notion, invalida o cache e registra a alteração no Log de integração com o e-mail de quem alterou.
Corpo
{ "chave": "OMIE_CATEG_RECEITA", "valor": "1.01.02" } ou { "forma": { "tipo": "Recebimento", "codigo": 4, "prazo": 30 } }
Respostas
- 200Configuração atualizada.
- 403Perfil diferente de Admin.
- 422Chave desconhecida ou valor inválido.
Regras de negócio aplicadas
Operação
/api/mobility/v1/healthPúblicaSaúde do orquestrador
Estado do serviço e configurações pendentes, sem expor segredos.
Rota pública. Mostra modo de persistência, contagem por status e a lista de variáveis de ambiente que ainda faltam.
Respostas
- 200Estado do serviço.
/api/internal/retryCronRodada de reprocessamento (cron)
Executada pela Vercel a cada 10 minutos. Pode ser disparada manualmente no painel.
Reprocessa até 5 reservas em RETRY e reenvia até 20 eventos pendentes para a Mobility.
Respostas
- 200Resumo do que foi reprocessado.
- 401CRON_SECRET inválido.
Regras de negócio aplicadas
Regras de negócio
Numeradas para referência cruzada com as rotas. Regras marcadas como provisórias aguardam validação da Mobility.
Entrada
Autenticação por chave
Toda rota da Mobility exige o header X-Api-Key.
- A chave é gerada pela IAXYS e fica na variável MOBILITY_API_KEY.
- Chave ausente ou diferente devolve 401. Servidor sem chave configurada devolve 503.
- A comparação é feita em tempo constante para não vazar informação por tempo de resposta.
Idempotência por reserva
Cada reserva é identificada por empresa, filial, File e CodigoWooMobil.
- Chave: {empresa}-{filial}-{file}-{CodigoWooMobil da reserva}. Exemplo: 29-26-00341130-341131.
- A Mobility envia um payload por reserva. Reservas diferentes do mesmo File são aceitas e ficam agrupadas.
- Reenviar a mesma reserva devolve 409 com o estado atual, a menos que ela esteja em ERRO. Nesse caso o novo payload substitui o anterior e o processamento recomeça.
- Na Omie, cada registro leva um código de integração único. Se a Omie responder que o registro já existe, o orquestrador consulta e reaproveita, sem duplicar.
Validação do contrato
O payload é validado campo a campo antes de ser aceito.
- Obrigatórios: file, empresa, filial, cliente, dataCriacao e ao menos uma reserva em movimentos.
- Cada reserva exige codigoWooMobil, localizadorFrontOffice, dataRetirada, dataEntrega e valores.tarifa.
- Cada recebimento exige codigoWooMobil, valor e formaRecebimento. Cada pagamento exige codigoWooMobil e valor.
- Números em texto são convertidos. Campos extras são aceitos e guardados para auditoria.
Proteção de dados (PCI e LGPD)
Número de cartão, validade e documentos nunca são gravados completos.
- Número do cartão vira **** **** **** 1234 antes de qualquer gravação. A validade é descartada.
- Documento do condutor é reduzido aos 3 últimos dígitos.
- Na Omie, os dados do cartão entram apenas na observação do título: bandeira, 4 últimos dígitos, NSU, autorização e operadora.
Omie
Cliente pagador
O cliente é localizado na Omie pelo código MOB-{id do cliente na Mobility}.
- O orquestrador consulta geral/clientes pelo codigo_cliente_integracao MOB-{cliente}.
- Se não existir e o payload trouxer clienteDados, o cliente é cadastrado com UpsertCliente.
- Se não existir e não houver clienteDados, a reserva vai para ERRO. A carga inicial de clientes resolve esse caso.
Ordem de Serviço (capa da venda)
Cada reserva gera uma OS na Omie com um item de serviço por locação.
- cCodIntOS = MOB-{chave da reserva}. Etapa inicial configurável (OMIE_ETAPA_OS, padrão 10).
- Item: serviço OMIE_COD_SERVICO_LOCACAO, quantidade 1, valor da tarifa, descrição com locadora, localizador, rota, classe e período.
- Os dados adicionais da nota levam o File, os localizadores e a reserva de origem, quando houver.
- Pode ser desligada com OMIE_CRIAR_OS=false. Nesse caso só os títulos financeiros são criados.
Contas a receber
Cada recebimento vira um título por parcela, com vencimento pela forma de recebimento.
- Código: MOB-{file}-CRE-{CodigoWooMobil}-R{nº do recebimento}-P{nº da parcela}. Dois recebimentos da mesma reserva geram títulos distintos.
- Parcelas: o valor é dividido igualmente e a diferença de centavos fica na última parcela.
- Vencimento: dataVencimento do payload, se vier. Senão, a data de confirmação somada ao prazo da forma de recebimento. Cada parcela seguinte soma 30 dias.
- Os prazos por forma ficam na base Formas de recebimento e pagamento do Notion. Valores iniciais: FATURADO e CC 30 dias, CARTAO_CORPORATIVO e FATURADO + CARTAO 30 dias, BOLETO 7 dias, demais formas no mesmo dia. O intervalo entre parcelas vem de INTERVALO_PARCELAS_DIAS.
- Categoria OMIE_CATEG_RECEITA e conta corrente OMIE_CONTA_CORRENTE. A observação traz forma de recebimento, localizadores, crédito de reemissão e reembolso.
Contas a pagar
Cada pagamento vira um título, classificado como comissão, reembolso ou despesa.
- Código: MOB-{file}-CPA-{CodigoWooMobil}-{nº do pagamento}.
- Favorecido: a pessoa do pagamento (MOB-{pessoa}). Se for o próprio cliente, ou não vier, usa o cliente da venda.
- Categoria: OMIE_CATEG_COMISSAO quando pagamentoDeComissao é verdadeiro, OMIE_CATEG_REEMBOLSO quando é reembolso (RN09) e OMIE_CATEG_DESPESA nos demais casos.
- Vencimento: dataVencimento do payload ou a data de confirmação somada ao prazo da forma de pagamento (base Formas de recebimento e pagamento, padrão PRAZO_PAGAMENTO_DIAS).
- Comissão repassada no pagamento e comissão da reserva são tratadas como informações independentes, como orientou a Mobility.
Reembolso ao cliente
Pagamento ao próprio cliente numa venda com ValorReembolso vira devolução.
- Um pagamento é reembolso quando não é comissão, o favorecido é o cliente e algum recebimento da reserva tem valorReembolso maior que zero.
- O título a pagar recebe a categoria de reembolso e a observação Reembolso ao cliente.
- Cancelamento continua fora do fluxo: a Mobility usa CancelarVenda e a regra (contas a pagar em categoria de abatimento) aguarda a especificação técnica.
Multi-reserva e vínculo entre reservas
Reservas com o mesmo File formam uma venda. A reserva vinculada aponta para a origem.
- Cada reserva gera sua própria OS e seus títulos. A consulta por File junta todas.
- O campo reservaVinculada guarda o localizador da reserva de origem e aparece na OS e nas consultas.
- O crédito de reemissão da reserva de origem é registrado na observação do título. O abatimento automático aguarda definição da Mobility.
Datas e valores
Datas vão para a Omie em dd/mm/aaaa e valores com duas casas.
- Datas ISO do payload são convertidas para dd/mm/aaaa, formato exigido pela Omie.
- A Omie trabalha só em reais. Reservas em moeda estrangeira já chegam com a tarifa convertida pela Mobility, e o câmbio aplicado fica registrado.
Consultas
Crédito e rentabilidade
Rentabilidade = total a receber menos total a pagar do File.
- Situação do item: Real quando o título está baixado na Omie (recebido, pago ou liquidado), Previsto nos demais casos.
- percentualRentabilidade = rentabilidade dividida pelo total a receber, vezes 100.
- Se a Omie falhar para algum título, o valor do orquestrador é usado e a falha aparece em avisos.
Câmbio PTAX
Cotação de venda do boletim de fechamento do Banco Central.
- Dias sem cotação (fins de semana e feriados) são pulados. A busca volta até 12 dias além do pedido.
- Cada cotação obtida fica gravada e é reaproveitada nas próximas consultas.
- O parâmetro tipo é mantido por compatibilidade com o WOOFFICE. A fonte é a mesma para todos os tipos.
Resiliência
Limite de uso da Omie e novas tentativas
Bloqueio por consumo da Omie coloca a reserva em RETRY, reprocessada a cada 10 minutos.
- Mensagens como MISUSE_API_PROCESS e falhas de rede são tratadas como temporárias.
- Cada chamada tenta uma segunda vez após 2,5 segundos. Persistindo, a reserva vai para RETRY com nova tentativa em 10 minutos.
- A espera (RETRY_MINUTOS) e o limite de tentativas (MAX_TENTATIVAS, padrão 12) ficam na base Configurações. Esgotado o limite, a reserva vai para ERRO e precisa de reprocessamento manual.
- Erros de dados (cadastro ausente, categoria inválida) vão direto para ERRO.
Ciclo de status
RECEBIDO → ENVIANDO → INTEGRADO, RETRY ou ERRO.
- RECEBIDO: payload aceito e gravado.
- ENVIANDO: chamadas à Omie em andamento.
- INTEGRADO: cliente, OS e todos os títulos criados.
- RETRY: bloqueio temporário da Omie, nova tentativa agendada.
- ERRO: problema de dados ou tentativas esgotadas. O campo erros explica cada etapa.
Webhooks
Recepção de eventos da Omie
Eventos são validados, gravados e ligados ao File da Mobility.
- A Omie não oferece token no webhook. A URL é cadastrada sem parâmetros e a autenticidade vem do appKey enviado no corpo de cada evento.
- appKey igual ao OMIE_APP_KEY: evento aceito. appKey diferente: 403. Sem appKey (notificação de teste): 200 e ignorado.
- O appKey não é gravado no histórico do evento.
- A resposta sai antes de 7 segundos, limite da Omie. O repasse para a Mobility acontece em segundo plano.
- O File é descoberto pelos códigos de integração MOB- presentes no evento.
Entrega para a Mobility
Callback assinado com HMAC-SHA256, com nova tentativa a cada 10 minutos.
- Tipos: venda.status (fim do processamento de uma reserva) e omie.evento (evento repassado da Omie).
- Headers: X-Iaxys-Event, X-Iaxys-Delivery e X-Iaxys-Signature com o HMAC-SHA256 do corpo usando MOBILITY_WEBHOOK_SECRET.
- Respostas fora de 2xx são reenviadas pelo cron, até 30 tentativas.
- A URL de destino fica na base Configurações do Notion (MOBILITY_WEBHOOK_URL). Sem ela, os eventos ficam disponíveis na rota de polling. O segredo do HMAC fica no .env.
Configuração
Parâmetros de negócio no Notion
Categorias, conta corrente, serviço, prazos e URL de callback ficam na base Configurações.
- Prioridade de cada chave: linha ativa com valor na base Configurações do Notion, depois a variável de ambiente de mesmo nome, depois o padrão do código.
- O .env guarda só segredos e infraestrutura: OMIE_APP_KEY, OMIE_APP_SECRET, MOBILITY_API_KEY, MOBILITY_WEBHOOK_SECRET, CRON_SECRET, NOTION_TOKEN, SESSION_SECRET e, se usado, DATABASE_URL.
- O orquestrador relê o Notion a cada 60 segundos. Alterações feitas pelo painel valem na hora.
- Se o Notion ficar indisponível, o último valor lido continua valendo.
Persistência nas bases do Notion
Vendas, eventos, log e cotações são gravados em bases da página Mobility.
- Bases: Vendas recebidas, Eventos Omie, Log de integração, Cotações, Configurações, Formas de recebimento e pagamento e Usuários.
- Payload e resultado de cada reserva ficam em JSON na própria linha, para auditoria e reprocessamento.
- A API do Notion aceita cerca de 3 requisições por segundo. Para volume de produção alto, basta configurar DATABASE_URL e PERSISTENCIA=postgres, sem mudar o contrato.
Códigos de integração
Todo registro criado na Omie leva um código de integração previsível. É ele que garante a idempotência e liga os eventos da Omie ao File.
| Registro | Campo Omie | Formato | Exemplo |
|---|---|---|---|
| Cliente | codigo_cliente_integracao | MOB-{cliente} | MOB-1518 |
| Ordem de Serviço | cCodIntOS | MOB-{empresa}-{filial}-{file}-{CodigoWooMobil} | MOB-29-26-00341130-341130 |
| Conta a receber | codigo_lancamento_integracao | MOB-{file}-CRE-{CodigoWooMobil}-R{n}-P{parcela} | MOB-00341183-CRE-341183-R1-P2 |
| Conta a pagar | codigo_lancamento_integracao | MOB-{file}-CPA-{CodigoWooMobil}-{n} | MOB-00341185-CPA-341186-1 |
Domínios e prazos
Legendas das tabelas turFormaRecebimento e turFormaPagamento do WOOFFICE. Os prazos vêm da base Formas de recebimento e pagamento do Notion e definem o vencimento dos títulos.
| FormaRecebimento | Legenda | Prazo |
|---|---|---|
| 1 | INV | 0 dias |
| 2 | CASH | 0 dias |
| 3 | FATURADO | 30 dias |
| 4 | CC | 30 dias |
| 5 | GR | 0 dias |
| 6 | TKT | 0 dias |
| 7 | MTP | 0 dias |
| 8 | CARTAO_CORPORATIVO | 30 dias |
| 9 | CONTRA_APRESENTACAO | 0 dias |
| 10 | CHEQUE | 0 dias |
| 11 | CARTAODEBITO | 0 dias |
| 12 | MCO | 0 dias |
| 13 | VENDAFINANCIADA | 0 dias |
| 14 | SEMCOBRANCA | 0 dias |
| 15 | DESPESAINTERNA | 0 dias |
| 16 | CARTAO_PROPRIO | 0 dias |
| 17 | BOLETO | 7 dias |
| 18 | LOCAL | 0 dias |
| 19 | DEPOSITO | 0 dias |
| 20 | Poupanca_Programada | 0 dias |
| 21 | MoedaConversao | 0 dias |
| 22 | CartaDeCredito | 0 dias |
| 23 | NOTA DE CREDITO | 0 dias |
| 24 | FATURADO + CARTAO | 30 dias |
| 25 | PIX | 0 dias |
| 27 | PIX RECEBIDO | 0 dias |
| 29 | Link de Pagamento | 0 dias |
| FormaPagamento | Legenda | Prazo |
|---|---|---|
| 1 | INV | 30 dias |
| 2 | CASH | 30 dias |
| 3 | FATURADO | 30 dias |
| 4 | CC | 30 dias |
| 5 | GR | 30 dias |
| 6 | TKT | 30 dias |
| 7 | MTP | 30 dias |
| 8 | CARTAO_CORPORATIVO | 30 dias |
| 9 | CONTRA_APRESENTACAO | 30 dias |
| 10 | CHEQUE | 30 dias |
| 11 | CARTAODEBITO | 30 dias |
| 12 | MCO | 30 dias |
| 13 | VENDAFINANCIADA | 30 dias |
| 14 | SEMCOBRANCA | 30 dias |
Webhooks
Dois sentidos: a Omie avisa o orquestrador, e o orquestrador avisa a Mobility.
Cadastro na Omie
- Acesse developer.omie.com.br com um usuário administrador da conta da Mobility.
- Abra Aplicativos, escolha o app da integração e clique em Adicionar novo webhook.
- Informe a URL
https://mobility.iaxys.com.br/api/omie/webhook, sem parâmetros. A autenticidade é conferida pelo appKey que a Omie envia em cada evento. - Marque os tópicos abaixo e salve. A Omie envia uma notificação de teste.
Os nomes de Ordem de Serviço e Cliente/Fornecedor devem ser conferidos na lista do painel da Omie ao cadastrar.
Entrega para a Mobility
POST na URL informada pela Mobility, com os headers X-Iaxys-Event, X-Iaxys-Delivery e X-Iaxys-Signature. Responda 2xx para confirmar.
{
"id": "omie-9a1f…",
"tipo": "omie.evento",
"emitidoEm": "2026-09-11T14:00:00Z",
"origem": "iaxys-orquestrador",
"dados": {
"idEvento": "omie-9a1f…",
"topico": "Financas.ContaReceber.BaixaRealizada",
"file": "00341130",
"evento": {
"codigo_lancamento_integracao": "MOB-00341130-CRE-341130-R1-P1",
"valor_documento": 117.39
}
}
}Validação da assinatura
// Node.js — validar o callback da IAXYS
import { createHmac, timingSafeEqual } from 'node:crypto'
function assinaturaValida(corpoBruto, assinatura, segredo) {
const esperado = createHmac('sha256', segredo).update(corpoBruto).digest('hex')
return assinatura?.length === esperado.length &&
timingSafeEqual(Buffer.from(assinatura), Buffer.from(esperado))
}
// header: X-Iaxys-SignatureBases e configurações no Notion
A página Mobility do Notion é a base de dados do orquestrador. Parâmetros de negócio são editados lá (ou pela aba Configurações do painel), sem novo deploy.
- ConfiguraçõesParâmetros de negócio: categorias, conta corrente, serviço, prazos, tentativas e URL de callback.
- Formas de recebimento e pagamentoLegenda e prazo de vencimento de cada código do WOOFFICE.
- Vendas recebidasUma linha por reserva, com status, payload e resultado na Omie.
- Eventos OmieEventos recebidos pelo webhook e o estado da entrega para a Mobility.
- Log de integraçãoTrilha de auditoria de cada etapa e de cada alteração de configuração.
- CotaçõesCache das cotações PTAX consultadas.
- UsuáriosQuem acessa o painel de testes e com qual perfil.
| Chave (base Configurações) | Grupo | Uso |
|---|---|---|
| OMIE_COD_SERVICO_LOCACAO * | Omie | nCodServ do serviço de locação usado nos itens da OS. |
| OMIE_CATEG_RECEITA * | Omie | Categoria dos títulos a receber e da OS. |
| OMIE_CATEG_COMISSAO | Omie | Categoria da comissão repassada. |
| OMIE_CATEG_REEMBOLSO | Omie | Categoria do reembolso ao cliente. |
| OMIE_CATEG_DESPESA | Omie | Categoria dos demais pagamentos. |
| OMIE_CONTA_CORRENTE * | Omie | nCodCC da conta corrente padrão. |
| OMIE_CRIAR_OS | Omie | Cria uma OS por reserva. |
| OMIE_ETAPA_OS | Omie | Etapa inicial da OS. |
| PRAZO_PAGAMENTO_DIAS | Prazos | Vencimento padrão de títulos a pagar. |
| INTERVALO_PARCELAS_DIAS | Prazos | Dias entre parcelas. |
| RETRY_MINUTOS | Integração | Espera antes de reprocessar. |
| MAX_TENTATIVAS | Integração | Tentativas antes de ERRO. |
| MOBILITY_WEBHOOK_URL | Callback | URL de callback da Mobility. |
Segredos (.env)
Só segredos e infraestrutura ficam nas variáveis de ambiente da Vercel. Nenhum valor é exibido em páginas ou respostas.
| OMIE_APP_KEY / OMIE_APP_SECRET | Credenciais do aplicativo Omie da Mobility. O appKey também autentica os webhooks. |
| MOBILITY_API_KEY | Chave que a Mobility envia em X-Api-Key. |
| MOBILITY_WEBHOOK_SECRET | Segredo do HMAC dos callbacks para a Mobility. |
| NOTION_TOKEN | Integração do Notion com acesso à página Mobility (bases, configurações e login). |
| SESSION_SECRET | Assinatura do cookie de sessão do painel. |
| CRON_SECRET | Protege a rota de reprocessamento. |
| DATABASE_URL / PERSISTENCIA | Opcional. PostgreSQL para alto volume; PERSISTENCIA força notion, postgres ou memoria. |
Pendências de definição
Pontos que dependem da Mobility. As regras correspondentes estão implementadas com um padrão provisório.
- Prazos de vencimento por forma de recebimento e pagamentoDaniel (financeiro Mobility)
- Categorias Omie definitivas a partir do de-para do plano de contasRicardo (contábil)
- Tratamento de cancelamento e abatimento de receitaAlexandre (spec técnica)
- Uso do crédito de reemissão no valor a receber da reserva vinculadaMobility
- Endpoint de callback da Mobility, ou uso de pollingAlexandre / Hugo
- Carga inicial de clientes e fornecedores com código MOB-{id}IAXYS + Mobility