{"metadata":{"image":[],"title":"","description":""},"api":{"url":"","auth":"required","examples":{"codes":[]},"method":"post","params":[],"results":{"codes":[]},"settings":""},"next":{"description":"","pages":[]},"title":"Update User","type":"endpoint","slug":"update-user","excerpt":"","body":"#Update a MassPay user\n\n## Building the update request\n\nWhen building your Update request you'll need to use 1 out of these 5 fields:\n- `walletId` - The identifier for the wallet\n- `name` - Updated identifier for the user\n- `callbackUrl` - Updated child wallet callback url\n- `notes` - Updated notes about the user\n- `verificationData` - Updated KYC information about the user\n\n## Api Endpoint\nhttps://api.sendwyre.com/v2/wallet/{walletId}/update\n\n## Params\n[block:parameters]\n{\n \"data\": {\n \"h-0\": \"key\",\n \"h-1\": \"type\",\n \"h-2\": \"description\",\n \"h-3\": \"required\",\n \"0-0\": \"walletId\",\n \"0-1\": \"String\",\n \"0-2\": \"ID of wallet to update\",\n \"0-3\": \"true\",\n \"1-0\": \"name\",\n \"1-1\": \"String\",\n \"1-2\": \"Updated identifier for the user\",\n \"1-3\": \"false\",\n \"2-0\": \"callbackUrl\",\n \"2-1\": \"String\",\n \"2-2\": \"Updated callback\",\n \"2-3\": \"false\",\n \"3-0\": \"notes\",\n \"3-1\": \"String\",\n \"3-2\": \"Updated notes\",\n \"3-3\": \"false\",\n \"4-0\": \"verificationData\",\n \"4-1\": \"Object\",\n \"4-2\": \"Updated KYC information\",\n \"4-3\": \"false\"\n },\n \"cols\": 4,\n \"rows\": 5\n}\n[/block]\n\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"{\\n\\t\\\"firstName\\\":\\\"{users-first-name}\\\",\\n \\\"middleName\\\":\\\"{users-middle-name}\\\",\\n \\\"lastName\\\":\\\"{users-last-name}\\\",\\n \\\"ssn\\\":\\\"0000\\\",\\n \\\"passport\\\":\\\"https://s3.amazonaws.com/100175/735051/PassPortFINAL.pdf\\\",\\n \\\"birthDay\\\":\\\"1\\\",\\n \\\"birthMonth\\\":\\\"1\\\",\\n \\\"birthYear\\\":\\\"1970\\\",\\n \\\"phoneNumber\\\":\\\"+15555555555\\\",\\n \\\"address\\\": {\\n \\\"street1\\\":\\\"1 Market Street\\\",\\n \\\"street2\\\":\\\"Suite 420\\\",\\n \\\"city\\\":\\\"San Francisco\\\",\\n \\\"state\\\":\\\"CA\\\",\\n \\\"postalCode\\\":\\\"94109\\\",\\n \\\"country\\\":\\\"US\\\"\\n }\\n}\",\n \"language\": \"json\",\n \"name\": \"verificationData\"\n }\n ]\n}\n[/block]\n\n[block:code]\n{\n \"codes\": [\n {\n \"code\": \"curl -v -XPOST 'https://api.sendwyre.com/v2/wallet/{wallet-id}/update' \\\\\\n\\t-H \\\"Content-Type: application/json\\\" \\\\\\n -H \\\"X-Api-Key: {api-key}\\\" \\\\\\n -H \\\"X-Api-Signature: {signature}\\\" \\\\\\n\\t-d '{\\\"name\\\":\\\"{your-unique-identifier}\\\",\\\"notes\\\":\\\"Updated notes about the sub account\\\"}'\",\n \"language\": \"curl\"\n },\n {\n \"code\": \"import javax.crypto.Mac;\\nimport javax.crypto.spec.SecretKeySpec;\\nimport java.io.BufferedReader;\\nimport java.io.DataOutputStream;\\nimport java.io.InputStream;\\nimport java.io.InputStreamReader;\\nimport java.lang.Integer;\\nimport java.lang.String;\\nimport java.lang.StringBuffer;\\nimport java.net.HttpURLConnection;\\nimport java.net.URL;\\n\\npublic class Main {\\n\\tpublic static void main(String[] args) {\\n\\t\\tString accountId = \\\"k3f48j0rb2rp65c0sdog67vi43u80jas\\\";\\n\\t\\tString apiKey = \\\"fll36l3t35udalcqlh4ng6bm4qpbgher\\\";\\n\\t\\tString secretKey = \\\"tr3epinbk3maist0n3ijk18bm6dikrq6\\\";\\n\\t\\n String walletId = \\\"{wallet-id}\\\";\\n \\n\\t\\tString url = \\\"https://api.sendwyre.com/v2/wallet/\\\"+ walletId +\\\"/update\\\";\\n\\t\\tString method = \\\"POST\\\";\\n\\t\\tString data = \\\"\\\";\\n\\n\\t\\tString result = excuteWyreRequest(url, \\\"\\\", method, apiKey, secretKey);\\n\\t\\tSystem.out.println(result);\\n\\n\\t\\tdata = \\\"{\\\" +\\n\\t\\t\\t\\t\\\" \\\\\\\"name\\\\\\\":\\\\\\\"{your-unique-identifier}\\\\\\\",\\\" +\\n\\t\\t\\t\\t\\\" \\\\\\\"notes\\\\\\\":\\\\\\\"Updated notes about the user\\\\\\\"\\\" +\\n\\t\\t\\t\\t\\\"}\\\";\\n\\t\\tresult = excuteWyreRequest(url, data, method, apiKey, secretKey);\\n\\n\\t\\tSystem.out.println(result);\\n\\t}\\n\\n\\tpublic static String excuteWyreRequest(String targetURL, String requestBody, String method, String apiKey, String secretKey) {\\n\\t\\tURL url;\\n\\t\\tHttpURLConnection connection = null;\\n\\t\\ttry {\\n\\n\\t\\t\\ttargetURL += ((targetURL.indexOf(\\\"?\\\")>0)?\\\"&\\\":\\\"?\\\") + \\\"timestamp=\\\" + System.currentTimeMillis();\\n\\n\\t\\t\\t//Create connection\\n\\t\\t\\turl = new URL(targetURL);\\n\\t\\t\\tconnection = (HttpURLConnection)url.openConnection();\\n\\t\\t\\tconnection.setRequestMethod(method);\\n\\t\\t\\tSystem.out.println(connection.getRequestMethod());\\n\\n\\t\\t\\tconnection.setRequestProperty(\\\"Content-Type\\\", \\\"application/json\\\");\\n\\t\\t\\tconnection.setRequestProperty(\\\"Content-Length\\\", Integer.toString(requestBody.getBytes().length));\\n\\n\\t\\t\\t//Specify API v2\\n\\t\\t\\tconnection.setRequestProperty(\\\"X-Api-Version\\\",\\\"2\\\");\\n\\n\\t\\t\\t// Provide API key and signature\\n\\t\\t\\tconnection.setRequestProperty(\\\"X-Api-Key\\\", apiKey);\\n\\t\\t\\tconnection.setRequestProperty(\\\"X-Api-Signature\\\",computeSignature(secretKey,targetURL,requestBody));\\n\\n\\t\\t\\t//Send request\\n\\t\\t\\tif(method.equals(\\\"POST\\\")) {\\n\\t\\t\\t\\tconnection.setDoOutput(true);\\n\\t\\t\\t\\tconnection.setRequestMethod(method);\\n\\n\\t\\t\\t\\tDataOutputStream wr = new DataOutputStream(\\n\\t\\t\\t\\t\\t\\tconnection.getOutputStream());\\n\\n\\t\\t\\t\\twr.writeBytes(requestBody);\\n\\t\\t\\t\\twr.flush();\\n\\t\\t\\t\\twr.close();\\n\\t\\t\\t}\\n\\n\\t\\t\\t//Get Response\\n\\t\\t\\tInputStream is = connection.getInputStream();\\n\\t\\t\\tBufferedReader rd = new BufferedReader(new InputStreamReader(is));\\n\\t\\t\\tString line;\\n\\t\\t\\tStringBuffer response = new StringBuffer();\\n\\t\\t\\twhile((line = rd.readLine()) != null) {\\n\\t\\t\\t\\tresponse.append(line);\\n\\t\\t\\t\\tresponse.append('\\\\r');\\n\\t\\t\\t}\\n\\t\\t\\trd.close();\\n\\t\\t\\treturn response.toString();\\n\\n\\t\\t} catch (Exception e) {\\n\\n\\t\\t\\te.printStackTrace();\\n\\t\\t\\treturn null;\\n\\n\\t\\t} finally {\\n\\n\\t\\t\\tif(connection != null) {\\n\\t\\t\\t\\tconnection.disconnect();\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\tpublic static String computeSignature(String secretKey, String url, String reqData) {\\n\\n\\t\\tString data = url + reqData;\\n\\n\\t\\tSystem.out.println(data);\\n\\n\\t\\ttry {\\n\\t\\t\\tMac sha256Hmac = Mac.getInstance(\\\"HmacSHA256\\\");\\n\\t\\t\\tSecretKeySpec key = new SecretKeySpec(secretKey.getBytes(), \\\"HmacSHA256\\\");\\n\\t\\t\\tsha256Hmac.init(key);\\n\\n\\t\\t\\tbyte[] macData = sha256Hmac.doFinal(data.getBytes());\\n\\n\\t\\t\\tString result = \\\"\\\";\\n\\t\\t\\tfor (final byte element : macData){\\n\\t\\t\\t\\tresult += Integer.toString((element & 0xff) + 0x100, 16).substring(1);\\n\\t\\t\\t}\\n\\t\\t\\treturn result;\\n\\n\\t\\t} catch (Exception e) {\\n\\t\\t\\te.printStackTrace();\\n\\t\\t\\treturn \\\"\\\";\\n\\t\\t}\\n\\t}\\n}\",\n \"language\": \"java\"\n },\n {\n \"code\": \"#dependencies:\\n#python3\\n#pip3 install requests\\n\\nimport json\\nimport hmac\\nimport time\\nfrom requests import request\\n\\nclass MassPay_API(object):\\n def __init__(self, account_id, api_version, api_key, api_secret):\\n self.account_id = account_id\\n self.api_url = 'https://api.sendwyre.com/{}'.format(api_version)\\n self.api_version = api_version\\n self.api_key = api_key\\n self.api_secret = api_secret\\n\\n #authentication decorator. May raise ValueError if no json content is returned\\n def authenticate_request(func):\\n def wrap(self, *args, **kwargs):\\n url, method, body = func(self, *args, **kwargs)\\n params = {}\\n timestamp = int(time.time() * 1000)\\n url += '?timestamp={}'.format(timestamp)\\n bodyJson = json.dumps(body) if body != '' else ''\\n headers = {}\\n headers['Content-Type'] = 'application/json'\\n headers['X-Api-Version'] = self.api_version\\n headers['X-Api-Key'] = self.api_key\\n headers['X-Api-Signature'] = hmac.new(self.api_secret.encode('utf-8'), (url + bodyJson).encode('utf-8'), 'SHA256').hexdigest()\\n print(headers['X-Api-Signature'])\\n resp = request(method=method, url=url, params=params, data=(json.dumps(body) if body != '' else None), json=None, headers=headers)\\n if resp.text is not None: #Wyre will always try to give an err body\\n return resp.status_code, resp.json()\\n return 404, {}\\n return wrap\\n\\n :::at:::authenticate_request\\n def update_user(self, walletId, name, callbackUrl, notes, verificationData):\\n url = self.api_url + '/wallet/' + walletId + '/update\\n method = 'POST'\\n body = {'name':name}\\n if callbackUrl:\\n body[\\\"callbackUrl\\\"] = callbackUrl\\n if notes:\\n body['notes'] = notes\\n if verificationData:\\n \\tbody['verificationData'] = verificationData\\n return url, method, body \\n\\n#USAGE Example\\naccount_id = \\\"YOUR_ACCOUNT_ID_HERE\\\" #optional\\napi_key = \\\"YOUR_API_KEY_HERE\\\"\\nsecret_key = \\\"YOUR_SECRET_KEY_HERE\\\"\\napi_version = \\\"2\\\"\\n\\n#create Wyre MassPay API object\\nWyre = MassPay_API(account_id, api_version, api_key, secret_key)\\n\\n#create user and print result\\nhttp_code, result = Wyre.update_user(\\n \\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\"{wallet-id}\\\",\\n \\\"{your-unique-identifier}\\\", \\n None, #callbackUrl\\n \\\"Updated notes for user\\\",\\n None #verification data\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t)\\nprint(result)\\nusers_srn = result['srn'] #grab our srn identifier for the user\",\n \"language\": \"python\"\n }\n ]\n}\n[/block]","updates":[],"order":3,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"_id":"56eb33659b984b29002136a8","createdAt":"2016-03-17T22:44:53.486Z","user":"54f5fae5b175300d00d44b2f","category":{"sync":{"isSync":false,"url":""},"pages":["56e9fea046ea9b0e001ddda0","56e9fecacda7120e00b5b13c","56ea01757e21ac0e00131024","56ea0a0679708c0e002b6031","56ea0b117e21ac0e0013102f","56ea13b0cf35bf0e00adb8df","56eb33659b984b29002136a8","56eb341d9b984b29002136ae","56eb342f3d6fdb3200a72302"],"title":"Wallet Management","slug":"beta","order":9,"from_sync":false,"reference":false,"_id":"56e9fe9779708c0e002b6026","version":"55909cb433090f0d004d25d8","__v":9,"createdAt":"2016-03-17T00:47:19.023Z","project":"558b53f749dc4f0d00517de0"},"project":"558b53f749dc4f0d00517de0","version":{"version":"2","version_clean":"2.0.0","codename":"","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["55909cb433090f0d004d25d9","55909cb433090f0d004d25da","55909cb433090f0d004d25db","55909cb433090f0d004d25dc","56c72c00197f9f1700c811db","56c72df5b3625c0d00422c9e","56e1b646150ed52d0062c652","56e9fe9779708c0e002b6026","57312dc94245100e001743f4","57646a570742400e00c04701","5894c96f4d9c7e27002e42ba"],"_id":"55909cb433090f0d004d25d8","project":"558b53f749dc4f0d00517de0","releaseDate":"2015-06-29T01:17:40.214Z","createdAt":"2015-06-29T01:17:40.214Z","forked_from":"558b53f749dc4f0d00517de3","__v":8},"__v":12,"githubsync":"","parentDoc":null}