A API num relance
Escolha a operação, consulte o resultado e abra o exemplo. O guia completo continua abaixo.
https://restapi.imaginaits.com/x-auth-token: YOUR_TOKEN| Método | Endpoint e exemplo | Finalidade | O que verificar |
|---|---|---|---|
| POST | /puttransaction.phpVer exemplo cURL | Criar um pagamento ou reembolsoVer detalhes → | status=ok regista a transação; consulte depois o estado. |
| GET | /statustransaction.phpVer exemplo cURL | Consultar uma transaçãoVer detalhes → | PENDING, PAID, CANCELLED ou ERROR no Cloud. |
| GET | /listtransactions.phpVer exemplo cURL | Listar transaçõesVer detalhes → | Filtre por estado e continue com o cursor devolvido. |
| GET | /transactioncashflow.phpVer exemplo cURL | Consultar entradas, saídas e discriminaçãoVer detalhes → | Montantes e denominações comunicados para a transação. |
| GET | /inventory.phpVer exemplo cURL | Consultar o inventário recebidoVer detalhes → | currency, recyclable, stacker e updated_at, quando disponíveis. |
| POST | /canceltransaction.phpVer exemplo cURL | Cancelamento anterior compatívelVer detalhes → | ok ou CANCELLED não confirma, por si só, o cancelamento na máquina. |
| POST | /canceltransactionv2.phpVer exemplo cURL | CancelTransactionV2: pedir cancelamento com acompanhamentoVer detalhes → | Guarde operation_id e Idempotency-Key. 202 significa pendente. |
| GET | /v2.php?action=capabilitiesVer exemplo cURL | Consultar as funções disponíveisVer detalhes → | cancellation_tracking indica se o acompanhamento está ativo. |
| GET | /v2.php?action=transactionVer exemplo cURL | Consultar transação e acompanhamentoVer detalhes → | Separa cloud_status de execution_confirmation. |
| GET | /v2.php?action=operationVer exemplo cURL | Consultar o pedido de cancelamentoVer detalhes → | confirmed, execution_state, cash_flow e requires_review. |
Fluxo básico
- Criar o pagamentoamount: 2100 = 21,00 EUR. Guarde transaction_id.
- Consultar o resultadoConsulte a mesma referência; HTTP 200 não basta.
- Cancelar se ainda estiver pendenteCancelTransactionV2 devolve operation_id; consulte até confirmed=true.
202 = pedido registado. CANCELLED em V1 = estado Cloud. confirmed=true com CONFIRMED_BY_IMACASH = relatório final completo do ImaCash.
Compatibilidade
POST /v2.php?action=cancel continua disponível com o mesmo contrato. Nas novas integrações utilize CancelTransactionV2: /canceltransactionv2.php. As integrações anteriores mantêm a compatibilidade.
Antes de começar
Selecione REST API Imagina em Configuração > Integração do ImaCash. Cloud tem de autorizar a licença para REST e aceitar a manutenção ou o período de teste. Copie o token dessa licença, nunca a palavra-passe do administrador nem o segredo interno do conector. Se não aparecer, anote a versão e a referência numérica da licença e contacte o suporte; não crie outra venda ou demo para diagnosticar.
Ligação, token e âmbito
A URL base é https://restapi.imaginaits.com/. Envie x-auth-token em cada pedido HTTPS. Cada token limita as operações à sua licença. Não o inclua em URLs, capturas, registos, repositórios ou correio. Os exemplos usam YOUR_TOKEN e referências fictícias. A documentação não executa operações.
Referências e valores
transaction_id identifica de forma estável uma operação do seu programa e licença: reutilize exatamente o mesmo valor após um timeout. user e terminal são referências comerciais do operador e posto, não credenciais nem permissões ImaCash. amount usa unidades menores: 2100 representa 21,00 EUR e -2100 uma devolução de 21,00 EUR. method=1 significa numerário e method=0 cartão; registar cartão não confirma pagamento bancário.
Criar e consultar uma cobrança
Envie JSON com transaction_id, amount, user, terminal e method. status=ok confirma o registo em Cloud, não a cobrança concluída. Consulte a mesma referência e verifique HTTP e JSON. Um 409 ao criar pode indicar referência existente: consulte-a e compare os dados, sem enviar outro ID.
Exemplo · POST /puttransaction.php
curl --request POST 'https://restapi.imaginaits.com/puttransaction.php' \
--header 'x-auth-token: YOUR_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"transaction_id":"TX-DEMO-20261029-001","amount":2100,"user":"OPERATOR-01","terminal":"DESK-01","method":1}'Exemplo · GET /statustransaction.php
curl 'https://restapi.imaginaits.com/statustransaction.php?transaction_id=TX-DEMO-20261029-001' --header 'x-auth-token: YOUR_TOKEN'Exemplo · GET /transactioncashflow.php
curl 'https://restapi.imaginaits.com/transactioncashflow.php?transaction_id=TX-DEMO-20261029-001' --header 'x-auth-token: YOUR_TOKEN'Cancelamento compatível V1
V1 conserva POST /canceltransaction.php com transaction_id na query ou formulário, não em JSON. A resposta ok e o estado CANCELLED descrevem Cloud, sem confirmar a máquina. Algumas rejeições devolvem HTTP 200 com status=error. Consultar statustransaction ou transactioncashflow não transforma essa marca em prova física. Se já entrou dinheiro, ImaCash pode adiar o cancelamento e exigir a autorização local configurada.
Exemplo · POST /canceltransaction.php
curl --request POST 'https://restapi.imaginaits.com/canceltransaction.php?transaction_id=TX-DEMO-20261029-001' --header 'x-auth-token: YOUR_TOKEN'Acompanhamento V2
Verifique cancellation_tracking nas capacidades. Envie JSON com Idempotency-Key, guarde operation_id e consulte a cada dois segundos, respeitando Retry-After. HTTP 202 e REQUESTED apenas confirmam o registo. Só confirmed=true com CONFIRMED_BY_IMACASH indica um relatório final autenticado de ImaCash com conclusão, moeda e entradas/saídas completas e iguais. Não é certificação independente do equipamento. Um token de integrador, progresso ou estado Cloud não bastam.
| execution_state | Significado e ação |
|---|---|
REQUESTED | Pedido registado em Cloud; falta relatório ImaCash. |
CONFIRMED_BY_IMACASH | ImaCash comunica cancelamento com conclusão e fluxos completos coerentes. |
REJECTED_ALREADY_PAID | ImaCash comunica venda paga; cancelamento não confirmado. |
REPORTED_UNVERIFIED | Relatório incompleto; não considerar confirmado. |
REVIEW_REQUIRED | Resultado contraditório ou erro; requer revisão local e suporte. |
Exemplo · GET /v2.php?action=capabilities
curl 'https://restapi.imaginaits.com/v2.php?action=capabilities' --header 'x-auth-token: YOUR_TOKEN'Exemplo · POST /canceltransactionv2.php
curl --request POST 'https://restapi.imaginaits.com/canceltransactionv2.php' \
--header 'x-auth-token: YOUR_TOKEN' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: cancel-DEMO-20261029-001' \
--header 'X-Request-ID: request-DEMO-001' \
--data '{"transaction_id":"TX-DEMO-20261029-001"}'Exemplo · HTTP 202
{
"status": "ok",
"api_version": "2.0",
"request_id": "request-DEMO-001",
"data": {
"operation_id": "0123456789abcdef0123456789abcdef",
"transaction_id": "TX-DEMO-20261029-001",
"execution_state": "REQUESTED",
"confirmed": false,
"confirmation_source": null,
"reported_state": null,
"requested_at_utc": "2026-10-29 09:00:00.000000",
"reported_at_utc": null,
"cash_flow": {
"received_minor": null,
"returned_minor": null,
"currency": null
},
"requires_review": false
}
}Exemplo · GET /v2.php?action=operation
curl 'https://restapi.imaginaits.com/v2.php?action=operation&operation_id=OPERATION_ID_FROM_RESPONSE' --header 'x-auth-token: YOUR_TOKEN'Exemplo · HTTP 200
{
"status": "ok",
"api_version": "2.0",
"request_id": "request-DEMO-002",
"data": {
"operation_id": "0123456789abcdef0123456789abcdef",
"transaction_id": "TX-DEMO-20261029-001",
"execution_state": "CONFIRMED_BY_IMACASH",
"confirmed": true,
"confirmation_source": "imacash_report",
"reported_state": "CANCELLED",
"requested_at_utc": "2026-10-29 09:00:00.000000",
"reported_at_utc": "2026-10-29 09:00:02.000000",
"cash_flow": {
"received_minor": 100,
"returned_minor": 100,
"currency": "EUR"
},
"requires_review": false
}
}Exemplo · GET /v2.php?action=transaction
curl 'https://restapi.imaginaits.com/v2.php?action=transaction&transaction_id=TX-DEMO-20261029-001' --header 'x-auth-token: YOUR_TOKEN'Reenvios, falhas de ligação e autorizações
Mantenha a mesma chave e referência ao reenviar V2 para recuperar o acompanhamento. A mesma chave para outra referência é rejeitada. Outra chave para uma venda com pedido existente também é rejeitada; consulte a venda para recuperar operation_id. Se ImaCash estiver fechado, não enviar relatório ou faltarem detalhes, fica sem confirmação. Após uma espera razoável, mostre revisão pendente e conserve a referência; não repita cobranças, devoluções ou reinícios. V2 conserva palavras-passe, permissões e proteções locais.
Devolver uma venda paga
Uma venda PAID não pode ser cancelada por este circuito. Crie uma devolução com referência própria e valor negativo, conservando a relação com a venda original no seu programa. O registo não confirma dinheiro entregue: aguarde ImaCash e verifique os valores. Não reutilize o ID da venda.
Exemplo · POST /puttransaction.php
curl --request POST 'https://restapi.imaginaits.com/puttransaction.php' \
--header 'x-auth-token: YOUR_TOKEN' --header 'Content-Type: application/json' \
--data '{"transaction_id":"REFUND-DEMO-20261029-001","amount":-2100,"user":"OPERATOR-01","terminal":"DESK-01","method":1}'Erros e suporte
401: falta token. 403: token ou licença não autorizados, possivelmente REST ou manutenção. 404 V2: recurso ausente ou fora do âmbito. 409: conflito de chave, referência ou estado; leia error.code. 400: parâmetros ou JSON inválidos. 405: método incorreto. 413: corpo excessivo. 503: serviço ou acompanhamento indisponíveis, sem provar avaria da máquina. Timeout ou 5xx não provam que o pedido não chegou. Envie ao suporte request_id, operation_id, referência, hora e HTTP, sem credenciais.
Compatibilidade e limites publicados
Rotas, autenticação, campos e estados V1 mantêm-se. V2 adiciona uma rota sem migração obrigatória ou novos estados em transaction_status V1. *_at_utc usa UTC; created_at conserva o formato anterior. device_state=not_observed não significa máquina desligada. Não há comandos diretos ao dispositivo nem webhooks genéricos de saída: consulte capacidades. Valores ausentes são null, não zeros confirmados. Alguns clientes anteriores omitem valores zero no relatório: mesmo após a conclusão local, V2 mantém REPORTED_UNVERIFIED se faltar esse valor explícito.
Testar antes de produção
Num ambiente autorizado, teste criação, consulta, referência repetida, cancelamento antes/depois de inserir dinheiro, autorização local recusada, ImaCash sem ligação e perda de resposta. Não conclua cancelamento apenas por 200/202. Valide cada modelo e versão com o fornecedor; um exemplo HTTP não substitui o ensaio físico.