diff --git a/src/main/java/co/dfns/sdk/allocations/AllocationsAsyncClient.java b/src/main/java/co/dfns/sdk/allocations/AllocationsAsyncClient.java index db58376..1746647 100644 --- a/src/main/java/co/dfns/sdk/allocations/AllocationsAsyncClient.java +++ b/src/main/java/co/dfns/sdk/allocations/AllocationsAsyncClient.java @@ -4,7 +4,6 @@ import co.dfns.sdk.allocations.model.*; import java.util.List; import co.dfns.sdk.PaginatedList; -import java.util.Map; import java.util.concurrent.CompletableFuture; public class AllocationsAsyncClient { @@ -30,7 +29,7 @@ public CompletableFuture> listAllocationActions( } /** Create Allocation Action */ - public CompletableFuture createAllocationAction(String allocationId, CreateAllocationActionRequest body) { + public CompletableFuture createAllocationAction(String allocationId, Object body) { return httpClient.postAsync("/allocations/" + allocationId + "/actions", java.util.Map.of(), body, Allocation.class, true); } diff --git a/src/main/java/co/dfns/sdk/allocations/AllocationsClient.java b/src/main/java/co/dfns/sdk/allocations/AllocationsClient.java index 9fc945e..30daf60 100644 --- a/src/main/java/co/dfns/sdk/allocations/AllocationsClient.java +++ b/src/main/java/co/dfns/sdk/allocations/AllocationsClient.java @@ -4,7 +4,6 @@ import co.dfns.sdk.allocations.model.*; import java.util.List; import co.dfns.sdk.PaginatedList; -import java.util.Map; public class AllocationsClient { private final DfnsHttpClient httpClient; @@ -29,7 +28,7 @@ public PaginatedList listAllocationActions(String allocationId } /** Create Allocation Action */ - public Allocation createAllocationAction(String allocationId, CreateAllocationActionRequest body) { + public Allocation createAllocationAction(String allocationId, Object body) { return httpClient.post("/allocations/" + allocationId + "/actions", java.util.Map.of(), body, Allocation.class, true); } diff --git a/src/main/java/co/dfns/sdk/allocations/model/Allocation.java b/src/main/java/co/dfns/sdk/allocations/model/Allocation.java index e5ed463..39fb7ec 100644 --- a/src/main/java/co/dfns/sdk/allocations/model/Allocation.java +++ b/src/main/java/co/dfns/sdk/allocations/model/Allocation.java @@ -2,12 +2,15 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonInclude; @JsonIgnoreProperties(ignoreUnknown = true) public record Allocation( @JsonProperty("id") String id, @JsonProperty("walletId") String walletId, @JsonProperty("protocol") String protocol, + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("provider") String provider, @JsonProperty("amount") Object amount, @JsonProperty("rewards") Object rewards, @JsonProperty("dateCreated") String dateCreated diff --git a/src/main/java/co/dfns/sdk/auth/AuthAsyncClient.java b/src/main/java/co/dfns/sdk/auth/AuthAsyncClient.java index 3890437..bb1bcc0 100644 --- a/src/main/java/co/dfns/sdk/auth/AuthAsyncClient.java +++ b/src/main/java/co/dfns/sdk/auth/AuthAsyncClient.java @@ -66,6 +66,12 @@ public CompletableFuture activateCredential(Activate return httpClient.putAsync("/auth/credentials/activate", java.util.Map.of(), body, ActivateCredentialResponse.class, true); } + /** Delete Credential */ + @SuppressWarnings("unchecked") + public CompletableFuture> deleteCredential(String credentialUuid) { + return httpClient.deleteAsync("/auth/credentials/" + credentialUuid, java.util.Map.of(), null, (Class>) (Class) Map.class, true); + } + /** Deactivate Credential */ public CompletableFuture deactivateCredential(DeactivateCredentialRequest body) { return httpClient.putAsync("/auth/credentials/deactivate", java.util.Map.of(), body, DeactivateCredentialResponse.class, true); @@ -126,6 +132,11 @@ public CompletableFuture initiateSsoLogin(InitiateSsoL return httpClient.postAsync("/auth/login/sso/init", java.util.Map.of(), body, InitiateSsoLoginResponse.class, false); } + /** Exchange Access Token */ + public CompletableFuture exchangeAccessToken(ExchangeAccessTokenRequest body) { + return httpClient.postAsync("/auth/tokens", java.util.Map.of(), body, ExchangeAccessTokenResponse.class, false); + } + /** List Personal Access Tokens */ public CompletableFuture listPersonalAccessTokens() { return httpClient.getAsync("/auth/pats", java.util.Map.of(), ListPersonalAccessTokensResponse.class); @@ -232,8 +243,8 @@ public CompletableFuture updateServiceAccount(Stri } /** Delete Service Account */ - public CompletableFuture deleteServiceAccount(String serviceAccountId) { - return httpClient.deleteAsync("/auth/service-accounts/" + serviceAccountId, java.util.Map.of(), null, DeleteServiceAccountResponse.class, true); + public CompletableFuture deleteServiceAccount(String serviceAccountId, DeleteServiceAccountQuery query) { + return httpClient.deleteAsync("/auth/service-accounts/" + serviceAccountId, query.toMap(), null, DeleteServiceAccountResponse.class, true); } /** Activate Service Account */ @@ -242,8 +253,8 @@ public CompletableFuture activateServiceAccount( } /** Deactivate Service Account */ - public CompletableFuture deactivateServiceAccount(String serviceAccountId) { - return httpClient.putAsync("/auth/service-accounts/" + serviceAccountId + "/deactivate", java.util.Map.of(), null, DeactivateServiceAccountResponse.class, true); + public CompletableFuture deactivateServiceAccount(String serviceAccountId, DeactivateServiceAccountRequest body) { + return httpClient.putAsync("/auth/service-accounts/" + serviceAccountId + "/deactivate", java.util.Map.of(), body, DeactivateServiceAccountResponse.class, true); } /** Activate User */ @@ -280,4 +291,10 @@ public CompletableFuture> listUsers(ListUsersQuery query) { public CompletableFuture createUser(CreateUserRequest body) { return httpClient.postAsync("/auth/users", java.util.Map.of(), body, User.class, true); } + + /** Invite Tenant User */ + @SuppressWarnings("unchecked") + public CompletableFuture> inviteTenantUser(InviteTenantUserRequest body) { + return httpClient.postAsync("/auth/users/invite", java.util.Map.of(), body, (Class>) (Class) Map.class, true); + } } diff --git a/src/main/java/co/dfns/sdk/auth/AuthClient.java b/src/main/java/co/dfns/sdk/auth/AuthClient.java index 8b92319..e3037cc 100644 --- a/src/main/java/co/dfns/sdk/auth/AuthClient.java +++ b/src/main/java/co/dfns/sdk/auth/AuthClient.java @@ -65,6 +65,12 @@ public ActivateCredentialResponse activateCredential(ActivateCredentialRequest b return httpClient.put("/auth/credentials/activate", java.util.Map.of(), body, ActivateCredentialResponse.class, true); } + /** Delete Credential */ + @SuppressWarnings("unchecked") + public Map deleteCredential(String credentialUuid) { + return httpClient.delete("/auth/credentials/" + credentialUuid, java.util.Map.of(), null, (Class>) (Class) Map.class, true); + } + /** Deactivate Credential */ public DeactivateCredentialResponse deactivateCredential(DeactivateCredentialRequest body) { return httpClient.put("/auth/credentials/deactivate", java.util.Map.of(), body, DeactivateCredentialResponse.class, true); @@ -125,6 +131,11 @@ public InitiateSsoLoginResponse initiateSsoLogin(InitiateSsoLoginRequest body) { return httpClient.post("/auth/login/sso/init", java.util.Map.of(), body, InitiateSsoLoginResponse.class, false); } + /** Exchange Access Token */ + public ExchangeAccessTokenResponse exchangeAccessToken(ExchangeAccessTokenRequest body) { + return httpClient.post("/auth/tokens", java.util.Map.of(), body, ExchangeAccessTokenResponse.class, false); + } + /** List Personal Access Tokens */ public ListPersonalAccessTokensResponse listPersonalAccessTokens() { return httpClient.get("/auth/pats", java.util.Map.of(), ListPersonalAccessTokensResponse.class); @@ -231,8 +242,8 @@ public UpdateServiceAccountResponse updateServiceAccount(String serviceAccountId } /** Delete Service Account */ - public DeleteServiceAccountResponse deleteServiceAccount(String serviceAccountId) { - return httpClient.delete("/auth/service-accounts/" + serviceAccountId, java.util.Map.of(), null, DeleteServiceAccountResponse.class, true); + public DeleteServiceAccountResponse deleteServiceAccount(String serviceAccountId, DeleteServiceAccountQuery query) { + return httpClient.delete("/auth/service-accounts/" + serviceAccountId, query.toMap(), null, DeleteServiceAccountResponse.class, true); } /** Activate Service Account */ @@ -241,8 +252,8 @@ public ActivateServiceAccountResponse activateServiceAccount(String serviceAccou } /** Deactivate Service Account */ - public DeactivateServiceAccountResponse deactivateServiceAccount(String serviceAccountId) { - return httpClient.put("/auth/service-accounts/" + serviceAccountId + "/deactivate", java.util.Map.of(), null, DeactivateServiceAccountResponse.class, true); + public DeactivateServiceAccountResponse deactivateServiceAccount(String serviceAccountId, DeactivateServiceAccountRequest body) { + return httpClient.put("/auth/service-accounts/" + serviceAccountId + "/deactivate", java.util.Map.of(), body, DeactivateServiceAccountResponse.class, true); } /** Activate User */ @@ -279,4 +290,10 @@ public PaginatedList listUsers(ListUsersQuery query) { public User createUser(CreateUserRequest body) { return httpClient.post("/auth/users", java.util.Map.of(), body, User.class, true); } + + /** Invite Tenant User */ + @SuppressWarnings("unchecked") + public Map inviteTenantUser(InviteTenantUserRequest body) { + return httpClient.post("/auth/users/invite", java.util.Map.of(), body, (Class>) (Class) Map.class, true); + } } diff --git a/src/main/java/co/dfns/sdk/auth/model/CreateLoginChallengeRequest.java b/src/main/java/co/dfns/sdk/auth/model/CreateLoginChallengeRequest.java index 31f5e61..3b50f61 100644 --- a/src/main/java/co/dfns/sdk/auth/model/CreateLoginChallengeRequest.java +++ b/src/main/java/co/dfns/sdk/auth/model/CreateLoginChallengeRequest.java @@ -8,7 +8,10 @@ public record CreateLoginChallengeRequest( @JsonInclude(JsonInclude.Include.NON_NULL) @JsonProperty("username") String username, + @JsonInclude(JsonInclude.Include.NON_NULL) @JsonProperty("orgId") String orgId, @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("tenantId") String tenantId, + @JsonInclude(JsonInclude.Include.NON_NULL) @JsonProperty("loginCode") String loginCode ) {} diff --git a/src/main/java/co/dfns/sdk/auth/model/CreateRecoveryChallengeRequest.java b/src/main/java/co/dfns/sdk/auth/model/CreateRecoveryChallengeRequest.java index f497b4a..236bff3 100644 --- a/src/main/java/co/dfns/sdk/auth/model/CreateRecoveryChallengeRequest.java +++ b/src/main/java/co/dfns/sdk/auth/model/CreateRecoveryChallengeRequest.java @@ -2,11 +2,15 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonInclude; @JsonIgnoreProperties(ignoreUnknown = true) public record CreateRecoveryChallengeRequest( @JsonProperty("username") String username, @JsonProperty("verificationCode") String verificationCode, + @JsonInclude(JsonInclude.Include.NON_NULL) @JsonProperty("orgId") String orgId, + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("tenantId") String tenantId, @JsonProperty("credentialId") String credentialId ) {} diff --git a/src/main/java/co/dfns/sdk/auth/model/CreateRegistrationChallengeRequest.java b/src/main/java/co/dfns/sdk/auth/model/CreateRegistrationChallengeRequest.java index a0c0a25..0a00eb5 100644 --- a/src/main/java/co/dfns/sdk/auth/model/CreateRegistrationChallengeRequest.java +++ b/src/main/java/co/dfns/sdk/auth/model/CreateRegistrationChallengeRequest.java @@ -2,10 +2,14 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonInclude; @JsonIgnoreProperties(ignoreUnknown = true) public record CreateRegistrationChallengeRequest( + @JsonInclude(JsonInclude.Include.NON_NULL) @JsonProperty("orgId") String orgId, + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("tenantId") String tenantId, @JsonProperty("username") String username, @JsonProperty("registrationCode") String registrationCode ) {} diff --git a/src/main/java/co/dfns/sdk/auth/model/DeactivateServiceAccountRequest.java b/src/main/java/co/dfns/sdk/auth/model/DeactivateServiceAccountRequest.java new file mode 100644 index 0000000..f48f481 --- /dev/null +++ b/src/main/java/co/dfns/sdk/auth/model/DeactivateServiceAccountRequest.java @@ -0,0 +1,11 @@ +package co.dfns.sdk.auth.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonInclude; + +@JsonIgnoreProperties(ignoreUnknown = true) +public record DeactivateServiceAccountRequest( + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("force") Boolean force +) {} diff --git a/src/main/java/co/dfns/sdk/auth/model/DeleteServiceAccountQuery.java b/src/main/java/co/dfns/sdk/auth/model/DeleteServiceAccountQuery.java new file mode 100644 index 0000000..83096da --- /dev/null +++ b/src/main/java/co/dfns/sdk/auth/model/DeleteServiceAccountQuery.java @@ -0,0 +1,19 @@ +package co.dfns.sdk.auth.model; + +import java.util.HashMap; +import java.util.Map; + +public class DeleteServiceAccountQuery { + private Object force; + + public DeleteServiceAccountQuery force(Object force) { + this.force = force; + return this; + } + + public Map toMap() { + Map map = new HashMap<>(); + if (force != null) map.put("force", String.valueOf(force)); + return map; + } +} diff --git a/src/main/java/co/dfns/sdk/auth/model/ExchangeAccessTokenRequest.java b/src/main/java/co/dfns/sdk/auth/model/ExchangeAccessTokenRequest.java new file mode 100644 index 0000000..629bbf2 --- /dev/null +++ b/src/main/java/co/dfns/sdk/auth/model/ExchangeAccessTokenRequest.java @@ -0,0 +1,9 @@ +package co.dfns.sdk.auth.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public record ExchangeAccessTokenRequest( + @JsonProperty("target") String target +) {} diff --git a/src/main/java/co/dfns/sdk/auth/model/ExchangeAccessTokenResponse.java b/src/main/java/co/dfns/sdk/auth/model/ExchangeAccessTokenResponse.java new file mode 100644 index 0000000..d744689 --- /dev/null +++ b/src/main/java/co/dfns/sdk/auth/model/ExchangeAccessTokenResponse.java @@ -0,0 +1,9 @@ +package co.dfns.sdk.auth.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public record ExchangeAccessTokenResponse( + @JsonProperty("token") String token +) {} diff --git a/src/main/java/co/dfns/sdk/auth/model/FirstFactorAttestation.java b/src/main/java/co/dfns/sdk/auth/model/FirstFactorAttestation.java index c64cfb4..c6bf1e1 100644 --- a/src/main/java/co/dfns/sdk/auth/model/FirstFactorAttestation.java +++ b/src/main/java/co/dfns/sdk/auth/model/FirstFactorAttestation.java @@ -2,7 +2,13 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonInclude; +import java.util.Map; @JsonIgnoreProperties(ignoreUnknown = true) public record FirstFactorAttestation( + @JsonProperty("credentialKind") String credentialKind, + @JsonProperty("credentialInfo") Map credentialInfo, + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("credentialName") String credentialName ) {} diff --git a/src/main/java/co/dfns/sdk/auth/model/InviteTenantUserRequest.java b/src/main/java/co/dfns/sdk/auth/model/InviteTenantUserRequest.java new file mode 100644 index 0000000..611c94d --- /dev/null +++ b/src/main/java/co/dfns/sdk/auth/model/InviteTenantUserRequest.java @@ -0,0 +1,10 @@ +package co.dfns.sdk.auth.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public record InviteTenantUserRequest( + @JsonProperty("email") String email, + @JsonProperty("kind") String kind +) {} diff --git a/src/main/java/co/dfns/sdk/auth/model/Network.java b/src/main/java/co/dfns/sdk/auth/model/Network.java index bb76b0c..313f316 100644 --- a/src/main/java/co/dfns/sdk/auth/model/Network.java +++ b/src/main/java/co/dfns/sdk/auth/model/Network.java @@ -21,7 +21,7 @@ public enum Network { BerachainBepolia("BerachainBepolia"), Bitcoin("Bitcoin"), BitcoinSignet("BitcoinSignet"), - BitcoinTestnet3("BitcoinTestnet3"), + BitcoinTestnet4("BitcoinTestnet4"), BitcoinCash("BitcoinCash"), Bob("Bob"), BobSepolia("BobSepolia"), @@ -45,10 +45,7 @@ public enum Network { EthereumClassic("EthereumClassic"), EthereumClassicMordor("EthereumClassicMordor"), EthereumSepolia("EthereumSepolia"), - EthereumHolesky("EthereumHolesky"), EthereumHoodi("EthereumHoodi"), - FantomOpera("FantomOpera"), - FantomTestnet("FantomTestnet"), FlareC("FlareC"), FlareCCoston2("FlareCCoston2"), FlowEvm("FlowEvm"), @@ -62,11 +59,12 @@ public enum Network { IonTestnet("IonTestnet"), Iota("Iota"), IotaTestnet("IotaTestnet"), - Kaspa("Kaspa"), Kusama("Kusama"), KusamaAssetHub("KusamaAssetHub"), Litecoin("Litecoin"), LitecoinTestnet("LitecoinTestnet"), + Movement("Movement"), + MovementTestnet("MovementTestnet"), Near("Near"), NearTestnet("NearTestnet"), Optimism("Optimism"), @@ -90,6 +88,8 @@ public enum Network { SeiPacific1("SeiPacific1"), Solana("Solana"), SolanaDevnet("SolanaDevnet"), + Sonic("Sonic"), + SonicTestnet("SonicTestnet"), Starknet("Starknet"), StarknetSepolia("StarknetSepolia"), Stellar("Stellar"), @@ -98,6 +98,7 @@ public enum Network { SuiTestnet("SuiTestnet"), Tezos("Tezos"), TezosGhostnet("TezosGhostnet"), + TezosShadownet("TezosShadownet"), Tempo("Tempo"), TempoModerato("TempoModerato"), Tsc("Tsc"), @@ -108,6 +109,10 @@ public enum Network { TronNile("TronNile"), Westend("Westend"), WestendAssetHub("WestendAssetHub"), + Xdc("Xdc"), + XdcApothem("XdcApothem"), + XLayer("XLayer"), + XLayerSepolia("XLayerSepolia"), XrpLedger("XrpLedger"), XrpLedgerTestnet("XrpLedgerTestnet"), UNKNOWN(null); diff --git a/src/main/java/co/dfns/sdk/auth/model/RecoveryKeyAttestation.java b/src/main/java/co/dfns/sdk/auth/model/RecoveryKeyAttestation.java index dd191fd..deb9c4b 100644 --- a/src/main/java/co/dfns/sdk/auth/model/RecoveryKeyAttestation.java +++ b/src/main/java/co/dfns/sdk/auth/model/RecoveryKeyAttestation.java @@ -11,6 +11,6 @@ public record RecoveryKeyAttestation( @JsonProperty("credentialInfo") Map credentialInfo, @JsonInclude(JsonInclude.Include.NON_NULL) @JsonProperty("encryptedPrivateKey") String encryptedPrivateKey, - @JsonProperty("credentialName") String credentialName, - @JsonProperty("challengeIdentifier") String challengeIdentifier + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("credentialName") String credentialName ) {} diff --git a/src/main/java/co/dfns/sdk/auth/model/ResendRegistrationCodeRequest.java b/src/main/java/co/dfns/sdk/auth/model/ResendRegistrationCodeRequest.java index f1ae3b7..918bed4 100644 --- a/src/main/java/co/dfns/sdk/auth/model/ResendRegistrationCodeRequest.java +++ b/src/main/java/co/dfns/sdk/auth/model/ResendRegistrationCodeRequest.java @@ -2,9 +2,13 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonInclude; @JsonIgnoreProperties(ignoreUnknown = true) public record ResendRegistrationCodeRequest( @JsonProperty("username") String username, - @JsonProperty("orgId") String orgId + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("orgId") String orgId, + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("tenantId") String tenantId ) {} diff --git a/src/main/java/co/dfns/sdk/auth/model/SecondFactorAttestation.java b/src/main/java/co/dfns/sdk/auth/model/SecondFactorAttestation.java index 8676462..8437021 100644 --- a/src/main/java/co/dfns/sdk/auth/model/SecondFactorAttestation.java +++ b/src/main/java/co/dfns/sdk/auth/model/SecondFactorAttestation.java @@ -2,7 +2,13 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonInclude; +import java.util.Map; @JsonIgnoreProperties(ignoreUnknown = true) public record SecondFactorAttestation( + @JsonProperty("credentialKind") String credentialKind, + @JsonProperty("credentialInfo") Map credentialInfo, + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("credentialName") String credentialName ) {} diff --git a/src/main/java/co/dfns/sdk/auth/model/SendLoginCodeRequest.java b/src/main/java/co/dfns/sdk/auth/model/SendLoginCodeRequest.java index 9ea997c..5a55132 100644 --- a/src/main/java/co/dfns/sdk/auth/model/SendLoginCodeRequest.java +++ b/src/main/java/co/dfns/sdk/auth/model/SendLoginCodeRequest.java @@ -2,9 +2,13 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonInclude; @JsonIgnoreProperties(ignoreUnknown = true) public record SendLoginCodeRequest( @JsonProperty("username") String username, - @JsonProperty("orgId") String orgId + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("orgId") String orgId, + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("tenantId") String tenantId ) {} diff --git a/src/main/java/co/dfns/sdk/auth/model/SendRecoveryCodeEmailRequest.java b/src/main/java/co/dfns/sdk/auth/model/SendRecoveryCodeEmailRequest.java index 72776eb..2cc5a95 100644 --- a/src/main/java/co/dfns/sdk/auth/model/SendRecoveryCodeEmailRequest.java +++ b/src/main/java/co/dfns/sdk/auth/model/SendRecoveryCodeEmailRequest.java @@ -2,9 +2,13 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonInclude; @JsonIgnoreProperties(ignoreUnknown = true) public record SendRecoveryCodeEmailRequest( @JsonProperty("username") String username, - @JsonProperty("orgId") String orgId + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("orgId") String orgId, + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("tenantId") String tenantId ) {} diff --git a/src/main/java/co/dfns/sdk/auth/model/User.java b/src/main/java/co/dfns/sdk/auth/model/User.java index 3e51985..eec7729 100644 --- a/src/main/java/co/dfns/sdk/auth/model/User.java +++ b/src/main/java/co/dfns/sdk/auth/model/User.java @@ -13,8 +13,11 @@ public record User( @JsonProperty("userId") String userId, @JsonProperty("kind") String kind, @JsonProperty("credentialUuid") String credentialUuid, + @JsonInclude(JsonInclude.Include.NON_NULL) @JsonProperty("orgId") String orgId, @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("tenantId") String tenantId, + @JsonInclude(JsonInclude.Include.NON_NULL) @JsonProperty("permissions") List permissions, @JsonProperty("isActive") Boolean isActive, @JsonProperty("isServiceAccount") Boolean isServiceAccount, diff --git a/src/main/java/co/dfns/sdk/feesponsors/model/Network.java b/src/main/java/co/dfns/sdk/feesponsors/model/Network.java index c6d9b14..0f40429 100644 --- a/src/main/java/co/dfns/sdk/feesponsors/model/Network.java +++ b/src/main/java/co/dfns/sdk/feesponsors/model/Network.java @@ -21,7 +21,7 @@ public enum Network { BerachainBepolia("BerachainBepolia"), Bitcoin("Bitcoin"), BitcoinSignet("BitcoinSignet"), - BitcoinTestnet3("BitcoinTestnet3"), + BitcoinTestnet4("BitcoinTestnet4"), BitcoinCash("BitcoinCash"), Bob("Bob"), BobSepolia("BobSepolia"), @@ -45,10 +45,7 @@ public enum Network { EthereumClassic("EthereumClassic"), EthereumClassicMordor("EthereumClassicMordor"), EthereumSepolia("EthereumSepolia"), - EthereumHolesky("EthereumHolesky"), EthereumHoodi("EthereumHoodi"), - FantomOpera("FantomOpera"), - FantomTestnet("FantomTestnet"), FlareC("FlareC"), FlareCCoston2("FlareCCoston2"), FlowEvm("FlowEvm"), @@ -62,11 +59,12 @@ public enum Network { IonTestnet("IonTestnet"), Iota("Iota"), IotaTestnet("IotaTestnet"), - Kaspa("Kaspa"), Kusama("Kusama"), KusamaAssetHub("KusamaAssetHub"), Litecoin("Litecoin"), LitecoinTestnet("LitecoinTestnet"), + Movement("Movement"), + MovementTestnet("MovementTestnet"), Near("Near"), NearTestnet("NearTestnet"), Optimism("Optimism"), @@ -90,6 +88,8 @@ public enum Network { SeiPacific1("SeiPacific1"), Solana("Solana"), SolanaDevnet("SolanaDevnet"), + Sonic("Sonic"), + SonicTestnet("SonicTestnet"), Starknet("Starknet"), StarknetSepolia("StarknetSepolia"), Stellar("Stellar"), @@ -98,6 +98,7 @@ public enum Network { SuiTestnet("SuiTestnet"), Tezos("Tezos"), TezosGhostnet("TezosGhostnet"), + TezosShadownet("TezosShadownet"), Tempo("Tempo"), TempoModerato("TempoModerato"), Tsc("Tsc"), @@ -108,6 +109,10 @@ public enum Network { TronNile("TronNile"), Westend("Westend"), WestendAssetHub("WestendAssetHub"), + Xdc("Xdc"), + XdcApothem("XdcApothem"), + XLayer("XLayer"), + XLayerSepolia("XLayerSepolia"), XrpLedger("XrpLedger"), XrpLedgerTestnet("XrpLedgerTestnet"), UNKNOWN(null); diff --git a/src/main/java/co/dfns/sdk/internal/DfnsHttpClient.java b/src/main/java/co/dfns/sdk/internal/DfnsHttpClient.java index 5f1bb6b..166c856 100644 --- a/src/main/java/co/dfns/sdk/internal/DfnsHttpClient.java +++ b/src/main/java/co/dfns/sdk/internal/DfnsHttpClient.java @@ -245,6 +245,97 @@ private HttpRequest buildRequest(String method, String path, Map } } + @SuppressWarnings("unchecked") + public T postMultipart(String path, Map query, Object body, byte[] file, Class responseType, boolean requiresUserAction) { + try { + Map data = body != null + ? mapper.convertValue(body, Map.class) + : new java.util.LinkedHashMap<>(); + data.put("fileChecksum", sha256Hex(file)); + String dataJson = mapper.writeValueAsString(data); + + String userAction = null; + if (requiresUserAction && config.getSigner() != null) { + userAction = obtainUserActionToken("POST", path, data); + } + return execute(buildMultipartRequest("POST", path, query, dataJson, file, userAction), responseType); + } catch (DfnsException e) { + throw e; + } catch (Exception e) { + throw new DfnsException("Failed to perform multipart upload: " + e.getMessage(), e); + } + } + + @SuppressWarnings("unchecked") + public CompletableFuture postMultipartAsync(String path, Map query, Object body, byte[] file, Class responseType, boolean requiresUserAction) { + try { + Map data = body != null + ? mapper.convertValue(body, Map.class) + : new java.util.LinkedHashMap<>(); + data.put("fileChecksum", sha256Hex(file)); + String dataJson = mapper.writeValueAsString(data); + + if (requiresUserAction && config.getSigner() != null) { + return obtainUserActionTokenAsync("POST", path, data) + .thenCompose(userAction -> executeAsync(buildMultipartRequest("POST", path, query, dataJson, file, userAction), responseType)); + } + return executeAsync(buildMultipartRequest("POST", path, query, dataJson, file, null), responseType); + } catch (Exception e) { + return CompletableFuture.failedFuture(new DfnsException("Failed to perform multipart upload: " + e.getMessage(), e)); + } + } + + private HttpRequest buildMultipartRequest(String method, String path, Map query, String dataJson, byte[] file, String userAction) { + try { + String url = config.getBaseUrl() + path; + if (!query.isEmpty()) { + String qs = query.entrySet().stream() + .map(e -> java.net.URLEncoder.encode(e.getKey(), java.nio.charset.StandardCharsets.UTF_8) + "=" + java.net.URLEncoder.encode(e.getValue(), java.nio.charset.StandardCharsets.UTF_8)) + .reduce("", (a, b) -> a.isEmpty() ? b : a + "&" + b); + url += "?" + qs; + } + + String boundary = "DfnsBoundary" + Long.toHexString(System.nanoTime()); + String crlf = "\r\n"; + java.nio.charset.Charset utf8 = java.nio.charset.StandardCharsets.UTF_8; + java.util.List parts = new java.util.ArrayList<>(); + parts.add(("--" + boundary + crlf + + "Content-Disposition: form-data; name=\"data\"" + crlf + crlf + + dataJson + crlf).getBytes(utf8)); + parts.add(("--" + boundary + crlf + + "Content-Disposition: form-data; name=\"file\"; filename=\"upload.bin\"" + crlf + + "Content-Type: application/octet-stream" + crlf + crlf).getBytes(utf8)); + parts.add(file); + parts.add((crlf + "--" + boundary + "--" + crlf).getBytes(utf8)); + + HttpRequest.Builder req = HttpRequest.newBuilder() + .uri(URI.create(url)) + .method(method, HttpRequest.BodyPublishers.ofByteArrays(parts)) + .header("Content-Type", "multipart/form-data; boundary=" + boundary) + .header(DFNS_AUTH_TOKEN_HEADER, "Bearer " + config.getAuthToken()) + .timeout(config.getRequestTimeout()); + + if (userAction != null) req.header(DFNS_USER_ACTION_HEADER, userAction); + + return req.build(); + } catch (Exception e) { + throw new DfnsException("Failed to build multipart request: " + e.getMessage(), e); + } + } + + private static String sha256Hex(byte[] bytes) { + try { + byte[] digest = java.security.MessageDigest.getInstance("SHA-256").digest(bytes); + StringBuilder sb = new StringBuilder(digest.length * 2); + for (byte b : digest) { + sb.append(Character.forDigit((b >> 4) & 0xF, 16)).append(Character.forDigit(b & 0xF, 16)); + } + return sb.toString(); + } catch (java.security.NoSuchAlgorithmException e) { + throw new DfnsException("SHA-256 not available: " + e.getMessage(), e); + } + } + private T execute(HttpRequest request, Class responseType) { try { HttpResponse response = http.send(request, HttpResponse.BodyHandlers.ofString()); diff --git a/src/main/java/co/dfns/sdk/keys/model/Network.java b/src/main/java/co/dfns/sdk/keys/model/Network.java index 6b91d5c..c66ea8e 100644 --- a/src/main/java/co/dfns/sdk/keys/model/Network.java +++ b/src/main/java/co/dfns/sdk/keys/model/Network.java @@ -21,7 +21,7 @@ public enum Network { BerachainBepolia("BerachainBepolia"), Bitcoin("Bitcoin"), BitcoinSignet("BitcoinSignet"), - BitcoinTestnet3("BitcoinTestnet3"), + BitcoinTestnet4("BitcoinTestnet4"), BitcoinCash("BitcoinCash"), Bob("Bob"), BobSepolia("BobSepolia"), @@ -45,10 +45,7 @@ public enum Network { EthereumClassic("EthereumClassic"), EthereumClassicMordor("EthereumClassicMordor"), EthereumSepolia("EthereumSepolia"), - EthereumHolesky("EthereumHolesky"), EthereumHoodi("EthereumHoodi"), - FantomOpera("FantomOpera"), - FantomTestnet("FantomTestnet"), FlareC("FlareC"), FlareCCoston2("FlareCCoston2"), FlowEvm("FlowEvm"), @@ -62,11 +59,12 @@ public enum Network { IonTestnet("IonTestnet"), Iota("Iota"), IotaTestnet("IotaTestnet"), - Kaspa("Kaspa"), Kusama("Kusama"), KusamaAssetHub("KusamaAssetHub"), Litecoin("Litecoin"), LitecoinTestnet("LitecoinTestnet"), + Movement("Movement"), + MovementTestnet("MovementTestnet"), Near("Near"), NearTestnet("NearTestnet"), Optimism("Optimism"), @@ -90,6 +88,8 @@ public enum Network { SeiPacific1("SeiPacific1"), Solana("Solana"), SolanaDevnet("SolanaDevnet"), + Sonic("Sonic"), + SonicTestnet("SonicTestnet"), Starknet("Starknet"), StarknetSepolia("StarknetSepolia"), Stellar("Stellar"), @@ -98,6 +98,7 @@ public enum Network { SuiTestnet("SuiTestnet"), Tezos("Tezos"), TezosGhostnet("TezosGhostnet"), + TezosShadownet("TezosShadownet"), Tempo("Tempo"), TempoModerato("TempoModerato"), Tsc("Tsc"), @@ -108,6 +109,10 @@ public enum Network { TronNile("TronNile"), Westend("Westend"), WestendAssetHub("WestendAssetHub"), + Xdc("Xdc"), + XdcApothem("XdcApothem"), + XLayer("XLayer"), + XLayerSepolia("XLayerSepolia"), XrpLedger("XrpLedger"), XrpLedgerTestnet("XrpLedgerTestnet"), UNKNOWN(null); diff --git a/src/main/java/co/dfns/sdk/keys/model/SignatureRequest.java b/src/main/java/co/dfns/sdk/keys/model/SignatureRequest.java index 01fc6a8..0e862dc 100644 --- a/src/main/java/co/dfns/sdk/keys/model/SignatureRequest.java +++ b/src/main/java/co/dfns/sdk/keys/model/SignatureRequest.java @@ -37,5 +37,7 @@ public record SignatureRequest( @JsonInclude(JsonInclude.Include.NON_NULL) @JsonProperty("dateConfirmed") String dateConfirmed, @JsonInclude(JsonInclude.Include.NON_NULL) - @JsonProperty("externalId") String externalId + @JsonProperty("externalId") String externalId, + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("details") Map details ) {} diff --git a/src/main/java/co/dfns/sdk/signers/SignersAsyncClient.java b/src/main/java/co/dfns/sdk/signers/SignersAsyncClient.java index ab9ed03..5b0bae1 100644 --- a/src/main/java/co/dfns/sdk/signers/SignersAsyncClient.java +++ b/src/main/java/co/dfns/sdk/signers/SignersAsyncClient.java @@ -12,6 +12,31 @@ public SignersAsyncClient(DfnsHttpClient httpClient) { this.httpClient = httpClient; } + /** Create Add Mac User Input */ + public CompletableFuture createAddMacUserInput(String storeId, CreateAddMacUserInputRequest body) { + return httpClient.postAsync("/key-stores/" + storeId + "/add-mac-user/input", java.util.Map.of(), body, Object.class, true); + } + + /** Create Clone Input */ + public CompletableFuture createCloneInput(String storeId, CreateCloneInputRequest body) { + return httpClient.postAsync("/key-stores/" + storeId + "/clone/input", java.util.Map.of(), body, Object.class, true); + } + + /** Create Genesis Input */ + public CompletableFuture createGenesisInput(String storeId, CreateGenesisInputRequest body) { + return httpClient.postAsync("/key-stores/" + storeId + "/genesis/input", java.util.Map.of(), body, Object.class, true); + } + + /** Create Onchain Sign Input */ + public CompletableFuture createOnchainSignInput(String storeId, Map body) { + return httpClient.postAsync("/key-stores/" + storeId + "/onchain-sign/input", java.util.Map.of(), body, Object.class, true); + } + + /** Create Proof Of Control Input */ + public CompletableFuture createProofOfControlInput(String storeId, CreateProofOfControlInputRequest body) { + return httpClient.postAsync("/key-stores/" + storeId + "/proof-of-control/input", java.util.Map.of(), body, Object.class, true); + } + /** List Key Stores */ public CompletableFuture listKeyStores() { return httpClient.getAsync("/key-stores", java.util.Map.of(), ListKeyStoresResponse.class); @@ -21,4 +46,29 @@ public CompletableFuture listKeyStores() { public CompletableFuture listSigners() { return httpClient.getAsync("/signers", java.util.Map.of(), ListSignersResponse.class); } + + /** Submit Add Mac User Output */ + public CompletableFuture submitAddMacUserOutput(String storeId, SubmitAddMacUserOutputRequest body, byte[] file) { + return httpClient.postMultipartAsync("/key-stores/" + storeId + "/add-mac-user/output", java.util.Map.of(), body, file, SubmitAddMacUserOutputResponse.class, true); + } + + /** Submit Clone Output */ + public CompletableFuture submitCloneOutput(String storeId, SubmitCloneOutputRequest body, byte[] file) { + return httpClient.postMultipartAsync("/key-stores/" + storeId + "/clone/output", java.util.Map.of(), body, file, SubmitCloneOutputResponse.class, true); + } + + /** Submit Genesis Output */ + public CompletableFuture submitGenesisOutput(String storeId, SubmitGenesisOutputRequest body, byte[] file) { + return httpClient.postMultipartAsync("/key-stores/" + storeId + "/genesis/output", java.util.Map.of(), body, file, SubmitGenesisOutputResponse.class, true); + } + + /** Submit Onchain Sign Output */ + public CompletableFuture submitOnchainSignOutput(String storeId, SubmitOnchainSignOutputRequest body, byte[] file) { + return httpClient.postMultipartAsync("/key-stores/" + storeId + "/onchain-sign/output", java.util.Map.of(), body, file, SubmitOnchainSignOutputResponse.class, true); + } + + /** Submit Proof Of Control Output */ + public CompletableFuture submitProofOfControlOutput(String storeId, SubmitProofOfControlOutputRequest body, byte[] file) { + return httpClient.postMultipartAsync("/key-stores/" + storeId + "/proof-of-control/output", java.util.Map.of(), body, file, SubmitProofOfControlOutputResponse.class, true); + } } diff --git a/src/main/java/co/dfns/sdk/signers/SignersClient.java b/src/main/java/co/dfns/sdk/signers/SignersClient.java index 84c27e1..019fb94 100644 --- a/src/main/java/co/dfns/sdk/signers/SignersClient.java +++ b/src/main/java/co/dfns/sdk/signers/SignersClient.java @@ -11,6 +11,31 @@ public SignersClient(DfnsHttpClient httpClient) { this.httpClient = httpClient; } + /** Create Add Mac User Input */ + public Object createAddMacUserInput(String storeId, CreateAddMacUserInputRequest body) { + return httpClient.post("/key-stores/" + storeId + "/add-mac-user/input", java.util.Map.of(), body, Object.class, true); + } + + /** Create Clone Input */ + public Object createCloneInput(String storeId, CreateCloneInputRequest body) { + return httpClient.post("/key-stores/" + storeId + "/clone/input", java.util.Map.of(), body, Object.class, true); + } + + /** Create Genesis Input */ + public Object createGenesisInput(String storeId, CreateGenesisInputRequest body) { + return httpClient.post("/key-stores/" + storeId + "/genesis/input", java.util.Map.of(), body, Object.class, true); + } + + /** Create Onchain Sign Input */ + public Object createOnchainSignInput(String storeId, Map body) { + return httpClient.post("/key-stores/" + storeId + "/onchain-sign/input", java.util.Map.of(), body, Object.class, true); + } + + /** Create Proof Of Control Input */ + public Object createProofOfControlInput(String storeId, CreateProofOfControlInputRequest body) { + return httpClient.post("/key-stores/" + storeId + "/proof-of-control/input", java.util.Map.of(), body, Object.class, true); + } + /** List Key Stores */ public ListKeyStoresResponse listKeyStores() { return httpClient.get("/key-stores", java.util.Map.of(), ListKeyStoresResponse.class); @@ -20,4 +45,29 @@ public ListKeyStoresResponse listKeyStores() { public ListSignersResponse listSigners() { return httpClient.get("/signers", java.util.Map.of(), ListSignersResponse.class); } + + /** Submit Add Mac User Output */ + public SubmitAddMacUserOutputResponse submitAddMacUserOutput(String storeId, SubmitAddMacUserOutputRequest body, byte[] file) { + return httpClient.postMultipart("/key-stores/" + storeId + "/add-mac-user/output", java.util.Map.of(), body, file, SubmitAddMacUserOutputResponse.class, true); + } + + /** Submit Clone Output */ + public SubmitCloneOutputResponse submitCloneOutput(String storeId, SubmitCloneOutputRequest body, byte[] file) { + return httpClient.postMultipart("/key-stores/" + storeId + "/clone/output", java.util.Map.of(), body, file, SubmitCloneOutputResponse.class, true); + } + + /** Submit Genesis Output */ + public SubmitGenesisOutputResponse submitGenesisOutput(String storeId, SubmitGenesisOutputRequest body, byte[] file) { + return httpClient.postMultipart("/key-stores/" + storeId + "/genesis/output", java.util.Map.of(), body, file, SubmitGenesisOutputResponse.class, true); + } + + /** Submit Onchain Sign Output */ + public SubmitOnchainSignOutputResponse submitOnchainSignOutput(String storeId, SubmitOnchainSignOutputRequest body, byte[] file) { + return httpClient.postMultipart("/key-stores/" + storeId + "/onchain-sign/output", java.util.Map.of(), body, file, SubmitOnchainSignOutputResponse.class, true); + } + + /** Submit Proof Of Control Output */ + public SubmitProofOfControlOutputResponse submitProofOfControlOutput(String storeId, SubmitProofOfControlOutputRequest body, byte[] file) { + return httpClient.postMultipart("/key-stores/" + storeId + "/proof-of-control/output", java.util.Map.of(), body, file, SubmitProofOfControlOutputResponse.class, true); + } } diff --git a/src/main/java/co/dfns/sdk/signers/model/CreateAddMacUserInputRequest.java b/src/main/java/co/dfns/sdk/signers/model/CreateAddMacUserInputRequest.java new file mode 100644 index 0000000..d8987d6 --- /dev/null +++ b/src/main/java/co/dfns/sdk/signers/model/CreateAddMacUserInputRequest.java @@ -0,0 +1,11 @@ +package co.dfns.sdk.signers.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public record CreateAddMacUserInputRequest( + @JsonProperty("kind") String kind, + @JsonProperty("macTargetSerial") String macTargetSerial, + @JsonProperty("hsmTargetSerial") String hsmTargetSerial +) {} diff --git a/src/main/java/co/dfns/sdk/signers/model/CreateCloneInputRequest.java b/src/main/java/co/dfns/sdk/signers/model/CreateCloneInputRequest.java new file mode 100644 index 0000000..537a5f7 --- /dev/null +++ b/src/main/java/co/dfns/sdk/signers/model/CreateCloneInputRequest.java @@ -0,0 +1,14 @@ +package co.dfns.sdk.signers.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonInclude; + +@JsonIgnoreProperties(ignoreUnknown = true) +public record CreateCloneInputRequest( + @JsonProperty("kind") String kind, + @JsonProperty("hsmSourceSerial") String hsmSourceSerial, + @JsonProperty("hsmTargetSerial") String hsmTargetSerial, + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("macTargetSerial") String macTargetSerial +) {} diff --git a/src/main/java/co/dfns/sdk/signers/model/CreateGenesisInputRequest.java b/src/main/java/co/dfns/sdk/signers/model/CreateGenesisInputRequest.java new file mode 100644 index 0000000..aafe6a4 --- /dev/null +++ b/src/main/java/co/dfns/sdk/signers/model/CreateGenesisInputRequest.java @@ -0,0 +1,18 @@ +package co.dfns.sdk.signers.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonInclude; + +@JsonIgnoreProperties(ignoreUnknown = true) +public record CreateGenesisInputRequest( + @JsonProperty("kind") String kind, + @JsonProperty("numProvisioners") long numProvisioners, + @JsonProperty("numSecp256k1") long numSecp256k1, + @JsonProperty("numEd25519") long numEd25519, + @JsonProperty("hsmGenesisSerial") String hsmGenesisSerial, + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("macGenesisSerial") String macGenesisSerial, + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("hsmGenesisFirmwareVersion") String hsmGenesisFirmwareVersion +) {} diff --git a/src/main/java/co/dfns/sdk/signers/model/CreateProofOfControlInputRequest.java b/src/main/java/co/dfns/sdk/signers/model/CreateProofOfControlInputRequest.java new file mode 100644 index 0000000..4b98c63 --- /dev/null +++ b/src/main/java/co/dfns/sdk/signers/model/CreateProofOfControlInputRequest.java @@ -0,0 +1,10 @@ +package co.dfns.sdk.signers.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.List; + +@JsonIgnoreProperties(ignoreUnknown = true) +public record CreateProofOfControlInputRequest( + @JsonProperty("walletIds") List walletIds +) {} diff --git a/src/main/java/co/dfns/sdk/signers/model/SubmitAddMacUserOutputRequest.java b/src/main/java/co/dfns/sdk/signers/model/SubmitAddMacUserOutputRequest.java new file mode 100644 index 0000000..514f393 --- /dev/null +++ b/src/main/java/co/dfns/sdk/signers/model/SubmitAddMacUserOutputRequest.java @@ -0,0 +1,11 @@ +package co.dfns.sdk.signers.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Map; + +@JsonIgnoreProperties(ignoreUnknown = true) +public record SubmitAddMacUserOutputRequest( + @JsonProperty("fileChecksum") String fileChecksum, + @JsonProperty("outputJson") Map outputJson +) {} diff --git a/src/main/java/co/dfns/sdk/signers/model/SubmitAddMacUserOutputResponse.java b/src/main/java/co/dfns/sdk/signers/model/SubmitAddMacUserOutputResponse.java new file mode 100644 index 0000000..c355d77 --- /dev/null +++ b/src/main/java/co/dfns/sdk/signers/model/SubmitAddMacUserOutputResponse.java @@ -0,0 +1,9 @@ +package co.dfns.sdk.signers.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public record SubmitAddMacUserOutputResponse( + @JsonProperty("message") String message +) {} diff --git a/src/main/java/co/dfns/sdk/signers/model/SubmitCloneOutputRequest.java b/src/main/java/co/dfns/sdk/signers/model/SubmitCloneOutputRequest.java new file mode 100644 index 0000000..26bb722 --- /dev/null +++ b/src/main/java/co/dfns/sdk/signers/model/SubmitCloneOutputRequest.java @@ -0,0 +1,11 @@ +package co.dfns.sdk.signers.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Map; + +@JsonIgnoreProperties(ignoreUnknown = true) +public record SubmitCloneOutputRequest( + @JsonProperty("fileChecksum") String fileChecksum, + @JsonProperty("outputJson") Map outputJson +) {} diff --git a/src/main/java/co/dfns/sdk/signers/model/SubmitCloneOutputResponse.java b/src/main/java/co/dfns/sdk/signers/model/SubmitCloneOutputResponse.java new file mode 100644 index 0000000..3729923 --- /dev/null +++ b/src/main/java/co/dfns/sdk/signers/model/SubmitCloneOutputResponse.java @@ -0,0 +1,9 @@ +package co.dfns.sdk.signers.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public record SubmitCloneOutputResponse( + @JsonProperty("message") String message +) {} diff --git a/src/main/java/co/dfns/sdk/signers/model/SubmitGenesisOutputRequest.java b/src/main/java/co/dfns/sdk/signers/model/SubmitGenesisOutputRequest.java new file mode 100644 index 0000000..14b96ce --- /dev/null +++ b/src/main/java/co/dfns/sdk/signers/model/SubmitGenesisOutputRequest.java @@ -0,0 +1,11 @@ +package co.dfns.sdk.signers.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Map; + +@JsonIgnoreProperties(ignoreUnknown = true) +public record SubmitGenesisOutputRequest( + @JsonProperty("fileChecksum") String fileChecksum, + @JsonProperty("outputJson") Map outputJson +) {} diff --git a/src/main/java/co/dfns/sdk/signers/model/SubmitGenesisOutputResponse.java b/src/main/java/co/dfns/sdk/signers/model/SubmitGenesisOutputResponse.java new file mode 100644 index 0000000..6baf005 --- /dev/null +++ b/src/main/java/co/dfns/sdk/signers/model/SubmitGenesisOutputResponse.java @@ -0,0 +1,9 @@ +package co.dfns.sdk.signers.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public record SubmitGenesisOutputResponse( + @JsonProperty("message") String message +) {} diff --git a/src/main/java/co/dfns/sdk/signers/model/SubmitOnchainSignOutputRequest.java b/src/main/java/co/dfns/sdk/signers/model/SubmitOnchainSignOutputRequest.java new file mode 100644 index 0000000..9a72596 --- /dev/null +++ b/src/main/java/co/dfns/sdk/signers/model/SubmitOnchainSignOutputRequest.java @@ -0,0 +1,11 @@ +package co.dfns.sdk.signers.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Map; + +@JsonIgnoreProperties(ignoreUnknown = true) +public record SubmitOnchainSignOutputRequest( + @JsonProperty("fileChecksum") String fileChecksum, + @JsonProperty("outputJson") Map outputJson +) {} diff --git a/src/main/java/co/dfns/sdk/signers/model/SubmitOnchainSignOutputResponse.java b/src/main/java/co/dfns/sdk/signers/model/SubmitOnchainSignOutputResponse.java new file mode 100644 index 0000000..8385698 --- /dev/null +++ b/src/main/java/co/dfns/sdk/signers/model/SubmitOnchainSignOutputResponse.java @@ -0,0 +1,9 @@ +package co.dfns.sdk.signers.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public record SubmitOnchainSignOutputResponse( + @JsonProperty("status") String status +) {} diff --git a/src/main/java/co/dfns/sdk/signers/model/SubmitProofOfControlOutputRequest.java b/src/main/java/co/dfns/sdk/signers/model/SubmitProofOfControlOutputRequest.java new file mode 100644 index 0000000..f06bb5b --- /dev/null +++ b/src/main/java/co/dfns/sdk/signers/model/SubmitProofOfControlOutputRequest.java @@ -0,0 +1,11 @@ +package co.dfns.sdk.signers.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.Map; + +@JsonIgnoreProperties(ignoreUnknown = true) +public record SubmitProofOfControlOutputRequest( + @JsonProperty("fileChecksum") String fileChecksum, + @JsonProperty("outputJson") Map outputJson +) {} diff --git a/src/main/java/co/dfns/sdk/signers/model/SubmitProofOfControlOutputResponse.java b/src/main/java/co/dfns/sdk/signers/model/SubmitProofOfControlOutputResponse.java new file mode 100644 index 0000000..d7c2d01 --- /dev/null +++ b/src/main/java/co/dfns/sdk/signers/model/SubmitProofOfControlOutputResponse.java @@ -0,0 +1,9 @@ +package co.dfns.sdk.signers.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public record SubmitProofOfControlOutputResponse( + @JsonProperty("status") String status +) {} diff --git a/src/main/java/co/dfns/sdk/swaps/SwapsAsyncClient.java b/src/main/java/co/dfns/sdk/swaps/SwapsAsyncClient.java index f597096..56d7829 100644 --- a/src/main/java/co/dfns/sdk/swaps/SwapsAsyncClient.java +++ b/src/main/java/co/dfns/sdk/swaps/SwapsAsyncClient.java @@ -4,7 +4,6 @@ import co.dfns.sdk.swaps.model.*; import java.util.List; import co.dfns.sdk.PaginatedList; -import java.util.Map; import java.util.concurrent.CompletableFuture; public class SwapsAsyncClient { @@ -20,12 +19,12 @@ public CompletableFuture> listSwaps(ListSwapsQuery query) { } /** Create Swap */ - public CompletableFuture createSwap(CreateSwapRequest body) { + public CompletableFuture createSwap(Object body) { return httpClient.postAsync("/swaps", java.util.Map.of(), body, Swap.class, true); } /** Request Swap Quote */ - public CompletableFuture requestSwapQuote(RequestSwapQuoteRequest body) { + public CompletableFuture requestSwapQuote(Object body) { return httpClient.postAsync("/swaps/quotes", java.util.Map.of(), body, SwapQuote.class, false); } diff --git a/src/main/java/co/dfns/sdk/swaps/SwapsClient.java b/src/main/java/co/dfns/sdk/swaps/SwapsClient.java index b561dc5..6d2a6fc 100644 --- a/src/main/java/co/dfns/sdk/swaps/SwapsClient.java +++ b/src/main/java/co/dfns/sdk/swaps/SwapsClient.java @@ -4,7 +4,6 @@ import co.dfns.sdk.swaps.model.*; import java.util.List; import co.dfns.sdk.PaginatedList; -import java.util.Map; public class SwapsClient { private final DfnsHttpClient httpClient; @@ -19,12 +18,12 @@ public PaginatedList listSwaps(ListSwapsQuery query) { } /** Create Swap */ - public Swap createSwap(CreateSwapRequest body) { + public Swap createSwap(Object body) { return httpClient.post("/swaps", java.util.Map.of(), body, Swap.class, true); } /** Request Swap Quote */ - public SwapQuote requestSwapQuote(RequestSwapQuoteRequest body) { + public SwapQuote requestSwapQuote(Object body) { return httpClient.post("/swaps/quotes", java.util.Map.of(), body, SwapQuote.class, false); } diff --git a/src/main/java/co/dfns/sdk/swaps/model/Swap.java b/src/main/java/co/dfns/sdk/swaps/model/Swap.java index 11e86b3..c8fbe28 100644 --- a/src/main/java/co/dfns/sdk/swaps/model/Swap.java +++ b/src/main/java/co/dfns/sdk/swaps/model/Swap.java @@ -20,5 +20,7 @@ public record Swap( @JsonProperty("requestBody") Object requestBody, @JsonProperty("requester") Requester requester, @JsonInclude(JsonInclude.Include.NON_NULL) - @JsonProperty("failureReason") String failureReason + @JsonProperty("failureReason") String failureReason, + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("protocolStatus") String protocolStatus ) {} diff --git a/src/main/java/co/dfns/sdk/swaps/model/SwapQuote.java b/src/main/java/co/dfns/sdk/swaps/model/SwapQuote.java index 71d3ce2..698f4cf 100644 --- a/src/main/java/co/dfns/sdk/swaps/model/SwapQuote.java +++ b/src/main/java/co/dfns/sdk/swaps/model/SwapQuote.java @@ -13,7 +13,9 @@ public record SwapQuote( @JsonProperty("provider") String provider, @JsonProperty("sourceAsset") Object sourceAsset, @JsonProperty("targetAsset") Object targetAsset, - @JsonProperty("slippageBps") double slippageBps, + @JsonProperty("slippageBps") long slippageBps, + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("fee") String fee, @JsonProperty("dateCreated") String dateCreated, @JsonProperty("requestBody") Object requestBody, @JsonProperty("requester") Requester requester diff --git a/src/main/java/co/dfns/sdk/wallets/WalletsAsyncClient.java b/src/main/java/co/dfns/sdk/wallets/WalletsAsyncClient.java index 0691699..51647d3 100644 --- a/src/main/java/co/dfns/sdk/wallets/WalletsAsyncClient.java +++ b/src/main/java/co/dfns/sdk/wallets/WalletsAsyncClient.java @@ -14,6 +14,16 @@ public WalletsAsyncClient(DfnsHttpClient httpClient) { this.httpClient = httpClient; } + /** Abort Transaction */ + public CompletableFuture abortTransaction(String walletId, String transactionId) { + return httpClient.putAsync("/wallets/" + walletId + "/transactions/" + transactionId + "/abort", java.util.Map.of(), null, TransactionRequest.class, true); + } + + /** Abort Transfer */ + public CompletableFuture abortTransfer(String walletId, String transferId) { + return httpClient.putAsync("/wallets/" + walletId + "/transfers/" + transferId + "/abort", java.util.Map.of(), null, TransferRequest.class, true); + } + /** Activate Wallet */ public CompletableFuture activateWallet(String walletId, Object body) { return httpClient.postAsync("/wallets/" + walletId + "/activate", java.util.Map.of(), body, TransactionRequest.class, true); @@ -39,6 +49,12 @@ public CompletableFuture cancelTransfer(String walletId, Str return httpClient.postAsync("/wallets/" + walletId + "/transfers/" + transferId + "/cancel", java.util.Map.of(), null, TransactionRequest.class, true); } + /** Proxy a request to the Canton Ledger API */ + @SuppressWarnings("unchecked") + public CompletableFuture> proxyARequestToTheCantonLedgerApi(String walletId, ProxyARequestToTheCantonLedgerApiRequest body) { + return httpClient.postAsync("/wallets/" + walletId + "/canton/ledger-api", java.util.Map.of(), body, (Class>) (Class) Map.class, false); + } + /** Speed Up Transaction */ public CompletableFuture speedUpTransaction(String walletId, String transactionId) { return httpClient.postAsync("/wallets/" + walletId + "/transactions/" + transactionId + "/speed-up", java.util.Map.of(), null, TransactionRequest.class, true); diff --git a/src/main/java/co/dfns/sdk/wallets/WalletsClient.java b/src/main/java/co/dfns/sdk/wallets/WalletsClient.java index 4339a68..4067b9b 100644 --- a/src/main/java/co/dfns/sdk/wallets/WalletsClient.java +++ b/src/main/java/co/dfns/sdk/wallets/WalletsClient.java @@ -13,6 +13,16 @@ public WalletsClient(DfnsHttpClient httpClient) { this.httpClient = httpClient; } + /** Abort Transaction */ + public TransactionRequest abortTransaction(String walletId, String transactionId) { + return httpClient.put("/wallets/" + walletId + "/transactions/" + transactionId + "/abort", java.util.Map.of(), null, TransactionRequest.class, true); + } + + /** Abort Transfer */ + public TransferRequest abortTransfer(String walletId, String transferId) { + return httpClient.put("/wallets/" + walletId + "/transfers/" + transferId + "/abort", java.util.Map.of(), null, TransferRequest.class, true); + } + /** Activate Wallet */ public TransactionRequest activateWallet(String walletId, Object body) { return httpClient.post("/wallets/" + walletId + "/activate", java.util.Map.of(), body, TransactionRequest.class, true); @@ -38,6 +48,12 @@ public TransactionRequest cancelTransfer(String walletId, String transferId) { return httpClient.post("/wallets/" + walletId + "/transfers/" + transferId + "/cancel", java.util.Map.of(), null, TransactionRequest.class, true); } + /** Proxy a request to the Canton Ledger API */ + @SuppressWarnings("unchecked") + public Map proxyARequestToTheCantonLedgerApi(String walletId, ProxyARequestToTheCantonLedgerApiRequest body) { + return httpClient.post("/wallets/" + walletId + "/canton/ledger-api", java.util.Map.of(), body, (Class>) (Class) Map.class, false); + } + /** Speed Up Transaction */ public TransactionRequest speedUpTransaction(String walletId, String transactionId) { return httpClient.post("/wallets/" + walletId + "/transactions/" + transactionId + "/speed-up", java.util.Map.of(), null, TransactionRequest.class, true); diff --git a/src/main/java/co/dfns/sdk/wallets/model/Network.java b/src/main/java/co/dfns/sdk/wallets/model/Network.java index 8a0d0e8..62b4148 100644 --- a/src/main/java/co/dfns/sdk/wallets/model/Network.java +++ b/src/main/java/co/dfns/sdk/wallets/model/Network.java @@ -21,7 +21,7 @@ public enum Network { BerachainBepolia("BerachainBepolia"), Bitcoin("Bitcoin"), BitcoinSignet("BitcoinSignet"), - BitcoinTestnet3("BitcoinTestnet3"), + BitcoinTestnet4("BitcoinTestnet4"), BitcoinCash("BitcoinCash"), Bob("Bob"), BobSepolia("BobSepolia"), @@ -45,10 +45,7 @@ public enum Network { EthereumClassic("EthereumClassic"), EthereumClassicMordor("EthereumClassicMordor"), EthereumSepolia("EthereumSepolia"), - EthereumHolesky("EthereumHolesky"), EthereumHoodi("EthereumHoodi"), - FantomOpera("FantomOpera"), - FantomTestnet("FantomTestnet"), FlareC("FlareC"), FlareCCoston2("FlareCCoston2"), FlowEvm("FlowEvm"), @@ -62,11 +59,12 @@ public enum Network { IonTestnet("IonTestnet"), Iota("Iota"), IotaTestnet("IotaTestnet"), - Kaspa("Kaspa"), Kusama("Kusama"), KusamaAssetHub("KusamaAssetHub"), Litecoin("Litecoin"), LitecoinTestnet("LitecoinTestnet"), + Movement("Movement"), + MovementTestnet("MovementTestnet"), Near("Near"), NearTestnet("NearTestnet"), Optimism("Optimism"), @@ -90,6 +88,8 @@ public enum Network { SeiPacific1("SeiPacific1"), Solana("Solana"), SolanaDevnet("SolanaDevnet"), + Sonic("Sonic"), + SonicTestnet("SonicTestnet"), Starknet("Starknet"), StarknetSepolia("StarknetSepolia"), Stellar("Stellar"), @@ -98,6 +98,7 @@ public enum Network { SuiTestnet("SuiTestnet"), Tezos("Tezos"), TezosGhostnet("TezosGhostnet"), + TezosShadownet("TezosShadownet"), Tempo("Tempo"), TempoModerato("TempoModerato"), Tsc("Tsc"), @@ -108,6 +109,10 @@ public enum Network { TronNile("TronNile"), Westend("Westend"), WestendAssetHub("WestendAssetHub"), + Xdc("Xdc"), + XdcApothem("XdcApothem"), + XLayer("XLayer"), + XLayerSepolia("XLayerSepolia"), XrpLedger("XrpLedger"), XrpLedgerTestnet("XrpLedgerTestnet"), UNKNOWN(null); diff --git a/src/main/java/co/dfns/sdk/wallets/model/ProxyARequestToTheCantonLedgerApiRequest.java b/src/main/java/co/dfns/sdk/wallets/model/ProxyARequestToTheCantonLedgerApiRequest.java new file mode 100644 index 0000000..d2d4d85 --- /dev/null +++ b/src/main/java/co/dfns/sdk/wallets/model/ProxyARequestToTheCantonLedgerApiRequest.java @@ -0,0 +1,14 @@ +package co.dfns.sdk.wallets.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonInclude; +import java.util.Map; + +@JsonIgnoreProperties(ignoreUnknown = true) +public record ProxyARequestToTheCantonLedgerApiRequest( + @JsonProperty("requestMethod") String requestMethod, + @JsonProperty("resource") String resource, + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("body") Map body +) {} diff --git a/src/main/java/co/dfns/sdk/wallets/model/TransactionRequest.java b/src/main/java/co/dfns/sdk/wallets/model/TransactionRequest.java index 8fe7a7e..99ab139 100644 --- a/src/main/java/co/dfns/sdk/wallets/model/TransactionRequest.java +++ b/src/main/java/co/dfns/sdk/wallets/model/TransactionRequest.java @@ -3,6 +3,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonInclude; +import java.util.Map; @JsonIgnoreProperties(ignoreUnknown = true) public record TransactionRequest( @@ -28,5 +29,9 @@ public record TransactionRequest( @JsonInclude(JsonInclude.Include.NON_NULL) @JsonProperty("dateConfirmed") String dateConfirmed, @JsonInclude(JsonInclude.Include.NON_NULL) - @JsonProperty("externalId") String externalId + @JsonProperty("externalId") String externalId, + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("replacementId") String replacementId, + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("details") Map details ) {} diff --git a/src/main/java/co/dfns/sdk/wallets/model/TransferRequest.java b/src/main/java/co/dfns/sdk/wallets/model/TransferRequest.java index c84e79f..f236037 100644 --- a/src/main/java/co/dfns/sdk/wallets/model/TransferRequest.java +++ b/src/main/java/co/dfns/sdk/wallets/model/TransferRequest.java @@ -32,5 +32,9 @@ public record TransferRequest( @JsonInclude(JsonInclude.Include.NON_NULL) @JsonProperty("externalId") String externalId, @JsonInclude(JsonInclude.Include.NON_NULL) - @JsonProperty("feeSponsorId") String feeSponsorId + @JsonProperty("feeSponsorId") String feeSponsorId, + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("replacementId") String replacementId, + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("details") Map details ) {} diff --git a/src/main/java/co/dfns/sdk/webhooks/WebhooksAsyncClient.java b/src/main/java/co/dfns/sdk/webhooks/WebhooksAsyncClient.java index aad755e..c29da9b 100644 --- a/src/main/java/co/dfns/sdk/webhooks/WebhooksAsyncClient.java +++ b/src/main/java/co/dfns/sdk/webhooks/WebhooksAsyncClient.java @@ -2,9 +2,9 @@ import co.dfns.sdk.internal.DfnsHttpClient; import co.dfns.sdk.webhooks.model.*; -import java.util.Map; import java.util.List; import co.dfns.sdk.PaginatedList; +import java.util.Map; import java.util.concurrent.CompletableFuture; public class WebhooksAsyncClient { @@ -15,13 +15,13 @@ public WebhooksAsyncClient(DfnsHttpClient httpClient) { } /** List Webhooks */ - public CompletableFuture listWebhooks(ListWebhooksQuery query) { - return httpClient.getAsync("/webhooks", query.toMap(), ListWebhooksResponse.class); + public CompletableFuture> listWebhooks(ListWebhooksQuery query) { + return httpClient.getAsync("/webhooks", query.toMap(), new com.fasterxml.jackson.core.type.TypeReference>() {}); } /** Create Webhook */ - public CompletableFuture createWebhook(CreateWebhookRequest body) { - return httpClient.postAsync("/webhooks", java.util.Map.of(), body, Webhook.class, true); + public CompletableFuture createWebhook(CreateWebhookRequest body) { + return httpClient.postAsync("/webhooks", java.util.Map.of(), body, WebhookWithSecret.class, true); } /** Get Webhook */ diff --git a/src/main/java/co/dfns/sdk/webhooks/WebhooksClient.java b/src/main/java/co/dfns/sdk/webhooks/WebhooksClient.java index 3af3c98..5a1fad9 100644 --- a/src/main/java/co/dfns/sdk/webhooks/WebhooksClient.java +++ b/src/main/java/co/dfns/sdk/webhooks/WebhooksClient.java @@ -2,9 +2,9 @@ import co.dfns.sdk.internal.DfnsHttpClient; import co.dfns.sdk.webhooks.model.*; -import java.util.Map; import java.util.List; import co.dfns.sdk.PaginatedList; +import java.util.Map; public class WebhooksClient { private final DfnsHttpClient httpClient; @@ -14,13 +14,13 @@ public WebhooksClient(DfnsHttpClient httpClient) { } /** List Webhooks */ - public ListWebhooksResponse listWebhooks(ListWebhooksQuery query) { - return httpClient.get("/webhooks", query.toMap(), ListWebhooksResponse.class); + public PaginatedList listWebhooks(ListWebhooksQuery query) { + return httpClient.get("/webhooks", query.toMap(), new com.fasterxml.jackson.core.type.TypeReference>() {}); } /** Create Webhook */ - public Webhook createWebhook(CreateWebhookRequest body) { - return httpClient.post("/webhooks", java.util.Map.of(), body, Webhook.class, true); + public WebhookWithSecret createWebhook(CreateWebhookRequest body) { + return httpClient.post("/webhooks", java.util.Map.of(), body, WebhookWithSecret.class, true); } /** Get Webhook */ diff --git a/src/main/java/co/dfns/sdk/webhooks/model/Webhook.java b/src/main/java/co/dfns/sdk/webhooks/model/Webhook.java index 0ff40f7..47a5773 100644 --- a/src/main/java/co/dfns/sdk/webhooks/model/Webhook.java +++ b/src/main/java/co/dfns/sdk/webhooks/model/Webhook.java @@ -14,6 +14,5 @@ public record Webhook( @JsonInclude(JsonInclude.Include.NON_NULL) @JsonProperty("description") String description, @JsonProperty("dateCreated") String dateCreated, - @JsonProperty("dateUpdated") String dateUpdated, - @JsonProperty("secret") String secret + @JsonProperty("dateUpdated") String dateUpdated ) {} diff --git a/src/main/java/co/dfns/sdk/webhooks/model/WebhookWithSecret.java b/src/main/java/co/dfns/sdk/webhooks/model/WebhookWithSecret.java new file mode 100644 index 0000000..58c613c --- /dev/null +++ b/src/main/java/co/dfns/sdk/webhooks/model/WebhookWithSecret.java @@ -0,0 +1,19 @@ +package co.dfns.sdk.webhooks.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonInclude; +import java.util.List; + +@JsonIgnoreProperties(ignoreUnknown = true) +public record WebhookWithSecret( + @JsonProperty("id") String id, + @JsonProperty("url") String url, + @JsonProperty("events") List events, + @JsonProperty("status") String status, + @JsonInclude(JsonInclude.Include.NON_NULL) + @JsonProperty("description") String description, + @JsonProperty("dateCreated") String dateCreated, + @JsonProperty("dateUpdated") String dateUpdated, + @JsonProperty("secret") String secret +) {}