{"openapi":"3.0.0","paths":{"/api/v1/admin/fees/rules":{"get":{"operationId":"AdminFeesController_listRules","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}},{"name":"merchantId","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Fee rules fetched successfully."}},"security":[{"adminToken":[]}],"tags":["Admin Fees"]},"post":{"operationId":"AdminFeesController_createRule","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFeeRuleDto"}}}},"responses":{"201":{"description":"Fee rule created successfully."}},"security":[{"adminToken":[]}],"tags":["Admin Fees"]}},"/api/v1/admin/fees/quote":{"post":{"operationId":"AdminFeesController_quote","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeeQuoteDto"}}}},"responses":{"200":{"description":"Fee quote calculated successfully."}},"security":[{"adminToken":[]}],"tags":["Admin Fees"]}},"/api/v1/merchants":{"post":{"operationId":"MerchantsController_createMerchant","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMerchantDto"}}}},"responses":{"201":{"description":"Merchant created successfully."}},"security":[{"adminToken":[]}],"tags":["Merchants"]}},"/api/v1/merchants/{merchantId}/api-keys":{"post":{"operationId":"MerchantsController_createApiKey","parameters":[{"name":"merchantId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateApiKeyDto"}}}},"responses":{"201":{"description":"Merchant API key created successfully."}},"security":[{"adminToken":[]}],"tags":["Merchants"]}},"/api/v1/merchants/{merchantId}/api-keys/rotate":{"post":{"operationId":"MerchantsController_rotateApiKey","parameters":[{"name":"merchantId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateApiKeyDto"}}}},"responses":{"201":{"description":"Merchant API key rotated successfully."}},"security":[{"adminToken":[]}],"tags":["Merchants"]}},"/api/v1/merchants/api-keys/{apiKeyId}/revoke":{"post":{"operationId":"MerchantsController_revokeApiKey","parameters":[{"name":"apiKeyId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevokeMerchantApiKeyDto"}}}},"responses":{"201":{"description":"Merchant API key revoked successfully."}},"security":[{"adminToken":[]}],"tags":["Merchants"]}},"/api/v1/payments/methods":{"get":{"operationId":"PaymentsController_listMethods","parameters":[],"responses":{"200":{"description":"Enabled payment methods listed successfully."}},"security":[{"merchantApiKey":[]}],"tags":["Payments"]}},"/api/v1/payments":{"get":{"operationId":"PaymentsController_listPayments","parameters":[{"name":"invoiceId","required":false,"in":"query","schema":{"example":"invoice-public-id","type":"string"}},{"name":"status","required":false,"in":"query","schema":{"$ref":"#/components/schemas/PaymentStatus"}},{"name":"methodType","required":false,"in":"query","schema":{"$ref":"#/components/schemas/PaymentMethodType"}},{"name":"assetCode","required":false,"in":"query","schema":{"example":"USDT","type":"string"}},{"name":"networkCode","required":false,"in":"query","schema":{"example":"TRC20","type":"string"}},{"name":"providerCode","required":false,"in":"query","schema":{"example":"native_tron","type":"string"}},{"name":"createdFrom","required":false,"in":"query","schema":{"example":"2026-05-01T00:00:00.000Z","type":"string"}},{"name":"createdTo","required":false,"in":"query","schema":{"example":"2026-05-06T23:59:59.999Z","type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"example":50,"type":"number"}}],"responses":{"200":{"description":"Merchant payment history fetched successfully."}},"security":[{"merchantApiKey":[]}],"tags":["Payments"]},"post":{"operationId":"PaymentsController_registerPayment","parameters":[{"name":"idempotency-key","required":true,"in":"header","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterPaymentDto"}}}},"responses":{"201":{"description":"Payment registered successfully."}},"security":[{"merchantApiKey":[]}],"tags":["Payments"]}},"/api/v1/payments/{id}":{"get":{"operationId":"PaymentsController_getPayment","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Merchant payment fetched successfully."}},"security":[{"merchantApiKey":[]}],"tags":["Payments"]}},"/api/v1/payments/{id}/status":{"post":{"operationId":"PaymentsAdminController_transitionStatus","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransitionPaymentStatusDto"}}}},"responses":{"200":{"description":"Payment status updated successfully."}},"security":[{"adminToken":[]}],"tags":["Payments Admin"]}},"/api/v1/ledger/entries":{"get":{"operationId":"LedgerController_listEntries","parameters":[{"name":"merchantId","required":false,"in":"query","schema":{"example":"merchant-public-id","type":"string"}},{"name":"direction","required":false,"in":"query","schema":{"$ref":"#/components/schemas/LedgerEntryDirection"}},{"name":"type","required":false,"in":"query","schema":{"$ref":"#/components/schemas/LedgerEntryType"}},{"name":"status","required":false,"in":"query","schema":{"$ref":"#/components/schemas/LedgerEntryStatus"}},{"name":"currency","required":false,"in":"query","schema":{"example":"USDT","type":"string"}},{"name":"assetCode","required":false,"in":"query","schema":{"example":"USDT","type":"string"}},{"name":"networkCode","required":false,"in":"query","schema":{"example":"TRC20","type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":200,"example":50,"type":"number"}}],"responses":{"200":{"description":"Merchant ledger entries listed successfully."}},"security":[{"merchantApiKey":[]}],"tags":["Ledger"]}},"/api/v1/ledger/balances":{"get":{"operationId":"LedgerController_getBalances","parameters":[{"name":"merchantId","required":false,"in":"query","schema":{"example":"merchant-public-id","type":"string"}},{"name":"currency","required":false,"in":"query","schema":{"example":"USDT","type":"string"}},{"name":"assetCode","required":false,"in":"query","schema":{"example":"USDT","type":"string"}},{"name":"networkCode","required":false,"in":"query","schema":{"example":"TRC20","type":"string"}}],"responses":{"200":{"description":"Merchant ledger balances fetched successfully."}},"security":[{"merchantApiKey":[]}],"tags":["Ledger"]}},"/api/v1/admin/ledger/entries":{"get":{"operationId":"LedgerAdminController_listEntries","parameters":[{"name":"merchantId","required":false,"in":"query","schema":{"example":"merchant-public-id","type":"string"}},{"name":"direction","required":false,"in":"query","schema":{"$ref":"#/components/schemas/LedgerEntryDirection"}},{"name":"type","required":false,"in":"query","schema":{"$ref":"#/components/schemas/LedgerEntryType"}},{"name":"status","required":false,"in":"query","schema":{"$ref":"#/components/schemas/LedgerEntryStatus"}},{"name":"currency","required":false,"in":"query","schema":{"example":"USDT","type":"string"}},{"name":"assetCode","required":false,"in":"query","schema":{"example":"USDT","type":"string"}},{"name":"networkCode","required":false,"in":"query","schema":{"example":"TRC20","type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":200,"example":50,"type":"number"}}],"responses":{"200":{"description":"Ledger entries listed successfully."}},"security":[{"adminToken":[]}],"tags":["Ledger Admin"]}},"/api/v1/admin/ledger/balances":{"get":{"operationId":"LedgerAdminController_getBalances","parameters":[{"name":"merchantId","required":false,"in":"query","schema":{"example":"merchant-public-id","type":"string"}},{"name":"currency","required":false,"in":"query","schema":{"example":"USDT","type":"string"}},{"name":"assetCode","required":false,"in":"query","schema":{"example":"USDT","type":"string"}},{"name":"networkCode","required":false,"in":"query","schema":{"example":"TRC20","type":"string"}}],"responses":{"200":{"description":"Ledger balances fetched successfully."}},"security":[{"adminToken":[]}],"tags":["Ledger Admin"]}},"/api/v1/admin/ledger/reconciliation":{"get":{"operationId":"LedgerAdminController_reconcileLedger","parameters":[{"name":"merchantId","required":false,"in":"query","schema":{"example":"merchant-public-id","type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":2000,"example":500,"type":"number"}}],"responses":{"200":{"description":"Ledger reconciliation report fetched."}},"security":[{"adminToken":[]}],"tags":["Ledger Admin"]}},"/api/v1/admin/ledger/backfill":{"post":{"operationId":"LedgerAdminController_backfillLedger","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BackfillLedgerDto"}}}},"responses":{"201":{"description":"Ledger backfill scan executed."}},"security":[{"adminToken":[]}],"tags":["Ledger Admin"]}},"/api/v1/wallets/balances":{"get":{"operationId":"BusinessWalletController_getBalances","parameters":[{"name":"merchantId","required":false,"in":"query","schema":{"example":"merchant-public-id","type":"string"}},{"name":"currency","required":false,"in":"query","schema":{"example":"USDT","type":"string"}},{"name":"assetCode","required":false,"in":"query","schema":{"example":"USDT","type":"string"}},{"name":"networkCode","required":false,"in":"query","schema":{"example":"TRC20","type":"string"}}],"responses":{"200":{"description":"Business wallet balances fetched successfully."}},"security":[{"merchantApiKey":[]}],"summary":"Return merchant business wallet balances backed by posted ledger entries","tags":["Business Wallet"]}},"/api/v1/admin/webhooks/merchants/{merchantId}/endpoint":{"post":{"operationId":"WebhooksController_configureWebhookEndpoint","parameters":[{"name":"merchantId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigureWebhookEndpointDto"}}}},"responses":{"201":{"description":"Webhook endpoint configured."}},"security":[{"adminToken":[]}],"tags":["Webhooks"]}},"/api/v1/admin/webhooks/endpoints":{"get":{"operationId":"WebhooksController_listEndpoints","parameters":[{"name":"merchantId","required":false,"in":"query","schema":{"example":"merchant-public-id","type":"string"}},{"name":"isActive","required":false,"in":"query","schema":{"example":true,"type":"boolean"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"example":20,"type":"number"}}],"responses":{"200":{"description":"Webhook endpoints fetched successfully."}},"security":[{"adminToken":[]}],"tags":["Webhooks"]}},"/api/v1/admin/webhooks/event-types":{"get":{"operationId":"WebhooksController_listEventTypes","parameters":[],"responses":{"200":{"description":"Supported merchant webhook event types."}},"security":[{"adminToken":[]}],"tags":["Webhooks"]}},"/api/v1/admin/webhooks/endpoints/{id}/status":{"post":{"operationId":"WebhooksController_updateEndpointStatus","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWebhookEndpointStatusDto"}}}},"responses":{"200":{"description":"Webhook endpoint status updated."}},"security":[{"adminToken":[]}],"tags":["Webhooks"]}},"/api/v1/admin/webhooks/endpoints/{id}/rotate-secret":{"post":{"operationId":"WebhooksController_rotateEndpointSecret","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RotateWebhookEndpointSecretDto"}}}},"responses":{"201":{"description":"Webhook endpoint secret rotated."}},"security":[{"adminToken":[]}],"tags":["Webhooks"]}},"/api/v1/admin/webhooks/test":{"post":{"operationId":"WebhooksController_testWebhook","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookTestDto"}}}},"responses":{"201":{"description":"Test webhook delivery queued."}},"security":[{"adminToken":[]}],"tags":["Webhooks"]}},"/api/v1/admin/webhooks/deliveries":{"get":{"operationId":"WebhooksController_listDeliveries","parameters":[{"name":"merchantId","required":false,"in":"query","schema":{"example":"merchant-public-id","type":"string"}},{"name":"status","required":false,"in":"query","schema":{"$ref":"#/components/schemas/WebhookDeliveryStatus"}},{"name":"eventType","required":false,"in":"query","schema":{"example":"invoice.status.changed","type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"example":20,"type":"number"}}],"responses":{"200":{"description":"Webhook deliveries fetched successfully."}},"security":[{"adminToken":[]}],"tags":["Webhooks"]}},"/api/v1/admin/webhooks/deliveries/{id}/resend":{"post":{"operationId":"WebhooksController_resendDelivery","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"Webhook delivery replay queued."}},"security":[{"adminToken":[]}],"tags":["Webhooks"]}},"/api/v1/webhooks/endpoints":{"post":{"operationId":"MerchantWebhooksController_configureWebhookEndpoint","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigureWebhookEndpointDto"}}}},"responses":{"201":{"description":"Webhook endpoint configured."}},"security":[{"merchantApiKey":[]}],"tags":["Webhooks"]},"get":{"operationId":"MerchantWebhooksController_listEndpoints","parameters":[{"name":"merchantId","required":false,"in":"query","schema":{"example":"merchant-public-id","type":"string"}},{"name":"isActive","required":false,"in":"query","schema":{"example":true,"type":"boolean"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"example":20,"type":"number"}}],"responses":{"200":{"description":"Webhook endpoints fetched successfully."}},"security":[{"merchantApiKey":[]}],"tags":["Webhooks"]}},"/api/v1/webhooks/event-types":{"get":{"operationId":"MerchantWebhooksController_listEventTypes","parameters":[],"responses":{"200":{"description":"Supported merchant webhook event types."}},"security":[{"merchantApiKey":[]}],"tags":["Webhooks"]}},"/api/v1/webhooks/endpoints/{id}/status":{"post":{"operationId":"MerchantWebhooksController_updateEndpointStatus","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWebhookEndpointStatusDto"}}}},"responses":{"200":{"description":"Webhook endpoint status updated."}},"security":[{"merchantApiKey":[]}],"tags":["Webhooks"]}},"/api/v1/webhooks/endpoints/{id}/rotate-secret":{"post":{"operationId":"MerchantWebhooksController_rotateEndpointSecret","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RotateWebhookEndpointSecretDto"}}}},"responses":{"201":{"description":"Webhook endpoint secret rotated."}},"security":[{"merchantApiKey":[]}],"tags":["Webhooks"]}},"/api/v1/webhooks/test":{"post":{"operationId":"MerchantWebhooksController_testWebhook","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MerchantWebhookTestDto"}}}},"responses":{"201":{"description":"Test webhook delivery queued."}},"security":[{"merchantApiKey":[]}],"tags":["Webhooks"]}},"/api/v1/webhooks/deliveries":{"get":{"operationId":"MerchantWebhooksController_listDeliveries","parameters":[{"name":"merchantId","required":false,"in":"query","schema":{"example":"merchant-public-id","type":"string"}},{"name":"status","required":false,"in":"query","schema":{"$ref":"#/components/schemas/WebhookDeliveryStatus"}},{"name":"eventType","required":false,"in":"query","schema":{"example":"invoice.status.changed","type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"example":20,"type":"number"}}],"responses":{"200":{"description":"Webhook deliveries fetched successfully."}},"security":[{"merchantApiKey":[]}],"tags":["Webhooks"]}},"/api/v1/webhooks/deliveries/{id}/resend":{"post":{"operationId":"MerchantWebhooksController_resendDelivery","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"Webhook delivery replay queued."}},"security":[{"merchantApiKey":[]}],"tags":["Webhooks"]}},"/api/v1/refunds":{"get":{"operationId":"RefundsController_listRefunds","parameters":[{"name":"merchantId","required":false,"in":"query","schema":{"example":"merchant-public-id","type":"string"}},{"name":"paymentId","required":false,"in":"query","schema":{"example":"payment-public-id","type":"string"}},{"name":"status","required":false,"in":"query","schema":{"$ref":"#/components/schemas/RefundStatus"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"example":20,"type":"number"}}],"responses":{"200":{"description":"Refunds listed successfully."}},"security":[{"merchantApiKey":[]}],"tags":["Refunds"]},"post":{"operationId":"RefundsController_createRefund","parameters":[{"name":"idempotency-key","required":true,"in":"header","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRefundDto"}}}},"responses":{"201":{"description":"Refund requested successfully."}},"security":[{"merchantApiKey":[]}],"tags":["Refunds"]}},"/api/v1/admin/refunds":{"get":{"operationId":"RefundsAdminController_listRefunds","parameters":[{"name":"merchantId","required":false,"in":"query","schema":{"example":"merchant-public-id","type":"string"}},{"name":"paymentId","required":false,"in":"query","schema":{"example":"payment-public-id","type":"string"}},{"name":"status","required":false,"in":"query","schema":{"$ref":"#/components/schemas/RefundStatus"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"example":20,"type":"number"}}],"responses":{"200":{"description":"Refunds listed successfully."}},"security":[{"adminToken":[]}],"tags":["Refunds Admin"]}},"/api/v1/admin/refunds/{id}/status":{"post":{"operationId":"RefundsAdminController_transitionStatus","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransitionRefundStatusDto"}}}},"responses":{"200":{"description":"Refund status updated successfully."}},"security":[{"adminToken":[]}],"tags":["Refunds Admin"]}},"/api/v1/disputes":{"get":{"operationId":"DisputesController_listDisputes","parameters":[{"name":"merchantId","required":false,"in":"query","schema":{"example":"merchant-public-id","type":"string"}},{"name":"paymentId","required":false,"in":"query","schema":{"example":"payment-public-id","type":"string"}},{"name":"status","required":false,"in":"query","schema":{"$ref":"#/components/schemas/DisputeStatus"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"example":20,"type":"number"}}],"responses":{"200":{"description":"Disputes listed successfully."}},"security":[{"merchantApiKey":[]}],"tags":["Disputes"]}},"/api/v1/disputes/{id}/evidence":{"post":{"operationId":"DisputesController_submitEvidence","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitDisputeEvidenceDto"}}}},"responses":{"200":{"description":"Dispute evidence submitted successfully."}},"security":[{"merchantApiKey":[]}],"tags":["Disputes"]}},"/api/v1/admin/disputes":{"get":{"operationId":"DisputesAdminController_listDisputes","parameters":[{"name":"merchantId","required":false,"in":"query","schema":{"example":"merchant-public-id","type":"string"}},{"name":"paymentId","required":false,"in":"query","schema":{"example":"payment-public-id","type":"string"}},{"name":"status","required":false,"in":"query","schema":{"$ref":"#/components/schemas/DisputeStatus"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"example":20,"type":"number"}}],"responses":{"200":{"description":"Disputes listed successfully."}},"security":[{"adminToken":[]}],"tags":["Disputes Admin"]},"post":{"operationId":"DisputesAdminController_createDispute","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDisputeDto"}}}},"responses":{"201":{"description":"Dispute created successfully."}},"security":[{"adminToken":[]}],"tags":["Disputes Admin"]}},"/api/v1/admin/disputes/{id}/evidence":{"post":{"operationId":"DisputesAdminController_submitEvidence","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitDisputeEvidenceDto"}}}},"responses":{"200":{"description":"Dispute evidence submitted successfully."}},"security":[{"adminToken":[]}],"tags":["Disputes Admin"]}},"/api/v1/admin/disputes/{id}/status":{"post":{"operationId":"DisputesAdminController_transitionStatus","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransitionDisputeStatusDto"}}}},"responses":{"200":{"description":"Dispute status updated successfully."}},"security":[{"adminToken":[]}],"tags":["Disputes Admin"]}},"/api/v1/merchant/console":{"get":{"operationId":"MerchantConsoleController_renderConsole","parameters":[],"responses":{"200":{"description":"Browser merchant console shell. Data is loaded through the protected summary endpoint."}},"tags":["Merchant Console"]}},"/api/v1/merchant/console/summary":{"get":{"operationId":"MerchantConsoleController_getSummary","parameters":[],"responses":{"200":{"description":"Merchant console summary fetched with sections filtered by API key scopes."}},"security":[{"merchantApiKey":[]}],"tags":["Merchant Console"]}},"/api/v1/invoices":{"post":{"operationId":"InvoicesController_createInvoice","parameters":[{"name":"idempotency-key","required":true,"in":"header","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateInvoiceDto"}}}},"responses":{"201":{"description":"Invoice created successfully."}},"security":[{"merchantApiKey":[]}],"tags":["Invoices"]}},"/api/v1/invoices/{id}":{"get":{"operationId":"InvoicesController_getInvoice","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Invoice fetched successfully."}},"security":[{"merchantApiKey":[]}],"tags":["Invoices"]}},"/api/v1/invoices/{id}/payments":{"get":{"operationId":"InvoicesController_getInvoicePayments","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Invoice payments fetched successfully."}},"security":[{"merchantApiKey":[]}],"tags":["Invoices"]}},"/api/v1/invoices/{id}/cancel":{"post":{"operationId":"InvoicesController_cancelInvoice","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelInvoiceDto"}}}},"responses":{"200":{"description":"Invoice cancelled successfully."}},"security":[{"merchantApiKey":[]}],"tags":["Invoices"]}},"/api/v1/admin/invoices/expiring":{"get":{"operationId":"AdminInvoiceLifecycleController_listExpiring","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"example":20,"type":"number"}},{"name":"lookaheadMinutes","required":false,"in":"query","schema":{"minimum":1,"maximum":1440,"example":120,"type":"number"}}],"responses":{"200":{"description":"Expiring invoices fetched successfully."}},"security":[{"adminToken":[]}],"summary":"List open invoices that are overdue or close to expiring","tags":["Admin Invoices"]}},"/api/v1/admin/invoices/expire-due":{"post":{"operationId":"AdminInvoiceLifecycleController_expireDue","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExpireDueInvoicesDto"}}}},"responses":{"200":{"description":"Due invoices expired successfully."}},"security":[{"adminToken":[]}],"summary":"Expire due invoices immediately and emit merchant webhooks","tags":["Admin Invoices"]}},"/api/v1/fiat/sandbox/spei/payments":{"post":{"operationId":"SandboxSpeiController_simulate","parameters":[{"name":"idempotency-key","required":true,"in":"header","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulateSpeiPaymentDto"}}}},"responses":{"201":{"description":"Sandbox SPEI payment simulated."}},"security":[{"adminToken":[]}],"tags":["Fiat Sandbox"]}},"/api/v1/fiat/sandbox/cards/payments":{"post":{"operationId":"SandboxCardController_simulate","parameters":[{"name":"idempotency-key","required":true,"in":"header","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulateCardPaymentDto"}}}},"responses":{"201":{"description":"Sandbox card payment simulated."}},"security":[{"adminToken":[]}],"tags":["Fiat Sandbox"]}},"/api/v1/fiat/invoices/{id}/instructions":{"get":{"operationId":"FiatSpeiInstructionsController_getInstructions","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Fiat transfer instructions fetched successfully."}},"security":[{"merchantApiKey":[]}],"tags":["Fiat SPEI"]}},"/api/v1/admin/fiat/providers/stp":{"get":{"operationId":"AdminStpProviderController_getStatus","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"STP provider status fetched successfully."}},"security":[{"adminToken":[]}],"tags":["Fiat Providers"]}},"/api/v1/admin/fiat/providers/stp/accounts":{"get":{"operationId":"AdminStpProviderController_listAccounts","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}},{"name":"merchantId","required":false,"in":"query","schema":{"example":"merchant-public-id","type":"string"}},{"name":"currency","required":false,"in":"query","schema":{"example":"MXN","type":"string"}},{"name":"isActive","required":false,"in":"query","schema":{"example":true,"type":"boolean"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"example":20,"type":"number"}}],"responses":{"200":{"description":"STP collection accounts fetched successfully."}},"security":[{"adminToken":[]}],"tags":["Fiat Providers"]},"post":{"operationId":"AdminStpProviderController_registerAccount","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateStpFiatAccountDto"}}}},"responses":{"201":{"description":"STP collection account registered successfully."}},"security":[{"adminToken":[]}],"tags":["Fiat Providers"]}},"/api/v1/admin/crypto/routes":{"get":{"operationId":"AdminCryptoController_listRoutes","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}},{"name":"status","required":false,"in":"query","schema":{"default":"open","type":"string","enum":["open","all"]}},{"name":"assetCode","required":false,"in":"query","schema":{"example":"USDT","type":"string"}},{"name":"networkCode","required":false,"in":"query","schema":{"example":"TRC20","type":"string"}},{"name":"merchantId","required":false,"in":"query","schema":{"example":"merchant-public-id","type":"string"}}],"responses":{"200":{"description":"Crypto routes fetched successfully."}},"security":[{"adminToken":[]}],"summary":"List active or historical crypto invoice routes","tags":["Admin Crypto"]}},"/api/v1/admin/crypto/wallet-capacity":{"get":{"operationId":"AdminCryptoController_getWalletCapacity","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Crypto wallet capacity fetched successfully."}},"security":[{"adminToken":[]}],"summary":"Inspect wallet inventory and free routing capacity","tags":["Admin Crypto"]}},"/api/v1/admin/crypto/capabilities":{"get":{"operationId":"AdminCryptoController_listCapabilities","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Crypto capabilities fetched successfully."}},"security":[{"adminToken":[]}],"summary":"List crypto rails and whether they are fully ready or manual-only","tags":["Admin Crypto"]}},"/api/v1/admin/crypto/live-check":{"get":{"operationId":"AdminCryptoController_getLiveCheck","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}},{"name":"assetCode","required":false,"in":"query","schema":{"default":"BTC","example":"BTC","type":"string"}},{"name":"networkCode","required":false,"in":"query","schema":{"default":"BTC","example":"BTC","type":"string"}},{"name":"fiatAmount","required":false,"in":"query","schema":{"default":"1.00","example":"1.00","type":"string"}},{"name":"fiatCurrency","required":false,"in":"query","schema":{"default":"USD","example":"USD","type":"string"}},{"name":"merchantId","required":false,"in":"query","description":"Optional merchant public id. When present, readiness checks are scoped to this merchant and its webhook endpoint.","schema":{"type":"string"}}],"responses":{"200":{"description":"Crypto live check generated successfully."}},"security":[{"adminToken":[]}],"summary":"Run an operator live check for a specific crypto rail","tags":["Admin Crypto"]}},"/api/v1/admin/crypto/live-checks":{"get":{"operationId":"AdminCryptoController_getPrimaryLiveChecks","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}},{"name":"assetCode","required":false,"in":"query","schema":{"default":"BTC","example":"BTC","type":"string"}},{"name":"networkCode","required":false,"in":"query","schema":{"default":"BTC","example":"BTC","type":"string"}},{"name":"fiatAmount","required":false,"in":"query","schema":{"default":"1.00","example":"1.00","type":"string"}},{"name":"fiatCurrency","required":false,"in":"query","schema":{"default":"USD","example":"USD","type":"string"}},{"name":"merchantId","required":false,"in":"query","description":"Optional merchant public id. When present, readiness checks are scoped to this merchant and its webhook endpoint.","schema":{"type":"string"}}],"responses":{"200":{"description":"Primary crypto live checks generated successfully."}},"security":[{"adminToken":[]}],"summary":"Run operator live checks for primary crypto rails","tags":["Admin Crypto"]}},"/api/v1/admin/crypto/watchers":{"get":{"operationId":"AdminCryptoController_listWatchers","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Automatic crypto watchers fetched successfully."}},"security":[{"adminToken":[]}],"summary":"List automatic crypto watchers and whether they are enabled","tags":["Admin Crypto"]}},"/api/v1/admin/crypto/watchers/health":{"get":{"operationId":"AdminCryptoController_getWatcherHealth","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Automatic crypto watcher health fetched successfully."}},"security":[{"adminToken":[]}],"summary":"Inspect automatic watcher health, cursors and alert signals","tags":["Admin Crypto"]}},"/api/v1/admin/crypto/watchers/cursors":{"get":{"operationId":"AdminCryptoController_listWatcherCursors","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Automatic crypto watcher cursors fetched successfully."}},"security":[{"adminToken":[]}],"summary":"List stored watcher cursors for chains that scan by block cursor","tags":["Admin Crypto"]}},"/api/v1/admin/crypto/prices/quote":{"get":{"operationId":"AdminCryptoController_quotePrice","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}},{"name":"assetCode","required":false,"in":"query","schema":{"default":"BTC","example":"BTC","type":"string"}},{"name":"fiatCurrency","required":false,"in":"query","schema":{"default":"USD","example":"USD","type":"string"}},{"name":"fiatAmount","required":false,"in":"query","schema":{"default":"10.00","example":"10.00","type":"string"}},{"name":"networkCode","required":false,"in":"query","description":"Optional network or rail context for the quote lock, for example BTC, LIGHTNING, TRC20, ERC20, LTC.","schema":{"example":"BTC","type":"string"}},{"name":"priceBufferBps","required":false,"in":"query","schema":{"default":"50","example":"50","type":"string"}}],"responses":{"200":{"description":"Crypto price quote generated successfully."}},"security":[{"adminToken":[]}],"summary":"Preview fiat-to-crypto pricing used by hosted crypto invoices","tags":["Admin Crypto"]}},"/api/v1/admin/crypto/watchers/scan":{"post":{"operationId":"AdminCryptoController_triggerWatcherScan","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerWatcherScanDto"}}}},"responses":{"200":{"description":"Automatic crypto watcher scan executed successfully."}},"security":[{"adminToken":[]}],"summary":"Trigger a manual scan for all enabled watchers or one watcher","tags":["Admin Crypto"]}},"/api/v1/admin/crypto/transactions":{"get":{"operationId":"AdminCryptoController_listTransactions","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}},{"name":"assetCode","required":false,"in":"query","schema":{"example":"USDT","type":"string"}},{"name":"networkCode","required":false,"in":"query","schema":{"example":"TRC20","type":"string"}},{"name":"status","required":false,"in":"query","schema":{"$ref":"#/components/schemas/CryptoTransactionStatus"}},{"name":"merchantId","required":false,"in":"query","schema":{"example":"merchant-public-id","type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"default":20,"type":"number"}}],"responses":{"200":{"description":"Recent crypto transactions fetched successfully."}},"security":[{"adminToken":[]}],"summary":"List recently detected crypto transactions across watchers","tags":["Admin Crypto"]}},"/api/v1/admin/crypto/providers/btcpay":{"get":{"operationId":"AdminCryptoController_getBtcpayProviderStatus","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"BTCPay Lightning provider status fetched successfully."}},"security":[{"adminToken":[]}],"summary":"Inspect BTCPay Lightning provider configuration and webhooks","tags":["Admin Crypto"]}},"/api/v1/admin/crypto/providers/btcpay/webhook/sync":{"post":{"operationId":"AdminCryptoController_syncBtcpayWebhook","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncBtcpayWebhookDto"}}}},"responses":{"200":{"description":"BTCPay webhook synced successfully."}},"security":[{"adminToken":[]}],"summary":"Create or update the BTCPay webhook to point to this gateway","tags":["Admin Crypto"]}},"/api/v1/crypto/assets":{"get":{"operationId":"CryptoAssetsController_listAssets","parameters":[],"responses":{"200":{"description":"Active crypto assets listed successfully."}},"security":[{"merchantApiKey":[]}],"tags":["Crypto Assets"]}},"/api/v1/crypto/capabilities":{"get":{"operationId":"CryptoCapabilitiesController_listCapabilities","parameters":[],"responses":{"200":{"description":"Merchant-facing crypto capabilities listed successfully."}},"security":[{"merchantApiKey":[]}],"tags":["Crypto Capabilities"]}},"/api/v1/crypto/supported-rails":{"get":{"operationId":"CryptoSupportedRailsController_listSupportedRails","parameters":[],"responses":{"200":{"description":"Supported crypto rails listed successfully."}},"security":[{"merchantApiKey":[]}],"summary":"Return the broad commercial crypto catalog with explicit invoice readiness","tags":["Crypto Supported Rails"]}},"/api/v1/crypto/services":{"get":{"operationId":"CryptoServicesController_listServices","parameters":[{"name":"fiatAmount","required":false,"in":"query","schema":{"default":"1.00","example":"1.00","type":"string"}},{"name":"fiatCurrency","required":false,"in":"query","schema":{"default":"USD","example":"USD","type":"string"}}],"responses":{"200":{"description":"Merchant crypto services generated successfully."}},"security":[{"merchantApiKey":[]}],"summary":"Return merchant-safe crypto services derived from live readiness checks","tags":["Crypto Services"]}},"/api/v1/crypto/readiness":{"get":{"operationId":"CryptoReadinessController_getReadiness","parameters":[{"name":"fiatAmount","required":false,"in":"query","schema":{"default":"1.00","example":"1.00","type":"string"}},{"name":"fiatCurrency","required":false,"in":"query","schema":{"default":"USD","example":"USD","type":"string"}}],"responses":{"200":{"description":"Merchant crypto readiness generated successfully."}},"security":[{"merchantApiKey":[]}],"summary":"Return merchant-scoped readiness and recommended primary crypto rail","tags":["Crypto Readiness"]}},"/api/v1/crypto/networks":{"get":{"operationId":"CryptoNetworksController_listNetworks","parameters":[],"responses":{"200":{"description":"Active crypto networks listed successfully."}},"security":[{"merchantApiKey":[]}],"tags":["Crypto Networks"]}},"/api/v1/crypto/wallets":{"post":{"operationId":"CryptoWalletsController_createWallet","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCryptoWalletDto"}}}},"responses":{"201":{"description":"Crypto wallet created successfully."}},"security":[{"adminToken":[]}],"tags":["Crypto Wallets"]},"get":{"operationId":"CryptoWalletsController_listWallets","parameters":[{"name":"merchantId","required":false,"in":"query","schema":{"example":"merchant-public-id","type":"string"}},{"name":"assetCode","required":false,"in":"query","schema":{"example":"USDT","type":"string"}},{"name":"networkCode","required":false,"in":"query","schema":{"example":"TRC20","type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"example":20,"type":"number"}}],"responses":{"200":{"description":"Crypto wallets listed successfully."}},"security":[{"adminToken":[]}],"tags":["Crypto Wallets"]}},"/api/v1/wallets/addresses":{"get":{"operationId":"MerchantWalletAddressesController_listAddresses","parameters":[{"name":"assetCode","required":false,"in":"query","schema":{"example":"USDT","type":"string"}},{"name":"networkCode","required":false,"in":"query","schema":{"example":"TRC20","type":"string"}},{"name":"status","required":false,"in":"query","schema":{"$ref":"#/components/schemas/CryptoWalletStatus"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"example":20,"type":"number"}}],"responses":{"200":{"description":"Merchant wallet addresses fetched successfully."}},"security":[{"merchantApiKey":[]}],"summary":"Return active merchant-accessible receiving addresses for supported crypto rails","tags":["Business Wallet"]}},"/api/v1/wallets/static":{"post":{"operationId":"MerchantWalletAddressesController_createStaticWallet","parameters":[{"name":"idempotency-key","required":true,"in":"header","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateStaticWalletAssignmentDto"}}}},"responses":{"201":{"description":"Static wallet assignment created or replayed safely."}},"security":[{"merchantApiKey":[]}],"summary":"Assign a merchant-owned static receiving address for a concrete crypto rail","tags":["Business Wallet"]},"get":{"operationId":"MerchantWalletAddressesController_listStaticWallets","parameters":[{"name":"assetCode","required":false,"in":"query","schema":{"example":"USDT","type":"string"}},{"name":"networkCode","required":false,"in":"query","schema":{"example":"TRC20","type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"maximum":100,"default":50,"example":50,"type":"number"}}],"responses":{"200":{"description":"Static wallet assignments fetched successfully."}},"security":[{"merchantApiKey":[]}],"summary":"List merchant static receiving address assignments","tags":["Business Wallet"]}},"/api/v1/wallets/static/{id}/block":{"post":{"operationId":"MerchantWalletAddressesController_blockStaticWallet","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlockStaticWalletAssignmentDto"}}}},"responses":{"200":{"description":"Static wallet assignment blocked successfully."}},"security":[{"merchantApiKey":[]}],"summary":"Block a merchant static receiving address assignment","tags":["Business Wallet"]}},"/api/v1/crypto/prices/quote":{"get":{"operationId":"CryptoPricingController_quotePrice","parameters":[{"name":"assetCode","required":false,"in":"query","schema":{"default":"BTC","example":"BTC","type":"string"}},{"name":"fiatCurrency","required":false,"in":"query","schema":{"default":"USD","example":"USD","type":"string"}},{"name":"fiatAmount","required":false,"in":"query","schema":{"default":"10.00","example":"10.00","type":"string"}},{"name":"networkCode","required":false,"in":"query","description":"Optional network or rail context for the quote lock, for example BTC, LIGHTNING, TRC20, ERC20, LTC.","schema":{"example":"BTC","type":"string"}},{"name":"priceBufferBps","required":false,"in":"query","schema":{"default":"50","example":"50","type":"string"}}],"responses":{"200":{"description":"Merchant-facing crypto price quote generated successfully."}},"security":[{"merchantApiKey":[]}],"tags":["Crypto Pricing"]}},"/api/v1/crypto/invoices":{"post":{"operationId":"CryptoInvoicesController_createInvoice","parameters":[{"name":"idempotency-key","required":true,"in":"header","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCryptoInvoiceDto"}}}},"responses":{"201":{"description":"Crypto invoice created successfully."}},"security":[{"merchantApiKey":[]}],"tags":["Crypto Invoices"]}},"/api/v1/crypto/invoices/info":{"post":{"operationId":"CryptoInvoicesController_getInvoiceInfo","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CryptoInvoiceInfoDto"}}}},"responses":{"200":{"description":"Crypto invoice information fetched by public id/uuid or merchant order id."}},"security":[{"merchantApiKey":[]}],"tags":["Crypto Invoices"]}},"/api/v1/crypto/invoices/{id}/instructions":{"get":{"operationId":"CryptoInvoicesController_getInstructions","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Crypto invoice instructions fetched successfully."}},"security":[{"merchantApiKey":[]}],"tags":["Crypto Invoices"]}},"/api/v1/crypto/payment-links":{"post":{"operationId":"CryptoPaymentLinksController_createPaymentLink","parameters":[{"name":"idempotency-key","required":true,"in":"header","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCryptoPaymentLinkDto"}}}},"responses":{"201":{"description":"Crypto payment link created."}},"security":[{"merchantApiKey":[]}],"tags":["Crypto Payment Links"]},"get":{"operationId":"CryptoPaymentLinksController_listPaymentLinks","parameters":[],"responses":{"200":{"description":"Crypto payment links listed."}},"security":[{"merchantApiKey":[]}],"tags":["Crypto Payment Links"]}},"/api/v1/crypto/payment-links/{id}":{"get":{"operationId":"CryptoPaymentLinksController_getPaymentLink","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Crypto payment link fetched."}},"security":[{"merchantApiKey":[]}],"tags":["Crypto Payment Links"]}},"/api/v1/crypto/payment-links/{id}/deactivate":{"post":{"operationId":"CryptoPaymentLinksController_deactivatePaymentLink","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Crypto payment link deactivated."}},"security":[{"merchantApiKey":[]}],"tags":["Crypto Payment Links"]}},"/api/v1/crypto/payment-links/public/{slug}":{"get":{"operationId":"PublicCryptoPaymentLinksController_getPaymentLink","parameters":[{"name":"slug","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Public crypto payment link fetched."}},"tags":["Public Crypto Payment Links"]}},"/api/v1/crypto/payment-links/public/{slug}/invoices":{"post":{"operationId":"PublicCryptoPaymentLinksController_createInvoiceFromPaymentLink","parameters":[{"name":"slug","required":true,"in":"path","schema":{"type":"string"}},{"name":"idempotency-key","required":true,"in":"header","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePaymentLinkInvoiceDto"}}}},"responses":{"201":{"description":"Invoice created from a public crypto payment link."}},"tags":["Public Crypto Payment Links"]}},"/api/v1/checkout/{id}":{"get":{"operationId":"CryptoCheckoutController_renderCheckout","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["CryptoCheckout"]}},"/api/v1/checkout/{id}/status":{"get":{"operationId":"CryptoCheckoutController_getCheckoutStatus","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["CryptoCheckout"]}},"/api/v1/checkout/{id}/result":{"get":{"operationId":"CryptoCheckoutController_renderCheckoutResult","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["CryptoCheckout"]}},"/api/v1/checkout/{id}/print":{"get":{"operationId":"CryptoCheckoutController_renderPrintableCheckout","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["CryptoCheckout"]}},"/api/v1/checkout/{id}/card/sandbox-pay":{"post":{"operationId":"CryptoCheckoutController_submitSandboxCardPayment","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostedSandboxCardPaymentDto"}}}},"responses":{"201":{"description":""}},"tags":["CryptoCheckout"]}},"/api/v1/crypto/watchers/detect":{"post":{"operationId":"CryptoWatchersController_detect","parameters":[{"name":"idempotency-key","required":true,"in":"header","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DetectCryptoTransactionDto"}}}},"responses":{"201":{"description":"Crypto transaction detected successfully."}},"security":[{"adminToken":[]}],"tags":["Crypto Watchers"]}},"/api/v1/crypto/watchers/confirm":{"post":{"operationId":"CryptoWatchersController_confirm","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmCryptoTransactionDto"}}}},"responses":{"200":{"description":"Crypto transaction confirmations updated successfully."}},"security":[{"adminToken":[]}],"tags":["Crypto Watchers"]}},"/api/v1/crypto/sandbox/payments":{"post":{"operationId":"SandboxCryptoController_simulate","parameters":[{"name":"idempotency-key","required":true,"in":"header","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulateCryptoPaymentDto"}}}},"responses":{"201":{"description":"Sandbox crypto payment simulated."}},"security":[{"adminToken":[]}],"tags":["Crypto Sandbox"]}},"/api/v1/admin/settlements/summary":{"get":{"operationId":"AdminSettlementsController_getSummary","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}},{"name":"merchantId","required":false,"in":"query","schema":{"example":"merchant-public-id","type":"string"}},{"name":"channel","required":false,"in":"query","schema":{"$ref":"#/components/schemas/PaymentChannel"}},{"name":"currency","required":false,"in":"query","schema":{"example":"USDT","type":"string"}},{"name":"assetCode","required":false,"in":"query","schema":{"example":"USDT","type":"string"}},{"name":"networkCode","required":false,"in":"query","schema":{"example":"TRC20","type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":200,"example":50,"type":"number"}}],"responses":{"200":{"description":"Settlement summary fetched successfully."}},"security":[{"adminToken":[]}],"summary":"Inspect outstanding confirmed payments and recent settlement batches","tags":["Admin Settlements"]}},"/api/v1/admin/settlements/eligible-payments":{"get":{"operationId":"AdminSettlementsController_listEligiblePayments","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}},{"name":"merchantId","required":false,"in":"query","schema":{"example":"merchant-public-id","type":"string"}},{"name":"channel","required":false,"in":"query","schema":{"$ref":"#/components/schemas/PaymentChannel"}},{"name":"currency","required":false,"in":"query","schema":{"example":"USDT","type":"string"}},{"name":"assetCode","required":false,"in":"query","schema":{"example":"USDT","type":"string"}},{"name":"networkCode","required":false,"in":"query","schema":{"example":"TRC20","type":"string"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":200,"example":50,"type":"number"}}],"responses":{"200":{"description":"Eligible settlement payments fetched successfully."}},"security":[{"adminToken":[]}],"summary":"List confirmed payments that are still pending settlement","tags":["Admin Settlements"]}},"/api/v1/admin/settlements/batches":{"get":{"operationId":"AdminSettlementsController_listBatches","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}},{"name":"merchantId","required":false,"in":"query","schema":{"example":"merchant-public-id","type":"string"}},{"name":"channel","required":false,"in":"query","schema":{"$ref":"#/components/schemas/PaymentChannel"}},{"name":"currency","required":false,"in":"query","schema":{"example":"USDT","type":"string"}},{"name":"assetCode","required":false,"in":"query","schema":{"example":"USDT","type":"string"}},{"name":"networkCode","required":false,"in":"query","schema":{"example":"TRC20","type":"string"}},{"name":"status","required":false,"in":"query","schema":{"$ref":"#/components/schemas/SettlementStatus"}},{"name":"approvalStatus","required":false,"in":"query","schema":{"$ref":"#/components/schemas/SettlementApprovalStatus"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"example":20,"type":"number"}}],"responses":{"200":{"description":"Settlement batches fetched successfully."}},"security":[{"adminToken":[]}],"summary":"List settlement batches with their included payments","tags":["Admin Settlements"]},"post":{"operationId":"AdminSettlementsController_createBatch","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSettlementBatchDto"}}}},"responses":{"200":{"description":"Settlement batch created successfully."}},"security":[{"adminToken":[]}],"summary":"Create a settlement batch from confirmed unsettled payments","tags":["Admin Settlements"]}},"/api/v1/admin/settlements/executions":{"get":{"operationId":"AdminSettlementsController_listExecutions","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}},{"name":"batchId","required":false,"in":"query","schema":{"example":"settlement-batch-public-id","type":"string"}},{"name":"status","required":false,"in":"query","schema":{"$ref":"#/components/schemas/SettlementExecutionStatus"}},{"name":"kind","required":false,"in":"query","schema":{"$ref":"#/components/schemas/SettlementExecutionKind"}},{"name":"approvalStatus","required":false,"in":"query","schema":{"$ref":"#/components/schemas/SettlementApprovalStatus"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"example":20,"type":"number"}}],"responses":{"200":{"description":"Settlement executions fetched successfully."}},"security":[{"adminToken":[]}],"summary":"List settlement executions for treasury sweeps or merchant payouts","tags":["Admin Settlements"]}},"/api/v1/admin/settlements/batches/{id}/executions":{"post":{"operationId":"AdminSettlementsController_createExecution","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSettlementExecutionDto"}}}},"responses":{"200":{"description":"Settlement execution created successfully."}},"security":[{"adminToken":[]}],"summary":"Plan a settlement execution such as treasury sweep or merchant payout","tags":["Admin Settlements"]}},"/api/v1/admin/settlements/batches/{id}/status":{"post":{"operationId":"AdminSettlementsController_transitionBatchStatus","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransitionSettlementBatchStatusDto"}}}},"responses":{"200":{"description":"Settlement batch status updated successfully."}},"security":[{"adminToken":[]}],"summary":"Advance a settlement batch to processing, settled, failed or cancelled","tags":["Admin Settlements"]}},"/api/v1/admin/settlements/executions/{id}/status":{"post":{"operationId":"AdminSettlementsController_transitionExecutionStatus","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransitionSettlementExecutionStatusDto"}}}},"responses":{"200":{"description":"Settlement execution status updated successfully."}},"security":[{"adminToken":[]}],"summary":"Advance a settlement execution through broadcasted, confirmed, failed or cancelled","tags":["Admin Settlements"]}},"/api/v1/admin/settlements/batches/{id}/approval":{"post":{"operationId":"AdminSettlementApprovalsController_decideBatchApproval","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecideSettlementApprovalDto"}}}},"responses":{"200":{"description":"Settlement batch approval decision registered successfully."}},"security":[{"adminToken":[]}],"summary":"Approve or reject a settlement batch held by approval policy","tags":["Admin Settlement Approvals"]}},"/api/v1/admin/settlements/executions/{id}/approval":{"post":{"operationId":"AdminSettlementApprovalsController_decideExecutionApproval","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecideSettlementApprovalDto"}}}},"responses":{"200":{"description":"Settlement execution approval decision registered successfully."}},"security":[{"adminToken":[]}],"summary":"Approve or reject a settlement execution held by approval policy","tags":["Admin Settlement Approvals"]}},"/api/v1/admin/settlements/approval-policies":{"get":{"operationId":"AdminSettlementApprovalPoliciesController_listPolicies","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}},{"name":"merchantId","required":false,"in":"query","schema":{"example":"merchant-public-id","type":"string"}},{"name":"subjectType","required":false,"in":"query","schema":{"$ref":"#/components/schemas/SettlementApprovalSubjectType"}},{"name":"channel","required":false,"in":"query","schema":{"$ref":"#/components/schemas/PaymentChannel"}},{"name":"currency","required":false,"in":"query","schema":{"example":"USDT","type":"string"}},{"name":"assetCode","required":false,"in":"query","schema":{"example":"USDT","type":"string"}},{"name":"networkCode","required":false,"in":"query","schema":{"example":"TRC20","type":"string"}},{"name":"isActive","required":false,"in":"query","schema":{"example":true,"type":"boolean"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"example":20,"type":"number"}}],"responses":{"200":{"description":"Settlement approval policies fetched successfully."}},"security":[{"adminToken":[]}],"summary":"List settlement approval policies by merchant, scope or subject","tags":["Admin Settlement Approval Policies"]},"post":{"operationId":"AdminSettlementApprovalPoliciesController_createPolicy","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSettlementApprovalPolicyDto"}}}},"responses":{"200":{"description":"Settlement approval policy created successfully."}},"security":[{"adminToken":[]}],"summary":"Create a settlement approval policy to hold batches or executions over a threshold","tags":["Admin Settlement Approval Policies"]}},"/api/v1/admin/settlements/approval-policies/{id}/status":{"post":{"operationId":"AdminSettlementApprovalPoliciesController_updateStatus","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSettlementApprovalPolicyStatusDto"}}}},"responses":{"200":{"description":"Settlement approval policy updated successfully."}},"security":[{"adminToken":[]}],"summary":"Activate or deactivate a settlement approval policy","tags":["Admin Settlement Approval Policies"]}},"/api/v1/admin/settlements/destinations":{"get":{"operationId":"AdminSettlementDestinationsController_listDestinations","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}},{"name":"merchantId","required":false,"in":"query","schema":{"example":"merchant-public-id","type":"string"}},{"name":"channel","required":false,"in":"query","schema":{"$ref":"#/components/schemas/PaymentChannel"}},{"name":"isActive","required":false,"in":"query","schema":{"example":true,"type":"boolean"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"example":20,"type":"number"}}],"responses":{"200":{"description":"Settlement destinations fetched successfully."}},"security":[{"adminToken":[]}],"summary":"List settlement destinations available for merchant payouts","tags":["Admin Settlements"]},"post":{"operationId":"AdminSettlementDestinationsController_createDestination","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSettlementDestinationDto"}}}},"responses":{"200":{"description":"Settlement destination created successfully."}},"security":[{"adminToken":[]}],"summary":"Create a reusable settlement destination for a merchant","tags":["Admin Settlements"]}},"/api/v1/admin/settlements/destinations/{id}/status":{"post":{"operationId":"AdminSettlementDestinationsController_updateStatus","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSettlementDestinationStatusDto"}}}},"responses":{"200":{"description":"Settlement destination status updated successfully."}},"security":[{"adminToken":[]}],"summary":"Activate, deactivate or mark a settlement destination as default","tags":["Admin Settlements"]}},"/api/v1/admin/settlements/profiles":{"get":{"operationId":"AdminSettlementProfilesController_listProfiles","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}},{"name":"merchantId","required":false,"in":"query","schema":{"example":"merchant-public-id","type":"string"}},{"name":"channel","required":false,"in":"query","schema":{"$ref":"#/components/schemas/PaymentChannel"}},{"name":"mode","required":false,"in":"query","schema":{"$ref":"#/components/schemas/SettlementProfileMode"}},{"name":"isActive","required":false,"in":"query","schema":{"example":true,"type":"boolean"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"example":20,"type":"number"}}],"responses":{"200":{"description":"Settlement profiles fetched successfully."}},"security":[{"adminToken":[]}],"summary":"List settlement automation profiles for merchants","tags":["Admin Settlements"]},"post":{"operationId":"AdminSettlementProfilesController_createProfile","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSettlementProfileDto"}}}},"responses":{"200":{"description":"Settlement profile created successfully."}},"security":[{"adminToken":[]}],"summary":"Create a settlement automation profile with threshold and destination rules","tags":["Admin Settlements"]}},"/api/v1/admin/settlements/profiles/{id}/status":{"post":{"operationId":"AdminSettlementProfilesController_updateStatus","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSettlementProfileStatusDto"}}}},"responses":{"200":{"description":"Settlement profile status updated successfully."}},"security":[{"adminToken":[]}],"summary":"Activate or deactivate a settlement automation profile","tags":["Admin Settlements"]}},"/api/v1/admin/settlements/profiles/{id}/run":{"post":{"operationId":"AdminSettlementProfilesController_runProfile","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunSettlementAutomationDto"}}}},"responses":{"200":{"description":"Settlement profile automation executed successfully."}},"security":[{"adminToken":[]}],"summary":"Run a settlement profile immediately or as a dry-run preview","tags":["Admin Settlements"]}},"/api/v1/admin/settlements/automation/run":{"post":{"operationId":"AdminSettlementAutomationController_runAutomation","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunSettlementAutomationDto"}}}},"responses":{"200":{"description":"Settlement automation finished successfully."}},"security":[{"adminToken":[]}],"summary":"Run all active settlement automation profiles or preview them with dry-run","tags":["Admin Settlements"]}},"/api/v1/admin/settlements/processors":{"get":{"operationId":"AdminSettlementProcessorsController_listProcessors","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Settlement processors fetched successfully."}},"security":[{"adminToken":[]}],"summary":"List settlement execution processors and whether they are enabled","tags":["Admin Settlements"]}},"/api/v1/admin/settlements/processors/run":{"post":{"operationId":"AdminSettlementProcessorsController_run","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunSettlementProcessorsDto"}}}},"responses":{"200":{"description":"Settlement execution processors finished successfully."}},"security":[{"adminToken":[]}],"summary":"Run settlement execution processors to dispatch or confirm planned executions","tags":["Admin Settlements"]}},"/api/v1/payouts/services":{"get":{"operationId":"MerchantPayoutsController_listServices","parameters":[],"responses":{"200":{"description":"Payout services fetched successfully."}},"security":[{"merchantApiKey":[]}],"tags":["Payouts"]}},"/api/v1/payouts":{"get":{"operationId":"MerchantPayoutsController_listPayouts","parameters":[{"name":"status","required":false,"in":"query","schema":{"$ref":"#/components/schemas/SettlementExecutionStatus"}},{"name":"approvalStatus","required":false,"in":"query","schema":{"$ref":"#/components/schemas/SettlementApprovalStatus"}},{"name":"limit","required":false,"in":"query","schema":{"minimum":1,"maximum":100,"example":20,"type":"number"}}],"responses":{"200":{"description":"Merchant payouts fetched successfully."}},"security":[{"merchantApiKey":[]}],"tags":["Payouts"]}},"/api/v1/payouts/{id}":{"get":{"operationId":"MerchantPayoutsController_getPayout","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Merchant payout fetched successfully."}},"security":[{"merchantApiKey":[]}],"tags":["Payouts"]}},"/api/v1/admin/console":{"get":{"operationId":"AdminConsoleController_renderConsole","parameters":[],"responses":{"200":{"description":""}},"tags":["AdminConsole"]}},"/api/v1/admin/dashboard/summary":{"get":{"operationId":"AdminDashboardController_getSummary","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Admin dashboard summary fetched successfully."}},"security":[{"adminToken":[]}],"tags":["Admin Dashboard"]}},"/api/v1/admin/readiness":{"get":{"operationId":"AdminReadinessController_getReadinessReport","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Gateway readiness report fetched successfully."}},"security":[{"adminToken":[]}],"tags":["Admin Readiness"]}},"/api/v1/admin/auth/me":{"get":{"operationId":"AdminUsersController_me","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Current admin context fetched successfully."}},"security":[{"adminToken":[]}],"tags":["Admin Auth"]}},"/api/v1/admin/users":{"get":{"operationId":"AdminUsersController_listUsers","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Admin users fetched successfully."}},"security":[{"adminToken":[]}],"tags":["Admin Auth"]},"post":{"operationId":"AdminUsersController_createUser","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAdminUserDto"}}}},"responses":{"201":{"description":"Admin user created successfully."}},"security":[{"adminToken":[]}],"tags":["Admin Auth"]}},"/api/v1/admin/users/{id}/status":{"post":{"operationId":"AdminUsersController_updateUserStatus","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAdminUserStatusDto"}}}},"responses":{"200":{"description":"Admin user status updated successfully."}},"security":[{"adminToken":[]}],"tags":["Admin Auth"]}},"/api/v1/admin/users/{id}/api-keys":{"post":{"operationId":"AdminUsersController_createApiKey","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAdminApiKeyDto"}}}},"responses":{"201":{"description":"Admin API key created successfully."}},"security":[{"adminToken":[]}],"tags":["Admin Auth"]}},"/api/v1/admin/api-keys/{id}/revoke":{"post":{"operationId":"AdminUsersController_revokeApiKey","parameters":[{"name":"x-admin-token","in":"header","required":true,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Admin API key revoked successfully."}},"security":[{"adminToken":[]}],"tags":["Admin Auth"]}},"/health":{"get":{"operationId":"HealthController_getHealth","parameters":[],"responses":{"200":{"description":""}},"tags":["Health"]}}},"info":{"title":"ZemiaxPay API","description":"Crypto-first payment gateway, business wallet and payout operations with strong domain boundaries.","version":"1.0.0","contact":{}},"tags":[],"servers":[],"components":{"securitySchemes":{"merchantApiKey":{"type":"apiKey","in":"header","name":"x-api-key"},"adminToken":{"type":"apiKey","in":"header","name":"x-admin-token"}},"schemas":{"FeeRuleScope":{"type":"string","enum":["merchant","plan","method","network"]},"PaymentMethodType":{"type":"string","enum":["spei","clabe","card","usdt_trc20","usdt_bep20","usdt_erc20","btc","ltc","lightning","eth","usdc_polygon","sol","trx"]},"CreateFeeRuleDto":{"type":"object","properties":{"name":{"type":"string","example":"USDT TRC20 Growth Plan Fee"},"merchantId":{"type":"string","example":"merchant-public-id"},"scope":{"allOf":[{"$ref":"#/components/schemas/FeeRuleScope"}]},"methodType":{"allOf":[{"$ref":"#/components/schemas/PaymentMethodType"}]},"networkCode":{"type":"string","example":"TRC20"},"providerCode":{"type":"string","example":"sandbox_crypto"},"planCode":{"type":"string","example":"growth"},"currency":{"type":"string","example":"USDT"},"percentageBps":{"type":"number","example":150},"fixedFee":{"type":"string","example":"0.25"},"minFee":{"type":"string","example":"0.50"},"isActive":{"type":"boolean","example":true}},"required":["name","scope"]},"FeeQuoteDto":{"type":"object","properties":{"merchantId":{"type":"string","example":"merchant-public-id"},"methodType":{"allOf":[{"$ref":"#/components/schemas/PaymentMethodType"}]},"amount":{"type":"string","example":"100.00"},"currency":{"type":"string","example":"USDT"},"pricingMode":{"type":"string","enum":["gross","net_target"]},"networkCode":{"type":"string","example":"TRC20"},"providerCode":{"type":"string","example":"sandbox_crypto"}},"required":["methodType","amount","currency"]},"CreateMerchantDto":{"type":"object","properties":{"code":{"type":"string","example":"merchant_demo"},"name":{"type":"string","example":"Demo Merchant SA de CV"},"legalName":{"type":"string","example":"Demo Merchant Legal Name SA de CV"},"planCode":{"type":"string","example":"growth"},"metadata":{"type":"object","additionalProperties":true}},"required":["code","name"]},"CreateApiKeyDto":{"type":"object","properties":{"name":{"type":"string","example":"primary-server-key"},"expiresAt":{"type":"string","example":"2026-12-31T23:59:59.000Z"},"scopes":{"type":"array","example":["wallet:read","payout:read"],"description":"Optional scope restriction for this merchant API key. Omit to keep backward-compatible full access.","items":{"type":"string","enum":["wallet:read","wallet:write","payment:read","payment:write","payout:read","payout:write","exchange:read","exchange:write","invoice:read","invoice:write","webhook:read","webhook:write"]}}},"required":["name"]},"RevokeMerchantApiKeyDto":{"type":"object","properties":{"reason":{"type":"string","example":"Key rotated after operator request"}}},"PaymentStatus":{"type":"string","enum":["detected","pending_confirmation","confirmed","failed","reversed","ignored"]},"RegisterPaymentDto":{"type":"object","properties":{"invoiceId":{"type":"string","example":"c6fe4f0d-3f43-4f7a-8f90-8f8f86d0cc31"},"methodType":{"allOf":[{"$ref":"#/components/schemas/PaymentMethodType"}]},"amountReceived":{"type":"string","example":"100.00"},"currency":{"type":"string","example":"MXN"},"status":{"type":"string","enum":["detected","pending_confirmation","confirmed","failed","reversed","ignored"],"default":"detected"},"providerCode":{"type":"string","example":"stp"},"networkCode":{"type":"string","example":"TRON"},"assetCode":{"type":"string","example":"USDT"},"externalReference":{"type":"string","example":"external-op-123"},"txid":{"type":"string","example":"abc123txid"},"address":{"type":"string","example":"TJxL4v5..."},"memoTag":{"type":"string","example":"123456"},"metadata":{"type":"object","additionalProperties":true}},"required":["invoiceId","methodType","amountReceived","currency"]},"TransitionPaymentStatusDto":{"type":"object","properties":{"status":{"allOf":[{"$ref":"#/components/schemas/PaymentStatus"}]},"metadata":{"type":"object","additionalProperties":true}},"required":["status"]},"LedgerEntryDirection":{"type":"string","enum":["credit","debit"]},"LedgerEntryType":{"type":"string","enum":["payment_credit","refund_debit","dispute_debit","settlement_debit","adjustment_credit","adjustment_debit"]},"LedgerEntryStatus":{"type":"string","enum":["posted","voided"]},"BackfillLedgerDto":{"type":"object","properties":{"merchantId":{"type":"string","example":"merchant-public-id"},"dryRun":{"type":"boolean","example":true},"limit":{"type":"number","example":500,"minimum":1,"maximum":2000}}},"ConfigureWebhookEndpointDto":{"type":"object","properties":{"url":{"type":"string","example":"https://merchant.example/webhooks/payments"},"description":{"type":"string","example":"Primary billing webhook"},"signingSecret":{"type":"string","example":"whsec_custom_shared_secret"},"subscribedEvents":{"type":"array","description":"When omitted or empty, the endpoint receives every merchant webhook event.","example":["invoice.status.changed","payment.registered"],"items":{"type":"string","enum":["invoice.created","invoice.status.changed","payment.registered","payment.status.changed","refund.created","refund.status.changed","dispute.created","dispute.evidence.submitted","dispute.status.changed","settlement.batch.created","settlement.batch.status.changed","settlement.batch.approval.changed","settlement.execution.created","settlement.execution.status.changed","settlement.execution.approval.changed","settlement.destination.created","settlement.destination.status.changed","settlement.profile.created","settlement.profile.status.changed","webhook.test"]}},"replaceExisting":{"type":"boolean","example":true,"description":"Default true keeps the legacy single-active-endpoint behavior. Set false to add another active endpoint."},"metadata":{"type":"object","additionalProperties":true}},"required":["url"]},"UpdateWebhookEndpointStatusDto":{"type":"object","properties":{"isActive":{"type":"boolean","example":true}},"required":["isActive"]},"RotateWebhookEndpointSecretDto":{"type":"object","properties":{"signingSecret":{"type":"string","example":"whsec_custom_rotated_secret","description":"When omitted, the gateway generates a new strong signing secret."}}},"WebhookTestDto":{"type":"object","properties":{"merchantId":{"type":"string","example":"c6fe4f0d-3f43-4f7a-8f90-8f8f86d0cc31"},"eventType":{"type":"string","example":"merchant.updated"},"endpointUrlOverride":{"type":"string","example":"https://merchant.example/webhooks/payments"},"signingSecretOverride":{"type":"string","example":"whsec_customsecret"},"payload":{"type":"object","additionalProperties":true}},"required":["merchantId"]},"WebhookDeliveryStatus":{"type":"string","enum":["pending","processing","delivered","failed","dead"]},"MerchantWebhookTestDto":{"type":"object","properties":{"eventType":{"type":"string","example":"webhook.test"},"payload":{"type":"object","additionalProperties":true}}},"RefundStatus":{"type":"string","enum":["requested","approved","processing","succeeded","failed","rejected","cancelled"]},"CreateRefundDto":{"type":"object","properties":{"paymentId":{"type":"string","example":"payment-public-id"},"amount":{"type":"string","example":"10.50","description":"When omitted, the gateway refunds the remaining refundable amount."},"reason":{"type":"string","example":"customer_requested"},"externalReference":{"type":"string","example":"refund-order-123"},"destinationAddress":{"type":"string","example":"TQm...refundAddress","description":"Required operational detail for manual crypto refunds."},"memoTag":{"type":"string","example":"memo-or-tag-if-needed"},"metadata":{"type":"object","additionalProperties":true}},"required":["paymentId"]},"TransitionRefundStatusDto":{"type":"object","properties":{"status":{"allOf":[{"$ref":"#/components/schemas/RefundStatus"}]},"providerRefundId":{"type":"string","example":"provider_refund_123"},"externalReference":{"type":"string","example":"txid-or-processor-reference"},"metadata":{"type":"object","additionalProperties":true}},"required":["status"]},"DisputeStatus":{"type":"string","enum":["inquiry","needs_response","under_review","won","lost","accepted","closed"]},"SubmitDisputeEvidenceDto":{"type":"object","properties":{"evidence":{"type":"object","additionalProperties":true,"example":{"customerEmail":"buyer@example.com","orderReference":"order-123","receiptUrl":"https://merchant.example/receipts/order-123"}},"note":{"type":"string","example":"Evidence submitted from merchant portal"}},"required":["evidence"]},"CreateDisputeDto":{"type":"object","properties":{"paymentId":{"type":"string","example":"payment-public-id"},"amount":{"type":"string","example":"100.00"},"providerDisputeId":{"type":"string","example":"dp_provider_123"},"providerCode":{"type":"string","example":"conekta"},"status":{"example":"needs_response","allOf":[{"$ref":"#/components/schemas/DisputeStatus"}]},"reason":{"type":"string","example":"fraudulent"},"evidenceDueAt":{"type":"string","example":"2026-05-01T00:00:00.000Z"},"metadata":{"type":"object","additionalProperties":true}},"required":["paymentId","amount"]},"TransitionDisputeStatusDto":{"type":"object","properties":{"status":{"allOf":[{"$ref":"#/components/schemas/DisputeStatus"}]},"metadata":{"type":"object","additionalProperties":true},"note":{"type":"string","example":"Provider decided dispute in merchant favor."}},"required":["status"]},"InvoiceLineItemDto":{"type":"object","properties":{"name":{"type":"string","example":"Zemiax Gold Plan"},"description":{"type":"string","example":"Subscription for April 2026"},"sku":{"type":"string","example":"PLAN-GOLD-2026"},"quantity":{"type":"number","example":1,"minimum":1,"maximum":9999},"unitPrice":{"type":"string","example":"100.00"}},"required":["name","quantity","unitPrice"]},"CreateInvoiceDto":{"type":"object","properties":{"invoiceReference":{"type":"string","example":"INV-1001"},"externalReference":{"type":"string","example":"order-7788"},"methodType":{"allOf":[{"$ref":"#/components/schemas/PaymentMethodType"}]},"amountExpected":{"type":"string","example":"1000.00"},"pricingMode":{"type":"string","enum":["gross","net_target"],"default":"gross"},"currency":{"type":"string","example":"MXN"},"assetCode":{"type":"string","example":"USDT"},"networkCode":{"type":"string","example":"TRC20"},"providerCode":{"type":"string","example":"stp"},"providerCheckoutUrl":{"type":"string","example":"https://checkout.provider.example/session/abc123"},"expiresAt":{"type":"string","example":"2026-04-05T15:00:00.000Z"},"itemName":{"type":"string","example":"Zemiax Gold Plan"},"itemDesc":{"type":"string","example":"Subscription for April 2026"},"itemCode":{"type":"string","example":"PLAN-GOLD-2026"},"buyerName":{"type":"string","example":"Axel Test"},"buyerEmail":{"type":"string","example":"axel@example.com"},"buyerPhone":{"type":"string","example":"+52 555 000 0000"},"brandName":{"type":"string","example":"Zemiax Demo Store"},"brandLogoUrl":{"type":"string","example":"https://merchant.example/logo.png"},"brandAccentColor":{"type":"string","example":"#61e7ba"},"redirectUrl":{"type":"string","example":"https://merchant.example/payments/success"},"closeUrl":{"type":"string","example":"https://merchant.example/payments/cancelled"},"autoRedirect":{"type":"boolean","example":true,"default":false},"lineItems":{"type":"array","items":{"$ref":"#/components/schemas/InvoiceLineItemDto"}},"metadata":{"type":"object","additionalProperties":true}},"required":["invoiceReference","methodType","amountExpected","currency"]},"CancelInvoiceDto":{"type":"object","properties":{"reason":{"type":"string","example":"Customer abandoned checkout"}}},"ExpireDueInvoicesDto":{"type":"object","properties":{"limit":{"type":"number","example":100,"minimum":1,"maximum":500}}},"SimulateSpeiPaymentDto":{"type":"object","properties":{"merchantId":{"type":"string","example":"merchant-public-id"},"invoiceId":{"type":"string","example":"invoice-public-id"},"amountReceived":{"type":"string","example":"1000.00"},"currency":{"type":"string","example":"MXN"},"status":{"type":"string","enum":["detected","pending_confirmation","confirmed","failed","reversed","ignored"],"default":"confirmed"},"externalReference":{"type":"string","example":"spei-op-1001"},"metadata":{"type":"object","additionalProperties":true}},"required":["merchantId","invoiceId","amountReceived","currency"]},"SimulateCardPaymentDto":{"type":"object","properties":{"merchantId":{"type":"string","example":"merchant-public-id"},"invoiceId":{"type":"string","example":"invoice-public-id"},"amountReceived":{"type":"string","example":"499.99"},"currency":{"type":"string","example":"MXN"},"status":{"type":"string","enum":["detected","pending_confirmation","confirmed","failed","reversed","ignored"],"default":"pending_confirmation"},"externalReference":{"type":"string","example":"card-auth-7788"},"metadata":{"type":"object","additionalProperties":true}},"required":["merchantId","invoiceId","amountReceived","currency"]},"CreateStpFiatAccountDto":{"type":"object","properties":{"merchantId":{"type":"string","example":"merchant-public-id"},"alias":{"type":"string","example":"Cobranza SPEI principal"},"currency":{"type":"string","example":"MXN"},"speiClabe":{"type":"string","example":"646180157000000001"},"bankName":{"type":"string","example":"STP"},"metadata":{"type":"object","example":{"remoteAccountId":"stp-collect-001"}}},"required":["merchantId","alias","currency","speiClabe"]},"TriggerWatcherScanDto":{"type":"object","properties":{"watcherCode":{"type":"string","example":"tron_trc20","description":"Specific automatic watcher to run. When omitted, all enabled watchers are scanned."}}},"CryptoTransactionStatus":{"type":"string","enum":["detected","pending_confirmation","confirmed","failed","ignored"]},"SyncBtcpayWebhookDto":{"type":"object","properties":{"callbackUrl":{"type":"string","example":"https://zemiaxpay.com/api/v1/crypto/provider-webhooks/btcpay"}}},"CreateCryptoWalletDto":{"type":"object","properties":{"merchantId":{"type":"string","example":"merchant-public-id"},"assetCode":{"type":"string","example":"USDT"},"networkCode":{"type":"string","example":"TRC20"},"providerCode":{"type":"string","example":"sandbox_crypto"},"label":{"type":"string","example":"Merchant Hot Wallet TRON"},"address":{"type":"string","example":"TN3w9ExampleAddress"},"memoTag":{"type":"string","example":"123456"},"metadata":{"type":"object","additionalProperties":true}},"required":["assetCode","networkCode","label","address"]},"CryptoWalletStatus":{"type":"string","enum":["active","inactive","rotating"]},"CreateStaticWalletAssignmentDto":{"type":"object","properties":{"assetCode":{"type":"string","example":"USDT"},"networkCode":{"type":"string","example":"TRC20"},"externalReference":{"type":"string","example":"customer-123","description":"Stable merchant-side reference. Defaults to default when omitted."},"label":{"type":"string","example":"Customer 123 static TRC20 wallet"},"metadata":{"type":"object","additionalProperties":true}},"required":["assetCode","networkCode"]},"BlockStaticWalletAssignmentDto":{"type":"object","properties":{"reason":{"type":"string","example":"customer requested address rotation"}}},"CreateCryptoInvoiceDto":{"type":"object","properties":{"invoiceReference":{"type":"string","example":"CRINV-1001","description":"Native Zemiax invoice reference. If omitted, orderId/order_id is used."},"orderId":{"type":"string","example":"ORDER-1001","description":"Merchant order id. Alias for invoiceReference."},"order_id":{"type":"string","example":"ORDER-1001","description":"Cryptomus-compatible alias for invoiceReference."},"externalReference":{"type":"string","example":"order-crypto-1001"},"quoteId":{"type":"string","example":"qp_1234567890abcdef","description":"Optional locked quote id returned by GET /api/v1/crypto/prices/quote. Do not combine with amountExpected, fiatAmount, fiatCurrency, or priceBufferBps."},"assetCode":{"type":"string","example":"USDT","description":"Native Zemiax crypto asset code. If omitted, toCurrency/to_currency/currency can provide it."},"networkCode":{"type":"string","example":"TRC20","description":"Native Zemiax network code. If omitted, network can provide it. Required after alias normalization."},"amount":{"type":"string","example":"100.00","description":"Cryptomus-compatible amount. Interpreted as crypto amount when currency is crypto and no to_currency is set; otherwise as fiat amount."},"currency":{"type":"string","example":"USD","description":"Cryptomus-compatible source currency. Use with to_currency for fiat-denominated invoices."},"network":{"type":"string","example":"TRON","description":"Cryptomus-compatible network alias. Examples: TRON -> TRC20, BSC -> BEP20, ETH -> ERC20."},"toCurrency":{"type":"string","example":"USDT","description":"Cryptomus-compatible target crypto currency alias."},"to_currency":{"type":"string","example":"USDT","description":"Cryptomus-compatible target crypto currency alias."},"currencies":{"example":["USDT","BTC"],"description":"Gateway-compatible currency selector list. Intentionally rejected until buyer-side currency selection is implemented.","type":"array","items":{"type":"string"}},"exceptCurrencies":{"example":["BTC"],"description":"Gateway-compatible excluded currency list. Intentionally rejected until buyer-side currency selection is implemented.","type":"array","items":{"type":"string"}},"except_currencies":{"example":["BTC"],"description":"Gateway-compatible excluded currency list alias. Intentionally rejected until buyer-side currency selection is implemented.","type":"array","items":{"type":"string"}},"courseSource":{"type":"string","example":"Binance","description":"Gateway-compatible course source selector. Intentionally rejected; use Zemiax quoteId for locked pricing."},"course_source":{"type":"string","example":"Binance","description":"Gateway-compatible course source selector alias. Intentionally rejected; use Zemiax quoteId for locked pricing."},"discountPercent":{"type":"number","example":5,"description":"Gateway-compatible discount percent. Intentionally rejected; apply discounts before invoice creation."},"discount_percent":{"type":"number","example":5,"description":"Gateway-compatible discount percent alias. Intentionally rejected; apply discounts before invoice creation."},"isRefresh":{"type":"boolean","example":true,"description":"Gateway-compatible refresh flag. Intentionally rejected; invoice pricing is immutable after creation."},"is_refresh":{"type":"boolean","example":true,"description":"Gateway-compatible refresh flag alias. Intentionally rejected; invoice pricing is immutable after creation."},"amountExpected":{"type":"string","example":"100.00","description":"Amount in crypto asset units. Optional when fiatAmount is provided."},"fiatAmount":{"type":"string","example":"10.00","description":"Fiat amount to convert into the crypto asset through the gateway price engine."},"fiatCurrency":{"type":"string","example":"USD","default":"USD"},"priceBufferBps":{"type":"number","example":50,"description":"Price safety buffer in basis points. 50 = 0.5%. Applied to volatile assets."},"pricingMode":{"type":"string","enum":["gross","net_target"],"default":"gross"},"expiresAt":{"type":"string","example":"2026-04-07T18:00:00.000Z"},"lifetime":{"type":"number","example":900,"description":"Cryptomus-compatible invoice lifetime in seconds. Supported range: 300-43200."},"itemName":{"type":"string","example":"USDT Subscription Invoice"},"itemDesc":{"type":"string","example":"Subscription for April 2026"},"itemCode":{"type":"string","example":"SUB-APR-2026"},"buyerName":{"type":"string","example":"Axel Test"},"buyerEmail":{"type":"string","example":"axel@example.com"},"buyerPhone":{"type":"string","example":"+52 555 000 0000"},"brandName":{"type":"string","example":"Zemiax Demo Store"},"brandLogoUrl":{"type":"string","example":"https://merchant.example/logo.png"},"brandAccentColor":{"type":"string","example":"#61e7ba"},"redirectUrl":{"type":"string","example":"https://merchant.example/payments/success"},"urlSuccess":{"type":"string","example":"https://merchant.example/payments/success","description":"Cryptomus-compatible alias for redirectUrl."},"url_success":{"type":"string","example":"https://merchant.example/payments/success","description":"Cryptomus-compatible alias for redirectUrl."},"closeUrl":{"type":"string","example":"https://merchant.example/payments/cancelled"},"urlReturn":{"type":"string","example":"https://merchant.example/cart","description":"Cryptomus-compatible alias for closeUrl."},"url_return":{"type":"string","example":"https://merchant.example/cart","description":"Cryptomus-compatible alias for closeUrl."},"urlCallback":{"type":"string","example":"https://merchant.example/webhooks/payments","description":"Cryptomus-compatible field intentionally rejected per invoice. Configure signed merchant webhook endpoints instead."},"url_callback":{"type":"string","example":"https://merchant.example/webhooks/payments","description":"Cryptomus-compatible field intentionally rejected per invoice. Configure signed merchant webhook endpoints instead."},"autoRedirect":{"type":"boolean","example":true,"default":false},"isPaymentMultiple":{"type":"boolean","example":true,"description":"Cryptomus-compatible flag. Zemiax currently supports true only."},"is_payment_multiple":{"type":"boolean","example":true,"description":"Cryptomus-compatible alias. Zemiax currently supports true only."},"accuracyPaymentPercent":{"type":"number","example":0,"description":"Cryptomus-compatible payment tolerance. Zemiax currently supports 0 only."},"accuracy_payment_percent":{"type":"number","example":0,"description":"Cryptomus-compatible payment tolerance alias. Zemiax currently supports 0 only."},"subtract":{"type":"number","example":100,"description":"Cryptomus-compatible fee pass-through. Supported values: 0 merchant absorbs fees, 100 buyer pays all Zemiax fees."},"additionalData":{"type":"string","example":"CRM order context","description":"Merchant-only metadata not shown to the buyer."},"additional_data":{"type":"string","example":"CRM order context","description":"Cryptomus-compatible alias for merchant-only metadata."},"lineItems":{"type":"array","items":{"$ref":"#/components/schemas/InvoiceLineItemDto"}},"metadata":{"type":"object","additionalProperties":true}}},"CryptoInvoiceInfoDto":{"type":"object","properties":{"uuid":{"type":"string","example":"7e2e0f8e-12b7-4d40-8a72-b10a5f0487a9","description":"Zemiax public invoice id. Compatible with Cryptomus uuid lookup semantics."},"id":{"type":"string","example":"7e2e0f8e-12b7-4d40-8a72-b10a5f0487a9","description":"Alias for uuid/public invoice id."},"orderId":{"type":"string","example":"ORDER-1001","description":"Merchant order id. Matches invoiceReference or externalReference for panel compatibility."},"order_id":{"type":"string","example":"ORDER-1001","description":"Cryptomus-compatible order_id alias. Matches invoiceReference or externalReference."},"invoiceReference":{"type":"string","example":"ORDER-1001"}}},"CreateCryptoPaymentLinkDto":{"type":"object","properties":{"title":{"type":"string","example":"USDT checkout link"},"description":{"type":"string","example":"Reusable checkout link for USDT TRC20."},"slug":{"type":"string","example":"usdt-trc20-plan","description":"Public slug. If omitted, ZemiaxPay generates a merchant-prefixed slug."},"assetCode":{"type":"string","example":"USDT"},"networkCode":{"type":"string","example":"TRC20"},"amountExpected":{"type":"string","example":"25.00","description":"Fixed amount in crypto asset units."},"pricingMode":{"type":"string","enum":["gross","net_target"],"default":"gross"},"invoiceLifetimeSeconds":{"type":"number","example":900,"description":"Lifetime in seconds for each invoice created from this link."},"itemName":{"type":"string","example":"Checkout payment"},"itemDesc":{"type":"string","example":"Reusable public crypto checkout link"},"itemCode":{"type":"string","example":"LINK-USDT-TRC20"},"brandName":{"type":"string","example":"Zemiax Store"},"brandLogoUrl":{"type":"string","example":"https://merchant.example/logo.png"},"brandAccentColor":{"type":"string","example":"#61e7ba"},"redirectUrl":{"type":"string","example":"https://merchant.example/success"},"closeUrl":{"type":"string","example":"https://merchant.example/cart"},"autoRedirect":{"type":"boolean","example":false,"default":false},"expiresAt":{"type":"string","example":"2026-06-01T00:00:00.000Z"},"metadata":{"type":"object","example":{"plan":"starter"}}},"required":["title","assetCode","networkCode","amountExpected"]},"CreatePaymentLinkInvoiceDto":{"type":"object","properties":{"orderId":{"type":"string","example":"ORDER-1001","description":"Optional merchant order id. If omitted, a deterministic reference is derived from the payment link and Idempotency-Key."},"buyerName":{"type":"string","example":"Axel Test"},"buyerEmail":{"type":"string","example":"buyer@example.com"},"buyerPhone":{"type":"string","example":"+52 555 000 0000"},"metadata":{"type":"object","example":{"source":"hosted-link"}}}},"HostedSandboxCardPaymentDto":{"type":"object","properties":{"attemptId":{"type":"string","example":"bd75a8dc-f3b7-4300-87db-32d29d9096b1"},"cardNumber":{"type":"string","example":"4242 4242 4242 4242"},"expiryMonth":{"type":"string","example":"12"},"expiryYear":{"type":"string","example":"2030"},"cvv":{"type":"string","example":"123"},"cardholderName":{"type":"string","example":"AXEL C TEST"},"payerEmail":{"type":"string","example":"payer@example.com"}},"required":["attemptId","cardNumber","expiryMonth","expiryYear","cvv","cardholderName"]},"DetectCryptoTransactionDto":{"type":"object","properties":{"invoiceId":{"type":"string","example":"invoice-public-id"},"amount":{"type":"string","example":"100.00"},"assetCode":{"type":"string","example":"USDT"},"networkCode":{"type":"string","example":"TRC20"},"currency":{"type":"string","example":"USDT"},"txid":{"type":"string","example":"trx-demo-001"},"address":{"type":"string","example":"TN3w..."},"memoTag":{"type":"string","example":"123456"},"initialPaymentStatus":{"type":"string","enum":["detected","pending_confirmation","confirmed","failed","reversed","ignored"],"default":"detected"},"confirmations":{"type":"number","example":0},"metadata":{"type":"object","additionalProperties":true}},"required":["amount","assetCode","networkCode","currency","txid"]},"ConfirmCryptoTransactionDto":{"type":"object","properties":{"networkCode":{"type":"string","example":"TRC20"},"txid":{"type":"string","example":"trx-demo-001"},"confirmations":{"type":"number","example":20}},"required":["networkCode","txid","confirmations"]},"SimulateCryptoPaymentDto":{"type":"object","properties":{"merchantId":{"type":"string","example":"merchant-public-id"},"invoiceId":{"type":"string","example":"invoice-public-id"},"amountReceived":{"type":"string","example":"100.00"},"assetCode":{"type":"string","example":"USDT"},"networkCode":{"type":"string","example":"TRC20"},"currency":{"type":"string","example":"USDT"},"txid":{"type":"string","example":"trx-abc-123"},"status":{"type":"string","enum":["detected","pending_confirmation","confirmed","failed","reversed","ignored"],"default":"pending_confirmation"},"address":{"type":"string","example":"TN3w..."},"memoTag":{"type":"string","example":"123456"},"externalReference":{"type":"string","example":"tx-external-7788"},"metadata":{"type":"object","additionalProperties":true}},"required":["merchantId","invoiceId","amountReceived","assetCode","networkCode","currency","txid"]},"PaymentChannel":{"type":"string","enum":["fiat","crypto"]},"SettlementStatus":{"type":"string","enum":["pending","processing","settled","failed","cancelled"]},"SettlementApprovalStatus":{"type":"string","enum":["not_required","pending","approved","rejected"]},"SettlementExecutionStatus":{"type":"string","enum":["planned","broadcasted","confirmed","failed","cancelled"]},"SettlementExecutionKind":{"type":"string","enum":["treasury_sweep","merchant_payout","manual_adjustment"]},"CreateSettlementBatchDto":{"type":"object","properties":{"merchantId":{"type":"string","example":"merchant-public-id"},"channel":{"allOf":[{"$ref":"#/components/schemas/PaymentChannel"}]},"currency":{"type":"string","example":"USDT"},"assetCode":{"type":"string","example":"USDT"},"networkCode":{"type":"string","example":"TRC20"},"paymentIds":{"example":["payment-public-id-1","payment-public-id-2"],"type":"array","items":{"type":"string"}},"externalReference":{"type":"string","example":"settlement-2026-04-14"},"metadata":{"type":"object","example":{"walletSweepId":"sweep_001","destination":"treasury_hot_1"}}}},"CreateSettlementExecutionDto":{"type":"object","properties":{"kind":{"allOf":[{"$ref":"#/components/schemas/SettlementExecutionKind"}]},"amount":{"type":"string","example":"99.50"},"sourceWalletId":{"type":"string","example":"wallet-public-id"},"destinationWalletId":{"type":"string","example":"destination-wallet-public-id"},"destinationAddress":{"type":"string","example":"TN3w9TreasuryWalletDestination0003"},"destinationMemoTag":{"type":"string","example":"memo-001"},"destinationAccountRef":{"type":"string","example":"CLABE:646180157000000001"},"providerCode":{"type":"string","example":"sandbox_payout"},"externalReference":{"type":"string","example":"sweep-2026-04-15-001"},"metadata":{"type":"object","example":{"destinationLabel":"treasury hot wallet","requestedBy":"ops"}}},"required":["kind"]},"TransitionSettlementBatchStatusDto":{"type":"object","properties":{"status":{"examples":["processing","settled"],"allOf":[{"$ref":"#/components/schemas/SettlementStatus"}]},"externalReference":{"type":"string","example":"sweep_tx_001"},"metadata":{"type":"object","example":{"note":"settled to treasury wallet","approvedBy":"ops-admin"}}},"required":["status"]},"TransitionSettlementExecutionStatusDto":{"type":"object","properties":{"status":{"allOf":[{"$ref":"#/components/schemas/SettlementExecutionStatus"}]},"txid":{"type":"string","example":"0xsettlementsweeptx001"},"externalReference":{"type":"string","example":"broadcast-001"},"metadata":{"type":"object","example":{"explorerUrl":"https://...","note":"confirmed on treasury sweep"}}},"required":["status"]},"DecideSettlementApprovalDto":{"type":"object","properties":{"decision":{"type":"string","enum":["approved","rejected"]},"note":{"type":"string","example":"Reviewed treasury balance and recipient ownership."}},"required":["decision"]},"SettlementApprovalSubjectType":{"type":"string","enum":["batch","execution"]},"AdminUserRole":{"type":"string","enum":["super_admin","ops_admin","analyst"]},"CreateSettlementApprovalPolicyDto":{"type":"object","properties":{"merchantId":{"type":"string","example":"merchant-public-id"},"name":{"type":"string","example":"High value merchant payout approvals"},"subjectType":{"allOf":[{"$ref":"#/components/schemas/SettlementApprovalSubjectType"}]},"channel":{"allOf":[{"$ref":"#/components/schemas/PaymentChannel"}]},"currency":{"type":"string","example":"USDT"},"assetCode":{"type":"string","example":"USDT"},"networkCode":{"type":"string","example":"TRC20"},"amountThreshold":{"type":"string","example":"5000.00"},"requiredRole":{"allOf":[{"$ref":"#/components/schemas/AdminUserRole"}]},"isActive":{"type":"boolean","example":true},"metadata":{"type":"object","example":{"reason":"high_value_control"}}},"required":["name","subjectType","channel","currency","amountThreshold","requiredRole"]},"UpdateSettlementApprovalPolicyStatusDto":{"type":"object","properties":{"isActive":{"type":"boolean","example":false}},"required":["isActive"]},"SettlementDestinationType":{"type":"string","enum":["crypto_wallet","crypto_address","fiat_account_ref"]},"CreateSettlementDestinationDto":{"type":"object","properties":{"merchantId":{"type":"string","example":"merchant-public-id"},"label":{"type":"string","example":"Primary USDT treasury destination"},"channel":{"allOf":[{"$ref":"#/components/schemas/PaymentChannel"}]},"type":{"allOf":[{"$ref":"#/components/schemas/SettlementDestinationType"}]},"currency":{"type":"string","example":"USDT"},"assetCode":{"type":"string","example":"USDT"},"networkCode":{"type":"string","example":"TRC20"},"walletId":{"type":"string","example":"wallet-public-id"},"address":{"type":"string","example":"TN3w9TreasuryWalletDestination0003"},"memoTag":{"type":"string","example":"memo-001"},"accountRef":{"type":"string","example":"CLABE:646180157000000001"},"providerCode":{"type":"string","example":"sandbox_payout"},"custodyType":{"type":"string","enum":["self_custody","exchange"],"example":"exchange"},"exchangeCode":{"type":"string","example":"BINANCE"},"addressTagLabel":{"type":"string","example":"MEMO"},"destinationNotes":{"type":"string","example":"Binance deposit address for treasury settlements"},"isDefault":{"type":"boolean","example":true},"metadata":{"type":"object","example":{"owner":"merchant_finance"}}},"required":["merchantId","label","channel","type","currency"]},"UpdateSettlementDestinationStatusDto":{"type":"object","properties":{"isActive":{"type":"boolean","example":true},"isDefault":{"type":"boolean","example":true}},"required":["isActive"]},"SettlementProfileMode":{"type":"string","enum":["manual","auto_batch","auto_execute"]},"CreateSettlementProfileDto":{"type":"object","properties":{"merchantId":{"type":"string","example":"merchant-public-id"},"destinationId":{"type":"string","example":"settlement-destination-public-id"},"sourceWalletId":{"type":"string","example":"source-wallet-public-id"},"channel":{"allOf":[{"$ref":"#/components/schemas/PaymentChannel"}]},"currency":{"type":"string","example":"USDT"},"assetCode":{"type":"string","example":"USDT"},"networkCode":{"type":"string","example":"TRC20"},"mode":{"allOf":[{"$ref":"#/components/schemas/SettlementProfileMode"}]},"executionKind":{"allOf":[{"$ref":"#/components/schemas/SettlementExecutionKind"}]},"minNetAmount":{"type":"string","example":"500.00"},"maxPaymentsPerBatch":{"type":"number","example":200,"minimum":1,"maximum":500},"cooldownMinutes":{"type":"number","example":60,"minimum":0,"maximum":10080},"metadata":{"type":"object","example":{"cadence":"daily_settlement"}}},"required":["merchantId","destinationId","channel","currency","mode"]},"UpdateSettlementProfileStatusDto":{"type":"object","properties":{"isActive":{"type":"boolean","example":true}},"required":["isActive"]},"RunSettlementAutomationDto":{"type":"object","properties":{"dryRun":{"type":"boolean","example":false},"force":{"type":"boolean","example":false},"limit":{"type":"number","example":25,"minimum":1,"maximum":200}}},"RunSettlementProcessorsDto":{"type":"object","properties":{"executionId":{"type":"string","example":"execution-public-id"},"providerCode":{"type":"string","example":"sandbox_payout"},"limit":{"type":"number","example":50,"minimum":1,"maximum":200}}},"CreateAdminUserDto":{"type":"object","properties":{"email":{"type":"string","example":"ops@zemiax.com"},"name":{"type":"string","example":"Ops Admin"},"role":{"allOf":[{"$ref":"#/components/schemas/AdminUserRole"}]},"metadata":{"type":"object","example":{"team":"operations"}}},"required":["email","name","role"]},"UpdateAdminUserStatusDto":{"type":"object","properties":{"isActive":{"type":"boolean","example":false}},"required":["isActive"]},"CreateAdminApiKeyDto":{"type":"object","properties":{"name":{"type":"string","example":"Ops Console Key"},"expiresAt":{"type":"string","example":"2026-12-31T23:59:59.000Z"}},"required":["name"]}}}}