Embedded Vaults
iOS Native SDK
5 min
usage initialization import pvembedded // initialize with default configuration let client = pvclient() // initialize with custom configuration let client = pvclient( configuration pvconfiguration( apibaseurl url(string "https //api example com")!, orgid "your org id", environment production ) ) // use the staging environment let client = pvclient(configuration staging) user management // get user details client getuserdetails(email "user\@example com") { result in switch result { case success(let user) print("user id \\(user userid ?? "")") print("organization \\(user orgid ?? "")") case failure(let error) print("failed to get user details \\(error localizeddescription)") } } // create a sub organization and user client createsuborguser( firstname "john", lastname "doe", suborgname "example team", fcmregistrationid "fcm token", email "john doe\@example com" ) { result in switch result { case success print("user created successfully") case failure(let error) print("failed to create user \\(error localizeddescription)") } } vault operations // get a list of vaults client getvaults(page 1, limit 10, permissionlevel 0) { result in switch result { case success(let response) if let vaults = response results { print("found \\(vaults count) vaults") vaults foreach { vault in print("vault name \\(vault vaultname ?? "")") } } case failure(let error) print("failed to get vaults \\(error localizeddescription)") } } // create a new vault client createvault( userid "user id", orgentityid "org entity id", vaultname "my new vault", templateid "template id", suborgid "sub org id" ) { result in switch result { case success(let vault) print("vault created successfully with id \\(vault id ?? "")") case failure(let error) print("failed to create vault \\(error localizeddescription)") } } // get vault by id client getvaultbyid(vaultid "vault id") { result in switch result { case success(let vault) print("vault name \\(vault vaultname ?? "")") if let wallets = vault wallets { print("wallet count \\(wallets count)") } case failure(let error) print("failed to get vault details \\(error localizeddescription)") } } // get vault balances client getvaultbalances(vaultid "vault id") { result in switch result { case success(let balances) print("balance data \\(balances)") case failure(let error) print("failed to get balances \\(error localizeddescription)") } } error handling the sdk uses a comprehensive error handling system with the pverror enum switch result { case success(let data) // handle successful response case failure(let error) switch error { case authentication // handle authentication error case network // handle network error case server // handle server error case notfound // handle not found error case invalidresponse // handle invalid response // and more error cases } } security the sdk uses the ios secure enclave for key management and secure storage for sensitive data