Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions examples/java/.gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Gradle
.gradle/
build/
.settings
!gradle/wrapper/gradle-wrapper.jar

# IDE
Expand Down
13 changes: 0 additions & 13 deletions examples/java/.settings/org.eclipse.buildship.core.prefs

This file was deleted.

131 changes: 131 additions & 0 deletions examples/java/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,119 @@ tasks.register<JavaExec>("runRetryConfiguration") {
classpath = sourceSets["main"].runtimeClasspath
}

// End User examples
tasks.register<JavaExec>("runCreateEndUser") {
group = "examples"
description = "Run the create end user example"
mainClass.set("com.coinbase.cdp.examples.enduser.CreateEndUser")
classpath = sourceSets["main"].runtimeClasspath
}

tasks.register<JavaExec>("runGetEndUser") {
group = "examples"
description = "Run the get end user example"
mainClass.set("com.coinbase.cdp.examples.enduser.GetEndUser")
classpath = sourceSets["main"].runtimeClasspath
}

tasks.register<JavaExec>("runListEndUsers") {
group = "examples"
description = "Run the list end users example"
mainClass.set("com.coinbase.cdp.examples.enduser.ListEndUsers")
classpath = sourceSets["main"].runtimeClasspath
}

tasks.register<JavaExec>("runImportEndUser") {
group = "examples"
description = "Run the import end user example"
mainClass.set("com.coinbase.cdp.examples.enduser.ImportEndUser")
classpath = sourceSets["main"].runtimeClasspath
}

tasks.register<JavaExec>("runAddEndUserEvmAccount") {
group = "examples"
description = "Run the add EVM account to end user example"
mainClass.set("com.coinbase.cdp.examples.enduser.AddEndUserEvmAccount")
classpath = sourceSets["main"].runtimeClasspath
}

tasks.register<JavaExec>("runAddEndUserEvmSmartAccount") {
group = "examples"
description = "Run the add EVM smart account to end user example"
mainClass.set("com.coinbase.cdp.examples.enduser.AddEndUserEvmSmartAccount")
classpath = sourceSets["main"].runtimeClasspath
}

tasks.register<JavaExec>("runAddEndUserSolanaAccount") {
group = "examples"
description = "Run the add Solana account to end user example"
mainClass.set("com.coinbase.cdp.examples.enduser.AddEndUserSolanaAccount")
classpath = sourceSets["main"].runtimeClasspath
}

tasks.register<JavaExec>("runValidateAccessToken") {
group = "examples"
description = "Run the validate access token example"
mainClass.set("com.coinbase.cdp.examples.enduser.ValidateAccessToken")
classpath = sourceSets["main"].runtimeClasspath
}

tasks.register<JavaExec>("runCreateEvmEip7702Delegation") {
group = "examples"
description = "Run the create EIP-7702 delegation example"
mainClass.set("com.coinbase.cdp.examples.enduser.CreateEvmEip7702Delegation")
classpath = sourceSets["main"].runtimeClasspath
}

tasks.register<JavaExec>("runRevokeDelegation") {
group = "examples"
description = "Run the revoke delegation example"
mainClass.set("com.coinbase.cdp.examples.enduser.RevokeDelegation")
classpath = sourceSets["main"].runtimeClasspath
}

tasks.register<JavaExec>("runSignEvmHash") {
group = "examples"
description = "Run the sign EVM hash example"
mainClass.set("com.coinbase.cdp.examples.enduser.SignEvmHash")
classpath = sourceSets["main"].runtimeClasspath
}

tasks.register<JavaExec>("runSendEvmTransaction") {
group = "examples"
description = "Run the send EVM transaction example"
mainClass.set("com.coinbase.cdp.examples.enduser.SendEvmTransaction")
classpath = sourceSets["main"].runtimeClasspath
}

tasks.register<JavaExec>("runSendEvmAsset") {
group = "examples"
description = "Run the send EVM asset example"
mainClass.set("com.coinbase.cdp.examples.enduser.SendEvmAsset")
classpath = sourceSets["main"].runtimeClasspath
}

tasks.register<JavaExec>("runSendUserOperation") {
group = "examples"
description = "Run the send user operation example"
mainClass.set("com.coinbase.cdp.examples.enduser.SendUserOperation")
classpath = sourceSets["main"].runtimeClasspath
}

tasks.register<JavaExec>("runSignSolanaMessage") {
group = "examples"
description = "Run the sign Solana message example"
mainClass.set("com.coinbase.cdp.examples.enduser.SignSolanaMessage")
classpath = sourceSets["main"].runtimeClasspath
}

tasks.register<JavaExec>("runCreateEndUserPolicy") {
group = "examples"
description = "Run the create end user policy example"
mainClass.set("com.coinbase.cdp.examples.enduser.CreateEndUserPolicy")
classpath = sourceSets["main"].runtimeClasspath
}

