Pular para o conteúdo principal

Architecture

A sequência completa

Alice/BobMercatto (SDK)Ishtaran APISandbox1. auth.signUp()OrganizationTenancy — org+app+env+key, uma chamada só2. accounts.createAccountHolderInvitation() ×23. accountHolders.signUpAndClaimInvitation()Accounts — cada um reivindica sua própria sessão4. accounts.authorizeApplication() ×3Requer sessão de Member — GAPS.md §F.95. workflows.create/createVersion/createRule/publishVersionWorkflowRules — AguardandoEntrega → Entregue6. transactions.create(alice, bob 90%, mercatto 10%)Transactions — BR-SPL-004 exige esse split explícito7. deposits.createPaymentIntent()Deposits — retorna um endereço de depósito real8. sandbox.simulateDeposit() + simulateConfirmation()Transaction se reserva sozinha — sem chamar reserve()9. events.ingest("ProdutoEntregue")WorkflowRules — trilha de auditoria, NÃO um portão do Settlement10. settlements.executeSettlement()SigningRequest montado — assina, confirma, só então o Ledger é gravado (DEC-037)11. ledger.getBalance(bob)Ledger — a Mercatto lê em nome de Bob (GAPS.md §F.10)12. withdrawals.createDestination() + request()422 WITHDRAWAL_DESTINATION_NOT_USABLE — cooldown real de 24h, não contornadoSetas cheias = requisições · tracejadas = respostas/eventos · código-fonte completo no link de cada passo
Todos os 12 passos rodaram de verdade contra uma instância ao vivo durante a validação deste Business Case — veja Run it yourself para reproduzi-los.

Mapa de métodos

Toda chamada real que este Business Case usa, e qual módulo da Ishtaran é dono dela:

PassoChamada de SDKMóduloCapítulo
Cadastroauth.signUp(...)OrganizationTenancySetup
Convite + resgateaccounts.createAccountHolderInvitation, accountHolders.signUpAndClaimInvitationAccountsSeller onboarding
Autorizaçãoaccounts.authorizeApplicationAccountsSeller onboarding
Workflowworkflows.create/createVersion/createRule/publishVersion, eventTypes.createWorkflowRulesCreating an order
Pedidotransactions.createTransactionsCreating an order
Pagamentodeposits.createPaymentIntent/getPaymentIntentDepositsAccepting payment
Funding simuladosandbox.simulateDeposit/simulateConfirmationSandboxHolding funds
Evento de entregaevents.ingestWorkflowRulesConfirming delivery
Settlementsettlements.executeSettlement, signingRequests.get/submitSignedTransaction, sandbox.simulateBroadcastConfirmationSettlement → ExecutionCustody → LedgerSettlement and Split
Saldoledger.getBalanceLedgerSeller balance
Saquewithdrawals.createDestination/quote/requestWithdrawalsWithdrawal

Duas regras reais de autorização que vale conhecer desde já

  • Algumas chamadas precisam da sessão de Member da Mercatto, não da sua API Key. accounts.authorizeApplication, toda mutação de workflows.*, e events.ingest rejeitam uma Application API Key hoje (confirmado ao vivo). Os exemplos da Mercatto mantêm dois clients por isso mesmo — owner (Member) e mercatto (API Key). Veja Known Limitations §F.9.
  • Os próprios logins de Bob e Alice são só para identidade. Depois de resgatar o convite, a sessão deles não pode chamar Ledger, Settlement, ou Withdrawals — tudo isso exige as próprias credenciais da Mercatto. A Mercatto lê o saldo de Bob e pede o saque dele em seu nome. Veja Known Limitations §F.10.