From 45238a8a280ff5590bde825832e499fa221c5ac7 Mon Sep 17 00:00:00 2001 From: Paul Nicolas Date: Wed, 23 Aug 2023 16:13:34 +0200 Subject: [PATCH] payments: add transfer_initiations --- Dockerfile | 4 +- .../fctl/cmd/payments/{ => payments}/list.go | 0 components/fctl/cmd/payments/root.go | 8 +- .../cmd/payments/transferinitiation/create.go | 86 ++++ .../cmd/payments/transferinitiation/delete.go | 91 ++++ .../cmd/payments/transferinitiation/list.go | 112 +++++ .../cmd/payments/transferinitiation/show.go | 108 ++++ .../transferinitiation/update_status.go | 84 ++++ .../monopod-disabled-one-service.yaml | 4 +- .../payments-v0.10.0-pre-upgrade.yaml | 18 + .../results/services--v1/auth.yaml | 4 +- .../results/services--v1/control.yaml | 4 +- .../results/services--v1/gateway.yaml | 4 +- .../results/services--v1/payments.yaml | 4 +- .../results/services--v1/search-benthos.yaml | 4 +- .../results/services--v1/search.yaml | 4 +- .../results/services--v1/stargate.yaml | 4 +- .../results/services--v1/wallets.yaml | 4 +- .../results/services--v1/webhooks.yaml | 4 +- .../deployments-apps-v1/monopod-latest.yaml | 4 +- .../payments-v0.10.0-pre-upgrade.yaml | 18 + .../results/services--v1/auth.yaml | 4 +- .../results/services--v1/control.yaml | 4 +- .../results/services--v1/gateway.yaml | 4 +- .../results/services--v1/ledger.yaml | 4 +- .../results/services--v1/orchestration.yaml | 4 +- .../results/services--v1/payments.yaml | 4 +- .../results/services--v1/search-benthos.yaml | 4 +- .../results/services--v1/search.yaml | 4 +- .../results/services--v1/stargate.yaml | 4 +- .../results/services--v1/wallets.yaml | 4 +- .../results/services--v1/webhooks.yaml | 4 +- .../deployments-apps-v1/monopod-ledgerv1.yaml | 4 +- .../payments-v0.10.0-pre-upgrade.yaml | 18 + .../results/services--v1/auth.yaml | 4 +- .../results/services--v1/control.yaml | 4 +- .../results/services--v1/gateway.yaml | 4 +- .../results/services--v1/ledger.yaml | 4 +- .../results/services--v1/orchestration.yaml | 4 +- .../results/services--v1/payments.yaml | 4 +- .../results/services--v1/search-benthos.yaml | 4 +- .../results/services--v1/search.yaml | 4 +- .../results/services--v1/stargate.yaml | 4 +- .../results/services--v1/wallets.yaml | 4 +- .../results/services--v1/webhooks.yaml | 4 +- .../monopod-search-before-v0-7-0.yaml | 4 +- .../payments-v0.10.0-pre-upgrade.yaml | 18 + .../results/services--v1/auth.yaml | 4 +- .../results/services--v1/control.yaml | 4 +- .../results/services--v1/gateway.yaml | 4 +- .../results/services--v1/ledger.yaml | 4 +- .../results/services--v1/orchestration.yaml | 4 +- .../results/services--v1/payments.yaml | 4 +- .../results/services--v1/search-benthos.yaml | 4 +- .../results/services--v1/search.yaml | 4 +- .../results/services--v1/stargate.yaml | 4 +- .../results/services--v1/wallets.yaml | 4 +- .../results/services--v1/webhooks.yaml | 4 +- .../results/deployments-apps-v1/auth.yaml | 4 +- .../results/deployments-apps-v1/control.yaml | 4 +- .../results/deployments-apps-v1/gateway.yaml | 4 +- .../results/deployments-apps-v1/ledger.yaml | 4 +- .../orchestration-worker.yaml | 4 +- .../deployments-apps-v1/orchestration.yaml | 4 +- .../results/deployments-apps-v1/payments.yaml | 4 +- .../deployments-apps-v1/search-benthos.yaml | 4 +- .../results/deployments-apps-v1/search.yaml | 4 +- .../results/deployments-apps-v1/stargate.yaml | 4 +- .../results/deployments-apps-v1/wallets.yaml | 4 +- .../deployments-apps-v1/webhooks-worker.yaml | 4 +- .../results/deployments-apps-v1/webhooks.yaml | 4 +- .../payments-v0.10.0-pre-upgrade.yaml | 18 + .../results/services--v1/auth.yaml | 4 +- .../results/services--v1/control.yaml | 4 +- .../results/services--v1/gateway.yaml | 4 +- .../results/services--v1/ledger.yaml | 4 +- .../results/services--v1/orchestration.yaml | 4 +- .../results/services--v1/payments.yaml | 4 +- .../results/services--v1/search-benthos.yaml | 4 +- .../results/services--v1/search.yaml | 4 +- .../results/services--v1/stargate.yaml | 4 +- .../results/services--v1/wallets.yaml | 4 +- .../results/services--v1/webhooks.yaml | 4 +- .../results/deployments-apps-v1/auth.yaml | 4 +- .../results/deployments-apps-v1/control.yaml | 4 +- .../results/deployments-apps-v1/gateway.yaml | 4 +- .../results/deployments-apps-v1/ledger.yaml | 4 +- .../results/deployments-apps-v1/payments.yaml | 4 +- .../deployments-apps-v1/search-benthos.yaml | 4 +- .../results/deployments-apps-v1/search.yaml | 4 +- .../results/deployments-apps-v1/stargate.yaml | 4 +- .../results/deployments-apps-v1/wallets.yaml | 4 +- .../deployments-apps-v1/webhooks-worker.yaml | 4 +- .../results/deployments-apps-v1/webhooks.yaml | 4 +- .../payments-v0.10.0-pre-upgrade.yaml | 18 + .../results/services--v1/auth.yaml | 4 +- .../results/services--v1/control.yaml | 4 +- .../results/services--v1/gateway.yaml | 4 +- .../results/services--v1/ledger.yaml | 4 +- .../results/services--v1/payments.yaml | 4 +- .../results/services--v1/search-benthos.yaml | 4 +- .../results/services--v1/search.yaml | 4 +- .../results/services--v1/stargate.yaml | 4 +- .../results/services--v1/wallets.yaml | 4 +- .../results/services--v1/webhooks.yaml | 4 +- .../results/deployments-apps-v1/auth.yaml | 4 +- .../results/deployments-apps-v1/control.yaml | 4 +- .../results/deployments-apps-v1/gateway.yaml | 4 +- .../results/deployments-apps-v1/ledger.yaml | 4 +- .../orchestration-worker.yaml | 4 +- .../deployments-apps-v1/orchestration.yaml | 4 +- .../results/deployments-apps-v1/payments.yaml | 4 +- .../deployments-apps-v1/search-benthos.yaml | 4 +- .../results/deployments-apps-v1/search.yaml | 4 +- .../results/deployments-apps-v1/stargate.yaml | 4 +- .../results/deployments-apps-v1/wallets.yaml | 4 +- .../deployments-apps-v1/webhooks-worker.yaml | 4 +- .../results/deployments-apps-v1/webhooks.yaml | 4 +- .../payments-v0.10.0-pre-upgrade.yaml | 18 + .../results/services--v1/auth.yaml | 4 +- .../results/services--v1/control.yaml | 4 +- .../results/services--v1/gateway.yaml | 4 +- .../results/services--v1/ledger.yaml | 4 +- .../results/services--v1/orchestration.yaml | 4 +- .../results/services--v1/payments.yaml | 4 +- .../results/services--v1/search-benthos.yaml | 4 +- .../results/services--v1/search.yaml | 4 +- .../results/services--v1/stargate.yaml | 4 +- .../results/services--v1/wallets.yaml | 4 +- .../results/services--v1/webhooks.yaml | 4 +- .../results/deployments-apps-v1/auth.yaml | 4 +- .../results/deployments-apps-v1/control.yaml | 4 +- .../results/deployments-apps-v1/gateway.yaml | 4 +- .../results/deployments-apps-v1/ledger.yaml | 4 +- .../orchestration-worker.yaml | 4 +- .../deployments-apps-v1/orchestration.yaml | 4 +- .../results/deployments-apps-v1/payments.yaml | 4 +- .../deployments-apps-v1/search-benthos.yaml | 4 +- .../results/deployments-apps-v1/search.yaml | 4 +- .../results/deployments-apps-v1/stargate.yaml | 4 +- .../results/deployments-apps-v1/wallets.yaml | 4 +- .../deployments-apps-v1/webhooks-worker.yaml | 4 +- .../results/deployments-apps-v1/webhooks.yaml | 4 +- .../payments-v0.10.0-pre-upgrade.yaml | 18 + .../results/services--v1/auth.yaml | 4 +- .../results/services--v1/control.yaml | 4 +- .../results/services--v1/gateway.yaml | 4 +- .../results/services--v1/ledger.yaml | 4 +- .../results/services--v1/orchestration.yaml | 4 +- .../results/services--v1/payments.yaml | 4 +- .../results/services--v1/search-benthos.yaml | 4 +- .../results/services--v1/search.yaml | 4 +- .../results/services--v1/stargate.yaml | 4 +- .../results/services--v1/wallets.yaml | 4 +- .../results/services--v1/webhooks.yaml | 4 +- .../results/deployments-apps-v1/auth.yaml | 4 +- .../results/deployments-apps-v1/control.yaml | 4 +- .../results/deployments-apps-v1/gateway.yaml | 4 +- .../results/deployments-apps-v1/ledger.yaml | 4 +- .../orchestration-worker.yaml | 4 +- .../deployments-apps-v1/orchestration.yaml | 4 +- .../results/deployments-apps-v1/payments.yaml | 4 +- .../deployments-apps-v1/search-benthos.yaml | 4 +- .../results/deployments-apps-v1/search.yaml | 4 +- .../results/deployments-apps-v1/stargate.yaml | 4 +- .../results/deployments-apps-v1/wallets.yaml | 4 +- .../deployments-apps-v1/webhooks-worker.yaml | 4 +- .../results/deployments-apps-v1/webhooks.yaml | 4 +- .../payments-v0.10.0-pre-upgrade.yaml | 18 + .../results/services--v1/auth.yaml | 4 +- .../results/services--v1/control.yaml | 4 +- .../results/services--v1/gateway.yaml | 4 +- .../results/services--v1/ledger.yaml | 4 +- .../results/services--v1/orchestration.yaml | 4 +- .../results/services--v1/payments.yaml | 4 +- .../results/services--v1/search-benthos.yaml | 4 +- .../results/services--v1/search.yaml | 4 +- .../results/services--v1/stargate.yaml | 4 +- .../results/services--v1/wallets.yaml | 4 +- .../results/services--v1/webhooks.yaml | 4 +- .../internal/handlers/handler_payments.go | 9 + components/payments/Dockerfile | 2 +- .../payments/internal/app/api/connector.go | 151 ------ .../internal/app/api/connectormodule.go | 16 +- .../payments/internal/app/api/router.go | 25 +- .../internal/app/api/transfer_initiation.go | 465 ++++++++++++++++++ .../app/connectors/bankingcircle/connector.go | 5 +- .../app/connectors/currency/currency.go | 22 +- .../connectors/currencycloud/client/payout.go | 105 ++++ .../currencycloud/client/transfer.go | 106 ++++ .../app/connectors/currencycloud/connector.go | 5 +- .../app/connectors/dummypay/connector.go | 5 +- .../app/connectors/mangopay/client/payout.go | 111 +++++ .../connectors/mangopay/client/transfer.go | 110 +++++ .../app/connectors/mangopay/connector.go | 31 +- .../mangopay/task_fetch_bank_accounts.go | 5 +- .../connectors/mangopay/task_fetch_wallets.go | 5 +- .../app/connectors/mangopay/task_payments.go | 309 ++++++++++++ .../app/connectors/mangopay/task_resolve.go | 18 +- .../app/connectors/modulr/client/payout.go | 73 +++ .../app/connectors/modulr/client/transfer.go | 73 +++ .../app/connectors/modulr/connector.go | 5 +- .../connectors/moneycorp/client/balances.go | 1 - .../app/connectors/moneycorp/client/payout.go | 118 +++++ .../connectors/moneycorp/client/transfer.go | 117 +++++ .../app/connectors/moneycorp/connector.go | 5 +- .../moneycorp/task_fetch_balances.go | 7 +- .../moneycorp/task_fetch_transactions.go | 7 +- .../app/connectors/stripe/connector.go | 27 +- .../app/connectors/stripe/task_transfer.go | 76 ++- .../internal/app/connectors/wise/connector.go | 40 +- .../internal/app/ingestion/ingester.go | 11 +- .../app/ingestion/transfer_initiation.go | 15 + .../internal/app/ingestion/transfers.go | 18 - .../internal/app/integration/connector.go | 38 +- .../internal/app/integration/manager.go | 44 +- .../internal/app/integration/manager_test.go | 8 +- .../internal/app/integration/store.go | 4 - .../internal/app/integration/storememory.go | 9 - .../payments/internal/app/models/account.go | 9 + .../payments/internal/app/models/connector.go | 35 +- .../payments/internal/app/models/transfer.go | 45 -- .../app/models/transfer_initiation.go | 178 +++++++ .../payments/internal/app/storage/accounts.go | 1 + .../internal/app/storage/migrations.go | 47 ++ .../payments/internal/app/storage/payments.go | 5 - .../internal/app/storage/repository.go | 8 + .../payments/internal/app/storage/transfer.go | 140 ------ .../app/storage/transfer_initiation.go | 148 ++++++ components/payments/openapi.yaml | 225 +++++++++ libs/go-libs/contextutil/contextutil.go | 40 ++ openapi/build/generate.json | 339 ++++++++++++- sdks/go/README.md | 5 + sdks/go/docs/payments/README.md | 283 +++++++++-- sdks/go/docs/search/README.md | 11 +- sdks/go/docs/wallets/README.md | 91 ++-- sdks/go/docs/webhooks/README.md | 2 - sdks/go/files.gen | 10 + sdks/go/payments.go | 248 ++++++++++ .../operations/createtransferinitiation.go | 16 + .../operations/deletetransferinitiation.go | 18 + .../operations/gettransferinitiation.go | 21 + .../operations/listtransferinitiations.go | 30 ++ .../udpatetransferinitiationstatus.go | 20 + .../pkg/models/shared/transferinitiation.go | 91 ++++ .../shared/transferinitiationrequest.go | 50 ++ .../shared/transferinitiationresponse.go | 8 + .../shared/transferinitiationscursor.go | 16 + .../updatetransferinitiationstatusrequest.go | 51 ++ sdks/java/README.md | 5 + sdks/java/docs/payments/README.md | 287 +++++++++-- sdks/java/docs/search/README.md | 20 +- sdks/java/docs/wallets/README.md | 152 +++--- sdks/java/docs/webhooks/README.md | 17 +- sdks/java/files.gen | 19 + .../com/formance/formance_sdk/Payments.java | 202 ++++++++ .../CreateTransferInitiationResponse.java | 50 ++ .../DeleteTransferInitiationRequest.java | 25 + .../DeleteTransferInitiationResponse.java | 39 ++ .../GetTransferInitiationRequest.java | 25 + .../GetTransferInitiationResponse.java | 50 ++ .../ListTransferInitiationsRequest.java | 49 ++ .../ListTransferInitiationsResponse.java | 50 ++ ...UdpateTransferInitiationStatusRequest.java | 34 ++ ...dpateTransferInitiationStatusResponse.java | 39 ++ .../models/shared/TransferInitiation.java | 129 +++++ .../shared/TransferInitiationRequest.java | 109 ++++ .../shared/TransferInitiationRequestType.java | 19 + .../shared/TransferInitiationResponse.java | 24 + .../shared/TransferInitiationStatus.java | 23 + .../models/shared/TransferInitiationType.java | 19 + .../shared/TransferInitiationsCursor.java | 24 + .../TransferInitiationsCursorCursor.java | 59 +++ ...UpdateTransferInitiationStatusRequest.java | 21 + ...TransferInitiationStatusRequestStatus.java | 23 + sdks/php/README.md | 5 + sdks/php/docs/payments/README.md | 263 ++++++++-- sdks/php/docs/search/README.md | 11 +- sdks/php/docs/wallets/README.md | 108 ++-- sdks/php/docs/webhooks/README.md | 1 - sdks/php/files.gen | 19 + .../CreateTransferInitiationResponse.php | 38 ++ .../DeleteTransferInitiationRequest.php | 26 + .../DeleteTransferInitiationResponse.php | 29 ++ .../GetTransferInitiationRequest.php | 26 + .../GetTransferInitiationResponse.php | 38 ++ .../ListTransferInitiationsRequest.php | 51 ++ .../ListTransferInitiationsResponse.php | 38 ++ .../UdpateTransferInitiationStatusRequest.php | 30 ++ ...UdpateTransferInitiationStatusResponse.php | 29 ++ .../src/Models/Shared/TransferInitiation.php | 77 +++ .../Shared/TransferInitiationRequest.php | 67 +++ .../Shared/TransferInitiationRequestType.php | 16 + .../Shared/TransferInitiationResponse.php | 28 ++ .../Shared/TransferInitiationStatus.php | 20 + .../Models/Shared/TransferInitiationType.php | 16 + .../Shared/TransferInitiationsCursor.php | 28 ++ .../TransferInitiationsCursorCursor.php | 49 ++ .../UpdateTransferInitiationStatusRequest.php | 22 + ...eTransferInitiationStatusRequestStatus.php | 20 + sdks/php/src/Payments.php | 189 +++++++ sdks/python/README.md | 5 + sdks/python/docs/payments/README.md | 226 +++++++-- sdks/python/docs/search/README.md | 11 +- sdks/python/docs/wallets/README.md | 120 +++-- sdks/python/docs/webhooks/README.md | 3 - sdks/python/files.gen | 10 + .../src/sdk/models/operations/__init__.py | 7 +- .../operations/createtransferinitiation.py | 18 + .../operations/deletetransferinitiation.py | 22 + .../operations/gettransferinitiation.py | 25 + .../operations/listtransferinitiations.py | 33 ++ .../udpatetransferinitiationstatus.py | 24 + sdks/python/src/sdk/models/shared/__init__.py | 7 +- .../sdk/models/shared/transferinitiation.py | 42 ++ .../shared/transferinitiationrequest.py | 32 ++ .../shared/transferinitiationresponse.py | 16 + .../shared/transferinitiationscursor.py | 28 ++ .../updatetransferinitiationstatusrequest.py | 23 + sdks/python/src/sdk/payments.py | 129 +++++ sdks/typescript/README.md | 5 + sdks/typescript/docs/payments/README.md | 227 +++++++-- sdks/typescript/docs/search/README.md | 11 +- sdks/typescript/docs/wallets/README.md | 118 ++--- sdks/typescript/docs/webhooks/README.md | 3 - sdks/typescript/files.gen | 10 + .../operations/createtransferinitiation.ts | 24 + .../operations/deletetransferinitiation.ts | 27 + .../operations/gettransferinitiation.ts | 34 ++ .../src/sdk/models/operations/index.ts | 5 + .../operations/listtransferinitiations.ts | 57 +++ .../udpatetransferinitiationstatus.ts | 31 ++ .../typescript/src/sdk/models/shared/index.ts | 5 + .../sdk/models/shared/transferinitiation.ts | 73 +++ .../shared/transferinitiationrequest.ts | 55 +++ .../shared/transferinitiationresponse.ts | 17 + .../shared/transferinitiationscursor.ts | 40 ++ .../updatetransferinitiationstatusrequest.ts | 21 + sdks/typescript/src/sdk/payments.ts | 326 ++++++++++++ 339 files changed, 8910 insertions(+), 1416 deletions(-) rename components/fctl/cmd/payments/{ => payments}/list.go (100%) create mode 100644 components/fctl/cmd/payments/transferinitiation/create.go create mode 100644 components/fctl/cmd/payments/transferinitiation/delete.go create mode 100644 components/fctl/cmd/payments/transferinitiation/list.go create mode 100644 components/fctl/cmd/payments/transferinitiation/show.go create mode 100644 components/fctl/cmd/payments/transferinitiation/update_status.go create mode 100644 components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/monopod-latest/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-debug/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-latest/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml create mode 100644 components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml create mode 100644 components/payments/internal/app/api/transfer_initiation.go create mode 100644 components/payments/internal/app/connectors/currencycloud/client/payout.go create mode 100644 components/payments/internal/app/connectors/currencycloud/client/transfer.go create mode 100644 components/payments/internal/app/connectors/mangopay/client/payout.go create mode 100644 components/payments/internal/app/connectors/mangopay/client/transfer.go create mode 100644 components/payments/internal/app/connectors/mangopay/task_payments.go create mode 100644 components/payments/internal/app/connectors/modulr/client/payout.go create mode 100644 components/payments/internal/app/connectors/modulr/client/transfer.go create mode 100644 components/payments/internal/app/connectors/moneycorp/client/payout.go create mode 100644 components/payments/internal/app/connectors/moneycorp/client/transfer.go create mode 100644 components/payments/internal/app/ingestion/transfer_initiation.go delete mode 100644 components/payments/internal/app/ingestion/transfers.go delete mode 100644 components/payments/internal/app/models/transfer.go create mode 100644 components/payments/internal/app/models/transfer_initiation.go delete mode 100644 components/payments/internal/app/storage/transfer.go create mode 100644 components/payments/internal/app/storage/transfer_initiation.go create mode 100644 libs/go-libs/contextutil/contextutil.go create mode 100755 sdks/go/pkg/models/operations/createtransferinitiation.go create mode 100755 sdks/go/pkg/models/operations/deletetransferinitiation.go create mode 100755 sdks/go/pkg/models/operations/gettransferinitiation.go create mode 100755 sdks/go/pkg/models/operations/listtransferinitiations.go create mode 100755 sdks/go/pkg/models/operations/udpatetransferinitiationstatus.go create mode 100755 sdks/go/pkg/models/shared/transferinitiation.go create mode 100755 sdks/go/pkg/models/shared/transferinitiationrequest.go create mode 100755 sdks/go/pkg/models/shared/transferinitiationresponse.go create mode 100755 sdks/go/pkg/models/shared/transferinitiationscursor.go create mode 100755 sdks/go/pkg/models/shared/updatetransferinitiationstatusrequest.go create mode 100755 sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/CreateTransferInitiationResponse.java create mode 100755 sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/DeleteTransferInitiationRequest.java create mode 100755 sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/DeleteTransferInitiationResponse.java create mode 100755 sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/GetTransferInitiationRequest.java create mode 100755 sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/GetTransferInitiationResponse.java create mode 100755 sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/ListTransferInitiationsRequest.java create mode 100755 sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/ListTransferInitiationsResponse.java create mode 100755 sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/UdpateTransferInitiationStatusRequest.java create mode 100755 sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/UdpateTransferInitiationStatusResponse.java create mode 100755 sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiation.java create mode 100755 sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationRequest.java create mode 100755 sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationRequestType.java create mode 100755 sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationResponse.java create mode 100755 sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationStatus.java create mode 100755 sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationType.java create mode 100755 sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationsCursor.java create mode 100755 sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationsCursorCursor.java create mode 100755 sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/UpdateTransferInitiationStatusRequest.java create mode 100755 sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/UpdateTransferInitiationStatusRequestStatus.java create mode 100755 sdks/php/src/Models/Operations/CreateTransferInitiationResponse.php create mode 100755 sdks/php/src/Models/Operations/DeleteTransferInitiationRequest.php create mode 100755 sdks/php/src/Models/Operations/DeleteTransferInitiationResponse.php create mode 100755 sdks/php/src/Models/Operations/GetTransferInitiationRequest.php create mode 100755 sdks/php/src/Models/Operations/GetTransferInitiationResponse.php create mode 100755 sdks/php/src/Models/Operations/ListTransferInitiationsRequest.php create mode 100755 sdks/php/src/Models/Operations/ListTransferInitiationsResponse.php create mode 100755 sdks/php/src/Models/Operations/UdpateTransferInitiationStatusRequest.php create mode 100755 sdks/php/src/Models/Operations/UdpateTransferInitiationStatusResponse.php create mode 100755 sdks/php/src/Models/Shared/TransferInitiation.php create mode 100755 sdks/php/src/Models/Shared/TransferInitiationRequest.php create mode 100755 sdks/php/src/Models/Shared/TransferInitiationRequestType.php create mode 100755 sdks/php/src/Models/Shared/TransferInitiationResponse.php create mode 100755 sdks/php/src/Models/Shared/TransferInitiationStatus.php create mode 100755 sdks/php/src/Models/Shared/TransferInitiationType.php create mode 100755 sdks/php/src/Models/Shared/TransferInitiationsCursor.php create mode 100755 sdks/php/src/Models/Shared/TransferInitiationsCursorCursor.php create mode 100755 sdks/php/src/Models/Shared/UpdateTransferInitiationStatusRequest.php create mode 100755 sdks/php/src/Models/Shared/UpdateTransferInitiationStatusRequestStatus.php create mode 100755 sdks/python/src/sdk/models/operations/createtransferinitiation.py create mode 100755 sdks/python/src/sdk/models/operations/deletetransferinitiation.py create mode 100755 sdks/python/src/sdk/models/operations/gettransferinitiation.py create mode 100755 sdks/python/src/sdk/models/operations/listtransferinitiations.py create mode 100755 sdks/python/src/sdk/models/operations/udpatetransferinitiationstatus.py create mode 100755 sdks/python/src/sdk/models/shared/transferinitiation.py create mode 100755 sdks/python/src/sdk/models/shared/transferinitiationrequest.py create mode 100755 sdks/python/src/sdk/models/shared/transferinitiationresponse.py create mode 100755 sdks/python/src/sdk/models/shared/transferinitiationscursor.py create mode 100755 sdks/python/src/sdk/models/shared/updatetransferinitiationstatusrequest.py create mode 100755 sdks/typescript/src/sdk/models/operations/createtransferinitiation.ts create mode 100755 sdks/typescript/src/sdk/models/operations/deletetransferinitiation.ts create mode 100755 sdks/typescript/src/sdk/models/operations/gettransferinitiation.ts create mode 100755 sdks/typescript/src/sdk/models/operations/listtransferinitiations.ts create mode 100755 sdks/typescript/src/sdk/models/operations/udpatetransferinitiationstatus.ts create mode 100755 sdks/typescript/src/sdk/models/shared/transferinitiation.ts create mode 100755 sdks/typescript/src/sdk/models/shared/transferinitiationrequest.ts create mode 100755 sdks/typescript/src/sdk/models/shared/transferinitiationresponse.ts create mode 100755 sdks/typescript/src/sdk/models/shared/transferinitiationscursor.ts create mode 100755 sdks/typescript/src/sdk/models/shared/updatetransferinitiationstatusrequest.ts diff --git a/Dockerfile b/Dockerfile index b75a4aad82..7032ee4db2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ # syntax=docker/dockerfile:1 FROM ghcr.io/formancehq/gateway:v0.1.7 as gateway FROM ghcr.io/formancehq/ledger:v1.10.3 as ledger -FROM ghcr.io/formancehq/payments:v0.9.7 as payments +FROM formancehq/payments:latest as payments FROM ghcr.io/formancehq/orchestration:v0.1.5 as orchestration FROM ghcr.io/formancehq/auth:v0.4.3 as auth FROM ghcr.io/formancehq/search:v0.7.0 as search @@ -27,7 +27,7 @@ COPY --from=orchestration /usr/bin/orchestration /usr/bin/orchestration COPY --from=dex /usr/local/bin/dex /usr/bin/dex COPY --from=auth /usr/bin/auth /usr/bin/auth COPY --from=ledger /usr/local/bin/numary /usr/bin/ledger -COPY --from=payments /usr/bin/payments /usr/bin/payments +COPY --from=payments /usr/local/bin/payments /usr/bin/payments COPY --from=search /usr/bin/search /usr/bin/search COPY --from=wallets /usr/bin/wallets /usr/bin/wallets COPY --from=webhooks /usr/bin/webhooks /usr/bin/webhooks diff --git a/components/fctl/cmd/payments/list.go b/components/fctl/cmd/payments/payments/list.go similarity index 100% rename from components/fctl/cmd/payments/list.go rename to components/fctl/cmd/payments/payments/list.go diff --git a/components/fctl/cmd/payments/root.go b/components/fctl/cmd/payments/root.go index be70ab00b1..9736d90779 100644 --- a/components/fctl/cmd/payments/root.go +++ b/components/fctl/cmd/payments/root.go @@ -2,6 +2,8 @@ package payments import ( "github.com/formancehq/fctl/cmd/payments/connectors" + "github.com/formancehq/fctl/cmd/payments/payments" + "github.com/formancehq/fctl/cmd/payments/transferinitiation" fctl "github.com/formancehq/fctl/pkg" "github.com/spf13/cobra" ) @@ -11,7 +13,11 @@ func NewCommand() *cobra.Command { fctl.WithShortDescription("Payments management"), fctl.WithChildCommands( connectors.NewConnectorsCommand(), - NewListPaymentsCommand(), + payments.NewListPaymentsCommand(), + transferinitiation.NewShowCommand(), + transferinitiation.NewListTransferInitiationCommand(), + transferinitiation.NewCreateCommand(), + transferinitiation.NewUpdateStatusCommand(), ), ) } diff --git a/components/fctl/cmd/payments/transferinitiation/create.go b/components/fctl/cmd/payments/transferinitiation/create.go new file mode 100644 index 0000000000..9199319a7a --- /dev/null +++ b/components/fctl/cmd/payments/transferinitiation/create.go @@ -0,0 +1,86 @@ +package transferinitiation + +import ( + "fmt" + + fctl "github.com/formancehq/fctl/pkg" + "github.com/formancehq/formance-sdk-go/pkg/models/shared" + "github.com/pkg/errors" + "github.com/pterm/pterm" + "github.com/spf13/cobra" + "gopkg.in/yaml.v3" +) + +type TransferInitiationCreateStore struct { + TransferInitiationId string `json:"transferInitiationId"` +} +type TransferInitiationCreateController struct { + store *TransferInitiationCreateStore +} + +var _ fctl.Controller[*TransferInitiationCreateStore] = (*TransferInitiationCreateController)(nil) + +func NewDefaultTransferInitiationCreateStore() *TransferInitiationCreateStore { + return &TransferInitiationCreateStore{} +} + +func NewTransferInitiationCreateController() *TransferInitiationCreateController { + return &TransferInitiationCreateController{ + store: NewDefaultTransferInitiationCreateStore(), + } +} + +func NewCreateCommand() *cobra.Command { + return fctl.NewCommand("create |-", + fctl.WithShortDescription("Create a transfer initiation"), + fctl.WithAliases("cr", "c"), + fctl.WithArgs(cobra.ExactArgs(1)), + fctl.WithController[*TransferInitiationCreateStore](NewTransferInitiationCreateController()), + ) +} + +func (c *TransferInitiationCreateController) GetStore() *TransferInitiationCreateStore { + return c.store +} + +func (c *TransferInitiationCreateController) Run(cmd *cobra.Command, args []string) (fctl.Renderable, error) { + + soc, err := fctl.GetStackOrganizationConfig(cmd) + if err != nil { + return nil, err + } + client, err := fctl.NewStackClient(cmd, soc.Config, soc.Stack) + if err != nil { + return nil, errors.Wrap(err, "creating stack client") + } + + script, err := fctl.ReadFile(cmd, soc.Stack, args[0]) + if err != nil { + return nil, err + } + + request := shared.TransferInitiationRequest{} + if err := yaml.Unmarshal([]byte(script), &request); err != nil { + return nil, err + } + + //nolint:gosimple + response, err := client.Payments.CreateTransferInitiation(cmd.Context(), request) + if err != nil { + return nil, err + } + + if response.StatusCode >= 300 { + return nil, fmt.Errorf("unexpected status code: %d", response.StatusCode) + } + + c.store.TransferInitiationId = response.TransferInitiationResponse.Data.ID + + return c, nil +} + +func (c *TransferInitiationCreateController) Render(cmd *cobra.Command, args []string) error { + pterm.Success.WithWriter(cmd.OutOrStdout()).Printfln("Transfer Initiation created with ID: %s", c.store.TransferInitiationId) + + return nil +} diff --git a/components/fctl/cmd/payments/transferinitiation/delete.go b/components/fctl/cmd/payments/transferinitiation/delete.go new file mode 100644 index 0000000000..e696c10b91 --- /dev/null +++ b/components/fctl/cmd/payments/transferinitiation/delete.go @@ -0,0 +1,91 @@ +package transferinitiation + +import ( + "fmt" + + fctl "github.com/formancehq/fctl/pkg" + "github.com/formancehq/formance-sdk-go/pkg/models/operations" + "github.com/pkg/errors" + "github.com/pterm/pterm" + "github.com/spf13/cobra" +) + +type TransferInitiationDeleteStore struct { + TransferID string `json:"transferId"` + Success bool `json:"success"` +} + +type TransferInitiationDeleteController struct { + store *TransferInitiationDeleteStore +} + +var _ fctl.Controller[*TransferInitiationDeleteStore] = (*TransferInitiationDeleteController)(nil) + +func NewDefaultTransferInitiationDeleteStore() *TransferInitiationDeleteStore { + return &TransferInitiationDeleteStore{} +} + +func NewTransferInitiationDeleteController() *TransferInitiationDeleteController { + return &TransferInitiationDeleteController{ + store: NewDefaultTransferInitiationDeleteStore(), + } +} +func NewDeleteCommand() *cobra.Command { + return fctl.NewCommand("delete ", + fctl.WithAliases("del", "d"), + fctl.WithShortDescription("Delete a transfer Initiation"), + fctl.WithArgs(cobra.ExactArgs(1)), + fctl.WithController[*TransferInitiationDeleteStore](NewTransferInitiationDeleteController()), + ) +} + +func (c *TransferInitiationDeleteController) GetStore() *TransferInitiationDeleteStore { + return c.store +} + +func (c *TransferInitiationDeleteController) Run(cmd *cobra.Command, args []string) (fctl.Renderable, error) { + cfg, err := fctl.GetConfig(cmd) + if err != nil { + return nil, errors.Wrap(err, "retrieving config") + } + + organizationID, err := fctl.ResolveOrganizationID(cmd, cfg) + if err != nil { + return nil, err + } + + stack, err := fctl.ResolveStack(cmd, cfg, organizationID) + if err != nil { + return nil, err + } + + client, err := fctl.NewStackClient(cmd, cfg, stack) + if err != nil { + return nil, errors.Wrap(err, "creating stack client") + } + + response, err := client.Payments.DeleteTransferInitiation( + cmd.Context(), + operations.DeleteTransferInitiationRequest{ + TransferID: args[0], + }, + ) + + if err != nil { + return nil, err + } + + if response.StatusCode >= 300 { + return nil, fmt.Errorf("unexpected status code: %d", response.StatusCode) + } + + c.store.TransferID = args[0] + c.store.Success = true + + return c, nil +} + +func (c *TransferInitiationDeleteController) Render(cmd *cobra.Command, args []string) error { + pterm.Success.WithShowLineNumber().Printfln("Transfer Initiation %s Deleted!", c.store.TransferID) + return nil +} diff --git a/components/fctl/cmd/payments/transferinitiation/list.go b/components/fctl/cmd/payments/transferinitiation/list.go new file mode 100644 index 0000000000..d5c860ba65 --- /dev/null +++ b/components/fctl/cmd/payments/transferinitiation/list.go @@ -0,0 +1,112 @@ +package transferinitiation + +import ( + "fmt" + "time" + + fctl "github.com/formancehq/fctl/pkg" + "github.com/formancehq/formance-sdk-go/pkg/models/operations" + "github.com/formancehq/formance-sdk-go/pkg/models/shared" + "github.com/pterm/pterm" + "github.com/spf13/cobra" +) + +type TransferInitiationListStore struct { + Cursor *shared.TransferInitiationsCursorCursor `json:"cursor"` +} + +type TransferInitiationListController struct { + store *TransferInitiationListStore +} + +var _ fctl.Controller[*TransferInitiationListStore] = (*TransferInitiationListController)(nil) + +func NewDefaultTransferInitiationListStore() *TransferInitiationListStore { + return &TransferInitiationListStore{ + Cursor: &shared.TransferInitiationsCursorCursor{}, + } +} + +func NewTransferInitiationListController() *TransferInitiationListController { + return &TransferInitiationListController{ + store: NewDefaultTransferInitiationListStore(), + } +} + +func (c *TransferInitiationListController) GetStore() *TransferInitiationListStore { + return c.store +} + +func (c *TransferInitiationListController) Run(cmd *cobra.Command, args []string) (fctl.Renderable, error) { + + cfg, err := fctl.GetConfig(cmd) + if err != nil { + return nil, err + } + + organizationID, err := fctl.ResolveOrganizationID(cmd, cfg) + if err != nil { + return nil, err + } + + stack, err := fctl.ResolveStack(cmd, cfg, organizationID) + if err != nil { + return nil, err + } + + client, err := fctl.NewStackClient(cmd, cfg, stack) + if err != nil { + return nil, err + } + + response, err := client.Payments.ListTransferInitiations( + cmd.Context(), + operations.ListTransferInitiationsRequest{}, + ) + if err != nil { + return nil, err + } + + if response.StatusCode >= 300 { + return nil, fmt.Errorf("unexpected status code: %d", response.StatusCode) + } + + c.store.Cursor = &response.TransferInitiationsCursor.Cursor + + return c, nil +} + +func (c *TransferInitiationListController) Render(cmd *cobra.Command, args []string) error { + tableData := fctl.Map(c.store.Cursor.Data, func(tf shared.TransferInitiation) []string { + return []string{ + tf.ID, + tf.CreatedAt.Format(time.RFC3339), + tf.UpdatedAt.Format(time.RFC3339), + tf.Description, + tf.SourceAccountID, + tf.DestinationAccountID, + string(tf.Provider), + string(tf.Type), + fmt.Sprint(tf.Amount), + tf.Asset, + string(tf.Status), + tf.Error, + } + }) + tableData = fctl.Prepend(tableData, []string{"ID", "CreatedAt", "UpdatedAt", "Description", "Source Account ID", + "Destination Account ID", "Provider", "Type", "Amount", "Asset", "Status", "Error"}) + return pterm.DefaultTable. + WithHasHeader(). + WithWriter(cmd.OutOrStdout()). + WithData(tableData). + Render() +} + +func NewListTransferInitiationCommand() *cobra.Command { + return fctl.NewCommand("list", + fctl.WithAliases("ls"), + fctl.WithArgs(cobra.ExactArgs(0)), + fctl.WithShortDescription("List transfer initiation"), + fctl.WithController[*TransferInitiationListStore](NewTransferInitiationListController()), + ) +} diff --git a/components/fctl/cmd/payments/transferinitiation/show.go b/components/fctl/cmd/payments/transferinitiation/show.go new file mode 100644 index 0000000000..316908b60f --- /dev/null +++ b/components/fctl/cmd/payments/transferinitiation/show.go @@ -0,0 +1,108 @@ +package transferinitiation + +import ( + "fmt" + "time" + + fctl "github.com/formancehq/fctl/pkg" + "github.com/formancehq/formance-sdk-go/pkg/models/operations" + "github.com/formancehq/formance-sdk-go/pkg/models/shared" + "github.com/pterm/pterm" + "github.com/spf13/cobra" +) + +type ShowStore struct { + TransferInitiation *shared.TransferInitiation `json:"transferInitiation"` +} +type ShowController struct { + store *ShowStore +} + +var _ fctl.Controller[*ShowStore] = (*ShowController)(nil) + +func NewDefaultShowStore() *ShowStore { + return &ShowStore{} +} + +func NewShowController() *ShowController { + return &ShowController{ + store: NewDefaultShowStore(), + } +} + +func NewShowCommand() *cobra.Command { + return fctl.NewCommand("get ", + fctl.WithShortDescription("Get transfer initiation"), + fctl.WithArgs(cobra.ExactArgs(1)), + fctl.WithAliases("sh", "s"), + fctl.WithController[*ShowStore](NewShowController()), + ) +} + +func (c *ShowController) GetStore() *ShowStore { + return c.store +} + +func (c *ShowController) Run(cmd *cobra.Command, args []string) (fctl.Renderable, error) { + + cfg, err := fctl.GetConfig(cmd) + if err != nil { + return nil, err + } + + organizationID, err := fctl.ResolveOrganizationID(cmd, cfg) + if err != nil { + return nil, err + } + + stack, err := fctl.ResolveStack(cmd, cfg, organizationID) + if err != nil { + return nil, err + } + + ledgerClient, err := fctl.NewStackClient(cmd, cfg, stack) + if err != nil { + return nil, err + } + + response, err := ledgerClient.Payments.GetTransferInitiation(cmd.Context(), operations.GetTransferInitiationRequest{ + TransferID: args[0], + }) + if err != nil { + return nil, err + } + + if response.StatusCode >= 300 { + return nil, fmt.Errorf("unexpected status code: %d", response.StatusCode) + } + + c.store.TransferInitiation = &response.TransferInitiationResponse.Data + + return c, nil +} + +func (c *ShowController) Render(cmd *cobra.Command, args []string) error { + fctl.Section.WithWriter(cmd.OutOrStdout()).Println("Information") + tableData := pterm.TableData{} + tableData = append(tableData, []string{pterm.LightCyan("ID"), c.store.TransferInitiation.ID}) + tableData = append(tableData, []string{pterm.LightCyan("CreatedAt"), c.store.TransferInitiation.CreatedAt.Format(time.RFC3339)}) + tableData = append(tableData, []string{pterm.LightCyan("UpdatedAt"), c.store.TransferInitiation.UpdatedAt.Format(time.RFC3339)}) + tableData = append(tableData, []string{pterm.LightCyan("Description"), c.store.TransferInitiation.Description}) + tableData = append(tableData, []string{pterm.LightCyan("SourceAccountID"), c.store.TransferInitiation.SourceAccountID}) + tableData = append(tableData, []string{pterm.LightCyan("DestinationAccountID"), c.store.TransferInitiation.DestinationAccountID}) + tableData = append(tableData, []string{pterm.LightCyan("Provider"), string(c.store.TransferInitiation.Provider)}) + tableData = append(tableData, []string{pterm.LightCyan("Type"), string(c.store.TransferInitiation.Type)}) + tableData = append(tableData, []string{pterm.LightCyan("Amount"), fmt.Sprint(c.store.TransferInitiation.Amount)}) + tableData = append(tableData, []string{pterm.LightCyan("Asset"), c.store.TransferInitiation.Asset}) + tableData = append(tableData, []string{pterm.LightCyan("Status"), string(c.store.TransferInitiation.Status)}) + tableData = append(tableData, []string{pterm.LightCyan("Error"), c.store.TransferInitiation.Error}) + + if err := pterm.DefaultTable. + WithWriter(cmd.OutOrStdout()). + WithData(tableData). + Render(); err != nil { + return err + } + + return nil +} diff --git a/components/fctl/cmd/payments/transferinitiation/update_status.go b/components/fctl/cmd/payments/transferinitiation/update_status.go new file mode 100644 index 0000000000..7bedfc783b --- /dev/null +++ b/components/fctl/cmd/payments/transferinitiation/update_status.go @@ -0,0 +1,84 @@ +package transferinitiation + +import ( + "fmt" + + fctl "github.com/formancehq/fctl/pkg" + "github.com/formancehq/formance-sdk-go/pkg/models/operations" + "github.com/formancehq/formance-sdk-go/pkg/models/shared" + "github.com/pkg/errors" + "github.com/pterm/pterm" + "github.com/spf13/cobra" +) + +type UpdateTransferInitiationStatusStore struct { + TransferID string `json:"transferId"` + Status string `json:"status"` + Success bool `json:"success"` +} +type UpdateTransferInitiationStatusController struct { + store *UpdateTransferInitiationStatusStore +} + +var _ fctl.Controller[*UpdateTransferInitiationStatusStore] = (*UpdateTransferInitiationStatusController)(nil) + +func NewDefaultUpdateTransferInitiationStatusStore() *UpdateTransferInitiationStatusStore { + return &UpdateTransferInitiationStatusStore{} +} + +func NewUpdateTransferInitiationStatusController() *UpdateTransferInitiationStatusController { + return &UpdateTransferInitiationStatusController{ + store: NewDefaultUpdateTransferInitiationStatusStore(), + } +} + +func NewUpdateStatusCommand() *cobra.Command { + return fctl.NewCommand("update_status ", + fctl.WithShortDescription("Update the status of a transfer initiation"), + fctl.WithAliases("cr", "c"), + fctl.WithArgs(cobra.ExactArgs(2)), + fctl.WithController[*UpdateTransferInitiationStatusStore](NewUpdateTransferInitiationStatusController()), + ) +} + +func (c *UpdateTransferInitiationStatusController) GetStore() *UpdateTransferInitiationStatusStore { + return c.store +} + +func (c *UpdateTransferInitiationStatusController) Run(cmd *cobra.Command, args []string) (fctl.Renderable, error) { + soc, err := fctl.GetStackOrganizationConfig(cmd) + if err != nil { + return nil, err + } + client, err := fctl.NewStackClient(cmd, soc.Config, soc.Stack) + if err != nil { + return nil, errors.Wrap(err, "creating stack client") + } + + //nolint:gosimple + response, err := client.Payments.UdpateTransferInitiationStatus(cmd.Context(), operations.UdpateTransferInitiationStatusRequest{ + UpdateTransferInitiationStatusRequest: shared.UpdateTransferInitiationStatusRequest{ + Status: shared.UpdateTransferInitiationStatusRequestStatus(args[1]), + }, + TransferID: args[0], + }) + if err != nil { + return nil, err + } + + if response.StatusCode >= 300 { + return nil, fmt.Errorf("unexpected status code: %d", response.StatusCode) + } + + c.store.TransferID = args[0] + c.store.Status = args[1] + c.store.Success = true + + return c, nil +} + +func (c *UpdateTransferInitiationStatusController) Render(cmd *cobra.Command, args []string) error { + pterm.Success.WithWriter(cmd.OutOrStdout()).Printfln("Update Transfer Initiation staus with ID: %s and status %s", c.store.TransferID, c.store.Status) + + return nil +} diff --git a/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/deployments-apps-v1/monopod-disabled-one-service.yaml b/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/deployments-apps-v1/monopod-disabled-one-service.yaml index 082176cee2..930d944a2e 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/deployments-apps-v1/monopod-disabled-one-service.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/deployments-apps-v1/monopod-disabled-one-service.yaml @@ -759,8 +759,8 @@ spec: name: search-benthos-templates status: conditions: - - lastTransitionTime: "2023-08-29T09:09:07Z" - lastUpdateTime: "2023-08-29T09:09:07Z" + - lastTransitionTime: "2023-08-31T13:06:10Z" + lastUpdateTime: "2023-08-31T13:06:10Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml b/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml new file mode 100644 index 0000000000..67a53f1e4a --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml @@ -0,0 +1,18 @@ +apiVersion: stack.formance.com/v1beta3 +kind: Migration +metadata: + annotations: + reloader.stakater.com/auto: "true" + generation: 1 + labels: + stack: "true" + name: payments-v0.10.0-pre-upgrade + namespace: monopod-disabled-one-service +spec: + configuration: monopod-disabled-one-service + module: payments + postUpgrade: false + targetedVersion: v0.10.0 + version: monopod-disabled-one-service +status: + terminated: true diff --git a/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/auth.yaml b/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/auth.yaml index 90a23f78fe..c9cec46ad3 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/auth.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/auth.yaml @@ -6,9 +6,9 @@ metadata: name: auth namespace: monopod-disabled-one-service spec: - clusterIP: 10.0.0.194 + clusterIP: 10.0.0.52 clusterIPs: - - 10.0.0.194 + - 10.0.0.52 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/control.yaml b/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/control.yaml index 75c952fb16..a72503f081 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/control.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/control.yaml @@ -6,9 +6,9 @@ metadata: name: control namespace: monopod-disabled-one-service spec: - clusterIP: 10.0.0.178 + clusterIP: 10.0.0.110 clusterIPs: - - 10.0.0.178 + - 10.0.0.110 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/gateway.yaml b/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/gateway.yaml index ac2dfe25a9..8682bfbe9d 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/gateway.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/gateway.yaml @@ -6,9 +6,9 @@ metadata: name: gateway namespace: monopod-disabled-one-service spec: - clusterIP: 10.0.0.252 + clusterIP: 10.0.0.76 clusterIPs: - - 10.0.0.252 + - 10.0.0.76 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/payments.yaml b/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/payments.yaml index a293c4c9fe..219719074c 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/payments.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/payments.yaml @@ -6,9 +6,9 @@ metadata: name: payments namespace: monopod-disabled-one-service spec: - clusterIP: 10.0.0.128 + clusterIP: 10.0.0.233 clusterIPs: - - 10.0.0.128 + - 10.0.0.233 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/search-benthos.yaml b/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/search-benthos.yaml index 7d4720090d..2032adac8f 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/search-benthos.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/search-benthos.yaml @@ -6,9 +6,9 @@ metadata: name: search-benthos namespace: monopod-disabled-one-service spec: - clusterIP: 10.0.0.61 + clusterIP: 10.0.0.150 clusterIPs: - - 10.0.0.61 + - 10.0.0.150 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/search.yaml b/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/search.yaml index 3adc42a61e..bbad993e52 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/search.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/search.yaml @@ -6,9 +6,9 @@ metadata: name: search namespace: monopod-disabled-one-service spec: - clusterIP: 10.0.0.181 + clusterIP: 10.0.0.217 clusterIPs: - - 10.0.0.181 + - 10.0.0.217 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/stargate.yaml b/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/stargate.yaml index 1f1bcdc653..98cde92e5b 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/stargate.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/stargate.yaml @@ -6,9 +6,9 @@ metadata: name: stargate namespace: monopod-disabled-one-service spec: - clusterIP: 10.0.0.200 + clusterIP: 10.0.0.164 clusterIPs: - - 10.0.0.200 + - 10.0.0.164 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/wallets.yaml b/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/wallets.yaml index 97f5d93208..b51a2ba8d4 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/wallets.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/wallets.yaml @@ -6,9 +6,9 @@ metadata: name: wallets namespace: monopod-disabled-one-service spec: - clusterIP: 10.0.0.118 + clusterIP: 10.0.0.108 clusterIPs: - - 10.0.0.118 + - 10.0.0.108 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/webhooks.yaml b/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/webhooks.yaml index ddf3c06da5..f2d51930df 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/webhooks.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-disabled-one-service/results/services--v1/webhooks.yaml @@ -6,9 +6,9 @@ metadata: name: webhooks namespace: monopod-disabled-one-service spec: - clusterIP: 10.0.0.179 + clusterIP: 10.0.0.64 clusterIPs: - - 10.0.0.179 + - 10.0.0.64 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-latest/results/deployments-apps-v1/monopod-latest.yaml b/components/operator/internal/controllers/stack/testdata/monopod-latest/results/deployments-apps-v1/monopod-latest.yaml index 7da51ecde0..9b86c134e1 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-latest/results/deployments-apps-v1/monopod-latest.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-latest/results/deployments-apps-v1/monopod-latest.yaml @@ -977,8 +977,8 @@ spec: name: search-benthos-templates status: conditions: - - lastTransitionTime: "2023-08-29T09:09:07Z" - lastUpdateTime: "2023-08-29T09:09:07Z" + - lastTransitionTime: "2023-08-31T13:06:11Z" + lastUpdateTime: "2023-08-31T13:06:11Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-latest/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml b/components/operator/internal/controllers/stack/testdata/monopod-latest/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml new file mode 100644 index 0000000000..ae7d0a6401 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/monopod-latest/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml @@ -0,0 +1,18 @@ +apiVersion: stack.formance.com/v1beta3 +kind: Migration +metadata: + annotations: + reloader.stakater.com/auto: "true" + generation: 1 + labels: + stack: "true" + name: payments-v0.10.0-pre-upgrade + namespace: monopod-latest +spec: + configuration: monopod-latest + module: payments + postUpgrade: false + targetedVersion: v0.10.0 + version: monopod-latest +status: + terminated: true diff --git a/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/auth.yaml b/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/auth.yaml index d75d4c6392..ebb52024ec 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/auth.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/auth.yaml @@ -6,9 +6,9 @@ metadata: name: auth namespace: monopod-latest spec: - clusterIP: 10.0.0.123 + clusterIP: 10.0.0.235 clusterIPs: - - 10.0.0.123 + - 10.0.0.235 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/control.yaml b/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/control.yaml index be5f28175b..7a0ba542e4 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/control.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/control.yaml @@ -6,9 +6,9 @@ metadata: name: control namespace: monopod-latest spec: - clusterIP: 10.0.0.143 + clusterIP: 10.0.0.230 clusterIPs: - - 10.0.0.143 + - 10.0.0.230 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/gateway.yaml b/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/gateway.yaml index f595ea35f5..c3b0dbff70 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/gateway.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/gateway.yaml @@ -6,9 +6,9 @@ metadata: name: gateway namespace: monopod-latest spec: - clusterIP: 10.0.0.158 + clusterIP: 10.0.0.135 clusterIPs: - - 10.0.0.158 + - 10.0.0.135 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/ledger.yaml b/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/ledger.yaml index 1dd8c4803e..8f676bcb7f 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/ledger.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/ledger.yaml @@ -6,9 +6,9 @@ metadata: name: ledger namespace: monopod-latest spec: - clusterIP: 10.0.0.115 + clusterIP: 10.0.0.60 clusterIPs: - - 10.0.0.115 + - 10.0.0.60 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/orchestration.yaml b/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/orchestration.yaml index 959280c956..3a471f8eec 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/orchestration.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/orchestration.yaml @@ -6,9 +6,9 @@ metadata: name: orchestration namespace: monopod-latest spec: - clusterIP: 10.0.0.77 + clusterIP: 10.0.0.129 clusterIPs: - - 10.0.0.77 + - 10.0.0.129 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/payments.yaml b/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/payments.yaml index 1516af429a..ad897cea1d 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/payments.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/payments.yaml @@ -6,9 +6,9 @@ metadata: name: payments namespace: monopod-latest spec: - clusterIP: 10.0.0.159 + clusterIP: 10.0.0.81 clusterIPs: - - 10.0.0.159 + - 10.0.0.81 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/search-benthos.yaml b/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/search-benthos.yaml index 9a2c083f14..a40bb9fd6b 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/search-benthos.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/search-benthos.yaml @@ -6,9 +6,9 @@ metadata: name: search-benthos namespace: monopod-latest spec: - clusterIP: 10.0.0.212 + clusterIP: 10.0.0.2 clusterIPs: - - 10.0.0.212 + - 10.0.0.2 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/search.yaml b/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/search.yaml index 98fbc5a045..2ea438be3c 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/search.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/search.yaml @@ -6,9 +6,9 @@ metadata: name: search namespace: monopod-latest spec: - clusterIP: 10.0.0.249 + clusterIP: 10.0.0.30 clusterIPs: - - 10.0.0.249 + - 10.0.0.30 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/stargate.yaml b/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/stargate.yaml index f17d309023..9e303481af 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/stargate.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/stargate.yaml @@ -6,9 +6,9 @@ metadata: name: stargate namespace: monopod-latest spec: - clusterIP: 10.0.0.253 + clusterIP: 10.0.0.37 clusterIPs: - - 10.0.0.253 + - 10.0.0.37 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/wallets.yaml b/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/wallets.yaml index 9a0ab5aa4b..78987bf95d 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/wallets.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/wallets.yaml @@ -6,9 +6,9 @@ metadata: name: wallets namespace: monopod-latest spec: - clusterIP: 10.0.0.254 + clusterIP: 10.0.0.82 clusterIPs: - - 10.0.0.254 + - 10.0.0.82 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/webhooks.yaml b/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/webhooks.yaml index 37d087d53b..19566a116c 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/webhooks.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-latest/results/services--v1/webhooks.yaml @@ -6,9 +6,9 @@ metadata: name: webhooks namespace: monopod-latest spec: - clusterIP: 10.0.0.210 + clusterIP: 10.0.0.161 clusterIPs: - - 10.0.0.210 + - 10.0.0.161 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/deployments-apps-v1/monopod-ledgerv1.yaml b/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/deployments-apps-v1/monopod-ledgerv1.yaml index b785b62a7d..145673d22f 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/deployments-apps-v1/monopod-ledgerv1.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/deployments-apps-v1/monopod-ledgerv1.yaml @@ -982,8 +982,8 @@ spec: name: search-benthos-templates status: conditions: - - lastTransitionTime: "2023-08-29T09:09:08Z" - lastUpdateTime: "2023-08-29T09:09:08Z" + - lastTransitionTime: "2023-08-31T13:06:11Z" + lastUpdateTime: "2023-08-31T13:06:11Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml b/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml new file mode 100644 index 0000000000..d4eb822222 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml @@ -0,0 +1,18 @@ +apiVersion: stack.formance.com/v1beta3 +kind: Migration +metadata: + annotations: + reloader.stakater.com/auto: "true" + generation: 1 + labels: + stack: "true" + name: payments-v0.10.0-pre-upgrade + namespace: monopod-ledgerv1 +spec: + configuration: monopod-ledgerv1 + module: payments + postUpgrade: false + targetedVersion: v0.10.0 + version: monopod-ledgerv1 +status: + terminated: true diff --git a/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/auth.yaml b/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/auth.yaml index 9f2b73349c..06d7061d75 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/auth.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/auth.yaml @@ -6,9 +6,9 @@ metadata: name: auth namespace: monopod-ledgerv1 spec: - clusterIP: 10.0.0.243 + clusterIP: 10.0.0.130 clusterIPs: - - 10.0.0.243 + - 10.0.0.130 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/control.yaml b/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/control.yaml index 4bcdf3547d..4dd732722e 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/control.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/control.yaml @@ -6,9 +6,9 @@ metadata: name: control namespace: monopod-ledgerv1 spec: - clusterIP: 10.0.0.228 + clusterIP: 10.0.0.144 clusterIPs: - - 10.0.0.228 + - 10.0.0.144 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/gateway.yaml b/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/gateway.yaml index 6621659172..25939121c9 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/gateway.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/gateway.yaml @@ -6,9 +6,9 @@ metadata: name: gateway namespace: monopod-ledgerv1 spec: - clusterIP: 10.0.0.117 + clusterIP: 10.0.0.94 clusterIPs: - - 10.0.0.117 + - 10.0.0.94 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/ledger.yaml b/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/ledger.yaml index 5ae3fd9692..0e80d0eac2 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/ledger.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/ledger.yaml @@ -6,9 +6,9 @@ metadata: name: ledger namespace: monopod-ledgerv1 spec: - clusterIP: 10.0.0.182 + clusterIP: 10.0.0.11 clusterIPs: - - 10.0.0.182 + - 10.0.0.11 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/orchestration.yaml b/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/orchestration.yaml index 651cceaa15..9198aaee0c 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/orchestration.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/orchestration.yaml @@ -6,9 +6,9 @@ metadata: name: orchestration namespace: monopod-ledgerv1 spec: - clusterIP: 10.0.0.188 + clusterIP: 10.0.0.3 clusterIPs: - - 10.0.0.188 + - 10.0.0.3 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/payments.yaml b/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/payments.yaml index d007859576..05f6693be6 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/payments.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/payments.yaml @@ -6,9 +6,9 @@ metadata: name: payments namespace: monopod-ledgerv1 spec: - clusterIP: 10.0.0.171 + clusterIP: 10.0.0.201 clusterIPs: - - 10.0.0.171 + - 10.0.0.201 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/search-benthos.yaml b/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/search-benthos.yaml index 5c416f3d55..2201d173ae 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/search-benthos.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/search-benthos.yaml @@ -6,9 +6,9 @@ metadata: name: search-benthos namespace: monopod-ledgerv1 spec: - clusterIP: 10.0.0.226 + clusterIP: 10.0.0.14 clusterIPs: - - 10.0.0.226 + - 10.0.0.14 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/search.yaml b/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/search.yaml index 5a5bed81ed..86ead2db3e 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/search.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/search.yaml @@ -6,9 +6,9 @@ metadata: name: search namespace: monopod-ledgerv1 spec: - clusterIP: 10.0.0.225 + clusterIP: 10.0.0.112 clusterIPs: - - 10.0.0.225 + - 10.0.0.112 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/stargate.yaml b/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/stargate.yaml index c3b4071442..031d6a2dc2 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/stargate.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/stargate.yaml @@ -6,9 +6,9 @@ metadata: name: stargate namespace: monopod-ledgerv1 spec: - clusterIP: 10.0.0.238 + clusterIP: 10.0.0.40 clusterIPs: - - 10.0.0.238 + - 10.0.0.40 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/wallets.yaml b/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/wallets.yaml index 22434f12f0..30be64b42f 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/wallets.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/wallets.yaml @@ -6,9 +6,9 @@ metadata: name: wallets namespace: monopod-ledgerv1 spec: - clusterIP: 10.0.0.100 + clusterIP: 10.0.0.147 clusterIPs: - - 10.0.0.100 + - 10.0.0.147 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/webhooks.yaml b/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/webhooks.yaml index cb9e53d2a3..8c14c06811 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/webhooks.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-ledgerv1/results/services--v1/webhooks.yaml @@ -6,9 +6,9 @@ metadata: name: webhooks namespace: monopod-ledgerv1 spec: - clusterIP: 10.0.0.247 + clusterIP: 10.0.0.96 clusterIPs: - - 10.0.0.247 + - 10.0.0.96 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/deployments-apps-v1/monopod-search-before-v0-7-0.yaml b/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/deployments-apps-v1/monopod-search-before-v0-7-0.yaml index 392d9fc7b6..ae41f868a4 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/deployments-apps-v1/monopod-search-before-v0-7-0.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/deployments-apps-v1/monopod-search-before-v0-7-0.yaml @@ -1016,8 +1016,8 @@ spec: name: search-benthos-templates status: conditions: - - lastTransitionTime: "2023-08-29T09:09:08Z" - lastUpdateTime: "2023-08-29T09:09:08Z" + - lastTransitionTime: "2023-08-31T13:06:12Z" + lastUpdateTime: "2023-08-31T13:06:12Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml b/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml new file mode 100644 index 0000000000..6acaf0f67e --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml @@ -0,0 +1,18 @@ +apiVersion: stack.formance.com/v1beta3 +kind: Migration +metadata: + annotations: + reloader.stakater.com/auto: "true" + generation: 1 + labels: + stack: "true" + name: payments-v0.10.0-pre-upgrade + namespace: monopod-search-before-v0-7-0 +spec: + configuration: monopod-search-before-v0-7-0 + module: payments + postUpgrade: false + targetedVersion: v0.10.0 + version: monopod-search-before-v0-7-0 +status: + terminated: true diff --git a/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/auth.yaml b/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/auth.yaml index 8aaa05ca44..c69655a824 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/auth.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/auth.yaml @@ -6,9 +6,9 @@ metadata: name: auth namespace: monopod-search-before-v0-7-0 spec: - clusterIP: 10.0.0.176 + clusterIP: 10.0.0.200 clusterIPs: - - 10.0.0.176 + - 10.0.0.200 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/control.yaml b/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/control.yaml index 0666fc9e15..09d210eba4 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/control.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/control.yaml @@ -6,9 +6,9 @@ metadata: name: control namespace: monopod-search-before-v0-7-0 spec: - clusterIP: 10.0.0.220 + clusterIP: 10.0.0.165 clusterIPs: - - 10.0.0.220 + - 10.0.0.165 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/gateway.yaml b/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/gateway.yaml index f054a658e6..49cb9c5056 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/gateway.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/gateway.yaml @@ -6,9 +6,9 @@ metadata: name: gateway namespace: monopod-search-before-v0-7-0 spec: - clusterIP: 10.0.0.244 + clusterIP: 10.0.0.186 clusterIPs: - - 10.0.0.244 + - 10.0.0.186 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/ledger.yaml b/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/ledger.yaml index b4c528b2ef..a6699cacd6 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/ledger.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/ledger.yaml @@ -6,9 +6,9 @@ metadata: name: ledger namespace: monopod-search-before-v0-7-0 spec: - clusterIP: 10.0.0.44 + clusterIP: 10.0.0.41 clusterIPs: - - 10.0.0.44 + - 10.0.0.41 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/orchestration.yaml b/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/orchestration.yaml index 24ea02b553..f0bf5077a1 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/orchestration.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/orchestration.yaml @@ -6,9 +6,9 @@ metadata: name: orchestration namespace: monopod-search-before-v0-7-0 spec: - clusterIP: 10.0.0.186 + clusterIP: 10.0.0.21 clusterIPs: - - 10.0.0.186 + - 10.0.0.21 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/payments.yaml b/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/payments.yaml index 6aef8a733d..e548701ff5 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/payments.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/payments.yaml @@ -6,9 +6,9 @@ metadata: name: payments namespace: monopod-search-before-v0-7-0 spec: - clusterIP: 10.0.0.198 + clusterIP: 10.0.0.47 clusterIPs: - - 10.0.0.198 + - 10.0.0.47 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/search-benthos.yaml b/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/search-benthos.yaml index 5df1ba4cc3..e58c72aca9 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/search-benthos.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/search-benthos.yaml @@ -6,9 +6,9 @@ metadata: name: search-benthos namespace: monopod-search-before-v0-7-0 spec: - clusterIP: 10.0.0.215 + clusterIP: 10.0.0.22 clusterIPs: - - 10.0.0.215 + - 10.0.0.22 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/search.yaml b/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/search.yaml index aa4e5d387b..3453b8f6e4 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/search.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/search.yaml @@ -6,9 +6,9 @@ metadata: name: search namespace: monopod-search-before-v0-7-0 spec: - clusterIP: 10.0.0.174 + clusterIP: 10.0.0.188 clusterIPs: - - 10.0.0.174 + - 10.0.0.188 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/stargate.yaml b/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/stargate.yaml index 8b0c2931ca..16f6d18620 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/stargate.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/stargate.yaml @@ -6,9 +6,9 @@ metadata: name: stargate namespace: monopod-search-before-v0-7-0 spec: - clusterIP: 10.0.0.183 + clusterIP: 10.0.0.197 clusterIPs: - - 10.0.0.183 + - 10.0.0.197 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/wallets.yaml b/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/wallets.yaml index d18127c3e9..ecc51bd890 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/wallets.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/wallets.yaml @@ -6,9 +6,9 @@ metadata: name: wallets namespace: monopod-search-before-v0-7-0 spec: - clusterIP: 10.0.0.169 + clusterIP: 10.0.0.95 clusterIPs: - - 10.0.0.169 + - 10.0.0.95 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/webhooks.yaml b/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/webhooks.yaml index afb2c221ad..74b30f52be 100644 --- a/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/webhooks.yaml +++ b/components/operator/internal/controllers/stack/testdata/monopod-search-before-v0.7.0/results/services--v1/webhooks.yaml @@ -6,9 +6,9 @@ metadata: name: webhooks namespace: monopod-search-before-v0-7-0 spec: - clusterIP: 10.0.0.51 + clusterIP: 10.0.0.124 clusterIPs: - - 10.0.0.51 + - 10.0.0.124 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/auth.yaml b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/auth.yaml index 9784bcc734..7bfe27538d 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/auth.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/auth.yaml @@ -128,8 +128,8 @@ spec: name: config status: conditions: - - lastTransitionTime: "2023-08-29T09:09:09Z" - lastUpdateTime: "2023-08-29T09:09:09Z" + - lastTransitionTime: "2023-08-31T13:06:12Z" + lastUpdateTime: "2023-08-31T13:06:12Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/control.yaml b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/control.yaml index 381beac178..b0c5c32e22 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/control.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/control.yaml @@ -91,8 +91,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:09Z" - lastUpdateTime: "2023-08-29T09:09:09Z" + - lastTransitionTime: "2023-08-31T13:06:12Z" + lastUpdateTime: "2023-08-31T13:06:12Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/gateway.yaml b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/gateway.yaml index fca26e2f1b..8831052484 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/gateway.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/gateway.yaml @@ -94,8 +94,8 @@ spec: name: config status: conditions: - - lastTransitionTime: "2023-08-29T09:09:09Z" - lastUpdateTime: "2023-08-29T09:09:09Z" + - lastTransitionTime: "2023-08-31T13:06:12Z" + lastUpdateTime: "2023-08-31T13:06:12Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/ledger.yaml b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/ledger.yaml index 50c50bc911..47035bb05e 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/ledger.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/ledger.yaml @@ -112,8 +112,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:09Z" - lastUpdateTime: "2023-08-29T09:09:09Z" + - lastTransitionTime: "2023-08-31T13:06:12Z" + lastUpdateTime: "2023-08-31T13:06:12Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/orchestration-worker.yaml b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/orchestration-worker.yaml index 09224e4250..1ff1a64288 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/orchestration-worker.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/orchestration-worker.yaml @@ -101,8 +101,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:09Z" - lastUpdateTime: "2023-08-29T09:09:09Z" + - lastTransitionTime: "2023-08-31T13:06:12Z" + lastUpdateTime: "2023-08-31T13:06:12Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/orchestration.yaml b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/orchestration.yaml index 571fa8fbd3..2068135db5 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/orchestration.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/orchestration.yaml @@ -113,8 +113,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:09Z" - lastUpdateTime: "2023-08-29T09:09:09Z" + - lastTransitionTime: "2023-08-31T13:06:12Z" + lastUpdateTime: "2023-08-31T13:06:12Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/payments.yaml b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/payments.yaml index d56e969f69..30ed26be0e 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/payments.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/payments.yaml @@ -114,8 +114,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:09Z" - lastUpdateTime: "2023-08-29T09:09:09Z" + - lastTransitionTime: "2023-08-31T13:06:12Z" + lastUpdateTime: "2023-08-31T13:06:12Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/search-benthos.yaml b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/search-benthos.yaml index 799b9f11fc..f1a7460356 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/search-benthos.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/search-benthos.yaml @@ -143,8 +143,8 @@ spec: name: templates status: conditions: - - lastTransitionTime: "2023-08-29T09:09:09Z" - lastUpdateTime: "2023-08-29T09:09:09Z" + - lastTransitionTime: "2023-08-31T13:06:12Z" + lastUpdateTime: "2023-08-31T13:06:12Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/search.yaml b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/search.yaml index 7072922021..d757e7386c 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/search.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/search.yaml @@ -108,8 +108,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:09Z" - lastUpdateTime: "2023-08-29T09:09:09Z" + - lastTransitionTime: "2023-08-31T13:06:12Z" + lastUpdateTime: "2023-08-31T13:06:12Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/stargate.yaml b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/stargate.yaml index fbe2a71890..24ff6cc437 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/stargate.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/stargate.yaml @@ -99,8 +99,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:09Z" - lastUpdateTime: "2023-08-29T09:09:09Z" + - lastTransitionTime: "2023-08-31T13:06:12Z" + lastUpdateTime: "2023-08-31T13:06:12Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/wallets.yaml b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/wallets.yaml index a2c3acfb8d..33a7cd31d5 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/wallets.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/wallets.yaml @@ -95,8 +95,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:09Z" - lastUpdateTime: "2023-08-29T09:09:09Z" + - lastTransitionTime: "2023-08-31T13:06:12Z" + lastUpdateTime: "2023-08-31T13:06:12Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/webhooks-worker.yaml b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/webhooks-worker.yaml index 795dd54f64..abb51fed1e 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/webhooks-worker.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/webhooks-worker.yaml @@ -101,8 +101,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:09Z" - lastUpdateTime: "2023-08-29T09:09:09Z" + - lastTransitionTime: "2023-08-31T13:06:12Z" + lastUpdateTime: "2023-08-31T13:06:12Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/webhooks.yaml b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/webhooks.yaml index f19dc464cc..03d853ed9e 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/webhooks.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/deployments-apps-v1/webhooks.yaml @@ -111,8 +111,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:09Z" - lastUpdateTime: "2023-08-29T09:09:09Z" + - lastTransitionTime: "2023-08-31T13:06:12Z" + lastUpdateTime: "2023-08-31T13:06:12Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml new file mode 100644 index 0000000000..e4e4af7ed2 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml @@ -0,0 +1,18 @@ +apiVersion: stack.formance.com/v1beta3 +kind: Migration +metadata: + annotations: + reloader.stakater.com/auto: "true" + generation: 1 + labels: + stack: "true" + name: payments-v0.10.0-pre-upgrade + namespace: multipod-debug +spec: + configuration: multipod-debug + module: payments + postUpgrade: false + targetedVersion: v0.10.0 + version: multipod-debug +status: + terminated: true diff --git a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/auth.yaml b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/auth.yaml index a9befe62ee..c359050906 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/auth.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/auth.yaml @@ -6,9 +6,9 @@ metadata: name: auth namespace: multipod-debug spec: - clusterIP: 10.0.0.129 + clusterIP: 10.0.0.123 clusterIPs: - - 10.0.0.129 + - 10.0.0.123 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/control.yaml b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/control.yaml index 2948c4075a..0254256532 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/control.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/control.yaml @@ -6,9 +6,9 @@ metadata: name: control namespace: multipod-debug spec: - clusterIP: 10.0.0.130 + clusterIP: 10.0.0.176 clusterIPs: - - 10.0.0.130 + - 10.0.0.176 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/gateway.yaml b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/gateway.yaml index e1efc7f3e6..529c9402bb 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/gateway.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/gateway.yaml @@ -6,9 +6,9 @@ metadata: name: gateway namespace: multipod-debug spec: - clusterIP: 10.0.0.193 + clusterIP: 10.0.0.77 clusterIPs: - - 10.0.0.193 + - 10.0.0.77 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/ledger.yaml b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/ledger.yaml index dee18f4cae..2237eb42e2 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/ledger.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/ledger.yaml @@ -6,9 +6,9 @@ metadata: name: ledger namespace: multipod-debug spec: - clusterIP: 10.0.0.97 + clusterIP: 10.0.0.15 clusterIPs: - - 10.0.0.97 + - 10.0.0.15 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/orchestration.yaml b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/orchestration.yaml index 18f751f83e..0b79352ae8 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/orchestration.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/orchestration.yaml @@ -6,9 +6,9 @@ metadata: name: orchestration namespace: multipod-debug spec: - clusterIP: 10.0.0.2 + clusterIP: 10.0.0.222 clusterIPs: - - 10.0.0.2 + - 10.0.0.222 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/payments.yaml b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/payments.yaml index 0c0454fa9b..3304a926a6 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/payments.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/payments.yaml @@ -6,9 +6,9 @@ metadata: name: payments namespace: multipod-debug spec: - clusterIP: 10.0.0.213 + clusterIP: 10.0.0.8 clusterIPs: - - 10.0.0.213 + - 10.0.0.8 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/search-benthos.yaml b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/search-benthos.yaml index c3b574df4a..38d4b75b40 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/search-benthos.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/search-benthos.yaml @@ -6,9 +6,9 @@ metadata: name: search-benthos namespace: multipod-debug spec: - clusterIP: 10.0.0.3 + clusterIP: 10.0.0.121 clusterIPs: - - 10.0.0.3 + - 10.0.0.121 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/search.yaml b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/search.yaml index eb7c32ef1e..b1623bdb06 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/search.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/search.yaml @@ -6,9 +6,9 @@ metadata: name: search namespace: multipod-debug spec: - clusterIP: 10.0.0.66 + clusterIP: 10.0.0.42 clusterIPs: - - 10.0.0.66 + - 10.0.0.42 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/stargate.yaml b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/stargate.yaml index afd75b88a6..a2cf5456e9 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/stargate.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/stargate.yaml @@ -6,9 +6,9 @@ metadata: name: stargate namespace: multipod-debug spec: - clusterIP: 10.0.0.206 + clusterIP: 10.0.0.56 clusterIPs: - - 10.0.0.206 + - 10.0.0.56 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/wallets.yaml b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/wallets.yaml index bd76362d67..06a4044d14 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/wallets.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/wallets.yaml @@ -6,9 +6,9 @@ metadata: name: wallets namespace: multipod-debug spec: - clusterIP: 10.0.0.45 + clusterIP: 10.0.0.23 clusterIPs: - - 10.0.0.45 + - 10.0.0.23 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/webhooks.yaml b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/webhooks.yaml index 056535aaf0..968f9f4996 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/webhooks.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-debug/results/services--v1/webhooks.yaml @@ -6,9 +6,9 @@ metadata: name: webhooks namespace: multipod-debug spec: - clusterIP: 10.0.0.90 + clusterIP: 10.0.0.4 clusterIPs: - - 10.0.0.90 + - 10.0.0.4 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/auth.yaml b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/auth.yaml index 2f161be40b..024db5fee4 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/auth.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/auth.yaml @@ -126,8 +126,8 @@ spec: name: config status: conditions: - - lastTransitionTime: "2023-08-29T09:09:10Z" - lastUpdateTime: "2023-08-29T09:09:10Z" + - lastTransitionTime: "2023-08-31T13:06:13Z" + lastUpdateTime: "2023-08-31T13:06:13Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/control.yaml b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/control.yaml index 9119008fd1..c1180451be 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/control.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/control.yaml @@ -91,8 +91,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:10Z" - lastUpdateTime: "2023-08-29T09:09:10Z" + - lastTransitionTime: "2023-08-31T13:06:13Z" + lastUpdateTime: "2023-08-31T13:06:13Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/gateway.yaml b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/gateway.yaml index 9a7abac2c5..99d036f07c 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/gateway.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/gateway.yaml @@ -94,8 +94,8 @@ spec: name: config status: conditions: - - lastTransitionTime: "2023-08-29T09:09:10Z" - lastUpdateTime: "2023-08-29T09:09:10Z" + - lastTransitionTime: "2023-08-31T13:06:13Z" + lastUpdateTime: "2023-08-31T13:06:13Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/ledger.yaml b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/ledger.yaml index 97a66ee002..1959a6b674 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/ledger.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/ledger.yaml @@ -112,8 +112,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:10Z" - lastUpdateTime: "2023-08-29T09:09:10Z" + - lastTransitionTime: "2023-08-31T13:06:13Z" + lastUpdateTime: "2023-08-31T13:06:13Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/payments.yaml b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/payments.yaml index cddd3ec11f..c9ad0dba0f 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/payments.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/payments.yaml @@ -114,8 +114,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:10Z" - lastUpdateTime: "2023-08-29T09:09:10Z" + - lastTransitionTime: "2023-08-31T13:06:13Z" + lastUpdateTime: "2023-08-31T13:06:13Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/search-benthos.yaml b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/search-benthos.yaml index eee0bf40a3..28f361b5da 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/search-benthos.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/search-benthos.yaml @@ -143,8 +143,8 @@ spec: name: templates status: conditions: - - lastTransitionTime: "2023-08-29T09:09:10Z" - lastUpdateTime: "2023-08-29T09:09:10Z" + - lastTransitionTime: "2023-08-31T13:06:13Z" + lastUpdateTime: "2023-08-31T13:06:13Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/search.yaml b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/search.yaml index 8c01b55251..7981c64864 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/search.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/search.yaml @@ -108,8 +108,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:10Z" - lastUpdateTime: "2023-08-29T09:09:10Z" + - lastTransitionTime: "2023-08-31T13:06:13Z" + lastUpdateTime: "2023-08-31T13:06:13Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/stargate.yaml b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/stargate.yaml index 108744348a..33e4dd1dd1 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/stargate.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/stargate.yaml @@ -99,8 +99,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:10Z" - lastUpdateTime: "2023-08-29T09:09:10Z" + - lastTransitionTime: "2023-08-31T13:06:13Z" + lastUpdateTime: "2023-08-31T13:06:13Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/wallets.yaml b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/wallets.yaml index 54169ce12a..60e3e94676 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/wallets.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/wallets.yaml @@ -95,8 +95,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:10Z" - lastUpdateTime: "2023-08-29T09:09:10Z" + - lastTransitionTime: "2023-08-31T13:06:13Z" + lastUpdateTime: "2023-08-31T13:06:13Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/webhooks-worker.yaml b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/webhooks-worker.yaml index 88878dbdf2..bac7655e9f 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/webhooks-worker.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/webhooks-worker.yaml @@ -101,8 +101,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:10Z" - lastUpdateTime: "2023-08-29T09:09:10Z" + - lastTransitionTime: "2023-08-31T13:06:13Z" + lastUpdateTime: "2023-08-31T13:06:13Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/webhooks.yaml b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/webhooks.yaml index c814e6936f..da9cc49fad 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/webhooks.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/deployments-apps-v1/webhooks.yaml @@ -111,8 +111,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:10Z" - lastUpdateTime: "2023-08-29T09:09:10Z" + - lastTransitionTime: "2023-08-31T13:06:13Z" + lastUpdateTime: "2023-08-31T13:06:13Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml new file mode 100644 index 0000000000..3e0dde8a2f --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml @@ -0,0 +1,18 @@ +apiVersion: stack.formance.com/v1beta3 +kind: Migration +metadata: + annotations: + reloader.stakater.com/auto: "true" + generation: 1 + labels: + stack: "true" + name: payments-v0.10.0-pre-upgrade + namespace: multipod-disabled-one-service +spec: + configuration: multipod-disabled-one-service + module: payments + postUpgrade: false + targetedVersion: v0.10.0 + version: multipod-disabled-one-service +status: + terminated: true diff --git a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/auth.yaml b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/auth.yaml index 1c19f368ac..7eeccd14f1 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/auth.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/auth.yaml @@ -6,9 +6,9 @@ metadata: name: auth namespace: multipod-disabled-one-service spec: - clusterIP: 10.0.0.55 + clusterIP: 10.0.0.181 clusterIPs: - - 10.0.0.55 + - 10.0.0.181 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/control.yaml b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/control.yaml index 882f7c74af..cc24d04b13 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/control.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/control.yaml @@ -6,9 +6,9 @@ metadata: name: control namespace: multipod-disabled-one-service spec: - clusterIP: 10.0.0.138 + clusterIP: 10.0.0.116 clusterIPs: - - 10.0.0.138 + - 10.0.0.116 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/gateway.yaml b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/gateway.yaml index b3eddcf08c..fc447ceb40 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/gateway.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/gateway.yaml @@ -6,9 +6,9 @@ metadata: name: gateway namespace: multipod-disabled-one-service spec: - clusterIP: 10.0.0.175 + clusterIP: 10.0.0.101 clusterIPs: - - 10.0.0.175 + - 10.0.0.101 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/ledger.yaml b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/ledger.yaml index 2204db41be..e7dfa387e8 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/ledger.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/ledger.yaml @@ -6,9 +6,9 @@ metadata: name: ledger namespace: multipod-disabled-one-service spec: - clusterIP: 10.0.0.195 + clusterIP: 10.0.0.20 clusterIPs: - - 10.0.0.195 + - 10.0.0.20 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/payments.yaml b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/payments.yaml index 6dd53db143..4defbed33f 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/payments.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/payments.yaml @@ -6,9 +6,9 @@ metadata: name: payments namespace: multipod-disabled-one-service spec: - clusterIP: 10.0.0.56 + clusterIP: 10.0.0.26 clusterIPs: - - 10.0.0.56 + - 10.0.0.26 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/search-benthos.yaml b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/search-benthos.yaml index 7934d9c711..690f1b084c 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/search-benthos.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/search-benthos.yaml @@ -6,9 +6,9 @@ metadata: name: search-benthos namespace: multipod-disabled-one-service spec: - clusterIP: 10.0.0.219 + clusterIP: 10.0.0.140 clusterIPs: - - 10.0.0.219 + - 10.0.0.140 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/search.yaml b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/search.yaml index 0e46f513b0..ae26fead77 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/search.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/search.yaml @@ -6,9 +6,9 @@ metadata: name: search namespace: multipod-disabled-one-service spec: - clusterIP: 10.0.0.136 + clusterIP: 10.0.0.61 clusterIPs: - - 10.0.0.136 + - 10.0.0.61 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/stargate.yaml b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/stargate.yaml index e7e2199fe3..788b290eb1 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/stargate.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/stargate.yaml @@ -6,9 +6,9 @@ metadata: name: stargate namespace: multipod-disabled-one-service spec: - clusterIP: 10.0.0.245 + clusterIP: 10.0.0.5 clusterIPs: - - 10.0.0.245 + - 10.0.0.5 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/wallets.yaml b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/wallets.yaml index 3577c9db64..946ae047a9 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/wallets.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/wallets.yaml @@ -6,9 +6,9 @@ metadata: name: wallets namespace: multipod-disabled-one-service spec: - clusterIP: 10.0.0.71 + clusterIP: 10.0.0.156 clusterIPs: - - 10.0.0.71 + - 10.0.0.156 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/webhooks.yaml b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/webhooks.yaml index a9fddcef3a..78027d2355 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/webhooks.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-disabled-one-service/results/services--v1/webhooks.yaml @@ -6,9 +6,9 @@ metadata: name: webhooks namespace: multipod-disabled-one-service spec: - clusterIP: 10.0.0.82 + clusterIP: 10.0.0.9 clusterIPs: - - 10.0.0.82 + - 10.0.0.9 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/auth.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/auth.yaml index 1b5a9ef9d1..c059439dec 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/auth.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/auth.yaml @@ -109,8 +109,8 @@ spec: name: config status: conditions: - - lastTransitionTime: "2023-08-29T09:09:11Z" - lastUpdateTime: "2023-08-29T09:09:11Z" + - lastTransitionTime: "2023-08-31T13:06:14Z" + lastUpdateTime: "2023-08-31T13:06:14Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/control.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/control.yaml index e4ab26d974..40f28803f9 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/control.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/control.yaml @@ -74,8 +74,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:11Z" - lastUpdateTime: "2023-08-29T09:09:11Z" + - lastTransitionTime: "2023-08-31T13:06:14Z" + lastUpdateTime: "2023-08-31T13:06:14Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/gateway.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/gateway.yaml index 012a8c9ca1..c4fc106d51 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/gateway.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/gateway.yaml @@ -77,8 +77,8 @@ spec: name: config status: conditions: - - lastTransitionTime: "2023-08-29T09:09:11Z" - lastUpdateTime: "2023-08-29T09:09:11Z" + - lastTransitionTime: "2023-08-31T13:06:14Z" + lastUpdateTime: "2023-08-31T13:06:14Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/ledger.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/ledger.yaml index 7cd7b08f34..3cfb0969df 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/ledger.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/ledger.yaml @@ -95,8 +95,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:11Z" - lastUpdateTime: "2023-08-29T09:09:11Z" + - lastTransitionTime: "2023-08-31T13:06:14Z" + lastUpdateTime: "2023-08-31T13:06:14Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/orchestration-worker.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/orchestration-worker.yaml index 998ab3ddbb..080b7250a6 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/orchestration-worker.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/orchestration-worker.yaml @@ -84,8 +84,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:11Z" - lastUpdateTime: "2023-08-29T09:09:11Z" + - lastTransitionTime: "2023-08-31T13:06:14Z" + lastUpdateTime: "2023-08-31T13:06:14Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/orchestration.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/orchestration.yaml index 85f4cba755..b43b95ef42 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/orchestration.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/orchestration.yaml @@ -96,8 +96,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:11Z" - lastUpdateTime: "2023-08-29T09:09:11Z" + - lastTransitionTime: "2023-08-31T13:06:14Z" + lastUpdateTime: "2023-08-31T13:06:14Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/payments.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/payments.yaml index d7ee5fa754..2c5d58bd72 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/payments.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/payments.yaml @@ -97,8 +97,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:11Z" - lastUpdateTime: "2023-08-29T09:09:11Z" + - lastTransitionTime: "2023-08-31T13:06:14Z" + lastUpdateTime: "2023-08-31T13:06:14Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/search-benthos.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/search-benthos.yaml index 58f196a65d..9f46a8db67 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/search-benthos.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/search-benthos.yaml @@ -117,8 +117,8 @@ spec: name: templates status: conditions: - - lastTransitionTime: "2023-08-29T09:09:11Z" - lastUpdateTime: "2023-08-29T09:09:11Z" + - lastTransitionTime: "2023-08-31T13:06:14Z" + lastUpdateTime: "2023-08-31T13:06:14Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/search.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/search.yaml index f88caf76a1..ff801843c2 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/search.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/search.yaml @@ -91,8 +91,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:11Z" - lastUpdateTime: "2023-08-29T09:09:11Z" + - lastTransitionTime: "2023-08-31T13:06:14Z" + lastUpdateTime: "2023-08-31T13:06:14Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/stargate.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/stargate.yaml index b71e817144..ba117b034e 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/stargate.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/stargate.yaml @@ -82,8 +82,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:11Z" - lastUpdateTime: "2023-08-29T09:09:11Z" + - lastTransitionTime: "2023-08-31T13:06:14Z" + lastUpdateTime: "2023-08-31T13:06:14Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/wallets.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/wallets.yaml index 3a207b35ae..4daf412206 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/wallets.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/wallets.yaml @@ -78,8 +78,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:11Z" - lastUpdateTime: "2023-08-29T09:09:11Z" + - lastTransitionTime: "2023-08-31T13:06:14Z" + lastUpdateTime: "2023-08-31T13:06:14Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/webhooks-worker.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/webhooks-worker.yaml index b983394210..f102540979 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/webhooks-worker.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/webhooks-worker.yaml @@ -84,8 +84,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:11Z" - lastUpdateTime: "2023-08-29T09:09:11Z" + - lastTransitionTime: "2023-08-31T13:06:14Z" + lastUpdateTime: "2023-08-31T13:06:14Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/webhooks.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/webhooks.yaml index db319d88ee..e98acfa6dd 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/webhooks.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/deployments-apps-v1/webhooks.yaml @@ -94,8 +94,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:11Z" - lastUpdateTime: "2023-08-29T09:09:11Z" + - lastTransitionTime: "2023-08-31T13:06:14Z" + lastUpdateTime: "2023-08-31T13:06:14Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml new file mode 100644 index 0000000000..4146b2519f --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml @@ -0,0 +1,18 @@ +apiVersion: stack.formance.com/v1beta3 +kind: Migration +metadata: + annotations: + reloader.stakater.com/auto: "true" + generation: 1 + labels: + stack: "true" + name: payments-v0.10.0-pre-upgrade + namespace: multipod-latest-no-monitoring +spec: + configuration: multipod-latest-no-monitoring + module: payments + postUpgrade: false + targetedVersion: v0.10.0 + version: multipod-latest-no-monitoring +status: + terminated: true diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/auth.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/auth.yaml index dea717295a..94b0b91168 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/auth.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/auth.yaml @@ -6,9 +6,9 @@ metadata: name: auth namespace: multipod-latest-no-monitoring spec: - clusterIP: 10.0.0.37 + clusterIP: 10.0.0.109 clusterIPs: - - 10.0.0.37 + - 10.0.0.109 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/control.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/control.yaml index 90558c009f..ee495905c4 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/control.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/control.yaml @@ -6,9 +6,9 @@ metadata: name: control namespace: multipod-latest-no-monitoring spec: - clusterIP: 10.0.0.230 + clusterIP: 10.0.0.151 clusterIPs: - - 10.0.0.230 + - 10.0.0.151 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/gateway.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/gateway.yaml index 5953cf319f..b23285e1f6 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/gateway.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/gateway.yaml @@ -6,9 +6,9 @@ metadata: name: gateway namespace: multipod-latest-no-monitoring spec: - clusterIP: 10.0.0.196 + clusterIP: 10.0.0.215 clusterIPs: - - 10.0.0.196 + - 10.0.0.215 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/ledger.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/ledger.yaml index 57867fd9eb..fa4136cafc 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/ledger.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/ledger.yaml @@ -6,9 +6,9 @@ metadata: name: ledger namespace: multipod-latest-no-monitoring spec: - clusterIP: 10.0.0.69 + clusterIP: 10.0.0.111 clusterIPs: - - 10.0.0.69 + - 10.0.0.111 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/orchestration.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/orchestration.yaml index a2ad04f2e1..e51344c05f 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/orchestration.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/orchestration.yaml @@ -6,9 +6,9 @@ metadata: name: orchestration namespace: multipod-latest-no-monitoring spec: - clusterIP: 10.0.0.214 + clusterIP: 10.0.0.33 clusterIPs: - - 10.0.0.214 + - 10.0.0.33 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/payments.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/payments.yaml index e31f234c60..6fa06bbb89 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/payments.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/payments.yaml @@ -6,9 +6,9 @@ metadata: name: payments namespace: multipod-latest-no-monitoring spec: - clusterIP: 10.0.0.216 + clusterIP: 10.0.0.39 clusterIPs: - - 10.0.0.216 + - 10.0.0.39 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/search-benthos.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/search-benthos.yaml index 1350836f1c..5add0524ce 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/search-benthos.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/search-benthos.yaml @@ -6,9 +6,9 @@ metadata: name: search-benthos namespace: multipod-latest-no-monitoring spec: - clusterIP: 10.0.0.246 + clusterIP: 10.0.0.236 clusterIPs: - - 10.0.0.246 + - 10.0.0.236 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/search.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/search.yaml index 5962da05a0..4e86c871b5 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/search.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/search.yaml @@ -6,9 +6,9 @@ metadata: name: search namespace: multipod-latest-no-monitoring spec: - clusterIP: 10.0.0.250 + clusterIP: 10.0.0.17 clusterIPs: - - 10.0.0.250 + - 10.0.0.17 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/stargate.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/stargate.yaml index 6d745d565f..9a38f73598 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/stargate.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/stargate.yaml @@ -6,9 +6,9 @@ metadata: name: stargate namespace: multipod-latest-no-monitoring spec: - clusterIP: 10.0.0.224 + clusterIP: 10.0.0.125 clusterIPs: - - 10.0.0.224 + - 10.0.0.125 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/wallets.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/wallets.yaml index afaa098ed8..f553828abe 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/wallets.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/wallets.yaml @@ -6,9 +6,9 @@ metadata: name: wallets namespace: multipod-latest-no-monitoring spec: - clusterIP: 10.0.0.160 + clusterIP: 10.0.0.34 clusterIPs: - - 10.0.0.160 + - 10.0.0.34 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/webhooks.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/webhooks.yaml index b78a745872..f1bce2f34a 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/webhooks.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest-no-monitoring/results/services--v1/webhooks.yaml @@ -6,9 +6,9 @@ metadata: name: webhooks namespace: multipod-latest-no-monitoring spec: - clusterIP: 10.0.0.5 + clusterIP: 10.0.0.223 clusterIPs: - - 10.0.0.5 + - 10.0.0.223 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/auth.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/auth.yaml index 75cc7131f5..6540fb1fc4 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/auth.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/auth.yaml @@ -126,8 +126,8 @@ spec: name: config status: conditions: - - lastTransitionTime: "2023-08-29T09:09:10Z" - lastUpdateTime: "2023-08-29T09:09:10Z" + - lastTransitionTime: "2023-08-31T13:06:13Z" + lastUpdateTime: "2023-08-31T13:06:13Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/control.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/control.yaml index 9bec33814f..4aec6f64e1 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/control.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/control.yaml @@ -91,8 +91,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:10Z" - lastUpdateTime: "2023-08-29T09:09:10Z" + - lastTransitionTime: "2023-08-31T13:06:13Z" + lastUpdateTime: "2023-08-31T13:06:13Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/gateway.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/gateway.yaml index 44f80a3b79..69c6c53476 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/gateway.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/gateway.yaml @@ -94,8 +94,8 @@ spec: name: config status: conditions: - - lastTransitionTime: "2023-08-29T09:09:10Z" - lastUpdateTime: "2023-08-29T09:09:10Z" + - lastTransitionTime: "2023-08-31T13:06:13Z" + lastUpdateTime: "2023-08-31T13:06:13Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/ledger.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/ledger.yaml index 1a01b1fe14..8f6ad0ec8f 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/ledger.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/ledger.yaml @@ -112,8 +112,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:10Z" - lastUpdateTime: "2023-08-29T09:09:10Z" + - lastTransitionTime: "2023-08-31T13:06:13Z" + lastUpdateTime: "2023-08-31T13:06:13Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/orchestration-worker.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/orchestration-worker.yaml index 9ce96aae74..eebbc38009 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/orchestration-worker.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/orchestration-worker.yaml @@ -101,8 +101,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:10Z" - lastUpdateTime: "2023-08-29T09:09:10Z" + - lastTransitionTime: "2023-08-31T13:06:13Z" + lastUpdateTime: "2023-08-31T13:06:13Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/orchestration.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/orchestration.yaml index 8f4e0bed75..f09d1ec1fc 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/orchestration.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/orchestration.yaml @@ -113,8 +113,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:10Z" - lastUpdateTime: "2023-08-29T09:09:10Z" + - lastTransitionTime: "2023-08-31T13:06:13Z" + lastUpdateTime: "2023-08-31T13:06:13Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/payments.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/payments.yaml index dca13d60dd..ade21bac6d 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/payments.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/payments.yaml @@ -114,8 +114,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:10Z" - lastUpdateTime: "2023-08-29T09:09:10Z" + - lastTransitionTime: "2023-08-31T13:06:13Z" + lastUpdateTime: "2023-08-31T13:06:13Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/search-benthos.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/search-benthos.yaml index 0a374d7b6d..e3ea42a9af 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/search-benthos.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/search-benthos.yaml @@ -143,8 +143,8 @@ spec: name: templates status: conditions: - - lastTransitionTime: "2023-08-29T09:09:10Z" - lastUpdateTime: "2023-08-29T09:09:10Z" + - lastTransitionTime: "2023-08-31T13:06:13Z" + lastUpdateTime: "2023-08-31T13:06:13Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/search.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/search.yaml index fa28829448..3c8c9531da 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/search.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/search.yaml @@ -108,8 +108,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:10Z" - lastUpdateTime: "2023-08-29T09:09:10Z" + - lastTransitionTime: "2023-08-31T13:06:13Z" + lastUpdateTime: "2023-08-31T13:06:13Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/stargate.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/stargate.yaml index bda1d0a5b1..102cd5c004 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/stargate.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/stargate.yaml @@ -99,8 +99,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:10Z" - lastUpdateTime: "2023-08-29T09:09:10Z" + - lastTransitionTime: "2023-08-31T13:06:13Z" + lastUpdateTime: "2023-08-31T13:06:13Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/wallets.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/wallets.yaml index 7035845e95..403e1218cb 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/wallets.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/wallets.yaml @@ -95,8 +95,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:10Z" - lastUpdateTime: "2023-08-29T09:09:10Z" + - lastTransitionTime: "2023-08-31T13:06:13Z" + lastUpdateTime: "2023-08-31T13:06:13Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/webhooks-worker.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/webhooks-worker.yaml index cc71440e8e..83f65e15ce 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/webhooks-worker.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/webhooks-worker.yaml @@ -101,8 +101,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:10Z" - lastUpdateTime: "2023-08-29T09:09:10Z" + - lastTransitionTime: "2023-08-31T13:06:13Z" + lastUpdateTime: "2023-08-31T13:06:13Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/webhooks.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/webhooks.yaml index 301fec0641..6d8b19033b 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/webhooks.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/deployments-apps-v1/webhooks.yaml @@ -111,8 +111,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:10Z" - lastUpdateTime: "2023-08-29T09:09:10Z" + - lastTransitionTime: "2023-08-31T13:06:13Z" + lastUpdateTime: "2023-08-31T13:06:13Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml new file mode 100644 index 0000000000..1d3f388d04 --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml @@ -0,0 +1,18 @@ +apiVersion: stack.formance.com/v1beta3 +kind: Migration +metadata: + annotations: + reloader.stakater.com/auto: "true" + generation: 1 + labels: + stack: "true" + name: payments-v0.10.0-pre-upgrade + namespace: multipod-latest +spec: + configuration: multipod-latest + module: payments + postUpgrade: false + targetedVersion: v0.10.0 + version: multipod-latest +status: + terminated: true diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/auth.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/auth.yaml index 857ead52bb..292caaf3c1 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/auth.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/auth.yaml @@ -6,9 +6,9 @@ metadata: name: auth namespace: multipod-latest spec: - clusterIP: 10.0.0.156 + clusterIP: 10.0.0.63 clusterIPs: - - 10.0.0.156 + - 10.0.0.63 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/control.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/control.yaml index cf558200bf..a3b0d56101 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/control.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/control.yaml @@ -6,9 +6,9 @@ metadata: name: control namespace: multipod-latest spec: - clusterIP: 10.0.0.124 + clusterIP: 10.0.0.160 clusterIPs: - - 10.0.0.124 + - 10.0.0.160 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/gateway.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/gateway.yaml index f514aab02f..0f4e773b71 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/gateway.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/gateway.yaml @@ -6,9 +6,9 @@ metadata: name: gateway namespace: multipod-latest spec: - clusterIP: 10.0.0.62 + clusterIP: 10.0.0.142 clusterIPs: - - 10.0.0.62 + - 10.0.0.142 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/ledger.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/ledger.yaml index 8c93053e61..b51c99466d 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/ledger.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/ledger.yaml @@ -6,9 +6,9 @@ metadata: name: ledger namespace: multipod-latest spec: - clusterIP: 10.0.0.177 + clusterIP: 10.0.0.16 clusterIPs: - - 10.0.0.177 + - 10.0.0.16 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/orchestration.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/orchestration.yaml index 2ee5fc2be9..1703c4c5dc 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/orchestration.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/orchestration.yaml @@ -6,9 +6,9 @@ metadata: name: orchestration namespace: multipod-latest spec: - clusterIP: 10.0.0.201 + clusterIP: 10.0.0.65 clusterIPs: - - 10.0.0.201 + - 10.0.0.65 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/payments.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/payments.yaml index d4faf76ca0..47c145f9be 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/payments.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/payments.yaml @@ -6,9 +6,9 @@ metadata: name: payments namespace: multipod-latest spec: - clusterIP: 10.0.0.91 + clusterIP: 10.0.0.57 clusterIPs: - - 10.0.0.91 + - 10.0.0.57 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/search-benthos.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/search-benthos.yaml index e7408ddf99..4180f80e4e 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/search-benthos.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/search-benthos.yaml @@ -6,9 +6,9 @@ metadata: name: search-benthos namespace: multipod-latest spec: - clusterIP: 10.0.0.13 + clusterIP: 10.0.0.62 clusterIPs: - - 10.0.0.13 + - 10.0.0.62 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/search.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/search.yaml index c3697dd344..972e882dc5 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/search.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/search.yaml @@ -6,9 +6,9 @@ metadata: name: search namespace: multipod-latest spec: - clusterIP: 10.0.0.248 + clusterIP: 10.0.0.198 clusterIPs: - - 10.0.0.248 + - 10.0.0.198 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/stargate.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/stargate.yaml index 163d5d2c42..c9962ef409 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/stargate.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/stargate.yaml @@ -6,9 +6,9 @@ metadata: name: stargate namespace: multipod-latest spec: - clusterIP: 10.0.0.19 + clusterIP: 10.0.0.182 clusterIPs: - - 10.0.0.19 + - 10.0.0.182 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/wallets.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/wallets.yaml index 53f1f21327..8220de855a 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/wallets.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/wallets.yaml @@ -6,9 +6,9 @@ metadata: name: wallets namespace: multipod-latest spec: - clusterIP: 10.0.0.4 + clusterIP: 10.0.0.54 clusterIPs: - - 10.0.0.4 + - 10.0.0.54 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/webhooks.yaml b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/webhooks.yaml index ff89ef149b..077f2b33e1 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/webhooks.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-latest/results/services--v1/webhooks.yaml @@ -6,9 +6,9 @@ metadata: name: webhooks namespace: multipod-latest spec: - clusterIP: 10.0.0.239 + clusterIP: 10.0.0.105 clusterIPs: - - 10.0.0.239 + - 10.0.0.105 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/auth.yaml b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/auth.yaml index 924d1518af..eda2b53f14 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/auth.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/auth.yaml @@ -109,8 +109,8 @@ spec: name: config status: conditions: - - lastTransitionTime: "2023-08-29T09:09:12Z" - lastUpdateTime: "2023-08-29T09:09:12Z" + - lastTransitionTime: "2023-08-31T13:06:15Z" + lastUpdateTime: "2023-08-31T13:06:15Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/control.yaml b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/control.yaml index 9c45c433cf..6337f59ec0 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/control.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/control.yaml @@ -74,8 +74,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:12Z" - lastUpdateTime: "2023-08-29T09:09:12Z" + - lastTransitionTime: "2023-08-31T13:06:15Z" + lastUpdateTime: "2023-08-31T13:06:15Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/gateway.yaml b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/gateway.yaml index e7b44be3a9..a686fede9c 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/gateway.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/gateway.yaml @@ -77,8 +77,8 @@ spec: name: config status: conditions: - - lastTransitionTime: "2023-08-29T09:09:12Z" - lastUpdateTime: "2023-08-29T09:09:12Z" + - lastTransitionTime: "2023-08-31T13:06:15Z" + lastUpdateTime: "2023-08-31T13:06:15Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/ledger.yaml b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/ledger.yaml index 27f63ceb45..605d210e02 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/ledger.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/ledger.yaml @@ -95,8 +95,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:12Z" - lastUpdateTime: "2023-08-29T09:09:12Z" + - lastTransitionTime: "2023-08-31T13:06:15Z" + lastUpdateTime: "2023-08-31T13:06:15Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/orchestration-worker.yaml b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/orchestration-worker.yaml index 3d5e437e10..24431fee25 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/orchestration-worker.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/orchestration-worker.yaml @@ -84,8 +84,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:12Z" - lastUpdateTime: "2023-08-29T09:09:12Z" + - lastTransitionTime: "2023-08-31T13:06:15Z" + lastUpdateTime: "2023-08-31T13:06:15Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/orchestration.yaml b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/orchestration.yaml index cc7d5a87d5..8d835dcd97 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/orchestration.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/orchestration.yaml @@ -96,8 +96,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:12Z" - lastUpdateTime: "2023-08-29T09:09:12Z" + - lastTransitionTime: "2023-08-31T13:06:15Z" + lastUpdateTime: "2023-08-31T13:06:15Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/payments.yaml b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/payments.yaml index b15ea65f99..bdf3c66537 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/payments.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/payments.yaml @@ -97,8 +97,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:12Z" - lastUpdateTime: "2023-08-29T09:09:12Z" + - lastTransitionTime: "2023-08-31T13:06:15Z" + lastUpdateTime: "2023-08-31T13:06:15Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/search-benthos.yaml b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/search-benthos.yaml index 17319f4faf..c125bd52ae 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/search-benthos.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/search-benthos.yaml @@ -117,8 +117,8 @@ spec: name: templates status: conditions: - - lastTransitionTime: "2023-08-29T09:09:12Z" - lastUpdateTime: "2023-08-29T09:09:12Z" + - lastTransitionTime: "2023-08-31T13:06:15Z" + lastUpdateTime: "2023-08-31T13:06:15Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/search.yaml b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/search.yaml index 0a20c6dc12..afefd418c1 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/search.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/search.yaml @@ -91,8 +91,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:12Z" - lastUpdateTime: "2023-08-29T09:09:12Z" + - lastTransitionTime: "2023-08-31T13:06:15Z" + lastUpdateTime: "2023-08-31T13:06:15Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/stargate.yaml b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/stargate.yaml index aa00f808f4..c6df952303 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/stargate.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/stargate.yaml @@ -82,8 +82,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:12Z" - lastUpdateTime: "2023-08-29T09:09:12Z" + - lastTransitionTime: "2023-08-31T13:06:15Z" + lastUpdateTime: "2023-08-31T13:06:15Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/wallets.yaml b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/wallets.yaml index ffdb3f07a2..d6edf28c42 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/wallets.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/wallets.yaml @@ -78,8 +78,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:12Z" - lastUpdateTime: "2023-08-29T09:09:12Z" + - lastTransitionTime: "2023-08-31T13:06:15Z" + lastUpdateTime: "2023-08-31T13:06:15Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/webhooks-worker.yaml b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/webhooks-worker.yaml index 033a719d00..ab1ec5ed70 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/webhooks-worker.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/webhooks-worker.yaml @@ -84,8 +84,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:12Z" - lastUpdateTime: "2023-08-29T09:09:12Z" + - lastTransitionTime: "2023-08-31T13:06:15Z" + lastUpdateTime: "2023-08-31T13:06:15Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/webhooks.yaml b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/webhooks.yaml index 14ad0cb4fa..b812a46b36 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/webhooks.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/deployments-apps-v1/webhooks.yaml @@ -94,8 +94,8 @@ spec: terminationGracePeriodSeconds: 30 status: conditions: - - lastTransitionTime: "2023-08-29T09:09:12Z" - lastUpdateTime: "2023-08-29T09:09:12Z" + - lastTransitionTime: "2023-08-31T13:06:15Z" + lastUpdateTime: "2023-08-31T13:06:15Z" status: "True" type: Available observedGeneration: 1 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml new file mode 100644 index 0000000000..9b3817b95b --- /dev/null +++ b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/migrations-stack.formance.com-v1beta3/payments-v0.10.0-pre-upgrade.yaml @@ -0,0 +1,18 @@ +apiVersion: stack.formance.com/v1beta3 +kind: Migration +metadata: + annotations: + reloader.stakater.com/auto: "true" + generation: 1 + labels: + stack: "true" + name: payments-v0.10.0-pre-upgrade + namespace: multipod-service-annotation +spec: + configuration: multipod-service-annotation + module: payments + postUpgrade: false + targetedVersion: v0.10.0 + version: multipod-service-annotation +status: + terminated: true diff --git a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/auth.yaml b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/auth.yaml index edae2c0e3e..05339bd57b 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/auth.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/auth.yaml @@ -6,9 +6,9 @@ metadata: name: auth namespace: multipod-service-annotation spec: - clusterIP: 10.0.0.38 + clusterIP: 10.0.0.208 clusterIPs: - - 10.0.0.38 + - 10.0.0.208 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/control.yaml b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/control.yaml index c78b74883a..cac7fd0884 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/control.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/control.yaml @@ -6,9 +6,9 @@ metadata: name: control namespace: multipod-service-annotation spec: - clusterIP: 10.0.0.92 + clusterIP: 10.0.0.97 clusterIPs: - - 10.0.0.92 + - 10.0.0.97 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/gateway.yaml b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/gateway.yaml index 86eb5173e4..20533f279e 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/gateway.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/gateway.yaml @@ -8,9 +8,9 @@ metadata: name: gateway namespace: multipod-service-annotation spec: - clusterIP: 10.0.0.52 + clusterIP: 10.0.0.148 clusterIPs: - - 10.0.0.52 + - 10.0.0.148 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/ledger.yaml b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/ledger.yaml index 689ef02f4b..e8246a8c69 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/ledger.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/ledger.yaml @@ -6,9 +6,9 @@ metadata: name: ledger namespace: multipod-service-annotation spec: - clusterIP: 10.0.0.133 + clusterIP: 10.0.0.134 clusterIPs: - - 10.0.0.133 + - 10.0.0.134 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/orchestration.yaml b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/orchestration.yaml index 6e18b56403..91ef6b39cb 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/orchestration.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/orchestration.yaml @@ -6,9 +6,9 @@ metadata: name: orchestration namespace: multipod-service-annotation spec: - clusterIP: 10.0.0.139 + clusterIP: 10.0.0.136 clusterIPs: - - 10.0.0.139 + - 10.0.0.136 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/payments.yaml b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/payments.yaml index ebe0e4be1c..15d4026466 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/payments.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/payments.yaml @@ -6,9 +6,9 @@ metadata: name: payments namespace: multipod-service-annotation spec: - clusterIP: 10.0.0.218 + clusterIP: 10.0.0.168 clusterIPs: - - 10.0.0.218 + - 10.0.0.168 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/search-benthos.yaml b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/search-benthos.yaml index 0a17b54823..9977a68018 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/search-benthos.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/search-benthos.yaml @@ -6,9 +6,9 @@ metadata: name: search-benthos namespace: multipod-service-annotation spec: - clusterIP: 10.0.0.127 + clusterIP: 10.0.0.18 clusterIPs: - - 10.0.0.127 + - 10.0.0.18 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/search.yaml b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/search.yaml index 22ae42793c..cd6f63a8e5 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/search.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/search.yaml @@ -6,9 +6,9 @@ metadata: name: search namespace: multipod-service-annotation spec: - clusterIP: 10.0.0.180 + clusterIP: 10.0.0.191 clusterIPs: - - 10.0.0.180 + - 10.0.0.191 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/stargate.yaml b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/stargate.yaml index aa8f9df9e9..7826e98993 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/stargate.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/stargate.yaml @@ -6,9 +6,9 @@ metadata: name: stargate namespace: multipod-service-annotation spec: - clusterIP: 10.0.0.75 + clusterIP: 10.0.0.145 clusterIPs: - - 10.0.0.75 + - 10.0.0.145 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/wallets.yaml b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/wallets.yaml index 3e6621eb39..84d6c6418d 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/wallets.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/wallets.yaml @@ -6,9 +6,9 @@ metadata: name: wallets namespace: multipod-service-annotation spec: - clusterIP: 10.0.0.81 + clusterIP: 10.0.0.202 clusterIPs: - - 10.0.0.81 + - 10.0.0.202 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/webhooks.yaml b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/webhooks.yaml index a4e20d450d..53c92b375f 100644 --- a/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/webhooks.yaml +++ b/components/operator/internal/controllers/stack/testdata/multipod-service-annotation/results/services--v1/webhooks.yaml @@ -6,9 +6,9 @@ metadata: name: webhooks namespace: multipod-service-annotation spec: - clusterIP: 10.0.0.140 + clusterIP: 10.0.0.177 clusterIPs: - - 10.0.0.140 + - 10.0.0.177 internalTrafficPolicy: Cluster ipFamilies: - IPv4 diff --git a/components/operator/internal/handlers/handler_payments.go b/components/operator/internal/handlers/handler_payments.go index 365aa0ec4d..d87c2b1f2e 100644 --- a/components/operator/internal/handlers/handler_payments.go +++ b/components/operator/internal/handlers/handler_payments.go @@ -144,6 +144,15 @@ func init() { return paymentsServices(ctx, env) }, }, + "v0.10.0": { + PreUpgrade: func(ctx modules.Context) error { + // Add payment accounts + return paymentsPreUpgradeMigration(ctx) + }, + Services: func(ctx modules.ModuleContext) modules.Services { + return paymentsServices(ctx, env) + }, + }, }, }) } diff --git a/components/payments/Dockerfile b/components/payments/Dockerfile index b673b727ee..fc4b565d25 100644 --- a/components/payments/Dockerfile +++ b/components/payments/Dockerfile @@ -14,7 +14,7 @@ WORKDIR /src # get deps first so it's cached COPY . . WORKDIR /src/components/payments -RUN go mod vendor +RUN --mount=type=cache,mode=0755,target=/go/pkg/mod go mod vendor RUN CGO_ENABLED=0 GOOS=linux GOARCH=$TARGETARCH \ CC=$TARGETARCH-linux-gnu-gcc \ diff --git a/components/payments/internal/app/api/connector.go b/components/payments/internal/app/api/connector.go index 269007ed83..24dc50b588 100644 --- a/components/payments/internal/app/api/connector.go +++ b/components/payments/internal/app/api/connector.go @@ -2,12 +2,9 @@ package api import ( "encoding/json" - "math/big" "net/http" "time" - "github.com/pkg/errors" - "github.com/formancehq/payments/internal/app/storage" "github.com/google/uuid" @@ -255,154 +252,6 @@ func reset[Config models.ConnectorConfigObject]( } } -type transferRequest struct { - Amount *big.Int `json:"amount"` - Source string `json:"source"` - Destination string `json:"destination"` - Asset string `json:"asset"` - - currency string -} - -func (req *transferRequest) validate() error { - if req.Amount.Cmp(big.NewInt(0)) <= 0 { - return errors.New("amount must be greater than 0") - } - - if req.Asset == "" { - return errors.New("asset is required") - } - - if len(req.Asset) < 3 { //nolint:gomnd // allow length 3 for POC - return errors.New("asset is invalid") - } - - req.currency = req.Asset[:3] - - if req.Destination == "" { - return errors.New("destination is required") - } - - return nil -} - -type initiateTransferResponse struct { - ID string `json:"id"` -} - -func initiateTransfer[Config models.ConnectorConfigObject](connectorManager *integration.ConnectorManager[Config], -) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - var req transferRequest - - err := json.NewDecoder(r.Body).Decode(&req) - if err != nil { - handleError(w, r, err) - - return - } - - err = req.validate() - if err != nil { - handleErrorBadRequest(w, r, err) - - return - } - - installed, err := connectorManager.IsInstalled(r.Context()) - if err != nil { - handleError(w, r, err) - - return - } - - if !installed { - handleError(w, r, errors.New("connector not installed")) - - return - } - - transfer := integration.Transfer{ - Source: req.Source, - Destination: req.Destination, - Currency: req.currency, - Amount: req.Amount, - } - - transferID, err := connectorManager.InitiateTransfer(r.Context(), transfer) - if err != nil { - handleError(w, r, err) - - return - } - - err = json.NewEncoder(w).Encode(api.BaseResponse[initiateTransferResponse]{ - Data: &initiateTransferResponse{ - ID: transferID.String(), - }, - }) - if err != nil { - panic(err) - } - } -} - -type listTransfersResponseElement struct { - ID string `json:"id"` - Source string `json:"source"` - Destination string `json:"destination"` - Amount *big.Int `json:"amount"` - Currency string `json:"asset"` - Status string `json:"status"` - Error *string `json:"error"` -} - -func listTransfers[Config models.ConnectorConfigObject](connectorManager *integration.ConnectorManager[Config], -) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - installed, err := connectorManager.IsInstalled(r.Context()) - if err != nil { - handleError(w, r, err) - - return - } - - if !installed { - handleError(w, r, errors.New("connector not installed")) - - return - } - - transfers, err := connectorManager.ListTransfers(r.Context()) - if err != nil { - handleError(w, r, err) - - return - } - - response := make([]listTransfersResponseElement, len(transfers)) - - for transferIdx := range transfers { - response[transferIdx] = listTransfersResponseElement{ - ID: transfers[transferIdx].ID.String(), - Source: transfers[transferIdx].Source, - Destination: transfers[transferIdx].Destination, - Amount: transfers[transferIdx].Amount, - Currency: transfers[transferIdx].Currency, - Status: transfers[transferIdx].Status.String(), - Error: transfers[transferIdx].Error, - } - } - - err = json.NewEncoder(w).Encode(api.BaseResponse[[]listTransfersResponseElement]{ - Data: &response, - }) - if err != nil { - panic(err) - } - } -} - func connectorNotInstalled[Config models.ConnectorConfigObject](connectorManager *integration.ConnectorManager[Config], w http.ResponseWriter, r *http.Request, ) bool { diff --git a/components/payments/internal/app/api/connectormodule.go b/components/payments/internal/app/api/connectormodule.go index 9bce2151b0..cae96a1cc7 100644 --- a/components/payments/internal/app/api/connectormodule.go +++ b/components/payments/internal/app/api/connectormodule.go @@ -23,6 +23,9 @@ import ( type connectorHandler struct { Handler http.Handler Provider models.ConnectorProvider + + // TODO(polo): refactor to remove this ugly hack to access the connector manager + initiatePayment paymentHandler } func addConnector[ConnectorConfig models.ConnectorConfigObject](loader integration.Loader[ConnectorConfig], @@ -47,18 +50,25 @@ func addConnector[ConnectorConfig models.ConnectorConfigObject](loader integrati return nil, err } + if err := container.Provide(func() storage.Reader { + return store + }); err != nil { + return nil, err + } + return container, nil }, resolver, metricsRegistry, maxTasks) }) - return integration.NewConnectorManager[ConnectorConfig]( + return integration.NewConnectorManager( store, loader, schedulerFactory, publisher) }), fx.Provide(fx.Annotate(func(cm *integration.ConnectorManager[ConnectorConfig], ) connectorHandler { return connectorHandler{ - Handler: connectorRouter(loader.Name(), cm), - Provider: loader.Name(), + Handler: connectorRouter(loader.Name(), cm), + Provider: loader.Name(), + initiatePayment: cm.InitiatePayment, } }, fx.ResultTags(`group:"connectorHandlers"`))), fx.Invoke(func(lc fx.Lifecycle, cm *integration.ConnectorManager[ConnectorConfig]) { diff --git a/components/payments/internal/app/api/router.go b/components/payments/internal/app/api/router.go index def86124c9..f63d9b22ba 100644 --- a/components/payments/internal/app/api/router.go +++ b/components/payments/internal/app/api/router.go @@ -13,7 +13,12 @@ import ( "go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux" ) -func httpRouter(logger logging.Logger, store *storage.Storage, serviceInfo api.ServiceInfo, connectorHandlers []connectorHandler) (*mux.Router, error) { +func httpRouter( + logger logging.Logger, + store *storage.Storage, + serviceInfo api.ServiceInfo, + connectorHandlers []connectorHandler, +) (*mux.Router, error) { rootMux := mux.NewRouter() // We have to keep this recovery handler here to ensure that the health @@ -49,18 +54,22 @@ func httpRouter(logger logging.Logger, store *storage.Storage, serviceInfo api.S authGroup.Path("/accounts/{accountID}").Methods(http.MethodGet).Handler(readAccountHandler(store)) authGroup.Path("/accounts/{accountID}/balances").Methods(http.MethodGet).Handler(listBalancesForAccount(store)) + paymentsHandlers := make(map[models.ConnectorProvider]paymentHandler) + for _, h := range connectorHandlers { + paymentsHandlers[h.Provider] = h.initiatePayment + } + authGroup.Path("/transfer-initiation").Methods(http.MethodPost).Handler(createTransferInitiationHandler(store, paymentsHandlers)) + authGroup.Path("/transfer-initiation").Methods(http.MethodGet).Handler(listTransferInitiationsHandler(store)) + authGroup.Path("/transfer-initiation/{transferID}/status").Methods(http.MethodPost).Handler(updateTransferInitiationStatusHandler(store, paymentsHandlers)) + authGroup.Path("/transfer-initiation/{transferID}").Methods(http.MethodGet).Handler(readTransferInitiationHandler(store)) + authGroup.Path("/transfer-initiation/{transferID}").Methods(http.MethodDelete).Handler(deleteTransferInitiationHandler(store)) + authGroup.HandleFunc("/connectors", readConnectorsHandler(store)) connectorGroup := authGroup.PathPrefix("/connectors").Subrouter() connectorGroup.Path("/configs").Handler(connectorConfigsHandler()) - // Deprecated - // TODO: Remove this endpoint - // Use /connectors/stripe/transfers instead - connectorGroup.Path("/stripe/transfers").Methods(http.MethodPost). - Handler(handleStripeTransfers(store)) - for _, h := range connectorHandlers { connectorGroup.PathPrefix("/" + h.Provider.String()).Handler( http.StripPrefix("/connectors", h.Handler)) @@ -84,8 +93,6 @@ func connectorRouter[Config models.ConnectorConfigObject]( addRoute(r, provider, "/reset", http.MethodPost, reset(manager)) addRoute(r, provider, "/tasks", http.MethodGet, listTasks(manager)) addRoute(r, provider, "/tasks/{taskID}", http.MethodGet, readTask(manager)) - addRoute(r, provider, "/transfers", http.MethodPost, initiateTransfer(manager)) - addRoute(r, provider, "/transfers", http.MethodGet, listTransfers(manager)) return r } diff --git a/components/payments/internal/app/api/transfer_initiation.go b/components/payments/internal/app/api/transfer_initiation.go new file mode 100644 index 0000000000..792c566e1a --- /dev/null +++ b/components/payments/internal/app/api/transfer_initiation.go @@ -0,0 +1,465 @@ +package api + +import ( + "context" + "encoding/json" + "fmt" + "math/big" + "net/http" + "strings" + "time" + + "github.com/formancehq/payments/internal/app/models" + "github.com/formancehq/payments/internal/app/storage" + "github.com/formancehq/stack/libs/go-libs/api" + "github.com/gorilla/mux" + "github.com/pkg/errors" +) + +type paymentHandler func(ctx context.Context, transfer *models.TransferInitiation) error + +type transferInitiationResponse struct { + ID string `json:"id"` + CreatedAt time.Time `json:"createdAt"` + UpdatedAt time.Time `json:"updatedAt"` + Description string `json:"description"` + SourceAccountID models.AccountID `json:"sourceAccountID"` + DestinationAccountID models.AccountID `json:"destinationAccountID"` + Provider string `json:"provider"` + Type string `json:"type"` + Amount *big.Int `json:"amount"` + Asset string `json:"asset"` + Status string `json:"status"` + Error string `json:"error"` +} + +type createTransferInitiationRequest struct { + UniqueRequestID string `json:"uniqueRequestID"` + CreatedAt time.Time `json:"createdAt"` + Description string `json:"description"` + SourceAccountID string `json:"sourceAccountID"` + DestinationAccountID string `json:"destinationAccountID"` + Provider string `json:"provider"` + Type string `json:"type"` + Amount *big.Int `json:"amount"` + Asset string `json:"asset"` + Validated bool `json:"validated"` +} + +func (r *createTransferInitiationRequest) Validate() error { + if r.UniqueRequestID == "" { + return errors.New("uniqueRequestId is required") + } + + if r.Description == "" { + return errors.New("description is required") + } + + _, err := models.AccountIDFromString(r.SourceAccountID) + if err != nil { + return err + } + + _, err = models.AccountIDFromString(r.DestinationAccountID) + if err != nil { + return err + } + + _, err = models.TransferInitiationTypeFromString(r.Type) + if err != nil { + return err + } + + _, err = models.ConnectorProviderFromString(r.Provider) + if err != nil { + return err + } + + if r.Amount == nil { + return errors.New("amount is required") + } + + if r.Asset == "" { + return errors.New("asset is required") + } + + return nil +} + +type createTransferInitiationRepository interface { + CreateTransferInitiation(ctx context.Context, transferInitiation *models.TransferInitiation) error + GetAccount(ctx context.Context, id string) (*models.Account, error) +} + +func createTransferInitiationHandler( + repo createTransferInitiationRepository, + paymentHandlers map[models.ConnectorProvider]paymentHandler, +) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "application/json") + + payload := &createTransferInitiationRequest{} + if err := json.NewDecoder(r.Body).Decode(&payload); err != nil { + handleValidationError(w, r, err) + + return + } + + if err := payload.Validate(); err != nil { + handleValidationError(w, r, err) + + return + } + + if payload.CreatedAt.IsZero() { + payload.CreatedAt = time.Now() + } + + status := models.TransferInitiationStatusWaitingForValidation + if payload.Validated { + status = models.TransferInitiationStatusValidated + } + + sourceAccount, err := repo.GetAccount(r.Context(), payload.SourceAccountID) + if err != nil { + handleStorageErrors(w, r, fmt.Errorf("failed to get source account: %w", err)) + + return + } + + destinationAccount, err := repo.GetAccount(r.Context(), payload.DestinationAccountID) + if err != nil { + handleStorageErrors(w, r, fmt.Errorf("failed to get destination account: %w", err)) + + return + } + + provider := models.MustConnectorProviderFromString(payload.Provider) + tf := &models.TransferInitiation{ + ID: models.TransferInitiationID{ + UniqueRequestID: payload.UniqueRequestID, + Provider: provider, + }, + CreatedAt: payload.CreatedAt, + UpdatedAt: payload.CreatedAt, // When created, should be the same + Description: payload.Description, + SourceAccountID: models.MustAccountIDFromString(payload.SourceAccountID), + DestinationAccountID: models.MustAccountIDFromString(payload.DestinationAccountID), + Provider: provider, + Type: models.MustTransferInitiationTypeFromString(payload.Type), + Amount: payload.Amount, + Asset: models.Asset(payload.Asset), + Status: status, + SourceAccount: sourceAccount, + DestinationAccount: destinationAccount, + } + + if err := repo.CreateTransferInitiation(r.Context(), tf); err != nil { + handleStorageErrors(w, r, err) + + return + } + + if status == models.TransferInitiationStatusValidated { + f, ok := paymentHandlers[provider] + if !ok { + handleServerError(w, r, errors.New("no payment handler for provider "+provider.String())) + + return + } + + // Since we will launch an async task to process the transfer + // initiation, we have to detach the context from the request. + err = f(r.Context(), tf) + if err != nil { + handleServerError(w, r, err) + + return + } + } + + data := &transferInitiationResponse{ + ID: tf.ID.String(), + CreatedAt: tf.CreatedAt, + UpdatedAt: tf.UpdatedAt, + Description: tf.Description, + SourceAccountID: tf.SourceAccountID, + DestinationAccountID: tf.DestinationAccountID, + Provider: tf.Provider.String(), + Type: tf.Type.String(), + Amount: tf.Amount, + Asset: tf.Asset.String(), + Status: tf.Status.String(), + Error: tf.Error, + } + + err = json.NewEncoder(w).Encode(api.BaseResponse[transferInitiationResponse]{ + Data: data, + }) + if err != nil { + handleServerError(w, r, err) + + return + } + } +} + +type udateTransferInitiationStatusRepository interface { + ReadTransferInitiation(ctx context.Context, id models.TransferInitiationID) (*models.TransferInitiation, error) + UpdateTransferInitiationStatus(ctx context.Context, id models.TransferInitiationID, status models.TransferInitiationStatus, errorMessage string) error + GetAccount(ctx context.Context, id string) (*models.Account, error) +} + +type updateTransferInitiationStatusRequest struct { + Status string `json:"status"` +} + +func updateTransferInitiationStatusHandler( + repo udateTransferInitiationStatusRepository, + paymentHandlers map[models.ConnectorProvider]paymentHandler, +) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + payload := &updateTransferInitiationStatusRequest{} + if err := json.NewDecoder(r.Body).Decode(&payload); err != nil { + handleValidationError(w, r, err) + + return + } + + status, err := models.TransferInitiationStatusFromString(payload.Status) + if err != nil { + handleValidationError(w, r, err) + + return + } + + if status == models.TransferInitiationStatusWaitingForValidation { + handleValidationError(w, r, errors.New("cannot set back transfer initiation status to waiting for validation")) + + return + } + + transferID, err := models.TransferInitiationIDFromString((mux.Vars(r)["transferID"])) + if err != nil { + handleValidationError(w, r, err) + + return + } + + previousTransferInitiation, err := repo.ReadTransferInitiation(r.Context(), transferID) + if err != nil { + handleStorageErrors(w, r, err) + + return + } + + if previousTransferInitiation.Status != models.TransferInitiationStatusWaitingForValidation { + handleValidationError(w, r, errors.New("only waiting for validation transfer initiation can be updated")) + + return + } + previousTransferInitiation.Status = status + + err = repo.UpdateTransferInitiationStatus(r.Context(), transferID, status, "") + if err != nil { + handleStorageErrors(w, r, err) + + return + } + + if status == models.TransferInitiationStatusValidated { + f, ok := paymentHandlers[previousTransferInitiation.Provider] + if !ok { + handleServerError(w, r, errors.New("no payment handler for provider "+previousTransferInitiation.Provider.String())) + + return + } + + err = f(r.Context(), previousTransferInitiation) + if err != nil { + handleServerError(w, r, err) + + return + } + } + + w.WriteHeader(http.StatusNoContent) + } +} + +type readTransferInitiationRepository interface { + ReadTransferInitiation(ctx context.Context, id models.TransferInitiationID) (*models.TransferInitiation, error) +} + +func readTransferInitiationHandler(repo readTransferInitiationRepository) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "application/json") + + transferID, err := models.TransferInitiationIDFromString(mux.Vars(r)["transferID"]) + if err != nil { + handleValidationError(w, r, err) + + return + } + + ret, err := repo.ReadTransferInitiation(r.Context(), transferID) + if err != nil { + handleStorageErrors(w, r, err) + + return + } + + data := &transferInitiationResponse{ + ID: ret.ID.String(), + CreatedAt: ret.CreatedAt, + UpdatedAt: ret.UpdatedAt, + Description: ret.Description, + SourceAccountID: ret.SourceAccountID, + DestinationAccountID: ret.DestinationAccountID, + Provider: ret.Provider.String(), + Type: ret.Type.String(), + Amount: ret.Amount, + Asset: ret.Asset.String(), + Status: ret.Status.String(), + Error: ret.Error, + } + + err = json.NewEncoder(w).Encode(api.BaseResponse[transferInitiationResponse]{ + Data: data, + }) + if err != nil { + handleServerError(w, r, err) + + return + } + } +} + +type listTransferInitiationsRepository interface { + ListTransferInitiations(ctx context.Context, pagination storage.Paginator) ([]*models.TransferInitiation, storage.PaginationDetails, error) +} + +func listTransferInitiationsHandler(repo listTransferInitiationsRepository) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "application/json") + + var sorter storage.Sorter + + if sortParams := r.URL.Query()["sort"]; sortParams != nil { + for _, s := range sortParams { + parts := strings.SplitN(s, ":", 2) + + var order storage.SortOrder + + if len(parts) > 1 { + //nolint:goconst // allow duplicate string + switch parts[1] { + case "asc", "ASC": + order = storage.SortOrderAsc + case "dsc", "desc", "DSC", "DESC": + order = storage.SortOrderDesc + default: + handleValidationError(w, r, errors.New("sort order not well specified, got "+parts[1])) + + return + } + } + + column := parts[0] + + sorter.Add(column, order) + } + } + + pageSize, err := pageSizeQueryParam(r) + if err != nil { + handleValidationError(w, r, err) + + return + } + + pagination, err := storage.Paginate(pageSize, r.URL.Query().Get("cursor"), sorter) + if err != nil { + handleValidationError(w, r, err) + + return + } + + ret, paginationDetails, err := repo.ListTransferInitiations(r.Context(), pagination) + if err != nil { + handleStorageErrors(w, r, err) + + return + } + + data := make([]*transferInitiationResponse, len(ret)) + for i := range ret { + data[i] = &transferInitiationResponse{ + ID: ret[i].ID.String(), + CreatedAt: ret[i].CreatedAt, + UpdatedAt: ret[i].UpdatedAt, + Description: ret[i].Description, + SourceAccountID: ret[i].SourceAccountID, + DestinationAccountID: ret[i].DestinationAccountID, + Provider: ret[i].Provider.String(), + Type: ret[i].Type.String(), + Amount: ret[i].Amount, + Asset: ret[i].Asset.String(), + Status: ret[i].Status.String(), + Error: ret[i].Error, + } + } + + err = json.NewEncoder(w).Encode(api.BaseResponse[*transferInitiationResponse]{ + Cursor: &api.Cursor[*transferInitiationResponse]{ + PageSize: paginationDetails.PageSize, + HasMore: paginationDetails.HasMore, + Previous: paginationDetails.PreviousPage, + Next: paginationDetails.NextPage, + Data: data, + }, + }) + if err != nil { + handleServerError(w, r, err) + + return + } + } +} + +type deleteTransferInitiationRepository interface { + ReadTransferInitiation(ctx context.Context, id models.TransferInitiationID) (*models.TransferInitiation, error) + DeleteTransferInitiation(ctx context.Context, id models.TransferInitiationID) error +} + +func deleteTransferInitiationHandler(repo deleteTransferInitiationRepository) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + transferID, err := models.TransferInitiationIDFromString(mux.Vars(r)["transferID"]) + if err != nil { + handleValidationError(w, r, err) + + return + } + + tf, err := repo.ReadTransferInitiation(r.Context(), transferID) + if err != nil { + handleStorageErrors(w, r, err) + + return + } + + if tf.Status != models.TransferInitiationStatusWaitingForValidation { + handleValidationError(w, r, errors.New("cannot delete transfer initiation not waiting for validation")) + + } + + err = repo.DeleteTransferInitiation(r.Context(), transferID) + if err != nil { + handleStorageErrors(w, r, err) + + return + } + + w.WriteHeader(http.StatusNoContent) + } +} diff --git a/components/payments/internal/app/connectors/bankingcircle/connector.go b/components/payments/internal/app/connectors/bankingcircle/connector.go index e77179fa46..b71163a1da 100644 --- a/components/payments/internal/app/connectors/bankingcircle/connector.go +++ b/components/payments/internal/app/connectors/bankingcircle/connector.go @@ -7,6 +7,7 @@ import ( "github.com/formancehq/payments/internal/app/models" "github.com/formancehq/payments/internal/app/task" "github.com/formancehq/stack/libs/go-libs/logging" + "github.com/pkg/errors" "go.opentelemetry.io/otel/attribute" ) @@ -23,9 +24,9 @@ type Connector struct { cfg Config } -func (c *Connector) InitiateTransfer(ctx task.ConnectorContext, transfer models.Transfer) error { +func (c *Connector) InitiatePayment(ctx task.ConnectorContext, transfer *models.TransferInitiation) error { // TODO implement me - panic("implement me") + return errors.New("not implemented") } func (c *Connector) Install(ctx task.ConnectorContext) error { diff --git a/components/payments/internal/app/connectors/currency/currency.go b/components/payments/internal/app/connectors/currency/currency.go index de8d66e7ec..736ac0a08d 100644 --- a/components/payments/internal/app/connectors/currency/currency.go +++ b/components/payments/internal/app/connectors/currency/currency.go @@ -1,6 +1,7 @@ package currency import ( + "errors" "fmt" "strings" @@ -135,13 +136,28 @@ func FormatAsset(cur string) models.Asset { return models.Asset(fmt.Sprintf("%s/%d", asset, def.decimals)) } -func GetPrecision(cur string) int { +func GetPrecision(cur string) (int, error) { asset := strings.ToUpper(string(cur)) def, ok := currencies()[asset] if !ok { - return 0 + return 0, errors.New("missing currencies") } - return def.decimals + return def.decimals, nil +} + +func GetCurrencyAndPrecisionFromAsset(asset models.Asset) (string, int, error) { + parts := strings.Split(asset.String(), "/") + if len(parts) != 2 { + return "", 0, errors.New("invalid asset") + } + + currency := parts[0] + precision, err := GetPrecision(currency) + if err != nil { + return "", 0, err + } + + return currency, precision, nil } diff --git a/components/payments/internal/app/connectors/currencycloud/client/payout.go b/components/payments/internal/app/connectors/currencycloud/client/payout.go new file mode 100644 index 0000000000..478f2130f8 --- /dev/null +++ b/components/payments/internal/app/connectors/currencycloud/client/payout.go @@ -0,0 +1,105 @@ +package client + +import ( + "context" + "encoding/json" + "fmt" + "net/http" + "net/url" + "strings" +) + +type PayoutRequest struct { + OnBehalfOf string `json:"on_behalf_of"` + BeneficiaryID string `json:"beneficiary_id"` + Currency string `json:"currency"` + Amount string `json:"amount"` + Reference string `json:"reference"` + UniqueRequestID string `json:"unique_request_id"` +} + +func (pr *PayoutRequest) ToFormData() url.Values { + form := url.Values{} + form.Set("on_behalf_of", pr.OnBehalfOf) + form.Set("beneficiary_id", pr.BeneficiaryID) + form.Set("currency", pr.Currency) + form.Set("amount", pr.Amount) + form.Set("reference", pr.Reference) + if pr.UniqueRequestID != "" { + form.Set("unique_request_id", pr.UniqueRequestID) + } + + return form +} + +type PayoutResponse struct { + ID string `json:"id"` + Amount string `json:"amount"` + BeneficiaryID string `json:"beneficiary_id"` + Currency string `json:"currency"` + Reference string `json:"reference"` + Status string `json:"status"` + Reason string `json:"reason"` + CreatorContactID string `json:"creator_contact_id"` + PaymentType string `json:"payment_type"` + TransferredAt string `json:"transferred_at"` + PaymentDate string `json:"payment_date"` + FailureReason string `json:"failure_reason"` + CreatedAt string `json:"created_at"` + UpdatedAt string `json:"updated_at"` + UniqueRequestID string `json:"unique_request_id"` +} + +func (c *Client) InitiatePayout(ctx context.Context, payoutRequest *PayoutRequest) (*PayoutResponse, error) { + form := payoutRequest.ToFormData() + + req, err := http.NewRequestWithContext(ctx, http.MethodPost, + c.buildEndpoint("v2/payments/create"), strings.NewReader(form.Encode())) + if err != nil { + return nil, fmt.Errorf("failed to create request: %w", err) + } + req.Header.Set("Content-Type", "application/x-www-form-urlencoded") + + resp, err := c.httpClient.Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("unexpected status code: %d", resp.StatusCode) + } + + var payoutResponse PayoutResponse + if err = json.NewDecoder(resp.Body).Decode(&payoutResponse); err != nil { + return nil, err + } + + return &payoutResponse, nil +} + +func (c *Client) GetPayout(ctx context.Context, payoutID string) (*PayoutResponse, error) { + req, err := http.NewRequestWithContext(ctx, http.MethodPost, + c.buildEndpoint("v2/payments/%s", payoutID), http.NoBody) + if err != nil { + return nil, fmt.Errorf("failed to create request: %w", err) + } + req.Header.Add("Accept", "application/json") + + resp, err := c.httpClient.Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("unexpected status code: %d", resp.StatusCode) + } + + var payoutResponse PayoutResponse + if err = json.NewDecoder(resp.Body).Decode(&payoutResponse); err != nil { + return nil, err + } + + return &payoutResponse, nil +} diff --git a/components/payments/internal/app/connectors/currencycloud/client/transfer.go b/components/payments/internal/app/connectors/currencycloud/client/transfer.go new file mode 100644 index 0000000000..6572b6c3fc --- /dev/null +++ b/components/payments/internal/app/connectors/currencycloud/client/transfer.go @@ -0,0 +1,106 @@ +package client + +import ( + "context" + "encoding/json" + "fmt" + "net/http" + "net/url" + "strings" +) + +type TransferRequest struct { + SourceAccountID string `json:"source_account_id"` + DestinationAccountID string `json:"destination_account_id"` + Currency string `json:"currency"` + Amount float64 `json:"amount"` + Reason string `json:"reason,omitempty"` + UniqueRequestID string `json:"unique_request_id,omitempty"` +} + +func (tr *TransferRequest) ToFormData() url.Values { + form := url.Values{} + form.Set("source_account_id", tr.SourceAccountID) + form.Set("destination_account_id", tr.DestinationAccountID) + form.Set("currency", tr.Currency) + form.Set("amount", fmt.Sprintf("%f", tr.Amount)) + if tr.Reason != "" { + form.Set("reason", tr.Reason) + } + if tr.UniqueRequestID != "" { + form.Set("unique_request_id", tr.UniqueRequestID) + } + + return form +} + +type TransferResponse struct { + ID string `json:"id"` + ShortReference string `json:"short_reference"` + SourceAccountID string `json:"source_account_id"` + DestinationAccountID string `json:"destination_account_id"` + Currency string `json:"currency"` + Amount string `json:"amount"` + Status string `json:"status"` + CreatedAt string `json:"created_at"` + UpdatedAt string `json:"updated_at"` + CompletedAt string `json:"completed_at"` + CreatorAccountID string `json:"creator_account_id"` + CreatorContactID string `json:"creator_contact_id"` + Reason string `json:"reason"` + UniqueRequestID string `json:"unique_request_id"` +} + +func (c *Client) InitiateTransfer(ctx context.Context, transferRequest *TransferRequest) (*TransferResponse, error) { + form := transferRequest.ToFormData() + + req, err := http.NewRequestWithContext(ctx, http.MethodPost, + c.buildEndpoint("v2/transfers/create"), strings.NewReader(form.Encode())) + if err != nil { + return nil, fmt.Errorf("failed to create request: %w", err) + } + req.Header.Set("Content-Type", "application/x-www-form-urlencoded") + + resp, err := c.httpClient.Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("unexpected status code: %d", resp.StatusCode) + } + + var res TransferResponse + if err = json.NewDecoder(resp.Body).Decode(&res); err != nil { + return nil, err + } + + return &res, nil +} + +func (c *Client) GetTransfer(ctx context.Context, transferID string) (*TransferResponse, error) { + req, err := http.NewRequestWithContext(ctx, http.MethodPost, + c.buildEndpoint("v2/transfers/%s", transferID), http.NoBody) + if err != nil { + return nil, fmt.Errorf("failed to create request: %w", err) + } + req.Header.Add("Accept", "application/json") + + resp, err := c.httpClient.Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("unexpected status code: %d", resp.StatusCode) + } + + var res TransferResponse + if err = json.NewDecoder(resp.Body).Decode(&res); err != nil { + return nil, err + } + + return &res, nil +} diff --git a/components/payments/internal/app/connectors/currencycloud/connector.go b/components/payments/internal/app/connectors/currencycloud/connector.go index 34fad749ab..026852de52 100644 --- a/components/payments/internal/app/connectors/currencycloud/connector.go +++ b/components/payments/internal/app/connectors/currencycloud/connector.go @@ -4,6 +4,7 @@ import ( "context" "github.com/formancehq/payments/internal/app/models" + "github.com/pkg/errors" "go.opentelemetry.io/otel/attribute" "github.com/formancehq/payments/internal/app/integration" @@ -24,9 +25,9 @@ type Connector struct { cfg Config } -func (c *Connector) InitiateTransfer(ctx task.ConnectorContext, transfer models.Transfer) error { +func (c *Connector) InitiatePayment(ctx task.ConnectorContext, transfer *models.TransferInitiation) error { // TODO implement me - panic("implement me") + return errors.New("not implemented") } func (c *Connector) Install(ctx task.ConnectorContext) error { diff --git a/components/payments/internal/app/connectors/dummypay/connector.go b/components/payments/internal/app/connectors/dummypay/connector.go index 17cbed107b..09f1c72021 100644 --- a/components/payments/internal/app/connectors/dummypay/connector.go +++ b/components/payments/internal/app/connectors/dummypay/connector.go @@ -8,6 +8,7 @@ import ( "github.com/formancehq/payments/internal/app/models" "github.com/formancehq/payments/internal/app/task" "github.com/formancehq/stack/libs/go-libs/logging" + "github.com/pkg/errors" "go.opentelemetry.io/otel/attribute" ) @@ -27,9 +28,9 @@ type Connector struct { fs fs } -func (c *Connector) InitiateTransfer(ctx task.ConnectorContext, transfer models.Transfer) error { +func (c *Connector) InitiatePayment(ctx task.ConnectorContext, transfer *models.TransferInitiation) error { // TODO implement me - panic("implement me") + return errors.New("not implemented") } // Install executes post-installation steps to read and generate files. diff --git a/components/payments/internal/app/connectors/mangopay/client/payout.go b/components/payments/internal/app/connectors/mangopay/client/payout.go new file mode 100644 index 0000000000..7f2e1343b7 --- /dev/null +++ b/components/payments/internal/app/connectors/mangopay/client/payout.go @@ -0,0 +1,111 @@ +package client + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "net/http" +) + +type PayoutRequest struct { + AuthorID string `json:"AuthorId"` + DebitedFunds Funds `json:"DebitedFunds"` + Fees Funds `json:"Fees"` + DebitedWalletID string `json:"DebitedWalletId"` + BankAccountID string `json:"BankAccountId"` + BankWireRef string `json:"BankWireRef,omitempty"` + PayoutModeRequested string `json:"PayoutModeRequested,omitempty"` +} + +type PayoutResponse struct { + ID string `json:"Id"` + ModeRequest string `json:"ModeRequested"` + ModeApplied string `json:"ModeApplied"` + FallbackReason string `json:"FallbackReason"` + CreationDate int64 `json:"CreationDate"` + AuthorID string `json:"AuthorId"` + DebitedFunds Funds `json:"DebitedFunds"` + Fees Funds `json:"Fees"` + CreditedFunds Funds `json:"CreditedFunds"` + Status string `json:"Status"` + ResultCode string `json:"ResultCode"` + ResultMessage string `json:"ResultMessage"` + Type string `json:"Type"` + Nature string `json:"Nature"` + ExecutionDate int64 `json:"ExecutionDate"` + BankAccountID string `json:"BankAccountId"` + DebitedWalletID string `json:"DebitedWalletId"` + PaymentType string `json:"PaymentType"` + BankWireRef string `json:"BankWireRef"` +} + +func (c *Client) InitiatePayout(ctx context.Context, payoutRequest *PayoutRequest) (*PayoutResponse, error) { + endpoint := fmt.Sprintf("%s/v2.01/%s/payouts/bankwire", c.endpoint, c.clientID) + + body, err := json.Marshal(payoutRequest) + if err != nil { + return nil, fmt.Errorf("failed to marshal transfer request: %w", err) + } + + req, err := http.NewRequestWithContext(ctx, http.MethodPost, endpoint, bytes.NewBuffer(body)) + if err != nil { + return nil, fmt.Errorf("failed to create login request: %w", err) + } + req.Header.Set("Content-Type", "application/json") + + resp, err := c.httpClient.Do(req) + if err != nil { + return nil, fmt.Errorf("failed to get wallets: %w", err) + } + + defer func() { + err = resp.Body.Close() + if err != nil { + c.logger.Error(err) + } + }() + + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("transfer request failed with status %s", resp.Status) + } + + var payoutResponse PayoutResponse + if err := json.NewDecoder(resp.Body).Decode(&payoutResponse); err != nil { + return nil, fmt.Errorf("failed to unmarshal wallets response body: %w", err) + } + + return &payoutResponse, nil +} + +func (c *Client) GetPayout(ctx context.Context, payoutID string) (*PayoutResponse, error) { + endpoint := fmt.Sprintf("%s/v2.01/%s/payouts/%s", c.endpoint, c.clientID, payoutID) + + req, err := http.NewRequestWithContext(ctx, http.MethodGet, endpoint, nil) + if err != nil { + return nil, fmt.Errorf("failed to create login request: %w", err) + } + + resp, err := c.httpClient.Do(req) + if err != nil { + return nil, fmt.Errorf("failed to get wallets: %w", err) + } + + defer func() { + err = resp.Body.Close() + if err != nil { + c.logger.Error(err) + } + }() + + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("transfer request failed with status %s", resp.Status) + } + + var payoutResponse PayoutResponse + if err := json.NewDecoder(resp.Body).Decode(&payoutResponse); err != nil { + return nil, fmt.Errorf("failed to unmarshal wallets response body: %w", err) + } + + return &payoutResponse, nil +} diff --git a/components/payments/internal/app/connectors/mangopay/client/transfer.go b/components/payments/internal/app/connectors/mangopay/client/transfer.go new file mode 100644 index 0000000000..2dd2191870 --- /dev/null +++ b/components/payments/internal/app/connectors/mangopay/client/transfer.go @@ -0,0 +1,110 @@ +package client + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "net/http" +) + +type Funds struct { + Currency string `json:"Currency"` + Amount json.Number `json:"Amount"` +} + +type TransferRequest struct { + AuthorID string `json:"AuthorId"` + CreditedUserID string `json:"CreditedUserId,omitempty"` + DebitedFunds Funds `json:"DebitedFunds"` + Fees Funds `json:"Fees"` + DebitedWalletID string `json:"DebitedWalletId"` + CreditedWalletID string `json:"CreditedWalletId"` +} + +type TransferResponse struct { + ID string `json:"Id"` + CreationDate int64 `json:"CreationDate"` + AuthorID string `json:"AuthorId"` + CreditedUserID string `json:"CreditedUserId"` + DebitedFunds Funds `json:"DebitedFunds"` + Fees Funds `json:"Fees"` + CreditedFunds Funds `json:"CreditedFunds"` + Status string `json:"Status"` + ResultCode string `json:"ResultCode"` + ResultMessage string `json:"ResultMessage"` + Type string `json:"Type"` + ExecutionDate int64 `json:"ExecutionDate"` + Nature string `json:"Nature"` + DebitedWalletID string `json:"DebitedWalletId"` + CreditedWalletID string `json:"CreditedWalletId"` +} + +func (c *Client) InitiateWalletTransfer(ctx context.Context, transferRequest *TransferRequest) (*TransferResponse, error) { + endpoint := fmt.Sprintf("%s/v2.01/%s/transfers", c.endpoint, c.clientID) + + body, err := json.Marshal(transferRequest) + if err != nil { + return nil, fmt.Errorf("failed to marshal transfer request: %w", err) + } + + req, err := http.NewRequestWithContext(ctx, http.MethodPost, endpoint, bytes.NewBuffer(body)) + if err != nil { + return nil, fmt.Errorf("failed to create login request: %w", err) + } + req.Header.Set("Content-Type", "application/json") + + resp, err := c.httpClient.Do(req) + if err != nil { + return nil, fmt.Errorf("failed to get wallets: %w", err) + } + + defer func() { + err = resp.Body.Close() + if err != nil { + c.logger.Error(err) + } + }() + + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("transfer request failed with status %s", resp.Status) + } + + var transferResponse TransferResponse + if err := json.NewDecoder(resp.Body).Decode(&transferResponse); err != nil { + return nil, fmt.Errorf("failed to unmarshal wallets response body: %w", err) + } + + return &transferResponse, nil +} + +func (c *Client) GetWalletTransfer(ctx context.Context, transferID string) (*TransferResponse, error) { + endpoint := fmt.Sprintf("%s/v2.01/%s/transfers/%s", c.endpoint, c.clientID, transferID) + req, err := http.NewRequestWithContext(ctx, http.MethodGet, endpoint, http.NoBody) + if err != nil { + return nil, fmt.Errorf("failed to create login request: %w", err) + } + + resp, err := c.httpClient.Do(req) + if err != nil { + return nil, fmt.Errorf("failed to get wallets: %w", err) + } + + defer func() { + err = resp.Body.Close() + if err != nil { + c.logger.Error(err) + } + }() + + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("transfer request failed with status %s", resp.Status) + } + + var transfer TransferResponse + if err := json.NewDecoder(resp.Body).Decode(&transfer); err != nil { + return nil, fmt.Errorf("failed to unmarshal wallets response body: %w", err) + } + + return &transfer, nil +} diff --git a/components/payments/internal/app/connectors/mangopay/connector.go b/components/payments/internal/app/connectors/mangopay/connector.go index 28b9fd5ba9..c08a7f4fd4 100644 --- a/components/payments/internal/app/connectors/mangopay/connector.go +++ b/components/payments/internal/app/connectors/mangopay/connector.go @@ -2,10 +2,12 @@ package mangopay import ( "context" + "errors" "github.com/formancehq/payments/internal/app/integration" "github.com/formancehq/payments/internal/app/models" "github.com/formancehq/payments/internal/app/task" + "github.com/formancehq/stack/libs/go-libs/contextutil" "github.com/formancehq/stack/libs/go-libs/logging" "go.opentelemetry.io/otel/attribute" ) @@ -23,9 +25,32 @@ type Connector struct { cfg Config } -func (c *Connector) InitiateTransfer(ctx task.ConnectorContext, transfer models.Transfer) error { - // TODO implement me - panic("implement me") +func (c *Connector) InitiatePayment(ctx task.ConnectorContext, transfer *models.TransferInitiation) error { + // Detach the context since we're launching an async task and we're mostly + // coming from a HTTP request. + detachedCtx, _ := contextutil.Detached(ctx.Context()) + taskDescriptor, err := models.EncodeTaskDescriptor(TaskDescriptor{ + Name: "Initiate payment", + Key: taskNameInitiatePayment, + TransferID: transfer.ID.String(), + }) + if err != nil { + return err + } + + err = ctx.Scheduler().Schedule(detachedCtx, taskDescriptor, models.TaskSchedulerOptions{ + // We want to polling every c.cfg.PollingPeriod.Duration seconds the users + // and their transactions. + ScheduleOption: models.OPTIONS_RUN_NOW, + // No need to restart this task, since the connector is not existing or + // was uninstalled previously, the task does not exists in the database + Restart: true, + }) + if err != nil && !errors.Is(err, task.ErrAlreadyScheduled) { + return err + } + + return nil } func (c *Connector) Install(ctx task.ConnectorContext) error { diff --git a/components/payments/internal/app/connectors/mangopay/task_fetch_bank_accounts.go b/components/payments/internal/app/connectors/mangopay/task_fetch_bank_accounts.go index a2a05bb4b6..a96b0ae5de 100644 --- a/components/payments/internal/app/connectors/mangopay/task_fetch_bank_accounts.go +++ b/components/payments/internal/app/connectors/mangopay/task_fetch_bank_accounts.go @@ -61,7 +61,10 @@ func taskFetchBankAccounts(logger logging.Logger, client *client.Client, userID Provider: models.ConnectorProviderMangopay, AccountName: bankAccount.OwnerName, Type: models.AccountTypeExternal, - RawData: buf, + Metadata: map[string]string{ + "user_id": userID, + }, + RawData: buf, }) } diff --git a/components/payments/internal/app/connectors/mangopay/task_fetch_wallets.go b/components/payments/internal/app/connectors/mangopay/task_fetch_wallets.go index fdffb93aea..d62b341826 100644 --- a/components/payments/internal/app/connectors/mangopay/task_fetch_wallets.go +++ b/components/payments/internal/app/connectors/mangopay/task_fetch_wallets.go @@ -82,7 +82,10 @@ func taskFetchWallets(logger logging.Logger, client *client.Client, userID strin AccountName: wallet.Description, // Wallets are internal accounts on our side, since we // can have their balances. - Type: models.AccountTypeInternal, + Type: models.AccountTypeInternal, + Metadata: map[string]string{ + "user_id": userID, + }, RawData: buf, }) diff --git a/components/payments/internal/app/connectors/mangopay/task_payments.go b/components/payments/internal/app/connectors/mangopay/task_payments.go new file mode 100644 index 0000000000..3789b16aa1 --- /dev/null +++ b/components/payments/internal/app/connectors/mangopay/task_payments.go @@ -0,0 +1,309 @@ +package mangopay + +import ( + "context" + "encoding/json" + "errors" + "regexp" + "time" + + "github.com/formancehq/payments/internal/app/connectors/currency" + "github.com/formancehq/payments/internal/app/connectors/mangopay/client" + "github.com/formancehq/payments/internal/app/ingestion" + "github.com/formancehq/payments/internal/app/metrics" + "github.com/formancehq/payments/internal/app/models" + "github.com/formancehq/payments/internal/app/storage" + "github.com/formancehq/payments/internal/app/task" + "github.com/formancehq/stack/libs/go-libs/contextutil" + "github.com/formancehq/stack/libs/go-libs/logging" + "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/metric" +) + +var ( + initiateTransferAttrs = metric.WithAttributes(append(connectorAttrs, attribute.String(metrics.ObjectAttributeKey, "initiate_transfer"))...) + initiatePayoutAttrs = metric.WithAttributes(append(connectorAttrs, attribute.String(metrics.ObjectAttributeKey, "initiate_payout"))...) + bankWireRefPatternRegexp = regexp.MustCompile("[a-zA-Z0-9 ]*") +) + +func taskInitiatePayment(logger logging.Logger, mangopayClient *client.Client, transferID string) task.Task { + return func( + ctx context.Context, + ingester ingestion.Ingester, + scheduler task.Scheduler, + storageReader storage.Reader, + metricsRegistry metrics.MetricsRegistry, + ) error { + logger.Info("initiate payment for transfer-initiation %s", transferID) + + transferInitiationID := models.MustTransferInitiationIDFromString(transferID) + + attrs := metric.WithAttributes(connectorAttrs...) + var err error + defer func() { + if err != nil { + metricsRegistry.ConnectorObjectsErrors().Add(ctx, 1, attrs) + if err := ingester.UpdateTransferInitiationStatus(ctx, transferInitiationID, models.TransferInitiationStatusFailed, err.Error()); err != nil { + logger.Error("failed to update transfer initiation status: %v", err) + } + } + }() + + err = ingester.UpdateTransferInitiationStatus(ctx, transferInitiationID, models.TransferInitiationStatusProcessing, "") + if err != nil { + return err + } + + var transfer *models.TransferInitiation + transfer, err = getTransfer(ctx, storageReader, transferInitiationID, true) + if err != nil { + return err + } + + attrs = initiateTransferAttrs + if transfer.Type == models.TransferInitiationTypePayout { + attrs = initiatePayoutAttrs + } + + logger.Info("initiate payment between", transfer.SourceAccountID, " and %s", transfer.DestinationAccountID) + + now := time.Now() + defer func() { + metricsRegistry.ConnectorObjectsLatency().Record(ctx, time.Since(now).Milliseconds(), attrs) + }() + + if transfer.SourceAccount.Type == models.AccountTypeExternal { + err = errors.New("payin not implemented: source account must be an internal account") + return err + } + + userID, ok := transfer.SourceAccount.Metadata["user_id"] + if !ok || userID == "" { + err = errors.New("missing user_id in source account metadata") + return err + } + + var curr string + curr, _, err = currency.GetCurrencyAndPrecisionFromAsset(transfer.Asset) + if err != nil { + return err + } + + bankWireRef := "" + if len(transfer.Description) <= 12 && bankWireRefPatternRegexp.MatchString(transfer.Description) { + bankWireRef = transfer.Description + } + + var connectorPaymentID string + ctx, cancel := context.WithTimeout(ctx, 10*time.Second) + defer cancel() + switch transfer.DestinationAccount.Type { + case models.AccountTypeInternal: + // Transfer between internal accounts + var resp *client.TransferResponse + resp, err = mangopayClient.InitiateWalletTransfer(ctx, &client.TransferRequest{ + AuthorID: userID, + DebitedFunds: client.Funds{ + Currency: curr, + Amount: json.Number(transfer.Amount.String()), + }, + Fees: client.Funds{ + Currency: curr, + Amount: "0", + }, + DebitedWalletID: transfer.SourceAccount.Reference, + CreditedWalletID: transfer.DestinationAccount.Reference, + }) + if err != nil { + return err + } + + connectorPaymentID = resp.ID + case models.AccountTypeExternal: + // Payout to an external account + var resp *client.PayoutResponse + resp, err = mangopayClient.InitiatePayout(ctx, &client.PayoutRequest{ + AuthorID: userID, + DebitedFunds: client.Funds{ + Currency: curr, + Amount: json.Number(transfer.Amount.String()), + }, + Fees: client.Funds{ + Currency: curr, + Amount: json.Number("0"), + }, + DebitedWalletID: transfer.SourceAccountID.Reference, + BankAccountID: transfer.DestinationAccount.Reference, + BankWireRef: bankWireRef, + }) + if err != nil { + return err + } + + connectorPaymentID = resp.ID + } + metricsRegistry.ConnectorObjects().Add(ctx, 1, attrs) + + err = ingester.UpdateTransferInitiationPaymentReference(ctx, transferInitiationID, connectorPaymentID) + if err != nil { + return err + } + + taskDescriptor, err := models.EncodeTaskDescriptor(TaskDescriptor{ + Name: "Update transfer initiation status", + Key: taskNameUpdatePaymentStatus, + TransferID: transfer.ID.String(), + Attempt: 1, + }) + if err != nil { + return err + } + + ctx, _ = contextutil.DetachedWithTimeout(ctx, 10*time.Second) + err = scheduler.Schedule(ctx, taskDescriptor, models.TaskSchedulerOptions{ + // We want to polling every c.cfg.PollingPeriod.Duration seconds the users + // and their transactions. + ScheduleOption: models.OPTIONS_RUN_NOW, + // No need to restart this task, since the connector is not existing or + // was uninstalled previously, the task does not exists in the database + Restart: true, + }) + if err != nil && !errors.Is(err, task.ErrAlreadyScheduled) { + return err + } + + return nil + } +} + +var ( + updateTransferAttrs = metric.WithAttributes(append(connectorAttrs, attribute.String(metrics.ObjectAttributeKey, "update_transfer"))...) + updatePayoutAttrs = metric.WithAttributes(append(connectorAttrs, attribute.String(metrics.ObjectAttributeKey, "update_payout"))...) +) + +func taskUpdatePaymentStatus( + logger logging.Logger, + mangopayClient *client.Client, + transferID string, + attempt int, +) task.Task { + return func( + ctx context.Context, + ingester ingestion.Ingester, + scheduler task.Scheduler, + storageReader storage.Reader, + metricsRegistry metrics.MetricsRegistry, + ) error { + transferInitiationID := models.MustTransferInitiationIDFromString(transferID) + transfer, err := getTransfer(ctx, storageReader, transferInitiationID, false) + if err != nil { + return err + } + logger.Info("attempt: ", attempt, " fetching status of ", transfer.Reference) + + attrs := updateTransferAttrs + if transfer.Type == models.TransferInitiationTypePayout { + attrs = updatePayoutAttrs + } + + now := time.Now() + defer func() { + metricsRegistry.ConnectorObjectsLatency().Record(ctx, time.Since(now).Milliseconds(), attrs) + }() + + defer func() { + if err != nil { + metricsRegistry.ConnectorObjectsErrors().Add(ctx, 1, attrs) + } + }() + + var status string + var resultMessage string + switch transfer.Type { + case models.TransferInitiationTypeTransfer: + var resp *client.TransferResponse + resp, err = mangopayClient.GetWalletTransfer(ctx, transfer.Reference) + if err != nil { + return err + } + + status = resp.Status + resultMessage = resp.ResultMessage + case models.TransferInitiationTypePayout: + var resp *client.PayoutResponse + resp, err = mangopayClient.GetPayout(ctx, transfer.Reference) + if err != nil { + return err + } + + status = resp.Status + resultMessage = resp.ResultMessage + } + + switch status { + case "CREATED": + taskDescriptor, err := models.EncodeTaskDescriptor(TaskDescriptor{ + Name: "Update transfer initiation status", + Key: taskNameUpdatePaymentStatus, + TransferID: transfer.ID.String(), + Attempt: attempt + 1, + }) + if err != nil { + return err + } + + err = scheduler.Schedule(ctx, taskDescriptor, models.TaskSchedulerOptions{ + ScheduleOption: models.OPTIONS_RUN_IN_DURATION, + Duration: 2 * time.Minute, + Restart: true, + }) + if err != nil && !errors.Is(err, task.ErrAlreadyScheduled) { + return err + } + case "SUCCEEDED": + err = ingester.UpdateTransferInitiationStatus(ctx, transferInitiationID, models.TransferInitiationStatusProcessed, "") + if err != nil { + return err + } + + return nil + case "FAILED": + err = ingester.UpdateTransferInitiationStatus(ctx, transferInitiationID, models.TransferInitiationStatusFailed, resultMessage) + if err != nil { + return err + } + + return nil + } + + return nil + } +} + +func getTransfer( + ctx context.Context, + reader storage.Reader, + transferID models.TransferInitiationID, + expand bool, +) (*models.TransferInitiation, error) { + transfer, err := reader.ReadTransferInitiation(ctx, transferID) + if err != nil { + return nil, err + } + + if expand { + sourceAccount, err := reader.GetAccount(ctx, transfer.SourceAccountID.String()) + if err != nil { + return nil, err + } + transfer.SourceAccount = sourceAccount + + destinationAccount, err := reader.GetAccount(ctx, transfer.DestinationAccountID.String()) + if err != nil { + return nil, err + } + transfer.DestinationAccount = destinationAccount + } + + return transfer, nil +} diff --git a/components/payments/internal/app/connectors/mangopay/task_resolve.go b/components/payments/internal/app/connectors/mangopay/task_resolve.go index 6db7ac1905..75fd7167dc 100644 --- a/components/payments/internal/app/connectors/mangopay/task_resolve.go +++ b/components/payments/internal/app/connectors/mangopay/task_resolve.go @@ -10,11 +10,13 @@ import ( ) const ( - taskNameMain = "main" - taskNameFetchUsers = "fetch-users" - taskNameFetchTransactions = "fetch-transactions" - taskNameFetchWallets = "fetch-wallets" - taskNameFetchBankAccounts = "fetch-bank-accounts" + taskNameMain = "main" + taskNameFetchUsers = "fetch-users" + taskNameFetchTransactions = "fetch-transactions" + taskNameFetchWallets = "fetch-wallets" + taskNameFetchBankAccounts = "fetch-bank-accounts" + taskNameInitiatePayment = "initiate-payment" + taskNameUpdatePaymentStatus = "update-payment-status" ) // TaskDescriptor is the definition of a task. @@ -23,6 +25,8 @@ type TaskDescriptor struct { Key string `json:"key" yaml:"key" bson:"key"` UserID string `json:"userID" yaml:"userID" bson:"userID"` WalletID string `json:"walletID" yaml:"walletID" bson:"walletID"` + TransferID string `json:"transferID" yaml:"transferID" bson:"transferID"` + Attempt int `json:"attempt" yaml:"attempt" bson:"attempt"` PollingPeriod connectors.Duration `json:"pollingPeriod" yaml:"pollingPeriod" bson:"pollingPeriod"` } @@ -50,6 +54,10 @@ func resolveTasks(logger logging.Logger, config Config) func(taskDefinition Task return taskFetchBankAccounts(logger, mangopayClient, taskDescriptor.UserID) case taskNameFetchTransactions: return taskFetchTransactions(logger, mangopayClient, taskDescriptor.WalletID) + case taskNameInitiatePayment: + return taskInitiatePayment(logger, mangopayClient, taskDescriptor.TransferID) + case taskNameUpdatePaymentStatus: + return taskUpdatePaymentStatus(logger, mangopayClient, taskDescriptor.TransferID, taskDescriptor.Attempt) case taskNameFetchWallets: return taskFetchWallets(logger, mangopayClient, taskDescriptor.UserID) } diff --git a/components/payments/internal/app/connectors/modulr/client/payout.go b/components/payments/internal/app/connectors/modulr/client/payout.go new file mode 100644 index 0000000000..e62adc8f00 --- /dev/null +++ b/components/payments/internal/app/connectors/modulr/client/payout.go @@ -0,0 +1,73 @@ +package client + +import ( + "bytes" + "encoding/json" + "fmt" + "math/big" + "net/http" +) + +type PayoutRequest struct { + SourceAccountID string `json:"sourceAccountId"` + Destination struct { + Type string `json:"type"` + ID string `json:"id"` + } `json:"destination"` + Currency string `json:"currency"` + Amount *big.Int `json:"amount"` + Reference string `json:"reference"` + ExternalReference string `json:"externalReference"` +} + +type PayoutResponse struct { + ID string `json:"id"` + Status string `json:"status"` + CreatedDate string `json:"createdDate"` + ExternalReference string `json:"externalReference"` + ApprovalStatus string `json:"approvalStatus"` + Message string `json:"message"` +} + +func (c *Client) InitiatePayout(payoutRequest *PayoutRequest) (*PayoutResponse, error) { + body, err := json.Marshal(payoutRequest) + if err != nil { + return nil, err + } + + resp, err := c.httpClient.Post(c.buildEndpoint("payments"), "application/json", bytes.NewBuffer(body)) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusCreated { + return nil, fmt.Errorf("unexpected status code: %d", resp.StatusCode) + } + + var res PayoutResponse + if err = json.NewDecoder(resp.Body).Decode(&res); err != nil { + return nil, err + } + + return &res, nil +} + +func (c *Client) GetPayout(payoutID string) (*PayoutResponse, error) { + resp, err := c.httpClient.Get(c.buildEndpoint("payments?id=%s", payoutID)) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("unexpected status code: %d", resp.StatusCode) + } + + var res PayoutResponse + if err = json.NewDecoder(resp.Body).Decode(&res); err != nil { + return nil, err + } + + return &res, nil +} diff --git a/components/payments/internal/app/connectors/modulr/client/transfer.go b/components/payments/internal/app/connectors/modulr/client/transfer.go new file mode 100644 index 0000000000..6e6f9002b1 --- /dev/null +++ b/components/payments/internal/app/connectors/modulr/client/transfer.go @@ -0,0 +1,73 @@ +package client + +import ( + "bytes" + "encoding/json" + "fmt" + "math/big" + "net/http" +) + +type TransferRequest struct { + SourceAccountID string `json:"sourceAccountId"` + Destination struct { + Type string `json:"type"` + ID string `json:"id"` + } `json:"destination"` + Currency string `json:"currency"` + Amount *big.Int `json:"amount"` + Reference string `json:"reference"` + ExternalReference string `json:"externalReference"` +} + +type TransferResponse struct { + ID string `json:"id"` + Status string `json:"status"` + CreatedDate string `json:"createdDate"` + ExternalReference string `json:"externalReference"` + ApprovalStatus string `json:"approvalStatus"` + Message string `json:"message"` +} + +func (c *Client) InitiateTransfer(transferRequest *TransferRequest) (*TransferResponse, error) { + body, err := json.Marshal(transferRequest) + if err != nil { + return nil, err + } + + resp, err := c.httpClient.Post(c.buildEndpoint("payments"), "application/json", bytes.NewBuffer(body)) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusCreated { + return nil, fmt.Errorf("unexpected status code: %d", resp.StatusCode) + } + + var res TransferResponse + if err = json.NewDecoder(resp.Body).Decode(&res); err != nil { + return nil, err + } + + return &res, nil +} + +func (c *Client) GetTransfer(transferID string) (*TransferResponse, error) { + resp, err := c.httpClient.Get(c.buildEndpoint("payments?id=%s", transferID)) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("unexpected status code: %d", resp.StatusCode) + } + + var res TransferResponse + if err = json.NewDecoder(resp.Body).Decode(&res); err != nil { + return nil, err + } + + return &res, nil +} diff --git a/components/payments/internal/app/connectors/modulr/connector.go b/components/payments/internal/app/connectors/modulr/connector.go index 701b59ad87..21bf55e564 100644 --- a/components/payments/internal/app/connectors/modulr/connector.go +++ b/components/payments/internal/app/connectors/modulr/connector.go @@ -4,6 +4,7 @@ import ( "context" "github.com/formancehq/payments/internal/app/models" + "github.com/pkg/errors" "go.opentelemetry.io/otel/attribute" "github.com/formancehq/payments/internal/app/integration" @@ -24,9 +25,9 @@ type Connector struct { cfg Config } -func (c *Connector) InitiateTransfer(ctx task.ConnectorContext, transfer models.Transfer) error { +func (c *Connector) InitiatePayment(ctx task.ConnectorContext, transfer *models.TransferInitiation) error { // TODO implement me - panic("implement me") + return errors.New("not implemented") } func (c *Connector) Install(ctx task.ConnectorContext) error { diff --git a/components/payments/internal/app/connectors/moneycorp/client/balances.go b/components/payments/internal/app/connectors/moneycorp/client/balances.go index f784310692..371d140f4c 100644 --- a/components/payments/internal/app/connectors/moneycorp/client/balances.go +++ b/components/payments/internal/app/connectors/moneycorp/client/balances.go @@ -29,7 +29,6 @@ func (c *Client) GetAccountBalances(ctx context.Context, accountID string) ([]*B if err != nil { return nil, fmt.Errorf("failed to create login request: %w", err) } - req.Header.Set("Content-Type", "application/json") resp, err := c.httpClient.Do(req) diff --git a/components/payments/internal/app/connectors/moneycorp/client/payout.go b/components/payments/internal/app/connectors/moneycorp/client/payout.go new file mode 100644 index 0000000000..b6fa34a9d9 --- /dev/null +++ b/components/payments/internal/app/connectors/moneycorp/client/payout.go @@ -0,0 +1,118 @@ +package client + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "net/http" +) + +type payoutRequest struct { + Payout *PayoutRequest `json:"data"` +} + +type PayoutRequest struct { + SourceAccountID string `json:"-"` + RecipientID int32 `json:"recipientId"` + PaymentDate string `json:"paymentDate"` + PaymentAmount float64 `json:"paymentAmount"` + PaymentCurrency string `json:"paymentCurrency"` + PaymentMethgod string `json:"paymentMethod"` + PaymentReference string `json:"paymentReference"` + ClientReference string `json:"clientReference"` + PaymentPurpose string `json:"paymentPurpose"` +} + +type payoutResponse struct { + Payout *PayoutResponse `json:"data"` +} + +type PayoutResponse struct { + ID string `json:"id"` + Attributes struct { + AccountID string `json:"accountId"` + PaymentAmount float64 `json:"paymentAmount"` + PaymentCurrency string `json:"paymentCurrency"` + PaymentApproved bool `json:"paymentApproved"` + PaymentStatus string `json:"paymentStatus"` + PaymentMethod string `json:"paymentMethod"` + PaymentDate string `json:"paymentDate"` + PaymentValueDate string `json:"paymentValueDate"` + RecipientDetails struct { + RecipientID int32 `json:"recipientId"` + } `json:"recipientDetails"` + PaymentReference string `json:"paymentReference"` + ClientReference string `json:"clientReference"` + CreatedAt string `json:"createdAt"` + CreatedBy string `json:"createdBy"` + UpdatedAt string `json:"updatedAt"` + PaymentPurpose string `json:"paymentPurpose"` + } `json:"attributes"` +} + +func (c *Client) InitiatePayout(ctx context.Context, pr *PayoutRequest) (*PayoutResponse, error) { + endpoint := fmt.Sprintf("%s/accounts/%s/payments", c.endpoint, pr.SourceAccountID) + + body, err := json.Marshal(&payoutRequest{ + Payout: pr, + }) + if err != nil { + return nil, fmt.Errorf("failed to marshal payout request: %w", err) + } + + req, err := http.NewRequestWithContext(ctx, http.MethodPost, endpoint, bytes.NewBuffer(body)) + if err != nil { + return nil, fmt.Errorf("failed to create login request: %w", err) + } + req.Header.Set("Content-Type", "application/json") + + resp, err := c.httpClient.Do(req) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusCreated { + return nil, fmt.Errorf("unexpected status code: %d", resp.StatusCode) + } + + var res payoutResponse + if err = json.NewDecoder(resp.Body).Decode(&res); err != nil { + return nil, err + } + + return res.Payout, nil +} + +func (c *Client) GetPayout(ctx context.Context, accountID string, payoutID string) (*PayoutResponse, error) { + endpoint := fmt.Sprintf("%s/accounts/%s/payments/%s", c.endpoint, accountID, payoutID) + req, err := http.NewRequestWithContext(ctx, http.MethodGet, endpoint, http.NoBody) + if err != nil { + return nil, fmt.Errorf("failed to create get payout request request: %w", err) + } + req.Header.Set("Content-Type", "application/json") + + resp, err := c.httpClient.Do(req) + if err != nil { + return nil, fmt.Errorf("failed to get account balances: %w", err) + } + + defer func() { + err = resp.Body.Close() + if err != nil { + c.logger.Error(err) + } + }() + + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("transfer request failed with status %s", resp.Status) + } + + var payoutResponse payoutResponse + if err := json.NewDecoder(resp.Body).Decode(&payoutResponse); err != nil { + return nil, fmt.Errorf("failed to unmarshal wallets response body: %w", err) + } + + return payoutResponse.Payout, nil +} diff --git a/components/payments/internal/app/connectors/moneycorp/client/transfer.go b/components/payments/internal/app/connectors/moneycorp/client/transfer.go new file mode 100644 index 0000000000..602e167e03 --- /dev/null +++ b/components/payments/internal/app/connectors/moneycorp/client/transfer.go @@ -0,0 +1,117 @@ +package client + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "net/http" +) + +type transferRequest struct { + Transfer *TransferRequest `json:"data"` +} + +type TransferRequest struct { + SourceAccountID string `json:"-"` + ReceivingAccountID string `json:"receivingAccountId"` + TransferAmount float64 `json:"transferAmount"` + TransferCurrency string `json:"transferCurrency"` + TransferReference string `json:"transferReference,omitempty"` + ClientReference string `json:"clientReference,omitempty"` +} + +type transferResponse struct { + Transfer *TransferResponse `json:"data"` +} + +type TransferResponse struct { + ID string `json:"id"` + Attributes struct { + SendingAccountID string `json:"sendingAccountId"` + SendingAccountName string `json:"sendingAccountName"` + ReceivingAccountID string `json:"receivingAccountId"` + ReceivingAccountName string `json:"receivingAccountName"` + CreatedAt string `json:"createdAt"` + CreatedBy string `json:"createdBy"` + UpdatedAt string `json:"updatedAt"` + TransferReference string `json:"transferReference"` + ClientReference string `json:"clientReference"` + TransferDate string `json:"transferDate"` + TransferAmount float64 `json:"transferAmount"` + TransferCurrency string `json:"transferCurrency"` + TransferStatus string `json:"transferStatus"` + } `json:"attributes"` +} + +func (c *Client) InitiateTransfer(ctx context.Context, tr *TransferRequest) (*TransferResponse, error) { + endpoint := fmt.Sprintf("%s/accounts/%s/transfers", c.endpoint, tr.SourceAccountID) + + body, err := json.Marshal(&transferRequest{ + Transfer: tr, + }) + if err != nil { + return nil, fmt.Errorf("failed to marshal transfer request: %w", err) + } + + req, err := http.NewRequestWithContext(ctx, http.MethodPost, endpoint, bytes.NewBuffer(body)) + if err != nil { + return nil, fmt.Errorf("failed to create transfer request: %w", err) + } + req.Header.Set("Content-Type", "application/json") + + resp, err := c.httpClient.Do(req) + if err != nil { + return nil, fmt.Errorf("failed to get account balances: %w", err) + } + + defer func() { + err = resp.Body.Close() + if err != nil { + c.logger.Error(err) + } + }() + + if resp.StatusCode != http.StatusCreated { + return nil, fmt.Errorf("transfer request failed with status %s", resp.Status) + } + + var transferResponse transferResponse + if err := json.NewDecoder(resp.Body).Decode(&transferResponse); err != nil { + return nil, fmt.Errorf("failed to unmarshal wallets response body: %w", err) + } + + return transferResponse.Transfer, nil +} + +func (c *Client) GetTransfer(ctx context.Context, accountID string, transferID string) (*TransferResponse, error) { + endpoint := fmt.Sprintf("%s/accounts/%s/transfers/%s", c.endpoint, accountID, transferID) + req, err := http.NewRequestWithContext(ctx, http.MethodGet, endpoint, http.NoBody) + if err != nil { + return nil, fmt.Errorf("failed to create get transfer request: %w", err) + } + req.Header.Set("Content-Type", "application/json") + + resp, err := c.httpClient.Do(req) + if err != nil { + return nil, fmt.Errorf("failed to get account balances: %w", err) + } + + defer func() { + err = resp.Body.Close() + if err != nil { + c.logger.Error(err) + } + }() + + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("transfer request failed with status %s", resp.Status) + } + + var transferResponse transferResponse + if err := json.NewDecoder(resp.Body).Decode(&transferResponse); err != nil { + return nil, fmt.Errorf("failed to unmarshal wallets response body: %w", err) + } + + return transferResponse.Transfer, nil +} diff --git a/components/payments/internal/app/connectors/moneycorp/connector.go b/components/payments/internal/app/connectors/moneycorp/connector.go index c6880e11d3..6317d121a6 100644 --- a/components/payments/internal/app/connectors/moneycorp/connector.go +++ b/components/payments/internal/app/connectors/moneycorp/connector.go @@ -2,6 +2,7 @@ package moneycorp import ( "context" + "errors" "github.com/formancehq/payments/internal/app/integration" "github.com/formancehq/payments/internal/app/models" @@ -23,9 +24,9 @@ type Connector struct { cfg Config } -func (c *Connector) InitiateTransfer(ctx task.ConnectorContext, transfer models.Transfer) error { +func (c *Connector) InitiatePayment(ctx task.ConnectorContext, transfer *models.TransferInitiation) error { // TODO implement me - panic("implement me") + return errors.New("not implemented") } func (c *Connector) Install(ctx task.ConnectorContext) error { diff --git a/components/payments/internal/app/connectors/moneycorp/task_fetch_balances.go b/components/payments/internal/app/connectors/moneycorp/task_fetch_balances.go index eff0dcb27f..b7712db796 100644 --- a/components/payments/internal/app/connectors/moneycorp/task_fetch_balances.go +++ b/components/payments/internal/app/connectors/moneycorp/task_fetch_balances.go @@ -65,8 +65,13 @@ func ingestBalancesBatch( return fmt.Errorf("failed to parse amount %s", balance.Attributes.AvailableBalance.String()) } + precision, err := currency.GetPrecision(balance.Attributes.CurrencyCode) + if err != nil { + return err + } + var amountInt big.Int - amount.Mul(&amount, big.NewFloat(math.Pow(10, float64(currency.GetPrecision(balance.Attributes.CurrencyCode))))).Int(&amountInt) + amount.Mul(&amount, big.NewFloat(math.Pow(10, float64(precision)))).Int(&amountInt) now := time.Now() batch = append(batch, &models.Balance{ diff --git a/components/payments/internal/app/connectors/moneycorp/task_fetch_transactions.go b/components/payments/internal/app/connectors/moneycorp/task_fetch_transactions.go index d41d3953d2..f92c60d4b1 100644 --- a/components/payments/internal/app/connectors/moneycorp/task_fetch_transactions.go +++ b/components/payments/internal/app/connectors/moneycorp/task_fetch_transactions.go @@ -95,8 +95,13 @@ func ingestBatch( return fmt.Errorf("failed to parse amount %s", transaction.Attributes.Amount.String()) } + c, err := currency.GetPrecision(transaction.Attributes.Currency) + if err != nil { + return err + } + var amountInt big.Int - amount.Mul(&amount, big.NewFloat(math.Pow(10, float64(currency.GetPrecision(transaction.Attributes.Currency))))).Int(&amountInt) + amount.Mul(&amount, big.NewFloat(math.Pow(10, float64(c)))).Int(&amountInt) batchElement := ingestion.PaymentBatchElement{ Payment: &models.Payment{ diff --git a/components/payments/internal/app/connectors/stripe/connector.go b/components/payments/internal/app/connectors/stripe/connector.go index 6815492d88..a278cb8372 100644 --- a/components/payments/internal/app/connectors/stripe/connector.go +++ b/components/payments/internal/app/connectors/stripe/connector.go @@ -56,19 +56,20 @@ func (c *Connector) Resolve(descriptor models.TaskDescriptor) task.Task { return resolveTasks(c.logger, c.cfg)(taskDescriptor) } -func (c *Connector) InitiateTransfer(ctx task.ConnectorContext, transfer models.Transfer) error { - descriptor, err := models.EncodeTaskDescriptor(TaskDescriptor{ - Name: "Task to initiate transfer", - TransferID: transfer.ID, - }) - if err != nil { - return err - } - - return ctx.Scheduler().Schedule(ctx.Context(), descriptor, models.TaskSchedulerOptions{ - ScheduleOption: models.OPTIONS_RUN_NOW, - Restart: false, - }) +func (c *Connector) InitiatePayment(ctx task.ConnectorContext, transfer *models.TransferInitiation) error { + // descriptor, err := models.EncodeTaskDescriptor(TaskDescriptor{ + // Name: "Task to initiate transfer", + // TransferID: transfer.ID, + // }) + // if err != nil { + // return err + // } + + // return ctx.Scheduler().Schedule(ctx.Context(), descriptor, models.TaskSchedulerOptions{ + // ScheduleOption: models.OPTIONS_RUN_NOW, + // Restart: false, + // }) + return nil } var _ integration.Connector = &Connector{} diff --git a/components/payments/internal/app/connectors/stripe/task_transfer.go b/components/payments/internal/app/connectors/stripe/task_transfer.go index 7549a821d6..1affef01fe 100644 --- a/components/payments/internal/app/connectors/stripe/task_transfer.go +++ b/components/payments/internal/app/connectors/stripe/task_transfer.go @@ -2,57 +2,51 @@ package stripe import ( "context" - "fmt" - - "github.com/formancehq/payments/internal/app/models" - - "github.com/stripe/stripe-go/v72/transfer" "github.com/formancehq/stack/libs/go-libs/logging" "github.com/google/uuid" - "github.com/stripe/stripe-go/v72" "github.com/formancehq/payments/internal/app/ingestion" ) func TransferTask(config Config, transferID uuid.UUID) func(ctx context.Context, ingester ingestion.Ingester, logger logging.Logger) error { return func(ctx context.Context, ingester ingestion.Ingester, logger logging.Logger) error { - transferToExecute, err := ingester.GetTransfer(ctx, transferID) - if err != nil { - return fmt.Errorf("failed to get transfer: %w", err) - } - - stripe.Key = config.APIKey - - params := &stripe.TransferParams{ - Params: stripe.Params{ - Context: ctx, - }, - Amount: stripe.Int64(transferToExecute.Amount.Int64()), - Currency: stripe.String(transferToExecute.Currency), - Destination: stripe.String(transferToExecute.Destination), - } - - var ( - transferError string - transferStatus = models.TransferStatusSucceeded - ) - - transferResponse, err := transfer.New(params) - if err != nil { - transferError = err.Error() - logger.Errorf("failed to create transfer (%s): %v", transferID, err) - } - - if transferError != "" { - transferStatus = models.TransferStatusFailed - } - - err = ingester.UpdateTransferStatus(ctx, transferID, transferStatus, transferResponse.BalanceTransaction.ID, transferError) - if err != nil { - return fmt.Errorf("failed to update transfer status: %w", err) - } + // transferToExecute, err := ingester.GetTransfer(ctx, transferID) + // if err != nil { + // return fmt.Errorf("failed to get transfer: %w", err) + // } + + // stripe.Key = config.APIKey + + // params := &stripe.TransferParams{ + // Params: stripe.Params{ + // Context: ctx, + // }, + // Amount: stripe.Int64(transferToExecute.Amount.Int64()), + // Currency: stripe.String(transferToExecute.Currency), + // Destination: stripe.String(transferToExecute.Destination), + // } + + // var ( + // transferError string + // transferStatus = models.TransferStatusSucceeded + // ) + + // transferResponse, err := transfer.New(params) + // if err != nil { + // transferError = err.Error() + // logger.Errorf("failed to create transfer (%s): %v", transferID, err) + // } + + // if transferError != "" { + // transferStatus = models.TransferStatusFailed + // } + + // err = ingester.UpdateTransferStatus(ctx, transferID, transferStatus, transferResponse.BalanceTransaction.ID, transferError) + // if err != nil { + // return fmt.Errorf("failed to update transfer status: %w", err) + // } return nil } diff --git a/components/payments/internal/app/connectors/wise/connector.go b/components/payments/internal/app/connectors/wise/connector.go index 02be02171a..5f1d92d73b 100644 --- a/components/payments/internal/app/connectors/wise/connector.go +++ b/components/payments/internal/app/connectors/wise/connector.go @@ -24,26 +24,28 @@ type Connector struct { cfg Config } -func (c *Connector) InitiateTransfer(ctx task.ConnectorContext, transfer models.Transfer) error { - descriptor, err := models.EncodeTaskDescriptor(TaskDescriptor{ - Name: "Initiate transfer", - Key: taskNameTransfer, - Transfer: Transfer{ - ID: transfer.ID, - Source: transfer.Source, - Destination: transfer.Destination, - Amount: transfer.Amount, - Currency: transfer.Currency, - }, - }) - if err != nil { - return err - } +func (c *Connector) InitiatePayment(ctx task.ConnectorContext, transfer *models.TransferInitiation) error { + // descriptor, err := models.EncodeTaskDescriptor(TaskDescriptor{ + // Name: "Initiate transfer", + // Key: taskNameTransfer, + // Transfer: Transfer{ + // ID: transfer.ID, + // Source: transfer.Source, + // Destination: transfer.Destination, + // Amount: transfer.Amount, + // Currency: transfer.Currency, + // }, + // }) + // if err != nil { + // return err + // } - return ctx.Scheduler().Schedule(ctx.Context(), descriptor, models.TaskSchedulerOptions{ - ScheduleOption: models.OPTIONS_RUN_NOW, - Restart: true, - }) + // return ctx.Scheduler().Schedule(ctx.Context(), descriptor, models.TaskSchedulerOptions{ + // ScheduleOption: models.OPTIONS_RUN_NOW, + // Restart: true, + // }) + + return nil } func (c *Connector) Install(ctx task.ConnectorContext) error { diff --git a/components/payments/internal/app/ingestion/ingester.go b/components/payments/internal/app/ingestion/ingester.go index 66661f37b9..1860de2370 100644 --- a/components/payments/internal/app/ingestion/ingester.go +++ b/components/payments/internal/app/ingestion/ingester.go @@ -5,8 +5,6 @@ import ( "encoding/json" "github.com/ThreeDotsLabs/watermill/message" - "github.com/google/uuid" - "github.com/formancehq/payments/internal/app/models" ) @@ -14,8 +12,8 @@ type Ingester interface { IngestPayments(ctx context.Context, batch PaymentBatch, commitState any) error IngestAccounts(ctx context.Context, batch AccountBatch) error IngestBalances(ctx context.Context, batch BalanceBatch, checkIfAccountExists bool) error - GetTransfer(ctx context.Context, transferID uuid.UUID) (models.Transfer, error) - UpdateTransferStatus(ctx context.Context, transferID uuid.UUID, status models.TransferStatus, reference, err string) error + UpdateTransferInitiationStatus(ctx context.Context, id models.TransferInitiationID, status models.TransferInitiationStatus, errorMessage string) error + UpdateTransferInitiationPaymentReference(ctx context.Context, id models.TransferInitiationID, reference string) error } type DefaultIngester struct { @@ -30,9 +28,8 @@ type Repository interface { UpsertPayments(ctx context.Context, provider models.ConnectorProvider, payments []*models.Payment) error InsertBalances(ctx context.Context, balances []*models.Balance, checkIfAccountExists bool) error UpdateTaskState(ctx context.Context, provider models.ConnectorProvider, descriptor models.TaskDescriptor, state json.RawMessage) error - - GetTransfer(ctx context.Context, transferID uuid.UUID) (models.Transfer, error) - UpdateTransferStatus(ctx context.Context, transferID uuid.UUID, status models.TransferStatus, reference, err string) error + UpdateTransferInitiationStatus(ctx context.Context, id models.TransferInitiationID, status models.TransferInitiationStatus, errorMessage string) error + UpdateTransferInitiationPaymentReference(ctx context.Context, id models.TransferInitiationID, reference string) error } func NewDefaultIngester( diff --git a/components/payments/internal/app/ingestion/transfer_initiation.go b/components/payments/internal/app/ingestion/transfer_initiation.go new file mode 100644 index 0000000000..63a8a519bf --- /dev/null +++ b/components/payments/internal/app/ingestion/transfer_initiation.go @@ -0,0 +1,15 @@ +package ingestion + +import ( + "context" + + "github.com/formancehq/payments/internal/app/models" +) + +func (i *DefaultIngester) UpdateTransferInitiationStatus(ctx context.Context, id models.TransferInitiationID, status models.TransferInitiationStatus, errorMessage string) error { + return i.repo.UpdateTransferInitiationStatus(ctx, id, status, errorMessage) +} + +func (i *DefaultIngester) UpdateTransferInitiationPaymentReference(ctx context.Context, id models.TransferInitiationID, reference string) error { + return i.repo.UpdateTransferInitiationPaymentReference(ctx, id, reference) +} diff --git a/components/payments/internal/app/ingestion/transfers.go b/components/payments/internal/app/ingestion/transfers.go deleted file mode 100644 index 6b9ed514d3..0000000000 --- a/components/payments/internal/app/ingestion/transfers.go +++ /dev/null @@ -1,18 +0,0 @@ -package ingestion - -import ( - "context" - - "github.com/formancehq/payments/internal/app/models" - "github.com/google/uuid" -) - -func (i *DefaultIngester) GetTransfer(ctx context.Context, transferID uuid.UUID) (models.Transfer, error) { - return i.repo.GetTransfer(ctx, transferID) -} - -func (i *DefaultIngester) UpdateTransferStatus(ctx context.Context, transferID uuid.UUID, - status models.TransferStatus, reference, err string, -) error { - return i.repo.UpdateTransferStatus(ctx, transferID, status, reference, err) -} diff --git a/components/payments/internal/app/integration/connector.go b/components/payments/internal/app/integration/connector.go index a4c97a8963..c0982edd1a 100644 --- a/components/payments/internal/app/integration/connector.go +++ b/components/payments/internal/app/integration/connector.go @@ -17,15 +17,15 @@ type Connector interface { // Resolve is used to recover state of a failed or restarted task Resolve(descriptor models.TaskDescriptor) task.Task // InitiateTransfer is used to initiate a transfer from the connector to a bank account. - InitiateTransfer(ctx task.ConnectorContext, transfer models.Transfer) error + InitiatePayment(ctx task.ConnectorContext, transfer *models.TransferInitiation) error } type ConnectorBuilder struct { - name string - uninstall func(ctx context.Context) error - resolve func(descriptor models.TaskDescriptor) task.Task - install func(ctx task.ConnectorContext) error - initiateTransfer func(ctx task.ConnectorContext, transfer models.Transfer) error + name string + uninstall func(ctx context.Context) error + resolve func(descriptor models.TaskDescriptor) task.Task + install func(ctx task.ConnectorContext) error + initiatePayment func(ctx task.ConnectorContext, transfer *models.TransferInitiation) error } func (b *ConnectorBuilder) WithUninstall( @@ -50,11 +50,11 @@ func (b *ConnectorBuilder) WithInstall(installFunction func(ctx task.ConnectorCo func (b *ConnectorBuilder) Build() Connector { return &BuiltConnector{ - name: b.name, - uninstall: b.uninstall, - resolve: b.resolve, - install: b.install, - initiateTransfer: b.initiateTransfer, + name: b.name, + uninstall: b.uninstall, + resolve: b.resolve, + install: b.install, + initiatePayment: b.initiatePayment, } } @@ -63,16 +63,16 @@ func NewConnectorBuilder() *ConnectorBuilder { } type BuiltConnector struct { - name string - uninstall func(ctx context.Context) error - resolve func(name models.TaskDescriptor) task.Task - install func(ctx task.ConnectorContext) error - initiateTransfer func(ctx task.ConnectorContext, transfer models.Transfer) error + name string + uninstall func(ctx context.Context) error + resolve func(name models.TaskDescriptor) task.Task + install func(ctx task.ConnectorContext) error + initiatePayment func(ctx task.ConnectorContext, transfer *models.TransferInitiation) error } -func (b *BuiltConnector) InitiateTransfer(ctx task.ConnectorContext, transfer models.Transfer) error { - if b.initiateTransfer != nil { - return b.initiateTransfer(ctx, transfer) +func (b *BuiltConnector) InitiatePayment(ctx task.ConnectorContext, transfer *models.TransferInitiation) error { + if b.initiatePayment != nil { + return b.initiatePayment(ctx, transfer) } return nil diff --git a/components/payments/internal/app/integration/manager.go b/components/payments/internal/app/integration/manager.go index bbb7ddab46..38cd364098 100644 --- a/components/payments/internal/app/integration/manager.go +++ b/components/payments/internal/app/integration/manager.go @@ -3,22 +3,16 @@ package integration import ( "context" "fmt" - "math/big" "github.com/ThreeDotsLabs/watermill/message" "github.com/formancehq/payments/internal/app/messages" - "github.com/formancehq/payments/pkg/events" - - "github.com/formancehq/stack/libs/go-libs/publish" - - "github.com/formancehq/payments/internal/app/storage" - - "github.com/google/uuid" - "github.com/formancehq/payments/internal/app/models" - + "github.com/formancehq/payments/internal/app/storage" "github.com/formancehq/payments/internal/app/task" + "github.com/formancehq/payments/pkg/events" "github.com/formancehq/stack/libs/go-libs/logging" + "github.com/formancehq/stack/libs/go-libs/publish" + "github.com/google/uuid" "github.com/pkg/errors" ) @@ -268,35 +262,13 @@ func (l *ConnectorManager[ConnectorConfig]) Reset(ctx context.Context) error { return nil } -type Transfer struct { - Source string - Destination string - Currency string - Amount *big.Int -} - -func (l *ConnectorManager[ConnectorConfig]) InitiateTransfer(ctx context.Context, transfer Transfer) (uuid.UUID, error) { - newTransfer, err := l.store.CreateNewTransfer(ctx, l.loader.Name(), - transfer.Source, transfer.Destination, transfer.Currency, transfer.Amount) - if err != nil { - return uuid.Nil, fmt.Errorf("creating new transfer: %w", err) - } - - err = l.connector.InitiateTransfer(task.NewConnectorContext(ctx, l.scheduler), newTransfer) - if err != nil { - return uuid.Nil, fmt.Errorf("initiating transfer: %w", err) - } - - return newTransfer.ID, nil -} - -func (l *ConnectorManager[ConnectorConfig]) ListTransfers(ctx context.Context) ([]models.Transfer, error) { - transfers, err := l.store.ListTransfers(ctx, l.loader.Name()) +func (l *ConnectorManager[ConnectorConfig]) InitiatePayment(ctx context.Context, transfer *models.TransferInitiation) error { + err := l.connector.InitiatePayment(task.NewConnectorContext(ctx, l.scheduler), transfer) if err != nil { - return nil, fmt.Errorf("retrieving transfers: %w", err) + return fmt.Errorf("initiating transfer: %w", err) } - return transfers, nil + return nil } func NewConnectorManager[ConnectorConfig models.ConnectorConfigObject]( diff --git a/components/payments/internal/app/integration/manager_test.go b/components/payments/internal/app/integration/manager_test.go index efecfb977f..5b7ac16eaa 100644 --- a/components/payments/internal/app/integration/manager_test.go +++ b/components/payments/internal/app/integration/manager_test.go @@ -4,18 +4,14 @@ import ( "context" "testing" - "github.com/google/uuid" - - "go.uber.org/dig" - "github.com/formancehq/payments/internal/app/metrics" "github.com/formancehq/payments/internal/app/models" - "github.com/formancehq/payments/internal/app/task" - "github.com/formancehq/stack/libs/go-libs/logging" + "github.com/google/uuid" "github.com/sirupsen/logrus" "github.com/stretchr/testify/require" + "go.uber.org/dig" ) func ChanClosed[T any](ch chan T) bool { diff --git a/components/payments/internal/app/integration/store.go b/components/payments/internal/app/integration/store.go index bf2ab6f90d..fa124c3685 100644 --- a/components/payments/internal/app/integration/store.go +++ b/components/payments/internal/app/integration/store.go @@ -3,7 +3,6 @@ package integration import ( "context" "encoding/json" - "math/big" "github.com/formancehq/payments/internal/app/models" ) @@ -18,7 +17,4 @@ type Repository interface { Disable(ctx context.Context, name models.ConnectorProvider) error IsEnabled(ctx context.Context, name models.ConnectorProvider) (bool, error) GetConnector(ctx context.Context, name models.ConnectorProvider) (*models.Connector, error) - CreateNewTransfer(ctx context.Context, name models.ConnectorProvider, - source, destination, currency string, amount *big.Int) (models.Transfer, error) - ListTransfers(ctx context.Context, name models.ConnectorProvider) ([]models.Transfer, error) } diff --git a/components/payments/internal/app/integration/storememory.go b/components/payments/internal/app/integration/storememory.go index b39ad8ca19..93ba4f3f2e 100644 --- a/components/payments/internal/app/integration/storememory.go +++ b/components/payments/internal/app/integration/storememory.go @@ -3,7 +3,6 @@ package integration import ( "context" "encoding/json" - "math/big" "github.com/formancehq/payments/internal/app/models" ) @@ -89,14 +88,6 @@ func (i *InMemoryConnectorStore) ReadConfig(ctx context.Context, name models.Con return nil } -func (i *InMemoryConnectorStore) CreateNewTransfer(ctx context.Context, name models.ConnectorProvider, source, destination, currency string, amount *big.Int) (models.Transfer, error) { - return models.Transfer{}, nil -} - -func (i *InMemoryConnectorStore) ListTransfers(ctx context.Context, name models.ConnectorProvider) ([]models.Transfer, error) { - return []models.Transfer{}, nil -} - var _ Repository = &InMemoryConnectorStore{} func NewInMemoryStore() *InMemoryConnectorStore { diff --git a/components/payments/internal/app/models/account.go b/components/payments/internal/app/models/account.go index 6a5290998d..df45df311b 100644 --- a/components/payments/internal/app/models/account.go +++ b/components/payments/internal/app/models/account.go @@ -24,6 +24,7 @@ type Account struct { DefaultAsset Asset `bun:"default_currency"` // Is optional and default to '' AccountName string // Is optional and default to '' Type AccountType + Metadata map[string]string RawData json.RawMessage } @@ -71,6 +72,14 @@ func AccountIDFromString(value string) (*AccountID, error) { return &ret, nil } +func MustAccountIDFromString(value string) AccountID { + id, err := AccountIDFromString(value) + if err != nil { + panic(err) + } + return *id +} + func (aid AccountID) Value() (driver.Value, error) { return aid.String(), nil } diff --git a/components/payments/internal/app/models/connector.go b/components/payments/internal/app/models/connector.go index 72002e8efc..e1bf668ffd 100644 --- a/components/payments/internal/app/models/connector.go +++ b/components/payments/internal/app/models/connector.go @@ -2,13 +2,13 @@ package models import ( "encoding/json" + "errors" "fmt" "strings" "time" - "github.com/uptrace/bun" - "github.com/google/uuid" + "github.com/uptrace/bun" ) type Connector struct { @@ -59,6 +59,37 @@ func (p ConnectorProvider) StringLower() string { return strings.ToLower(string(p)) } +func ConnectorProviderFromString(s string) (ConnectorProvider, error) { + switch s { + case "BANKING-CIRCLE": + return ConnectorProviderBankingCircle, nil + case "CURRENCY-CLOUD": + return ConnectorProviderCurrencyCloud, nil + case "DUMMY-PAY": + return ConnectorProviderDummyPay, nil + case "MODULR": + return ConnectorProviderModulr, nil + case "STRIPE": + return ConnectorProviderStripe, nil + case "WISE": + return ConnectorProviderWise, nil + case "MANGOPAY": + return ConnectorProviderMangopay, nil + case "MONEYCORP": + return ConnectorProviderMoneycorp, nil + default: + return "", errors.New("unknown connector provider") + } +} + +func MustConnectorProviderFromString(s string) ConnectorProvider { + p, err := ConnectorProviderFromString(s) + if err != nil { + panic(err) + } + return p +} + func (c Connector) ParseConfig(to interface{}) error { if c.Config == nil { return nil diff --git a/components/payments/internal/app/models/transfer.go b/components/payments/internal/app/models/transfer.go deleted file mode 100644 index 4d1180c1f0..0000000000 --- a/components/payments/internal/app/models/transfer.go +++ /dev/null @@ -1,45 +0,0 @@ -package models - -import ( - "math/big" - "time" - - "github.com/uptrace/bun" - - "github.com/google/uuid" -) - -type Transfer struct { - bun.BaseModel `bun:"payments.transfers"` - - ID uuid.UUID `bun:",pk,nullzero"` - ConnectorID uuid.UUID `bun:",nullzero"` - PaymentID *PaymentID - CreatedAt time.Time `bun:",nullzero"` - - Reference *string - Amount *big.Int `bun:"type:numeric"` - Status TransferStatus - Currency string - Source string - Destination string - - Error *string - - Payment *Payment `bun:"rel:has-one,join:payment_id=id"` - Connector *Connector `bun:"rel:has-one,join:connector_id=id"` -} - -type ( - TransferStatus string -) - -const ( - TransferStatusPending TransferStatus = "PENDING" - TransferStatusSucceeded TransferStatus = "SUCCEEDED" - TransferStatusFailed TransferStatus = "FAILED" -) - -func (t TransferStatus) String() string { - return string(t) -} diff --git a/components/payments/internal/app/models/transfer_initiation.go b/components/payments/internal/app/models/transfer_initiation.go new file mode 100644 index 0000000000..3fcf460d61 --- /dev/null +++ b/components/payments/internal/app/models/transfer_initiation.go @@ -0,0 +1,178 @@ +package models + +import ( + "database/sql/driver" + "encoding/base64" + "errors" + "fmt" + "math/big" + "time" + + "github.com/gibson042/canonicaljson-go" + "github.com/uptrace/bun" +) + +type TransferInitiationID struct { + UniqueRequestID string + Provider ConnectorProvider +} + +func (tid TransferInitiationID) String() string { + data, err := canonicaljson.Marshal(tid) + if err != nil { + panic(err) + } + + return base64.URLEncoding.EncodeToString(data) +} + +func TransferInitiationIDFromString(value string) (TransferInitiationID, error) { + data, err := base64.URLEncoding.DecodeString(value) + if err != nil { + return TransferInitiationID{}, err + } + ret := TransferInitiationID{} + err = canonicaljson.Unmarshal(data, &ret) + if err != nil { + return TransferInitiationID{}, err + } + + return ret, nil +} + +func MustTransferInitiationIDFromString(value string) TransferInitiationID { + id, err := TransferInitiationIDFromString(value) + if err != nil { + panic(err) + } + return id +} + +func (tid TransferInitiationID) Value() (driver.Value, error) { + return tid.String(), nil +} + +func (tid *TransferInitiationID) Scan(value interface{}) error { + if value == nil { + return errors.New("payment id is nil") + } + + if s, err := driver.String.ConvertValue(value); err == nil { + + if v, ok := s.(string); ok { + + id, err := TransferInitiationIDFromString(v) + if err != nil { + return fmt.Errorf("failed to parse paymentid %s: %v", v, err) + } + + *tid = id + return nil + } + } + + return fmt.Errorf("failed to scan paymentid: %v", value) +} + +type TransferInitiationStatus int + +const ( + TransferInitiationStatusWaitingForValidation TransferInitiationStatus = iota + TransferInitiationStatusProcessing + TransferInitiationStatusProcessed + TransferInitiationStatusFailed + TransferInitiationStatusRejected + TransferInitiationStatusValidated +) + +func (s TransferInitiationStatus) String() string { + return [...]string{ + "WAITING_FOR_VALIDATION", + "PROCESSING", + "PROCESSED", + "FAILED", + "REJECTED", + "VALIDATED", + }[s] +} + +func TransferInitiationStatusFromString(s string) (TransferInitiationStatus, error) { + switch s { + case "WAITING_FOR_VALIDATION": + return TransferInitiationStatusWaitingForValidation, nil + case "PROCESSING": + return TransferInitiationStatusProcessing, nil + case "PROCESSED": + return TransferInitiationStatusProcessed, nil + case "FAILED": + return TransferInitiationStatusFailed, nil + case "REJECTED": + return TransferInitiationStatusRejected, nil + case "VALIDATED": + return TransferInitiationStatusValidated, nil + default: + return TransferInitiationStatusWaitingForValidation, errors.New("invalid status") + } +} + +type TransferInitiationType int + +const ( + TransferInitiationTypeTransfer TransferInitiationType = iota + TransferInitiationTypePayout +) + +func (t TransferInitiationType) String() string { + return [...]string{ + "TRANSFER", + "PAYOUT", + }[t] +} + +func TransferInitiationTypeFromString(s string) (TransferInitiationType, error) { + switch s { + case "TRANSFER": + return TransferInitiationTypeTransfer, nil + case "PAYOUT": + return TransferInitiationTypePayout, nil + default: + return TransferInitiationTypeTransfer, errors.New("invalid type") + } +} + +func MustTransferInitiationTypeFromString(s string) TransferInitiationType { + t, err := TransferInitiationTypeFromString(s) + if err != nil { + panic(err) + } + return t +} + +type TransferInitiation struct { + bun.BaseModel `bun:"transfers.transfer_initiation"` + + // Filled when created in DB + ID TransferInitiationID `bun:",pk,nullzero"` + + // Filled when created on the connector's API + Reference string + + CreatedAt time.Time `bun:",nullzero"` + UpdatedAt time.Time `bun:",nullzero"` + Description string + + Type TransferInitiationType + + SourceAccountID AccountID + DestinationAccountID AccountID + Provider ConnectorProvider + + Amount *big.Int `bun:"type:numeric"` + Asset Asset + + Status TransferInitiationStatus + Error string + + SourceAccount *Account `bun:"-"` + DestinationAccount *Account `bun:"-"` +} diff --git a/components/payments/internal/app/storage/accounts.go b/components/payments/internal/app/storage/accounts.go index 2ab04254fe..44ac9bf911 100644 --- a/components/payments/internal/app/storage/accounts.go +++ b/components/payments/internal/app/storage/accounts.go @@ -38,6 +38,7 @@ func (s *Storage) UpsertAccounts(ctx context.Context, provider models.ConnectorP Set("raw_data = EXCLUDED.raw_data"). Set("default_currency = EXCLUDED.default_currency"). Set("account_name = EXCLUDED.account_name"). + Set("metadata = EXCLUDED.metadata"). Exec(ctx) if err != nil { return e("failed to create accounts", err) diff --git a/components/payments/internal/app/storage/migrations.go b/components/payments/internal/app/storage/migrations.go index 3a3bc6ceba..a4f74f2607 100644 --- a/components/payments/internal/app/storage/migrations.go +++ b/components/payments/internal/app/storage/migrations.go @@ -476,6 +476,53 @@ func registerMigrations(migrator *migrations.Migrator) { return err } + return nil + }, + }, + migrations.Migration{ + Up: func(tx bun.Tx) error { + _, err := tx.Exec(` + ALTER TABLE accounts.account ADD COLUMN IF NOT EXISTS metadata jsonb; + + CREATE SCHEMA IF NOT EXISTS transfers; + + CREATE TABLE IF NOT EXISTS transfers.transfer_initiation ( + id character varying NOT NULL, + reference text, + created_at timestamp with time zone NOT NULL, + updated_at timestamp with time zone NOT NULL, + description text NOT NULL, + type int NOT NULL, + source_account_id character varying NOT NULL, + destination_account_id character varying NOT NULL, + provider connector_provider NOT NULL, + amount numeric NOT NULL, + asset text NOT NULL, + status int NOT NULL, + error text, + PRIMARY KEY (id) + ); + + ALTER TABLE transfers.transfer_initiation ADD CONSTRAINT source_account + FOREIGN KEY (source_account_id) + REFERENCES accounts.account (id) + ON DELETE CASCADE + NOT DEFERRABLE + INITIALLY IMMEDIATE + ; + + ALTER TABLE transfers.transfer_initiation ADD CONSTRAINT destination_account + FOREIGN KEY (destination_account_id) + REFERENCES accounts.account (id) + ON DELETE CASCADE + NOT DEFERRABLE + INITIALLY IMMEDIATE + ; + `) + if err != nil { + return err + } + return nil }, }, diff --git a/components/payments/internal/app/storage/payments.go b/components/payments/internal/app/storage/payments.go index c49fe2f4de..5d8696d69e 100644 --- a/components/payments/internal/app/storage/payments.go +++ b/components/payments/internal/app/storage/payments.go @@ -158,10 +158,5 @@ func (s *Storage) UpsertPayments(ctx context.Context, provider models.ConnectorP } } - err = s.UpdateTransfersFromPayments(ctx, payments) - if err != nil { - return e("failed to update transfers", err) - } - return nil } diff --git a/components/payments/internal/app/storage/repository.go b/components/payments/internal/app/storage/repository.go index 29fa970c4e..4c3b8672c3 100644 --- a/components/payments/internal/app/storage/repository.go +++ b/components/payments/internal/app/storage/repository.go @@ -1,6 +1,9 @@ package storage import ( + "context" + + "github.com/formancehq/payments/internal/app/models" "github.com/uptrace/bun" "github.com/uptrace/bun/extra/bundebug" ) @@ -20,3 +23,8 @@ func newStorage(db *bun.DB, configEncryptionKey string) *Storage { func (s *Storage) debug() { s.db.AddQueryHook(bundebug.NewQueryHook(bundebug.WithVerbose(true))) } + +type Reader interface { + ReadTransferInitiation(ctx context.Context, id models.TransferInitiationID) (*models.TransferInitiation, error) + GetAccount(ctx context.Context, id string) (*models.Account, error) +} diff --git a/components/payments/internal/app/storage/transfer.go b/components/payments/internal/app/storage/transfer.go deleted file mode 100644 index 9679c5ecae..0000000000 --- a/components/payments/internal/app/storage/transfer.go +++ /dev/null @@ -1,140 +0,0 @@ -package storage - -import ( - "context" - "math/big" - - "github.com/pkg/errors" - - "github.com/uptrace/bun" - - "github.com/jackc/pgx/v5" - - "github.com/google/uuid" - - "github.com/formancehq/payments/internal/app/models" -) - -func (s *Storage) CreateNewTransfer(ctx context.Context, name models.ConnectorProvider, - source, destination, currency string, amount *big.Int, -) (models.Transfer, error) { - connector, err := s.GetConnector(ctx, name) - if err != nil { - return models.Transfer{}, err - } - - newTransfer := models.Transfer{ - ConnectorID: connector.ID, - Amount: amount, - Status: models.TransferStatusPending, - Currency: currency, - Source: source, - Destination: destination, - } - - var id string - _, err = s.db.NewInsert().Model(&newTransfer).Returning("id").Exec(ctx, &id) - if err != nil { - return models.Transfer{}, e("failed to create new transfer", err) - } - - newTransfer.ID = uuid.MustParse(id) - - return newTransfer, nil -} - -func (s *Storage) ListTransfers(ctx context.Context, name models.ConnectorProvider) ([]models.Transfer, error) { - connector, err := s.GetConnector(ctx, name) - if err != nil { - return nil, err - } - - var transfers []models.Transfer - err = s.db.NewSelect().Model(&transfers).Where("connector_id = ?", connector.ID).Scan(ctx) - if err != nil { - return nil, e("failed to list transfers", err) - } - - return transfers, nil -} - -func (s *Storage) GetTransfer(ctx context.Context, transferID uuid.UUID) (models.Transfer, error) { - var transfer models.Transfer - - err := s.db.NewSelect().Model(&transfer).Where("id = ?", transferID).Scan(ctx) - if err != nil { - return models.Transfer{}, e("failed to get transfer", err) - } - - return transfer, nil -} - -func (s *Storage) UpdateTransferStatus(ctx context.Context, transferID uuid.UUID, - status models.TransferStatus, reference, transferErr string, -) error { - _, err := s.db.NewUpdate().Model(&models.Transfer{}). - Set("status = ?", status). - Set("reference = ?", reference). - Set("error = ?", transferErr). - Where("id = ?", transferID). - Exec(ctx) - if err != nil { - return e("failed to update transfer status", err) - } - - return nil -} - -func (s *Storage) UpdateTransfersFromPayments(ctx context.Context, payments []*models.Payment) error { - var transfers []models.Transfer - - if len(payments) == 0 { - return nil - } - - paymentReferences := make([]string, len(payments)) - for paymentIdx := range payments { - paymentReferences[paymentIdx] = payments[paymentIdx].Reference - } - - err := s.db.NewSelect().Model(&transfers). - Where("reference IN (?)", bun.In(paymentReferences)). - Where("payment_id IS NULL"). - Scan(ctx) - if err != nil { - if errors.Is(err, pgx.ErrNoRows) { - return nil - } - - return e("failed to get transfer", err) - } - - if len(transfers) == 0 { - return nil - } - - for transferIdx := range transfers { - if transfers[transferIdx].Reference == nil { - continue - } - - for paymentIdx := range payments { - if payments[paymentIdx].Reference == *transfers[transferIdx].Reference { - transfers[transferIdx].PaymentID = &payments[paymentIdx].ID - } - } - } - - if len(transfers) == 0 { - return nil - } - - _, err = s.db.NewUpdate(). - Model(&transfers). - Exec(ctx) - if err != nil { - return e("failed to update transfers", err) - } - - return nil -} diff --git a/components/payments/internal/app/storage/transfer_initiation.go b/components/payments/internal/app/storage/transfer_initiation.go new file mode 100644 index 0000000000..b4b9029aa5 --- /dev/null +++ b/components/payments/internal/app/storage/transfer_initiation.go @@ -0,0 +1,148 @@ +package storage + +import ( + "context" + "sort" + "time" + + "github.com/formancehq/payments/internal/app/models" +) + +func (s *Storage) CreateTransferInitiation(ctx context.Context, transferInitiation *models.TransferInitiation) error { + _, err := s.db.NewInsert(). + Column("id", "reference", "created_at", "updated_at", "description", "type", "source_account_id", "destination_account_id", "provider", "amount", "asset", "status", "error"). + Model(transferInitiation). + Exec(ctx) + if err != nil { + return e("failed to create transfer initiation", err) + } + + return nil +} + +func (s *Storage) ReadTransferInitiation(ctx context.Context, id models.TransferInitiationID) (*models.TransferInitiation, error) { + var transferInitiation models.TransferInitiation + + query := s.db.NewSelect(). + Column("id", "reference", "created_at", "updated_at", "description", "type", "source_account_id", "destination_account_id", "provider", "amount", "asset", "status", "error"). + Model(&transferInitiation). + Where("id = ?", id) + + err := query.Scan(ctx) + if err != nil { + return nil, e("failed to get transfer initiation", err) + } + + return &transferInitiation, nil +} + +func (s *Storage) ListTransferInitiations(ctx context.Context, pagination Paginator) ([]*models.TransferInitiation, PaginationDetails, error) { + var tfs []*models.TransferInitiation + + query := s.db.NewSelect(). + Column("id", "reference", "created_at", "updated_at", "description", "type", "source_account_id", "destination_account_id", "provider", "amount", "asset", "status", "error"). + Model(&tfs) + + query = pagination.apply(query, "transfer_initiation.created_at") + + err := query.Scan(ctx) + if err != nil { + return nil, PaginationDetails{}, e("failed to list payments", err) + } + + var ( + hasMore = len(tfs) > pagination.pageSize + hasPrevious bool + firstReference, lastReference string + ) + + if hasMore { + if pagination.cursor.Next || pagination.cursor.Reference == "" { + tfs = tfs[:pagination.pageSize] + } else { + tfs = tfs[1:] + } + } + + sort.Slice(tfs, func(i, j int) bool { + return tfs[i].CreatedAt.After(tfs[j].CreatedAt) + }) + + if len(tfs) > 0 { + firstReference = tfs[0].CreatedAt.Format(time.RFC3339Nano) + lastReference = tfs[len(tfs)-1].CreatedAt.Format(time.RFC3339Nano) + + query = s.db.NewSelect(). + Column("id", "reference", "created_at", "updated_at", "description", "type", "source_account_id", "destination_account_id", "provider", "amount", "asset", "status", "error"). + Model(&tfs) + + hasPrevious, err = pagination.hasPrevious(ctx, query, "transfer_initiation.created_at", firstReference) + if err != nil { + return nil, PaginationDetails{}, e("failed to check if there is a previous page", err) + } + } + + paginationDetails, err := pagination.paginationDetails(hasMore, hasPrevious, firstReference, lastReference) + if err != nil { + return nil, PaginationDetails{}, e("failed to get pagination details", err) + } + + return tfs, paginationDetails, nil +} + +func (s *Storage) UpdateTransferInitiationPaymentReference(ctx context.Context, id models.TransferInitiationID, reference string) error { + _, err := s.db.NewUpdate(). + Model((*models.TransferInitiation)(nil)). + Set("reference = ?", reference). + Where("id = ?", id). + Exec(ctx) + if err != nil { + return e("failed to update transfer initiation payment reference", err) + } + + return nil +} + +func (s *Storage) UpdateTransferInitiationError(ctx context.Context, id models.TransferInitiationID, error string) error { + _, err := s.db.NewUpdate(). + Model((*models.TransferInitiation)(nil)). + Set("status = ?", models.TransferInitiationStatusFailed). + Set("error = ?", error). + Where("id = ?", id). + Exec(ctx) + if err != nil { + return e("failed to update transfer initiation error", err) + } + + return nil +} + +func (s *Storage) UpdateTransferInitiationStatus(ctx context.Context, id models.TransferInitiationID, status models.TransferInitiationStatus, errorMessage string) error { + query := s.db.NewUpdate(). + Model((*models.TransferInitiation)(nil)). + Set("status = ?", status) + + if errorMessage != "" { + query = query.Set("error = ?", errorMessage) + } + + _, err := query.Where("id = ?", id). + Exec(ctx) + if err != nil { + return e("failed to update transfer initiation status", err) + } + + return nil +} + +func (s *Storage) DeleteTransferInitiation(ctx context.Context, id models.TransferInitiationID) error { + _, err := s.db.NewDelete(). + Model((*models.TransferInitiation)(nil)). + Where("id = ?", id). + Exec(ctx) + if err != nil { + return e("failed to delete transfer initiation", err) + } + + return nil +} diff --git a/components/payments/openapi.yaml b/components/payments/openapi.yaml index c8f8fa9238..4a3b581ebc 100644 --- a/components/payments/openapi.yaml +++ b/components/payments/openapi.yaml @@ -51,6 +51,66 @@ paths: responses: '204': $ref: '#/components/responses/NoContent' + /transfer-initiation: + get: + summary: List Transfer Initiations + operationId: listTransferInitiations + tags: + - Payments + parameters: + - $ref: '#/components/parameters/PageSize' + - $ref: '#/components/parameters/Cursor' + - $ref: '#/components/parameters/Sort' + responses: + '200': + $ref: '#/components/responses/TransferInitiations' + post: + summary: Create a TransferInitiation + tags: + - Payments + operationId: createTransferInitiation + description: Create a transfer initiation + requestBody: + $ref: '#/components/requestBodies/TransferInitiation' + responses: + '200': + $ref: '#/components/responses/TransferInitiation' + /transfer-initiation/{transferId}: + get: + summary: Get a transfer initiation + tags: + - Payments + operationId: getTransferInitiation + parameters: + - $ref: '#/components/parameters/TransferId' + responses: + '200': + $ref: '#/components/responses/TransferInitiation' + delete: + summary: Delete a transfer initiation + operationId: deleteTransferInitiation + tags: + - Payments + description: Delete a transfer initiation by its id. + parameters: + - $ref: '#/components/parameters/TransferId' + responses: + '204': + $ref: '#/components/responses/NoContent' + /transfer-initiation/{transferId}/status: + post: + summary: Update the status of a transfer initiation + tags: + - Payments + operationId: udpateTransferInitiationStatus + description: Update a transfer initiation status + parameters: + - $ref: '#/components/parameters/TransferId' + requestBody: + $ref: '#/components/requestBodies/UpdateTransferInitiationStatus' + responses: + '204': + $ref: '#/components/responses/NoContent' /accounts: get: summary: List accounts @@ -312,6 +372,14 @@ components: description: The account ID. example: XXX required: true + TransferId: + name: transferId + in: path + schema: + type: string + description: The transfer ID. + example: XXX + required: true Connector: name: connector description: The name of the connector. @@ -350,6 +418,18 @@ components: application/json: schema: $ref: '#/components/schemas/PaymentResponse' + TransferInitiations: + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/TransferInitiationsCursor' + TransferInitiation: + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/TransferInitiationResponse' Accounts: description: OK content: @@ -436,6 +516,18 @@ components: application/json: schema: $ref: '#/components/schemas/PaymentMetadata' + TransferInitiation: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TransferInitiationRequest' + UpdateTransferInitiationStatus: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateTransferInitiationStatusRequest' Transfer: required: true content: @@ -484,6 +576,22 @@ components: type: array items: $ref: '#/components/schemas/Payment' + TransferInitiationsCursor: + type: object + required: + - cursor + properties: + cursor: + allOf: + - $ref: '#/components/schemas/CursorBase' + - type: object + required: + - data + properties: + data: + type: array + items: + $ref: '#/components/schemas/TransferInitiation' AccountsCursor: type: object required: @@ -556,6 +664,13 @@ components: properties: data: $ref: '#/components/schemas/Payment' + TransferInitiationResponse: + type: object + required: + - data + properties: + data: + $ref: '#/components/schemas/TransferInitiation' AccountResponse: type: object required: @@ -846,6 +961,61 @@ components: type: string example: 'XXX' description: 'The endpoint to use for the API. Defaults to https://devapi.currencycloud.com' + TransferInitiation: + type: object + required: + - id + - createdAt + - updatedAt + - description + - sourceAccountID + - destinationAccountID + - provider + - type + - amount + - asset + - status + - error + properties: + id: + type: string + example: XXX + createdAt: + type: string + format: date-time + updatedAt: + type: string + format: date-time + description: + type: string + sourceAccountID: + type: string + destinationAccountID: + type: string + provider: + $ref: '#/components/schemas/Connector' + type: + type: string + enum: + - TRANSFER + - PAYOUT + amount: + type: integer + format: bigint + asset: + type: string + example: USD + status: + type: string + enum: + - WAITING_FOR_VALIDATION + - PROCESSING + - PROCESSED + - FAILED + - REJECTED + - VALIDATED + error: + type: string Payment: type: object required: @@ -1191,6 +1361,61 @@ components: source: type: string example: acct_1Gqj58KZcSIg2N2q + TransferInitiationRequest: + type: object + required: + - uniqueRequestID + - createdAt + - description + - sourceAccountID + - destinationAccountID + - provider + - type + - amount + - asset + - validated + properties: + uniqueRequestID: + type: string + example: XXX + createdAt: + type: string + format: date-time + description: + type: string + sourceAccountID: + type: string + destinationAccountID: + type: string + provider: + $ref: '#/components/schemas/Connector' + type: + type: string + enum: + - TRANSFER + - PAYOUT + amount: + type: integer + format: bigint + asset: + type: string + example: USD + validated: + type: boolean + UpdateTransferInitiationStatusRequest: + type: object + required: + - status + properties: + status: + type: string + enum: + - WAITING_FOR_VALIDATION + - PROCESSING + - PROCESSED + - FAILED + - REJECTED + - VALIDATED StripeTransferRequest: type: object properties: diff --git a/libs/go-libs/contextutil/contextutil.go b/libs/go-libs/contextutil/contextutil.go new file mode 100644 index 0000000000..7aaa323a4b --- /dev/null +++ b/libs/go-libs/contextutil/contextutil.go @@ -0,0 +1,40 @@ +package contextutil + +import ( + "context" + "time" +) + +type detachedContext struct { + parent context.Context +} + +var _ context.Context = (*detachedContext)(nil) + +func (c *detachedContext) Done() <-chan struct{} { + return nil +} + +func (c *detachedContext) Deadline() (deadline time.Time, ok bool) { + return c.parent.Deadline() +} + +func (c *detachedContext) Err() error { + return c.parent.Err() +} + +func (c *detachedContext) Value(key interface{}) interface{} { + return c.parent.Value(key) +} + +func Detached(parent context.Context) (context.Context, context.CancelFunc) { + c := &detachedContext{parent: parent} + if deadline, ok := parent.Deadline(); ok { + return context.WithDeadline(c, deadline) + } + return context.WithCancel(c) +} + +func DetachedWithTimeout(parent context.Context, timeout time.Duration) (context.Context, context.CancelFunc) { + return context.WithTimeout(&detachedContext{parent: parent}, timeout) +} diff --git a/openapi/build/generate.json b/openapi/build/generate.json index fe32c1f1a1..b4055fd80d 100644 --- a/openapi/build/generate.json +++ b/openapi/build/generate.json @@ -12,7 +12,7 @@ "url": "https://avatars.githubusercontent.com/u/84325077?s=200&v=4", "altText": "Formance" }, - "version": "v1.0.20230822" + "version": "v1.0.20230830" }, "servers": [ { @@ -1883,6 +1883,107 @@ } } }, + "/api/payments/transfer-initiation": { + "get": { + "summary": "List Transfer Initiations", + "operationId": "listTransferInitiations", + "tags": [ + "Payments" + ], + "parameters": [ + { + "$ref": "#/components/parameters/PageSize" + }, + { + "$ref": "#/components/parameters/Cursor" + }, + { + "$ref": "#/components/parameters/Sort" + } + ], + "responses": { + "200": { + "$ref": "#/components/responses/TransferInitiations" + } + } + }, + "post": { + "summary": "Create a TransferInitiation", + "tags": [ + "Payments" + ], + "operationId": "createTransferInitiation", + "description": "Create a transfer initiation", + "requestBody": { + "$ref": "#/components/requestBodies/TransferInitiation" + }, + "responses": { + "200": { + "$ref": "#/components/responses/TransferInitiation" + } + } + } + }, + "/api/payments/transfer-initiation/{transferId}": { + "get": { + "summary": "Get a transfer initiation", + "tags": [ + "Payments" + ], + "operationId": "getTransferInitiation", + "parameters": [ + { + "$ref": "#/components/parameters/TransferId" + } + ], + "responses": { + "200": { + "$ref": "#/components/responses/TransferInitiation" + } + } + }, + "delete": { + "summary": "Delete a transfer initiation", + "operationId": "deleteTransferInitiation", + "tags": [ + "Payments" + ], + "description": "Delete a transfer initiation by its id.", + "parameters": [ + { + "$ref": "#/components/parameters/TransferId" + } + ], + "responses": { + "204": { + "$ref": "#/components/responses/NoContent" + } + } + } + }, + "/api/payments/transfer-initiation/{transferId}/status": { + "post": { + "summary": "Update the status of a transfer initiation", + "tags": [ + "Payments" + ], + "operationId": "udpateTransferInitiationStatus", + "description": "Update a transfer initiation status", + "parameters": [ + { + "$ref": "#/components/parameters/TransferId" + } + ], + "requestBody": { + "$ref": "#/components/requestBodies/UpdateTransferInitiationStatus" + }, + "responses": { + "204": { + "$ref": "#/components/responses/NoContent" + } + } + } + }, "/api/payments/accounts": { "get": { "summary": "List accounts", @@ -4929,6 +5030,35 @@ } } }, + "TransferInitiationsCursor": { + "type": "object", + "required": [ + "cursor" + ], + "properties": { + "cursor": { + "allOf": [ + { + "$ref": "#/components/schemas/CursorBase" + }, + { + "type": "object", + "required": [ + "data" + ], + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TransferInitiation" + } + } + } + } + ] + } + } + }, "AccountsCursor": { "type": "object", "required": [ @@ -5063,6 +5193,17 @@ } } }, + "TransferInitiationResponse": { + "type": "object", + "required": [ + "data" + ], + "properties": { + "data": { + "$ref": "#/components/schemas/TransferInitiation" + } + } + }, "paymentsAccountResponse": { "type": "object", "required": [ @@ -5483,6 +5624,78 @@ } } }, + "TransferInitiation": { + "type": "object", + "required": [ + "id", + "createdAt", + "updatedAt", + "description", + "sourceAccountID", + "destinationAccountID", + "provider", + "type", + "amount", + "asset", + "status", + "error" + ], + "properties": { + "id": { + "type": "string", + "example": "XXX" + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "updatedAt": { + "type": "string", + "format": "date-time" + }, + "description": { + "type": "string" + }, + "sourceAccountID": { + "type": "string" + }, + "destinationAccountID": { + "type": "string" + }, + "provider": { + "$ref": "#/components/schemas/Connector" + }, + "type": { + "type": "string", + "enum": [ + "TRANSFER", + "PAYOUT" + ] + }, + "amount": { + "type": "integer", + "format": "bigint" + }, + "asset": { + "type": "string", + "example": "USD" + }, + "status": { + "type": "string", + "enum": [ + "WAITING_FOR_VALIDATION", + "PROCESSING", + "PROCESSED", + "FAILED", + "REJECTED", + "VALIDATED" + ] + }, + "error": { + "type": "string" + } + } + }, "Payment": { "type": "object", "required": [ @@ -5999,6 +6212,80 @@ } } }, + "TransferInitiationRequest": { + "type": "object", + "required": [ + "uniqueRequestID", + "createdAt", + "description", + "sourceAccountID", + "destinationAccountID", + "provider", + "type", + "amount", + "asset", + "validated" + ], + "properties": { + "uniqueRequestID": { + "type": "string", + "example": "XXX" + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "description": { + "type": "string" + }, + "sourceAccountID": { + "type": "string" + }, + "destinationAccountID": { + "type": "string" + }, + "provider": { + "$ref": "#/components/schemas/Connector" + }, + "type": { + "type": "string", + "enum": [ + "TRANSFER", + "PAYOUT" + ] + }, + "amount": { + "type": "integer", + "format": "bigint" + }, + "asset": { + "type": "string", + "example": "USD" + }, + "validated": { + "type": "boolean" + } + } + }, + "UpdateTransferInitiationStatusRequest": { + "type": "object", + "required": [ + "status" + ], + "properties": { + "status": { + "type": "string", + "enum": [ + "WAITING_FOR_VALIDATION", + "PROCESSING", + "PROCESSED", + "FAILED", + "REJECTED", + "VALIDATED" + ] + } + } + }, "StripeTransferRequest": { "type": "object", "properties": { @@ -7817,6 +8104,26 @@ } } }, + "TransferInitiations": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TransferInitiationsCursor" + } + } + } + }, + "TransferInitiation": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TransferInitiationResponse" + } + } + } + }, "Accounts": { "description": "OK", "content": { @@ -7996,6 +8303,16 @@ "example": "XXX", "required": true }, + "TransferId": { + "name": "transferId", + "in": "path", + "schema": { + "type": "string" + }, + "description": "The transfer ID.", + "example": "XXX", + "required": true + }, "Connector": { "name": "connector", "description": "The name of the connector.", @@ -8047,6 +8364,26 @@ } } }, + "TransferInitiation": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TransferInitiationRequest" + } + } + } + }, + "UpdateTransferInitiationStatus": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateTransferInitiationStatusRequest" + } + } + } + }, "Transfer": { "required": true, "content": { diff --git a/sdks/go/README.md b/sdks/go/README.md index a62ad4e1fc..c2df1f66b8 100755 --- a/sdks/go/README.md +++ b/sdks/go/README.md @@ -106,20 +106,25 @@ func main() { * [ConnectorsStripeTransfer](docs/payments/README.md#connectorsstripetransfer) - Transfer funds between Stripe accounts * [ConnectorsTransfer](docs/payments/README.md#connectorstransfer) - Transfer funds between Connector accounts +* [CreateTransferInitiation](docs/payments/README.md#createtransferinitiation) - Create a TransferInitiation +* [DeleteTransferInitiation](docs/payments/README.md#deletetransferinitiation) - Delete a transfer initiation * [GetAccountBalances](docs/payments/README.md#getaccountbalances) - Get account balances * [GetConnectorTask](docs/payments/README.md#getconnectortask) - Read a specific task of the connector * [GetPayment](docs/payments/README.md#getpayment) - Get a payment +* [GetTransferInitiation](docs/payments/README.md#gettransferinitiation) - Get a transfer initiation * [InstallConnector](docs/payments/README.md#installconnector) - Install a connector * [ListAllConnectors](docs/payments/README.md#listallconnectors) - List all installed connectors * [ListConfigsAvailableConnectors](docs/payments/README.md#listconfigsavailableconnectors) - List the configs of each available connector * [ListConnectorTasks](docs/payments/README.md#listconnectortasks) - List tasks from a connector * [ListConnectorsTransfers](docs/payments/README.md#listconnectorstransfers) - List transfers and their statuses * [ListPayments](docs/payments/README.md#listpayments) - List payments +* [ListTransferInitiations](docs/payments/README.md#listtransferinitiations) - List Transfer Initiations * [PaymentsgetAccount](docs/payments/README.md#paymentsgetaccount) - Get an account * [PaymentsgetServerInfo](docs/payments/README.md#paymentsgetserverinfo) - Get server info * [PaymentslistAccounts](docs/payments/README.md#paymentslistaccounts) - List accounts * [ReadConnectorConfig](docs/payments/README.md#readconnectorconfig) - Read the config of a connector * [ResetConnector](docs/payments/README.md#resetconnector) - Reset a connector +* [UdpateTransferInitiationStatus](docs/payments/README.md#udpatetransferinitiationstatus) - Update the status of a transfer initiation * [UninstallConnector](docs/payments/README.md#uninstallconnector) - Uninstall a connector * [UpdateMetadata](docs/payments/README.md#updatemetadata) - Update metadata diff --git a/sdks/go/docs/payments/README.md b/sdks/go/docs/payments/README.md index c3b0a4cccc..0d19a1317a 100755 --- a/sdks/go/docs/payments/README.md +++ b/sdks/go/docs/payments/README.md @@ -4,20 +4,25 @@ * [ConnectorsStripeTransfer](#connectorsstripetransfer) - Transfer funds between Stripe accounts * [ConnectorsTransfer](#connectorstransfer) - Transfer funds between Connector accounts +* [CreateTransferInitiation](#createtransferinitiation) - Create a TransferInitiation +* [DeleteTransferInitiation](#deletetransferinitiation) - Delete a transfer initiation * [GetAccountBalances](#getaccountbalances) - Get account balances * [GetConnectorTask](#getconnectortask) - Read a specific task of the connector * [GetPayment](#getpayment) - Get a payment +* [GetTransferInitiation](#gettransferinitiation) - Get a transfer initiation * [InstallConnector](#installconnector) - Install a connector * [ListAllConnectors](#listallconnectors) - List all installed connectors * [ListConfigsAvailableConnectors](#listconfigsavailableconnectors) - List the configs of each available connector * [ListConnectorTasks](#listconnectortasks) - List tasks from a connector * [ListConnectorsTransfers](#listconnectorstransfers) - List transfers and their statuses * [ListPayments](#listpayments) - List payments +* [ListTransferInitiations](#listtransferinitiations) - List Transfer Initiations * [PaymentsgetAccount](#paymentsgetaccount) - Get an account * [PaymentsgetServerInfo](#paymentsgetserverinfo) - Get server info * [PaymentslistAccounts](#paymentslistaccounts) - List accounts * [ReadConnectorConfig](#readconnectorconfig) - Read the config of a connector * [ResetConnector](#resetconnector) - Reset a connector +* [UdpateTransferInitiationStatus](#udpatetransferinitiationstatus) - Update the status of a transfer initiation * [UninstallConnector](#uninstallconnector) - Uninstall a connector * [UpdateMetadata](#updatemetadata) - Update metadata @@ -111,6 +116,91 @@ func main() { } ``` +## CreateTransferInitiation + +Create a transfer initiation + +### Example Usage + +```go +package main + +import( + "context" + "log" + "github.com/formancehq/formance-sdk-go" + "github.com/formancehq/formance-sdk-go/pkg/models/shared" + "math/big" + "github.com/formancehq/formance-sdk-go/pkg/types" +) + +func main() { + s := formance.New( + formance.WithSecurity(shared.Security{ + Authorization: "Bearer YOUR_ACCESS_TOKEN_HERE", + }), + ) + + ctx := context.Background() + res, err := s.Payments.CreateTransferInitiation(ctx, shared.TransferInitiationRequest{ + Amount: big.NewInt(592042), + Asset: "USD", + CreatedAt: types.MustTimeFromString("2021-04-14T09:13:11.675Z"), + Description: "officia", + DestinationAccountID: "dolor", + Provider: shared.ConnectorMoneycorp, + SourceAccountID: "a", + Type: shared.TransferInitiationRequestTypePayout, + UniqueRequestID: "XXX", + Validated: false, + }) + if err != nil { + log.Fatal(err) + } + + if res.TransferInitiationResponse != nil { + // handle response + } +} +``` + +## DeleteTransferInitiation + +Delete a transfer initiation by its id. + +### Example Usage + +```go +package main + +import( + "context" + "log" + "github.com/formancehq/formance-sdk-go" + "github.com/formancehq/formance-sdk-go/pkg/models/operations" +) + +func main() { + s := formance.New( + formance.WithSecurity(shared.Security{ + Authorization: "Bearer YOUR_ACCESS_TOKEN_HERE", + }), + ) + + ctx := context.Background() + res, err := s.Payments.DeleteTransferInitiation(ctx, operations.DeleteTransferInitiationRequest{ + TransferID: "in", + }) + if err != nil { + log.Fatal(err) + } + + if res.StatusCode == http.StatusOK { + // handle response + } +} +``` + ## GetAccountBalances Get account balances @@ -137,19 +227,19 @@ func main() { ctx := context.Background() res, err := s.Payments.GetAccountBalances(ctx, operations.GetAccountBalancesRequest{ - AccountID: "provident", - Asset: formance.String("necessitatibus"), + AccountID: "in", + Asset: formance.String("illum"), Cursor: formance.String("aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ=="), - From: types.MustTimeFromString("2021-09-21T14:06:09.271Z"), - Limit: formance.Int64(223081), - PageSize: formance.Int64(891555), + From: types.MustTimeFromString("2020-11-26T01:41:04.216Z"), + Limit: formance.Int64(116202), + PageSize: formance.Int64(297437), Sort: []string{ - "dolorum", - "in", - "in", - "illum", + "facere", + "ea", + "aliquid", + "laborum", }, - To: types.MustTimeFromString("2020-11-26T01:41:04.216Z"), + To: types.MustTimeFromString("2022-04-02T11:21:13.260Z"), }) if err != nil { log.Fatal(err) @@ -187,8 +277,8 @@ func main() { ctx := context.Background() res, err := s.Payments.GetConnectorTask(ctx, operations.GetConnectorTaskRequest{ - Connector: shared.ConnectorStripe, - TaskID: "magnam", + Connector: shared.ConnectorCurrencyCloud, + TaskID: "enim", }) if err != nil { log.Fatal(err) @@ -225,7 +315,7 @@ func main() { ctx := context.Background() res, err := s.Payments.GetPayment(ctx, operations.GetPaymentRequest{ - PaymentID: "cumque", + PaymentID: "accusamus", }) if err != nil { log.Fatal(err) @@ -237,6 +327,43 @@ func main() { } ``` +## GetTransferInitiation + +Get a transfer initiation + +### Example Usage + +```go +package main + +import( + "context" + "log" + "github.com/formancehq/formance-sdk-go" + "github.com/formancehq/formance-sdk-go/pkg/models/operations" +) + +func main() { + s := formance.New( + formance.WithSecurity(shared.Security{ + Authorization: "Bearer YOUR_ACCESS_TOKEN_HERE", + }), + ) + + ctx := context.Background() + res, err := s.Payments.GetTransferInitiation(ctx, operations.GetTransferInitiationRequest{ + TransferID: "delectus", + }) + if err != nil { + log.Fatal(err) + } + + if res.TransferInitiationResponse != nil { + // handle response + } +} +``` + ## InstallConnector Install a connector by its name and config. @@ -263,13 +390,16 @@ func main() { ctx := context.Background() res, err := s.Payments.InstallConnector(ctx, operations.InstallConnectorRequest{ - RequestBody: shared.MangoPayConfig{ - APIKey: "XXX", - ClientID: "XXX", + RequestBody: shared.BankingCircleConfig{ + AuthorizationEndpoint: "XXX", Endpoint: "XXX", + Password: "XXX", PollingPeriod: formance.String("60s"), + UserCertificate: "XXX", + UserCertificateKey: "XXX", + Username: "XXX", }, - Connector: shared.ConnectorModulr, + Connector: shared.ConnectorCurrencyCloud, }) if err != nil { log.Fatal(err) @@ -375,9 +505,9 @@ func main() { ctx := context.Background() res, err := s.Payments.ListConnectorTasks(ctx, operations.ListConnectorTasksRequest{ - Connector: shared.ConnectorModulr, + Connector: shared.ConnectorBankingCircle, Cursor: formance.String("aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ=="), - PageSize: formance.Int64(675439), + PageSize: formance.Int64(659669), }) if err != nil { log.Fatal(err) @@ -415,7 +545,7 @@ func main() { ctx := context.Background() res, err := s.Payments.ListConnectorsTransfers(ctx, operations.ListConnectorsTransfersRequest{ - Connector: shared.ConnectorMoneycorp, + Connector: shared.ConnectorCurrencyCloud, }) if err != nil { log.Fatal(err) @@ -453,11 +583,12 @@ func main() { ctx := context.Background() res, err := s.Payments.ListPayments(ctx, operations.ListPaymentsRequest{ Cursor: formance.String("aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ=="), - PageSize: formance.Int64(249796), + PageSize: formance.Int64(533206), Sort: []string{ - "enim", - "accusamus", - "delectus", + "amet", + "deserunt", + "nisi", + "vel", }, }) if err != nil { @@ -470,6 +601,49 @@ func main() { } ``` +## ListTransferInitiations + +List Transfer Initiations + +### Example Usage + +```go +package main + +import( + "context" + "log" + "github.com/formancehq/formance-sdk-go" + "github.com/formancehq/formance-sdk-go/pkg/models/operations" +) + +func main() { + s := formance.New( + formance.WithSecurity(shared.Security{ + Authorization: "Bearer YOUR_ACCESS_TOKEN_HERE", + }), + ) + + ctx := context.Background() + res, err := s.Payments.ListTransferInitiations(ctx, operations.ListTransferInitiationsRequest{ + Cursor: formance.String("aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ=="), + PageSize: formance.Int64(618809), + Sort: []string{ + "molestiae", + "perferendis", + "nihil", + }, + }) + if err != nil { + log.Fatal(err) + } + + if res.TransferInitiationsCursor != nil { + // handle response + } +} +``` + ## PaymentsgetAccount Get an account @@ -495,7 +669,7 @@ func main() { ctx := context.Background() res, err := s.Payments.PaymentsgetAccount(ctx, operations.PaymentsgetAccountRequest{ - AccountID: "quidem", + AccountID: "magnam", }) if err != nil { log.Fatal(err) @@ -567,11 +741,11 @@ func main() { ctx := context.Background() res, err := s.Payments.PaymentslistAccounts(ctx, operations.PaymentslistAccountsRequest{ Cursor: formance.String("aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ=="), - PageSize: formance.Int64(588465), + PageSize: formance.Int64(716075), Sort: []string{ - "id", - "blanditiis", - "deleniti", + "labore", + "labore", + "suscipit", }, }) if err != nil { @@ -610,7 +784,7 @@ func main() { ctx := context.Background() res, err := s.Payments.ReadConnectorConfig(ctx, operations.ReadConnectorConfigRequest{ - Connector: shared.ConnectorMoneycorp, + Connector: shared.ConnectorCurrencyCloud, }) if err != nil { log.Fatal(err) @@ -650,7 +824,48 @@ func main() { ctx := context.Background() res, err := s.Payments.ResetConnector(ctx, operations.ResetConnectorRequest{ - Connector: shared.ConnectorDummyPay, + Connector: shared.ConnectorBankingCircle, + }) + if err != nil { + log.Fatal(err) + } + + if res.StatusCode == http.StatusOK { + // handle response + } +} +``` + +## UdpateTransferInitiationStatus + +Update a transfer initiation status + +### Example Usage + +```go +package main + +import( + "context" + "log" + "github.com/formancehq/formance-sdk-go" + "github.com/formancehq/formance-sdk-go/pkg/models/operations" + "github.com/formancehq/formance-sdk-go/pkg/models/shared" +) + +func main() { + s := formance.New( + formance.WithSecurity(shared.Security{ + Authorization: "Bearer YOUR_ACCESS_TOKEN_HERE", + }), + ) + + ctx := context.Background() + res, err := s.Payments.UdpateTransferInitiationStatus(ctx, operations.UdpateTransferInitiationStatusRequest{ + UpdateTransferInitiationStatusRequest: shared.UpdateTransferInitiationStatusRequest{ + Status: shared.UpdateTransferInitiationStatusRequestStatusProcessed, + }, + TransferID: "vero", }) if err != nil { log.Fatal(err) @@ -688,7 +903,7 @@ func main() { ctx := context.Background() res, err := s.Payments.UninstallConnector(ctx, operations.UninstallConnectorRequest{ - Connector: shared.ConnectorBankingCircle, + Connector: shared.ConnectorDummyPay, }) if err != nil { log.Fatal(err) @@ -727,9 +942,9 @@ func main() { ctx := context.Background() res, err := s.Payments.UpdateMetadata(ctx, operations.UpdateMetadataRequest{ PaymentMetadata: shared.PaymentMetadata{ - Key: formance.String("nisi"), + Key: formance.String("architecto"), }, - PaymentID: "vel", + PaymentID: "magnam", }) if err != nil { log.Fatal(err) diff --git a/sdks/go/docs/search/README.md b/sdks/go/docs/search/README.md index 8b39a904a4..34e972e277 100755 --- a/sdks/go/docs/search/README.md +++ b/sdks/go/docs/search/README.md @@ -32,8 +32,6 @@ func main() { res, err := s.Search.Search(ctx, shared.Query{ After: []string{ "users:002", - "users:002", - "users:002", }, Cursor: formance.String("YXVsdCBhbmQgYSBtYXhpbXVtIG1heF9yZXN1bHRzLol="), Ledgers: []string{ @@ -41,17 +39,18 @@ func main() { "quickstart", "quickstart", }, - PageSize: formance.Int64(474867), + PageSize: formance.Int64(354047), Policy: formance.String("OR"), Raw: map[string]interface{}{ - "nihil": "magnam", + "quos": "sint", + "accusantium": "mollitia", + "reiciendis": "mollitia", }, Sort: formance.String("txid:asc"), - Target: formance.String("distinctio"), + Target: formance.String("ad"), Terms: []string{ "destination=central_bank1", "destination=central_bank1", - "destination=central_bank1", }, }) if err != nil { diff --git a/sdks/go/docs/wallets/README.md b/sdks/go/docs/wallets/README.md index 701beda859..a8b1912d63 100755 --- a/sdks/go/docs/wallets/README.md +++ b/sdks/go/docs/wallets/README.md @@ -50,7 +50,7 @@ func main() { Amount: big.NewInt(100), Final: formance.Bool(true), }, - HoldID: "labore", + HoldID: "dolor", }) if err != nil { log.Fatal(err) @@ -91,11 +91,11 @@ func main() { ctx := context.Background() res, err := s.Wallets.CreateBalance(ctx, operations.CreateBalanceRequest{ CreateBalanceRequest: &shared.CreateBalanceRequest{ - ExpiresAt: types.MustTimeFromString("2022-08-14T00:52:14.624Z"), - Name: "Robin Keebler", - Priority: big.NewInt(102863), + ExpiresAt: types.MustTimeFromString("2022-07-30T07:35:03.817Z"), + Name: "Joyce Kertzmann", + Priority: big.NewInt(260341), }, - ID: "41959890-afa5-463e-a516-fe4c8b711e5b", + ID: "c8b711e5-b7fd-42ed-8289-21cddc692601", }) if err != nil { log.Fatal(err) @@ -133,10 +133,12 @@ func main() { ctx := context.Background() res, err := s.Wallets.CreateWallet(ctx, shared.CreateWalletRequest{ Metadata: map[string]string{ - "repellat": "quibusdam", - "sed": "saepe", + "quidem": "ipsam", + "voluptate": "autem", + "nam": "eaque", + "pariatur": "nemo", }, - Name: "Edward Crooks", + Name: "Joseph Steuber DDS", }) if err != nil { log.Fatal(err) @@ -177,24 +179,21 @@ func main() { res, err := s.Wallets.CreditWallet(ctx, operations.CreditWalletRequest{ CreditWalletRequest: &shared.CreditWalletRequest{ Amount: shared.Monetary{ - Amount: big.NewInt(166847), - Asset: "sunt", + Amount: big.NewInt(359978), + Asset: "hic", }, - Balance: formance.String("quo"), + Balance: formance.String("libero"), Metadata: map[string]string{ - "pariatur": "maxime", - "ea": "excepturi", - "odit": "ea", - "accusantium": "ab", + "dolores": "quis", + "totam": "dignissimos", + "eaque": "quis", }, - Reference: formance.String("maiores"), + Reference: formance.String("nesciunt"), Sources: []shared.Subject{ shared.Subject{}, - shared.Subject{}, - shared.Subject{}, }, }, - ID: "576b0d5f-0d30-4c5f-bb25-87053202c73d", + ID: "02c73d5f-e9b9-40c2-8909-b3fe49a8d9cb", }) if err != nil { log.Fatal(err) @@ -235,23 +234,22 @@ func main() { res, err := s.Wallets.DebitWallet(ctx, operations.DebitWalletRequest{ DebitWalletRequest: &shared.DebitWalletRequest{ Amount: shared.Monetary{ - Amount: big.NewInt(345352), - Asset: "hic", + Amount: big.NewInt(964490), + Asset: "quaerat", }, Balances: []string{ - "omnis", - "facilis", - "perspiciatis", - "voluptatem", + "aliquid", + "dolorem", + "dolorem", }, - Description: formance.String("porro"), + Description: formance.String("dolor"), Destination: &shared.Subject{}, Metadata: map[string]string{ - "blanditiis": "error", + "ipsum": "hic", }, Pending: formance.Bool(false), }, - ID: "09b3fe49-a8d9-4cbf-8863-3323f9b77f3a", + ID: "9b77f3a4-1006-474e-bf69-280d1ba77a89", }) if err != nil { log.Fatal(err) @@ -288,8 +286,8 @@ func main() { ctx := context.Background() res, err := s.Wallets.GetBalance(ctx, operations.GetBalanceRequest{ - BalanceName: "numquam", - ID: "100674eb-f692-480d-9ba7-7a89ebf737ae", + BalanceName: "necessitatibus", + ID: "bf737ae4-203c-4e5e-aa95-d8a0d446ce2a", }) if err != nil { log.Fatal(err) @@ -326,7 +324,7 @@ func main() { ctx := context.Background() res, err := s.Wallets.GetHold(ctx, operations.GetHoldRequest{ - HoldID: "eius", + HoldID: "a", }) if err != nil { log.Fatal(err) @@ -365,10 +363,11 @@ func main() { res, err := s.Wallets.GetHolds(ctx, operations.GetHoldsRequest{ Cursor: formance.String("aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ=="), Metadata: map[string]string{ - "perferendis": "amet", + "harum": "iusto", + "ipsum": "quisquam", }, - PageSize: formance.Int64(758379), - WalletID: formance.String("accusamus"), + PageSize: formance.Int64(947371), + WalletID: formance.String("amet"), }) if err != nil { log.Fatal(err) @@ -404,8 +403,8 @@ func main() { ctx := context.Background() res, err := s.Wallets.GetTransactions(ctx, operations.GetTransactionsRequest{ Cursor: formance.String("aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ=="), - PageSize: formance.Int64(320017), - WalletID: formance.String("saepe"), + PageSize: formance.Int64(730856), + WalletID: formance.String("accusamus"), }) if err != nil { log.Fatal(err) @@ -442,7 +441,7 @@ func main() { ctx := context.Background() res, err := s.Wallets.GetWallet(ctx, operations.GetWalletRequest{ - ID: "6a95d8a0-d446-4ce2-af7a-73cf3be453f8", + ID: "453f870b-326b-45a7-b429-cdb1a8422bb6", }) if err != nil { log.Fatal(err) @@ -479,7 +478,7 @@ func main() { ctx := context.Background() res, err := s.Wallets.GetWalletSummary(ctx, operations.GetWalletSummaryRequest{ - ID: "70b326b5-a734-429c-9b1a-8422bb679d23", + ID: "79d23227-15bf-40cb-b1e3-1b8b90f3443a", }) if err != nil { log.Fatal(err) @@ -516,7 +515,7 @@ func main() { ctx := context.Background() res, err := s.Wallets.ListBalances(ctx, operations.ListBalancesRequest{ - ID: "22715bf0-cbb1-4e31-b8b9-0f3443a1108e", + ID: "1108e0ad-cf4b-4921-879f-ce953f73ef7f", }) if err != nil { log.Fatal(err) @@ -555,10 +554,12 @@ func main() { res, err := s.Wallets.ListWallets(ctx, operations.ListWalletsRequest{ Cursor: formance.String("aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ=="), Metadata: map[string]string{ - "est": "repellendus", + "quod": "odio", + "similique": "facilis", + "vero": "ducimus", }, - Name: formance.String("Domingo Grady"), - PageSize: formance.Int64(181631), + Name: formance.String("Rosemarie Stanton"), + PageSize: formance.Int64(773326), }) if err != nil { log.Fatal(err) @@ -597,10 +598,10 @@ func main() { res, err := s.Wallets.UpdateWallet(ctx, operations.UpdateWalletRequest{ RequestBody: &operations.UpdateWalletRequestBody{ Metadata: map[string]string{ - "laudantium": "odio", + "voluptatibus": "exercitationem", }, }, - ID: "9fce953f-73ef-47fb-87ab-d74dd39c0f5d", + ID: "d2cff7c7-0a45-4626-9436-813f16d9f5fc", }) if err != nil { log.Fatal(err) @@ -637,7 +638,7 @@ func main() { ctx := context.Background() res, err := s.Wallets.VoidHold(ctx, operations.VoidHoldRequest{ - HoldID: "fugit", + HoldID: "saepe", }) if err != nil { log.Fatal(err) diff --git a/sdks/go/docs/webhooks/README.md b/sdks/go/docs/webhooks/README.md index a0d2cb73c8..92b559289b 100755 --- a/sdks/go/docs/webhooks/README.md +++ b/sdks/go/docs/webhooks/README.md @@ -242,8 +242,6 @@ func main() { EventTypes: []string{ "TYPE1", "TYPE1", - "TYPE1", - "TYPE1", }, Secret: formance.String("V0bivxRWveaoz08afqjU6Ko/jwO0Cb+3"), }) diff --git a/sdks/go/files.gen b/sdks/go/files.gen index 861ad1dcda..5dc969524f 100755 --- a/sdks/go/files.gen +++ b/sdks/go/files.gen @@ -69,20 +69,25 @@ pkg/models/operations/runworkflow.go pkg/models/operations/sendevent.go pkg/models/operations/connectorsstripetransfer.go pkg/models/operations/connectorstransfer.go +pkg/models/operations/createtransferinitiation.go +pkg/models/operations/deletetransferinitiation.go pkg/models/operations/getaccountbalances.go pkg/models/operations/getconnectortask.go pkg/models/operations/getpayment.go +pkg/models/operations/gettransferinitiation.go pkg/models/operations/installconnector.go pkg/models/operations/listallconnectors.go pkg/models/operations/listconfigsavailableconnectors.go pkg/models/operations/listconnectortasks.go pkg/models/operations/listconnectorstransfers.go pkg/models/operations/listpayments.go +pkg/models/operations/listtransferinitiations.go pkg/models/operations/paymentsgetaccount.go pkg/models/operations/paymentsgetserverinfo.go pkg/models/operations/paymentslistaccounts.go pkg/models/operations/readconnectorconfig.go pkg/models/operations/resetconnector.go +pkg/models/operations/udpatetransferinitiationstatus.go pkg/models/operations/uninstallconnector.go pkg/models/operations/updatemetadata.go pkg/models/operations/search.go @@ -223,6 +228,9 @@ pkg/models/shared/runworkflowresponse.go pkg/models/shared/stripetransferrequest.go pkg/models/shared/transferresponse.go pkg/models/shared/transferrequest.go +pkg/models/shared/transferinitiationresponse.go +pkg/models/shared/transferinitiation.go +pkg/models/shared/transferinitiationrequest.go pkg/models/shared/balancescursor.go pkg/models/shared/accountbalance.go pkg/models/shared/taskresponse.go @@ -248,10 +256,12 @@ pkg/models/shared/connectorsconfigsresponse.go pkg/models/shared/taskscursor.go pkg/models/shared/transfersresponse.go pkg/models/shared/paymentscursor.go +pkg/models/shared/transferinitiationscursor.go pkg/models/shared/paymentsaccountresponse.go pkg/models/shared/paymentsaccount.go pkg/models/shared/accountscursor.go pkg/models/shared/connectorconfigresponse.go +pkg/models/shared/updatetransferinitiationstatusrequest.go pkg/models/shared/response.go pkg/models/shared/query.go pkg/models/shared/walletserrorresponse.go diff --git a/sdks/go/payments.go b/sdks/go/payments.go index 9d4c58d036..ac6480b136 100755 --- a/sdks/go/payments.go +++ b/sdks/go/payments.go @@ -149,6 +149,104 @@ func (s *payments) ConnectorsTransfer(ctx context.Context, request operations.Co return res, nil } +// CreateTransferInitiation - Create a TransferInitiation +// Create a transfer initiation +func (s *payments) CreateTransferInitiation(ctx context.Context, request shared.TransferInitiationRequest) (*operations.CreateTransferInitiationResponse, error) { + baseURL := s.serverURL + url := strings.TrimSuffix(baseURL, "/") + "/api/payments/transfer-initiation" + + bodyReader, reqContentType, err := utils.SerializeRequestBody(ctx, request, "Request", "json") + if err != nil { + return nil, fmt.Errorf("error serializing request body: %w", err) + } + if bodyReader == nil { + return nil, fmt.Errorf("request body is required") + } + + req, err := http.NewRequestWithContext(ctx, "POST", url, bodyReader) + if err != nil { + return nil, fmt.Errorf("error creating request: %w", err) + } + req.Header.Set("Accept", "application/json") + req.Header.Set("user-agent", fmt.Sprintf("speakeasy-sdk/%s %s %s", s.language, s.sdkVersion, s.genVersion)) + + req.Header.Set("Content-Type", reqContentType) + + client := s.securityClient + + httpRes, err := client.Do(req) + if err != nil { + return nil, fmt.Errorf("error sending request: %w", err) + } + if httpRes == nil { + return nil, fmt.Errorf("error sending request: no response") + } + defer httpRes.Body.Close() + + contentType := httpRes.Header.Get("Content-Type") + + res := &operations.CreateTransferInitiationResponse{ + StatusCode: httpRes.StatusCode, + ContentType: contentType, + RawResponse: httpRes, + } + switch { + case httpRes.StatusCode == 200: + switch { + case utils.MatchContentType(contentType, `application/json`): + var out *shared.TransferInitiationResponse + if err := utils.UnmarshalJsonFromResponseBody(httpRes.Body, &out); err != nil { + return nil, err + } + + res.TransferInitiationResponse = out + } + } + + return res, nil +} + +// DeleteTransferInitiation - Delete a transfer initiation +// Delete a transfer initiation by its id. +func (s *payments) DeleteTransferInitiation(ctx context.Context, request operations.DeleteTransferInitiationRequest) (*operations.DeleteTransferInitiationResponse, error) { + baseURL := s.serverURL + url, err := utils.GenerateURL(ctx, baseURL, "/api/payments/transfer-initiation/{transferId}", request, nil) + if err != nil { + return nil, fmt.Errorf("error generating URL: %w", err) + } + + req, err := http.NewRequestWithContext(ctx, "DELETE", url, nil) + if err != nil { + return nil, fmt.Errorf("error creating request: %w", err) + } + req.Header.Set("Accept", "*/*") + req.Header.Set("user-agent", fmt.Sprintf("speakeasy-sdk/%s %s %s", s.language, s.sdkVersion, s.genVersion)) + + client := s.securityClient + + httpRes, err := client.Do(req) + if err != nil { + return nil, fmt.Errorf("error sending request: %w", err) + } + if httpRes == nil { + return nil, fmt.Errorf("error sending request: no response") + } + defer httpRes.Body.Close() + + contentType := httpRes.Header.Get("Content-Type") + + res := &operations.DeleteTransferInitiationResponse{ + StatusCode: httpRes.StatusCode, + ContentType: contentType, + RawResponse: httpRes, + } + switch { + case httpRes.StatusCode == 204: + } + + return res, nil +} + // GetAccountBalances - Get account balances func (s *payments) GetAccountBalances(ctx context.Context, request operations.GetAccountBalancesRequest) (*operations.GetAccountBalancesResponse, error) { baseURL := s.serverURL @@ -301,6 +399,55 @@ func (s *payments) GetPayment(ctx context.Context, request operations.GetPayment return res, nil } +// GetTransferInitiation - Get a transfer initiation +func (s *payments) GetTransferInitiation(ctx context.Context, request operations.GetTransferInitiationRequest) (*operations.GetTransferInitiationResponse, error) { + baseURL := s.serverURL + url, err := utils.GenerateURL(ctx, baseURL, "/api/payments/transfer-initiation/{transferId}", request, nil) + if err != nil { + return nil, fmt.Errorf("error generating URL: %w", err) + } + + req, err := http.NewRequestWithContext(ctx, "GET", url, nil) + if err != nil { + return nil, fmt.Errorf("error creating request: %w", err) + } + req.Header.Set("Accept", "application/json") + req.Header.Set("user-agent", fmt.Sprintf("speakeasy-sdk/%s %s %s", s.language, s.sdkVersion, s.genVersion)) + + client := s.securityClient + + httpRes, err := client.Do(req) + if err != nil { + return nil, fmt.Errorf("error sending request: %w", err) + } + if httpRes == nil { + return nil, fmt.Errorf("error sending request: no response") + } + defer httpRes.Body.Close() + + contentType := httpRes.Header.Get("Content-Type") + + res := &operations.GetTransferInitiationResponse{ + StatusCode: httpRes.StatusCode, + ContentType: contentType, + RawResponse: httpRes, + } + switch { + case httpRes.StatusCode == 200: + switch { + case utils.MatchContentType(contentType, `application/json`): + var out *shared.TransferInitiationResponse + if err := utils.UnmarshalJsonFromResponseBody(httpRes.Body, &out); err != nil { + return nil, err + } + + res.TransferInitiationResponse = out + } + } + + return res, nil +} + // InstallConnector - Install a connector // Install a connector by its name and config. func (s *payments) InstallConnector(ctx context.Context, request operations.InstallConnectorRequest) (*operations.InstallConnectorResponse, error) { @@ -600,6 +747,56 @@ func (s *payments) ListPayments(ctx context.Context, request operations.ListPaym return res, nil } +// ListTransferInitiations - List Transfer Initiations +func (s *payments) ListTransferInitiations(ctx context.Context, request operations.ListTransferInitiationsRequest) (*operations.ListTransferInitiationsResponse, error) { + baseURL := s.serverURL + url := strings.TrimSuffix(baseURL, "/") + "/api/payments/transfer-initiation" + + req, err := http.NewRequestWithContext(ctx, "GET", url, nil) + if err != nil { + return nil, fmt.Errorf("error creating request: %w", err) + } + req.Header.Set("Accept", "application/json") + req.Header.Set("user-agent", fmt.Sprintf("speakeasy-sdk/%s %s %s", s.language, s.sdkVersion, s.genVersion)) + + if err := utils.PopulateQueryParams(ctx, req, request, nil); err != nil { + return nil, fmt.Errorf("error populating query params: %w", err) + } + + client := s.securityClient + + httpRes, err := client.Do(req) + if err != nil { + return nil, fmt.Errorf("error sending request: %w", err) + } + if httpRes == nil { + return nil, fmt.Errorf("error sending request: no response") + } + defer httpRes.Body.Close() + + contentType := httpRes.Header.Get("Content-Type") + + res := &operations.ListTransferInitiationsResponse{ + StatusCode: httpRes.StatusCode, + ContentType: contentType, + RawResponse: httpRes, + } + switch { + case httpRes.StatusCode == 200: + switch { + case utils.MatchContentType(contentType, `application/json`): + var out *shared.TransferInitiationsCursor + if err := utils.UnmarshalJsonFromResponseBody(httpRes.Body, &out); err != nil { + return nil, err + } + + res.TransferInitiationsCursor = out + } + } + + return res, nil +} + // PaymentsgetAccount - Get an account func (s *payments) PaymentsgetAccount(ctx context.Context, request operations.PaymentsgetAccountRequest) (*operations.PaymentsgetAccountResponse, error) { baseURL := s.serverURL @@ -837,6 +1034,57 @@ func (s *payments) ResetConnector(ctx context.Context, request operations.ResetC return res, nil } +// UdpateTransferInitiationStatus - Update the status of a transfer initiation +// Update a transfer initiation status +func (s *payments) UdpateTransferInitiationStatus(ctx context.Context, request operations.UdpateTransferInitiationStatusRequest) (*operations.UdpateTransferInitiationStatusResponse, error) { + baseURL := s.serverURL + url, err := utils.GenerateURL(ctx, baseURL, "/api/payments/transfer-initiation/{transferId}/status", request, nil) + if err != nil { + return nil, fmt.Errorf("error generating URL: %w", err) + } + + bodyReader, reqContentType, err := utils.SerializeRequestBody(ctx, request, "UpdateTransferInitiationStatusRequest", "json") + if err != nil { + return nil, fmt.Errorf("error serializing request body: %w", err) + } + if bodyReader == nil { + return nil, fmt.Errorf("request body is required") + } + + req, err := http.NewRequestWithContext(ctx, "POST", url, bodyReader) + if err != nil { + return nil, fmt.Errorf("error creating request: %w", err) + } + req.Header.Set("Accept", "*/*") + req.Header.Set("user-agent", fmt.Sprintf("speakeasy-sdk/%s %s %s", s.language, s.sdkVersion, s.genVersion)) + + req.Header.Set("Content-Type", reqContentType) + + client := s.securityClient + + httpRes, err := client.Do(req) + if err != nil { + return nil, fmt.Errorf("error sending request: %w", err) + } + if httpRes == nil { + return nil, fmt.Errorf("error sending request: no response") + } + defer httpRes.Body.Close() + + contentType := httpRes.Header.Get("Content-Type") + + res := &operations.UdpateTransferInitiationStatusResponse{ + StatusCode: httpRes.StatusCode, + ContentType: contentType, + RawResponse: httpRes, + } + switch { + case httpRes.StatusCode == 204: + } + + return res, nil +} + // UninstallConnector - Uninstall a connector // Uninstall a connector by its name. func (s *payments) UninstallConnector(ctx context.Context, request operations.UninstallConnectorRequest) (*operations.UninstallConnectorResponse, error) { diff --git a/sdks/go/pkg/models/operations/createtransferinitiation.go b/sdks/go/pkg/models/operations/createtransferinitiation.go new file mode 100755 index 0000000000..0473ac1ddd --- /dev/null +++ b/sdks/go/pkg/models/operations/createtransferinitiation.go @@ -0,0 +1,16 @@ +// Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + +package operations + +import ( + "github.com/formancehq/formance-sdk-go/pkg/models/shared" + "net/http" +) + +type CreateTransferInitiationResponse struct { + ContentType string + StatusCode int + RawResponse *http.Response + // OK + TransferInitiationResponse *shared.TransferInitiationResponse +} diff --git a/sdks/go/pkg/models/operations/deletetransferinitiation.go b/sdks/go/pkg/models/operations/deletetransferinitiation.go new file mode 100755 index 0000000000..b3f0de3ca3 --- /dev/null +++ b/sdks/go/pkg/models/operations/deletetransferinitiation.go @@ -0,0 +1,18 @@ +// Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + +package operations + +import ( + "net/http" +) + +type DeleteTransferInitiationRequest struct { + // The transfer ID. + TransferID string `pathParam:"style=simple,explode=false,name=transferId"` +} + +type DeleteTransferInitiationResponse struct { + ContentType string + StatusCode int + RawResponse *http.Response +} diff --git a/sdks/go/pkg/models/operations/gettransferinitiation.go b/sdks/go/pkg/models/operations/gettransferinitiation.go new file mode 100755 index 0000000000..0656ab6627 --- /dev/null +++ b/sdks/go/pkg/models/operations/gettransferinitiation.go @@ -0,0 +1,21 @@ +// Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + +package operations + +import ( + "github.com/formancehq/formance-sdk-go/pkg/models/shared" + "net/http" +) + +type GetTransferInitiationRequest struct { + // The transfer ID. + TransferID string `pathParam:"style=simple,explode=false,name=transferId"` +} + +type GetTransferInitiationResponse struct { + ContentType string + StatusCode int + RawResponse *http.Response + // OK + TransferInitiationResponse *shared.TransferInitiationResponse +} diff --git a/sdks/go/pkg/models/operations/listtransferinitiations.go b/sdks/go/pkg/models/operations/listtransferinitiations.go new file mode 100755 index 0000000000..14ee0a41af --- /dev/null +++ b/sdks/go/pkg/models/operations/listtransferinitiations.go @@ -0,0 +1,30 @@ +// Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + +package operations + +import ( + "github.com/formancehq/formance-sdk-go/pkg/models/shared" + "net/http" +) + +type ListTransferInitiationsRequest struct { + // Parameter used in pagination requests. Maximum page size is set to 15. + // Set to the value of next for the next page of results. + // Set to the value of previous for the previous page of results. + // No other parameters can be set when this parameter is set. + // + Cursor *string `queryParam:"style=form,explode=true,name=cursor"` + // The maximum number of results to return per page. + // + PageSize *int64 `queryParam:"style=form,explode=true,name=pageSize"` + // Fields used to sort payments (default is date:desc). + Sort []string `queryParam:"style=form,explode=true,name=sort"` +} + +type ListTransferInitiationsResponse struct { + ContentType string + StatusCode int + RawResponse *http.Response + // OK + TransferInitiationsCursor *shared.TransferInitiationsCursor +} diff --git a/sdks/go/pkg/models/operations/udpatetransferinitiationstatus.go b/sdks/go/pkg/models/operations/udpatetransferinitiationstatus.go new file mode 100755 index 0000000000..df66e67dd5 --- /dev/null +++ b/sdks/go/pkg/models/operations/udpatetransferinitiationstatus.go @@ -0,0 +1,20 @@ +// Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + +package operations + +import ( + "github.com/formancehq/formance-sdk-go/pkg/models/shared" + "net/http" +) + +type UdpateTransferInitiationStatusRequest struct { + UpdateTransferInitiationStatusRequest shared.UpdateTransferInitiationStatusRequest `request:"mediaType=application/json"` + // The transfer ID. + TransferID string `pathParam:"style=simple,explode=false,name=transferId"` +} + +type UdpateTransferInitiationStatusResponse struct { + ContentType string + StatusCode int + RawResponse *http.Response +} diff --git a/sdks/go/pkg/models/shared/transferinitiation.go b/sdks/go/pkg/models/shared/transferinitiation.go new file mode 100755 index 0000000000..a4ad7e1e95 --- /dev/null +++ b/sdks/go/pkg/models/shared/transferinitiation.go @@ -0,0 +1,91 @@ +// Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + +package shared + +import ( + "encoding/json" + "fmt" + "math/big" + "time" +) + +type TransferInitiationStatus string + +const ( + TransferInitiationStatusWaitingForValidation TransferInitiationStatus = "WAITING_FOR_VALIDATION" + TransferInitiationStatusProcessing TransferInitiationStatus = "PROCESSING" + TransferInitiationStatusProcessed TransferInitiationStatus = "PROCESSED" + TransferInitiationStatusFailed TransferInitiationStatus = "FAILED" + TransferInitiationStatusRejected TransferInitiationStatus = "REJECTED" + TransferInitiationStatusValidated TransferInitiationStatus = "VALIDATED" +) + +func (e TransferInitiationStatus) ToPointer() *TransferInitiationStatus { + return &e +} + +func (e *TransferInitiationStatus) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "WAITING_FOR_VALIDATION": + fallthrough + case "PROCESSING": + fallthrough + case "PROCESSED": + fallthrough + case "FAILED": + fallthrough + case "REJECTED": + fallthrough + case "VALIDATED": + *e = TransferInitiationStatus(v) + return nil + default: + return fmt.Errorf("invalid value for TransferInitiationStatus: %v", v) + } +} + +type TransferInitiationType string + +const ( + TransferInitiationTypeTransfer TransferInitiationType = "TRANSFER" + TransferInitiationTypePayout TransferInitiationType = "PAYOUT" +) + +func (e TransferInitiationType) ToPointer() *TransferInitiationType { + return &e +} + +func (e *TransferInitiationType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "TRANSFER": + fallthrough + case "PAYOUT": + *e = TransferInitiationType(v) + return nil + default: + return fmt.Errorf("invalid value for TransferInitiationType: %v", v) + } +} + +type TransferInitiation struct { + Amount *big.Int `json:"amount"` + Asset string `json:"asset"` + CreatedAt time.Time `json:"createdAt"` + Description string `json:"description"` + DestinationAccountID string `json:"destinationAccountID"` + Error string `json:"error"` + ID string `json:"id"` + Provider Connector `json:"provider"` + SourceAccountID string `json:"sourceAccountID"` + Status TransferInitiationStatus `json:"status"` + Type TransferInitiationType `json:"type"` + UpdatedAt time.Time `json:"updatedAt"` +} diff --git a/sdks/go/pkg/models/shared/transferinitiationrequest.go b/sdks/go/pkg/models/shared/transferinitiationrequest.go new file mode 100755 index 0000000000..e51aa2e862 --- /dev/null +++ b/sdks/go/pkg/models/shared/transferinitiationrequest.go @@ -0,0 +1,50 @@ +// Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + +package shared + +import ( + "encoding/json" + "fmt" + "math/big" + "time" +) + +type TransferInitiationRequestType string + +const ( + TransferInitiationRequestTypeTransfer TransferInitiationRequestType = "TRANSFER" + TransferInitiationRequestTypePayout TransferInitiationRequestType = "PAYOUT" +) + +func (e TransferInitiationRequestType) ToPointer() *TransferInitiationRequestType { + return &e +} + +func (e *TransferInitiationRequestType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "TRANSFER": + fallthrough + case "PAYOUT": + *e = TransferInitiationRequestType(v) + return nil + default: + return fmt.Errorf("invalid value for TransferInitiationRequestType: %v", v) + } +} + +type TransferInitiationRequest struct { + Amount *big.Int `json:"amount"` + Asset string `json:"asset"` + CreatedAt time.Time `json:"createdAt"` + Description string `json:"description"` + DestinationAccountID string `json:"destinationAccountID"` + Provider Connector `json:"provider"` + SourceAccountID string `json:"sourceAccountID"` + Type TransferInitiationRequestType `json:"type"` + UniqueRequestID string `json:"uniqueRequestID"` + Validated bool `json:"validated"` +} diff --git a/sdks/go/pkg/models/shared/transferinitiationresponse.go b/sdks/go/pkg/models/shared/transferinitiationresponse.go new file mode 100755 index 0000000000..f1a4636c60 --- /dev/null +++ b/sdks/go/pkg/models/shared/transferinitiationresponse.go @@ -0,0 +1,8 @@ +// Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + +package shared + +// TransferInitiationResponse - OK +type TransferInitiationResponse struct { + Data TransferInitiation `json:"data"` +} diff --git a/sdks/go/pkg/models/shared/transferinitiationscursor.go b/sdks/go/pkg/models/shared/transferinitiationscursor.go new file mode 100755 index 0000000000..c2664732b0 --- /dev/null +++ b/sdks/go/pkg/models/shared/transferinitiationscursor.go @@ -0,0 +1,16 @@ +// Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + +package shared + +type TransferInitiationsCursorCursor struct { + Data []TransferInitiation `json:"data"` + HasMore bool `json:"hasMore"` + Next *string `json:"next,omitempty"` + PageSize int64 `json:"pageSize"` + Previous *string `json:"previous,omitempty"` +} + +// TransferInitiationsCursor - OK +type TransferInitiationsCursor struct { + Cursor TransferInitiationsCursorCursor `json:"cursor"` +} diff --git a/sdks/go/pkg/models/shared/updatetransferinitiationstatusrequest.go b/sdks/go/pkg/models/shared/updatetransferinitiationstatusrequest.go new file mode 100755 index 0000000000..cf7fab9b34 --- /dev/null +++ b/sdks/go/pkg/models/shared/updatetransferinitiationstatusrequest.go @@ -0,0 +1,51 @@ +// Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + +package shared + +import ( + "encoding/json" + "fmt" +) + +type UpdateTransferInitiationStatusRequestStatus string + +const ( + UpdateTransferInitiationStatusRequestStatusWaitingForValidation UpdateTransferInitiationStatusRequestStatus = "WAITING_FOR_VALIDATION" + UpdateTransferInitiationStatusRequestStatusProcessing UpdateTransferInitiationStatusRequestStatus = "PROCESSING" + UpdateTransferInitiationStatusRequestStatusProcessed UpdateTransferInitiationStatusRequestStatus = "PROCESSED" + UpdateTransferInitiationStatusRequestStatusFailed UpdateTransferInitiationStatusRequestStatus = "FAILED" + UpdateTransferInitiationStatusRequestStatusRejected UpdateTransferInitiationStatusRequestStatus = "REJECTED" + UpdateTransferInitiationStatusRequestStatusValidated UpdateTransferInitiationStatusRequestStatus = "VALIDATED" +) + +func (e UpdateTransferInitiationStatusRequestStatus) ToPointer() *UpdateTransferInitiationStatusRequestStatus { + return &e +} + +func (e *UpdateTransferInitiationStatusRequestStatus) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "WAITING_FOR_VALIDATION": + fallthrough + case "PROCESSING": + fallthrough + case "PROCESSED": + fallthrough + case "FAILED": + fallthrough + case "REJECTED": + fallthrough + case "VALIDATED": + *e = UpdateTransferInitiationStatusRequestStatus(v) + return nil + default: + return fmt.Errorf("invalid value for UpdateTransferInitiationStatusRequestStatus: %v", v) + } +} + +type UpdateTransferInitiationStatusRequest struct { + Status UpdateTransferInitiationStatusRequestStatus `json:"status"` +} diff --git a/sdks/java/README.md b/sdks/java/README.md index f9dea41277..ad68c40a03 100755 --- a/sdks/java/README.md +++ b/sdks/java/README.md @@ -119,20 +119,25 @@ public class Application { * [connectorsStripeTransfer](docs/payments/README.md#connectorsstripetransfer) - Transfer funds between Stripe accounts * [connectorsTransfer](docs/payments/README.md#connectorstransfer) - Transfer funds between Connector accounts +* [createTransferInitiation](docs/payments/README.md#createtransferinitiation) - Create a TransferInitiation +* [deleteTransferInitiation](docs/payments/README.md#deletetransferinitiation) - Delete a transfer initiation * [getAccountBalances](docs/payments/README.md#getaccountbalances) - Get account balances * [getConnectorTask](docs/payments/README.md#getconnectortask) - Read a specific task of the connector * [getPayment](docs/payments/README.md#getpayment) - Get a payment +* [getTransferInitiation](docs/payments/README.md#gettransferinitiation) - Get a transfer initiation * [installConnector](docs/payments/README.md#installconnector) - Install a connector * [listAllConnectors](docs/payments/README.md#listallconnectors) - List all installed connectors * [listConfigsAvailableConnectors](docs/payments/README.md#listconfigsavailableconnectors) - List the configs of each available connector * [listConnectorTasks](docs/payments/README.md#listconnectortasks) - List tasks from a connector * [listConnectorsTransfers](docs/payments/README.md#listconnectorstransfers) - List transfers and their statuses * [listPayments](docs/payments/README.md#listpayments) - List payments +* [listTransferInitiations](docs/payments/README.md#listtransferinitiations) - List Transfer Initiations * [paymentsgetAccount](docs/payments/README.md#paymentsgetaccount) - Get an account * [paymentsgetServerInfo](docs/payments/README.md#paymentsgetserverinfo) - Get server info * [paymentslistAccounts](docs/payments/README.md#paymentslistaccounts) - List accounts * [readConnectorConfig](docs/payments/README.md#readconnectorconfig) - Read the config of a connector * [resetConnector](docs/payments/README.md#resetconnector) - Reset a connector +* [udpateTransferInitiationStatus](docs/payments/README.md#udpatetransferinitiationstatus) - Update the status of a transfer initiation * [uninstallConnector](docs/payments/README.md#uninstallconnector) - Uninstall a connector * [updateMetadata](docs/payments/README.md#updatemetadata) - Update metadata diff --git a/sdks/java/docs/payments/README.md b/sdks/java/docs/payments/README.md index a81efa407b..808ad79b9c 100755 --- a/sdks/java/docs/payments/README.md +++ b/sdks/java/docs/payments/README.md @@ -4,20 +4,25 @@ * [connectorsStripeTransfer](#connectorsstripetransfer) - Transfer funds between Stripe accounts * [connectorsTransfer](#connectorstransfer) - Transfer funds between Connector accounts +* [createTransferInitiation](#createtransferinitiation) - Create a TransferInitiation +* [deleteTransferInitiation](#deletetransferinitiation) - Delete a transfer initiation * [getAccountBalances](#getaccountbalances) - Get account balances * [getConnectorTask](#getconnectortask) - Read a specific task of the connector * [getPayment](#getpayment) - Get a payment +* [getTransferInitiation](#gettransferinitiation) - Get a transfer initiation * [installConnector](#installconnector) - Install a connector * [listAllConnectors](#listallconnectors) - List all installed connectors * [listConfigsAvailableConnectors](#listconfigsavailableconnectors) - List the configs of each available connector * [listConnectorTasks](#listconnectortasks) - List tasks from a connector * [listConnectorsTransfers](#listconnectorstransfers) - List transfers and their statuses * [listPayments](#listpayments) - List payments +* [listTransferInitiations](#listtransferinitiations) - List Transfer Initiations * [paymentsgetAccount](#paymentsgetaccount) - Get an account * [paymentsgetServerInfo](#paymentsgetserverinfo) - Get server info * [paymentslistAccounts](#paymentslistaccounts) - List accounts * [readConnectorConfig](#readconnectorconfig) - Read the config of a connector * [resetConnector](#resetconnector) - Reset a connector +* [udpateTransferInitiationStatus](#udpatetransferinitiationstatus) - Update the status of a transfer initiation * [uninstallConnector](#uninstallconnector) - Uninstall a connector * [updateMetadata](#updatemetadata) - Update metadata @@ -107,6 +112,83 @@ public class Application { } ``` +## createTransferInitiation + +Create a transfer initiation + +### Example Usage + +```java +package hello.world; + +import com.formance.formance_sdk.SDK; +import com.formance.formance_sdk.models.operations.CreateTransferInitiationResponse; +import com.formance.formance_sdk.models.shared.Connector; +import com.formance.formance_sdk.models.shared.Security; +import com.formance.formance_sdk.models.shared.TransferInitiationRequest; +import com.formance.formance_sdk.models.shared.TransferInitiationRequestType; +import java.time.OffsetDateTime; + +public class Application { + public static void main(String[] args) { + try { + SDK sdk = SDK.builder() + .setSecurity(new Security("blanditiis") {{ + authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; + }}) + .build(); + + com.formance.formance_sdk.models.shared.TransferInitiationRequest req = new TransferInitiationRequest(533206L, "USD", OffsetDateTime.parse("2022-04-23T13:35:30.978Z"), "deserunt", "nisi", Connector.MODULR, "natus", TransferInitiationRequestType.PAYOUT, "XXX", false); + + CreateTransferInitiationResponse res = sdk.payments.createTransferInitiation(req); + + if (res.transferInitiationResponse != null) { + // handle response + } + } catch (Exception e) { + // handle exception + } + } +} +``` + +## deleteTransferInitiation + +Delete a transfer initiation by its id. + +### Example Usage + +```java +package hello.world; + +import com.formance.formance_sdk.SDK; +import com.formance.formance_sdk.models.operations.DeleteTransferInitiationRequest; +import com.formance.formance_sdk.models.operations.DeleteTransferInitiationResponse; +import com.formance.formance_sdk.models.shared.Security; + +public class Application { + public static void main(String[] args) { + try { + SDK sdk = SDK.builder() + .setSecurity(new Security("molestiae") {{ + authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; + }}) + .build(); + + DeleteTransferInitiationRequest req = new DeleteTransferInitiationRequest("perferendis"); + + DeleteTransferInitiationResponse res = sdk.payments.deleteTransferInitiation(req); + + if (res.statusCode == 200) { + // handle response + } + } catch (Exception e) { + // handle exception + } + } +} +``` + ## getAccountBalances Get account balances @@ -126,23 +208,23 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("blanditiis") {{ + .setSecurity(new Security("nihil") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); - GetAccountBalancesRequest req = new GetAccountBalancesRequest("deleniti") {{ - asset = "sapiente"; + GetAccountBalancesRequest req = new GetAccountBalancesRequest("magnam") {{ + asset = "distinctio"; cursor = "aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ=="; - from = OffsetDateTime.parse("2022-05-10T22:38:44.806Z"); - limit = 394869L; - pageSize = 423855L; + from = OffsetDateTime.parse("2022-06-04T18:23:50.695Z"); + limit = 290077L; + pageSize = 383462L; sort = new String[]{{ - add("omnis"), - add("molestiae"), - add("perferendis"), + add("nobis"), + add("eum"), + add("vero"), }}; - to = OffsetDateTime.parse("2022-09-12T22:12:15.897Z"); + to = OffsetDateTime.parse("2022-11-24T10:55:00.183Z"); }}; GetAccountBalancesResponse res = sdk.payments.getAccountBalances(req); @@ -176,12 +258,12 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("distinctio") {{ + .setSecurity(new Security("magnam") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); - GetConnectorTaskRequest req = new GetConnectorTaskRequest(Connector.BANKING_CIRCLE, "labore"); + GetConnectorTaskRequest req = new GetConnectorTaskRequest(Connector.STRIPE, "excepturi"); GetConnectorTaskResponse res = sdk.payments.getConnectorTask(req); @@ -213,12 +295,12 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("labore") {{ + .setSecurity(new Security("ullam") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); - GetPaymentRequest req = new GetPaymentRequest("suscipit"); + GetPaymentRequest req = new GetPaymentRequest("provident"); GetPaymentResponse res = sdk.payments.getPayment(req); @@ -232,6 +314,43 @@ public class Application { } ``` +## getTransferInitiation + +Get a transfer initiation + +### Example Usage + +```java +package hello.world; + +import com.formance.formance_sdk.SDK; +import com.formance.formance_sdk.models.operations.GetTransferInitiationRequest; +import com.formance.formance_sdk.models.operations.GetTransferInitiationResponse; +import com.formance.formance_sdk.models.shared.Security; + +public class Application { + public static void main(String[] args) { + try { + SDK sdk = SDK.builder() + .setSecurity(new Security("quos") {{ + authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; + }}) + .build(); + + GetTransferInitiationRequest req = new GetTransferInitiationRequest("sint"); + + GetTransferInitiationResponse res = sdk.payments.getTransferInitiation(req); + + if (res.transferInitiationResponse != null) { + // handle response + } + } catch (Exception e) { + // handle exception + } + } +} +``` + ## installConnector Install a connector by its name and config. @@ -259,7 +378,7 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("natus") {{ + .setSecurity(new Security("accusantium") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); @@ -272,7 +391,7 @@ public class Application { userCertificate = "XXX"; userCertificateKey = "XXX"; username = "XXX"; - }}, Connector.MODULR); + }}, Connector.MONEYCORP); InstallConnectorResponse res = sdk.payments.installConnector(req); @@ -303,7 +422,7 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("vero") {{ + .setSecurity(new Security("mollitia") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); @@ -337,7 +456,7 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("aspernatur") {{ + .setSecurity(new Security("ad") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); @@ -373,14 +492,14 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("architecto") {{ + .setSecurity(new Security("eum") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); - ListConnectorTasksRequest req = new ListConnectorTasksRequest(Connector.WISE) {{ + ListConnectorTasksRequest req = new ListConnectorTasksRequest(Connector.DUMMY_PAY) {{ cursor = "aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ=="; - pageSize = 92373L; + pageSize = 896547L; }}; ListConnectorTasksResponse res = sdk.payments.listConnectorTasks(req); @@ -414,7 +533,7 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("excepturi") {{ + .setSecurity(new Security("odit") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); @@ -451,18 +570,19 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("provident") {{ + .setSecurity(new Security("quasi") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); ListPaymentsRequest req = new ListPaymentsRequest() {{ cursor = "aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ=="; - pageSize = 551816L; + pageSize = 435865L; sort = new String[]{{ - add("accusantium"), - add("mollitia"), - add("reiciendis"), + add("debitis"), + add("eius"), + add("maxime"), + add("deleniti"), }}; }}; @@ -478,6 +598,49 @@ public class Application { } ``` +## listTransferInitiations + +List Transfer Initiations + +### Example Usage + +```java +package hello.world; + +import com.formance.formance_sdk.SDK; +import com.formance.formance_sdk.models.operations.ListTransferInitiationsRequest; +import com.formance.formance_sdk.models.operations.ListTransferInitiationsResponse; +import com.formance.formance_sdk.models.shared.Security; + +public class Application { + public static void main(String[] args) { + try { + SDK sdk = SDK.builder() + .setSecurity(new Security("facilis") {{ + authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; + }}) + .build(); + + ListTransferInitiationsRequest req = new ListTransferInitiationsRequest() {{ + cursor = "aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ=="; + pageSize = 447926L; + sort = new String[]{{ + add("architecto"), + }}; + }}; + + ListTransferInitiationsResponse res = sdk.payments.listTransferInitiations(req); + + if (res.transferInitiationsCursor != null) { + // handle response + } + } catch (Exception e) { + // handle exception + } + } +} +``` + ## paymentsgetAccount Get an account @@ -496,12 +659,12 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("mollitia") {{ + .setSecurity(new Security("repudiandae") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); - PaymentsgetAccountRequest req = new PaymentsgetAccountRequest("ad"); + PaymentsgetAccountRequest req = new PaymentsgetAccountRequest("ullam"); PaymentsgetAccountResponse res = sdk.payments.paymentsgetAccount(req); @@ -532,7 +695,7 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("eum") {{ + .setSecurity(new Security("expedita") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); @@ -567,16 +730,19 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("dolor") {{ + .setSecurity(new Security("nihil") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); PaymentslistAccountsRequest req = new PaymentslistAccountsRequest() {{ cursor = "aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ=="; - pageSize = 896547L; + pageSize = 998848L; sort = new String[]{{ - add("nemo"), + add("sed"), + add("saepe"), + add("pariatur"), + add("accusantium"), }}; }}; @@ -611,12 +777,12 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("quasi") {{ + .setSecurity(new Security("consequuntur") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); - ReadConnectorConfigRequest req = new ReadConnectorConfigRequest(Connector.MODULR); + ReadConnectorConfigRequest req = new ReadConnectorConfigRequest(Connector.CURRENCY_CLOUD); ReadConnectorConfigResponse res = sdk.payments.readConnectorConfig(req); @@ -651,12 +817,12 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("doloribus") {{ + .setSecurity(new Security("natus") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); - ResetConnectorRequest req = new ResetConnectorRequest(Connector.MONEYCORP); + ResetConnectorRequest req = new ResetConnectorRequest(Connector.DUMMY_PAY); ResetConnectorResponse res = sdk.payments.resetConnector(req); @@ -670,6 +836,45 @@ public class Application { } ``` +## udpateTransferInitiationStatus + +Update a transfer initiation status + +### Example Usage + +```java +package hello.world; + +import com.formance.formance_sdk.SDK; +import com.formance.formance_sdk.models.operations.UdpateTransferInitiationStatusRequest; +import com.formance.formance_sdk.models.operations.UdpateTransferInitiationStatusResponse; +import com.formance.formance_sdk.models.shared.Security; +import com.formance.formance_sdk.models.shared.UpdateTransferInitiationStatusRequest; +import com.formance.formance_sdk.models.shared.UpdateTransferInitiationStatusRequestStatus; + +public class Application { + public static void main(String[] args) { + try { + SDK sdk = SDK.builder() + .setSecurity(new Security("sunt") {{ + authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; + }}) + .build(); + + UdpateTransferInitiationStatusRequest req = new UdpateTransferInitiationStatusRequest( new UpdateTransferInitiationStatusRequest(UpdateTransferInitiationStatusRequestStatus.REJECTED);, "illum"); + + UdpateTransferInitiationStatusResponse res = sdk.payments.udpateTransferInitiationStatus(req); + + if (res.statusCode == 200) { + // handle response + } + } catch (Exception e) { + // handle exception + } + } +} +``` + ## uninstallConnector Uninstall a connector by its name. @@ -689,7 +894,7 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("eius") {{ + .setSecurity(new Security("pariatur") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); @@ -727,14 +932,14 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("deleniti") {{ + .setSecurity(new Security("ea") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); UpdateMetadataRequest req = new UpdateMetadataRequest( new PaymentMetadata() {{ - key = "facilis"; - }};, "in"); + key = "excepturi"; + }};, "odit"); UpdateMetadataResponse res = sdk.payments.updateMetadata(req); diff --git a/sdks/java/docs/search/README.md b/sdks/java/docs/search/README.md index d3dddbf15f..71cb686860 100755 --- a/sdks/java/docs/search/README.md +++ b/sdks/java/docs/search/README.md @@ -23,7 +23,7 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("architecto") {{ + .setSecurity(new Security("ea") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); @@ -35,21 +35,21 @@ public class Application { cursor = "YXVsdCBhbmQgYSBtYXhpbXVtIG1heF9yZXN1bHRzLol="; ledgers = new String[]{{ add("quickstart"), - add("quickstart"), - add("quickstart"), - add("quickstart"), }}; - pageSize = 352312L; + pageSize = 982575L; policy = "OR"; raw = new java.util.HashMap() {{ - put("nihil", "repellat"); - put("quibusdam", "sed"); - put("saepe", "pariatur"); + put("ipsam", "voluptate"); + put("autem", "nam"); + put("eaque", "pariatur"); }}; sort = "txid:asc"; - target = "accusantium"; + target = "nemo"; terms = new String[]{{ add("destination=central_bank1"), + add("destination=central_bank1"), + add("destination=central_bank1"), + add("destination=central_bank1"), }}; }}; @@ -82,7 +82,7 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("praesentium") {{ + .setSecurity(new Security("perferendis") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); diff --git a/sdks/java/docs/wallets/README.md b/sdks/java/docs/wallets/README.md index 28dbc6ba4d..9b5bde2aa0 100755 --- a/sdks/java/docs/wallets/README.md +++ b/sdks/java/docs/wallets/README.md @@ -38,12 +38,12 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("natus") {{ + .setSecurity(new Security("fugiat") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); - ConfirmHoldRequest req = new ConfirmHoldRequest("magni") {{ + ConfirmHoldRequest req = new ConfirmHoldRequest("amet") {{ confirmHoldRequest = new ConfirmHoldRequest() {{ amount = 100L; final_ = true; @@ -82,15 +82,15 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("sunt") {{ + .setSecurity(new Security("aut") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); - CreateBalanceRequest req = new CreateBalanceRequest("quo") {{ - createBalanceRequest = new CreateBalanceRequest("illum") {{ - expiresAt = OffsetDateTime.parse("2020-07-30T23:39:27.609Z"); - priority = 411397L; + CreateBalanceRequest req = new CreateBalanceRequest("cumque") {{ + createBalanceRequest = new CreateBalanceRequest("corporis") {{ + expiresAt = OffsetDateTime.parse("2020-10-23T15:50:52.666Z"); + priority = 749999L; }};; }}; @@ -124,14 +124,15 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("excepturi") {{ + .setSecurity(new Security("dolores") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); com.formance.formance_sdk.models.shared.CreateWalletRequest req = new CreateWalletRequest( new java.util.HashMap() {{ - put("ea", "accusantium"); - }}, "ab"); + put("totam", "dignissimos"); + put("eaque", "quis"); + }}, "nesciunt"); CreateWalletResponse res = sdk.wallets.createWallet(req); @@ -167,35 +168,39 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("maiores") {{ + .setSecurity(new Security("eos") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); - CreditWalletRequest req = new CreditWalletRequest("quidem") {{ - creditWalletRequest = new CreditWalletRequest( new Monetary(373291L, "voluptate");, new java.util.HashMap() {{ - put("nam", "eaque"); - put("pariatur", "nemo"); + CreditWalletRequest req = new CreditWalletRequest("perferendis") {{ + creditWalletRequest = new CreditWalletRequest( new Monetary(170986L, "minus");, new java.util.HashMap() {{ + put("dolor", "vero"); + put("nostrum", "hic"); }}, new Object[]{{ - add(new LedgerAccountSubject("aut", "cumque") {{ - identifier = "fugiat"; - type = "amet"; + add(new WalletSubject("porro", "consequuntur") {{ + balance = "facilis"; + identifier = "perspiciatis"; + type = "voluptatem"; }}), - add(new LedgerAccountSubject("nobis", "dolores") {{ - identifier = "hic"; - type = "libero"; + add(new WalletSubject("rerum", "adipisci") {{ + balance = "error"; + identifier = "eaque"; + type = "occaecati"; }}), - add(new LedgerAccountSubject("eaque", "quis") {{ - identifier = "totam"; - type = "dignissimos"; + add(new WalletSubject("dolorum", "deleniti") {{ + balance = "earum"; + identifier = "modi"; + type = "iste"; }}), - add(new LedgerAccountSubject("dolores", "minus") {{ - identifier = "eos"; - type = "perferendis"; + add(new WalletSubject("delectus", "quaerat") {{ + balance = "provident"; + identifier = "nobis"; + type = "libero"; }}), }}) {{ - balance = "quam"; - reference = "dolor"; + balance = "quos"; + reference = "aliquid"; }};; }}; @@ -233,25 +238,23 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("vero") {{ + .setSecurity(new Security("dolorem") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); - DebitWalletRequest req = new DebitWalletRequest("nostrum") {{ - debitWalletRequest = new DebitWalletRequest( new Monetary(944120L, "recusandae");, new java.util.HashMap() {{ - put("facilis", "perspiciatis"); - put("voluptatem", "porro"); - put("consequuntur", "blanditiis"); + DebitWalletRequest req = new DebitWalletRequest("dolorem") {{ + debitWalletRequest = new DebitWalletRequest( new Monetary(222443L, "qui");, new java.util.HashMap() {{ + put("hic", "excepturi"); }}) {{ balances = new String[]{{ - add("eaque"), - add("occaecati"), - add("rerum"), + add("voluptate"), + add("dignissimos"), + add("reiciendis"), }}; - description = "adipisci"; - destination = new WalletSubject("earum", "modi") {{ - balance = "iste"; + description = "amet"; + destination = new WalletSubject("numquam", "veritatis") {{ + balance = "ipsa"; }};; pending = false; }};; @@ -287,12 +290,12 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("dolorum") {{ + .setSecurity(new Security("ipsa") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); - GetBalanceRequest req = new GetBalanceRequest("deleniti", "pariatur"); + GetBalanceRequest req = new GetBalanceRequest("iure", "odio"); GetBalanceResponse res = sdk.wallets.getBalance(req); @@ -324,12 +327,12 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("provident") {{ + .setSecurity(new Security("quaerat") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); - GetHoldRequest req = new GetHoldRequest("nobis"); + GetHoldRequest req = new GetHoldRequest("accusamus"); GetHoldResponse res = sdk.wallets.getHold(req); @@ -361,7 +364,7 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("libero") {{ + .setSecurity(new Security("quidem") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); @@ -369,13 +372,13 @@ public class Application { GetHoldsRequest req = new GetHoldsRequest() {{ cursor = "aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ=="; metadata = new java.util.HashMap() {{ - put("quaerat", "quos"); - put("aliquid", "dolorem"); - put("dolorem", "dolor"); - put("qui", "ipsum"); + put("voluptas", "natus"); + put("eos", "atque"); + put("sit", "fugiat"); + put("ab", "soluta"); }}; - pageSize = 944373L; - walletID = "excepturi"; + pageSize = 679393L; + walletID = "iusto"; }}; GetHoldsResponse res = sdk.wallets.getHolds(req); @@ -406,15 +409,15 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("cum") {{ + .setSecurity(new Security("voluptate") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); GetTransactionsRequest req = new GetTransactionsRequest() {{ cursor = "aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ=="; - pageSize = 452109L; - walletID = "dignissimos"; + pageSize = 677082L; + walletID = "deleniti"; }}; GetTransactionsResponse res = sdk.wallets.getTransactions(req); @@ -447,12 +450,12 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("reiciendis") {{ + .setSecurity(new Security("omnis") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); - GetWalletRequest req = new GetWalletRequest("amet"); + GetWalletRequest req = new GetWalletRequest("necessitatibus"); GetWalletResponse res = sdk.wallets.getWallet(req); @@ -484,12 +487,12 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("dolorum") {{ + .setSecurity(new Security("distinctio") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); - GetWalletSummaryRequest req = new GetWalletSummaryRequest("numquam"); + GetWalletSummaryRequest req = new GetWalletSummaryRequest("asperiores"); GetWalletSummaryResponse res = sdk.wallets.getWalletSummary(req); @@ -521,12 +524,12 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("veritatis") {{ + .setSecurity(new Security("nihil") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); - ListBalancesRequest req = new ListBalancesRequest("ipsa"); + ListBalancesRequest req = new ListBalancesRequest("ipsum"); ListBalancesResponse res = sdk.wallets.listBalances(req); @@ -558,7 +561,7 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("ipsa") {{ + .setSecurity(new Security("voluptate") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); @@ -566,11 +569,12 @@ public class Application { ListWalletsRequest req = new ListWalletsRequest() {{ cursor = "aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ=="; metadata = new java.util.HashMap() {{ - put("odio", "quaerat"); - put("accusamus", "quidem"); + put("saepe", "eius"); + put("aspernatur", "perferendis"); + put("amet", "optio"); }}; - name = "Hector Mosciski"; - pageSize = 24678L; + name = "Tommy Turner"; + pageSize = 588317L; }}; ListWalletsResponse res = sdk.wallets.listWallets(req); @@ -604,16 +608,16 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("fugiat") {{ + .setSecurity(new Security("minima") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); - UpdateWalletRequest req = new UpdateWalletRequest("ab") {{ + UpdateWalletRequest req = new UpdateWalletRequest("repellendus") {{ requestBody = new UpdateWalletRequestBody( new java.util.HashMap() {{ - put("dolorum", "iusto"); - put("voluptate", "dolorum"); - put("deleniti", "omnis"); + put("similique", "alias"); + put("at", "quaerat"); + put("tempora", "vel"); }});; }}; @@ -647,12 +651,12 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("necessitatibus") {{ + .setSecurity(new Security("quod") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); - VoidHoldRequest req = new VoidHoldRequest("distinctio"); + VoidHoldRequest req = new VoidHoldRequest("officiis"); VoidHoldResponse res = sdk.wallets.voidHold(req); @@ -683,7 +687,7 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("asperiores") {{ + .setSecurity(new Security("qui") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); diff --git a/sdks/java/docs/webhooks/README.md b/sdks/java/docs/webhooks/README.md index 38f8ca1f95..237390b9d0 100755 --- a/sdks/java/docs/webhooks/README.md +++ b/sdks/java/docs/webhooks/README.md @@ -28,7 +28,7 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("nihil") {{ + .setSecurity(new Security("dolorum") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); @@ -70,7 +70,7 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("ipsum") {{ + .setSecurity(new Security("a") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); @@ -109,7 +109,7 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("voluptate") {{ + .setSecurity(new Security("esse") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); @@ -146,7 +146,7 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("id") {{ + .setSecurity(new Security("harum") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); @@ -183,7 +183,7 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("saepe") {{ + .setSecurity(new Security("iusto") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); @@ -232,13 +232,16 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("eius") {{ + .setSecurity(new Security("ipsum") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); com.formance.formance_sdk.models.shared.ConfigUser req = new ConfigUser("https://example.com", new String[]{{ add("TYPE1"), + add("TYPE1"), + add("TYPE1"), + add("TYPE1"), }}) {{ secret = "V0bivxRWveaoz08afqjU6Ko/jwO0Cb+3"; }}; @@ -273,7 +276,7 @@ public class Application { public static void main(String[] args) { try { SDK sdk = SDK.builder() - .setSecurity(new Security("perferendis") {{ + .setSecurity(new Security("tenetur") {{ authorization = "Bearer YOUR_ACCESS_TOKEN_HERE"; }}) .build(); diff --git a/sdks/java/files.gen b/sdks/java/files.gen index 1c503cd109..7b3e4e35a6 100755 --- a/sdks/java/files.gen +++ b/sdks/java/files.gen @@ -124,12 +124,17 @@ lib/src/main/java/com/formance/formance_sdk/models/operations/SendEventResponse. lib/src/main/java/com/formance/formance_sdk/models/operations/ConnectorsStripeTransferResponse.java lib/src/main/java/com/formance/formance_sdk/models/operations/ConnectorsTransferRequest.java lib/src/main/java/com/formance/formance_sdk/models/operations/ConnectorsTransferResponse.java +lib/src/main/java/com/formance/formance_sdk/models/operations/CreateTransferInitiationResponse.java +lib/src/main/java/com/formance/formance_sdk/models/operations/DeleteTransferInitiationRequest.java +lib/src/main/java/com/formance/formance_sdk/models/operations/DeleteTransferInitiationResponse.java lib/src/main/java/com/formance/formance_sdk/models/operations/GetAccountBalancesRequest.java lib/src/main/java/com/formance/formance_sdk/models/operations/GetAccountBalancesResponse.java lib/src/main/java/com/formance/formance_sdk/models/operations/GetConnectorTaskRequest.java lib/src/main/java/com/formance/formance_sdk/models/operations/GetConnectorTaskResponse.java lib/src/main/java/com/formance/formance_sdk/models/operations/GetPaymentRequest.java lib/src/main/java/com/formance/formance_sdk/models/operations/GetPaymentResponse.java +lib/src/main/java/com/formance/formance_sdk/models/operations/GetTransferInitiationRequest.java +lib/src/main/java/com/formance/formance_sdk/models/operations/GetTransferInitiationResponse.java lib/src/main/java/com/formance/formance_sdk/models/operations/InstallConnectorRequest.java lib/src/main/java/com/formance/formance_sdk/models/operations/InstallConnectorResponse.java lib/src/main/java/com/formance/formance_sdk/models/operations/ListAllConnectorsResponse.java @@ -140,6 +145,8 @@ lib/src/main/java/com/formance/formance_sdk/models/operations/ListConnectorsTran lib/src/main/java/com/formance/formance_sdk/models/operations/ListConnectorsTransfersResponse.java lib/src/main/java/com/formance/formance_sdk/models/operations/ListPaymentsRequest.java lib/src/main/java/com/formance/formance_sdk/models/operations/ListPaymentsResponse.java +lib/src/main/java/com/formance/formance_sdk/models/operations/ListTransferInitiationsRequest.java +lib/src/main/java/com/formance/formance_sdk/models/operations/ListTransferInitiationsResponse.java lib/src/main/java/com/formance/formance_sdk/models/operations/PaymentsgetAccountRequest.java lib/src/main/java/com/formance/formance_sdk/models/operations/PaymentsgetAccountResponse.java lib/src/main/java/com/formance/formance_sdk/models/operations/PaymentsgetServerInfoResponse.java @@ -149,6 +156,8 @@ lib/src/main/java/com/formance/formance_sdk/models/operations/ReadConnectorConfi lib/src/main/java/com/formance/formance_sdk/models/operations/ReadConnectorConfigResponse.java lib/src/main/java/com/formance/formance_sdk/models/operations/ResetConnectorRequest.java lib/src/main/java/com/formance/formance_sdk/models/operations/ResetConnectorResponse.java +lib/src/main/java/com/formance/formance_sdk/models/operations/UdpateTransferInitiationStatusRequest.java +lib/src/main/java/com/formance/formance_sdk/models/operations/UdpateTransferInitiationStatusResponse.java lib/src/main/java/com/formance/formance_sdk/models/operations/UninstallConnectorRequest.java lib/src/main/java/com/formance/formance_sdk/models/operations/UninstallConnectorResponse.java lib/src/main/java/com/formance/formance_sdk/models/operations/UpdateMetadataRequest.java @@ -323,6 +332,12 @@ lib/src/main/java/com/formance/formance_sdk/models/shared/RunWorkflowResponse.ja lib/src/main/java/com/formance/formance_sdk/models/shared/StripeTransferRequest.java lib/src/main/java/com/formance/formance_sdk/models/shared/TransferResponse.java lib/src/main/java/com/formance/formance_sdk/models/shared/TransferRequest.java +lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationResponse.java +lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationStatus.java +lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationType.java +lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiation.java +lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationRequestType.java +lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationRequest.java lib/src/main/java/com/formance/formance_sdk/models/shared/BalancesCursorCursor.java lib/src/main/java/com/formance/formance_sdk/models/shared/BalancesCursor.java lib/src/main/java/com/formance/formance_sdk/models/shared/AccountBalance.java @@ -364,11 +379,15 @@ lib/src/main/java/com/formance/formance_sdk/models/shared/TransfersResponseData. lib/src/main/java/com/formance/formance_sdk/models/shared/TransfersResponse.java lib/src/main/java/com/formance/formance_sdk/models/shared/PaymentsCursorCursor.java lib/src/main/java/com/formance/formance_sdk/models/shared/PaymentsCursor.java +lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationsCursorCursor.java +lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationsCursor.java lib/src/main/java/com/formance/formance_sdk/models/shared/PaymentsAccountResponse.java lib/src/main/java/com/formance/formance_sdk/models/shared/PaymentsAccount.java lib/src/main/java/com/formance/formance_sdk/models/shared/AccountsCursorCursor.java lib/src/main/java/com/formance/formance_sdk/models/shared/AccountsCursor.java lib/src/main/java/com/formance/formance_sdk/models/shared/ConnectorConfigResponse.java +lib/src/main/java/com/formance/formance_sdk/models/shared/UpdateTransferInitiationStatusRequestStatus.java +lib/src/main/java/com/formance/formance_sdk/models/shared/UpdateTransferInitiationStatusRequest.java lib/src/main/java/com/formance/formance_sdk/models/shared/ResponseCursorTotal.java lib/src/main/java/com/formance/formance_sdk/models/shared/ResponseCursor.java lib/src/main/java/com/formance/formance_sdk/models/shared/Response.java diff --git a/sdks/java/lib/src/main/java/com/formance/formance_sdk/Payments.java b/sdks/java/lib/src/main/java/com/formance/formance_sdk/Payments.java index 9dad8948ee..c440e1c84d 100755 --- a/sdks/java/lib/src/main/java/com/formance/formance_sdk/Payments.java +++ b/sdks/java/lib/src/main/java/com/formance/formance_sdk/Payments.java @@ -122,6 +122,85 @@ public com.formance.formance_sdk.models.operations.ConnectorsTransferResponse co return res; } + /** + * Create a TransferInitiation + * Create a transfer initiation + * @param request the request object containing all of the parameters for the API call + * @return the response from the API call + * @throws Exception if the API call fails + */ + public com.formance.formance_sdk.models.operations.CreateTransferInitiationResponse createTransferInitiation(com.formance.formance_sdk.models.shared.TransferInitiationRequest request) throws Exception { + String baseUrl = this._serverUrl; + String url = com.formance.formance_sdk.utils.Utils.generateURL(baseUrl, "/api/payments/transfer-initiation"); + + HTTPRequest req = new HTTPRequest(); + req.setMethod("POST"); + req.setURL(url); + SerializedBody serializedRequestBody = com.formance.formance_sdk.utils.Utils.serializeRequestBody(request, "request", "json"); + if (serializedRequestBody == null) { + throw new Exception("Request body is required"); + } + req.setBody(serializedRequestBody); + + req.addHeader("Accept", "application/json"); + req.addHeader("user-agent", String.format("speakeasy-sdk/%s %s %s", this._language, this._sdkVersion, this._genVersion)); + + HTTPClient client = this._securityClient; + + HttpResponse httpRes = client.send(req); + + String contentType = httpRes.headers().firstValue("Content-Type").orElse("application/octet-stream"); + + com.formance.formance_sdk.models.operations.CreateTransferInitiationResponse res = new com.formance.formance_sdk.models.operations.CreateTransferInitiationResponse(contentType, httpRes.statusCode()) {{ + transferInitiationResponse = null; + }}; + res.rawResponse = httpRes; + + if (httpRes.statusCode() == 200) { + if (com.formance.formance_sdk.utils.Utils.matchContentType(contentType, "application/json")) { + ObjectMapper mapper = JSON.getMapper(); + com.formance.formance_sdk.models.shared.TransferInitiationResponse out = mapper.readValue(new String(httpRes.body(), StandardCharsets.UTF_8), com.formance.formance_sdk.models.shared.TransferInitiationResponse.class); + res.transferInitiationResponse = out; + } + } + + return res; + } + + /** + * Delete a transfer initiation + * Delete a transfer initiation by its id. + * @param request the request object containing all of the parameters for the API call + * @return the response from the API call + * @throws Exception if the API call fails + */ + public com.formance.formance_sdk.models.operations.DeleteTransferInitiationResponse deleteTransferInitiation(com.formance.formance_sdk.models.operations.DeleteTransferInitiationRequest request) throws Exception { + String baseUrl = this._serverUrl; + String url = com.formance.formance_sdk.utils.Utils.generateURL(com.formance.formance_sdk.models.operations.DeleteTransferInitiationRequest.class, baseUrl, "/api/payments/transfer-initiation/{transferId}", request, null); + + HTTPRequest req = new HTTPRequest(); + req.setMethod("DELETE"); + req.setURL(url); + + req.addHeader("Accept", "*/*"); + req.addHeader("user-agent", String.format("speakeasy-sdk/%s %s %s", this._language, this._sdkVersion, this._genVersion)); + + HTTPClient client = this._securityClient; + + HttpResponse httpRes = client.send(req); + + String contentType = httpRes.headers().firstValue("Content-Type").orElse("application/octet-stream"); + + com.formance.formance_sdk.models.operations.DeleteTransferInitiationResponse res = new com.formance.formance_sdk.models.operations.DeleteTransferInitiationResponse(contentType, httpRes.statusCode()) {{ + }}; + res.rawResponse = httpRes; + + if (httpRes.statusCode() == 204) { + } + + return res; + } + /** * Get account balances * @param request the request object containing all of the parameters for the API call @@ -246,6 +325,45 @@ public com.formance.formance_sdk.models.operations.GetPaymentResponse getPayment return res; } + /** + * Get a transfer initiation + * @param request the request object containing all of the parameters for the API call + * @return the response from the API call + * @throws Exception if the API call fails + */ + public com.formance.formance_sdk.models.operations.GetTransferInitiationResponse getTransferInitiation(com.formance.formance_sdk.models.operations.GetTransferInitiationRequest request) throws Exception { + String baseUrl = this._serverUrl; + String url = com.formance.formance_sdk.utils.Utils.generateURL(com.formance.formance_sdk.models.operations.GetTransferInitiationRequest.class, baseUrl, "/api/payments/transfer-initiation/{transferId}", request, null); + + HTTPRequest req = new HTTPRequest(); + req.setMethod("GET"); + req.setURL(url); + + req.addHeader("Accept", "application/json"); + req.addHeader("user-agent", String.format("speakeasy-sdk/%s %s %s", this._language, this._sdkVersion, this._genVersion)); + + HTTPClient client = this._securityClient; + + HttpResponse httpRes = client.send(req); + + String contentType = httpRes.headers().firstValue("Content-Type").orElse("application/octet-stream"); + + com.formance.formance_sdk.models.operations.GetTransferInitiationResponse res = new com.formance.formance_sdk.models.operations.GetTransferInitiationResponse(contentType, httpRes.statusCode()) {{ + transferInitiationResponse = null; + }}; + res.rawResponse = httpRes; + + if (httpRes.statusCode() == 200) { + if (com.formance.formance_sdk.utils.Utils.matchContentType(contentType, "application/json")) { + ObjectMapper mapper = JSON.getMapper(); + com.formance.formance_sdk.models.shared.TransferInitiationResponse out = mapper.readValue(new String(httpRes.body(), StandardCharsets.UTF_8), com.formance.formance_sdk.models.shared.TransferInitiationResponse.class); + res.transferInitiationResponse = out; + } + } + + return res; + } + /** * Install a connector * Install a connector by its name and config. @@ -494,6 +612,51 @@ public com.formance.formance_sdk.models.operations.ListPaymentsResponse listPaym return res; } + /** + * List Transfer Initiations + * @param request the request object containing all of the parameters for the API call + * @return the response from the API call + * @throws Exception if the API call fails + */ + public com.formance.formance_sdk.models.operations.ListTransferInitiationsResponse listTransferInitiations(com.formance.formance_sdk.models.operations.ListTransferInitiationsRequest request) throws Exception { + String baseUrl = this._serverUrl; + String url = com.formance.formance_sdk.utils.Utils.generateURL(baseUrl, "/api/payments/transfer-initiation"); + + HTTPRequest req = new HTTPRequest(); + req.setMethod("GET"); + req.setURL(url); + + req.addHeader("Accept", "application/json"); + req.addHeader("user-agent", String.format("speakeasy-sdk/%s %s %s", this._language, this._sdkVersion, this._genVersion)); + java.util.List queryParams = com.formance.formance_sdk.utils.Utils.getQueryParams(com.formance.formance_sdk.models.operations.ListTransferInitiationsRequest.class, request, null); + if (queryParams != null) { + for (NameValuePair queryParam : queryParams) { + req.addQueryParam(queryParam); + } + } + + HTTPClient client = this._securityClient; + + HttpResponse httpRes = client.send(req); + + String contentType = httpRes.headers().firstValue("Content-Type").orElse("application/octet-stream"); + + com.formance.formance_sdk.models.operations.ListTransferInitiationsResponse res = new com.formance.formance_sdk.models.operations.ListTransferInitiationsResponse(contentType, httpRes.statusCode()) {{ + transferInitiationsCursor = null; + }}; + res.rawResponse = httpRes; + + if (httpRes.statusCode() == 200) { + if (com.formance.formance_sdk.utils.Utils.matchContentType(contentType, "application/json")) { + ObjectMapper mapper = JSON.getMapper(); + com.formance.formance_sdk.models.shared.TransferInitiationsCursor out = mapper.readValue(new String(httpRes.body(), StandardCharsets.UTF_8), com.formance.formance_sdk.models.shared.TransferInitiationsCursor.class); + res.transferInitiationsCursor = out; + } + } + + return res; + } + /** * Get an account * @param request the request object containing all of the parameters for the API call @@ -692,6 +855,45 @@ public com.formance.formance_sdk.models.operations.ResetConnectorResponse resetC return res; } + /** + * Update the status of a transfer initiation + * Update a transfer initiation status + * @param request the request object containing all of the parameters for the API call + * @return the response from the API call + * @throws Exception if the API call fails + */ + public com.formance.formance_sdk.models.operations.UdpateTransferInitiationStatusResponse udpateTransferInitiationStatus(com.formance.formance_sdk.models.operations.UdpateTransferInitiationStatusRequest request) throws Exception { + String baseUrl = this._serverUrl; + String url = com.formance.formance_sdk.utils.Utils.generateURL(com.formance.formance_sdk.models.operations.UdpateTransferInitiationStatusRequest.class, baseUrl, "/api/payments/transfer-initiation/{transferId}/status", request, null); + + HTTPRequest req = new HTTPRequest(); + req.setMethod("POST"); + req.setURL(url); + SerializedBody serializedRequestBody = com.formance.formance_sdk.utils.Utils.serializeRequestBody(request, "updateTransferInitiationStatusRequest", "json"); + if (serializedRequestBody == null) { + throw new Exception("Request body is required"); + } + req.setBody(serializedRequestBody); + + req.addHeader("Accept", "*/*"); + req.addHeader("user-agent", String.format("speakeasy-sdk/%s %s %s", this._language, this._sdkVersion, this._genVersion)); + + HTTPClient client = this._securityClient; + + HttpResponse httpRes = client.send(req); + + String contentType = httpRes.headers().firstValue("Content-Type").orElse("application/octet-stream"); + + com.formance.formance_sdk.models.operations.UdpateTransferInitiationStatusResponse res = new com.formance.formance_sdk.models.operations.UdpateTransferInitiationStatusResponse(contentType, httpRes.statusCode()) {{ + }}; + res.rawResponse = httpRes; + + if (httpRes.statusCode() == 204) { + } + + return res; + } + /** * Uninstall a connector * Uninstall a connector by its name. diff --git a/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/CreateTransferInitiationResponse.java b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/CreateTransferInitiationResponse.java new file mode 100755 index 0000000000..9d801ad5a4 --- /dev/null +++ b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/CreateTransferInitiationResponse.java @@ -0,0 +1,50 @@ +/* + * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + */ + +package com.formance.formance_sdk.models.operations; + +import com.fasterxml.jackson.annotation.JsonProperty; +import java.net.http.HttpResponse; + +public class CreateTransferInitiationResponse { + + public String contentType; + + public CreateTransferInitiationResponse withContentType(String contentType) { + this.contentType = contentType; + return this; + } + + + public Integer statusCode; + + public CreateTransferInitiationResponse withStatusCode(Integer statusCode) { + this.statusCode = statusCode; + return this; + } + + + public HttpResponse rawResponse; + + public CreateTransferInitiationResponse withRawResponse(HttpResponse rawResponse) { + this.rawResponse = rawResponse; + return this; + } + + /** + * OK + */ + + public com.formance.formance_sdk.models.shared.TransferInitiationResponse transferInitiationResponse; + + public CreateTransferInitiationResponse withTransferInitiationResponse(com.formance.formance_sdk.models.shared.TransferInitiationResponse transferInitiationResponse) { + this.transferInitiationResponse = transferInitiationResponse; + return this; + } + + public CreateTransferInitiationResponse(@JsonProperty("ContentType") String contentType, @JsonProperty("StatusCode") Integer statusCode) { + this.contentType = contentType; + this.statusCode = statusCode; + } +} diff --git a/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/DeleteTransferInitiationRequest.java b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/DeleteTransferInitiationRequest.java new file mode 100755 index 0000000000..bc6710cf07 --- /dev/null +++ b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/DeleteTransferInitiationRequest.java @@ -0,0 +1,25 @@ +/* + * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + */ + +package com.formance.formance_sdk.models.operations; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.formance.formance_sdk.utils.SpeakeasyMetadata; + +public class DeleteTransferInitiationRequest { + /** + * The transfer ID. + */ + @SpeakeasyMetadata("pathParam:style=simple,explode=false,name=transferId") + public String transferId; + + public DeleteTransferInitiationRequest withTransferId(String transferId) { + this.transferId = transferId; + return this; + } + + public DeleteTransferInitiationRequest(@JsonProperty("transferId") String transferId) { + this.transferId = transferId; + } +} diff --git a/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/DeleteTransferInitiationResponse.java b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/DeleteTransferInitiationResponse.java new file mode 100755 index 0000000000..1ae74469d0 --- /dev/null +++ b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/DeleteTransferInitiationResponse.java @@ -0,0 +1,39 @@ +/* + * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + */ + +package com.formance.formance_sdk.models.operations; + +import com.fasterxml.jackson.annotation.JsonProperty; +import java.net.http.HttpResponse; + +public class DeleteTransferInitiationResponse { + + public String contentType; + + public DeleteTransferInitiationResponse withContentType(String contentType) { + this.contentType = contentType; + return this; + } + + + public Integer statusCode; + + public DeleteTransferInitiationResponse withStatusCode(Integer statusCode) { + this.statusCode = statusCode; + return this; + } + + + public HttpResponse rawResponse; + + public DeleteTransferInitiationResponse withRawResponse(HttpResponse rawResponse) { + this.rawResponse = rawResponse; + return this; + } + + public DeleteTransferInitiationResponse(@JsonProperty("ContentType") String contentType, @JsonProperty("StatusCode") Integer statusCode) { + this.contentType = contentType; + this.statusCode = statusCode; + } +} diff --git a/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/GetTransferInitiationRequest.java b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/GetTransferInitiationRequest.java new file mode 100755 index 0000000000..3e37724695 --- /dev/null +++ b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/GetTransferInitiationRequest.java @@ -0,0 +1,25 @@ +/* + * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + */ + +package com.formance.formance_sdk.models.operations; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.formance.formance_sdk.utils.SpeakeasyMetadata; + +public class GetTransferInitiationRequest { + /** + * The transfer ID. + */ + @SpeakeasyMetadata("pathParam:style=simple,explode=false,name=transferId") + public String transferId; + + public GetTransferInitiationRequest withTransferId(String transferId) { + this.transferId = transferId; + return this; + } + + public GetTransferInitiationRequest(@JsonProperty("transferId") String transferId) { + this.transferId = transferId; + } +} diff --git a/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/GetTransferInitiationResponse.java b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/GetTransferInitiationResponse.java new file mode 100755 index 0000000000..5b09c54851 --- /dev/null +++ b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/GetTransferInitiationResponse.java @@ -0,0 +1,50 @@ +/* + * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + */ + +package com.formance.formance_sdk.models.operations; + +import com.fasterxml.jackson.annotation.JsonProperty; +import java.net.http.HttpResponse; + +public class GetTransferInitiationResponse { + + public String contentType; + + public GetTransferInitiationResponse withContentType(String contentType) { + this.contentType = contentType; + return this; + } + + + public Integer statusCode; + + public GetTransferInitiationResponse withStatusCode(Integer statusCode) { + this.statusCode = statusCode; + return this; + } + + + public HttpResponse rawResponse; + + public GetTransferInitiationResponse withRawResponse(HttpResponse rawResponse) { + this.rawResponse = rawResponse; + return this; + } + + /** + * OK + */ + + public com.formance.formance_sdk.models.shared.TransferInitiationResponse transferInitiationResponse; + + public GetTransferInitiationResponse withTransferInitiationResponse(com.formance.formance_sdk.models.shared.TransferInitiationResponse transferInitiationResponse) { + this.transferInitiationResponse = transferInitiationResponse; + return this; + } + + public GetTransferInitiationResponse(@JsonProperty("ContentType") String contentType, @JsonProperty("StatusCode") Integer statusCode) { + this.contentType = contentType; + this.statusCode = statusCode; + } +} diff --git a/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/ListTransferInitiationsRequest.java b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/ListTransferInitiationsRequest.java new file mode 100755 index 0000000000..5ab91a819b --- /dev/null +++ b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/ListTransferInitiationsRequest.java @@ -0,0 +1,49 @@ +/* + * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + */ + +package com.formance.formance_sdk.models.operations; + +import com.formance.formance_sdk.utils.SpeakeasyMetadata; + +public class ListTransferInitiationsRequest { + /** + * Parameter used in pagination requests. Maximum page size is set to 15. + * Set to the value of next for the next page of results. + * Set to the value of previous for the previous page of results. + * No other parameters can be set when this parameter is set. + * + */ + @SpeakeasyMetadata("queryParam:style=form,explode=true,name=cursor") + public String cursor; + + public ListTransferInitiationsRequest withCursor(String cursor) { + this.cursor = cursor; + return this; + } + + /** + * The maximum number of results to return per page. + * + */ + @SpeakeasyMetadata("queryParam:style=form,explode=true,name=pageSize") + public Long pageSize; + + public ListTransferInitiationsRequest withPageSize(Long pageSize) { + this.pageSize = pageSize; + return this; + } + + /** + * Fields used to sort payments (default is date:desc). + */ + @SpeakeasyMetadata("queryParam:style=form,explode=true,name=sort") + public String[] sort; + + public ListTransferInitiationsRequest withSort(String[] sort) { + this.sort = sort; + return this; + } + + public ListTransferInitiationsRequest(){} +} diff --git a/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/ListTransferInitiationsResponse.java b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/ListTransferInitiationsResponse.java new file mode 100755 index 0000000000..780aa42c81 --- /dev/null +++ b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/ListTransferInitiationsResponse.java @@ -0,0 +1,50 @@ +/* + * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + */ + +package com.formance.formance_sdk.models.operations; + +import com.fasterxml.jackson.annotation.JsonProperty; +import java.net.http.HttpResponse; + +public class ListTransferInitiationsResponse { + + public String contentType; + + public ListTransferInitiationsResponse withContentType(String contentType) { + this.contentType = contentType; + return this; + } + + + public Integer statusCode; + + public ListTransferInitiationsResponse withStatusCode(Integer statusCode) { + this.statusCode = statusCode; + return this; + } + + + public HttpResponse rawResponse; + + public ListTransferInitiationsResponse withRawResponse(HttpResponse rawResponse) { + this.rawResponse = rawResponse; + return this; + } + + /** + * OK + */ + + public com.formance.formance_sdk.models.shared.TransferInitiationsCursor transferInitiationsCursor; + + public ListTransferInitiationsResponse withTransferInitiationsCursor(com.formance.formance_sdk.models.shared.TransferInitiationsCursor transferInitiationsCursor) { + this.transferInitiationsCursor = transferInitiationsCursor; + return this; + } + + public ListTransferInitiationsResponse(@JsonProperty("ContentType") String contentType, @JsonProperty("StatusCode") Integer statusCode) { + this.contentType = contentType; + this.statusCode = statusCode; + } +} diff --git a/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/UdpateTransferInitiationStatusRequest.java b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/UdpateTransferInitiationStatusRequest.java new file mode 100755 index 0000000000..0640cf215b --- /dev/null +++ b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/UdpateTransferInitiationStatusRequest.java @@ -0,0 +1,34 @@ +/* + * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + */ + +package com.formance.formance_sdk.models.operations; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.formance.formance_sdk.utils.SpeakeasyMetadata; + +public class UdpateTransferInitiationStatusRequest { + @SpeakeasyMetadata("request:mediaType=application/json") + public com.formance.formance_sdk.models.shared.UpdateTransferInitiationStatusRequest updateTransferInitiationStatusRequest; + + public UdpateTransferInitiationStatusRequest withUpdateTransferInitiationStatusRequest(com.formance.formance_sdk.models.shared.UpdateTransferInitiationStatusRequest updateTransferInitiationStatusRequest) { + this.updateTransferInitiationStatusRequest = updateTransferInitiationStatusRequest; + return this; + } + + /** + * The transfer ID. + */ + @SpeakeasyMetadata("pathParam:style=simple,explode=false,name=transferId") + public String transferId; + + public UdpateTransferInitiationStatusRequest withTransferId(String transferId) { + this.transferId = transferId; + return this; + } + + public UdpateTransferInitiationStatusRequest(@JsonProperty("UpdateTransferInitiationStatusRequest") com.formance.formance_sdk.models.shared.UpdateTransferInitiationStatusRequest updateTransferInitiationStatusRequest, @JsonProperty("transferId") String transferId) { + this.updateTransferInitiationStatusRequest = updateTransferInitiationStatusRequest; + this.transferId = transferId; + } +} diff --git a/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/UdpateTransferInitiationStatusResponse.java b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/UdpateTransferInitiationStatusResponse.java new file mode 100755 index 0000000000..0a5059df6f --- /dev/null +++ b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/operations/UdpateTransferInitiationStatusResponse.java @@ -0,0 +1,39 @@ +/* + * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + */ + +package com.formance.formance_sdk.models.operations; + +import com.fasterxml.jackson.annotation.JsonProperty; +import java.net.http.HttpResponse; + +public class UdpateTransferInitiationStatusResponse { + + public String contentType; + + public UdpateTransferInitiationStatusResponse withContentType(String contentType) { + this.contentType = contentType; + return this; + } + + + public Integer statusCode; + + public UdpateTransferInitiationStatusResponse withStatusCode(Integer statusCode) { + this.statusCode = statusCode; + return this; + } + + + public HttpResponse rawResponse; + + public UdpateTransferInitiationStatusResponse withRawResponse(HttpResponse rawResponse) { + this.rawResponse = rawResponse; + return this; + } + + public UdpateTransferInitiationStatusResponse(@JsonProperty("ContentType") String contentType, @JsonProperty("StatusCode") Integer statusCode) { + this.contentType = contentType; + this.statusCode = statusCode; + } +} diff --git a/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiation.java b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiation.java new file mode 100755 index 0000000000..810d54b0f6 --- /dev/null +++ b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiation.java @@ -0,0 +1,129 @@ +/* + * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + */ + +package com.formance.formance_sdk.models.shared; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.formance.formance_sdk.utils.DateTimeDeserializer; +import com.formance.formance_sdk.utils.DateTimeSerializer; +import java.time.OffsetDateTime; + +public class TransferInitiation { + @JsonProperty("amount") + public Long amount; + + public TransferInitiation withAmount(Long amount) { + this.amount = amount; + return this; + } + + @JsonProperty("asset") + public String asset; + + public TransferInitiation withAsset(String asset) { + this.asset = asset; + return this; + } + + @JsonSerialize(using = DateTimeSerializer.class) + @JsonDeserialize(using = DateTimeDeserializer.class) + @JsonProperty("createdAt") + public OffsetDateTime createdAt; + + public TransferInitiation withCreatedAt(OffsetDateTime createdAt) { + this.createdAt = createdAt; + return this; + } + + @JsonProperty("description") + public String description; + + public TransferInitiation withDescription(String description) { + this.description = description; + return this; + } + + @JsonProperty("destinationAccountID") + public String destinationAccountID; + + public TransferInitiation withDestinationAccountID(String destinationAccountID) { + this.destinationAccountID = destinationAccountID; + return this; + } + + @JsonProperty("error") + public String error; + + public TransferInitiation withError(String error) { + this.error = error; + return this; + } + + @JsonProperty("id") + public String id; + + public TransferInitiation withId(String id) { + this.id = id; + return this; + } + + @JsonProperty("provider") + public Connector provider; + + public TransferInitiation withProvider(Connector provider) { + this.provider = provider; + return this; + } + + @JsonProperty("sourceAccountID") + public String sourceAccountID; + + public TransferInitiation withSourceAccountID(String sourceAccountID) { + this.sourceAccountID = sourceAccountID; + return this; + } + + @JsonProperty("status") + public TransferInitiationStatus status; + + public TransferInitiation withStatus(TransferInitiationStatus status) { + this.status = status; + return this; + } + + @JsonProperty("type") + public TransferInitiationType type; + + public TransferInitiation withType(TransferInitiationType type) { + this.type = type; + return this; + } + + @JsonSerialize(using = DateTimeSerializer.class) + @JsonDeserialize(using = DateTimeDeserializer.class) + @JsonProperty("updatedAt") + public OffsetDateTime updatedAt; + + public TransferInitiation withUpdatedAt(OffsetDateTime updatedAt) { + this.updatedAt = updatedAt; + return this; + } + + public TransferInitiation(@JsonProperty("amount") Long amount, @JsonProperty("asset") String asset, @JsonProperty("createdAt") OffsetDateTime createdAt, @JsonProperty("description") String description, @JsonProperty("destinationAccountID") String destinationAccountID, @JsonProperty("error") String error, @JsonProperty("id") String id, @JsonProperty("provider") Connector provider, @JsonProperty("sourceAccountID") String sourceAccountID, @JsonProperty("status") TransferInitiationStatus status, @JsonProperty("type") TransferInitiationType type, @JsonProperty("updatedAt") OffsetDateTime updatedAt) { + this.amount = amount; + this.asset = asset; + this.createdAt = createdAt; + this.description = description; + this.destinationAccountID = destinationAccountID; + this.error = error; + this.id = id; + this.provider = provider; + this.sourceAccountID = sourceAccountID; + this.status = status; + this.type = type; + this.updatedAt = updatedAt; + } +} diff --git a/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationRequest.java b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationRequest.java new file mode 100755 index 0000000000..e44aa24280 --- /dev/null +++ b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationRequest.java @@ -0,0 +1,109 @@ +/* + * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + */ + +package com.formance.formance_sdk.models.shared; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.formance.formance_sdk.utils.DateTimeDeserializer; +import com.formance.formance_sdk.utils.DateTimeSerializer; +import java.time.OffsetDateTime; + +public class TransferInitiationRequest { + @JsonProperty("amount") + public Long amount; + + public TransferInitiationRequest withAmount(Long amount) { + this.amount = amount; + return this; + } + + @JsonProperty("asset") + public String asset; + + public TransferInitiationRequest withAsset(String asset) { + this.asset = asset; + return this; + } + + @JsonSerialize(using = DateTimeSerializer.class) + @JsonDeserialize(using = DateTimeDeserializer.class) + @JsonProperty("createdAt") + public OffsetDateTime createdAt; + + public TransferInitiationRequest withCreatedAt(OffsetDateTime createdAt) { + this.createdAt = createdAt; + return this; + } + + @JsonProperty("description") + public String description; + + public TransferInitiationRequest withDescription(String description) { + this.description = description; + return this; + } + + @JsonProperty("destinationAccountID") + public String destinationAccountID; + + public TransferInitiationRequest withDestinationAccountID(String destinationAccountID) { + this.destinationAccountID = destinationAccountID; + return this; + } + + @JsonProperty("provider") + public Connector provider; + + public TransferInitiationRequest withProvider(Connector provider) { + this.provider = provider; + return this; + } + + @JsonProperty("sourceAccountID") + public String sourceAccountID; + + public TransferInitiationRequest withSourceAccountID(String sourceAccountID) { + this.sourceAccountID = sourceAccountID; + return this; + } + + @JsonProperty("type") + public TransferInitiationRequestType type; + + public TransferInitiationRequest withType(TransferInitiationRequestType type) { + this.type = type; + return this; + } + + @JsonProperty("uniqueRequestID") + public String uniqueRequestID; + + public TransferInitiationRequest withUniqueRequestID(String uniqueRequestID) { + this.uniqueRequestID = uniqueRequestID; + return this; + } + + @JsonProperty("validated") + public Boolean validated; + + public TransferInitiationRequest withValidated(Boolean validated) { + this.validated = validated; + return this; + } + + public TransferInitiationRequest(@JsonProperty("amount") Long amount, @JsonProperty("asset") String asset, @JsonProperty("createdAt") OffsetDateTime createdAt, @JsonProperty("description") String description, @JsonProperty("destinationAccountID") String destinationAccountID, @JsonProperty("provider") Connector provider, @JsonProperty("sourceAccountID") String sourceAccountID, @JsonProperty("type") TransferInitiationRequestType type, @JsonProperty("uniqueRequestID") String uniqueRequestID, @JsonProperty("validated") Boolean validated) { + this.amount = amount; + this.asset = asset; + this.createdAt = createdAt; + this.description = description; + this.destinationAccountID = destinationAccountID; + this.provider = provider; + this.sourceAccountID = sourceAccountID; + this.type = type; + this.uniqueRequestID = uniqueRequestID; + this.validated = validated; + } +} diff --git a/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationRequestType.java b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationRequestType.java new file mode 100755 index 0000000000..b64bba6fe4 --- /dev/null +++ b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationRequestType.java @@ -0,0 +1,19 @@ +/* + * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + */ + +package com.formance.formance_sdk.models.shared; + +import com.fasterxml.jackson.annotation.JsonValue; + +public enum TransferInitiationRequestType { + TRANSFER("TRANSFER"), + PAYOUT("PAYOUT"); + + @JsonValue + public final String value; + + private TransferInitiationRequestType(String value) { + this.value = value; + } +} diff --git a/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationResponse.java b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationResponse.java new file mode 100755 index 0000000000..f44ba44d9a --- /dev/null +++ b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationResponse.java @@ -0,0 +1,24 @@ +/* + * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + */ + +package com.formance.formance_sdk.models.shared; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * TransferInitiationResponse - OK + */ +public class TransferInitiationResponse { + @JsonProperty("data") + public TransferInitiation data; + + public TransferInitiationResponse withData(TransferInitiation data) { + this.data = data; + return this; + } + + public TransferInitiationResponse(@JsonProperty("data") TransferInitiation data) { + this.data = data; + } +} diff --git a/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationStatus.java b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationStatus.java new file mode 100755 index 0000000000..2b070a676d --- /dev/null +++ b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationStatus.java @@ -0,0 +1,23 @@ +/* + * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + */ + +package com.formance.formance_sdk.models.shared; + +import com.fasterxml.jackson.annotation.JsonValue; + +public enum TransferInitiationStatus { + WAITING_FOR_VALIDATION("WAITING_FOR_VALIDATION"), + PROCESSING("PROCESSING"), + PROCESSED("PROCESSED"), + FAILED("FAILED"), + REJECTED("REJECTED"), + VALIDATED("VALIDATED"); + + @JsonValue + public final String value; + + private TransferInitiationStatus(String value) { + this.value = value; + } +} diff --git a/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationType.java b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationType.java new file mode 100755 index 0000000000..f44e05dd74 --- /dev/null +++ b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationType.java @@ -0,0 +1,19 @@ +/* + * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + */ + +package com.formance.formance_sdk.models.shared; + +import com.fasterxml.jackson.annotation.JsonValue; + +public enum TransferInitiationType { + TRANSFER("TRANSFER"), + PAYOUT("PAYOUT"); + + @JsonValue + public final String value; + + private TransferInitiationType(String value) { + this.value = value; + } +} diff --git a/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationsCursor.java b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationsCursor.java new file mode 100755 index 0000000000..51131e113d --- /dev/null +++ b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationsCursor.java @@ -0,0 +1,24 @@ +/* + * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + */ + +package com.formance.formance_sdk.models.shared; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * TransferInitiationsCursor - OK + */ +public class TransferInitiationsCursor { + @JsonProperty("cursor") + public TransferInitiationsCursorCursor cursor; + + public TransferInitiationsCursor withCursor(TransferInitiationsCursorCursor cursor) { + this.cursor = cursor; + return this; + } + + public TransferInitiationsCursor(@JsonProperty("cursor") TransferInitiationsCursorCursor cursor) { + this.cursor = cursor; + } +} diff --git a/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationsCursorCursor.java b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationsCursorCursor.java new file mode 100755 index 0000000000..db54c00f38 --- /dev/null +++ b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/TransferInitiationsCursorCursor.java @@ -0,0 +1,59 @@ +/* + * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + */ + +package com.formance.formance_sdk.models.shared; + +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; + +public class TransferInitiationsCursorCursor { + @JsonProperty("data") + public TransferInitiation[] data; + + public TransferInitiationsCursorCursor withData(TransferInitiation[] data) { + this.data = data; + return this; + } + + @JsonProperty("hasMore") + public Boolean hasMore; + + public TransferInitiationsCursorCursor withHasMore(Boolean hasMore) { + this.hasMore = hasMore; + return this; + } + + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("next") + public String next; + + public TransferInitiationsCursorCursor withNext(String next) { + this.next = next; + return this; + } + + @JsonProperty("pageSize") + public Long pageSize; + + public TransferInitiationsCursorCursor withPageSize(Long pageSize) { + this.pageSize = pageSize; + return this; + } + + @JsonInclude(Include.NON_ABSENT) + @JsonProperty("previous") + public String previous; + + public TransferInitiationsCursorCursor withPrevious(String previous) { + this.previous = previous; + return this; + } + + public TransferInitiationsCursorCursor(@JsonProperty("data") TransferInitiation[] data, @JsonProperty("hasMore") Boolean hasMore, @JsonProperty("pageSize") Long pageSize) { + this.data = data; + this.hasMore = hasMore; + this.pageSize = pageSize; + } +} diff --git a/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/UpdateTransferInitiationStatusRequest.java b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/UpdateTransferInitiationStatusRequest.java new file mode 100755 index 0000000000..4a4ff3c622 --- /dev/null +++ b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/UpdateTransferInitiationStatusRequest.java @@ -0,0 +1,21 @@ +/* + * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + */ + +package com.formance.formance_sdk.models.shared; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class UpdateTransferInitiationStatusRequest { + @JsonProperty("status") + public UpdateTransferInitiationStatusRequestStatus status; + + public UpdateTransferInitiationStatusRequest withStatus(UpdateTransferInitiationStatusRequestStatus status) { + this.status = status; + return this; + } + + public UpdateTransferInitiationStatusRequest(@JsonProperty("status") UpdateTransferInitiationStatusRequestStatus status) { + this.status = status; + } +} diff --git a/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/UpdateTransferInitiationStatusRequestStatus.java b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/UpdateTransferInitiationStatusRequestStatus.java new file mode 100755 index 0000000000..4c0c9e0202 --- /dev/null +++ b/sdks/java/lib/src/main/java/com/formance/formance_sdk/models/shared/UpdateTransferInitiationStatusRequestStatus.java @@ -0,0 +1,23 @@ +/* + * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + */ + +package com.formance.formance_sdk.models.shared; + +import com.fasterxml.jackson.annotation.JsonValue; + +public enum UpdateTransferInitiationStatusRequestStatus { + WAITING_FOR_VALIDATION("WAITING_FOR_VALIDATION"), + PROCESSING("PROCESSING"), + PROCESSED("PROCESSED"), + FAILED("FAILED"), + REJECTED("REJECTED"), + VALIDATED("VALIDATED"); + + @JsonValue + public final String value; + + private UpdateTransferInitiationStatusRequestStatus(String value) { + this.value = value; + } +} diff --git a/sdks/php/README.md b/sdks/php/README.md index fe8e2db684..b2a86ee641 100755 --- a/sdks/php/README.md +++ b/sdks/php/README.md @@ -131,20 +131,25 @@ try { * [connectorsStripeTransfer](docs/payments/README.md#connectorsstripetransfer) - Transfer funds between Stripe accounts * [connectorsTransfer](docs/payments/README.md#connectorstransfer) - Transfer funds between Connector accounts +* [createTransferInitiation](docs/payments/README.md#createtransferinitiation) - Create a TransferInitiation +* [deleteTransferInitiation](docs/payments/README.md#deletetransferinitiation) - Delete a transfer initiation * [getAccountBalances](docs/payments/README.md#getaccountbalances) - Get account balances * [getConnectorTask](docs/payments/README.md#getconnectortask) - Read a specific task of the connector * [getPayment](docs/payments/README.md#getpayment) - Get a payment +* [getTransferInitiation](docs/payments/README.md#gettransferinitiation) - Get a transfer initiation * [installConnector](docs/payments/README.md#installconnector) - Install a connector * [listAllConnectors](docs/payments/README.md#listallconnectors) - List all installed connectors * [listConfigsAvailableConnectors](docs/payments/README.md#listconfigsavailableconnectors) - List the configs of each available connector * [listConnectorTasks](docs/payments/README.md#listconnectortasks) - List tasks from a connector * [listConnectorsTransfers](docs/payments/README.md#listconnectorstransfers) - List transfers and their statuses * [listPayments](docs/payments/README.md#listpayments) - List payments +* [listTransferInitiations](docs/payments/README.md#listtransferinitiations) - List Transfer Initiations * [paymentsgetAccount](docs/payments/README.md#paymentsgetaccount) - Get an account * [paymentsgetServerInfo](docs/payments/README.md#paymentsgetserverinfo) - Get server info * [paymentslistAccounts](docs/payments/README.md#paymentslistaccounts) - List accounts * [readConnectorConfig](docs/payments/README.md#readconnectorconfig) - Read the config of a connector * [resetConnector](docs/payments/README.md#resetconnector) - Reset a connector +* [udpateTransferInitiationStatus](docs/payments/README.md#udpatetransferinitiationstatus) - Update the status of a transfer initiation * [uninstallConnector](docs/payments/README.md#uninstallconnector) - Uninstall a connector * [updateMetadata](docs/payments/README.md#updatemetadata) - Update metadata diff --git a/sdks/php/docs/payments/README.md b/sdks/php/docs/payments/README.md index f401edc051..bae1a61675 100755 --- a/sdks/php/docs/payments/README.md +++ b/sdks/php/docs/payments/README.md @@ -4,20 +4,25 @@ * [connectorsStripeTransfer](#connectorsstripetransfer) - Transfer funds between Stripe accounts * [connectorsTransfer](#connectorstransfer) - Transfer funds between Connector accounts +* [createTransferInitiation](#createtransferinitiation) - Create a TransferInitiation +* [deleteTransferInitiation](#deletetransferinitiation) - Delete a transfer initiation * [getAccountBalances](#getaccountbalances) - Get account balances * [getConnectorTask](#getconnectortask) - Read a specific task of the connector * [getPayment](#getpayment) - Get a payment +* [getTransferInitiation](#gettransferinitiation) - Get a transfer initiation * [installConnector](#installconnector) - Install a connector * [listAllConnectors](#listallconnectors) - List all installed connectors * [listConfigsAvailableConnectors](#listconfigsavailableconnectors) - List the configs of each available connector * [listConnectorTasks](#listconnectortasks) - List tasks from a connector * [listConnectorsTransfers](#listconnectorstransfers) - List transfers and their statuses * [listPayments](#listpayments) - List payments +* [listTransferInitiations](#listtransferinitiations) - List Transfer Initiations * [paymentsgetAccount](#paymentsgetaccount) - Get an account * [paymentsgetServerInfo](#paymentsgetserverinfo) - Get server info * [paymentslistAccounts](#paymentslistaccounts) - List accounts * [readConnectorConfig](#readconnectorconfig) - Read the config of a connector * [resetConnector](#resetconnector) - Reset a connector +* [udpateTransferInitiationStatus](#udpatetransferinitiationstatus) - Update the status of a transfer initiation * [uninstallConnector](#uninstallconnector) - Uninstall a connector * [updateMetadata](#updatemetadata) - Update metadata @@ -101,6 +106,83 @@ try { } ``` +## createTransferInitiation + +Create a transfer initiation + +### Example Usage + +```php +build(); + +try { + $request = new TransferInitiationRequest(); + $request->amount = 592042; + $request->asset = 'USD'; + $request->createdAt = DateTime::createFromFormat('Y-m-d\TH:i:sP', '2021-04-14T09:13:11.675Z'); + $request->description = 'officia'; + $request->destinationAccountID = 'dolor'; + $request->provider = Connector::MONEYCORP; + $request->sourceAccountID = 'a'; + $request->type = TransferInitiationRequestType::PAYOUT; + $request->uniqueRequestID = 'XXX'; + $request->validated = false; + + $response = $sdk->payments->createTransferInitiation($request); + + if ($response->transferInitiationResponse !== null) { + // handle response + } +} catch (Exception $e) { + // handle exception +} +``` + +## deleteTransferInitiation + +Delete a transfer initiation by its id. + +### Example Usage + +```php +build(); + +try { + $request = new DeleteTransferInitiationRequest(); + $request->transferId = 'in'; + + $response = $sdk->payments->deleteTransferInitiation($request); + + if ($response->statusCode === 200) { + // handle response + } +} catch (Exception $e) { + // handle exception +} +``` + ## getAccountBalances Get account balances @@ -122,19 +204,19 @@ $sdk = SDK::builder() try { $request = new GetAccountBalancesRequest(); - $request->accountId = 'provident'; - $request->asset = 'necessitatibus'; + $request->accountId = 'in'; + $request->asset = 'illum'; $request->cursor = 'aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ=='; - $request->from = DateTime::createFromFormat('Y-m-d\TH:i:sP', '2021-09-21T14:06:09.271Z'); - $request->limit = 223081; - $request->pageSize = 891555; + $request->from = DateTime::createFromFormat('Y-m-d\TH:i:sP', '2020-11-26T01:41:04.216Z'); + $request->limit = 116202; + $request->pageSize = 297437; $request->sort = [ - 'dolorum', - 'in', - 'in', - 'illum', + 'facere', + 'ea', + 'aliquid', + 'laborum', ]; - $request->to = DateTime::createFromFormat('Y-m-d\TH:i:sP', '2020-11-26T01:41:04.216Z'); + $request->to = DateTime::createFromFormat('Y-m-d\TH:i:sP', '2022-04-02T11:21:13.260Z'); $response = $sdk->payments->getAccountBalances($request); @@ -168,8 +250,8 @@ $sdk = SDK::builder() try { $request = new GetConnectorTaskRequest(); - $request->connector = Connector::STRIPE; - $request->taskId = 'magnam'; + $request->connector = Connector::CURRENCY_CLOUD; + $request->taskId = 'enim'; $response = $sdk->payments->getConnectorTask($request); @@ -202,7 +284,7 @@ $sdk = SDK::builder() try { $request = new GetPaymentRequest(); - $request->paymentId = 'cumque'; + $request->paymentId = 'accusamus'; $response = $sdk->payments->getPayment($request); @@ -214,6 +296,39 @@ try { } ``` +## getTransferInitiation + +Get a transfer initiation + +### Example Usage + +```php +build(); + +try { + $request = new GetTransferInitiationRequest(); + $request->transferId = 'delectus'; + + $response = $sdk->payments->getTransferInitiation($request); + + if ($response->transferInitiationResponse !== null) { + // handle response + } +} catch (Exception $e) { + // handle exception +} +``` + ## installConnector Install a connector by its name and config. @@ -236,12 +351,15 @@ $sdk = SDK::builder() try { $request = new InstallConnectorRequest(); - $request->requestBody = new MangoPayConfig(); - $request->requestBody->apiKey = 'XXX'; - $request->requestBody->clientID = 'XXX'; + $request->requestBody = new BankingCircleConfig(); + $request->requestBody->authorizationEndpoint = 'XXX'; $request->requestBody->endpoint = 'XXX'; + $request->requestBody->password = 'XXX'; $request->requestBody->pollingPeriod = '60s'; - $request->connector = Connector::MODULR; + $request->requestBody->userCertificate = 'XXX'; + $request->requestBody->userCertificateKey = 'XXX'; + $request->requestBody->username = 'XXX'; + $request->connector = Connector::CURRENCY_CLOUD; $response = $sdk->payments->installConnector($request); @@ -333,9 +451,9 @@ $sdk = SDK::builder() try { $request = new ListConnectorTasksRequest(); - $request->connector = Connector::MODULR; + $request->connector = Connector::BANKING_CIRCLE; $request->cursor = 'aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ=='; - $request->pageSize = 675439; + $request->pageSize = 659669; $response = $sdk->payments->listConnectorTasks($request); @@ -369,7 +487,7 @@ $sdk = SDK::builder() try { $request = new ListConnectorsTransfersRequest(); - $request->connector = Connector::MONEYCORP; + $request->connector = Connector::CURRENCY_CLOUD; $response = $sdk->payments->listConnectorsTransfers($request); @@ -403,11 +521,12 @@ $sdk = SDK::builder() try { $request = new ListPaymentsRequest(); $request->cursor = 'aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ=='; - $request->pageSize = 249796; + $request->pageSize = 533206; $request->sort = [ - 'enim', - 'accusamus', - 'delectus', + 'amet', + 'deserunt', + 'nisi', + 'vel', ]; $response = $sdk->payments->listPayments($request); @@ -420,6 +539,45 @@ try { } ``` +## listTransferInitiations + +List Transfer Initiations + +### Example Usage + +```php +build(); + +try { + $request = new ListTransferInitiationsRequest(); + $request->cursor = 'aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ=='; + $request->pageSize = 618809; + $request->sort = [ + 'molestiae', + 'perferendis', + 'nihil', + ]; + + $response = $sdk->payments->listTransferInitiations($request); + + if ($response->transferInitiationsCursor !== null) { + // handle response + } +} catch (Exception $e) { + // handle exception +} +``` + ## paymentsgetAccount Get an account @@ -441,7 +599,7 @@ $sdk = SDK::builder() try { $request = new PaymentsgetAccountRequest(); - $request->accountId = 'quidem'; + $request->accountId = 'magnam'; $response = $sdk->payments->paymentsgetAccount($request); @@ -504,11 +662,11 @@ $sdk = SDK::builder() try { $request = new PaymentslistAccountsRequest(); $request->cursor = 'aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ=='; - $request->pageSize = 588465; + $request->pageSize = 716075; $request->sort = [ - 'id', - 'blanditiis', - 'deleniti', + 'labore', + 'labore', + 'suscipit', ]; $response = $sdk->payments->paymentslistAccounts($request); @@ -543,7 +701,7 @@ $sdk = SDK::builder() try { $request = new ReadConnectorConfigRequest(); - $request->connector = Connector::MONEYCORP; + $request->connector = Connector::CURRENCY_CLOUD; $response = $sdk->payments->readConnectorConfig($request); @@ -579,7 +737,7 @@ $sdk = SDK::builder() try { $request = new ResetConnectorRequest(); - $request->connector = Connector::DUMMY_PAY; + $request->connector = Connector::BANKING_CIRCLE; $response = $sdk->payments->resetConnector($request); @@ -591,6 +749,43 @@ try { } ``` +## udpateTransferInitiationStatus + +Update a transfer initiation status + +### Example Usage + +```php +build(); + +try { + $request = new UdpateTransferInitiationStatusRequest(); + $request->updateTransferInitiationStatusRequest = new UpdateTransferInitiationStatusRequest(); + $request->updateTransferInitiationStatusRequest->status = UpdateTransferInitiationStatusRequestStatus::PROCESSED; + $request->transferId = 'vero'; + + $response = $sdk->payments->udpateTransferInitiationStatus($request); + + if ($response->statusCode === 200) { + // handle response + } +} catch (Exception $e) { + // handle exception +} +``` + ## uninstallConnector Uninstall a connector by its name. @@ -613,7 +808,7 @@ $sdk = SDK::builder() try { $request = new UninstallConnectorRequest(); - $request->connector = Connector::BANKING_CIRCLE; + $request->connector = Connector::DUMMY_PAY; $response = $sdk->payments->uninstallConnector($request); @@ -648,8 +843,8 @@ $sdk = SDK::builder() try { $request = new UpdateMetadataRequest(); $request->paymentMetadata = new PaymentMetadata(); - $request->paymentMetadata->key = 'nisi'; - $request->paymentId = 'vel'; + $request->paymentMetadata->key = 'architecto'; + $request->paymentId = 'magnam'; $response = $sdk->payments->updateMetadata($request); diff --git a/sdks/php/docs/search/README.md b/sdks/php/docs/search/README.md index 3ab4ec5e5f..a4dd984558 100755 --- a/sdks/php/docs/search/README.md +++ b/sdks/php/docs/search/README.md @@ -28,8 +28,6 @@ try { $request = new Query(); $request->after = [ 'users:002', - 'users:002', - 'users:002', ]; $request->cursor = 'YXVsdCBhbmQgYSBtYXhpbXVtIG1heF9yZXN1bHRzLol='; $request->ledgers = [ @@ -37,17 +35,18 @@ try { 'quickstart', 'quickstart', ]; - $request->pageSize = 474867; + $request->pageSize = 354047; $request->policy = 'OR'; $request->raw = [ - 'nihil' => 'magnam', + 'quos' => 'sint', + 'accusantium' => 'mollitia', + 'reiciendis' => 'mollitia', ]; $request->sort = 'txid:asc'; - $request->target = 'distinctio'; + $request->target = 'ad'; $request->terms = [ 'destination=central_bank1', 'destination=central_bank1', - 'destination=central_bank1', ]; $response = $sdk->search->search($request); diff --git a/sdks/php/docs/wallets/README.md b/sdks/php/docs/wallets/README.md index c844ddf18a..025029b9bb 100755 --- a/sdks/php/docs/wallets/README.md +++ b/sdks/php/docs/wallets/README.md @@ -44,7 +44,7 @@ try { $request->confirmHoldRequest = new ConfirmHoldRequest(); $request->confirmHoldRequest->amount = 100; $request->confirmHoldRequest->final = true; - $request->holdId = 'labore'; + $request->holdId = 'dolor'; $response = $sdk->wallets->confirmHold($request); @@ -79,10 +79,10 @@ $sdk = SDK::builder() try { $request = new CreateBalanceRequest(); $request->createBalanceRequest = new CreateBalanceRequest(); - $request->createBalanceRequest->expiresAt = DateTime::createFromFormat('Y-m-d\TH:i:sP', '2022-08-14T00:52:14.624Z'); - $request->createBalanceRequest->name = 'Robin Keebler'; - $request->createBalanceRequest->priority = 102863; - $request->id = '41959890-afa5-463e-a516-fe4c8b711e5b'; + $request->createBalanceRequest->expiresAt = DateTime::createFromFormat('Y-m-d\TH:i:sP', '2022-07-30T07:35:03.817Z'); + $request->createBalanceRequest->name = 'Joyce Kertzmann'; + $request->createBalanceRequest->priority = 260341; + $request->id = 'c8b711e5-b7fd-42ed-8289-21cddc692601'; $response = $sdk->wallets->createBalance($request); @@ -116,10 +116,12 @@ $sdk = SDK::builder() try { $request = new CreateWalletRequest(); $request->metadata = [ - 'repellat' => 'quibusdam', - 'sed' => 'saepe', + 'quidem' => 'ipsam', + 'voluptate' => 'autem', + 'nam' => 'eaque', + 'pariatur' => 'nemo', ]; - $request->name = 'Edward Crooks'; + $request->name = 'Joseph Steuber DDS'; $response = $sdk->wallets->createWallet($request); @@ -156,22 +158,19 @@ try { $request = new CreditWalletRequest(); $request->creditWalletRequest = new CreditWalletRequest(); $request->creditWalletRequest->amount = new Monetary(); - $request->creditWalletRequest->amount->amount = 166847; - $request->creditWalletRequest->amount->asset = 'sunt'; - $request->creditWalletRequest->balance = 'quo'; + $request->creditWalletRequest->amount->amount = 359978; + $request->creditWalletRequest->amount->asset = 'hic'; + $request->creditWalletRequest->balance = 'libero'; $request->creditWalletRequest->metadata = [ - 'pariatur' => 'maxime', - 'ea' => 'excepturi', - 'odit' => 'ea', - 'accusantium' => 'ab', + 'dolores' => 'quis', + 'totam' => 'dignissimos', + 'eaque' => 'quis', ]; - $request->creditWalletRequest->reference = 'maiores'; + $request->creditWalletRequest->reference = 'nesciunt'; $request->creditWalletRequest->sources = [ new LedgerAccountSubject(), - new LedgerAccountSubject(), - new LedgerAccountSubject(), ]; - $request->id = 'b0d5f0d3-0c5f-4bb2-9870-53202c73d5fe'; + $request->id = '2c73d5fe-9b90-4c28-909b-3fe49a8d9cbf'; $response = $sdk->wallets->creditWallet($request); @@ -208,23 +207,23 @@ try { $request = new DebitWalletRequest(); $request->debitWalletRequest = new DebitWalletRequest(); $request->debitWalletRequest->amount = new Monetary(); - $request->debitWalletRequest->amount->amount = 608253; - $request->debitWalletRequest->amount->asset = 'facilis'; + $request->debitWalletRequest->amount->amount = 311945; + $request->debitWalletRequest->amount->asset = 'quos'; $request->debitWalletRequest->balances = [ - 'voluptatem', - 'porro', - 'consequuntur', + 'dolorem', + 'dolorem', ]; - $request->debitWalletRequest->description = 'blanditiis'; - $request->debitWalletRequest->destination = new WalletSubject(); - $request->debitWalletRequest->destination->balance = 'eaque'; - $request->debitWalletRequest->destination->identifier = 'occaecati'; - $request->debitWalletRequest->destination->type = 'rerum'; + $request->debitWalletRequest->description = 'dolor'; + $request->debitWalletRequest->destination = new LedgerAccountSubject(); + $request->debitWalletRequest->destination->identifier = 'ipsum'; + $request->debitWalletRequest->destination->type = 'hic'; $request->debitWalletRequest->metadata = [ - 'asperiores' => 'earum', + 'cum' => 'voluptate', + 'dignissimos' => 'reiciendis', + 'amet' => 'dolorum', ]; $request->debitWalletRequest->pending = false; - $request->id = '49a8d9cb-f486-4333-a3f9-b77f3a410067'; + $request->id = '4100674e-bf69-4280-91ba-77a89ebf737a'; $response = $sdk->wallets->debitWallet($request); @@ -257,8 +256,8 @@ $sdk = SDK::builder() try { $request = new GetBalanceRequest(); - $request->balanceName = 'quaerat'; - $request->id = 'ebf69280-d1ba-477a-89eb-f737ae4203ce'; + $request->balanceName = 'saepe'; + $request->id = '4203ce5e-6a95-4d8a-8d44-6ce2af7a73cf'; $response = $sdk->wallets->getBalance($request); @@ -291,7 +290,7 @@ $sdk = SDK::builder() try { $request = new GetHoldRequest(); - $request->holdID = 'ad'; + $request->holdID = 'amet'; $response = $sdk->wallets->getHold($request); @@ -326,13 +325,12 @@ try { $request = new GetHoldsRequest(); $request->cursor = 'aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ=='; $request->metadata = [ - 'suscipit' => 'deserunt', - 'provident' => 'minima', - 'repellendus' => 'totam', - 'similique' => 'alias', + 'accusamus' => 'numquam', + 'enim' => 'dolorem', + 'sapiente' => 'totam', ]; - $request->pageSize = 872651; - $request->walletID = 'quaerat'; + $request->pageSize = 471752; + $request->walletID = 'sit'; $response = $sdk->wallets->getHolds($request); @@ -364,8 +362,8 @@ $sdk = SDK::builder() try { $request = new GetTransactionsRequest(); $request->cursor = 'aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ=='; - $request->pageSize = 273542; - $request->walletID = 'vel'; + $request->pageSize = 711584; + $request->walletID = 'neque'; $response = $sdk->wallets->getTransactions($request); @@ -398,7 +396,7 @@ $sdk = SDK::builder() try { $request = new GetWalletRequest(); - $request->id = 'ce2af7a7-3cf3-4be4-93f8-70b326b5a734'; + $request->id = '26b5a734-29cd-4b1a-8422-bb679d232271'; $response = $sdk->wallets->getWallet($request); @@ -431,7 +429,7 @@ $sdk = SDK::builder() try { $request = new GetWalletSummaryRequest(); - $request->id = '29cdb1a8-422b-4b67-9d23-22715bf0cbb1'; + $request->id = '5bf0cbb1-e31b-48b9-8f34-43a1108e0adc'; $response = $sdk->wallets->getWalletSummary($request); @@ -464,7 +462,7 @@ $sdk = SDK::builder() try { $request = new ListBalancesRequest(); - $request->id = 'e31b8b90-f344-43a1-908e-0adcf4b92187'; + $request->id = 'f4b92187-9fce-4953-b73e-f7fbc7abd74d'; $response = $sdk->wallets->listBalances($request); @@ -499,12 +497,13 @@ try { $request = new ListWalletsRequest(); $request->cursor = 'aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ=='; $request->metadata = [ - 'voluptatibus' => 'quisquam', - 'vero' => 'omnis', - 'quis' => 'ipsum', + 'sequi' => 'natus', + 'impedit' => 'aut', + 'voluptatibus' => 'exercitationem', + 'nulla' => 'fugit', ]; - $request->name = 'Karl Feeney'; - $request->pageSize = 492268; + $request->name = 'Elijah Wyman'; + $request->pageSize = 497391; $response = $sdk->wallets->listWallets($request); @@ -540,12 +539,9 @@ try { $request = new UpdateWalletRequest(); $request->requestBody = new UpdateWalletRequestBody(); $request->requestBody->metadata = [ - 'distinctio' => 'quod', - 'odio' => 'similique', - 'facilis' => 'vero', - 'ducimus' => 'dolore', + 'officia' => 'tempora', ]; - $request->id = 'dd39c0f5-d2cf-4f7c-b0a4-5626d436813f'; + $request->id = '5626d436-813f-416d-9f5f-ce6c556146c3'; $response = $sdk->wallets->updateWallet($request); @@ -578,7 +574,7 @@ $sdk = SDK::builder() try { $request = new VoidHoldRequest(); - $request->holdId = 'quasi'; + $request->holdId = 'recusandae'; $response = $sdk->wallets->voidHold($request); diff --git a/sdks/php/docs/webhooks/README.md b/sdks/php/docs/webhooks/README.md index c1f2470a52..29f7933f9e 100755 --- a/sdks/php/docs/webhooks/README.md +++ b/sdks/php/docs/webhooks/README.md @@ -216,7 +216,6 @@ try { $request->endpoint = 'https://example.com'; $request->eventTypes = [ 'TYPE1', - 'TYPE1', ]; $request->secret = 'V0bivxRWveaoz08afqjU6Ko/jwO0Cb+3'; diff --git a/sdks/php/files.gen b/sdks/php/files.gen index 3b7827d923..c7f9a46c63 100755 --- a/sdks/php/files.gen +++ b/sdks/php/files.gen @@ -113,12 +113,17 @@ src/Models/Operations/SendEventResponse.php src/Models/Operations/ConnectorsStripeTransferResponse.php src/Models/Operations/ConnectorsTransferRequest.php src/Models/Operations/ConnectorsTransferResponse.php +src/Models/Operations/CreateTransferInitiationResponse.php +src/Models/Operations/DeleteTransferInitiationRequest.php +src/Models/Operations/DeleteTransferInitiationResponse.php src/Models/Operations/GetAccountBalancesRequest.php src/Models/Operations/GetAccountBalancesResponse.php src/Models/Operations/GetConnectorTaskRequest.php src/Models/Operations/GetConnectorTaskResponse.php src/Models/Operations/GetPaymentRequest.php src/Models/Operations/GetPaymentResponse.php +src/Models/Operations/GetTransferInitiationRequest.php +src/Models/Operations/GetTransferInitiationResponse.php src/Models/Operations/InstallConnectorRequest.php src/Models/Operations/InstallConnectorResponse.php src/Models/Operations/ListAllConnectorsResponse.php @@ -129,6 +134,8 @@ src/Models/Operations/ListConnectorsTransfersRequest.php src/Models/Operations/ListConnectorsTransfersResponse.php src/Models/Operations/ListPaymentsRequest.php src/Models/Operations/ListPaymentsResponse.php +src/Models/Operations/ListTransferInitiationsRequest.php +src/Models/Operations/ListTransferInitiationsResponse.php src/Models/Operations/PaymentsgetAccountRequest.php src/Models/Operations/PaymentsgetAccountResponse.php src/Models/Operations/PaymentsgetServerInfoResponse.php @@ -138,6 +145,8 @@ src/Models/Operations/ReadConnectorConfigRequest.php src/Models/Operations/ReadConnectorConfigResponse.php src/Models/Operations/ResetConnectorRequest.php src/Models/Operations/ResetConnectorResponse.php +src/Models/Operations/UdpateTransferInitiationStatusRequest.php +src/Models/Operations/UdpateTransferInitiationStatusResponse.php src/Models/Operations/UninstallConnectorRequest.php src/Models/Operations/UninstallConnectorResponse.php src/Models/Operations/UpdateMetadataRequest.php @@ -312,6 +321,12 @@ src/Models/Shared/RunWorkflowResponse.php src/Models/Shared/StripeTransferRequest.php src/Models/Shared/TransferResponse.php src/Models/Shared/TransferRequest.php +src/Models/Shared/TransferInitiationResponse.php +src/Models/Shared/TransferInitiationStatus.php +src/Models/Shared/TransferInitiationType.php +src/Models/Shared/TransferInitiation.php +src/Models/Shared/TransferInitiationRequestType.php +src/Models/Shared/TransferInitiationRequest.php src/Models/Shared/BalancesCursorCursor.php src/Models/Shared/BalancesCursor.php src/Models/Shared/AccountBalance.php @@ -353,11 +368,15 @@ src/Models/Shared/TransfersResponseData.php src/Models/Shared/TransfersResponse.php src/Models/Shared/PaymentsCursorCursor.php src/Models/Shared/PaymentsCursor.php +src/Models/Shared/TransferInitiationsCursorCursor.php +src/Models/Shared/TransferInitiationsCursor.php src/Models/Shared/PaymentsAccountResponse.php src/Models/Shared/PaymentsAccount.php src/Models/Shared/AccountsCursorCursor.php src/Models/Shared/AccountsCursor.php src/Models/Shared/ConnectorConfigResponse.php +src/Models/Shared/UpdateTransferInitiationStatusRequestStatus.php +src/Models/Shared/UpdateTransferInitiationStatusRequest.php src/Models/Shared/ResponseCursorTotal.php src/Models/Shared/ResponseCursor.php src/Models/Shared/Response.php diff --git a/sdks/php/src/Models/Operations/CreateTransferInitiationResponse.php b/sdks/php/src/Models/Operations/CreateTransferInitiationResponse.php new file mode 100755 index 0000000000..b86337aca2 --- /dev/null +++ b/sdks/php/src/Models/Operations/CreateTransferInitiationResponse.php @@ -0,0 +1,38 @@ +contentType = ""; + $this->statusCode = 0; + $this->rawResponse = null; + $this->transferInitiationResponse = null; + } +} diff --git a/sdks/php/src/Models/Operations/DeleteTransferInitiationRequest.php b/sdks/php/src/Models/Operations/DeleteTransferInitiationRequest.php new file mode 100755 index 0000000000..3dea54998e --- /dev/null +++ b/sdks/php/src/Models/Operations/DeleteTransferInitiationRequest.php @@ -0,0 +1,26 @@ +transferId = ""; + } +} diff --git a/sdks/php/src/Models/Operations/DeleteTransferInitiationResponse.php b/sdks/php/src/Models/Operations/DeleteTransferInitiationResponse.php new file mode 100755 index 0000000000..85a56d1ae9 --- /dev/null +++ b/sdks/php/src/Models/Operations/DeleteTransferInitiationResponse.php @@ -0,0 +1,29 @@ +contentType = ""; + $this->statusCode = 0; + $this->rawResponse = null; + } +} diff --git a/sdks/php/src/Models/Operations/GetTransferInitiationRequest.php b/sdks/php/src/Models/Operations/GetTransferInitiationRequest.php new file mode 100755 index 0000000000..92e66faada --- /dev/null +++ b/sdks/php/src/Models/Operations/GetTransferInitiationRequest.php @@ -0,0 +1,26 @@ +transferId = ""; + } +} diff --git a/sdks/php/src/Models/Operations/GetTransferInitiationResponse.php b/sdks/php/src/Models/Operations/GetTransferInitiationResponse.php new file mode 100755 index 0000000000..ac78626ad7 --- /dev/null +++ b/sdks/php/src/Models/Operations/GetTransferInitiationResponse.php @@ -0,0 +1,38 @@ +contentType = ""; + $this->statusCode = 0; + $this->rawResponse = null; + $this->transferInitiationResponse = null; + } +} diff --git a/sdks/php/src/Models/Operations/ListTransferInitiationsRequest.php b/sdks/php/src/Models/Operations/ListTransferInitiationsRequest.php new file mode 100755 index 0000000000..56fd2cd096 --- /dev/null +++ b/sdks/php/src/Models/Operations/ListTransferInitiationsRequest.php @@ -0,0 +1,51 @@ + $sort + */ + #[SpeakeasyMetadata('queryParam:style=form,explode=true,name=sort')] + public ?array $sort = null; + + public function __construct() + { + $this->cursor = null; + $this->pageSize = null; + $this->sort = null; + } +} diff --git a/sdks/php/src/Models/Operations/ListTransferInitiationsResponse.php b/sdks/php/src/Models/Operations/ListTransferInitiationsResponse.php new file mode 100755 index 0000000000..05c5eeaf8f --- /dev/null +++ b/sdks/php/src/Models/Operations/ListTransferInitiationsResponse.php @@ -0,0 +1,38 @@ +contentType = ""; + $this->statusCode = 0; + $this->rawResponse = null; + $this->transferInitiationsCursor = null; + } +} diff --git a/sdks/php/src/Models/Operations/UdpateTransferInitiationStatusRequest.php b/sdks/php/src/Models/Operations/UdpateTransferInitiationStatusRequest.php new file mode 100755 index 0000000000..e7972d7828 --- /dev/null +++ b/sdks/php/src/Models/Operations/UdpateTransferInitiationStatusRequest.php @@ -0,0 +1,30 @@ +updateTransferInitiationStatusRequest = new \formance\stack\Models\Shared\UpdateTransferInitiationStatusRequest(); + $this->transferId = ""; + } +} diff --git a/sdks/php/src/Models/Operations/UdpateTransferInitiationStatusResponse.php b/sdks/php/src/Models/Operations/UdpateTransferInitiationStatusResponse.php new file mode 100755 index 0000000000..ef5e484852 --- /dev/null +++ b/sdks/php/src/Models/Operations/UdpateTransferInitiationStatusResponse.php @@ -0,0 +1,29 @@ +contentType = ""; + $this->statusCode = 0; + $this->rawResponse = null; + } +} diff --git a/sdks/php/src/Models/Shared/TransferInitiation.php b/sdks/php/src/Models/Shared/TransferInitiation.php new file mode 100755 index 0000000000..3d8712693b --- /dev/null +++ b/sdks/php/src/Models/Shared/TransferInitiation.php @@ -0,0 +1,77 @@ +")] + public \DateTime $createdAt; + + #[\JMS\Serializer\Annotation\SerializedName('description')] + #[\JMS\Serializer\Annotation\Type('string')] + public string $description; + + #[\JMS\Serializer\Annotation\SerializedName('destinationAccountID')] + #[\JMS\Serializer\Annotation\Type('string')] + public string $destinationAccountID; + + #[\JMS\Serializer\Annotation\SerializedName('error')] + #[\JMS\Serializer\Annotation\Type('string')] + public string $error; + + #[\JMS\Serializer\Annotation\SerializedName('id')] + #[\JMS\Serializer\Annotation\Type('string')] + public string $id; + + #[\JMS\Serializer\Annotation\SerializedName('provider')] + #[\JMS\Serializer\Annotation\Type('enum')] + public Connector $provider; + + #[\JMS\Serializer\Annotation\SerializedName('sourceAccountID')] + #[\JMS\Serializer\Annotation\Type('string')] + public string $sourceAccountID; + + #[\JMS\Serializer\Annotation\SerializedName('status')] + #[\JMS\Serializer\Annotation\Type('enum')] + public TransferInitiationStatus $status; + + #[\JMS\Serializer\Annotation\SerializedName('type')] + #[\JMS\Serializer\Annotation\Type('enum')] + public TransferInitiationType $type; + + #[\JMS\Serializer\Annotation\SerializedName('updatedAt')] + #[\JMS\Serializer\Annotation\Type("DateTime<'Y-m-d\TH:i:s.up'>")] + public \DateTime $updatedAt; + + public function __construct() + { + $this->amount = 0; + $this->asset = ""; + $this->createdAt = new \DateTime(); + $this->description = ""; + $this->destinationAccountID = ""; + $this->error = ""; + $this->id = ""; + $this->provider = \formance\stack\Models\Shared\Connector::STRIPE; + $this->sourceAccountID = ""; + $this->status = \formance\stack\Models\Shared\TransferInitiationStatus::WAITING_FOR_VALIDATION; + $this->type = \formance\stack\Models\Shared\TransferInitiationType::TRANSFER; + $this->updatedAt = new \DateTime(); + } +} diff --git a/sdks/php/src/Models/Shared/TransferInitiationRequest.php b/sdks/php/src/Models/Shared/TransferInitiationRequest.php new file mode 100755 index 0000000000..240f88e6d8 --- /dev/null +++ b/sdks/php/src/Models/Shared/TransferInitiationRequest.php @@ -0,0 +1,67 @@ +")] + public \DateTime $createdAt; + + #[\JMS\Serializer\Annotation\SerializedName('description')] + #[\JMS\Serializer\Annotation\Type('string')] + public string $description; + + #[\JMS\Serializer\Annotation\SerializedName('destinationAccountID')] + #[\JMS\Serializer\Annotation\Type('string')] + public string $destinationAccountID; + + #[\JMS\Serializer\Annotation\SerializedName('provider')] + #[\JMS\Serializer\Annotation\Type('enum')] + public Connector $provider; + + #[\JMS\Serializer\Annotation\SerializedName('sourceAccountID')] + #[\JMS\Serializer\Annotation\Type('string')] + public string $sourceAccountID; + + #[\JMS\Serializer\Annotation\SerializedName('type')] + #[\JMS\Serializer\Annotation\Type('enum')] + public TransferInitiationRequestType $type; + + #[\JMS\Serializer\Annotation\SerializedName('uniqueRequestID')] + #[\JMS\Serializer\Annotation\Type('string')] + public string $uniqueRequestID; + + #[\JMS\Serializer\Annotation\SerializedName('validated')] + #[\JMS\Serializer\Annotation\Type('bool')] + public bool $validated; + + public function __construct() + { + $this->amount = 0; + $this->asset = ""; + $this->createdAt = new \DateTime(); + $this->description = ""; + $this->destinationAccountID = ""; + $this->provider = \formance\stack\Models\Shared\Connector::STRIPE; + $this->sourceAccountID = ""; + $this->type = \formance\stack\Models\Shared\TransferInitiationRequestType::TRANSFER; + $this->uniqueRequestID = ""; + $this->validated = false; + } +} diff --git a/sdks/php/src/Models/Shared/TransferInitiationRequestType.php b/sdks/php/src/Models/Shared/TransferInitiationRequestType.php new file mode 100755 index 0000000000..e076d1875d --- /dev/null +++ b/sdks/php/src/Models/Shared/TransferInitiationRequestType.php @@ -0,0 +1,16 @@ +data = new \formance\stack\Models\Shared\TransferInitiation(); + } +} diff --git a/sdks/php/src/Models/Shared/TransferInitiationStatus.php b/sdks/php/src/Models/Shared/TransferInitiationStatus.php new file mode 100755 index 0000000000..106dc27014 --- /dev/null +++ b/sdks/php/src/Models/Shared/TransferInitiationStatus.php @@ -0,0 +1,20 @@ +cursor = new \formance\stack\Models\Shared\TransferInitiationsCursorCursor(); + } +} diff --git a/sdks/php/src/Models/Shared/TransferInitiationsCursorCursor.php b/sdks/php/src/Models/Shared/TransferInitiationsCursorCursor.php new file mode 100755 index 0000000000..6a2d10d476 --- /dev/null +++ b/sdks/php/src/Models/Shared/TransferInitiationsCursorCursor.php @@ -0,0 +1,49 @@ + $data + */ + #[\JMS\Serializer\Annotation\SerializedName('data')] + #[\JMS\Serializer\Annotation\Type('array')] + public array $data; + + #[\JMS\Serializer\Annotation\SerializedName('hasMore')] + #[\JMS\Serializer\Annotation\Type('bool')] + public bool $hasMore; + + #[\JMS\Serializer\Annotation\SerializedName('next')] + #[\JMS\Serializer\Annotation\Type('string')] + #[\JMS\Serializer\Annotation\SkipWhenEmpty] + public ?string $next = null; + + #[\JMS\Serializer\Annotation\SerializedName('pageSize')] + #[\JMS\Serializer\Annotation\Type('int')] + public int $pageSize; + + #[\JMS\Serializer\Annotation\SerializedName('previous')] + #[\JMS\Serializer\Annotation\Type('string')] + #[\JMS\Serializer\Annotation\SkipWhenEmpty] + public ?string $previous = null; + + public function __construct() + { + $this->data = []; + $this->hasMore = false; + $this->next = null; + $this->pageSize = 0; + $this->previous = null; + } +} diff --git a/sdks/php/src/Models/Shared/UpdateTransferInitiationStatusRequest.php b/sdks/php/src/Models/Shared/UpdateTransferInitiationStatusRequest.php new file mode 100755 index 0000000000..daa212408f --- /dev/null +++ b/sdks/php/src/Models/Shared/UpdateTransferInitiationStatusRequest.php @@ -0,0 +1,22 @@ +')] + public UpdateTransferInitiationStatusRequestStatus $status; + + public function __construct() + { + $this->status = \formance\stack\Models\Shared\UpdateTransferInitiationStatusRequestStatus::WAITING_FOR_VALIDATION; + } +} diff --git a/sdks/php/src/Models/Shared/UpdateTransferInitiationStatusRequestStatus.php b/sdks/php/src/Models/Shared/UpdateTransferInitiationStatusRequestStatus.php new file mode 100755 index 0000000000..dce1d749b3 --- /dev/null +++ b/sdks/php/src/Models/Shared/UpdateTransferInitiationStatusRequestStatus.php @@ -0,0 +1,20 @@ +_serverUrl; + $url = Utils\Utils::generateUrl($baseUrl, '/api/payments/transfer-initiation'); + + $options = ['http_errors' => false]; + $body = Utils\Utils::serializeRequestBody($request, "request", "json"); + if ($body === null) { + throw new \Exception('Request body is required'); + } + $options = array_merge_recursive($options, $body); + $options['headers']['Accept'] = 'application/json'; + $options['headers']['user-agent'] = sprintf('speakeasy-sdk/%s %s %s', $this->_language, $this->_sdkVersion, $this->_genVersion); + + $httpResponse = $this->_securityClient->request('POST', $url, $options); + + $contentType = $httpResponse->getHeader('Content-Type')[0] ?? ''; + + $response = new \formance\stack\Models\Operations\CreateTransferInitiationResponse(); + $response->statusCode = $httpResponse->getStatusCode(); + $response->contentType = $contentType; + $response->rawResponse = $httpResponse; + + if ($httpResponse->getStatusCode() === 200) { + if (Utils\Utils::matchContentType($contentType, 'application/json')) { + $serializer = Utils\JSON::createSerializer(); + $response->transferInitiationResponse = $serializer->deserialize((string)$httpResponse->getBody(), 'formance\stack\Models\Shared\TransferInitiationResponse', 'json'); + } + } + + return $response; + } + + /** + * Delete a transfer initiation + * + * Delete a transfer initiation by its id. + * + * @param \formance\stack\Models\Operations\DeleteTransferInitiationRequest $request + * @return \formance\stack\Models\Operations\DeleteTransferInitiationResponse + */ + public function deleteTransferInitiation( + \formance\stack\Models\Operations\DeleteTransferInitiationRequest $request, + ): \formance\stack\Models\Operations\DeleteTransferInitiationResponse + { + $baseUrl = $this->_serverUrl; + $url = Utils\Utils::generateUrl($baseUrl, '/api/payments/transfer-initiation/{transferId}', \formance\stack\Models\Operations\DeleteTransferInitiationRequest::class, $request); + + $options = ['http_errors' => false]; + $options['headers']['Accept'] = '*/*'; + $options['headers']['user-agent'] = sprintf('speakeasy-sdk/%s %s %s', $this->_language, $this->_sdkVersion, $this->_genVersion); + + $httpResponse = $this->_securityClient->request('DELETE', $url, $options); + + $contentType = $httpResponse->getHeader('Content-Type')[0] ?? ''; + + $response = new \formance\stack\Models\Operations\DeleteTransferInitiationResponse(); + $response->statusCode = $httpResponse->getStatusCode(); + $response->contentType = $contentType; + $response->rawResponse = $httpResponse; + + if ($httpResponse->getStatusCode() === 204) { + } + + return $response; + } + /** * Get account balances * @@ -234,6 +311,42 @@ public function getPayment( return $response; } + /** + * Get a transfer initiation + * + * @param \formance\stack\Models\Operations\GetTransferInitiationRequest $request + * @return \formance\stack\Models\Operations\GetTransferInitiationResponse + */ + public function getTransferInitiation( + \formance\stack\Models\Operations\GetTransferInitiationRequest $request, + ): \formance\stack\Models\Operations\GetTransferInitiationResponse + { + $baseUrl = $this->_serverUrl; + $url = Utils\Utils::generateUrl($baseUrl, '/api/payments/transfer-initiation/{transferId}', \formance\stack\Models\Operations\GetTransferInitiationRequest::class, $request); + + $options = ['http_errors' => false]; + $options['headers']['Accept'] = 'application/json'; + $options['headers']['user-agent'] = sprintf('speakeasy-sdk/%s %s %s', $this->_language, $this->_sdkVersion, $this->_genVersion); + + $httpResponse = $this->_securityClient->request('GET', $url, $options); + + $contentType = $httpResponse->getHeader('Content-Type')[0] ?? ''; + + $response = new \formance\stack\Models\Operations\GetTransferInitiationResponse(); + $response->statusCode = $httpResponse->getStatusCode(); + $response->contentType = $contentType; + $response->rawResponse = $httpResponse; + + if ($httpResponse->getStatusCode() === 200) { + if (Utils\Utils::matchContentType($contentType, 'application/json')) { + $serializer = Utils\JSON::createSerializer(); + $response->transferInitiationResponse = $serializer->deserialize((string)$httpResponse->getBody(), 'formance\stack\Models\Shared\TransferInitiationResponse', 'json'); + } + } + + return $response; + } + /** * Install a connector * @@ -459,6 +572,43 @@ public function listPayments( return $response; } + /** + * List Transfer Initiations + * + * @param \formance\stack\Models\Operations\ListTransferInitiationsRequest $request + * @return \formance\stack\Models\Operations\ListTransferInitiationsResponse + */ + public function listTransferInitiations( + \formance\stack\Models\Operations\ListTransferInitiationsRequest $request, + ): \formance\stack\Models\Operations\ListTransferInitiationsResponse + { + $baseUrl = $this->_serverUrl; + $url = Utils\Utils::generateUrl($baseUrl, '/api/payments/transfer-initiation'); + + $options = ['http_errors' => false]; + $options = array_merge_recursive($options, Utils\Utils::getQueryParams(\formance\stack\Models\Operations\ListTransferInitiationsRequest::class, $request, null)); + $options['headers']['Accept'] = 'application/json'; + $options['headers']['user-agent'] = sprintf('speakeasy-sdk/%s %s %s', $this->_language, $this->_sdkVersion, $this->_genVersion); + + $httpResponse = $this->_securityClient->request('GET', $url, $options); + + $contentType = $httpResponse->getHeader('Content-Type')[0] ?? ''; + + $response = new \formance\stack\Models\Operations\ListTransferInitiationsResponse(); + $response->statusCode = $httpResponse->getStatusCode(); + $response->contentType = $contentType; + $response->rawResponse = $httpResponse; + + if ($httpResponse->getStatusCode() === 200) { + if (Utils\Utils::matchContentType($contentType, 'application/json')) { + $serializer = Utils\JSON::createSerializer(); + $response->transferInitiationsCursor = $serializer->deserialize((string)$httpResponse->getBody(), 'formance\stack\Models\Shared\TransferInitiationsCursor', 'json'); + } + } + + return $response; + } + /** * Get an account * @@ -640,6 +790,45 @@ public function resetConnector( return $response; } + /** + * Update the status of a transfer initiation + * + * Update a transfer initiation status + * + * @param \formance\stack\Models\Operations\UdpateTransferInitiationStatusRequest $request + * @return \formance\stack\Models\Operations\UdpateTransferInitiationStatusResponse + */ + public function udpateTransferInitiationStatus( + \formance\stack\Models\Operations\UdpateTransferInitiationStatusRequest $request, + ): \formance\stack\Models\Operations\UdpateTransferInitiationStatusResponse + { + $baseUrl = $this->_serverUrl; + $url = Utils\Utils::generateUrl($baseUrl, '/api/payments/transfer-initiation/{transferId}/status', \formance\stack\Models\Operations\UdpateTransferInitiationStatusRequest::class, $request); + + $options = ['http_errors' => false]; + $body = Utils\Utils::serializeRequestBody($request, "updateTransferInitiationStatusRequest", "json"); + if ($body === null) { + throw new \Exception('Request body is required'); + } + $options = array_merge_recursive($options, $body); + $options['headers']['Accept'] = '*/*'; + $options['headers']['user-agent'] = sprintf('speakeasy-sdk/%s %s %s', $this->_language, $this->_sdkVersion, $this->_genVersion); + + $httpResponse = $this->_securityClient->request('POST', $url, $options); + + $contentType = $httpResponse->getHeader('Content-Type')[0] ?? ''; + + $response = new \formance\stack\Models\Operations\UdpateTransferInitiationStatusResponse(); + $response->statusCode = $httpResponse->getStatusCode(); + $response->contentType = $contentType; + $response->rawResponse = $httpResponse; + + if ($httpResponse->getStatusCode() === 204) { + } + + return $response; + } + /** * Uninstall a connector * diff --git a/sdks/python/README.md b/sdks/python/README.md index 7a5f625ba2..a8cc2ca046 100755 --- a/sdks/python/README.md +++ b/sdks/python/README.md @@ -106,20 +106,25 @@ if res.get_versions_response is not None: * [connectors_stripe_transfer](docs/payments/README.md#connectors_stripe_transfer) - Transfer funds between Stripe accounts * [connectors_transfer](docs/payments/README.md#connectors_transfer) - Transfer funds between Connector accounts +* [create_transfer_initiation](docs/payments/README.md#create_transfer_initiation) - Create a TransferInitiation +* [delete_transfer_initiation](docs/payments/README.md#delete_transfer_initiation) - Delete a transfer initiation * [get_account_balances](docs/payments/README.md#get_account_balances) - Get account balances * [get_connector_task](docs/payments/README.md#get_connector_task) - Read a specific task of the connector * [get_payment](docs/payments/README.md#get_payment) - Get a payment +* [get_transfer_initiation](docs/payments/README.md#get_transfer_initiation) - Get a transfer initiation * [install_connector](docs/payments/README.md#install_connector) - Install a connector * [list_all_connectors](docs/payments/README.md#list_all_connectors) - List all installed connectors * [list_configs_available_connectors](docs/payments/README.md#list_configs_available_connectors) - List the configs of each available connector * [list_connector_tasks](docs/payments/README.md#list_connector_tasks) - List tasks from a connector * [list_connectors_transfers](docs/payments/README.md#list_connectors_transfers) - List transfers and their statuses * [list_payments](docs/payments/README.md#list_payments) - List payments +* [list_transfer_initiations](docs/payments/README.md#list_transfer_initiations) - List Transfer Initiations * [paymentsget_account](docs/payments/README.md#paymentsget_account) - Get an account * [paymentsget_server_info](docs/payments/README.md#paymentsget_server_info) - Get server info * [paymentslist_accounts](docs/payments/README.md#paymentslist_accounts) - List accounts * [read_connector_config](docs/payments/README.md#read_connector_config) - Read the config of a connector * [reset_connector](docs/payments/README.md#reset_connector) - Reset a connector +* [udpate_transfer_initiation_status](docs/payments/README.md#udpate_transfer_initiation_status) - Update the status of a transfer initiation * [uninstall_connector](docs/payments/README.md#uninstall_connector) - Uninstall a connector * [update_metadata](docs/payments/README.md#update_metadata) - Update metadata diff --git a/sdks/python/docs/payments/README.md b/sdks/python/docs/payments/README.md index 8a02551527..ee0a0812fb 100755 --- a/sdks/python/docs/payments/README.md +++ b/sdks/python/docs/payments/README.md @@ -4,20 +4,25 @@ * [connectors_stripe_transfer](#connectors_stripe_transfer) - Transfer funds between Stripe accounts * [connectors_transfer](#connectors_transfer) - Transfer funds between Connector accounts +* [create_transfer_initiation](#create_transfer_initiation) - Create a TransferInitiation +* [delete_transfer_initiation](#delete_transfer_initiation) - Delete a transfer initiation * [get_account_balances](#get_account_balances) - Get account balances * [get_connector_task](#get_connector_task) - Read a specific task of the connector * [get_payment](#get_payment) - Get a payment +* [get_transfer_initiation](#get_transfer_initiation) - Get a transfer initiation * [install_connector](#install_connector) - Install a connector * [list_all_connectors](#list_all_connectors) - List all installed connectors * [list_configs_available_connectors](#list_configs_available_connectors) - List the configs of each available connector * [list_connector_tasks](#list_connector_tasks) - List tasks from a connector * [list_connectors_transfers](#list_connectors_transfers) - List transfers and their statuses * [list_payments](#list_payments) - List payments +* [list_transfer_initiations](#list_transfer_initiations) - List Transfer Initiations * [paymentsget_account](#paymentsget_account) - Get an account * [paymentsget_server_info](#paymentsget_server_info) - Get server info * [paymentslist_accounts](#paymentslist_accounts) - List accounts * [read_connector_config](#read_connector_config) - Read the config of a connector * [reset_connector](#reset_connector) - Reset a connector +* [udpate_transfer_initiation_status](#udpate_transfer_initiation_status) - Update the status of a transfer initiation * [uninstall_connector](#uninstall_connector) - Uninstall a connector * [update_metadata](#update_metadata) - Update metadata @@ -86,6 +91,68 @@ if res.transfer_response is not None: # handle response ``` +## create_transfer_initiation + +Create a transfer initiation + +### Example Usage + +```python +import sdk +import dateutil.parser +from sdk.models import shared + +s = sdk.SDK( + security=shared.Security( + authorization="Bearer YOUR_ACCESS_TOKEN_HERE", + ), +) + +req = shared.TransferInitiationRequest( + amount=592042, + asset='USD', + created_at=dateutil.parser.isoparse('2021-04-14T09:13:11.675Z'), + description='officia', + destination_account_id='dolor', + provider=shared.Connector.MONEYCORP, + source_account_id='a', + type=shared.TransferInitiationRequestType.PAYOUT, + unique_request_id='XXX', + validated=False, +) + +res = s.payments.create_transfer_initiation(req) + +if res.transfer_initiation_response is not None: + # handle response +``` + +## delete_transfer_initiation + +Delete a transfer initiation by its id. + +### Example Usage + +```python +import sdk +from sdk.models import operations + +s = sdk.SDK( + security=shared.Security( + authorization="Bearer YOUR_ACCESS_TOKEN_HERE", + ), +) + +req = operations.DeleteTransferInitiationRequest( + transfer_id='in', +) + +res = s.payments.delete_transfer_initiation(req) + +if res.status_code == 200: + # handle response +``` + ## get_account_balances Get account balances @@ -104,19 +171,19 @@ s = sdk.SDK( ) req = operations.GetAccountBalancesRequest( - account_id='provident', - asset='necessitatibus', + account_id='in', + asset='illum', cursor='aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ==', - from_=dateutil.parser.isoparse('2021-09-21T14:06:09.271Z'), - limit=223081, - page_size=891555, + from_=dateutil.parser.isoparse('2020-11-26T01:41:04.216Z'), + limit=116202, + page_size=297437, sort=[ - 'dolorum', - 'in', - 'in', - 'illum', + 'facere', + 'ea', + 'aliquid', + 'laborum', ], - to=dateutil.parser.isoparse('2020-11-26T01:41:04.216Z'), + to=dateutil.parser.isoparse('2022-04-02T11:21:13.260Z'), ) res = s.payments.get_account_balances(req) @@ -142,8 +209,8 @@ s = sdk.SDK( ) req = operations.GetConnectorTaskRequest( - connector=shared.Connector.STRIPE, - task_id='magnam', + connector=shared.Connector.CURRENCY_CLOUD, + task_id='enim', ) res = s.payments.get_connector_task(req) @@ -169,7 +236,7 @@ s = sdk.SDK( ) req = operations.GetPaymentRequest( - payment_id='cumque', + payment_id='accusamus', ) res = s.payments.get_payment(req) @@ -178,6 +245,32 @@ if res.payment_response is not None: # handle response ``` +## get_transfer_initiation + +Get a transfer initiation + +### Example Usage + +```python +import sdk +from sdk.models import operations + +s = sdk.SDK( + security=shared.Security( + authorization="Bearer YOUR_ACCESS_TOKEN_HERE", + ), +) + +req = operations.GetTransferInitiationRequest( + transfer_id='delectus', +) + +res = s.payments.get_transfer_initiation(req) + +if res.transfer_initiation_response is not None: + # handle response +``` + ## install_connector Install a connector by its name and config. @@ -195,13 +288,16 @@ s = sdk.SDK( ) req = operations.InstallConnectorRequest( - request_body=shared.MangoPayConfig( - api_key='XXX', - client_id='XXX', + request_body=shared.BankingCircleConfig( + authorization_endpoint='XXX', endpoint='XXX', + password='XXX', polling_period='60s', + user_certificate='XXX', + user_certificate_key='XXX', + username='XXX', ), - connector=shared.Connector.MODULR, + connector=shared.Connector.CURRENCY_CLOUD, ) res = s.payments.install_connector(req) @@ -273,9 +369,9 @@ s = sdk.SDK( ) req = operations.ListConnectorTasksRequest( - connector=shared.Connector.MODULR, + connector=shared.Connector.BANKING_CIRCLE, cursor='aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ==', - page_size=675439, + page_size=659669, ) res = s.payments.list_connector_tasks(req) @@ -301,7 +397,7 @@ s = sdk.SDK( ) req = operations.ListConnectorsTransfersRequest( - connector=shared.Connector.MONEYCORP, + connector=shared.Connector.CURRENCY_CLOUD, ) res = s.payments.list_connectors_transfers(req) @@ -328,11 +424,12 @@ s = sdk.SDK( req = operations.ListPaymentsRequest( cursor='aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ==', - page_size=249796, + page_size=533206, sort=[ - 'enim', - 'accusamus', - 'delectus', + 'amet', + 'deserunt', + 'nisi', + 'vel', ], ) @@ -342,6 +439,38 @@ if res.payments_cursor is not None: # handle response ``` +## list_transfer_initiations + +List Transfer Initiations + +### Example Usage + +```python +import sdk +from sdk.models import operations + +s = sdk.SDK( + security=shared.Security( + authorization="Bearer YOUR_ACCESS_TOKEN_HERE", + ), +) + +req = operations.ListTransferInitiationsRequest( + cursor='aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ==', + page_size=618809, + sort=[ + 'molestiae', + 'perferendis', + 'nihil', + ], +) + +res = s.payments.list_transfer_initiations(req) + +if res.transfer_initiations_cursor is not None: + # handle response +``` + ## paymentsget_account Get an account @@ -359,7 +488,7 @@ s = sdk.SDK( ) req = operations.PaymentsgetAccountRequest( - account_id='quidem', + account_id='magnam', ) res = s.payments.paymentsget_account(req) @@ -409,11 +538,11 @@ s = sdk.SDK( req = operations.PaymentslistAccountsRequest( cursor='aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ==', - page_size=588465, + page_size=716075, sort=[ - 'id', - 'blanditiis', - 'deleniti', + 'labore', + 'labore', + 'suscipit', ], ) @@ -440,7 +569,7 @@ s = sdk.SDK( ) req = operations.ReadConnectorConfigRequest( - connector=shared.Connector.MONEYCORP, + connector=shared.Connector.CURRENCY_CLOUD, ) res = s.payments.read_connector_config(req) @@ -468,7 +597,7 @@ s = sdk.SDK( ) req = operations.ResetConnectorRequest( - connector=shared.Connector.DUMMY_PAY, + connector=shared.Connector.BANKING_CIRCLE, ) res = s.payments.reset_connector(req) @@ -477,6 +606,35 @@ if res.status_code == 200: # handle response ``` +## udpate_transfer_initiation_status + +Update a transfer initiation status + +### Example Usage + +```python +import sdk +from sdk.models import operations, shared + +s = sdk.SDK( + security=shared.Security( + authorization="Bearer YOUR_ACCESS_TOKEN_HERE", + ), +) + +req = operations.UdpateTransferInitiationStatusRequest( + update_transfer_initiation_status_request=shared.UpdateTransferInitiationStatusRequest( + status=shared.UpdateTransferInitiationStatusRequestStatus.PROCESSED, + ), + transfer_id='vero', +) + +res = s.payments.udpate_transfer_initiation_status(req) + +if res.status_code == 200: + # handle response +``` + ## uninstall_connector Uninstall a connector by its name. @@ -494,7 +652,7 @@ s = sdk.SDK( ) req = operations.UninstallConnectorRequest( - connector=shared.Connector.BANKING_CIRCLE, + connector=shared.Connector.DUMMY_PAY, ) res = s.payments.uninstall_connector(req) @@ -521,9 +679,9 @@ s = sdk.SDK( req = operations.UpdateMetadataRequest( payment_metadata=shared.PaymentMetadata( - key='nisi', + key='architecto', ), - payment_id='vel', + payment_id='magnam', ) res = s.payments.update_metadata(req) diff --git a/sdks/python/docs/search/README.md b/sdks/python/docs/search/README.md index 5666ded97f..3599cff8cd 100755 --- a/sdks/python/docs/search/README.md +++ b/sdks/python/docs/search/README.md @@ -24,8 +24,6 @@ s = sdk.SDK( req = shared.Query( after=[ 'users:002', - 'users:002', - 'users:002', ], cursor='YXVsdCBhbmQgYSBtYXhpbXVtIG1heF9yZXN1bHRzLol=', ledgers=[ @@ -33,17 +31,18 @@ req = shared.Query( 'quickstart', 'quickstart', ], - page_size=474867, + page_size=354047, policy='OR', raw={ - "nihil": 'magnam', + "quos": 'sint', + "accusantium": 'mollitia', + "reiciendis": 'mollitia', }, sort='txid:asc', - target='distinctio', + target='ad', terms=[ 'destination=central_bank1', 'destination=central_bank1', - 'destination=central_bank1', ], ) diff --git a/sdks/python/docs/wallets/README.md b/sdks/python/docs/wallets/README.md index 17624c5b46..1da9fa0824 100755 --- a/sdks/python/docs/wallets/README.md +++ b/sdks/python/docs/wallets/README.md @@ -40,7 +40,7 @@ req = operations.ConfirmHoldRequest( amount=100, final=True, ), - hold_id='labore', + hold_id='dolor', ) res = s.wallets.confirm_hold(req) @@ -68,11 +68,11 @@ s = sdk.SDK( req = operations.CreateBalanceRequest( create_balance_request=shared.CreateBalanceRequest( - expires_at=dateutil.parser.isoparse('2022-08-14T00:52:14.624Z'), - name='Robin Keebler', - priority=102863, + expires_at=dateutil.parser.isoparse('2022-07-30T07:35:03.817Z'), + name='Joyce Kertzmann', + priority=260341, ), - id='41959890-afa5-463e-a516-fe4c8b711e5b', + id='c8b711e5-b7fd-42ed-8289-21cddc692601', ) res = s.wallets.create_balance(req) @@ -99,10 +99,12 @@ s = sdk.SDK( req = shared.CreateWalletRequest( metadata={ - "repellat": 'quibusdam', - "sed": 'saepe', + "quidem": 'ipsam', + "voluptate": 'autem', + "nam": 'eaque', + "pariatur": 'nemo', }, - name='Edward Crooks', + name='Joseph Steuber DDS', ) res = s.wallets.create_wallet(req) @@ -130,35 +132,24 @@ s = sdk.SDK( req = operations.CreditWalletRequest( credit_wallet_request=shared.CreditWalletRequest( amount=shared.Monetary( - amount=166847, - asset='sunt', + amount=359978, + asset='hic', ), - balance='quo', + balance='libero', metadata={ - "pariatur": 'maxime', - "ea": 'excepturi', - "odit": 'ea', - "accusantium": 'ab', + "dolores": 'quis', + "totam": 'dignissimos', + "eaque": 'quis', }, - reference='maiores', + reference='nesciunt', sources=[ shared.LedgerAccountSubject( - identifier='voluptate', - type='autem', - ), - shared.WalletSubject( - balance='eaque', - identifier='pariatur', - type='nemo', - ), - shared.WalletSubject( - balance='perferendis', - identifier='fugiat', - type='amet', + identifier='dolores', + type='minus', ), ], ), - id='0c5fbb25-8705-4320-ac73-d5fe9b90c289', + id='73d5fe9b-90c2-4890-9b3f-e49a8d9cbf48', ) res = s.wallets.credit_wallet(req) @@ -186,28 +177,25 @@ s = sdk.SDK( req = operations.DebitWalletRequest( debit_wallet_request=shared.DebitWalletRequest( amount=shared.Monetary( - amount=50370, - asset='occaecati', + amount=398221, + asset='dolorem', ), balances=[ - 'adipisci', - 'asperiores', - 'earum', + 'dolor', ], - description='modi', - destination=shared.WalletSubject( - balance='dolorum', - identifier='deleniti', - type='pariatur', + description='qui', + destination=shared.LedgerAccountSubject( + identifier='hic', + type='excepturi', ), metadata={ - "nobis": 'libero', - "delectus": 'quaerat', - "quos": 'aliquid', + "voluptate": 'dignissimos', + "reiciendis": 'amet', + "dolorum": 'numquam', }, pending=False, ), - id='33323f9b-77f3-4a41-8067-4ebf69280d1b', + id='100674eb-f692-480d-9ba7-7a89ebf737ae', ) res = s.wallets.debit_wallet(req) @@ -233,8 +221,8 @@ s = sdk.SDK( ) req = operations.GetBalanceRequest( - balance_name='dolorum', - id='77a89ebf-737a-4e42-83ce-5e6a95d8a0d4', + balance_name='eius', + id='203ce5e6-a95d-48a0-9446-ce2af7a73cf3', ) res = s.wallets.get_balance(req) @@ -260,7 +248,7 @@ s = sdk.SDK( ) req = operations.GetHoldRequest( - hold_id='tempora', + hold_id='tempore', ) res = s.wallets.get_hold(req) @@ -288,11 +276,13 @@ s = sdk.SDK( req = operations.GetHoldsRequest( cursor='aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ==', metadata={ - "quod": 'officiis', - "qui": 'dolorum', + "numquam": 'enim', + "dolorem": 'sapiente', + "totam": 'nihil', + "sit": 'expedita', }, - page_size=952792, - wallet_id='esse', + page_size=207470, + wallet_id='sed', ) res = s.wallets.get_holds(req) @@ -317,8 +307,8 @@ s = sdk.SDK( req = operations.GetTransactionsRequest( cursor='aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ==', - page_size=687488, - wallet_id='iusto', + page_size=424685, + wallet_id='libero', ) res = s.wallets.get_transactions(req) @@ -344,7 +334,7 @@ s = sdk.SDK( ) req = operations.GetWalletRequest( - id='3cf3be45-3f87-40b3-a6b5-a73429cdb1a8', + id='5a73429c-db1a-4842-abb6-79d2322715bf', ) res = s.wallets.get_wallet(req) @@ -370,7 +360,7 @@ s = sdk.SDK( ) req = operations.GetWalletSummaryRequest( - id='422bb679-d232-4271-9bf0-cbb1e31b8b90', + id='0cbb1e31-b8b9-40f3-843a-1108e0adcf4b', ) res = s.wallets.get_wallet_summary(req) @@ -396,7 +386,7 @@ s = sdk.SDK( ) req = operations.ListBalancesRequest( - id='f3443a11-08e0-4adc-b4b9-21879fce953f', + id='921879fc-e953-4f73-af7f-bc7abd74dd39', ) res = s.wallets.list_balances(req) @@ -424,11 +414,13 @@ s = sdk.SDK( req = operations.ListWalletsRequest( cursor='aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ==', metadata={ - "consectetur": 'vero', - "tenetur": 'dignissimos', + "aut": 'voluptatibus', + "exercitationem": 'nulla', + "fugit": 'porro', + "maiores": 'doloribus', }, - name='Kelvin Schmidt', - page_size=708548, + name='Miss Vicky Kuphal', + page_size=368584, ) res = s.wallets.list_wallets(req) @@ -456,13 +448,11 @@ s = sdk.SDK( req = operations.UpdateWalletRequest( request_body=operations.UpdateWalletRequestBody( metadata={ - "ducimus": 'dolore', - "quibusdam": 'illum', - "sequi": 'natus', - "impedit": 'aut', + "aspernatur": 'vel', + "possimus": 'magnam', }, ), - id='f5d2cff7-c70a-4456-a6d4-36813f16d9f5', + id='36813f16-d9f5-4fce-ac55-6146c3e250fb', ) res = s.wallets.update_wallet(req) @@ -488,7 +478,7 @@ s = sdk.SDK( ) req = operations.VoidHoldRequest( - hold_id='sapiente', + hold_id='aut', ) res = s.wallets.void_hold(req) diff --git a/sdks/python/docs/webhooks/README.md b/sdks/python/docs/webhooks/README.md index b90082ff23..57e37926af 100755 --- a/sdks/python/docs/webhooks/README.md +++ b/sdks/python/docs/webhooks/README.md @@ -177,9 +177,6 @@ req = shared.ConfigUser( endpoint='https://example.com', event_types=[ 'TYPE1', - 'TYPE1', - 'TYPE1', - 'TYPE1', ], secret='V0bivxRWveaoz08afqjU6Ko/jwO0Cb+3', ) diff --git a/sdks/python/files.gen b/sdks/python/files.gen index d3c1126184..e440bbb2ba 100755 --- a/sdks/python/files.gen +++ b/sdks/python/files.gen @@ -62,20 +62,25 @@ src/sdk/models/operations/runworkflow.py src/sdk/models/operations/sendevent.py src/sdk/models/operations/connectorsstripetransfer.py src/sdk/models/operations/connectorstransfer.py +src/sdk/models/operations/createtransferinitiation.py +src/sdk/models/operations/deletetransferinitiation.py src/sdk/models/operations/getaccountbalances.py src/sdk/models/operations/getconnectortask.py src/sdk/models/operations/getpayment.py +src/sdk/models/operations/gettransferinitiation.py src/sdk/models/operations/installconnector.py src/sdk/models/operations/listallconnectors.py src/sdk/models/operations/listconfigsavailableconnectors.py src/sdk/models/operations/listconnectortasks.py src/sdk/models/operations/listconnectorstransfers.py src/sdk/models/operations/listpayments.py +src/sdk/models/operations/listtransferinitiations.py src/sdk/models/operations/paymentsgetaccount.py src/sdk/models/operations/paymentsgetserverinfo.py src/sdk/models/operations/paymentslistaccounts.py src/sdk/models/operations/readconnectorconfig.py src/sdk/models/operations/resetconnector.py +src/sdk/models/operations/udpatetransferinitiationstatus.py src/sdk/models/operations/uninstallconnector.py src/sdk/models/operations/updatemetadata.py src/sdk/models/operations/search.py @@ -216,6 +221,9 @@ src/sdk/models/shared/runworkflowresponse.py src/sdk/models/shared/stripetransferrequest.py src/sdk/models/shared/transferresponse.py src/sdk/models/shared/transferrequest.py +src/sdk/models/shared/transferinitiationresponse.py +src/sdk/models/shared/transferinitiation.py +src/sdk/models/shared/transferinitiationrequest.py src/sdk/models/shared/balancescursor.py src/sdk/models/shared/accountbalance.py src/sdk/models/shared/taskresponse.py @@ -241,10 +249,12 @@ src/sdk/models/shared/connectorsconfigsresponse.py src/sdk/models/shared/taskscursor.py src/sdk/models/shared/transfersresponse.py src/sdk/models/shared/paymentscursor.py +src/sdk/models/shared/transferinitiationscursor.py src/sdk/models/shared/paymentsaccountresponse.py src/sdk/models/shared/paymentsaccount.py src/sdk/models/shared/accountscursor.py src/sdk/models/shared/connectorconfigresponse.py +src/sdk/models/shared/updatetransferinitiationstatusrequest.py src/sdk/models/shared/response.py src/sdk/models/shared/query.py src/sdk/models/shared/walletserrorresponse.py diff --git a/sdks/python/src/sdk/models/operations/__init__.py b/sdks/python/src/sdk/models/operations/__init__.py index de5cce95f4..3a5329caa1 100755 --- a/sdks/python/src/sdk/models/operations/__init__.py +++ b/sdks/python/src/sdk/models/operations/__init__.py @@ -17,6 +17,7 @@ from .createscope import * from .createsecret import * from .createtransaction import * +from .createtransferinitiation import * from .createwallet import * from .createworkflow import * from .creditwallet import * @@ -27,6 +28,7 @@ from .deletescope import * from .deletescopefromclient import * from .deletesecret import * +from .deletetransferinitiation import * from .deletetransientscope import * from .deleteworkflow import * from .getaccount import * @@ -47,6 +49,7 @@ from .getserverinfo import * from .gettransaction import * from .gettransactions import * +from .gettransferinitiation import * from .getversions import * from .getwallet import * from .getwalletsummary import * @@ -65,6 +68,7 @@ from .listpayments import * from .listscopes import * from .listtransactions import * +from .listtransferinitiations import * from .listusers import * from .listwallets import * from .listworkflows import * @@ -84,6 +88,7 @@ from .searchgetserverinfo import * from .sendevent import * from .testconfig import * +from .udpatetransferinitiationstatus import * from .uninstallconnector import * from .updateclient import * from .updatemetadata import * @@ -92,4 +97,4 @@ from .voidhold import * from .walletsgetserverinfo import * -__all__ = ["ActivateConfigRequest","ActivateConfigResponse","AddMetadataOnTransactionRequest","AddMetadataOnTransactionResponse","AddMetadataToAccountRequest","AddMetadataToAccountResponse","AddScopeToClientRequest","AddScopeToClientResponse","AddTransientScopeRequest","AddTransientScopeResponse","CancelEventRequest","CancelEventResponse","ChangeConfigSecretRequest","ChangeConfigSecretResponse","ConfirmHoldRequest","ConfirmHoldResponse","ConnectorsStripeTransferResponse","ConnectorsTransferRequest","ConnectorsTransferResponse","CountAccountsRequest","CountAccountsResponse","CountTransactionsRequest","CountTransactionsResponse","CreateBalanceRequest","CreateBalanceResponse","CreateClientResponse","CreateScopeResponse","CreateSecretRequest","CreateSecretResponse","CreateTransactionRequest","CreateTransactionResponse","CreateWalletResponse","CreateWorkflowResponse","CreditWalletRequest","CreditWalletResponse","DeactivateConfigRequest","DeactivateConfigResponse","DebitWalletRequest","DebitWalletResponse","DeleteClientRequest","DeleteClientResponse","DeleteConfigRequest","DeleteConfigResponse","DeleteScopeFromClientRequest","DeleteScopeFromClientResponse","DeleteScopeRequest","DeleteScopeResponse","DeleteSecretRequest","DeleteSecretResponse","DeleteTransientScopeRequest","DeleteTransientScopeResponse","DeleteWorkflowRequest","DeleteWorkflowResponse","GetAccountBalancesRequest","GetAccountBalancesResponse","GetAccountRequest","GetAccountResponse","GetBalanceRequest","GetBalanceResponse","GetBalancesAggregatedRequest","GetBalancesAggregatedResponse","GetBalancesRequest","GetBalancesResponse","GetConnectorTaskRequest","GetConnectorTaskResponse","GetHoldRequest","GetHoldResponse","GetHoldsRequest","GetHoldsResponse","GetInfoResponse","GetInstanceHistoryRequest","GetInstanceHistoryResponse","GetInstanceRequest","GetInstanceResponse","GetInstanceStageHistoryRequest","GetInstanceStageHistoryResponse","GetLedgerInfoRequest","GetLedgerInfoResponse","GetManyConfigsRequest","GetManyConfigsResponse","GetPaymentRequest","GetPaymentResponse","GetServerInfoResponse","GetTransactionRequest","GetTransactionResponse","GetTransactionsRequest","GetTransactionsResponse","GetVersionsResponse","GetWalletRequest","GetWalletResponse","GetWalletSummaryRequest","GetWalletSummaryResponse","GetWorkflowRequest","GetWorkflowResponse","InsertConfigResponse","InstallConnectorRequest","InstallConnectorResponse","ListAccountsRequest","ListAccountsResponse","ListAllConnectorsResponse","ListBalancesRequest","ListBalancesResponse","ListClientsResponse","ListConfigsAvailableConnectorsResponse","ListConnectorTasksRequest","ListConnectorTasksResponse","ListConnectorsTransfersRequest","ListConnectorsTransfersResponse","ListInstancesRequest","ListInstancesResponse","ListLogsRequest","ListLogsResponse","ListPaymentsRequest","ListPaymentsResponse","ListScopesResponse","ListTransactionsRequest","ListTransactionsResponse","ListUsersResponse","ListWalletsRequest","ListWalletsResponse","ListWorkflowsResponse","OrchestrationgetServerInfoResponse","PaymentsgetAccountRequest","PaymentsgetAccountResponse","PaymentsgetServerInfoResponse","PaymentslistAccountsRequest","PaymentslistAccountsResponse","ReadClientRequest","ReadClientResponse","ReadConnectorConfigRequest","ReadConnectorConfigResponse","ReadScopeRequest","ReadScopeResponse","ReadStatsRequest","ReadStatsResponse","ReadUserRequest","ReadUserResponse","ResetConnectorRequest","ResetConnectorResponse","RevertTransactionRequest","RevertTransactionResponse","RunWorkflowRequest","RunWorkflowResponse","SearchResponse","SearchgetServerInfoResponse","SendEventRequest","SendEventRequestBody","SendEventResponse","TestConfigRequest","TestConfigResponse","UninstallConnectorRequest","UninstallConnectorResponse","UpdateClientRequest","UpdateClientResponse","UpdateMetadataRequest","UpdateMetadataResponse","UpdateScopeRequest","UpdateScopeResponse","UpdateWalletRequest","UpdateWalletRequestBody","UpdateWalletResponse","VoidHoldRequest","VoidHoldResponse","WalletsgetServerInfoResponse"] +__all__ = ["ActivateConfigRequest","ActivateConfigResponse","AddMetadataOnTransactionRequest","AddMetadataOnTransactionResponse","AddMetadataToAccountRequest","AddMetadataToAccountResponse","AddScopeToClientRequest","AddScopeToClientResponse","AddTransientScopeRequest","AddTransientScopeResponse","CancelEventRequest","CancelEventResponse","ChangeConfigSecretRequest","ChangeConfigSecretResponse","ConfirmHoldRequest","ConfirmHoldResponse","ConnectorsStripeTransferResponse","ConnectorsTransferRequest","ConnectorsTransferResponse","CountAccountsRequest","CountAccountsResponse","CountTransactionsRequest","CountTransactionsResponse","CreateBalanceRequest","CreateBalanceResponse","CreateClientResponse","CreateScopeResponse","CreateSecretRequest","CreateSecretResponse","CreateTransactionRequest","CreateTransactionResponse","CreateTransferInitiationResponse","CreateWalletResponse","CreateWorkflowResponse","CreditWalletRequest","CreditWalletResponse","DeactivateConfigRequest","DeactivateConfigResponse","DebitWalletRequest","DebitWalletResponse","DeleteClientRequest","DeleteClientResponse","DeleteConfigRequest","DeleteConfigResponse","DeleteScopeFromClientRequest","DeleteScopeFromClientResponse","DeleteScopeRequest","DeleteScopeResponse","DeleteSecretRequest","DeleteSecretResponse","DeleteTransferInitiationRequest","DeleteTransferInitiationResponse","DeleteTransientScopeRequest","DeleteTransientScopeResponse","DeleteWorkflowRequest","DeleteWorkflowResponse","GetAccountBalancesRequest","GetAccountBalancesResponse","GetAccountRequest","GetAccountResponse","GetBalanceRequest","GetBalanceResponse","GetBalancesAggregatedRequest","GetBalancesAggregatedResponse","GetBalancesRequest","GetBalancesResponse","GetConnectorTaskRequest","GetConnectorTaskResponse","GetHoldRequest","GetHoldResponse","GetHoldsRequest","GetHoldsResponse","GetInfoResponse","GetInstanceHistoryRequest","GetInstanceHistoryResponse","GetInstanceRequest","GetInstanceResponse","GetInstanceStageHistoryRequest","GetInstanceStageHistoryResponse","GetLedgerInfoRequest","GetLedgerInfoResponse","GetManyConfigsRequest","GetManyConfigsResponse","GetPaymentRequest","GetPaymentResponse","GetServerInfoResponse","GetTransactionRequest","GetTransactionResponse","GetTransactionsRequest","GetTransactionsResponse","GetTransferInitiationRequest","GetTransferInitiationResponse","GetVersionsResponse","GetWalletRequest","GetWalletResponse","GetWalletSummaryRequest","GetWalletSummaryResponse","GetWorkflowRequest","GetWorkflowResponse","InsertConfigResponse","InstallConnectorRequest","InstallConnectorResponse","ListAccountsRequest","ListAccountsResponse","ListAllConnectorsResponse","ListBalancesRequest","ListBalancesResponse","ListClientsResponse","ListConfigsAvailableConnectorsResponse","ListConnectorTasksRequest","ListConnectorTasksResponse","ListConnectorsTransfersRequest","ListConnectorsTransfersResponse","ListInstancesRequest","ListInstancesResponse","ListLogsRequest","ListLogsResponse","ListPaymentsRequest","ListPaymentsResponse","ListScopesResponse","ListTransactionsRequest","ListTransactionsResponse","ListTransferInitiationsRequest","ListTransferInitiationsResponse","ListUsersResponse","ListWalletsRequest","ListWalletsResponse","ListWorkflowsResponse","OrchestrationgetServerInfoResponse","PaymentsgetAccountRequest","PaymentsgetAccountResponse","PaymentsgetServerInfoResponse","PaymentslistAccountsRequest","PaymentslistAccountsResponse","ReadClientRequest","ReadClientResponse","ReadConnectorConfigRequest","ReadConnectorConfigResponse","ReadScopeRequest","ReadScopeResponse","ReadStatsRequest","ReadStatsResponse","ReadUserRequest","ReadUserResponse","ResetConnectorRequest","ResetConnectorResponse","RevertTransactionRequest","RevertTransactionResponse","RunWorkflowRequest","RunWorkflowResponse","SearchResponse","SearchgetServerInfoResponse","SendEventRequest","SendEventRequestBody","SendEventResponse","TestConfigRequest","TestConfigResponse","UdpateTransferInitiationStatusRequest","UdpateTransferInitiationStatusResponse","UninstallConnectorRequest","UninstallConnectorResponse","UpdateClientRequest","UpdateClientResponse","UpdateMetadataRequest","UpdateMetadataResponse","UpdateScopeRequest","UpdateScopeResponse","UpdateWalletRequest","UpdateWalletRequestBody","UpdateWalletResponse","VoidHoldRequest","VoidHoldResponse","WalletsgetServerInfoResponse"] diff --git a/sdks/python/src/sdk/models/operations/createtransferinitiation.py b/sdks/python/src/sdk/models/operations/createtransferinitiation.py new file mode 100755 index 0000000000..98ef685f9b --- /dev/null +++ b/sdks/python/src/sdk/models/operations/createtransferinitiation.py @@ -0,0 +1,18 @@ +"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.""" + +from __future__ import annotations +import dataclasses +import requests as requests_http +from ..shared import transferinitiationresponse as shared_transferinitiationresponse +from typing import Optional + + +@dataclasses.dataclass +class CreateTransferInitiationResponse: + + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + raw_response: Optional[requests_http.Response] = dataclasses.field(default=None) + transfer_initiation_response: Optional[shared_transferinitiationresponse.TransferInitiationResponse] = dataclasses.field(default=None) + r"""OK""" + \ No newline at end of file diff --git a/sdks/python/src/sdk/models/operations/deletetransferinitiation.py b/sdks/python/src/sdk/models/operations/deletetransferinitiation.py new file mode 100755 index 0000000000..b7badfc807 --- /dev/null +++ b/sdks/python/src/sdk/models/operations/deletetransferinitiation.py @@ -0,0 +1,22 @@ +"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.""" + +from __future__ import annotations +import dataclasses +import requests as requests_http +from typing import Optional + + +@dataclasses.dataclass +class DeleteTransferInitiationRequest: + + transfer_id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'transferId', 'style': 'simple', 'explode': False }}) + r"""The transfer ID.""" + + +@dataclasses.dataclass +class DeleteTransferInitiationResponse: + + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + raw_response: Optional[requests_http.Response] = dataclasses.field(default=None) + \ No newline at end of file diff --git a/sdks/python/src/sdk/models/operations/gettransferinitiation.py b/sdks/python/src/sdk/models/operations/gettransferinitiation.py new file mode 100755 index 0000000000..05a77dbff9 --- /dev/null +++ b/sdks/python/src/sdk/models/operations/gettransferinitiation.py @@ -0,0 +1,25 @@ +"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.""" + +from __future__ import annotations +import dataclasses +import requests as requests_http +from ..shared import transferinitiationresponse as shared_transferinitiationresponse +from typing import Optional + + +@dataclasses.dataclass +class GetTransferInitiationRequest: + + transfer_id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'transferId', 'style': 'simple', 'explode': False }}) + r"""The transfer ID.""" + + +@dataclasses.dataclass +class GetTransferInitiationResponse: + + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + raw_response: Optional[requests_http.Response] = dataclasses.field(default=None) + transfer_initiation_response: Optional[shared_transferinitiationresponse.TransferInitiationResponse] = dataclasses.field(default=None) + r"""OK""" + \ No newline at end of file diff --git a/sdks/python/src/sdk/models/operations/listtransferinitiations.py b/sdks/python/src/sdk/models/operations/listtransferinitiations.py new file mode 100755 index 0000000000..fc487ead46 --- /dev/null +++ b/sdks/python/src/sdk/models/operations/listtransferinitiations.py @@ -0,0 +1,33 @@ +"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.""" + +from __future__ import annotations +import dataclasses +import requests as requests_http +from ..shared import transferinitiationscursor as shared_transferinitiationscursor +from typing import Optional + + +@dataclasses.dataclass +class ListTransferInitiationsRequest: + + cursor: Optional[str] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'cursor', 'style': 'form', 'explode': True }}) + r"""Parameter used in pagination requests. Maximum page size is set to 15. + Set to the value of next for the next page of results. + Set to the value of previous for the previous page of results. + No other parameters can be set when this parameter is set. + """ + page_size: Optional[int] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'pageSize', 'style': 'form', 'explode': True }}) + r"""The maximum number of results to return per page.""" + sort: Optional[list[str]] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'sort', 'style': 'form', 'explode': True }}) + r"""Fields used to sort payments (default is date:desc).""" + + +@dataclasses.dataclass +class ListTransferInitiationsResponse: + + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + raw_response: Optional[requests_http.Response] = dataclasses.field(default=None) + transfer_initiations_cursor: Optional[shared_transferinitiationscursor.TransferInitiationsCursor] = dataclasses.field(default=None) + r"""OK""" + \ No newline at end of file diff --git a/sdks/python/src/sdk/models/operations/udpatetransferinitiationstatus.py b/sdks/python/src/sdk/models/operations/udpatetransferinitiationstatus.py new file mode 100755 index 0000000000..1488817f31 --- /dev/null +++ b/sdks/python/src/sdk/models/operations/udpatetransferinitiationstatus.py @@ -0,0 +1,24 @@ +"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.""" + +from __future__ import annotations +import dataclasses +import requests as requests_http +from ..shared import updatetransferinitiationstatusrequest as shared_updatetransferinitiationstatusrequest +from typing import Optional + + +@dataclasses.dataclass +class UdpateTransferInitiationStatusRequest: + + transfer_id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'transferId', 'style': 'simple', 'explode': False }}) + r"""The transfer ID.""" + update_transfer_initiation_status_request: shared_updatetransferinitiationstatusrequest.UpdateTransferInitiationStatusRequest = dataclasses.field(metadata={'request': { 'media_type': 'application/json' }}) + + +@dataclasses.dataclass +class UdpateTransferInitiationStatusResponse: + + content_type: str = dataclasses.field() + status_code: int = dataclasses.field() + raw_response: Optional[requests_http.Response] = dataclasses.field(default=None) + \ No newline at end of file diff --git a/sdks/python/src/sdk/models/shared/__init__.py b/sdks/python/src/sdk/models/shared/__init__.py index b13fc3347f..6bc3f61e6b 100755 --- a/sdks/python/src/sdk/models/shared/__init__.py +++ b/sdks/python/src/sdk/models/shared/__init__.py @@ -148,6 +148,10 @@ from .taskwise import * from .transaction import * from .transactionscursorresponse import * +from .transferinitiation import * +from .transferinitiationrequest import * +from .transferinitiationresponse import * +from .transferinitiationscursor import * from .transferrequest import * from .transferresponse import * from .transfersresponse import * @@ -155,6 +159,7 @@ from .updateclientresponse import * from .updatescoperequest import * from .updatescoperesponse import * +from .updatetransferinitiationstatusrequest import * from .user import * from .version import * from .volume import * @@ -174,4 +179,4 @@ from .workflowinstancehistorystageinput import * from .workflowinstancehistorystageoutput import * -__all__ = ["Account","AccountBalance","AccountResponse","AccountWithVolumesAndBalances","AccountsCursor","AccountsCursorCursor","AccountsCursorResponse","AccountsCursorResponseCursor","ActivityConfirmHold","ActivityCreateTransaction","ActivityCreateTransactionOutput","ActivityCreditWallet","ActivityDebitWallet","ActivityDebitWalletOutput","ActivityGetAccount","ActivityGetAccountOutput","ActivityGetPayment","ActivityGetPaymentOutput","ActivityGetWallet","ActivityGetWalletOutput","ActivityRevertTransaction","ActivityRevertTransactionOutput","ActivityStripeTransfer","ActivityVoidHold","AggregateBalancesResponse","AssetHolder","Attempt","AttemptResponse","Balance","BalanceWithAssets","BalancesCursor","BalancesCursorCursor","BalancesCursorResponse","BalancesCursorResponseCursor","BankingCircleConfig","Client","ClientSecret","Config","ConfigChangeSecret","ConfigInfo","ConfigInfoResponse","ConfigResponse","ConfigUser","ConfigsResponse","ConfigsResponseCursor","ConfirmHoldRequest","Connector","ConnectorConfigResponse","ConnectorsConfigsResponse","ConnectorsConfigsResponseData","ConnectorsConfigsResponseDataConnector","ConnectorsConfigsResponseDataConnectorKey","ConnectorsResponse","ConnectorsResponseData","CreateBalanceRequest","CreateBalanceResponse","CreateClientRequest","CreateClientResponse","CreateScopeRequest","CreateScopeResponse","CreateSecretRequest","CreateSecretResponse","CreateTransactionResponse","CreateWalletRequest","CreateWalletResponse","CreateWorkflowRequest","CreateWorkflowResponse","CreditWalletRequest","CurrencyCloudConfig","DebitWalletRequest","DebitWalletResponse","DummyPayConfig","Error","ErrorErrorCode","ErrorResponse","ErrorsEnum","ExpandedDebitHold","ExpandedTransaction","GetBalanceResponse","GetHoldResponse","GetHoldsResponse","GetHoldsResponseCursor","GetTransactionResponse","GetTransactionsResponse","GetTransactionsResponseCursor","GetVersionsResponse","GetWalletResponse","GetWalletSummaryResponse","GetWorkflowInstanceHistoryResponse","GetWorkflowInstanceHistoryStageResponse","GetWorkflowInstanceResponse","GetWorkflowResponse","Hold","LedgerAccountSubject","LedgerInfo","LedgerInfoResponse","LedgerInfoStorage","LedgerStorage","ListBalancesResponse","ListBalancesResponseCursor","ListClientsResponse","ListRunsResponse","ListScopesResponse","ListUsersResponse","ListWalletsResponse","ListWalletsResponseCursor","ListWorkflowsResponse","Log","LogType","LogsCursorResponse","LogsCursorResponseCursor","MangoPayConfig","MigrationInfo","MigrationInfoState","ModulrConfig","Monetary","MoneycorpConfig","Payment","PaymentAdjustment","PaymentMetadata","PaymentResponse","PaymentScheme","PaymentStatus","PaymentType","PaymentsAccount","PaymentsAccountResponse","PaymentsCursor","PaymentsCursorCursor","PostTransaction","PostTransactionScript","Posting","Query","ReadClientResponse","ReadScopeResponse","ReadUserResponse","Response","ResponseCursor","ResponseCursorTotal","RevertTransactionResponse","RunWorkflowResponse","Scope","Secret","Security","ServerInfo","StageDelay","StageSend","StageSendDestination","StageSendDestinationAccount","StageSendDestinationPayment","StageSendDestinationWallet","StageSendSource","StageSendSourceAccount","StageSendSourcePayment","StageSendSourceWallet","StageStatus","StageWaitEvent","Stats","StatsResponse","StripeConfig","StripeTransferRequest","TaskBankingCircle","TaskBankingCircleDescriptor","TaskCurrencyCloud","TaskCurrencyCloudDescriptor","TaskDummyPay","TaskDummyPayDescriptor","TaskMangoPay","TaskMangoPayDescriptor","TaskModulr","TaskModulrDescriptor","TaskMoneycorp","TaskMoneycorpDescriptor","TaskResponse","TaskStripe","TaskStripeDescriptor","TaskWise","TaskWiseDescriptor","TasksCursor","TasksCursorCursor","Transaction","TransactionsCursorResponse","TransactionsCursorResponseCursor","TransferRequest","TransferResponse","TransfersResponse","TransfersResponseData","UpdateClientRequest","UpdateClientResponse","UpdateScopeRequest","UpdateScopeResponse","User","Version","Volume","Wallet","WalletSubject","WalletWithBalances","WalletWithBalancesBalances","WalletsErrorResponse","WalletsErrorResponseErrorCode","WalletsTransaction","WalletsVolume","WebhooksConfig","WiseConfig","Workflow","WorkflowConfig","WorkflowInstance","WorkflowInstanceHistory","WorkflowInstanceHistoryStage","WorkflowInstanceHistoryStageInput","WorkflowInstanceHistoryStageOutput"] +__all__ = ["Account","AccountBalance","AccountResponse","AccountWithVolumesAndBalances","AccountsCursor","AccountsCursorCursor","AccountsCursorResponse","AccountsCursorResponseCursor","ActivityConfirmHold","ActivityCreateTransaction","ActivityCreateTransactionOutput","ActivityCreditWallet","ActivityDebitWallet","ActivityDebitWalletOutput","ActivityGetAccount","ActivityGetAccountOutput","ActivityGetPayment","ActivityGetPaymentOutput","ActivityGetWallet","ActivityGetWalletOutput","ActivityRevertTransaction","ActivityRevertTransactionOutput","ActivityStripeTransfer","ActivityVoidHold","AggregateBalancesResponse","AssetHolder","Attempt","AttemptResponse","Balance","BalanceWithAssets","BalancesCursor","BalancesCursorCursor","BalancesCursorResponse","BalancesCursorResponseCursor","BankingCircleConfig","Client","ClientSecret","Config","ConfigChangeSecret","ConfigInfo","ConfigInfoResponse","ConfigResponse","ConfigUser","ConfigsResponse","ConfigsResponseCursor","ConfirmHoldRequest","Connector","ConnectorConfigResponse","ConnectorsConfigsResponse","ConnectorsConfigsResponseData","ConnectorsConfigsResponseDataConnector","ConnectorsConfigsResponseDataConnectorKey","ConnectorsResponse","ConnectorsResponseData","CreateBalanceRequest","CreateBalanceResponse","CreateClientRequest","CreateClientResponse","CreateScopeRequest","CreateScopeResponse","CreateSecretRequest","CreateSecretResponse","CreateTransactionResponse","CreateWalletRequest","CreateWalletResponse","CreateWorkflowRequest","CreateWorkflowResponse","CreditWalletRequest","CurrencyCloudConfig","DebitWalletRequest","DebitWalletResponse","DummyPayConfig","Error","ErrorErrorCode","ErrorResponse","ErrorsEnum","ExpandedDebitHold","ExpandedTransaction","GetBalanceResponse","GetHoldResponse","GetHoldsResponse","GetHoldsResponseCursor","GetTransactionResponse","GetTransactionsResponse","GetTransactionsResponseCursor","GetVersionsResponse","GetWalletResponse","GetWalletSummaryResponse","GetWorkflowInstanceHistoryResponse","GetWorkflowInstanceHistoryStageResponse","GetWorkflowInstanceResponse","GetWorkflowResponse","Hold","LedgerAccountSubject","LedgerInfo","LedgerInfoResponse","LedgerInfoStorage","LedgerStorage","ListBalancesResponse","ListBalancesResponseCursor","ListClientsResponse","ListRunsResponse","ListScopesResponse","ListUsersResponse","ListWalletsResponse","ListWalletsResponseCursor","ListWorkflowsResponse","Log","LogType","LogsCursorResponse","LogsCursorResponseCursor","MangoPayConfig","MigrationInfo","MigrationInfoState","ModulrConfig","Monetary","MoneycorpConfig","Payment","PaymentAdjustment","PaymentMetadata","PaymentResponse","PaymentScheme","PaymentStatus","PaymentType","PaymentsAccount","PaymentsAccountResponse","PaymentsCursor","PaymentsCursorCursor","PostTransaction","PostTransactionScript","Posting","Query","ReadClientResponse","ReadScopeResponse","ReadUserResponse","Response","ResponseCursor","ResponseCursorTotal","RevertTransactionResponse","RunWorkflowResponse","Scope","Secret","Security","ServerInfo","StageDelay","StageSend","StageSendDestination","StageSendDestinationAccount","StageSendDestinationPayment","StageSendDestinationWallet","StageSendSource","StageSendSourceAccount","StageSendSourcePayment","StageSendSourceWallet","StageStatus","StageWaitEvent","Stats","StatsResponse","StripeConfig","StripeTransferRequest","TaskBankingCircle","TaskBankingCircleDescriptor","TaskCurrencyCloud","TaskCurrencyCloudDescriptor","TaskDummyPay","TaskDummyPayDescriptor","TaskMangoPay","TaskMangoPayDescriptor","TaskModulr","TaskModulrDescriptor","TaskMoneycorp","TaskMoneycorpDescriptor","TaskResponse","TaskStripe","TaskStripeDescriptor","TaskWise","TaskWiseDescriptor","TasksCursor","TasksCursorCursor","Transaction","TransactionsCursorResponse","TransactionsCursorResponseCursor","TransferInitiation","TransferInitiationRequest","TransferInitiationRequestType","TransferInitiationResponse","TransferInitiationStatus","TransferInitiationType","TransferInitiationsCursor","TransferInitiationsCursorCursor","TransferRequest","TransferResponse","TransfersResponse","TransfersResponseData","UpdateClientRequest","UpdateClientResponse","UpdateScopeRequest","UpdateScopeResponse","UpdateTransferInitiationStatusRequest","UpdateTransferInitiationStatusRequestStatus","User","Version","Volume","Wallet","WalletSubject","WalletWithBalances","WalletWithBalancesBalances","WalletsErrorResponse","WalletsErrorResponseErrorCode","WalletsTransaction","WalletsVolume","WebhooksConfig","WiseConfig","Workflow","WorkflowConfig","WorkflowInstance","WorkflowInstanceHistory","WorkflowInstanceHistoryStage","WorkflowInstanceHistoryStageInput","WorkflowInstanceHistoryStageOutput"] diff --git a/sdks/python/src/sdk/models/shared/transferinitiation.py b/sdks/python/src/sdk/models/shared/transferinitiation.py new file mode 100755 index 0000000000..d419a3570b --- /dev/null +++ b/sdks/python/src/sdk/models/shared/transferinitiation.py @@ -0,0 +1,42 @@ +"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.""" + +from __future__ import annotations +import dataclasses +import dateutil.parser +from ..shared import connector as shared_connector +from dataclasses_json import Undefined, dataclass_json +from datetime import datetime +from enum import Enum +from marshmallow import fields +from sdk import utils + +class TransferInitiationStatus(str, Enum): + WAITING_FOR_VALIDATION = 'WAITING_FOR_VALIDATION' + PROCESSING = 'PROCESSING' + PROCESSED = 'PROCESSED' + FAILED = 'FAILED' + REJECTED = 'REJECTED' + VALIDATED = 'VALIDATED' + +class TransferInitiationType(str, Enum): + TRANSFER = 'TRANSFER' + PAYOUT = 'PAYOUT' + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class TransferInitiation: + + amount: int = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('amount') }}) + asset: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('asset') }}) + created_at: datetime = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('createdAt'), 'encoder': utils.datetimeisoformat(False), 'decoder': dateutil.parser.isoparse, 'mm_field': fields.DateTime(format='iso') }}) + description: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('description') }}) + destination_account_id: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('destinationAccountID') }}) + error: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('error') }}) + id: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('id') }}) + provider: shared_connector.Connector = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('provider') }}) + source_account_id: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('sourceAccountID') }}) + status: TransferInitiationStatus = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('status') }}) + type: TransferInitiationType = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('type') }}) + updated_at: datetime = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('updatedAt'), 'encoder': utils.datetimeisoformat(False), 'decoder': dateutil.parser.isoparse, 'mm_field': fields.DateTime(format='iso') }}) + \ No newline at end of file diff --git a/sdks/python/src/sdk/models/shared/transferinitiationrequest.py b/sdks/python/src/sdk/models/shared/transferinitiationrequest.py new file mode 100755 index 0000000000..8c825c0609 --- /dev/null +++ b/sdks/python/src/sdk/models/shared/transferinitiationrequest.py @@ -0,0 +1,32 @@ +"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.""" + +from __future__ import annotations +import dataclasses +import dateutil.parser +from ..shared import connector as shared_connector +from dataclasses_json import Undefined, dataclass_json +from datetime import datetime +from enum import Enum +from marshmallow import fields +from sdk import utils + +class TransferInitiationRequestType(str, Enum): + TRANSFER = 'TRANSFER' + PAYOUT = 'PAYOUT' + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class TransferInitiationRequest: + + amount: int = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('amount') }}) + asset: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('asset') }}) + created_at: datetime = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('createdAt'), 'encoder': utils.datetimeisoformat(False), 'decoder': dateutil.parser.isoparse, 'mm_field': fields.DateTime(format='iso') }}) + description: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('description') }}) + destination_account_id: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('destinationAccountID') }}) + provider: shared_connector.Connector = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('provider') }}) + source_account_id: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('sourceAccountID') }}) + type: TransferInitiationRequestType = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('type') }}) + unique_request_id: str = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('uniqueRequestID') }}) + validated: bool = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('validated') }}) + \ No newline at end of file diff --git a/sdks/python/src/sdk/models/shared/transferinitiationresponse.py b/sdks/python/src/sdk/models/shared/transferinitiationresponse.py new file mode 100755 index 0000000000..5381b7f57e --- /dev/null +++ b/sdks/python/src/sdk/models/shared/transferinitiationresponse.py @@ -0,0 +1,16 @@ +"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.""" + +from __future__ import annotations +import dataclasses +from ..shared import transferinitiation as shared_transferinitiation +from dataclasses_json import Undefined, dataclass_json +from sdk import utils + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class TransferInitiationResponse: + r"""OK""" + + data: shared_transferinitiation.TransferInitiation = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('data') }}) + \ No newline at end of file diff --git a/sdks/python/src/sdk/models/shared/transferinitiationscursor.py b/sdks/python/src/sdk/models/shared/transferinitiationscursor.py new file mode 100755 index 0000000000..e5e85a80f0 --- /dev/null +++ b/sdks/python/src/sdk/models/shared/transferinitiationscursor.py @@ -0,0 +1,28 @@ +"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.""" + +from __future__ import annotations +import dataclasses +from ..shared import transferinitiation as shared_transferinitiation +from dataclasses_json import Undefined, dataclass_json +from sdk import utils +from typing import Optional + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class TransferInitiationsCursorCursor: + + data: list[shared_transferinitiation.TransferInitiation] = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('data') }}) + has_more: bool = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('hasMore') }}) + page_size: int = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('pageSize') }}) + next: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('next'), 'exclude': lambda f: f is None }}) + previous: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('previous'), 'exclude': lambda f: f is None }}) + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class TransferInitiationsCursor: + r"""OK""" + + cursor: TransferInitiationsCursorCursor = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('cursor') }}) + \ No newline at end of file diff --git a/sdks/python/src/sdk/models/shared/updatetransferinitiationstatusrequest.py b/sdks/python/src/sdk/models/shared/updatetransferinitiationstatusrequest.py new file mode 100755 index 0000000000..5ce5cf4817 --- /dev/null +++ b/sdks/python/src/sdk/models/shared/updatetransferinitiationstatusrequest.py @@ -0,0 +1,23 @@ +"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.""" + +from __future__ import annotations +import dataclasses +from dataclasses_json import Undefined, dataclass_json +from enum import Enum +from sdk import utils + +class UpdateTransferInitiationStatusRequestStatus(str, Enum): + WAITING_FOR_VALIDATION = 'WAITING_FOR_VALIDATION' + PROCESSING = 'PROCESSING' + PROCESSED = 'PROCESSED' + FAILED = 'FAILED' + REJECTED = 'REJECTED' + VALIDATED = 'VALIDATED' + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class UpdateTransferInitiationStatusRequest: + + status: UpdateTransferInitiationStatusRequestStatus = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('status') }}) + \ No newline at end of file diff --git a/sdks/python/src/sdk/payments.py b/sdks/python/src/sdk/payments.py index 0b49fc92ef..0b2b16d735 100755 --- a/sdks/python/src/sdk/payments.py +++ b/sdks/python/src/sdk/payments.py @@ -84,6 +84,59 @@ def connectors_transfer(self, request: operations.ConnectorsTransferRequest) -> return res + def create_transfer_initiation(self, request: shared.TransferInitiationRequest) -> operations.CreateTransferInitiationResponse: + r"""Create a TransferInitiation + Create a transfer initiation + """ + base_url = self._server_url + + url = base_url.removesuffix('/') + '/api/payments/transfer-initiation' + headers = {} + req_content_type, data, form = utils.serialize_request_body(request, "request", 'json') + if req_content_type not in ('multipart/form-data', 'multipart/mixed'): + headers['content-type'] = req_content_type + if data is None and form is None: + raise Exception('request body is required') + headers['Accept'] = 'application/json' + headers['user-agent'] = f'speakeasy-sdk/{self._language} {self._sdk_version} {self._gen_version}' + + client = self._security_client + + http_res = client.request('POST', url, data=data, files=form, headers=headers) + content_type = http_res.headers.get('Content-Type') + + res = operations.CreateTransferInitiationResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + + if http_res.status_code == 200: + if utils.match_content_type(content_type, 'application/json'): + out = utils.unmarshal_json(http_res.text, Optional[shared.TransferInitiationResponse]) + res.transfer_initiation_response = out + + return res + + + def delete_transfer_initiation(self, request: operations.DeleteTransferInitiationRequest) -> operations.DeleteTransferInitiationResponse: + r"""Delete a transfer initiation + Delete a transfer initiation by its id. + """ + base_url = self._server_url + + url = utils.generate_url(operations.DeleteTransferInitiationRequest, base_url, '/api/payments/transfer-initiation/{transferId}', request) + headers = {} + headers['Accept'] = '*/*' + headers['user-agent'] = f'speakeasy-sdk/{self._language} {self._sdk_version} {self._gen_version}' + + client = self._security_client + + http_res = client.request('DELETE', url, headers=headers) + content_type = http_res.headers.get('Content-Type') + + res = operations.DeleteTransferInitiationResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + + + return res + + def get_account_balances(self, request: operations.GetAccountBalancesRequest) -> operations.GetAccountBalancesResponse: r"""Get account balances""" base_url = self._server_url @@ -159,6 +212,30 @@ def get_payment(self, request: operations.GetPaymentRequest) -> operations.GetPa return res + def get_transfer_initiation(self, request: operations.GetTransferInitiationRequest) -> operations.GetTransferInitiationResponse: + r"""Get a transfer initiation""" + base_url = self._server_url + + url = utils.generate_url(operations.GetTransferInitiationRequest, base_url, '/api/payments/transfer-initiation/{transferId}', request) + headers = {} + headers['Accept'] = 'application/json' + headers['user-agent'] = f'speakeasy-sdk/{self._language} {self._sdk_version} {self._gen_version}' + + client = self._security_client + + http_res = client.request('GET', url, headers=headers) + content_type = http_res.headers.get('Content-Type') + + res = operations.GetTransferInitiationResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + + if http_res.status_code == 200: + if utils.match_content_type(content_type, 'application/json'): + out = utils.unmarshal_json(http_res.text, Optional[shared.TransferInitiationResponse]) + res.transfer_initiation_response = out + + return res + + def install_connector(self, request: operations.InstallConnectorRequest) -> operations.InstallConnectorResponse: r"""Install a connector Install a connector by its name and config. @@ -316,6 +393,31 @@ def list_payments(self, request: operations.ListPaymentsRequest) -> operations.L return res + def list_transfer_initiations(self, request: operations.ListTransferInitiationsRequest) -> operations.ListTransferInitiationsResponse: + r"""List Transfer Initiations""" + base_url = self._server_url + + url = base_url.removesuffix('/') + '/api/payments/transfer-initiation' + headers = {} + query_params = utils.get_query_params(operations.ListTransferInitiationsRequest, request) + headers['Accept'] = 'application/json' + headers['user-agent'] = f'speakeasy-sdk/{self._language} {self._sdk_version} {self._gen_version}' + + client = self._security_client + + http_res = client.request('GET', url, params=query_params, headers=headers) + content_type = http_res.headers.get('Content-Type') + + res = operations.ListTransferInitiationsResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + + if http_res.status_code == 200: + if utils.match_content_type(content_type, 'application/json'): + out = utils.unmarshal_json(http_res.text, Optional[shared.TransferInitiationsCursor]) + res.transfer_initiations_cursor = out + + return res + + def paymentsget_account(self, request: operations.PaymentsgetAccountRequest) -> operations.PaymentsgetAccountResponse: r"""Get an account""" base_url = self._server_url @@ -438,6 +540,33 @@ def reset_connector(self, request: operations.ResetConnectorRequest) -> operatio return res + def udpate_transfer_initiation_status(self, request: operations.UdpateTransferInitiationStatusRequest) -> operations.UdpateTransferInitiationStatusResponse: + r"""Update the status of a transfer initiation + Update a transfer initiation status + """ + base_url = self._server_url + + url = utils.generate_url(operations.UdpateTransferInitiationStatusRequest, base_url, '/api/payments/transfer-initiation/{transferId}/status', request) + headers = {} + req_content_type, data, form = utils.serialize_request_body(request, "update_transfer_initiation_status_request", 'json') + if req_content_type not in ('multipart/form-data', 'multipart/mixed'): + headers['content-type'] = req_content_type + if data is None and form is None: + raise Exception('request body is required') + headers['Accept'] = '*/*' + headers['user-agent'] = f'speakeasy-sdk/{self._language} {self._sdk_version} {self._gen_version}' + + client = self._security_client + + http_res = client.request('POST', url, data=data, files=form, headers=headers) + content_type = http_res.headers.get('Content-Type') + + res = operations.UdpateTransferInitiationStatusResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + + + return res + + def uninstall_connector(self, request: operations.UninstallConnectorRequest) -> operations.UninstallConnectorResponse: r"""Uninstall a connector Uninstall a connector by its name. diff --git a/sdks/typescript/README.md b/sdks/typescript/README.md index 735490e79b..2dc1d2439f 100755 --- a/sdks/typescript/README.md +++ b/sdks/typescript/README.md @@ -114,20 +114,25 @@ sdk.getVersions().then((res: GetVersionsResponse) => { * [connectorsStripeTransfer](docs/payments/README.md#connectorsstripetransfer) - Transfer funds between Stripe accounts * [connectorsTransfer](docs/payments/README.md#connectorstransfer) - Transfer funds between Connector accounts +* [createTransferInitiation](docs/payments/README.md#createtransferinitiation) - Create a TransferInitiation +* [deleteTransferInitiation](docs/payments/README.md#deletetransferinitiation) - Delete a transfer initiation * [getAccountBalances](docs/payments/README.md#getaccountbalances) - Get account balances * [getConnectorTask](docs/payments/README.md#getconnectortask) - Read a specific task of the connector * [getPayment](docs/payments/README.md#getpayment) - Get a payment +* [getTransferInitiation](docs/payments/README.md#gettransferinitiation) - Get a transfer initiation * [installConnector](docs/payments/README.md#installconnector) - Install a connector * [listAllConnectors](docs/payments/README.md#listallconnectors) - List all installed connectors * [listConfigsAvailableConnectors](docs/payments/README.md#listconfigsavailableconnectors) - List the configs of each available connector * [listConnectorTasks](docs/payments/README.md#listconnectortasks) - List tasks from a connector * [listConnectorsTransfers](docs/payments/README.md#listconnectorstransfers) - List transfers and their statuses * [listPayments](docs/payments/README.md#listpayments) - List payments +* [listTransferInitiations](docs/payments/README.md#listtransferinitiations) - List Transfer Initiations * [paymentsgetAccount](docs/payments/README.md#paymentsgetaccount) - Get an account * [paymentsgetServerInfo](docs/payments/README.md#paymentsgetserverinfo) - Get server info * [paymentslistAccounts](docs/payments/README.md#paymentslistaccounts) - List accounts * [readConnectorConfig](docs/payments/README.md#readconnectorconfig) - Read the config of a connector * [resetConnector](docs/payments/README.md#resetconnector) - Reset a connector +* [udpateTransferInitiationStatus](docs/payments/README.md#udpatetransferinitiationstatus) - Update the status of a transfer initiation * [uninstallConnector](docs/payments/README.md#uninstallconnector) - Uninstall a connector * [updateMetadata](docs/payments/README.md#updatemetadata) - Update metadata diff --git a/sdks/typescript/docs/payments/README.md b/sdks/typescript/docs/payments/README.md index a7ef8cdb24..7656e6e882 100755 --- a/sdks/typescript/docs/payments/README.md +++ b/sdks/typescript/docs/payments/README.md @@ -4,20 +4,25 @@ * [connectorsStripeTransfer](#connectorsstripetransfer) - Transfer funds between Stripe accounts * [connectorsTransfer](#connectorstransfer) - Transfer funds between Connector accounts +* [createTransferInitiation](#createtransferinitiation) - Create a TransferInitiation +* [deleteTransferInitiation](#deletetransferinitiation) - Delete a transfer initiation * [getAccountBalances](#getaccountbalances) - Get account balances * [getConnectorTask](#getconnectortask) - Read a specific task of the connector * [getPayment](#getpayment) - Get a payment +* [getTransferInitiation](#gettransferinitiation) - Get a transfer initiation * [installConnector](#installconnector) - Install a connector * [listAllConnectors](#listallconnectors) - List all installed connectors * [listConfigsAvailableConnectors](#listconfigsavailableconnectors) - List the configs of each available connector * [listConnectorTasks](#listconnectortasks) - List tasks from a connector * [listConnectorsTransfers](#listconnectorstransfers) - List transfers and their statuses * [listPayments](#listpayments) - List payments +* [listTransferInitiations](#listtransferinitiations) - List Transfer Initiations * [paymentsgetAccount](#paymentsgetaccount) - Get an account * [paymentsgetServerInfo](#paymentsgetserverinfo) - Get server info * [paymentslistAccounts](#paymentslistaccounts) - List accounts * [readConnectorConfig](#readconnectorconfig) - Read the config of a connector * [resetConnector](#resetconnector) - Reset a connector +* [udpateTransferInitiationStatus](#udpatetransferinitiationstatus) - Update the status of a transfer initiation * [uninstallConnector](#uninstallconnector) - Uninstall a connector * [updateMetadata](#updatemetadata) - Update metadata @@ -85,6 +90,71 @@ sdk.payments.connectorsTransfer({ }); ``` +## createTransferInitiation + +Create a transfer initiation + +### Example Usage + +```typescript +import { SDK } from "@formance/formance-sdk"; +import { CreateTransferInitiationResponse } from "@formance/formance-sdk/dist/sdk/models/operations"; +import { + Connector, + TransferInitiationRequestType, + TransferInitiationStatus, + TransferInitiationType, +} from "@formance/formance-sdk/dist/sdk/models/shared"; + +const sdk = new SDK({ + security: { + authorization: "Bearer YOUR_ACCESS_TOKEN_HERE", + }, +}); + +sdk.payments.createTransferInitiation({ + amount: 592042, + asset: "USD", + createdAt: new Date("2021-04-14T09:13:11.675Z"), + description: "officia", + destinationAccountID: "dolor", + provider: Connector.Moneycorp, + sourceAccountID: "a", + type: TransferInitiationRequestType.Payout, + uniqueRequestID: "XXX", + validated: false, +}).then((res: CreateTransferInitiationResponse) => { + if (res.statusCode == 200) { + // handle response + } +}); +``` + +## deleteTransferInitiation + +Delete a transfer initiation by its id. + +### Example Usage + +```typescript +import { SDK } from "@formance/formance-sdk"; +import { DeleteTransferInitiationResponse } from "@formance/formance-sdk/dist/sdk/models/operations"; + +const sdk = new SDK({ + security: { + authorization: "Bearer YOUR_ACCESS_TOKEN_HERE", + }, +}); + +sdk.payments.deleteTransferInitiation({ + transferId: "in", +}).then((res: DeleteTransferInitiationResponse) => { + if (res.statusCode == 200) { + // handle response + } +}); +``` + ## getAccountBalances Get account balances @@ -102,19 +172,19 @@ const sdk = new SDK({ }); sdk.payments.getAccountBalances({ - accountId: "provident", - asset: "necessitatibus", + accountId: "in", + asset: "illum", cursor: "aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ==", - from: new Date("2021-09-21T14:06:09.271Z"), - limit: 223081, - pageSize: 891555, + from: new Date("2020-11-26T01:41:04.216Z"), + limit: 116202, + pageSize: 297437, sort: [ - "dolorum", - "in", - "in", - "illum", + "facere", + "ea", + "aliquid", + "laborum", ], - to: new Date("2020-11-26T01:41:04.216Z"), + to: new Date("2022-04-02T11:21:13.260Z"), }).then((res: GetAccountBalancesResponse) => { if (res.statusCode == 200) { // handle response @@ -140,8 +210,8 @@ const sdk = new SDK({ }); sdk.payments.getConnectorTask({ - connector: Connector.Stripe, - taskId: "magnam", + connector: Connector.CurrencyCloud, + taskId: "enim", }).then((res: GetConnectorTaskResponse) => { if (res.statusCode == 200) { // handle response @@ -167,7 +237,7 @@ const sdk = new SDK({ }); sdk.payments.getPayment({ - paymentId: "cumque", + paymentId: "accusamus", }).then((res: GetPaymentResponse) => { if (res.statusCode == 200) { // handle response @@ -175,6 +245,32 @@ sdk.payments.getPayment({ }); ``` +## getTransferInitiation + +Get a transfer initiation + +### Example Usage + +```typescript +import { SDK } from "@formance/formance-sdk"; +import { GetTransferInitiationResponse } from "@formance/formance-sdk/dist/sdk/models/operations"; +import { Connector, TransferInitiationStatus, TransferInitiationType } from "@formance/formance-sdk/dist/sdk/models/shared"; + +const sdk = new SDK({ + security: { + authorization: "Bearer YOUR_ACCESS_TOKEN_HERE", + }, +}); + +sdk.payments.getTransferInitiation({ + transferId: "delectus", +}).then((res: GetTransferInitiationResponse) => { + if (res.statusCode == 200) { + // handle response + } +}); +``` + ## installConnector Install a connector by its name and config. @@ -194,12 +290,15 @@ const sdk = new SDK({ sdk.payments.installConnector({ requestBody: { - apiKey: "XXX", - clientID: "XXX", + authorizationEndpoint: "XXX", endpoint: "XXX", + password: "XXX", pollingPeriod: "60s", + userCertificate: "XXX", + userCertificateKey: "XXX", + username: "XXX", }, - connector: Connector.Modulr, + connector: Connector.CurrencyCloud, }).then((res: InstallConnectorResponse) => { if (res.statusCode == 200) { // handle response @@ -272,9 +371,9 @@ const sdk = new SDK({ }); sdk.payments.listConnectorTasks({ - connector: Connector.Modulr, + connector: Connector.BankingCircle, cursor: "aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ==", - pageSize: 675439, + pageSize: 659669, }).then((res: ListConnectorTasksResponse) => { if (res.statusCode == 200) { // handle response @@ -300,7 +399,7 @@ const sdk = new SDK({ }); sdk.payments.listConnectorsTransfers({ - connector: Connector.Moneycorp, + connector: Connector.CurrencyCloud, }).then((res: ListConnectorsTransfersResponse) => { if (res.statusCode == 200) { // handle response @@ -327,11 +426,12 @@ const sdk = new SDK({ sdk.payments.listPayments({ cursor: "aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ==", - pageSize: 249796, + pageSize: 533206, sort: [ - "enim", - "accusamus", - "delectus", + "amet", + "deserunt", + "nisi", + "vel", ], }).then((res: ListPaymentsResponse) => { if (res.statusCode == 200) { @@ -340,6 +440,38 @@ sdk.payments.listPayments({ }); ``` +## listTransferInitiations + +List Transfer Initiations + +### Example Usage + +```typescript +import { SDK } from "@formance/formance-sdk"; +import { ListTransferInitiationsResponse } from "@formance/formance-sdk/dist/sdk/models/operations"; +import { Connector, TransferInitiationStatus, TransferInitiationType } from "@formance/formance-sdk/dist/sdk/models/shared"; + +const sdk = new SDK({ + security: { + authorization: "Bearer YOUR_ACCESS_TOKEN_HERE", + }, +}); + +sdk.payments.listTransferInitiations({ + cursor: "aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ==", + pageSize: 618809, + sort: [ + "molestiae", + "perferendis", + "nihil", + ], +}).then((res: ListTransferInitiationsResponse) => { + if (res.statusCode == 200) { + // handle response + } +}); +``` + ## paymentsgetAccount Get an account @@ -358,7 +490,7 @@ const sdk = new SDK({ }); sdk.payments.paymentsgetAccount({ - accountId: "quidem", + accountId: "magnam", }).then((res: PaymentsgetAccountResponse) => { if (res.statusCode == 200) { // handle response @@ -408,11 +540,11 @@ const sdk = new SDK({ sdk.payments.paymentslistAccounts({ cursor: "aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ==", - pageSize: 588465, + pageSize: 716075, sort: [ - "id", - "blanditiis", - "deleniti", + "labore", + "labore", + "suscipit", ], }).then((res: PaymentslistAccountsResponse) => { if (res.statusCode == 200) { @@ -439,7 +571,7 @@ const sdk = new SDK({ }); sdk.payments.readConnectorConfig({ - connector: Connector.Moneycorp, + connector: Connector.CurrencyCloud, }).then((res: ReadConnectorConfigResponse) => { if (res.statusCode == 200) { // handle response @@ -467,7 +599,7 @@ const sdk = new SDK({ }); sdk.payments.resetConnector({ - connector: Connector.DummyPay, + connector: Connector.BankingCircle, }).then((res: ResetConnectorResponse) => { if (res.statusCode == 200) { // handle response @@ -475,6 +607,35 @@ sdk.payments.resetConnector({ }); ``` +## udpateTransferInitiationStatus + +Update a transfer initiation status + +### Example Usage + +```typescript +import { SDK } from "@formance/formance-sdk"; +import { UdpateTransferInitiationStatusResponse } from "@formance/formance-sdk/dist/sdk/models/operations"; +import { UpdateTransferInitiationStatusRequestStatus } from "@formance/formance-sdk/dist/sdk/models/shared"; + +const sdk = new SDK({ + security: { + authorization: "Bearer YOUR_ACCESS_TOKEN_HERE", + }, +}); + +sdk.payments.udpateTransferInitiationStatus({ + updateTransferInitiationStatusRequest: { + status: UpdateTransferInitiationStatusRequestStatus.Processed, + }, + transferId: "vero", +}).then((res: UdpateTransferInitiationStatusResponse) => { + if (res.statusCode == 200) { + // handle response + } +}); +``` + ## uninstallConnector Uninstall a connector by its name. @@ -493,7 +654,7 @@ const sdk = new SDK({ }); sdk.payments.uninstallConnector({ - connector: Connector.BankingCircle, + connector: Connector.DummyPay, }).then((res: UninstallConnectorResponse) => { if (res.statusCode == 200) { // handle response @@ -519,9 +680,9 @@ const sdk = new SDK({ sdk.payments.updateMetadata({ paymentMetadata: { - key: "nisi", + key: "architecto", }, - paymentId: "vel", + paymentId: "magnam", }).then((res: UpdateMetadataResponse) => { if (res.statusCode == 200) { // handle response diff --git a/sdks/typescript/docs/search/README.md b/sdks/typescript/docs/search/README.md index ebb62b6a61..bb82cad4f8 100755 --- a/sdks/typescript/docs/search/README.md +++ b/sdks/typescript/docs/search/README.md @@ -24,8 +24,6 @@ const sdk = new SDK({ sdk.search.search({ after: [ "users:002", - "users:002", - "users:002", ], cursor: "YXVsdCBhbmQgYSBtYXhpbXVtIG1heF9yZXN1bHRzLol=", ledgers: [ @@ -33,17 +31,18 @@ sdk.search.search({ "quickstart", "quickstart", ], - pageSize: 474867, + pageSize: 354047, policy: "OR", raw: { - "nihil": "magnam", + "quos": "sint", + "accusantium": "mollitia", + "reiciendis": "mollitia", }, sort: "txid:asc", - target: "distinctio", + target: "ad", terms: [ "destination=central_bank1", "destination=central_bank1", - "destination=central_bank1", ], }).then((res: SearchResponse) => { if (res.statusCode == 200) { diff --git a/sdks/typescript/docs/wallets/README.md b/sdks/typescript/docs/wallets/README.md index 7986568246..b9d4503496 100755 --- a/sdks/typescript/docs/wallets/README.md +++ b/sdks/typescript/docs/wallets/README.md @@ -41,7 +41,7 @@ sdk.wallets.confirmHold({ amount: 100, final: true, }, - holdId: "labore", + holdId: "dolor", }).then((res: ConfirmHoldResponse) => { if (res.statusCode == 200) { // handle response @@ -68,11 +68,11 @@ const sdk = new SDK({ sdk.wallets.createBalance({ createBalanceRequest: { - expiresAt: new Date("2022-08-14T00:52:14.624Z"), - name: "Robin Keebler", - priority: 102863, + expiresAt: new Date("2022-07-30T07:35:03.817Z"), + name: "Joyce Kertzmann", + priority: 260341, }, - id: "41959890-afa5-463e-a516-fe4c8b711e5b", + id: "c8b711e5-b7fd-42ed-8289-21cddc692601", }).then((res: CreateBalanceResponse) => { if (res.statusCode == 200) { // handle response @@ -99,10 +99,12 @@ const sdk = new SDK({ sdk.wallets.createWallet({ metadata: { - "repellat": "quibusdam", - "sed": "saepe", + "quidem": "ipsam", + "voluptate": "autem", + "nam": "eaque", + "pariatur": "nemo", }, - name: "Edward Crooks", + name: "Joseph Steuber DDS", }).then((res: CreateWalletResponse) => { if (res.statusCode == 200) { // handle response @@ -130,35 +132,24 @@ const sdk = new SDK({ sdk.wallets.creditWallet({ creditWalletRequest: { amount: { - amount: 166847, - asset: "sunt", + amount: 359978, + asset: "hic", }, - balance: "quo", + balance: "libero", metadata: { - "pariatur": "maxime", - "ea": "excepturi", - "odit": "ea", - "accusantium": "ab", + "dolores": "quis", + "totam": "dignissimos", + "eaque": "quis", }, - reference: "maiores", + reference: "nesciunt", sources: [ { - identifier: "voluptate", - type: "autem", - }, - { - balance: "eaque", - identifier: "pariatur", - type: "nemo", - }, - { - balance: "perferendis", - identifier: "fugiat", - type: "amet", + identifier: "dolores", + type: "minus", }, ], }, - id: "0c5fbb25-8705-4320-ac73-d5fe9b90c289", + id: "73d5fe9b-90c2-4890-9b3f-e49a8d9cbf48", }).then((res: CreditWalletResponse) => { if (res.statusCode == 200) { // handle response @@ -186,28 +177,25 @@ const sdk = new SDK({ sdk.wallets.debitWallet({ debitWalletRequest: { amount: { - amount: 50370, - asset: "occaecati", + amount: 398221, + asset: "dolorem", }, balances: [ - "adipisci", - "asperiores", - "earum", + "dolor", ], - description: "modi", + description: "qui", destination: { - balance: "dolorum", - identifier: "deleniti", - type: "pariatur", + identifier: "hic", + type: "excepturi", }, metadata: { - "nobis": "libero", - "delectus": "quaerat", - "quos": "aliquid", + "voluptate": "dignissimos", + "reiciendis": "amet", + "dolorum": "numquam", }, pending: false, }, - id: "33323f9b-77f3-4a41-8067-4ebf69280d1b", + id: "100674eb-f692-480d-9ba7-7a89ebf737ae", }).then((res: DebitWalletResponse) => { if (res.statusCode == 200) { // handle response @@ -233,8 +221,8 @@ const sdk = new SDK({ }); sdk.wallets.getBalance({ - balanceName: "dolorum", - id: "77a89ebf-737a-4e42-83ce-5e6a95d8a0d4", + balanceName: "eius", + id: "203ce5e6-a95d-48a0-9446-ce2af7a73cf3", }).then((res: GetBalanceResponse) => { if (res.statusCode == 200) { // handle response @@ -260,7 +248,7 @@ const sdk = new SDK({ }); sdk.wallets.getHold({ - holdID: "tempora", + holdID: "tempore", }).then((res: GetHoldResponse) => { if (res.statusCode == 200) { // handle response @@ -288,11 +276,13 @@ const sdk = new SDK({ sdk.wallets.getHolds({ cursor: "aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ==", metadata: { - "quod": "officiis", - "qui": "dolorum", + "numquam": "enim", + "dolorem": "sapiente", + "totam": "nihil", + "sit": "expedita", }, - pageSize: 952792, - walletID: "esse", + pageSize: 207470, + walletID: "sed", }).then((res: GetHoldsResponse) => { if (res.statusCode == 200) { // handle response @@ -317,8 +307,8 @@ const sdk = new SDK({ sdk.wallets.getTransactions({ cursor: "aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ==", - pageSize: 687488, - walletID: "iusto", + pageSize: 424685, + walletID: "libero", }).then((res: GetTransactionsResponse) => { if (res.statusCode == 200) { // handle response @@ -344,7 +334,7 @@ const sdk = new SDK({ }); sdk.wallets.getWallet({ - id: "3cf3be45-3f87-40b3-a6b5-a73429cdb1a8", + id: "5a73429c-db1a-4842-abb6-79d2322715bf", }).then((res: GetWalletResponse) => { if (res.statusCode == 200) { // handle response @@ -370,7 +360,7 @@ const sdk = new SDK({ }); sdk.wallets.getWalletSummary({ - id: "422bb679-d232-4271-9bf0-cbb1e31b8b90", + id: "0cbb1e31-b8b9-40f3-843a-1108e0adcf4b", }).then((res: GetWalletSummaryResponse) => { if (res.statusCode == 200) { // handle response @@ -395,7 +385,7 @@ const sdk = new SDK({ }); sdk.wallets.listBalances({ - id: "f3443a11-08e0-4adc-b4b9-21879fce953f", + id: "921879fc-e953-4f73-af7f-bc7abd74dd39", }).then((res: ListBalancesResponse) => { if (res.statusCode == 200) { // handle response @@ -422,11 +412,13 @@ const sdk = new SDK({ sdk.wallets.listWallets({ cursor: "aHR0cHM6Ly9nLnBhZ2UvTmVrby1SYW1lbj9zaGFyZQ==", metadata: { - "consectetur": "vero", - "tenetur": "dignissimos", + "aut": "voluptatibus", + "exercitationem": "nulla", + "fugit": "porro", + "maiores": "doloribus", }, - name: "Kelvin Schmidt", - pageSize: 708548, + name: "Miss Vicky Kuphal", + pageSize: 368584, }).then((res: ListWalletsResponse) => { if (res.statusCode == 200) { // handle response @@ -454,13 +446,11 @@ const sdk = new SDK({ sdk.wallets.updateWallet({ requestBody: { metadata: { - "ducimus": "dolore", - "quibusdam": "illum", - "sequi": "natus", - "impedit": "aut", + "aspernatur": "vel", + "possimus": "magnam", }, }, - id: "f5d2cff7-c70a-4456-a6d4-36813f16d9f5", + id: "36813f16-d9f5-4fce-ac55-6146c3e250fb", }).then((res: UpdateWalletResponse) => { if (res.statusCode == 200) { // handle response @@ -486,7 +476,7 @@ const sdk = new SDK({ }); sdk.wallets.voidHold({ - holdId: "sapiente", + holdId: "aut", }).then((res: VoidHoldResponse) => { if (res.statusCode == 200) { // handle response diff --git a/sdks/typescript/docs/webhooks/README.md b/sdks/typescript/docs/webhooks/README.md index 5387adbb57..844d818833 100755 --- a/sdks/typescript/docs/webhooks/README.md +++ b/sdks/typescript/docs/webhooks/README.md @@ -178,9 +178,6 @@ sdk.webhooks.insertConfig({ endpoint: "https://example.com", eventTypes: [ "TYPE1", - "TYPE1", - "TYPE1", - "TYPE1", ], secret: "V0bivxRWveaoz08afqjU6Ko/jwO0Cb+3", }).then((res: InsertConfigResponse) => { diff --git a/sdks/typescript/files.gen b/sdks/typescript/files.gen index 1867f9e282..acb718c9f8 100755 --- a/sdks/typescript/files.gen +++ b/sdks/typescript/files.gen @@ -73,20 +73,25 @@ src/sdk/models/operations/runworkflow.ts src/sdk/models/operations/sendevent.ts src/sdk/models/operations/connectorsstripetransfer.ts src/sdk/models/operations/connectorstransfer.ts +src/sdk/models/operations/createtransferinitiation.ts +src/sdk/models/operations/deletetransferinitiation.ts src/sdk/models/operations/getaccountbalances.ts src/sdk/models/operations/getconnectortask.ts src/sdk/models/operations/getpayment.ts +src/sdk/models/operations/gettransferinitiation.ts src/sdk/models/operations/installconnector.ts src/sdk/models/operations/listallconnectors.ts src/sdk/models/operations/listconfigsavailableconnectors.ts src/sdk/models/operations/listconnectortasks.ts src/sdk/models/operations/listconnectorstransfers.ts src/sdk/models/operations/listpayments.ts +src/sdk/models/operations/listtransferinitiations.ts src/sdk/models/operations/paymentsgetaccount.ts src/sdk/models/operations/paymentsgetserverinfo.ts src/sdk/models/operations/paymentslistaccounts.ts src/sdk/models/operations/readconnectorconfig.ts src/sdk/models/operations/resetconnector.ts +src/sdk/models/operations/udpatetransferinitiationstatus.ts src/sdk/models/operations/uninstallconnector.ts src/sdk/models/operations/updatemetadata.ts src/sdk/models/operations/search.ts @@ -227,6 +232,9 @@ src/sdk/models/shared/runworkflowresponse.ts src/sdk/models/shared/stripetransferrequest.ts src/sdk/models/shared/transferresponse.ts src/sdk/models/shared/transferrequest.ts +src/sdk/models/shared/transferinitiationresponse.ts +src/sdk/models/shared/transferinitiation.ts +src/sdk/models/shared/transferinitiationrequest.ts src/sdk/models/shared/balancescursor.ts src/sdk/models/shared/accountbalance.ts src/sdk/models/shared/taskresponse.ts @@ -252,10 +260,12 @@ src/sdk/models/shared/connectorsconfigsresponse.ts src/sdk/models/shared/taskscursor.ts src/sdk/models/shared/transfersresponse.ts src/sdk/models/shared/paymentscursor.ts +src/sdk/models/shared/transferinitiationscursor.ts src/sdk/models/shared/paymentsaccountresponse.ts src/sdk/models/shared/paymentsaccount.ts src/sdk/models/shared/accountscursor.ts src/sdk/models/shared/connectorconfigresponse.ts +src/sdk/models/shared/updatetransferinitiationstatusrequest.ts src/sdk/models/shared/response.ts src/sdk/models/shared/query.ts src/sdk/models/shared/walletserrorresponse.ts diff --git a/sdks/typescript/src/sdk/models/operations/createtransferinitiation.ts b/sdks/typescript/src/sdk/models/operations/createtransferinitiation.ts new file mode 100755 index 0000000000..5773a4d00c --- /dev/null +++ b/sdks/typescript/src/sdk/models/operations/createtransferinitiation.ts @@ -0,0 +1,24 @@ +/* + * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + */ + +import { SpeakeasyBase, SpeakeasyMetadata } from "../../../internal/utils"; +import * as shared from "../shared"; +import { AxiosResponse } from "axios"; + +export class CreateTransferInitiationResponse extends SpeakeasyBase { + @SpeakeasyMetadata() + contentType: string; + + @SpeakeasyMetadata() + statusCode: number; + + @SpeakeasyMetadata() + rawResponse?: AxiosResponse; + + /** + * OK + */ + @SpeakeasyMetadata() + transferInitiationResponse?: shared.TransferInitiationResponse; +} diff --git a/sdks/typescript/src/sdk/models/operations/deletetransferinitiation.ts b/sdks/typescript/src/sdk/models/operations/deletetransferinitiation.ts new file mode 100755 index 0000000000..066af304b6 --- /dev/null +++ b/sdks/typescript/src/sdk/models/operations/deletetransferinitiation.ts @@ -0,0 +1,27 @@ +/* + * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + */ + +import { SpeakeasyBase, SpeakeasyMetadata } from "../../../internal/utils"; +import { AxiosResponse } from "axios"; + +export class DeleteTransferInitiationRequest extends SpeakeasyBase { + /** + * The transfer ID. + */ + @SpeakeasyMetadata({ + data: "pathParam, style=simple;explode=false;name=transferId", + }) + transferId: string; +} + +export class DeleteTransferInitiationResponse extends SpeakeasyBase { + @SpeakeasyMetadata() + contentType: string; + + @SpeakeasyMetadata() + statusCode: number; + + @SpeakeasyMetadata() + rawResponse?: AxiosResponse; +} diff --git a/sdks/typescript/src/sdk/models/operations/gettransferinitiation.ts b/sdks/typescript/src/sdk/models/operations/gettransferinitiation.ts new file mode 100755 index 0000000000..0d7f8be856 --- /dev/null +++ b/sdks/typescript/src/sdk/models/operations/gettransferinitiation.ts @@ -0,0 +1,34 @@ +/* + * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + */ + +import { SpeakeasyBase, SpeakeasyMetadata } from "../../../internal/utils"; +import * as shared from "../shared"; +import { AxiosResponse } from "axios"; + +export class GetTransferInitiationRequest extends SpeakeasyBase { + /** + * The transfer ID. + */ + @SpeakeasyMetadata({ + data: "pathParam, style=simple;explode=false;name=transferId", + }) + transferId: string; +} + +export class GetTransferInitiationResponse extends SpeakeasyBase { + @SpeakeasyMetadata() + contentType: string; + + @SpeakeasyMetadata() + statusCode: number; + + @SpeakeasyMetadata() + rawResponse?: AxiosResponse; + + /** + * OK + */ + @SpeakeasyMetadata() + transferInitiationResponse?: shared.TransferInitiationResponse; +} diff --git a/sdks/typescript/src/sdk/models/operations/index.ts b/sdks/typescript/src/sdk/models/operations/index.ts index 1d88480eed..ea5be56a8b 100755 --- a/sdks/typescript/src/sdk/models/operations/index.ts +++ b/sdks/typescript/src/sdk/models/operations/index.ts @@ -19,6 +19,7 @@ export * from "./createclient"; export * from "./createscope"; export * from "./createsecret"; export * from "./createtransaction"; +export * from "./createtransferinitiation"; export * from "./createwallet"; export * from "./createworkflow"; export * from "./creditwallet"; @@ -29,6 +30,7 @@ export * from "./deleteconfig"; export * from "./deletescope"; export * from "./deletescopefromclient"; export * from "./deletesecret"; +export * from "./deletetransferinitiation"; export * from "./deletetransientscope"; export * from "./deleteworkflow"; export * from "./getaccount"; @@ -49,6 +51,7 @@ export * from "./getpayment"; export * from "./getserverinfo"; export * from "./gettransaction"; export * from "./gettransactions"; +export * from "./gettransferinitiation"; export * from "./getversions"; export * from "./getwallet"; export * from "./getwalletsummary"; @@ -67,6 +70,7 @@ export * from "./listlogs"; export * from "./listpayments"; export * from "./listscopes"; export * from "./listtransactions"; +export * from "./listtransferinitiations"; export * from "./listusers"; export * from "./listwallets"; export * from "./listworkflows"; @@ -86,6 +90,7 @@ export * from "./search"; export * from "./searchgetserverinfo"; export * from "./sendevent"; export * from "./testconfig"; +export * from "./udpatetransferinitiationstatus"; export * from "./uninstallconnector"; export * from "./updateclient"; export * from "./updatemetadata"; diff --git a/sdks/typescript/src/sdk/models/operations/listtransferinitiations.ts b/sdks/typescript/src/sdk/models/operations/listtransferinitiations.ts new file mode 100755 index 0000000000..e0ae93f570 --- /dev/null +++ b/sdks/typescript/src/sdk/models/operations/listtransferinitiations.ts @@ -0,0 +1,57 @@ +/* + * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + */ + +import { SpeakeasyBase, SpeakeasyMetadata } from "../../../internal/utils"; +import * as shared from "../shared"; +import { AxiosResponse } from "axios"; + +export class ListTransferInitiationsRequest extends SpeakeasyBase { + /** + * Parameter used in pagination requests. Maximum page size is set to 15. + * + * @remarks + * Set to the value of next for the next page of results. + * Set to the value of previous for the previous page of results. + * No other parameters can be set when this parameter is set. + * + */ + @SpeakeasyMetadata({ + data: "queryParam, style=form;explode=true;name=cursor", + }) + cursor?: string; + + /** + * The maximum number of results to return per page. + * + * @remarks + * + */ + @SpeakeasyMetadata({ + data: "queryParam, style=form;explode=true;name=pageSize", + }) + pageSize?: number; + + /** + * Fields used to sort payments (default is date:desc). + */ + @SpeakeasyMetadata({ data: "queryParam, style=form;explode=true;name=sort" }) + sort?: string[]; +} + +export class ListTransferInitiationsResponse extends SpeakeasyBase { + @SpeakeasyMetadata() + contentType: string; + + @SpeakeasyMetadata() + statusCode: number; + + @SpeakeasyMetadata() + rawResponse?: AxiosResponse; + + /** + * OK + */ + @SpeakeasyMetadata() + transferInitiationsCursor?: shared.TransferInitiationsCursor; +} diff --git a/sdks/typescript/src/sdk/models/operations/udpatetransferinitiationstatus.ts b/sdks/typescript/src/sdk/models/operations/udpatetransferinitiationstatus.ts new file mode 100755 index 0000000000..ab9f57f3ba --- /dev/null +++ b/sdks/typescript/src/sdk/models/operations/udpatetransferinitiationstatus.ts @@ -0,0 +1,31 @@ +/* + * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + */ + +import { SpeakeasyBase, SpeakeasyMetadata } from "../../../internal/utils"; +import * as shared from "../shared"; +import { AxiosResponse } from "axios"; + +export class UdpateTransferInitiationStatusRequest extends SpeakeasyBase { + @SpeakeasyMetadata({ data: "request, media_type=application/json" }) + updateTransferInitiationStatusRequest: shared.UpdateTransferInitiationStatusRequest; + + /** + * The transfer ID. + */ + @SpeakeasyMetadata({ + data: "pathParam, style=simple;explode=false;name=transferId", + }) + transferId: string; +} + +export class UdpateTransferInitiationStatusResponse extends SpeakeasyBase { + @SpeakeasyMetadata() + contentType: string; + + @SpeakeasyMetadata() + statusCode: number; + + @SpeakeasyMetadata() + rawResponse?: AxiosResponse; +} diff --git a/sdks/typescript/src/sdk/models/shared/index.ts b/sdks/typescript/src/sdk/models/shared/index.ts index 54b7e28b56..29855ff349 100755 --- a/sdks/typescript/src/sdk/models/shared/index.ts +++ b/sdks/typescript/src/sdk/models/shared/index.ts @@ -150,6 +150,10 @@ export * from "./taskstripe"; export * from "./taskwise"; export * from "./transaction"; export * from "./transactionscursorresponse"; +export * from "./transferinitiation"; +export * from "./transferinitiationrequest"; +export * from "./transferinitiationresponse"; +export * from "./transferinitiationscursor"; export * from "./transferrequest"; export * from "./transferresponse"; export * from "./transfersresponse"; @@ -157,6 +161,7 @@ export * from "./updateclientrequest"; export * from "./updateclientresponse"; export * from "./updatescoperequest"; export * from "./updatescoperesponse"; +export * from "./updatetransferinitiationstatusrequest"; export * from "./user"; export * from "./version"; export * from "./volume"; diff --git a/sdks/typescript/src/sdk/models/shared/transferinitiation.ts b/sdks/typescript/src/sdk/models/shared/transferinitiation.ts new file mode 100755 index 0000000000..5eee93c4e8 --- /dev/null +++ b/sdks/typescript/src/sdk/models/shared/transferinitiation.ts @@ -0,0 +1,73 @@ +/* + * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + */ + +import { SpeakeasyBase, SpeakeasyMetadata } from "../../../internal/utils"; +import { Connector } from "./connector"; +import { Expose, Transform } from "class-transformer"; + +export enum TransferInitiationStatus { + WaitingForValidation = "WAITING_FOR_VALIDATION", + Processing = "PROCESSING", + Processed = "PROCESSED", + Failed = "FAILED", + Rejected = "REJECTED", + Validated = "VALIDATED", +} + +export enum TransferInitiationType { + Transfer = "TRANSFER", + Payout = "PAYOUT", +} + +export class TransferInitiation extends SpeakeasyBase { + @SpeakeasyMetadata() + @Expose({ name: "amount" }) + amount: number; + + @SpeakeasyMetadata() + @Expose({ name: "asset" }) + asset: string; + + @SpeakeasyMetadata() + @Expose({ name: "createdAt" }) + @Transform(({ value }) => new Date(value), { toClassOnly: true }) + createdAt: Date; + + @SpeakeasyMetadata() + @Expose({ name: "description" }) + description: string; + + @SpeakeasyMetadata() + @Expose({ name: "destinationAccountID" }) + destinationAccountID: string; + + @SpeakeasyMetadata() + @Expose({ name: "error" }) + error: string; + + @SpeakeasyMetadata() + @Expose({ name: "id" }) + id: string; + + @SpeakeasyMetadata() + @Expose({ name: "provider" }) + provider: Connector; + + @SpeakeasyMetadata() + @Expose({ name: "sourceAccountID" }) + sourceAccountID: string; + + @SpeakeasyMetadata() + @Expose({ name: "status" }) + status: TransferInitiationStatus; + + @SpeakeasyMetadata() + @Expose({ name: "type" }) + type: TransferInitiationType; + + @SpeakeasyMetadata() + @Expose({ name: "updatedAt" }) + @Transform(({ value }) => new Date(value), { toClassOnly: true }) + updatedAt: Date; +} diff --git a/sdks/typescript/src/sdk/models/shared/transferinitiationrequest.ts b/sdks/typescript/src/sdk/models/shared/transferinitiationrequest.ts new file mode 100755 index 0000000000..59c6958427 --- /dev/null +++ b/sdks/typescript/src/sdk/models/shared/transferinitiationrequest.ts @@ -0,0 +1,55 @@ +/* + * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + */ + +import { SpeakeasyBase, SpeakeasyMetadata } from "../../../internal/utils"; +import { Connector } from "./connector"; +import { Expose, Transform } from "class-transformer"; + +export enum TransferInitiationRequestType { + Transfer = "TRANSFER", + Payout = "PAYOUT", +} + +export class TransferInitiationRequest extends SpeakeasyBase { + @SpeakeasyMetadata() + @Expose({ name: "amount" }) + amount: number; + + @SpeakeasyMetadata() + @Expose({ name: "asset" }) + asset: string; + + @SpeakeasyMetadata() + @Expose({ name: "createdAt" }) + @Transform(({ value }) => new Date(value), { toClassOnly: true }) + createdAt: Date; + + @SpeakeasyMetadata() + @Expose({ name: "description" }) + description: string; + + @SpeakeasyMetadata() + @Expose({ name: "destinationAccountID" }) + destinationAccountID: string; + + @SpeakeasyMetadata() + @Expose({ name: "provider" }) + provider: Connector; + + @SpeakeasyMetadata() + @Expose({ name: "sourceAccountID" }) + sourceAccountID: string; + + @SpeakeasyMetadata() + @Expose({ name: "type" }) + type: TransferInitiationRequestType; + + @SpeakeasyMetadata() + @Expose({ name: "uniqueRequestID" }) + uniqueRequestID: string; + + @SpeakeasyMetadata() + @Expose({ name: "validated" }) + validated: boolean; +} diff --git a/sdks/typescript/src/sdk/models/shared/transferinitiationresponse.ts b/sdks/typescript/src/sdk/models/shared/transferinitiationresponse.ts new file mode 100755 index 0000000000..2f7b58e5f3 --- /dev/null +++ b/sdks/typescript/src/sdk/models/shared/transferinitiationresponse.ts @@ -0,0 +1,17 @@ +/* + * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + */ + +import { SpeakeasyBase, SpeakeasyMetadata } from "../../../internal/utils"; +import { TransferInitiation } from "./transferinitiation"; +import { Expose, Type } from "class-transformer"; + +/** + * OK + */ +export class TransferInitiationResponse extends SpeakeasyBase { + @SpeakeasyMetadata() + @Expose({ name: "data" }) + @Type(() => TransferInitiation) + data: TransferInitiation; +} diff --git a/sdks/typescript/src/sdk/models/shared/transferinitiationscursor.ts b/sdks/typescript/src/sdk/models/shared/transferinitiationscursor.ts new file mode 100755 index 0000000000..4aa499c1dc --- /dev/null +++ b/sdks/typescript/src/sdk/models/shared/transferinitiationscursor.ts @@ -0,0 +1,40 @@ +/* + * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + */ + +import { SpeakeasyBase, SpeakeasyMetadata } from "../../../internal/utils"; +import { TransferInitiation } from "./transferinitiation"; +import { Expose, Type } from "class-transformer"; + +export class TransferInitiationsCursorCursor extends SpeakeasyBase { + @SpeakeasyMetadata({ elemType: TransferInitiation }) + @Expose({ name: "data" }) + @Type(() => TransferInitiation) + data: TransferInitiation[]; + + @SpeakeasyMetadata() + @Expose({ name: "hasMore" }) + hasMore: boolean; + + @SpeakeasyMetadata() + @Expose({ name: "next" }) + next?: string; + + @SpeakeasyMetadata() + @Expose({ name: "pageSize" }) + pageSize: number; + + @SpeakeasyMetadata() + @Expose({ name: "previous" }) + previous?: string; +} + +/** + * OK + */ +export class TransferInitiationsCursor extends SpeakeasyBase { + @SpeakeasyMetadata() + @Expose({ name: "cursor" }) + @Type(() => TransferInitiationsCursorCursor) + cursor: TransferInitiationsCursorCursor; +} diff --git a/sdks/typescript/src/sdk/models/shared/updatetransferinitiationstatusrequest.ts b/sdks/typescript/src/sdk/models/shared/updatetransferinitiationstatusrequest.ts new file mode 100755 index 0000000000..3a8f0129ab --- /dev/null +++ b/sdks/typescript/src/sdk/models/shared/updatetransferinitiationstatusrequest.ts @@ -0,0 +1,21 @@ +/* + * Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. + */ + +import { SpeakeasyBase, SpeakeasyMetadata } from "../../../internal/utils"; +import { Expose } from "class-transformer"; + +export enum UpdateTransferInitiationStatusRequestStatus { + WaitingForValidation = "WAITING_FOR_VALIDATION", + Processing = "PROCESSING", + Processed = "PROCESSED", + Failed = "FAILED", + Rejected = "REJECTED", + Validated = "VALIDATED", +} + +export class UpdateTransferInitiationStatusRequest extends SpeakeasyBase { + @SpeakeasyMetadata() + @Expose({ name: "status" }) + status: UpdateTransferInitiationStatusRequestStatus; +} diff --git a/sdks/typescript/src/sdk/payments.ts b/sdks/typescript/src/sdk/payments.ts index fe37cd6e0d..7f60837568 100755 --- a/sdks/typescript/src/sdk/payments.ts +++ b/sdks/typescript/src/sdk/payments.ts @@ -185,6 +185,140 @@ export class Payments { return res; } + /** + * Create a TransferInitiation + * + * @remarks + * Create a transfer initiation + */ + async createTransferInitiation( + req: shared.TransferInitiationRequest, + config?: AxiosRequestConfig + ): Promise { + if (!(req instanceof utils.SpeakeasyBase)) { + req = new shared.TransferInitiationRequest(req); + } + + const baseURL: string = this._serverURL; + const url: string = + baseURL.replace(/\/$/, "") + "/api/payments/transfer-initiation"; + + let [reqBodyHeaders, reqBody]: [object, any] = [{}, {}]; + + try { + [reqBodyHeaders, reqBody] = utils.serializeRequestBody( + req, + "request", + "json" + ); + } catch (e: unknown) { + if (e instanceof Error) { + throw new Error(`Error serializing request body, cause: ${e.message}`); + } + } + + const client: AxiosInstance = this._securityClient || this._defaultClient; + + const headers = { ...reqBodyHeaders, ...config?.headers }; + if (reqBody == null || Object.keys(reqBody).length === 0) + throw new Error("request body is required"); + headers["Accept"] = "application/json"; + headers[ + "user-agent" + ] = `speakeasy-sdk/${this._language} ${this._sdkVersion} ${this._genVersion}`; + + const httpRes: AxiosResponse = await client.request({ + validateStatus: () => true, + url: url, + method: "post", + headers: headers, + data: reqBody, + ...config, + }); + + const contentType: string = httpRes?.headers?.["content-type"] ?? ""; + + if (httpRes?.status == null) { + throw new Error(`status code not found in response: ${httpRes}`); + } + + const res: operations.CreateTransferInitiationResponse = + new operations.CreateTransferInitiationResponse({ + statusCode: httpRes.status, + contentType: contentType, + rawResponse: httpRes, + }); + switch (true) { + case httpRes?.status == 200: + if (utils.matchContentType(contentType, `application/json`)) { + res.transferInitiationResponse = utils.objectToClass( + httpRes?.data, + shared.TransferInitiationResponse + ); + } + break; + } + + return res; + } + + /** + * Delete a transfer initiation + * + * @remarks + * Delete a transfer initiation by its id. + */ + async deleteTransferInitiation( + req: operations.DeleteTransferInitiationRequest, + config?: AxiosRequestConfig + ): Promise { + if (!(req instanceof utils.SpeakeasyBase)) { + req = new operations.DeleteTransferInitiationRequest(req); + } + + const baseURL: string = this._serverURL; + const url: string = utils.generateURL( + baseURL, + "/api/payments/transfer-initiation/{transferId}", + req + ); + + const client: AxiosInstance = this._securityClient || this._defaultClient; + + const headers = { ...config?.headers }; + headers["Accept"] = "*/*"; + headers[ + "user-agent" + ] = `speakeasy-sdk/${this._language} ${this._sdkVersion} ${this._genVersion}`; + + const httpRes: AxiosResponse = await client.request({ + validateStatus: () => true, + url: url, + method: "delete", + headers: headers, + ...config, + }); + + const contentType: string = httpRes?.headers?.["content-type"] ?? ""; + + if (httpRes?.status == null) { + throw new Error(`status code not found in response: ${httpRes}`); + } + + const res: operations.DeleteTransferInitiationResponse = + new operations.DeleteTransferInitiationResponse({ + statusCode: httpRes.status, + contentType: contentType, + rawResponse: httpRes, + }); + switch (true) { + case httpRes?.status == 204: + break; + } + + return res; + } + /** * Get account balances */ @@ -369,6 +503,66 @@ export class Payments { return res; } + /** + * Get a transfer initiation + */ + async getTransferInitiation( + req: operations.GetTransferInitiationRequest, + config?: AxiosRequestConfig + ): Promise { + if (!(req instanceof utils.SpeakeasyBase)) { + req = new operations.GetTransferInitiationRequest(req); + } + + const baseURL: string = this._serverURL; + const url: string = utils.generateURL( + baseURL, + "/api/payments/transfer-initiation/{transferId}", + req + ); + + const client: AxiosInstance = this._securityClient || this._defaultClient; + + const headers = { ...config?.headers }; + headers["Accept"] = "application/json"; + headers[ + "user-agent" + ] = `speakeasy-sdk/${this._language} ${this._sdkVersion} ${this._genVersion}`; + + const httpRes: AxiosResponse = await client.request({ + validateStatus: () => true, + url: url, + method: "get", + headers: headers, + ...config, + }); + + const contentType: string = httpRes?.headers?.["content-type"] ?? ""; + + if (httpRes?.status == null) { + throw new Error(`status code not found in response: ${httpRes}`); + } + + const res: operations.GetTransferInitiationResponse = + new operations.GetTransferInitiationResponse({ + statusCode: httpRes.status, + contentType: contentType, + rawResponse: httpRes, + }); + switch (true) { + case httpRes?.status == 200: + if (utils.matchContentType(contentType, `application/json`)) { + res.transferInitiationResponse = utils.objectToClass( + httpRes?.data, + shared.TransferInitiationResponse + ); + } + break; + } + + return res; + } + /** * Install a connector * @@ -736,6 +930,64 @@ export class Payments { return res; } + /** + * List Transfer Initiations + */ + async listTransferInitiations( + req: operations.ListTransferInitiationsRequest, + config?: AxiosRequestConfig + ): Promise { + if (!(req instanceof utils.SpeakeasyBase)) { + req = new operations.ListTransferInitiationsRequest(req); + } + + const baseURL: string = this._serverURL; + const url: string = + baseURL.replace(/\/$/, "") + "/api/payments/transfer-initiation"; + + const client: AxiosInstance = this._securityClient || this._defaultClient; + + const headers = { ...config?.headers }; + const queryParams: string = utils.serializeQueryParams(req); + headers["Accept"] = "application/json"; + headers[ + "user-agent" + ] = `speakeasy-sdk/${this._language} ${this._sdkVersion} ${this._genVersion}`; + + const httpRes: AxiosResponse = await client.request({ + validateStatus: () => true, + url: url + queryParams, + method: "get", + headers: headers, + ...config, + }); + + const contentType: string = httpRes?.headers?.["content-type"] ?? ""; + + if (httpRes?.status == null) { + throw new Error(`status code not found in response: ${httpRes}`); + } + + const res: operations.ListTransferInitiationsResponse = + new operations.ListTransferInitiationsResponse({ + statusCode: httpRes.status, + contentType: contentType, + rawResponse: httpRes, + }); + switch (true) { + case httpRes?.status == 200: + if (utils.matchContentType(contentType, `application/json`)) { + res.transferInitiationsCursor = utils.objectToClass( + httpRes?.data, + shared.TransferInitiationsCursor + ); + } + break; + } + + return res; + } + /** * Get an account */ @@ -1026,6 +1278,80 @@ export class Payments { return res; } + /** + * Update the status of a transfer initiation + * + * @remarks + * Update a transfer initiation status + */ + async udpateTransferInitiationStatus( + req: operations.UdpateTransferInitiationStatusRequest, + config?: AxiosRequestConfig + ): Promise { + if (!(req instanceof utils.SpeakeasyBase)) { + req = new operations.UdpateTransferInitiationStatusRequest(req); + } + + const baseURL: string = this._serverURL; + const url: string = utils.generateURL( + baseURL, + "/api/payments/transfer-initiation/{transferId}/status", + req + ); + + let [reqBodyHeaders, reqBody]: [object, any] = [{}, {}]; + + try { + [reqBodyHeaders, reqBody] = utils.serializeRequestBody( + req, + "updateTransferInitiationStatusRequest", + "json" + ); + } catch (e: unknown) { + if (e instanceof Error) { + throw new Error(`Error serializing request body, cause: ${e.message}`); + } + } + + const client: AxiosInstance = this._securityClient || this._defaultClient; + + const headers = { ...reqBodyHeaders, ...config?.headers }; + if (reqBody == null || Object.keys(reqBody).length === 0) + throw new Error("request body is required"); + headers["Accept"] = "*/*"; + headers[ + "user-agent" + ] = `speakeasy-sdk/${this._language} ${this._sdkVersion} ${this._genVersion}`; + + const httpRes: AxiosResponse = await client.request({ + validateStatus: () => true, + url: url, + method: "post", + headers: headers, + data: reqBody, + ...config, + }); + + const contentType: string = httpRes?.headers?.["content-type"] ?? ""; + + if (httpRes?.status == null) { + throw new Error(`status code not found in response: ${httpRes}`); + } + + const res: operations.UdpateTransferInitiationStatusResponse = + new operations.UdpateTransferInitiationStatusResponse({ + statusCode: httpRes.status, + contentType: contentType, + rawResponse: httpRes, + }); + switch (true) { + case httpRes?.status == 204: + break; + } + + return res; + } + /** * Uninstall a connector *