{"__v":19,"_id":"563e184fe79f670d00a10ad5","category":{"__v":2,"_id":"563e184077681a0d00d96a02","pages":["563e201c1347cf0d004182c5","563e20601347cf0d004182c6"],"project":"54e405191e51932d006abc39","version":"55fa37c88065a10d004e5bb6","sync":{"url":"","isSync":false},"reference":true,"createdAt":"2015-11-07T15:26:56.680Z","from_sync":false,"order":5,"slug":"subscriptions","title":"Subscriptions"},"parentDoc":null,"project":"54e405191e51932d006abc39","user":"54e4044e8ef7552300409dcb","version":{"__v":7,"_id":"55fa37c88065a10d004e5bb6","project":"54e405191e51932d006abc39","createdAt":"2015-09-17T03:47:20.956Z","releaseDate":"2015-09-17T03:47:20.956Z","categories":["55fa37ca8065a10d004e5bb7","55fa37ca8065a10d004e5bb8","55fa37ca8065a10d004e5bb9","55fa37ca8065a10d004e5bba","55fca6bf34ae7c0d00ab8ea0","55ff80fd9e7ccf0d000a1d93","560220af7435de0d00fabd0d","56107f21bb9d920d00303e70","563e184077681a0d00d96a02","56fafc6596ec7e0e002ac85f"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"REST V3","version_clean":"3.1.0","version":"3.1"},"updates":[],"next":{"pages":[],"description":""},"createdAt":"2015-11-07T15:27:11.353Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":true,"order":0,"body":"Subscription resources are generic user classes that stores a gateway's webhook preferences.\n\n## Subscription Object\n[block:html]\n{\n  \"html\": \"<div class=\\\"api-manager\\\"><div class=\\\"param-table\\\"><div class=\\\"table\\\"><div class=\\\"tr\\\"><div class=\\\"td param\\\"><strong>_id<span class=\\\"colon\\\">:</span></strong></div><div class=\\\"td\\\"> <strong class=\\\"param-type\\\">String</strong><div marked=\\\"\\\" class=\\\"ng-isolate-scope\\\"><p>Object ID of a subscription object</p>\\n</div></div></div><div class=\\\"tr\\\"><div class=\\\"td param\\\"><strong><span class=\\\"text-muted\\\">_links.self.</span>href<span class=\\\"colon\\\">:</span></strong></div><div class=\\\"td\\\"> <strong class=\\\"param-type\\\">String</strong><div marked=\\\"\\\" class=\\\"ng-isolate-scope\\\"><p>HAL style link for the subscription object</p>\\n</div></div></div><div class=\\\"tr\\\"><div class=\\\"td param\\\"><strong><span class=\\\"text-muted\\\">client.</span>id<span class=\\\"colon\\\">:</span></strong></div><div class=\\\"td\\\"> <strong class=\\\"param-type\\\">Integer</strong><div marked=\\\"\\\" class=\\\"ng-isolate-scope\\\"><p>ID of the client who the subscription belongs to</p>\\n</div></div></div><div class=\\\"tr\\\"><div class=\\\"td param\\\"><strong><span class=\\\"text-muted\\\">client.</span>name<span class=\\\"colon\\\">:</span></strong></div><div class=\\\"td\\\"> <strong class=\\\"param-type\\\">String</strong><div marked=\\\"\\\" class=\\\"ng-isolate-scope\\\"><p>Name of the client that created the subscription</p>\\n</div></div></div><div class=\\\"tr\\\"><div class=\\\"td param\\\"><strong>scope<span class=\\\"colon\\\">:</span></strong></div><div class=\\\"td\\\"> <strong class=\\\"param-type\\\">Array of Strings</strong><div marked=\\\"\\\" class=\\\"ng-isolate-scope\\\"><p>Scope of the webhook subscription</p>\\n</div></div></div><div class=\\\"tr\\\"><div class=\\\"td param\\\"><strong>url<span class=\\\"colon\\\">:</span></strong></div><div class=\\\"td\\\"> <strong class=\\\"param-type\\\">String</strong><div marked=\\\"\\\" class=\\\"ng-isolate-scope\\\"><p>Webhook url for this subscription</p>\\n</div></div></div></div></div></div>\"\n}\n[/block]\n## Scope Syntax\n\nScope tells us when this webhook should be triggered. Following are the ways you can supply scope for subscriptions.\n[block:parameters]\n{\n  \"data\": {\n    \"h-0\": \"Scope\",\n    \"h-1\": \"Effect\",\n    \"0-0\": \"USERS|POST\",\n    \"0-1\": \"Whenever a user is created with your gateway credentials, you will receive a webhook.\",\n    \"2-0\": \"NODES|POST\",\n    \"2-1\": \"Whenever a node is created for a user registered with your gateway, you will receive a webhook.\",\n    \"5-0\": \"TRANS|POST\",\n    \"5-1\": \"Whenever a transaction is created with your gateway credentials, you will receive a webhook.\",\n    \"1-0\": \"USER|PATCH\",\n    \"1-1\": \"Whenever a user linked to your gateway is updated, you will receive a webhook.\",\n    \"3-0\": \"NODE|PATCH\",\n    \"3-1\": \"Whenever a node linked to a registered user is updated, you will receive a webhook.\",\n    \"4-0\": \"NODE|DELETE\",\n    \"4-1\": \"Whenever a node linked to a registered user is deleted, you will receive a webhook.\",\n    \"6-0\": \"TRAN|PATCH\",\n    \"6-1\": \"Whenever a transaction created with your gateway credentials is updated, you will receive a webhook.\",\n    \"7-0\": \"TRAN|DELETE\",\n    \"7-1\": \"Whenever a transaction created with your gateway credentials is deleted (canceled), you will receive a webhook.\"\n  },\n  \"cols\": 2,\n  \"rows\": 8\n}\n[/block]\n## HMAC For Web hooks\n\nEvery webhook will be signed with HMAC.\n\nIf you do not know what HMAC is --- it is a protocol that helps you judge the authenticity of the received message. This comes in handy when you want to quickly find out whether the web hook was sent by SynapsePay or a malicious/notorious party.\n\nOur implementation is pretty straightforward.\n\nThe signature is a SHA-1 and SHA-256 HMAC hash of the `object_id` + `your client_id`, with the secret key as your `client_secret`.\n\nYou will be able to rebuild the signature the following way:\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"import hmac \\nfrom hashlib import sha1, sha256\\n\\nkey = 'your_client_secret'\\nraw = '{0}+{1}'.format(payload['_id']['$oid'],'your_client_id')\\n\\nhashed_sha1 = hmac.new(key, raw, sha1)\\nhashed_sha256 = hmac.new(key, raw, sha256)\\n\\n# The signature\\nprint hashed_sha1.hexdigest()\\nprint hashed_sha256.hexdigest()\",\n      \"language\": \"python\"\n    },\n    {\n      \"code\": \"require \\\"openssl\\\" \\nrequire \\\"base64\\\"\\n\\nkey = 'your_client_secret' \\nraw = \\\"#{payload['_id']['$oid']}+#{your_client_id}\\\" \\ndigest = OpenSSL::Digest.new('sha1') \\nhex_data = OpenSSL::HMAC.hexdigest(digest, key, raw) \\np hex_data\",\n      \"language\": \"ruby\"\n    }\n  ]\n}\n[/block]\nPlease note that `raw` should look like this (with `+`): \n`\"563db3fb86c27307d925871f+e3f19e4bd4022c86e7f2\"`\n\nNot like this (without `+`):\n`\"563db3fb86c27307d925871fe3f19e4bd4022c86e7f2\"`.\n\nSince the sha1 signature is in hex, it should look like this: `bce964c20b0c36313d8f7cffc2ff4772d0c96750`.\n\nWe then take this signature and add it into the header of the request with name `X-Synapse-Signature` and `X-Synapse-Signature-Sha256`.\n[block:callout]\n{\n  \"type\": \"info\",\n  \"title\": \"If Webhook fails\",\n  \"body\": \"If for some reason we fail to deliver a webhook to you, we will continue trying to send the request every 10 minutes until we are successful in delivering the webhook, up to 24 hours. After that, we will log the webhook and make it available for viewing on our dashboard. That way, even if we fail to deliver the request, you can still access the original request and the reason as to why the webhook failed.\"\n}\n[/block]\n## Webhook Format\nThe webhook always returns a user, node, or transaction object. These are the same as the objects returned by other RESTful API calls, with a couple exceptions:\n* The value of `id`s are objects storing an `$oid`, which is the object ID.\n* The value of `date`s are objects storing a `$date`.\n[block:code]\n{\n  \"codes\": [\n    {\n      \"code\": \"{\\n  \\\"documents\\\": [\\n    {\\n      \\\"permission_scope\\\": \\\"SEND|RECEIVE|1000|DAILY\\\",\\n      \\\"name\\\": \\\"Charlie Brown\\\",\\n      \\\"virtual_docs\\\": [\\n        {\\n          \\\"status\\\": \\\"SUBMITTED|VALID\\\",\\n          \\\"document_type\\\": \\\"SSN\\\",\\n          \\\"last_updated\\\": {\\n            \\\"$date\\\": 1478889753302\\n          },\\n          \\\"id\\\": \\\"ee596c2896dddc19b76c07a184fe7d3cf5a04b8e94b9108190cac7890739017f\\\"\\n        }\\n      ],\\n      \\\"physical_docs\\\": [\\n        {\\n          \\\"status\\\": \\\"SUBMITTED|REVIEWING\\\",\\n          \\\"document_type\\\": \\\"GOVT_ID\\\",\\n          \\\"last_updated\\\": {\\n            \\\"$date\\\": 1478889754256\\n          },\\n          \\\"id\\\": \\\"0ad3c51f647af0cafa352922489cb8e8b27a0fa5243071c618f6bfa24a3792f9\\\"\\n        }\\n      ],\\n      \\\"social_docs\\\": [\\n        {\\n          \\\"status\\\": \\\"SUBMITTED|VALID\\\",\\n          \\\"document_type\\\": \\\"EMAIL\\\",\\n          \\\"last_updated\\\": {\\n            \\\"$date\\\": 1478889752593\\n          },\\n          \\\"id\\\": \\\"2c45158f6431ca874bbe82f63d5905567854dde4d8b81539944e5779e5eee741\\\"\\n        },\\n        {\\n          \\\"status\\\": \\\"SUBMITTED|VALID\\\",\\n          \\\"document_type\\\": \\\"PHONE_NUMBER\\\",\\n          \\\"last_updated\\\": {\\n            \\\"$date\\\": 1478889752948\\n          },\\n          \\\"id\\\": \\\"9dd593112385cfed22721355d279e79d33acd2c48cffe9c007b6c4acbfde826c\\\"\\n        },\\n        {\\n          \\\"status\\\": \\\"SUBMITTED|VALID\\\",\\n          \\\"document_type\\\": \\\"FACEBOOK\\\",\\n          \\\"last_updated\\\": {\\n            \\\"$date\\\": 1478889754682\\n          },\\n          \\\"id\\\": \\\"0c32234c59b71311b0f3057635c206e6a0d39ecef0bc336fe2bb375c92968117\\\"\\n        }\\n      ],\\n      \\\"id\\\": \\\"ef4685f1dcf78b39a85c9d4da97652e114f3af054d43b29195978a1e4918beae\\\"\\n    }\\n  ],\\n  \\\"extra\\\": {\\n    \\\"extra_security\\\": true,\\n    \\\"is_business\\\": false,\\n    \\\"supp_id\\\": \\\"5303f4ddb4e7b810bf000173\\\",\\n    \\\"cip_tag\\\": 1,\\n    \\\"date_joined\\\": {\\n      \\\"$date\\\": 1478889705718\\n    }\\n  },\\n  \\\"logins\\\": [\\n    {\\n      \\\"scope\\\": \\\"READ_AND_WRITE\\\",\\n      \\\"email\\\": \\\"test:::at:::test.com\\\"\\n    }\\n  ],\\n  \\\"phone_numbers\\\": [\\n    \\\"9019428167\\\"\\n  ],\\n  \\\"permission\\\": \\\"SEND-AND-RECEIVE\\\",\\n  \\\"photos\\\": [],\\n  \\\"client\\\": {\\n    \\\"id\\\": 1841,\\n    \\\"name\\\": \\\"Steven Broderick\\\"\\n  },\\n  \\\"legal_names\\\": [\\n    \\\"Test User\\\"\\n  ],\\n  \\\"is_hidden\\\": false,\\n  \\\"_id\\\": {\\n    \\\"$oid\\\": \\\"582610e986c2736d34fef12c\\\"\\n  },\\n  \\\"doc_status\\\": {\\n    \\\"physical_doc\\\": \\\"SUBMITTED|VALID\\\",\\n    \\\"virtual_doc\\\": \\\"SUBMITTED|VALID\\\"\\n  }\\n}\",\n      \"language\": \"json\",\n      \"name\": \"User\"\n    },\n    {\n      \"code\": \"{\\n  \\\"info\\\": {\\n    \\\"bank_name\\\": \\\"fake\\\",\\n    \\\"bank_long_name\\\": \\\"ING DIRECT\\\",\\n    \\\"account_num\\\": \\\"8901\\\",\\n    \\\"name_on_account\\\": \\\"Test User\\\",\\n    \\\"nickname\\\": \\\"SynapsePay Test Checking Account\\\",\\n    \\\"type\\\": \\\"PERSONAL\\\",\\n    \\\"routing_num\\\": \\\"6110\\\",\\n    \\\"balance\\\": {\\n      \\\"currency\\\": \\\"USD\\\",\\n      \\\"amount\\\": \\\"10000.00\\\"\\n    },\\n    \\\"match_info\\\": {\\n      \\\"email_match\\\": \\\"not_found\\\",\\n      \\\"phonenumber_match\\\": \\\"not_found\\\",\\n      \\\"name_match\\\": \\\"not_found\\\"\\n    },\\n    \\\"class\\\": \\\"CHECKING\\\"\\n  },\\n  \\\"extra\\\": {\\n    \\\"supp_id\\\": null\\n  },\\n  \\\"is_active\\\": true,\\n  \\\"allowed\\\": \\\"CREDIT-AND-DEBIT\\\",\\n  \\\"_id\\\": {\\n    \\\"$oid\\\": \\\"5826113186c27370ee85bdeb\\\"\\n  },\\n  \\\"type\\\": \\\"ACH-US\\\"\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Node\"\n    },\n    {\n      \"code\": \"{\\n  \\\"from\\\": {\\n    \\\"type\\\": \\\"ACH-US\\\",\\n    \\\"nickname\\\": \\\"SynapsePay Test Checking Account\\\",\\n    \\\"id\\\": {\\n      \\\"$oid\\\": \\\"5826113186c27370ee85bdeb\\\"\\n    },\\n    \\\"user\\\": {\\n      \\\"legal_names\\\": [\\n        \\\"Test User\\\"\\n      ],\\n      \\\"_id\\\": {\\n        \\\"$oid\\\": \\\"582610e986c2736d34fef12c\\\"\\n      }\\n    }\\n  },\\n  \\\"extra\\\": {\\n    \\\"latlon\\\": \\\"0,0\\\",\\n    \\\"ip\\\": \\\"192.168.0.1\\\",\\n    \\\"supp_id\\\": \\\"\\\",\\n    \\\"webhook\\\": \\\"\\\",\\n    \\\"process_on\\\": {\\n      \\\"$date\\\": 1478890269165\\n    },\\n    \\\"note\\\": \\\"\\\",\\n    \\\"created_on\\\": {\\n      \\\"$date\\\": 1478890269102\\n    }\\n  },\\n  \\\"timeline\\\": [\\n    {\\n      \\\"date\\\": {\\n        \\\"$date\\\": 1478890269102\\n      },\\n      \\\"note\\\": \\\"Transaction created\\\",\\n      \\\"status\\\": \\\"CREATED\\\",\\n      \\\"status_id\\\": \\\"1\\\"\\n    }\\n  ],\\n  \\\"to\\\": {\\n    \\\"type\\\": \\\"SYNAPSE-US\\\",\\n    \\\"nickname\\\": \\\"My Synapse\\\",\\n    \\\"id\\\": {\\n      \\\"$oid\\\": \\\"57ec5a2f86c27352af734011\\\"\\n    },\\n    \\\"user\\\": {\\n      \\\"legal_names\\\": [\\n        \\\"Some new name\\\"\\n      ],\\n      \\\"_id\\\": {\\n        \\\"$oid\\\": \\\"57d2055a86c27339ffdee4cc\\\"\\n      }\\n    }\\n  },\\n  \\\"amount\\\": {\\n    \\\"currency\\\": \\\"USD\\\",\\n    \\\"amount\\\": 10\\n  },\\n  \\\"client\\\": {\\n    \\\"id\\\": 1841,\\n    \\\"name\\\": \\\"Steven Broderick\\\"\\n  },\\n  \\\"fees\\\": [\\n    {\\n      \\\"note\\\": \\\"Synapse Facilitator Fee\\\",\\n      \\\"to\\\": {\\n        \\\"id\\\": {\\n          \\\"$oid\\\": \\\"559339aa86c273605ccd35df\\\"\\n        }\\n      },\\n      \\\"fee\\\": 0.2\\n    }\\n  ],\\n  \\\"_id\\\": {\\n    \\\"$oid\\\": \\\"5826131e86c2736d34fef141\\\"\\n  },\\n  \\\"recent_status\\\": {\\n    \\\"date\\\": {\\n      \\\"$date\\\": 1478890269102\\n    },\\n    \\\"note\\\": \\\"Transaction created\\\",\\n    \\\"status\\\": \\\"CREATED\\\",\\n    \\\"status_id\\\": \\\"1\\\"\\n  }\\n}\",\n      \"language\": \"json\",\n      \"name\": \"Transaction\"\n    }\n  ]\n}\n[/block]","excerpt":"","slug":"subscriptions","type":"basic","title":"Subscriptions"}
Subscription resources are generic user classes that stores a gateway's webhook preferences. ## Subscription Object [block:html] { "html": "<div class=\"api-manager\"><div class=\"param-table\"><div class=\"table\"><div class=\"tr\"><div class=\"td param\"><strong>_id<span class=\"colon\">:</span></strong></div><div class=\"td\"> <strong class=\"param-type\">String</strong><div marked=\"\" class=\"ng-isolate-scope\"><p>Object ID of a subscription object</p>\n</div></div></div><div class=\"tr\"><div class=\"td param\"><strong><span class=\"text-muted\">_links.self.</span>href<span class=\"colon\">:</span></strong></div><div class=\"td\"> <strong class=\"param-type\">String</strong><div marked=\"\" class=\"ng-isolate-scope\"><p>HAL style link for the subscription object</p>\n</div></div></div><div class=\"tr\"><div class=\"td param\"><strong><span class=\"text-muted\">client.</span>id<span class=\"colon\">:</span></strong></div><div class=\"td\"> <strong class=\"param-type\">Integer</strong><div marked=\"\" class=\"ng-isolate-scope\"><p>ID of the client who the subscription belongs to</p>\n</div></div></div><div class=\"tr\"><div class=\"td param\"><strong><span class=\"text-muted\">client.</span>name<span class=\"colon\">:</span></strong></div><div class=\"td\"> <strong class=\"param-type\">String</strong><div marked=\"\" class=\"ng-isolate-scope\"><p>Name of the client that created the subscription</p>\n</div></div></div><div class=\"tr\"><div class=\"td param\"><strong>scope<span class=\"colon\">:</span></strong></div><div class=\"td\"> <strong class=\"param-type\">Array of Strings</strong><div marked=\"\" class=\"ng-isolate-scope\"><p>Scope of the webhook subscription</p>\n</div></div></div><div class=\"tr\"><div class=\"td param\"><strong>url<span class=\"colon\">:</span></strong></div><div class=\"td\"> <strong class=\"param-type\">String</strong><div marked=\"\" class=\"ng-isolate-scope\"><p>Webhook url for this subscription</p>\n</div></div></div></div></div></div>" } [/block] ## Scope Syntax Scope tells us when this webhook should be triggered. Following are the ways you can supply scope for subscriptions. [block:parameters] { "data": { "h-0": "Scope", "h-1": "Effect", "0-0": "USERS|POST", "0-1": "Whenever a user is created with your gateway credentials, you will receive a webhook.", "2-0": "NODES|POST", "2-1": "Whenever a node is created for a user registered with your gateway, you will receive a webhook.", "5-0": "TRANS|POST", "5-1": "Whenever a transaction is created with your gateway credentials, you will receive a webhook.", "1-0": "USER|PATCH", "1-1": "Whenever a user linked to your gateway is updated, you will receive a webhook.", "3-0": "NODE|PATCH", "3-1": "Whenever a node linked to a registered user is updated, you will receive a webhook.", "4-0": "NODE|DELETE", "4-1": "Whenever a node linked to a registered user is deleted, you will receive a webhook.", "6-0": "TRAN|PATCH", "6-1": "Whenever a transaction created with your gateway credentials is updated, you will receive a webhook.", "7-0": "TRAN|DELETE", "7-1": "Whenever a transaction created with your gateway credentials is deleted (canceled), you will receive a webhook." }, "cols": 2, "rows": 8 } [/block] ## HMAC For Web hooks Every webhook will be signed with HMAC. If you do not know what HMAC is --- it is a protocol that helps you judge the authenticity of the received message. This comes in handy when you want to quickly find out whether the web hook was sent by SynapsePay or a malicious/notorious party. Our implementation is pretty straightforward. The signature is a SHA-1 and SHA-256 HMAC hash of the `object_id` + `your client_id`, with the secret key as your `client_secret`. You will be able to rebuild the signature the following way: [block:code] { "codes": [ { "code": "import hmac \nfrom hashlib import sha1, sha256\n\nkey = 'your_client_secret'\nraw = '{0}+{1}'.format(payload['_id']['$oid'],'your_client_id')\n\nhashed_sha1 = hmac.new(key, raw, sha1)\nhashed_sha256 = hmac.new(key, raw, sha256)\n\n# The signature\nprint hashed_sha1.hexdigest()\nprint hashed_sha256.hexdigest()", "language": "python" }, { "code": "require \"openssl\" \nrequire \"base64\"\n\nkey = 'your_client_secret' \nraw = \"#{payload['_id']['$oid']}+#{your_client_id}\" \ndigest = OpenSSL::Digest.new('sha1') \nhex_data = OpenSSL::HMAC.hexdigest(digest, key, raw) \np hex_data", "language": "ruby" } ] } [/block] Please note that `raw` should look like this (with `+`): `"563db3fb86c27307d925871f+e3f19e4bd4022c86e7f2"` Not like this (without `+`): `"563db3fb86c27307d925871fe3f19e4bd4022c86e7f2"`. Since the sha1 signature is in hex, it should look like this: `bce964c20b0c36313d8f7cffc2ff4772d0c96750`. We then take this signature and add it into the header of the request with name `X-Synapse-Signature` and `X-Synapse-Signature-Sha256`. [block:callout] { "type": "info", "title": "If Webhook fails", "body": "If for some reason we fail to deliver a webhook to you, we will continue trying to send the request every 10 minutes until we are successful in delivering the webhook, up to 24 hours. After that, we will log the webhook and make it available for viewing on our dashboard. That way, even if we fail to deliver the request, you can still access the original request and the reason as to why the webhook failed." } [/block] ## Webhook Format The webhook always returns a user, node, or transaction object. These are the same as the objects returned by other RESTful API calls, with a couple exceptions: * The value of `id`s are objects storing an `$oid`, which is the object ID. * The value of `date`s are objects storing a `$date`. [block:code] { "codes": [ { "code": "{\n \"documents\": [\n {\n \"permission_scope\": \"SEND|RECEIVE|1000|DAILY\",\n \"name\": \"Charlie Brown\",\n \"virtual_docs\": [\n {\n \"status\": \"SUBMITTED|VALID\",\n \"document_type\": \"SSN\",\n \"last_updated\": {\n \"$date\": 1478889753302\n },\n \"id\": \"ee596c2896dddc19b76c07a184fe7d3cf5a04b8e94b9108190cac7890739017f\"\n }\n ],\n \"physical_docs\": [\n {\n \"status\": \"SUBMITTED|REVIEWING\",\n \"document_type\": \"GOVT_ID\",\n \"last_updated\": {\n \"$date\": 1478889754256\n },\n \"id\": \"0ad3c51f647af0cafa352922489cb8e8b27a0fa5243071c618f6bfa24a3792f9\"\n }\n ],\n \"social_docs\": [\n {\n \"status\": \"SUBMITTED|VALID\",\n \"document_type\": \"EMAIL\",\n \"last_updated\": {\n \"$date\": 1478889752593\n },\n \"id\": \"2c45158f6431ca874bbe82f63d5905567854dde4d8b81539944e5779e5eee741\"\n },\n {\n \"status\": \"SUBMITTED|VALID\",\n \"document_type\": \"PHONE_NUMBER\",\n \"last_updated\": {\n \"$date\": 1478889752948\n },\n \"id\": \"9dd593112385cfed22721355d279e79d33acd2c48cffe9c007b6c4acbfde826c\"\n },\n {\n \"status\": \"SUBMITTED|VALID\",\n \"document_type\": \"FACEBOOK\",\n \"last_updated\": {\n \"$date\": 1478889754682\n },\n \"id\": \"0c32234c59b71311b0f3057635c206e6a0d39ecef0bc336fe2bb375c92968117\"\n }\n ],\n \"id\": \"ef4685f1dcf78b39a85c9d4da97652e114f3af054d43b29195978a1e4918beae\"\n }\n ],\n \"extra\": {\n \"extra_security\": true,\n \"is_business\": false,\n \"supp_id\": \"5303f4ddb4e7b810bf000173\",\n \"cip_tag\": 1,\n \"date_joined\": {\n \"$date\": 1478889705718\n }\n },\n \"logins\": [\n {\n \"scope\": \"READ_AND_WRITE\",\n \"email\": \"test@test.com\"\n }\n ],\n \"phone_numbers\": [\n \"9019428167\"\n ],\n \"permission\": \"SEND-AND-RECEIVE\",\n \"photos\": [],\n \"client\": {\n \"id\": 1841,\n \"name\": \"Steven Broderick\"\n },\n \"legal_names\": [\n \"Test User\"\n ],\n \"is_hidden\": false,\n \"_id\": {\n \"$oid\": \"582610e986c2736d34fef12c\"\n },\n \"doc_status\": {\n \"physical_doc\": \"SUBMITTED|VALID\",\n \"virtual_doc\": \"SUBMITTED|VALID\"\n }\n}", "language": "json", "name": "User" }, { "code": "{\n \"info\": {\n \"bank_name\": \"fake\",\n \"bank_long_name\": \"ING DIRECT\",\n \"account_num\": \"8901\",\n \"name_on_account\": \"Test User\",\n \"nickname\": \"SynapsePay Test Checking Account\",\n \"type\": \"PERSONAL\",\n \"routing_num\": \"6110\",\n \"balance\": {\n \"currency\": \"USD\",\n \"amount\": \"10000.00\"\n },\n \"match_info\": {\n \"email_match\": \"not_found\",\n \"phonenumber_match\": \"not_found\",\n \"name_match\": \"not_found\"\n },\n \"class\": \"CHECKING\"\n },\n \"extra\": {\n \"supp_id\": null\n },\n \"is_active\": true,\n \"allowed\": \"CREDIT-AND-DEBIT\",\n \"_id\": {\n \"$oid\": \"5826113186c27370ee85bdeb\"\n },\n \"type\": \"ACH-US\"\n}", "language": "json", "name": "Node" }, { "code": "{\n \"from\": {\n \"type\": \"ACH-US\",\n \"nickname\": \"SynapsePay Test Checking Account\",\n \"id\": {\n \"$oid\": \"5826113186c27370ee85bdeb\"\n },\n \"user\": {\n \"legal_names\": [\n \"Test User\"\n ],\n \"_id\": {\n \"$oid\": \"582610e986c2736d34fef12c\"\n }\n }\n },\n \"extra\": {\n \"latlon\": \"0,0\",\n \"ip\": \"192.168.0.1\",\n \"supp_id\": \"\",\n \"webhook\": \"\",\n \"process_on\": {\n \"$date\": 1478890269165\n },\n \"note\": \"\",\n \"created_on\": {\n \"$date\": 1478890269102\n }\n },\n \"timeline\": [\n {\n \"date\": {\n \"$date\": 1478890269102\n },\n \"note\": \"Transaction created\",\n \"status\": \"CREATED\",\n \"status_id\": \"1\"\n }\n ],\n \"to\": {\n \"type\": \"SYNAPSE-US\",\n \"nickname\": \"My Synapse\",\n \"id\": {\n \"$oid\": \"57ec5a2f86c27352af734011\"\n },\n \"user\": {\n \"legal_names\": [\n \"Some new name\"\n ],\n \"_id\": {\n \"$oid\": \"57d2055a86c27339ffdee4cc\"\n }\n }\n },\n \"amount\": {\n \"currency\": \"USD\",\n \"amount\": 10\n },\n \"client\": {\n \"id\": 1841,\n \"name\": \"Steven Broderick\"\n },\n \"fees\": [\n {\n \"note\": \"Synapse Facilitator Fee\",\n \"to\": {\n \"id\": {\n \"$oid\": \"559339aa86c273605ccd35df\"\n }\n },\n \"fee\": 0.2\n }\n ],\n \"_id\": {\n \"$oid\": \"5826131e86c2736d34fef141\"\n },\n \"recent_status\": {\n \"date\": {\n \"$date\": 1478890269102\n },\n \"note\": \"Transaction created\",\n \"status\": \"CREATED\",\n \"status_id\": \"1\"\n }\n}", "language": "json", "name": "Transaction" } ] } [/block]