// Task to list all available example tasks
tasks.register("listExamples") {
group = "examples"
Expand All @@ -148,6 +261,24 @@ tasks.register("listExamples") {
println(" ./gradlew runListSolanaAccounts - List Solana accounts")
println(" ./gradlew runSolanaTransfer - Transfer SOL between accounts")
println(" ./gradlew runRetryConfiguration - Configure HTTP retry behavior")
println("")
println("End User examples:")
println(" ./gradlew runCreateEndUser - Create end users with email auth")
println(" ./gradlew runGetEndUser - Get an end user by ID")
println(" ./gradlew runListEndUsers - List end users")
println(" ./gradlew runImportEndUser - Import an end user with a private key")
println(" ./gradlew runAddEndUserEvmAccount - Add an EVM account to an end user")
println(" ./gradlew runAddEndUserEvmSmartAccount - Add an EVM smart account to an end user")
println(" ./gradlew runAddEndUserSolanaAccount - Add a Solana account to an end user")
println(" ./gradlew runValidateAccessToken - Validate an end user access token")
println(" ./gradlew runCreateEvmEip7702Delegation - Create an EIP-7702 delegation")
println(" ./gradlew runRevokeDelegation - Revoke delegation for an end user")
println(" ./gradlew runSignEvmHash - Sign an EVM hash (delegated)")
println(" ./gradlew runSendEvmTransaction - Send an EVM transaction (delegated)")
println(" ./gradlew runSendEvmAsset - Send USDC on EVM (delegated)")
println(" ./gradlew runSendUserOperation - Send a user operation (delegated)")
println(" ./gradlew runSignSolanaMessage - Sign a Solana message (delegated)")
println(" ./gradlew runCreateEndUserPolicy - Create an end user policy")
println("\nOr run any example directly:")
println(" ./gradlew run -PmainClass=com.coinbase.cdp.examples.evm.CreateAccount")
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package com.coinbase.cdp.examples.enduser;

import com.coinbase.cdp.CdpClient;
import com.coinbase.cdp.examples.utils.EnvLoader;
import com.coinbase.cdp.openapi.model.AuthenticationMethod;
import com.coinbase.cdp.openapi.model.AuthenticationMethods;
import com.coinbase.cdp.openapi.model.CreateEndUserRequest;
import com.coinbase.cdp.openapi.model.EmailAuthentication;

/**
* Example: Add an additional EVM account to an end user.
*
* <p>This example creates an end user and then adds a second EVM EOA account. End users can have
* up to 10 EVM accounts.
*
* <p>Usage: ./gradlew runAddEndUserEvmAccount
*/
public class AddEndUserEvmAccount {

public static void main(String[] args) throws Exception {
EnvLoader.load();

try (CdpClient cdp = CdpClient.create()) {
// Build authentication methods with email
var authMethods = new AuthenticationMethods();
authMethods.add(
new AuthenticationMethod(
new EmailAuthentication()
.type(EmailAuthentication.TypeEnum.EMAIL)
.email("user@example.com")));

// Step 1: Create an end user
System.out.println("Step 1: Creating end user...");
var endUser =
cdp.endUser()
.createEndUser(new CreateEndUserRequest().authenticationMethods(authMethods));

System.out.println(" User ID: " + endUser.getUserId());
System.out.println(" EVM accounts: " + endUser.getEvmAccountObjects().size());
for (var account : endUser.getEvmAccountObjects()) {
System.out.println(" Address: " + account.getAddress());
}
System.out.println();

// Step 2: Add another EVM account
System.out.println("Step 2: Adding another EVM account...");
var newAccount = cdp.endUser().addEvmAccount(endUser.getUserId());

System.out.println(
" New EVM account address: " + newAccount.getEvmAccount().getAddress());
System.out.println();

// Step 3: Verify by retrieving the end user
System.out.println("Step 3: Verifying...");
var updatedUser = cdp.endUser().getEndUser(endUser.getUserId());
System.out.println(
" Total EVM accounts: " + updatedUser.getEvmAccountObjects().size());
for (var account : updatedUser.getEvmAccountObjects()) {
System.out.println(" Address: " + account.getAddress());
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
package com.coinbase.cdp.examples.enduser;

import com.coinbase.cdp.CdpClient;
import com.coinbase.cdp.examples.utils.EnvLoader;
import com.coinbase.cdp.openapi.model.AddEndUserEvmSmartAccountRequest;
import com.coinbase.cdp.openapi.model.AuthenticationMethod;
import com.coinbase.cdp.openapi.model.AuthenticationMethods;
import com.coinbase.cdp.openapi.model.CreateEndUserRequest;
import com.coinbase.cdp.openapi.model.CreateEndUserRequestEvmAccount;
import com.coinbase.cdp.openapi.model.EmailAuthentication;

/**
* Example: Add an additional EVM smart account to an end user.
*
* <p>This example creates an end user with a smart account, then adds another smart account.
*
* <p>Usage: ./gradlew runAddEndUserEvmSmartAccount
*/
public class AddEndUserEvmSmartAccount {

public static void main(String[] args) throws Exception {
EnvLoader.load();

try (CdpClient cdp = CdpClient.create()) {
// Build authentication methods with email
var authMethods = new AuthenticationMethods();
authMethods.add(
new AuthenticationMethod(
new EmailAuthentication()
.type(EmailAuthentication.TypeEnum.EMAIL)
.email("user@example.com")));

// Step 1: Create an end user with a smart account
System.out.println("Step 1: Creating end user with smart account...");
var endUser =
cdp.endUser()
.createEndUser(
new CreateEndUserRequest()
.authenticationMethods(authMethods)
.evmAccount(
new CreateEndUserRequestEvmAccount().createSmartAccount(true)));

System.out.println(" User ID: " + endUser.getUserId());
System.out.println(
" EVM smart accounts: " + endUser.getEvmSmartAccountObjects().size());
for (var smartAccount : endUser.getEvmSmartAccountObjects()) {
System.out.println(" Address: " + smartAccount.getAddress());
System.out.println(" Owners: " + smartAccount.getOwnerAddresses());
}
System.out.println();

// Step 2: Add another smart account
System.out.println("Step 2: Adding another smart account...");
var newSmartAccount =
cdp.endUser()
.addEvmSmartAccount(
endUser.getUserId(), new AddEndUserEvmSmartAccountRequest());

System.out.println(
" New smart account address: "
+ newSmartAccount.getEvmSmartAccount().getAddress());
System.out.println();

// Step 3: Verify by retrieving the end user
System.out.println("Step 3: Verifying...");
var updatedUser = cdp.endUser().getEndUser(endUser.getUserId());
System.out.println(
" Total EVM smart accounts: "
+ updatedUser.getEvmSmartAccountObjects().size());
for (var smartAccount : updatedUser.getEvmSmartAccountObjects()) {
System.out.println(" Address: " + smartAccount.getAddress());
System.out.println(" Owners: " + smartAccount.getOwnerAddresses());
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
package com.coinbase.cdp.examples.enduser;

import com.coinbase.cdp.CdpClient;
import com.coinbase.cdp.examples.utils.EnvLoader;
import com.coinbase.cdp.openapi.model.AuthenticationMethod;
import com.coinbase.cdp.openapi.model.AuthenticationMethods;
import com.coinbase.cdp.openapi.model.CreateEndUserRequest;
import com.coinbase.cdp.openapi.model.CreateEndUserRequestSolanaAccount;
import com.coinbase.cdp.openapi.model.EmailAuthentication;

/**
* Example: Add an additional Solana account to an end user.
*
* <p>This example creates an end user with a Solana account, then adds another Solana account. End
* users can have up to 10 Solana accounts.
*
* <p>Usage: ./gradlew runAddEndUserSolanaAccount
*/
public class AddEndUserSolanaAccount {

public static void main(String[] args) throws Exception {
EnvLoader.load();

try (CdpClient cdp = CdpClient.create()) {
// Build authentication methods with email
var authMethods = new AuthenticationMethods();
authMethods.add(
new AuthenticationMethod(
new EmailAuthentication()
.type(EmailAuthentication.TypeEnum.EMAIL)
.email("user@example.com")));

// Step 1: Create an end user with a Solana account
System.out.println("Step 1: Creating end user with Solana account...");
var endUser =
cdp.endUser()
.createEndUser(
new CreateEndUserRequest()
.authenticationMethods(authMethods)
.solanaAccount(new CreateEndUserRequestSolanaAccount()));

System.out.println(" User ID: " + endUser.getUserId());
System.out.println(
" Solana accounts: " + endUser.getSolanaAccountObjects().size());
for (var account : endUser.getSolanaAccountObjects()) {
System.out.println(" Address: " + account.getAddress());
}
System.out.println();

// Step 2: Add another Solana account
System.out.println("Step 2: Adding another Solana account...");
var newAccount = cdp.endUser().addSolanaAccount(endUser.getUserId());

System.out.println(
" New Solana account address: " + newAccount.getSolanaAccount().getAddress());
System.out.println();

// Step 3: Verify by retrieving the end user
System.out.println("Step 3: Verifying...");
var updatedUser = cdp.endUser().getEndUser(endUser.getUserId());
System.out.println(
" Total Solana accounts: " + updatedUser.getSolanaAccountObjects().size());
for (var account : updatedUser.getSolanaAccountObjects()) {
System.out.println(" Address: " + account.getAddress());
}
}
}
}
Loading
Loading