{"info":{"_postman_id":"c925551b-b4fe-44e9-a06c-5bf76c4313da","name":"CoinCover Integration","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"description":"<html><head></head><body></body></html>","owner":"12055696","collectionId":"c925551b-b4fe-44e9-a06c-5bf76c4313da","publishedId":"2s8YemuEPe","public":true,"customColor":{"top-bar":"ffffff","right-sidebar":"022033","highlight":"0065eb"},"publishDate":"2023-07-05T13:59:23.000Z"},"item":[{"name":"ReCOVER","item":[{"name":"Authentication Token","item":[],"id":"86abc4af-0323-49f6-bf62-7a27d6072e6f","description":"<p>Our Access Protection endpoints are secured via a Bearer token. This will be supplied by your relevant contact at CoinCover at the time of integration.</p>\n<p>Different tokens are required for our Test and Production environments. (Please find test keys at the end of this section, as well as test environment variables in the Docker section below.)</p>\n","_postman_id":"86abc4af-0323-49f6-bf62-7a27d6072e6f","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"7b50a7a9-1fa7-4aa4-b35d-c6792b4834f1","id":"7b50a7a9-1fa7-4aa4-b35d-c6792b4834f1","name":"ReCOVER","type":"folder"}}},{"name":"Set up Docker","item":[],"id":"6002ebcd-85dc-4d2a-bda5-141395501f3d","description":"<p>CoinCover provides Access Protection tooling via a Docker image to enable simplified integration.<br />This enables a consistent approach to the following services</p>\n<ul>\n<li><p>Pulling and verification of CoinCover public keys</p>\n</li>\n<li><p>Registering users and posting coverage</p>\n</li>\n<li><p>Symmetric encryption of assets</p>\n</li>\n<li><p>Asymmetric encryption of assets</p>\n</li>\n<li><p>Sending encrypted data to CoinCover secure services</p>\n</li>\n</ul>\n<h3 id=\"hot-and-cold-environments\">Hot and Cold environments</h3>\n<p>The Docker image can be used in both hot and cold setup, specific to certain conditions. All services are available when connected in a hot environment.<br />Where flows are not automated and encryption is required in a manual and cold environment, the Docker image can be exported/imported to carry out the encryption functions.<br />It is important to note that public keys must be retrieved from a hot environment first, as these are required to encrypt asymmetrically. Only CoinCover approved public keys can be used with the Docker image.</p>\n<h3 id=\"setup\">Setup</h3>\n<h4 id=\"prerequisites\">Prerequisites</h4>\n<ul>\n<li><p>Docker must be installed on any machines that will run the service</p>\n</li>\n<li><p>Access token supplied to the organisation to enable the Docker image to communicate with the CoinCover services</p>\n</li>\n</ul>\n<h4 id=\"pulling-and-running-the-docker-image\">Pulling and running the Docker image</h4>\n<p><code>docker pull coincover/crypt</code></p>\n<p>To run the Docker image in an offline environment, the image needs to be exported from the hot machine and then imported into the cold environment.</p>\n<p><code>docker save -o .</code></p>\n<p>For example:</p>\n<p><code>docker save -o crypt coincover/crypt:latest</code></p>\n<p>This will output a file called 'crypt' in the directory that the command was run from. This file can then be transferred to the cold environment.</p>\n<p>Once in the cold machine, the image can be imported.</p>\n<p><code>docker load -i crypt</code></p>\n<p>To validate that the import has run correctly, run <code>docker images</code> which will show 'coincover/crypt' if the image has been imported correctly.</p>\n<h3 id=\"configuring-the-environment-variables\">Configuring the Environment Variables</h3>\n<p>To enable the Docker image to connect to CoinCover services, an environment file needs to be created and details set up to enable the connections.</p>\n<p>In the directory where the Docker image will be launched from, create a file called <code>.env</code></p>\n<p>Edit the file and setup the following environment variables appropriate to either the CoinCover Production or Test environments:</p>\n<h5 id=\"test\">TEST</h5>\n<blockquote>\n<p>PORT=3030<br />COINCOVER_SERVICES_BASE_URL=<a href=\"https://test-services.coincover.com\">https://test-services.coincover.com</a><br />COINCOVER_TOKEN=(access token supplied to Org)<br />ENVIRONMENT=test </p>\n</blockquote>\n<h5 id=\"production\">PRODUCTION</h5>\n<blockquote>\n<p>PORT=3030<br />COINCOVER_SERVICES_BASE_URL=<a href=\"https://test-services.coincover.com\">https://services.coincover.com</a><br />COINCOVER_TOKEN=(access token supplied to Org)<br />ENVIRONMENT=production </p>\n</blockquote>\n<h3 id=\"running-the-docker-image\">Running the Docker image</h3>\n<p><code>docker run -p 3030:3030 --env-file .env coincover/crypt</code></p>\n<p>This will run a service on the local machine providing a connection session to:</p>\n<p><code>http://localhost:3030</code></p>\n","_postman_id":"6002ebcd-85dc-4d2a-bda5-141395501f3d","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"7b50a7a9-1fa7-4aa4-b35d-c6792b4834f1","id":"7b50a7a9-1fa7-4aa4-b35d-c6792b4834f1","name":"ReCOVER","type":"folder"}}},{"name":"Encrypt and Store","item":[{"name":"Retrieve a Public Key","id":"cbbdabf6-3de4-4956-ac95-bd1e5788ed45","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n\t\"userEmail\":\"joebloggs@coincover.com\",\n\t\"userId\":\"jb001\",\n\t\"walletId\":\"2MwUiWHwh8NYtGyDed1pamSM72DSBYm2qAn\"\n}\n","options":{"raw":{"language":"json"}}},"url":"{{HOST}}/encryption-key","description":"<p>Retrieves a RSA4096 public key which has been signed by CoinCover to ensure its validity.</p>\n<p>Each public key request must be associated with a wallet and a user. This information is provided with the GET.</p>\n<p>The response will include a <code>signature</code> and <code>publicKey</code>.</p>\n<p>These should be saved against the user, as are required when encrypting data or storing encrypted data with CoinCover.</p>\n<h4 id=\"field-information\">Field Information</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Mandatory</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>userEmail</code></td>\n<td>Email of end-user</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>userId</code></td>\n<td>User Id of the partners end-user relevant to the partner's systems</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>walletId</code></td>\n<td>Wallet Id associated with the user. Where an on-chain reference is available, this should be used</td>\n<td>Yes</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-codes\">Response Codes</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Code</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>201</td>\n<td>Created</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Bad request</td>\n</tr>\n<tr>\n<td>500</td>\n<td>Missing mandatory field</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["encryption-key"],"host":["{{HOST}}"],"query":[],"variable":[]}},"response":[{"id":"e78765fd-8809-48e5-aa22-25a61837e9c4","name":"201 - Created","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n\t\"userEmail\":\"joebloggs@coincover.com\",\n\t\"userId\":\"jb001\",\n\t\"walletId\":\"2MwUiWHwh8NYtGyDed1pamSM72DSBYm2qAn\"\n}\n","options":{"raw":{"language":"json"}}},"url":"{{HOST}}/encryption-key"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"signature\": \"IHjvXcK9cB625yzfsm6GHix2nLB+TTaCff+wowjaRvypLo5SGuDFcgMJ6EfDoXi96SGr9IeB7sOU3lZF3ThvQMo=\",\n    \"publicKey\": \"string\",\n    \"userEmail\": \"joebloggs@coincover.com\",\n    \"userId\": \"jb001\",\n    \"walletId\": \"2MwUiWHwh8NYtGyDed1pamSM72DSBYm2qAn\",\n    \"verified\": true\n}\n"},{"id":"68c6ff9e-b372-4900-bcaf-f12655c9ddcc","name":"400 - Bad Request","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n\t\"userEmail\":\"joebloggs\",\n\t\"userId\":\"jb001\",\n\t\"walletId\":\"2MwUiWHwh8NYtGyDed1pamSM72DSBYm2qAn\"\n}\n","options":{"raw":{"language":"json"}}},"url":"{{HOST}}/encryption-key"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"cbbdabf6-3de4-4956-ac95-bd1e5788ed45"},{"name":"Encrypt with a password","id":"06e8580a-b4b6-42c4-92bc-f45d2a5c41fa","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"plain\": \"xE4t6Kv0/ThIIaZnyukmEJWse8EXkutDii29qQrapY/JNI69JMH57nKY7DN31oIJ\",\n    \"password\": \"2FKzRrl%*hA#1FWz\"\n}\n","options":{"raw":{"language":"json"}}},"url":"{{HOST}}/encrypt-pwd","description":"<p>Any private key / seed data must be encrypted with a password before it is encrypted with the CoinCover public key and sent to CoinCover.</p>\n<p>Set the password used to encrypt and provide confirmation to the end-user. This password will be required to decrypt the data in the event that they have to recover directly with CoinCover.</p>\n<p>The encryption will return a <code>cipher</code> which is the encrypted data.</p>\n<p>This encrypted data can then be passed into the <code>encrypt-rsa</code> function, along with the public key and signature requested in <code>/encryption-key</code>.</p>\n<h4 id=\"field-information\">Field Information</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Mandatory</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>plain</code></td>\n<td>Data to be encrypted</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>password</code></td>\n<td>Password to encrypt the data</td>\n<td>Yes</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-codes\">Response Codes</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Code</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>200</td>\n<td>OK</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Bad request</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"7b50a7a9-1fa7-4aa4-b35d-c6792b4834f1","id":"7b50a7a9-1fa7-4aa4-b35d-c6792b4834f1","name":"ReCOVER","type":"folder"}},"urlObject":{"path":["encrypt-pwd"],"host":["{{HOST}}"],"query":[],"variable":[]}},"response":[{"id":"8bd067ae-6b85-4fe3-b233-1ff713b4a180","name":"200 - OK","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"plain\": \"xE4t6Kv0/ThIIaZnyukmEJWse8EXkutDii29qQrapY/JNI69JMH57nKY7DN31oIJ\",\n    \"password\": \"2FKzRrl%*hA#1FWz\"\n}\n"},"url":"{{HOST}}/encrypt-pwd"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"},{"key":"Date","value":"Mon, 12 Aug 2024 09:59:45 GMT"},{"key":"Content-Length","value":"262"}],"cookie":[],"responseTime":null,"body":"{\n    \"cipher\": \"628e4a6b814882df9353069585c15bf2f23a439650293e0f34784d9c95997190398a64d589e8c71cdb0cf689408c289d79adca7396ffd56013efd4dce0ea5445b0052b911ad15eeb2e9ecf069c7d0405119b5a4d199428bb3e6152fcddd2aa0dd9149d153ee4b1ff0433418f4df3ae0b0c5e7553c007e6daa7e56f42\"\n}"},{"id":"343942cb-7e34-4e57-808a-b932cc33e83d","name":"400 - Bad Request","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"plain\": \"xE4t6Kv0/ThIIaZnyukmEJWse8EXkutDii29qQrapY/JNI69JMH57nKY7DN31oIJ\",\n    \"password\": \"2FKzRrl%*hA#1FWz\"\n}\n"},"url":"{{HOST}}/encrypt-pwd"},"status":"Bad Request","code":400,"_postman_previewlanguage":"plain","header":[{"key":"Date","value":"Mon, 12 Aug 2024 10:00:48 GMT"},{"key":"Content-Length","value":"0"}],"cookie":[],"responseTime":null,"body":null}],"_postman_id":"06e8580a-b4b6-42c4-92bc-f45d2a5c41fa"},{"name":"Encrypt with public key","id":"03ad53c1-1185-45cc-a818-df8a387042b1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{ \n    \"pub\": \"r2d2d2d2d2d424547494e205055424c4943204b45592d2d2d2d2d0a4d494943496a414e42676b71686b6947397730424151454641414f43416738414d49494343674b4341674541743448436e5057366f3332794a744d334d77586b0a2f7242715253375a457a586a374a584e316757356e4862323850654b51316f4c6862345a44323159386e6d4c3479736a74635678726966384d5472662f676f550a65706d74586e6f6a683143432b5845597a47346a6e4e493142434d745151332b66656e713769324e384d742f4c6256724b70486865584b59413157364c4c616a0a536f644a6c642b7a6d4d4a2b766a34786744414a372f4b44764267522f6e5034456a50646d667a66566f516c42614e3046684d67356a6a6870636766516f79380a72306b754e55556f6a732b6e6c30546d2f61673449695367474b476f6f2b32736e2b4743366c6143386842493951695042794a462b724c5a715953692f5252660a2b756c582b5876574a392b36577a646c474c4a71474d506e515451732f646239306f7431487664304346332b3753384f63772f4f7439796f6b365531535a42300a756b73374a394678706c71642b546e38534f3641384a6261534d504d62366269767665636736355658565264446e7968776d56425536445365756379334758370a7a64756a543774443946633870584e4a785546786543326d4d5474653255616e77724d31656c6b4a4349612b3246455a54476f4576484363694c4a45374f72340a64582b372f587a575156526b446b52342b6a76736b77517074784b2f6d6657704d3058506c4a5a4548463152666d514f573867462f56736150563668695337390a6a697842366d5832346766672f5062517556695245416c4a5a32534a36496b4a484a4c627a44397964494154374d4b36307033384c4a45376b365845373666630a653551466571746c696a78753163614765314b655250652f7175436a65746d526e77546c476f765056625a5a4b7467634a6a4a56366a31776c675238526e55520a494e48314e7a4364375847323650394c44414b394a6a63434177454141513d3d0a2d2d2d2d2d454e44205055424c4943204b45592d2d2d2d2d0a\",\n    \"signature\":\"IHjvXcK9cB625yzfsm6GHix2nLB+TTaCff+wowjaRvypLo5SGuDFcgMJ6EfDoXi96SGr9IeB7sOU3lZF3ThvQMo=\",\n    \"plain\": \"be3111cbfb2c07ce04d792d20121791c56d9e3d5ed6ba216f6ae21ba467b97ba8513d2c24ba4303bdb9de432682680748003ce52401c57ffc33542bd7a376268dadc57f572ab76651287d37618e507023964bf85b85a8afeb68f1259ff4172e0dd621ffe8f9d2027432a3d801c0dcac431b92cf42a55defa43eed93e\"\n}\n","options":{"raw":{"language":"json"}}},"url":"{{HOST}}/encrypt-rsa","description":"<p>This call is used to encrypt data with a public key and signature.</p>\n<p>Public keys and signatures must originate from CoinCover and be retrieved using <code>/encryption-key</code><br />end-point.</p>\n<p>Note that the size of the <code>plain</code> field is limited to 190 bytes.</p>\n<h4 id=\"field-information\">Field Information</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Mandatory</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>pub</code></td>\n<td>Public key from /encryption-key response</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>signature</code></td>\n<td>Signature from /encryption-key response</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>plain</code></td>\n<td>Data to be asymmetrically encrypted</td>\n<td>Yes</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-codes\">Response Codes</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Code</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>200</td>\n<td>OK</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Bad request</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["encrypt-rsa"],"host":["{{HOST}}"],"query":[],"variable":[]}},"response":[{"id":"9135582a-d794-48b0-9ed7-b6e020874311","name":"200 - OK","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{ \n    \"pub\": \"r2d2d2d2d2d424547494e205055424c4943204b45592d2d2d2d2d0a4d494943496a414e42676b71686b6947397730424151454641414f43416738414d49494343674b4341674541743448436e5057366f3332794a744d334d77586b0a2f7242715253375a457a586a374a584e316757356e4862323850654b51316f4c6862345a44323159386e6d4c3479736a74635678726966384d5472662f676f550a65706d74586e6f6a683143432b5845597a47346a6e4e493142434d745151332b66656e713769324e384d742f4c6256724b70486865584b59413157364c4c616a0a536f644a6c642b7a6d4d4a2b766a34786744414a372f4b44764267522f6e5034456a50646d667a66566f516c42614e3046684d67356a6a6870636766516f79380a72306b754e55556f6a732b6e6c30546d2f61673449695367474b476f6f2b32736e2b4743366c6143386842493951695042794a462b724c5a715953692f5252660a2b756c582b5876574a392b36577a646c474c4a71474d506e515451732f646239306f7431487664304346332b3753384f63772f4f7439796f6b365531535a42300a756b73374a394678706c71642b546e38534f3641384a6261534d504d62366269767665636736355658565264446e7968776d56425536445365756379334758370a7a64756a543774443946633870584e4a785546786543326d4d5474653255616e77724d31656c6b4a4349612b3246455a54476f4576484363694c4a45374f72340a64582b372f587a575156526b446b52342b6a76736b77517074784b2f6d6657704d3058506c4a5a4548463152666d514f573867462f56736150563668695337390a6a697842366d5832346766672f5062517556695245416c4a5a32534a36496b4a484a4c627a44397964494154374d4b36307033384c4a45376b365845373666630a653551466571746c696a78753163614765314b655250652f7175436a65746d526e77546c476f765056625a5a4b7467634a6a4a56366a31776c675238526e55520a494e48314e7a4364375847323650394c44414b394a6a63434177454141513d3d0a2d2d2d2d2d454e44205055424c4943204b45592d2d2d2d2d0a\",\n    \"signature\":\"IHjvXcK9cB625yzfsm6GHix2nLB+TTaCff+wowjaRvypLo5SGuDFcgMJ6EfDoXi96SGr9IeB7sOU3lZF3ThvQMo=\",\n    \"plain\": \"be3111cbfb2c07ce04d792d20121791c56d9e3d5ed6ba216f6ae21ba467b97ba8513d2c24ba4303bdb9de432682680748003ce52401c57ffc33542bd7a376268dadc57f572ab76651287d37618e507023964bf85b85a8afeb68f1259ff4172e0dd621ffe8f9d2027432a3d801c0dcac431b92cf42a55defa43eed93e\"\n}\n","options":{"raw":{"language":"json"}}},"url":"{{HOST}}/encrypt-rsa"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"cipher\": \"628e4a6b814882df9353069585c15bf2f23a439650293e0f34784d9c95997190398a64d589e8c71cdb0cf689408c289d79adca7396ffd56013efd4dce0ea5445b0052b911ad15eeb2e9ecf069c7d0405119b5a4d199428bb3e6152fcddd2aa0dd9149d153ee4b1ff0433418f4df3ae0b0c5e7553c007e6daa7e56f42\"\n}"},{"id":"d243086e-512e-46ef-b7d3-efc6cd199f5a","name":"400 - Bad Request","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{ \n    \"pub\": \"r2d2d2d2d2d424547494e205055424c4943204b45592d2d2d2d2d0a4d494943496a414e42676b71686b6947397730424151454641414f43416738414d49494343674b4341674541743448436e5057366f3332794a744d334d77586b0a2f7242715253375a457a586a374a584e316757356e4862323850654b51316f4c6862345a44323159386e6d4c3479736a74635678726966384d5472662f676f550a65706d74586e6f6a683143432b5845597a47346a6e4e493142434d745151332b66656e713769324e384d742f4c6256724b70486865584b59413157364c4c616a0a536f644a6c642b7a6d4d4a2b766a34786744414a372f4b44764267522f6e5034456a50646d667a66566f516c42614e3046684d67356a6a6870636766516f79380a72306b754e55556f6a732b6e6c30546d2f61673449695367474b476f6f2b32736e2b4743366c6143386842493951695042794a462b724c5a715953692f5252660a2b756c582b5876574a392b36577a646c474c4a71474d506e515451732f646239306f7431487664304346332b3753384f63772f4f7439796f6b365531535a42300a756b73374a394678706c71642b546e38534f3641384a6261534d504d62366269767665636736355658565264446e7968776d56425536445365756379334758370a7a64756a543774443946633870584e4a785546786543326d4d5474653255616e77724d31656c6b4a4349612b3246455a54476f4576484363694c4a45374f72340a64582b372f587a575156526b446b52342b6a76736b77517074784b2f6d6657704d3058506c4a5a4548463152666d514f573867462f56736150563668695337390a6a697842366d5832346766672f5062517556695245416c4a5a32534a36496b4a484a4c627a44397964494154374d4b36307033384c4a45376b365845373666630a653551466571746c696a78753163614765314b655250652f7175436a65746d526e77546c476f765056625a5a4b7467634a6a4a56366a31776c675238526e55520a494e48314e7a4364375847323650394c44414b394a6a63434177454141513d3d0a2d2d2d2d2d454e44205055424c4943204b45592d2d2d2d2d0a\",\n    \"signature\":\"IHjvXcK9cB625yzfsm6GHix2nLB+TTaCff+wowjaRvypLo5SGuDFcgMJ6EfDoXi96SGr9IeB7sOU3lZF3ThvQMo=\",\n    \"plain\": \"be3111cbfb2c07ce04d792d20121791c56d9e3d5ed6ba216f6ae21ba467b97ba8513d2c24ba4303bdb9de432682680748003ce52401c57ffc33542bd7a376268dadc57f572ab76651287d37618e507023964bf85b85a8afeb68f1259ff4172e0dd621ffe8f9d2027432a3d801c0dcac431b92cf42a55defa43eed93e\"\n}\n","options":{"raw":{"language":"json"}}},"url":"{{HOST}}/encrypt-rsa"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"03ad53c1-1185-45cc-a818-df8a387042b1"},{"name":"Store encrypted data","id":"60e5309f-4636-489a-b841-4cb91a3f5237","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"endUserId\": \"jb001\",\n    \"data\": \"2e49d511ea4f7fd5be49fc7de58d400818bea812d96cdb6f1fba3590305ed504665ce507922d9c6a9a7e74abafc7b3c2caf322eb419a8d56edc6280501ca0994526d98f60b149d70521346140e8382f5b474b52968d80f8e7d13011df0d39f9fac49653271f2f98bd1060bc8bbc99b6adcfabce720098d622f082bbe6ea43ec6f631ba81e5d08c282ba591eb7a25aaef305410b07bdf0bd07fa3492f1dad91004d9a3e26f47fffce1a6938d86d42de48f6ba4283d8bb0e77c65b7e8b97f5c87e73020d2a3437c30c6d410d7764147e33e84d02182f17a2ccd1ccc6d59a5b4fa484350320f15f95bcd42f1fc026404fba98235c33c7fdec49f7fb5b388bb4e69f6fe5fdb2bde59f7c650a657f15a91ba9298b70a70b65bf9cb04a723b700ee5252f53f04d0d9b451886eb5795534d82a0a390cc01c33307e04f427eb8b10066c6adab538105356c7445a34b96d99f35d3d5885b93cb1b0e8b8ff28cc9820d5ebe9ac60f28b6fee3852eb48e2dfed5bcbc2d1f1ebe805cdc418e7c45fbedf583505998eec917f65a226b208d0a8375066ca79ca9324116d7846f8b9351deba6523b5179af829803c58f98af3c7f8302c7cb5a009f50cb4d84a5a24e309ee975956916371b5d102ddb7789e0217fe73e155c35d5739e94200a7f37be8267c04503cec815f10df922f65b78836e5ff061ec7c48c83c0bf029232fc95f4d36e32ffab\",\n    \"backupKey\": \"r2d2d2d2d2d424547494e205055424c4943204b45592d2d2d2d2d0a4d494943496a414e42676b71686b6947397730424151454641414f43416738414d49494343674b4341674541743448436e5057366f3332794a744d334d77586b0a2f7242715253375a457a586a374a584e316757356e4862323850654b51316f4c6862345a44323159386e6d4c3479736a74635678726966384d5472662f676f550a65706d74586e6f6a683143432b5845597a47346a6e4e493142434d745151332b66656e713769324e384d742f4c6256724b70486865584b59413157364c4c616a0a536f644a6c642b7a6d4d4a2b766a34786744414a372f4b44764267522f6e5034456a50646d667a66566f516c42614e3046684d67356a6a6870636766516f79380a72306b754e55556f6a732b6e6c30546d2f61673449695367474b476f6f2b32736e2b4743366c6143386842493951695042794a462b724c5a715953692f5252660a2b756c582b5876574a392b36577a646c474c4a71474d506e515451732f646239306f7431487664304346332b3753384f63772f4f7439796f6b365531535a42300a756b73374a394678706c71642b546e38534f3641384a6261534d504d62366269767665636736355658565264446e7968776d56425536445365756379334758370a7a64756a543774443946633870584e4a785546786543326d4d5474653255616e77724d31656c6b4a4349612b3246455a54476f4576484363694c4a45374f72340a64582b372f587a575156526b446b52342b6a76736b77517074784b2f6d6657704d3058506c4a5a4548463152666d514f573867462f56736150563668695337390a6a697842366d5832346766672f5062517556695245416c4a5a32534a36496b4a484a4c627a44397964494154374d4b36307033384c4a45376b365845373666630a653551466571746c696a78753163614765314b655250652f7175436a65746d526e77546c476f765056625a5a4b7467634a6a4a56366a31776c675238526e55520a494e48314e7a4364375847323650394c44414b394a6a63434177454141513d3d0a2d2d2d2d2d454e44205055424c4943204b45592d2d2d2d2d0a\"\n}\n","options":{"raw":{"language":"json"}}},"url":"{{HOST}}/store","description":"<p>Encrypted data can be sent to CoinCover to be stored on our secure platform.<br />Ensure that any data has been encrypted in line with requirements before it is posted to CoinCover.</p>\n<h4 id=\"field-information\">Field Information</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Mandatory</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>endUserId</td>\n<td>User Id of the partners end-user relevant to the partners systems</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>data</td>\n<td>Data to be stored securely with CoinCover</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>backupKey</td>\n<td>Public key used to encrypt the data</td>\n<td>Yes</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-codes\">Response Codes</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Code</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>201</td>\n<td>Created</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Bad request</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["store"],"host":["{{HOST}}"],"query":[],"variable":[]}},"response":[{"id":"ad572b70-1f1f-426f-b385-dbcbf611af1a","name":"201 - Created","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"endUserId\": \"jb001\",\n    \"data\": \"2e49d511ea4f7fd5be49fc7de58d400818bea812d96cdb6f1fba3590305ed504665ce507922d9c6a9a7e74abafc7b3c2caf322eb419a8d56edc6280501ca0994526d98f60b149d70521346140e8382f5b474b52968d80f8e7d13011df0d39f9fac49653271f2f98bd1060bc8bbc99b6adcfabce720098d622f082bbe6ea43ec6f631ba81e5d08c282ba591eb7a25aaef305410b07bdf0bd07fa3492f1dad91004d9a3e26f47fffce1a6938d86d42de48f6ba4283d8bb0e77c65b7e8b97f5c87e73020d2a3437c30c6d410d7764147e33e84d02182f17a2ccd1ccc6d59a5b4fa484350320f15f95bcd42f1fc026404fba98235c33c7fdec49f7fb5b388bb4e69f6fe5fdb2bde59f7c650a657f15a91ba9298b70a70b65bf9cb04a723b700ee5252f53f04d0d9b451886eb5795534d82a0a390cc01c33307e04f427eb8b10066c6adab538105356c7445a34b96d99f35d3d5885b93cb1b0e8b8ff28cc9820d5ebe9ac60f28b6fee3852eb48e2dfed5bcbc2d1f1ebe805cdc418e7c45fbedf583505998eec917f65a226b208d0a8375066ca79ca9324116d7846f8b9351deba6523b5179af829803c58f98af3c7f8302c7cb5a009f50cb4d84a5a24e309ee975956916371b5d102ddb7789e0217fe73e155c35d5739e94200a7f37be8267c04503cec815f10df922f65b78836e5ff061ec7c48c83c0bf029232fc95f4d36e32ffab\",\n    \"backupKey\": \"r2d2d2d2d2d424547494e205055424c4943204b45592d2d2d2d2d0a4d494943496a414e42676b71686b6947397730424151454641414f43416738414d49494343674b4341674541743448436e5057366f3332794a744d334d77586b0a2f7242715253375a457a586a374a584e316757356e4862323850654b51316f4c6862345a44323159386e6d4c3479736a74635678726966384d5472662f676f550a65706d74586e6f6a683143432b5845597a47346a6e4e493142434d745151332b66656e713769324e384d742f4c6256724b70486865584b59413157364c4c616a0a536f644a6c642b7a6d4d4a2b766a34786744414a372f4b44764267522f6e5034456a50646d667a66566f516c42614e3046684d67356a6a6870636766516f79380a72306b754e55556f6a732b6e6c30546d2f61673449695367474b476f6f2b32736e2b4743366c6143386842493951695042794a462b724c5a715953692f5252660a2b756c582b5876574a392b36577a646c474c4a71474d506e515451732f646239306f7431487664304346332b3753384f63772f4f7439796f6b365531535a42300a756b73374a394678706c71642b546e38534f3641384a6261534d504d62366269767665636736355658565264446e7968776d56425536445365756379334758370a7a64756a543774443946633870584e4a785546786543326d4d5474653255616e77724d31656c6b4a4349612b3246455a54476f4576484363694c4a45374f72340a64582b372f587a575156526b446b52342b6a76736b77517074784b2f6d6657704d3058506c4a5a4548463152666d514f573867462f56736150563668695337390a6a697842366d5832346766672f5062517556695245416c4a5a32534a36496b4a484a4c627a44397964494154374d4b36307033384c4a45376b365845373666630a653551466571746c696a78753163614765314b655250652f7175436a65746d526e77546c476f765056625a5a4b7467634a6a4a56366a31776c675238526e55520a494e48314e7a4364375847323650394c44414b394a6a63434177454141513d3d0a2d2d2d2d2d454e44205055424c4943204b45592d2d2d2d2d0a\"\n}\n","options":{"raw":{"language":"json"}}},"url":"{{HOST}}/store"},"status":"Created","code":201,"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":null},{"id":"f91cd703-6530-4fa5-9850-89f27594bb0b","name":"400 - Bad Request","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"endUserId\": \"jb001\",\n    \"data\": \"2e49d511ea4f7fd5be49fc7de58d400818bea812d96cdb6f1fba3590305ed504665ce507922d9c6a9a7e74abafc7b3c2caf322eb419a8d56edc6280501ca0994526d98f60b149d70521346140e8382f5b474b52968d80f8e7d13011df0d39f9fac49653271f2f98bd1060bc8bbc99b6adcfabce720098d622f082bbe6ea43ec6f631ba81e5d08c282ba591eb7a25aaef305410b07bdf0bd07fa3492f1dad91004d9a3e26f47fffce1a6938d86d42de48f6ba4283d8bb0e77c65b7e8b97f5c87e73020d2a3437c30c6d410d7764147e33e84d02182f17a2ccd1ccc6d59a5b4fa484350320f15f95bcd42f1fc026404fba98235c33c7fdec49f7fb5b388bb4e69f6fe5fdb2bde59f7c650a657f15a91ba9298b70a70b65bf9cb04a723b700ee5252f53f04d0d9b451886eb5795534d82a0a390cc01c33307e04f427eb8b10066c6adab538105356c7445a34b96d99f35d3d5885b93cb1b0e8b8ff28cc9820d5ebe9ac60f28b6fee3852eb48e2dfed5bcbc2d1f1ebe805cdc418e7c45fbedf583505998eec917f65a226b208d0a8375066ca79ca9324116d7846f8b9351deba6523b5179af829803c58f98af3c7f8302c7cb5a009f50cb4d84a5a24e309ee975956916371b5d102ddb7789e0217fe73e155c35d5739e94200a7f37be8267c04503cec815f10df922f65b78836e5ff061ec7c48c83c0bf029232fc95f4d36e32ffab\",\n    \"backupKey\": \"r2d2d2d2d2d424547494e205055424c4943204b45592d2d2d2d2d0a4d494943496a414e42676b71686b6947397730424151454641414f43416738414d49494343674b4341674541743448436e5057366f3332794a744d334d77586b0a2f7242715253375a457a586a374a584e316757356e4862323850654b51316f4c6862345a44323159386e6d4c3479736a74635678726966384d5472662f676f550a65706d74586e6f6a683143432b5845597a47346a6e4e493142434d745151332b66656e713769324e384d742f4c6256724b70486865584b59413157364c4c616a0a536f644a6c642b7a6d4d4a2b766a34786744414a372f4b44764267522f6e5034456a50646d667a66566f516c42614e3046684d67356a6a6870636766516f79380a72306b754e55556f6a732b6e6c30546d2f61673449695367474b476f6f2b32736e2b4743366c6143386842493951695042794a462b724c5a715953692f5252660a2b756c582b5876574a392b36577a646c474c4a71474d506e515451732f646239306f7431487664304346332b3753384f63772f4f7439796f6b365531535a42300a756b73374a394678706c71642b546e38534f3641384a6261534d504d62366269767665636736355658565264446e7968776d56425536445365756379334758370a7a64756a543774443946633870584e4a785546786543326d4d5474653255616e77724d31656c6b4a4349612b3246455a54476f4576484363694c4a45374f72340a64582b372f587a575156526b446b52342b6a76736b77517074784b2f6d6657704d3058506c4a5a4548463152666d514f573867462f56736150563668695337390a6a697842366d5832346766672f5062517556695245416c4a5a32534a36496b4a484a4c627a44397964494154374d4b36307033384c4a45376b365845373666630a653551466571746c696a78753163614765314b655250652f7175436a65746d526e77546c476f765056625a5a4b7467634a6a4a56366a31776c675238526e55520a494e48314e7a4364375847323650394c44414b394a6a63434177454141513d3d0a2d2d2d2d2d454e44205055424c4943204b45592d2d2d2d2d0a\"\n}\n","options":{"raw":{"language":"json"}}},"url":"{{HOST}}/store"},"status":"Bad Request","code":400,"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":null}],"_postman_id":"60e5309f-4636-489a-b841-4cb91a3f5237"},{"name":"Store encrypted PII data","id":"f0c6e901-4201-4966-b4a8-8d6a83c0d006","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"endUserId\": \"jb001\",\n    \"pii\": {\"\": \"\"}\n    \n}","options":{"raw":{"language":"json"}}},"url":"{{HOST}}/store-kyc","description":"<h4 id=\"field-information\">Field Information</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Mandatory</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>endUserId</td>\n<td>User Id of the partners end-user relevant to the partners systems</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>pii</td>\n<td>Data to be stored securely with CoinCover. Json body.</td>\n<td>Yes</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"7b50a7a9-1fa7-4aa4-b35d-c6792b4834f1","id":"7b50a7a9-1fa7-4aa4-b35d-c6792b4834f1","name":"ReCOVER","type":"folder"}},"urlObject":{"path":["store-kyc"],"host":["{{HOST}}"],"query":[],"variable":[]}},"response":[{"id":"e76c840c-408f-456a-83d2-0bcff2cf6a60","name":"201 - Created","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"endUserId\": \"jb001\",\n    \"pii\": {\"\": \"\"}\n    \n}","options":{"raw":{"language":"json"}}},"url":"{{HOST}}/store-kyc"},"status":"Created","code":201,"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":null},{"id":"a33ba64b-29f2-4472-a1eb-eab22c59ed52","name":"400 - Bad Request","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"endUserId\": \"jb001\",\n    \"pii\": {\"\": \"\"}\n    \n}","options":{"raw":{"language":"json"}}},"url":"{{HOST}}/store-kyc"},"status":"Bad Request","code":400,"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":null}],"_postman_id":"f0c6e901-4201-4966-b4a8-8d6a83c0d006"},{"name":"Store file","id":"ff675005-4797-43c3-89e8-a27d335fec43","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"endUserId","value":"","type":"text"},{"key":"backupKey","value":"","type":"text"}],"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","value":null}]},"url":"{{HOST}}/store-file","description":"<p>You can send a file to be stored in the CoinCover secure platform against an end user ID.</p>\n<p>The endUserId Header is required</p>\n<h4 id=\"response-codes\">Response Codes</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Code</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>201</td>\n<td>Created</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Bad request</td>\n</tr>\n<tr>\n<td>403</td>\n<td>Unauthorized</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"7b50a7a9-1fa7-4aa4-b35d-c6792b4834f1","id":"7b50a7a9-1fa7-4aa4-b35d-c6792b4834f1","name":"ReCOVER","type":"folder"}},"urlObject":{"path":["store-file"],"host":["{{HOST}}"],"query":[],"variable":[]}},"response":[{"id":"2d20ac64-9b60-4f36-b2f7-a1a51048842b","name":"201 - Created","originalRequest":{"method":"POST","header":[{"key":"endUserId","value":"","type":"text"},{"key":"backupKey","value":"","type":"text"}],"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","value":null}]},"url":"{{HOST}}/store-file"},"status":"Created","code":201,"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":null},{"id":"338d426f-8243-45a7-a7f7-2fe24a225391","name":"400 - Bad Request","originalRequest":{"method":"POST","header":[{"key":"endUserId","value":"","type":"text"},{"key":"backupKey","value":"","type":"text"}],"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","value":null}]},"url":"{{HOST}}/store-file"},"status":"Bad Request","code":400,"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":null}],"_postman_id":"ff675005-4797-43c3-89e8-a27d335fec43"},{"name":"Post Sale","id":"9dd06775-10a6-4b6e-92f0-0e55ded58f04","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"userId\": \"jb001\",\n    \"firstName\": \"Joe\",\n    \"lastName\": \"Blogs\",\n    \"dob\": \"1975-05-01T00:00:00Z\",\n    \"company\": \"\",\n    \"residenceCountry\": \"US\",\n    \"nationality\": \"US\",\n    \"kycCompleted\": true,\n    \"2faActive\": true,\n    \"productType\": \"DPG\",\n    \"requestType\": \"NEW\",\n    \"orderId\": \"5926\",\n    \"levelUSD\": 0,\n    \"startDate\": \"2022-01-01T00:00:00Z\",\n    \"endDate\": \"2023-01-01T00:00:00Z\",\n    \"walletId\": \"2MwUiWHwh8NYtGyDed1pamSM72DSBYm2qAn\",\n    \"backupKey\": \"2e49d511ea4f7fd5be49fc7de58d400818bea812d96cdb6f1fba3590305ed504665ce507922d9c6a9a7e74abafc7b3c2caf322eb419a8d56edc6280501ca0994526d98f60b149d70521346140e8382f5b474b52968d80f8e7d13011df0d39f9fac49653271f2f98bd1060bc8bbc99b6adcfabce720098d622f082bbe6ea43ec6f631ba81e5d08c282ba591eb7a25aaef305410b07bdf0bd07fa3492f1dad91004d9a3e26f47fffce1a6938d86d42de48f6ba4283d8bb0e77c65b7e8b97f5c87e73020d2a3437c30c6d410d7764147e33e84d02182f17a2ccd1ccc6d59a5b4fa484350320f15f95bcd42f1fc026404fba98235c33c7fdec49f7fb5b388bb4e69f6fe5fdb2bde59f7c650a657f15a91ba9298b70a70b65bf9cb04a723b700ee5252f53f04d0d9b451886eb5795534d82a0a390cc01c33307e04f427eb8b10066c6adab538105356c7445a34b96d99f35d3d5885b93cb1b0e8b8ff28cc9820d5ebe9ac60f28b6fee3852eb48e2dfed5bcbc2d1f1ebe805cdc418e7c45fbedf583505998eec917f65a226b208d0a8375066ca79ca9324116d7846f8b9351deba6523b5179af829803c58f98af3c7f8302c7cb5a009f50cb4d84a5a24e309ee975956916371b5d102ddb7789e0217fe73e155c35d5739e94200a7f37be8267c04503cec815f10df922f65b78836e5ff061ec7c48c83c0bf029232fc95f4d36e32ffab\"\n}\n"},"url":"{{HOST}}/update-product","description":"<p>For a Customer's Disaster Recovery to become active, a sale needs to be posted to our API.</p>\n<p>This applies for new sales and cancellations.<br />This is also the mechanism for end-user KYC data to be shared with CoinCover.</p>\n<p>At the end of each month, CoinCover will review the data and retrospectively bill, based what has been posted to the API and in line with contractual terms.</p>\n<p>It is important to note that with these posts, we require essential user details as well as declarations that they have been verified via suitable KYC practices and that 2FA is active on an account.</p>\n<h4 id=\"save-the-response\">Save the response</h4>\n<p>When a successful post is received, it returns an Id.<br />This Id must be saved.</p>\n<h4 id=\"field-information\">Field Information</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Mandatory</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>userId</code></td>\n<td>User Id of the partners end-user relevant to the partners systems</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>firstName</code></td>\n<td>First name</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>lastName</code></td>\n<td>Last name</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>dob</code></td>\n<td>Date of Birth</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>company</code></td>\n<td>Company of user where related to a business</td>\n<td>No</td>\n</tr>\n<tr>\n<td><code>residenceCountry</code></td>\n<td></td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>kycCompleted</code></td>\n<td>Declaration of <strong>true</strong> is required</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>2faActive</code></td>\n<td>Declaration of <strong>true</strong> is required</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>nationality</code></td>\n<td>Nationality of end-user  <br /><a href=\"https://www.iso.org/obp/ui/#search\">https://www.iso.org/obp/ui/#search</a> for supported format</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>productType</code></td>\n<td>For DR this will always be <strong>DPG</strong></td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>requestType</code></td>\n<td><code>new</code> or <code>cancel</code></td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>orderId</code></td>\n<td>Partner unique reference for the post to support additional reconciliation</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>levelUSD</code></td>\n<td>Set this to 0</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>startDate</code></td>\n<td>Date that the policy starts.  <br />Set data to the following format as per the example format.  <br />YYYY-MM-DDT00:00:00Z</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>endDate</code></td>\n<td>Date that the policy ends.  <br />Set data to the following format as per the example format.  <br />YYYY-MM-DDT00:00:00Z</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>walletId</code></td>\n<td></td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>backupKey</code></td>\n<td>Public key used to encrypt the data</td>\n<td>Yes</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-codes\">Response Codes</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Codes</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>201</td>\n<td>OK with response ID.  <br />Save this ID for reference</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Bad request</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["update-product"],"host":["{{HOST}}"],"query":[],"variable":[]}},"response":[{"id":"6bab8fc4-6566-414f-a967-5c2b746db4a8","name":"201 - Created","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"userId\": \"jb001\",\n    \"firstName\": \"Joe\",\n    \"lastName\": \"Blogs\",\n    \"dob\": \"1975-05-01T00:00:00Z\",\n    \"company\": \"\",\n    \"residenceCountry\": \"US\",\n    \"nationality\": \"US\",\n    \"kycCompleted\": true,\n    \"2faActive\": true,\n    \"productType\": \"DPG\",\n    \"requestType\": \"NEW\",\n    \"orderId\": \"5926\",\n    \"levelUSD\": 0,\n    \"startDate\": \"2022-01-01T00:00:00Z\",\n    \"endDate\": \"2023-01-01T00:00:00Z\",\n    \"walletId\": \"2MwUiWHwh8NYtGyDed1pamSM72DSBYm2qAn\",\n    \"backupKey\": \"2e49d511ea4f7fd5be49fc7de58d400818bea812d96cdb6f1fba3590305ed504665ce507922d9c6a9a7e74abafc7b3c2caf322eb419a8d56edc6280501ca0994526d98f60b149d70521346140e8382f5b474b52968d80f8e7d13011df0d39f9fac49653271f2f98bd1060bc8bbc99b6adcfabce720098d622f082bbe6ea43ec6f631ba81e5d08c282ba591eb7a25aaef305410b07bdf0bd07fa3492f1dad91004d9a3e26f47fffce1a6938d86d42de48f6ba4283d8bb0e77c65b7e8b97f5c87e73020d2a3437c30c6d410d7764147e33e84d02182f17a2ccd1ccc6d59a5b4fa484350320f15f95bcd42f1fc026404fba98235c33c7fdec49f7fb5b388bb4e69f6fe5fdb2bde59f7c650a657f15a91ba9298b70a70b65bf9cb04a723b700ee5252f53f04d0d9b451886eb5795534d82a0a390cc01c33307e04f427eb8b10066c6adab538105356c7445a34b96d99f35d3d5885b93cb1b0e8b8ff28cc9820d5ebe9ac60f28b6fee3852eb48e2dfed5bcbc2d1f1ebe805cdc418e7c45fbedf583505998eec917f65a226b208d0a8375066ca79ca9324116d7846f8b9351deba6523b5179af829803c58f98af3c7f8302c7cb5a009f50cb4d84a5a24e309ee975956916371b5d102ddb7789e0217fe73e155c35d5739e94200a7f37be8267c04503cec815f10df922f65b78836e5ff061ec7c48c83c0bf029232fc95f4d36e32ffab\"\n}\n"},"url":"{{HOST}}/update-product"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"string\"\n}"},{"id":"c9d293df-52e0-470b-b8ce-e6abf54fc2da","name":"400 - Bad Request","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"userId\": \"jb001\",\n    \"firstName\": \"Joe\",\n    \"lastName\": \"Blogs\",\n    \"dob\": \"1975-05-01T00:00:00Z\",\n    \"company\": \"\",\n    \"residenceCountry\": \"US\",\n    \"nationality\": \"US\",\n    \"kycCompleted\": true,\n    \"2faActive\": true,\n    \"productType\": \"DPG\",\n    \"requestType\": \"NEW\",\n    \"orderId\": \"5926\",\n    \"levelUSD\": 0,\n    \"startDate\": \"2022-01-01T00:00:00Z\",\n    \"endDate\": \"2023-01-01T00:00:00Z\",\n    \"walletId\": \"2MwUiWHwh8NYtGyDed1pamSM72DSBYm2qAn\",\n    \"backupKey\": \"2e49d511ea4f7fd5be49fc7de58d400818bea812d96cdb6f1fba3590305ed504665ce507922d9c6a9a7e74abafc7b3c2caf322eb419a8d56edc6280501ca0994526d98f60b149d70521346140e8382f5b474b52968d80f8e7d13011df0d39f9fac49653271f2f98bd1060bc8bbc99b6adcfabce720098d622f082bbe6ea43ec6f631ba81e5d08c282ba591eb7a25aaef305410b07bdf0bd07fa3492f1dad91004d9a3e26f47fffce1a6938d86d42de48f6ba4283d8bb0e77c65b7e8b97f5c87e73020d2a3437c30c6d410d7764147e33e84d02182f17a2ccd1ccc6d59a5b4fa484350320f15f95bcd42f1fc026404fba98235c33c7fdec49f7fb5b388bb4e69f6fe5fdb2bde59f7c650a657f15a91ba9298b70a70b65bf9cb04a723b700ee5252f53f04d0d9b451886eb5795534d82a0a390cc01c33307e04f427eb8b10066c6adab538105356c7445a34b96d99f35d3d5885b93cb1b0e8b8ff28cc9820d5ebe9ac60f28b6fee3852eb48e2dfed5bcbc2d1f1ebe805cdc418e7c45fbedf583505998eec917f65a226b208d0a8375066ca79ca9324116d7846f8b9351deba6523b5179af829803c58f98af3c7f8302c7cb5a009f50cb4d84a5a24e309ee975956916371b5d102ddb7789e0217fe73e155c35d5739e94200a7f37be8267c04503cec815f10df922f65b78836e5ff061ec7c48c83c0bf029232fc95f4d36e32ffab\"\n}\n"},"url":"{{HOST}}/update-product"},"status":"Bad Request","code":400,"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":null}],"_postman_id":"9dd06775-10a6-4b6e-92f0-0e55ded58f04"}],"id":"5882931b-c38a-4e41-bea5-2aab8ff7f700","_postman_id":"5882931b-c38a-4e41-bea5-2aab8ff7f700","description":"","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"7b50a7a9-1fa7-4aa4-b35d-c6792b4834f1","id":"7b50a7a9-1fa7-4aa4-b35d-c6792b4834f1","name":"ReCOVER","type":"folder"}}},{"name":"Decrypt","item":[{"name":"Decrypt using private key","id":"a4819323-2bdd-4e6b-b1da-ce4a9cdc5a2b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"priv\": \"<Private Key>\",\n    \"cipher\": \"<Public Key Encrypted Data>\"\n}\n"},"url":"{{HOST}}/decrypt-rsa","description":"<p>At no point is a private key returned as part of this end-point. We manually return data to the customer based on successful identity verification. Also due to the cold nature of storing our private keys it would not be possible for this end-point to return data.</p>\n<h4 id=\"field-information\">Field Information</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Mandatory</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>priv</code></td>\n<td>Private key associated with the public key used to encrypt the data</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>cipher</code></td>\n<td>Encrypted data to be decrypted</td>\n<td>Yes</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-codes\">Response Codes</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Codes</strong></th>\n<th></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>200</td>\n<td>OK</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["decrypt-rsa"],"host":["{{HOST}}"],"query":[],"variable":[]}},"response":[{"id":"51f7386d-0183-4072-838a-fe9501bff452","name":"200 - OK","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"priv\": \"<Private Key>\",\n    \"cipher\": \"<Public Key Encrypted Data>\"\n}\n"},"url":"{{HOST}}/decrypt-rsa"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"plain\": \"string\"\n}"},{"id":"0d9eb0f1-76ef-4add-b974-19e456df370d","name":"400 - Bad Request","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"priv\": \"<Private Key>\",\n    \"cipher\": \"<Public Key Encrypted Data>\"\n}\n"},"url":"{{HOST}}/decrypt-rsa"},"status":"Bad Request","code":400,"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":null}],"_postman_id":"a4819323-2bdd-4e6b-b1da-ce4a9cdc5a2b"},{"name":"Decrypt using password","id":"f0b53928-2033-4552-b149-7e0f94ce2ebe","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"password\": \"<Decryption password>\",\n    \"cipher\": \"<Encrypted Data>\"\n}\n"},"url":"{{HOST}}/decrypt-pwd","description":"<h4 id=\"field-information\">Field Information</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Mandatory</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>password</code></td>\n<td>Password used to decrypt the data. It must be the same password that was used to encrypt it</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>cipher</code></td>\n<td>Encrypted data to be decrypted</td>\n<td>Yes</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-codes\">Response Codes</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Code</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>200</td>\n<td>OK</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["decrypt-pwd"],"host":["{{HOST}}"],"query":[],"variable":[]}},"response":[{"id":"2481595b-5f44-44c6-8d19-6891f1498766","name":"200 - OK","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"password\": \"<Decryption password>\",\n    \"cipher\": \"<Encrypted Data>\"\n}\n"},"url":"{{HOST}}/decrypt-pwd"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"plain\": \"string\"\n}"},{"id":"94d4ff1c-dc0f-4a64-aa87-458e9fb41223","name":"400 - Bad Request","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"password\": \"<Decryption password>\",\n    \"cipher\": \"<Encrypted Data>\"\n}\n"},"url":"{{HOST}}/decrypt-pwd"},"status":"Bad Request","code":400,"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":null}],"_postman_id":"f0b53928-2033-4552-b149-7e0f94ce2ebe"}],"id":"caed6504-81d0-40a1-b56d-d4bb450c44fc","_postman_id":"caed6504-81d0-40a1-b56d-d4bb450c44fc","description":"","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"7b50a7a9-1fa7-4aa4-b35d-c6792b4834f1","id":"7b50a7a9-1fa7-4aa4-b35d-c6792b4834f1","name":"ReCOVER","type":"folder"}}},{"name":"Test Keys and Data","item":[],"id":"13b7cccd-99a4-4ede-8102-1e64a019b20c","description":"<p>The following provides example test data, public and private keys, which can be used to stub and test the endpoints without having to engage CoinCover.</p>\n<p>The following keys are TEST keys only and should be used for encrypting and decrypting TEST data only.</p>\n<h3 id=\"public-key\">Public Key</h3>\n<p><code>2d2d2d2d2d424547494e205055424c4943204b45592d2d2d2d2d0a4d494943496a414e42676b71686b6947397730424151454641414f43416738414d49494343674b4341674541744133336d692b534c2b2f6761466655414e62480a776d796d556f345455565031643850507a53755042374c774e3444545a2b61412b432b70635579546f4a3554624b6c786d334d355230346e636b74627649536b0a725132445633494642343537716a43506165346d654837764f5873634a4f3671704f342b3972745362773661364e4f6a2f31436e345056612f6c7259686678480a6362304d594e726d6d4853463377715854316b395151306f7a564e4e67656b69483262316d386359506a4745536b366153796443685568374c72513958416a6c0a6a50524a4a6267745458755a76486539327245654768796d7277506f4b316970637436695763694c665a636d786a525a4b464b524c7745686d63514353536e4c0a7047362b697834773543342f7a61534f6e7975455a7651686653715636663532755876666a6d654d356f726474714d7058775433683453416f6e5435464450340a6f577a744977457a766e5130346a484253494c7a6c45734635337a577252337237503250385273542b45646867454c30385a5a734f4474436d3973766d6a50390a4247515866636441435274437131754576652f59715163313151563333796159345966614e42386b526752745a41327958774769464a782b465358302f6f67610a4b716f3758513152697748736a43476f5a56544a43612f66305a687636346c72704859426a4c6e69704f555449483452503632626847324d49387763526635640a3059316b5264524c33464f4175344a7a7962502f354b364b595738596d78586e6b33587a57384f79735553566a655775443465593068735967552f6b767a365a0a417532625142646a3669594d42626d6857683730547933394b376843306f4938432f696f6f4e68744f6966633739633359524a326574636d3331586a577377770a6971714c4e356d716953454547744c72396c736a6c3363434177454141513d3d0a2d2d2d2d2d454e44205055424c4943204b45592d2d2d2d2d0a</code></p>\n<h3 id=\"signature\">Signature</h3>\n<p><code>IKY3TAEs4FsK9rpCUsLFgeAy0mtkrIS0NpHe7Q8S7Un5Ufnk73mD5VEiZR4owdSKAxX7lR1iZ184/Bcpxl8iyJA=</code></p>\n<h3 id=\"private-key\">Private Key</h3>\n<p><code>2d2d2d2d2d424547494e205253412050524956415445204b45592d2d2d2d2d0a4d49494a4b41494241414b4341674541744133336d692b534c2b2f6761466655414e6248776d796d556f345455565031643850507a53755042374c774e3444540a5a2b61412b432b70635579546f4a3554624b6c786d334d355230346e636b74627649536b725132445633494642343537716a43506165346d654837764f5873630a4a4f3671704f342b3972745362773661364e4f6a2f31436e345056612f6c7259686678486362304d594e726d6d4853463377715854316b395151306f7a564e4e0a67656b69483262316d386359506a4745536b366153796443685568374c72513958416a6c6a50524a4a6267745458755a76486539327245654768796d7277506f0a4b316970637436695763694c665a636d786a525a4b464b524c7745686d63514353536e4c7047362b697834773543342f7a61534f6e7975455a765168665371560a36663532755876666a6d654d356f726474714d7058775433683453416f6e5435464450346f577a744977457a766e5130346a484253494c7a6c45734635337a570a7252337237503250385273542b45646867454c30385a5a734f4474436d3973766d6a50394247515866636441435274437131754576652f5971516331315156330a33796159345966614e42386b526752745a41327958774769464a782b465358302f6f67614b716f3758513152697748736a43476f5a56544a43612f66305a68760a36346c72704859426a4c6e69704f555449483452503632626847324d49387763526635643059316b5264524c33464f4175344a7a7962502f354b364b595738590a6d78586e6b33587a57384f79735553566a655775443465593068735967552f6b767a365a417532625142646a3669594d42626d6857683730547933394b3768430a306f4938432f696f6f4e68744f6966633739633359524a326574636d3331586a577377776971714c4e356d716953454547744c72396c736a6c336343417745410a41514b43416742356b365449753635654a2f374339657230316848304f69446b52594c4e7533395836795035535a772b6570697849592b6437497252436e33440a5077322f757168694374666e4f78704742344f6a4c546334522b685a345848364c6363766e776e706c506942636f6b5065385a55626368484e39434a7055566d0a6e48334139332b71447034423235672f306577724b335267704551706a4a6b37485250766856365069447337484f713762674e4c4153436f773536437a6161790a4650464e72576e434d756b454c664a4178507849515050646e545243785142504d396d444a4235656f4176574378706b5430784e694c6e5036774966796979640a7130686b2b5262355a6f64394c714e527464585757662b6848314f654b426b4a48733273685834586754473855456f4b716e5769616f726e675362786636386f0a484d754c4c2b45645858616c376c696c624e62653231554553304e7075685647414c72654363644e674a514b6c6a4a35625638514f525164354f39442f456c6a0a44445a46704653334f34537170382f445430786a5069714b2b6e76692f564776775564596f477656484a4c384c774368426176696f715446464f4843693338740a4469424f4c4a50584150643563442f5547347964636a58485270584c756c416e6e674d76304544414b6873756c586d482f4147344f776a424c5138636268376c0a65534b727554324b33372f737656796377716e332b5454306349704c47783562777068316630714872733756392b2b5a2f756a6d4a4c394f61436535483861430a744a6e41323969432b7069674b524d2f6b663961576b474a7146482f3653345841624768664f622f366d4433493741613638304f4f3044463146345455786c390a617547447935543845316c4243304c412f436866494248644f35757555557133735441434b34686e3848596774446a6641514b4341514541343170364a4d704b0a663577385557547443396d7732456c482b69385573574264387a4d4e68714c375847373037704e424c38555268665141757a6233567a3264505443447a62724c0a6165484c4754302b4a635a44765361342f312f636d42656476764a6a335338527043682f7a70634b3231696b7a336c52323169452f305673726e39383253472b0a4173464452736d76707970584a3267652f7a6e50316232344c32635a7337636c624e75576c6e5630342b5069696e78484870506d3875525462316131475041360a3852375135465359525352796a6d6759493263472b5353396f3533554d6b39562b7151387435304f4b4d31373567453247474b464d32587332584d6f786e51670a4f3330696b47325057524a756c3377336b55364d4e5537456e325a47494a363230676231484e354338627454335069616245654655444167666467734e777a4b0a2b49654f493743624f50716631774b4341514541797233517968527861414d48454f42344d5549454238325a534f72385547785162507036516e4b77696b454a0a304155765a45466f71636a30354f4a4d6e4f4d6c5957742b675378712b7362477a57584a436970655a30473348692b704c66357539515966764a6650484152620a497479444a683458303037397147636d734d504b5253694e32385a692b4c756269702b67495946657a5933704c6f31774a7a47504655573256726859367957670a704f45534d50416139653233434a57425946425a39746854685546414177574743756d596a59677a422b4f766e4c4c347a47667534715a70304a54535a384d750a72743333472f33777a4d4952416f71616e73512b5452665369335264474b78366d775961773833596a77312b326b766d6547686f30324e78485a5664535658730a624f506a486778487866494b466d7a78774e43324c7a306a744d502f544f726370756d654f665a5259514b43415141613634757137346b43737930784e6849620a5a527462674e48552f64346c59704f39534435427775716764304c70504f5a72455a71526b654c4553433368567070587448626d3155646773697571515759710a63743979646a4e52696268464367625470542f4e344e546c36795733414974346a585a325770636d7363534e7456713544723970746d555a546d6a34364d697a0a736e2b2f577354513037655952323658726b324d79684c55594f766a784f536956306c72764774765933506c4c73507957774832676674347358317169396d370a3169543656376b442b42384c5152357a55537a66434358574637785977572f37784e6a323077336b74555777594645374c6a65567941704a4150676d77644a480a6162644f6d4a61377a6545734c72643561464c4661675762754e6374492b517057315543785330447854517a326e372b5a3670556d6c38754c6c37574f774d6d0a4c416268416f494241466e417747374673424c677a44372f634a593136487a66327730353469746b57424a32724b7441424d476632303035446d7275766676300a46393541424c5372706a2f4469385235756e35386730516f3347426773317734376d30786f6b3758525a3235635646585433765376646e6f447a4e5076544a780a314c2b3573706f7367783473767568646f6a45464e4f32676a77356d4c47634a66514a373450756f352f503934615077686f544c4b70767a6538386f624863560a48714e784e4535454a422b77557745364372474c7633535452314c597965616a4f4870426a50314977617562436c73706c7941536531633073704730304f61450a763230466d542f5346746167526a6777636f706179516861496e30755973477073732f484c43642f3658417a704c373541637857656f30574d6452366b55656a0a53433333577573474f7245632b764b716c686f69477a3756533550545a4f454367674542414a3775624a62776c39396261696d4b4b79337358643530554752450a586f7267526e3068375079626a457a706763356d4b71754c61634d5734386b343679454a56704135664c4c52355a356c4336794e7972707a5947762b586734720a664e556152686b435268764862617353796d694965754c344d4c4742685043326e345a3555514c7643524657794764766c6e5078587347696f4b672b5437764a0a53766b6f6e30417653762f70624b6468496d383744526a584c4f344e34337375647266706b44763659616b63544e482f41307373686365626f55786c544131440a6576655a6b2b72476e797a5167647a4a795872475148416e65326d4f765a7639755977555141304d3047774b6d63727473744f706464554f52504d48392b49450a373842576356364c757242502b6871696f793876765238434e315a4e73675a45474d6663536133466b2b494a666d31626e7377562f70323344736b3d0a2d2d2d2d2d454e44205253412050524956415445204b45592d2d2d2d2d0a</code></p>\n","_postman_id":"13b7cccd-99a4-4ede-8102-1e64a019b20c","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"7b50a7a9-1fa7-4aa4-b35d-c6792b4834f1","id":"7b50a7a9-1fa7-4aa4-b35d-c6792b4834f1","name":"ReCOVER","type":"folder"}}},{"name":"Key Signature Verification","item":[],"id":"4c8002bf-0bd9-4803-a184-e056eb482a01","description":"<p>When pulling a key from CoinCover using the <code>/encryption-key</code> endpoint, the response object contains a signature &amp; public key property.</p>\n<p>The signature &amp; public key can be used in conjunction with a CoinCover provided signing key to verify that the key has indeed come from CoinCover.</p>\n<p>Below, is a small Node.js example of how this may be achieved:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-javascript\">const bitcoinMessage = require('bitcoinjs-message');\nconst bjs = require('bitcoinjs-lib');\nconst { BIP32Factory } = require('bip32');\nconst ecc = require(\"tiny-secp256k1\");\nconst verifyKeyIsFromCoincover = (publicKey, signature, signingKey) =&gt; {\n    const bip32 = BIP32Factory(ecc);\n    const signingPublicKey = bip32.fromBase58(signingKey).publicKey\n    let signingKeyAddress = bjs.payments.p2pkh({ pubkey: signingPublicKey }).address;\n    const verified = bitcoinMessage.verify(publicKey, signingKeyAddress, signature)\n    console.log({ verified })\n}\nconst PUBLIC_KEY_HEX = \"YOUR_PUBLIC_KEY\"\nconst SIGNATURE = \"YOUR_PUBLIC_KEY_SIGNATURE\"\nconst COIN_COVER_PROVIDED_PUBLIC_SIGNING_KEY = \"REQUEST_SIGNING_KEY_FROM_COINCOVER\"\nverifyKeyIsFromCoincover(PUBLIC_KEY_HEX, SIGNATURE, COIN_COVER_PROVIDED_PUBLIC_SIGNING_KEY)\n\n</code></pre>\n<blockquote>\n<p><strong>NOTE:</strong> In order for this script to work, a test signing key will need to be requested from CoinCover &amp; assigned to <code>COIN_COVER_PROVIDED_PUBLIC_SIGNING_KEY</code>. The <code>PUBLIC_KEY_HEX</code> &amp; <code>SIGNATURE</code> must be assigned the value of the public key &amp; signature retrieved from the <code>/encryption-key</code> endpoint.</p>\n</blockquote>\n","_postman_id":"4c8002bf-0bd9-4803-a184-e056eb482a01","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"7b50a7a9-1fa7-4aa4-b35d-c6792b4834f1","id":"7b50a7a9-1fa7-4aa4-b35d-c6792b4834f1","name":"ReCOVER","type":"folder"}}}],"id":"7b50a7a9-1fa7-4aa4-b35d-c6792b4834f1","description":"<p>CoinCover provides a safe non-custodial way to store private keys and data.</p>\n<p>Data must always be encrypted prior to it being sent to CoinCover.</p>\n<p>This can be achieved with a combination of two methods:</p>\n<ol>\n<li><p>Symmetric encryption with a password</p>\n</li>\n<li><p>Asymmetric encryption with a public key</p>\n</li>\n</ol>\n<p>The usage is dependent on what is being encrypted.</p>\n<p>Where the data relates to a private key or seed that can be used to access funds, then this must be double-encrypted, using both methods sequentially.</p>\n<p>The customer or end-user holds the password for decryption. CoinCover holds the private key to decrypt. Importantly, the data should be encrypted with a password first and then the public key.</p>\n<p>Once the data has been encrypted, it can be sent to CoinCover and stored within the secure platform.</p>\n<p>In the event of a disaster, CoinCover can work with the holder of the password to recover access to the underlying data.</p>\n<p>At the end of this section you'll find some test data and keys that you can use to get to grips with our API.</p>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"30f5f4f4-8551-4053-91be-aff7d3ab5e0b","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"f57430a6-778f-4083-8dcb-c636b1e32b3c","type":"text/javascript","exec":[""]}}],"_postman_id":"7b50a7a9-1fa7-4aa4-b35d-c6792b4834f1"},{"name":"Transaction Protection for Consumers","item":[{"name":"Integration Guides","item":[{"name":"Authentication","item":[],"id":"4dcccf5d-729a-411a-b36d-92d72109b0f8","description":"<h4 id=\"set-up-authentication-tokens\">Set up Authentication Tokens</h4>\n<p>To use CoinCover's services, a bearer token is required. These are unique for TEST and PROD environments.</p>\n<p>To test within the Sandbox environment, a TEST token will be provided by your Account Manager.</p>\n<p>Once contractual agreements have been made and the test configuration has been validated a PROD token will be supplied.</p>\n<h4 id=\"endpoints\">Endpoints</h4>\n<h5 id=\"test\">TEST</h5>\n<blockquote>\n<p><a href=\"https://api.txm-uat.coincover.com\">https://api.txm-uat.coincover.com</a> </p>\n</blockquote>\n<h5 id=\"production\">PRODUCTION</h5>\n<blockquote>\n<p><a href=\"https://api.txm.coincover.com\">https://api.txm.coincover.com</a></p>\n</blockquote>\n","_postman_id":"4dcccf5d-729a-411a-b36d-92d72109b0f8","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"3c6c497c-2b81-460c-b99c-e5878dc411fe","id":"3c6c497c-2b81-460c-b99c-e5878dc411fe","name":"Transaction Protection for Consumers","type":"folder"}}},{"name":"Protection per Transaction","item":[],"id":"3c619f51-019d-4aae-8f45-c17df8344bc3","description":"<p>This flow allows for every signed up customer on your platform to gain the peace of mind that comes with CoinCover protection.</p>\n<h4 id=\"coincovers-protection-workflow-diagram\">CoinCover's Protection Workflow Diagram:</h4>\n<img src=\"https://content.pstmn.io/e89e9cf3-2e02-49cb-b935-c2f6ca74d2c1/QVBJIERvY3MgRmxvd3MgUGFnZSAxLnBuZw==\" />\n\n<h4 id=\"integration-guide\">Integration Guide</h4>\n<h4 id=\"step-1-integrate-transaction-check-endpoint\">Step 1: Integrate Transaction Check endpoint</h4>\n<p>After a user on your platform creates a transaction, you will send the necessary data to the ‘/Transaction’ API endpoint (<a href=\"https://developer.coincover.com/#26626742-e8b0-440c-bdeb-ff1ecc9ecba0\">link here</a>). This returns either a Green (Protected) or Red (Not Protected) status for that specific transaction.</p>\n<ul>\n<li><p><strong>Green</strong>: Provide the user with the option to purchase Protection.</p>\n</li>\n<li><p><strong>Red</strong>: We recommend advising the customer and carrying out an additional risk review.</p>\n</li>\n</ul>\n","_postman_id":"3c619f51-019d-4aae-8f45-c17df8344bc3","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"3c6c497c-2b81-460c-b99c-e5878dc411fe","id":"3c6c497c-2b81-460c-b99c-e5878dc411fe","name":"Transaction Protection for Consumers","type":"folder"}}},{"name":"Subscription for Protection","item":[],"id":"1c46102d-9985-433d-9ddd-2b5109b537d2","description":"<p>This flow is for organisations that want CoinCover Protection to be part of a subscription model.</p>\n<p>As part of the subscription, customers pay the partner, enabling them to benefit from CoinCover Protection on all of their transactions.</p>\n<h4 id=\"step-1-user-registration\">Step 1: User Registration</h4>\n<img src=\"https://content.pstmn.io/5d974ba2-678e-4ebc-9b25-04fcf17f9f6f/QVBJIERvY3MgRmxvd3MgUGFnZSAxLnBuZw==\" width=\"268\" height=\"345\" />\n\n<p>When a user signs up for the subscription service CoinCover will need this user to be registered in the CoinCover risk engine using the '/user' endpoint (<a href=\"https://developer.coincover.com/#a9513606-cd26-460e-9b13-ef890cbae3a3\">link here</a>).</p>\n<h4 id=\"step-2-integrate-transaction-check-endpoint\">Step 2: Integrate Transaction Check endpoint</h4>\n<img src=\"https://content.pstmn.io/ceb8515d-b042-4a64-95ae-8293845faadf/QVBJIERvY3MgRmxvd3MgUGFnZSAxICgxKS5wbmc=\" width=\"616\" height=\"343\" />\n\n<p>After a sign up user on your platform creates a transaction, you will send the necessary data to the ‘/Transaction’ API endpoint (<a href=\"https://developer.coincover.com/#26626742-e8b0-440c-bdeb-ff1ecc9ecba0\">link here</a>). This returns either a Green (Protected) or Red (Not Protected) status for that specific transaction.</p>\n<ul>\n<li><p><strong>Green</strong>: Provide the user with the option to purchase Protection.</p>\n</li>\n<li><p><strong>Red</strong>: We recommend advising the customer and carrying out an additional risk review.</p>\n</li>\n</ul>\n","_postman_id":"1c46102d-9985-433d-9ddd-2b5109b537d2","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"3c6c497c-2b81-460c-b99c-e5878dc411fe","id":"3c6c497c-2b81-460c-b99c-e5878dc411fe","name":"Transaction Protection for Consumers","type":"folder"}}}],"id":"224389fe-7c9a-4935-b61e-7758bc6e6a40","description":"<p>CoinCover’s Transaction Protection for consumers is an API-first product that provides the foundational building blocks of Protection. You can tailor the components you need to create a solution that best suits your business.</p>\n<p>Please find below guides for the most common use cases of our Product:</p>\n<h2 id=\"authentication\">Authentication</h2>\n<p>All our endpoints require authentication to be accessed. This guide explains the entire authentication process, helping you securely connect to our platform.</p>\n<p><a href=\"https://developer.coincover.com/#4dcccf5d-729a-411a-b36d-92d72109b0f8\">Read Guide</a></p>\n<h2 id=\"protection-per-transaction\">Protection Per Transaction</h2>\n<p>Learn how to integrate our Protection product so that CoinCover can protect your end-user withdrawals. This guide walks you through the necessary steps to enable Protection for each transaction.</p>\n<p><a href=\"https://developer.coincover.com/#3c619f51-019d-4aae-8f45-c17df8344bc3\">Read Guide</a></p>\n<h2 id=\"subscription-for-protection\">Subscription for Protection</h2>\n<p>Discover how to incorporate our Protection feature into a subscription model, allowing an account to be fully covered by CoinCover. This guide outlines the process for setting up Protection subscriptions and Protecting the account.</p>\n<p><a href=\"https://developer.coincover.com/#1c46102d-9985-433d-9ddd-2b5109b537d2\">Read Guide</a></p>\n","_postman_id":"224389fe-7c9a-4935-b61e-7758bc6e6a40","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"3c6c497c-2b81-460c-b99c-e5878dc411fe","id":"3c6c497c-2b81-460c-b99c-e5878dc411fe","name":"Transaction Protection for Consumers","type":"folder"}}},{"name":"API Reference","item":[{"name":"Check Transaction","id":"26626742-e8b0-440c-bdeb-ff1ecc9ecba0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"transactionCustomerId\": \"b27f38b9-5158-4b4b-ae2f-a030852f98cd\",\n  \"transactionHash\": \"GL8636339870050078\",\n  \"coin\": \"bitcoin-cash\",\n  \"walletId\": \"1FjgpyeeWTRd7BxTXHEL2rjCj8\",\n  \"outputs\":[\n     {\n       \"destination\": \"16bG5v7VkCeadwzyD1CqAvL6soJ3nfGAhh\",\n       \"amount\": \"356\",\n       \"userId\": \"27a73667-fb36-4708-822f-8b2c79cb817e\"\n     }\n   ]\n}"},"url":"{{HOST}}/transaction","description":"<p>Transactions should be sent to CoinCover before they are published or broadcast to the blockchain.</p>\n<p>CoinCover requires core elements of a blockchain transaction including the transaction Hash which allows CoinCover to reconcile this for any published transactions. Transactions need to be associated to a wallet and an end-user.</p>\n<p>The coin/token type needs to be defined in the API call. Please find in this link the tokens that CoinCover support - <a href=\"https://www.coincover.com/knowledge-hub/assets-we-protect\">https://www.coincover.com/knowledge-hub/assets-we-protect</a></p>\n<h4 id=\"threat-detected-codes\">Threat Detected Codes</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Code</strong></th>\n<th><strong>Category</strong></th>\n<th><strong>Reason</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>50101</td>\n<td>Sanctioned address</td>\n<td>The destination wallet address is associated with an untrustworthy or high-risk jurisdiction.</td>\n</tr>\n<tr>\n<td>50102</td>\n<td>Scamming address</td>\n<td>The destination wallet address has previously been associated with reported scam.</td>\n</tr>\n<tr>\n<td>50103</td>\n<td>Phishing address</td>\n<td>The destination wallet address has previously been associated with reported phishing activities.</td>\n</tr>\n<tr>\n<td>50104</td>\n<td>Previous claim</td>\n<td>The destination wallet address has previously been associated with a previous claim incident.</td>\n</tr>\n<tr>\n<td>50105</td>\n<td>Honeypot token</td>\n<td>The destination wallet address has previously been associated with honeypot tokens or has created scam tokens.</td>\n</tr>\n<tr>\n<td>50106</td>\n<td>Blackmail activities</td>\n<td>The destination wallet address has previously been associated with blackmail activities.</td>\n</tr>\n<tr>\n<td>50107</td>\n<td>Stealing attack</td>\n<td>The destination wallet address has previously been associated with a reported stealing attack.</td>\n</tr>\n<tr>\n<td>50108</td>\n<td>Fake KYC</td>\n<td>The destination wallet address has previously been involved with faking KYC requirements.</td>\n</tr>\n<tr>\n<td>50109</td>\n<td>Malicious mining activities</td>\n<td>The destination wallet address has previously been involved with malicious mining activities.</td>\n</tr>\n<tr>\n<td>50110</td>\n<td>Darkweb transactions</td>\n<td>The destination wallet address has previously been involved with darkweb transactions.</td>\n</tr>\n<tr>\n<td>50111</td>\n<td>Cybercrime</td>\n<td>The destination wallet address has previously been involved with cybercrime activities.</td>\n</tr>\n<tr>\n<td>50112</td>\n<td>Money laundering</td>\n<td>The destination wallet address has previously been involved with money laundering activities.</td>\n</tr>\n<tr>\n<td>50113</td>\n<td>Financial crime</td>\n<td>The destination wallet address has previously been involved with financial crime activities.</td>\n</tr>\n<tr>\n<td>50114</td>\n<td>Sextortion</td>\n<td>The destination wallet address has previously been involved with sextortion activities.</td>\n</tr>\n<tr>\n<td>50115</td>\n<td>Ransomware</td>\n<td>The destination wallet address has previously been involved with ransomware attacks.</td>\n</tr>\n<tr>\n<td>50201</td>\n<td>Associated with blocklist wallet</td>\n<td>The destination wallet address has previously transacted with known blocklisted addresses.</td>\n</tr>\n<tr>\n<td>50202</td>\n<td>Suspected malicious address</td>\n<td>The destination wallet address is suspected to be involved with malicious behaviour.</td>\n</tr>\n<tr>\n<td>50301</td>\n<td>User upper amount hourly limit</td>\n<td>The transaction amount breaches the user's maximum amount per hour limit policy.</td>\n</tr>\n<tr>\n<td>50302</td>\n<td>User upper amount daily limit</td>\n<td>The transaction amount breaches the user's maximum amount per day limit policy.</td>\n</tr>\n<tr>\n<td>50303</td>\n<td>Organisation transaction upper amount limit</td>\n<td>The transaction amount breaches the maximum amount per transaction limit policy.</td>\n</tr>\n<tr>\n<td>50304</td>\n<td>Wallet hourly upper amount limit</td>\n<td>The transaction amount breaches the maximum amount per hour for this wallet.</td>\n</tr>\n<tr>\n<td>50305</td>\n<td>Wallet daily upper amount limit</td>\n<td>The transaction amount breaches the maximum amount per day for this wallet.</td>\n</tr>\n<tr>\n<td>50306</td>\n<td>Organisation hourly upper amount limit</td>\n<td>The transaction amount breaches the maximum amount per hour for your organisation.</td>\n</tr>\n<tr>\n<td>50307</td>\n<td>Organisation daily upper amount limit</td>\n<td>The transaction amount breaches the maximum amount per day for your organisation.</td>\n</tr>\n<tr>\n<td>50310</td>\n<td>User transaction upper amount limit</td>\n<td>This transaction amount breaches the maximum claim limit amount for this user.</td>\n</tr>\n<tr>\n<td>50401</td>\n<td>User upper limit</td>\n<td>This transaction amount breaches CoinCover's user limit policy.</td>\n</tr>\n<tr>\n<td>50402</td>\n<td>Transaction amount daily limit</td>\n<td>This transaction amount breaches CoinCover's daily limit policy.</td>\n</tr>\n<tr>\n<td>50403</td>\n<td>Transaction upper amount limit</td>\n<td>The transaction amount breaches CoinCover's maximum amount per transaction limit.</td>\n</tr>\n<tr>\n<td>50501</td>\n<td>Anomalous daily transaction</td>\n<td>This transaction has been determined as being suspicious in conjunction with the daily pattern.</td>\n</tr>\n<tr>\n<td>50502</td>\n<td>Anomalous weekly transaction</td>\n<td>This transaction has been determined as being suspicious in conjunction with the weekly pattern.</td>\n</tr>\n<tr>\n<td>50503</td>\n<td>Anomalous monthly transaction</td>\n<td>This transaction has been determined as being suspicious in conjunction with the monthly pattern.</td>\n</tr>\n<tr>\n<td>50504</td>\n<td>Anomalous quarterly transaction</td>\n<td>This transaction has been determined as being suspicious in conjunction with the quarterly pattern.</td>\n</tr>\n<tr>\n<td>50505</td>\n<td>Anomalous yearly transaction</td>\n<td>This transaction has been determined as being suspicious in conjunction with the yearly pattern.</td>\n</tr>\n<tr>\n<td>50601</td>\n<td>Transaction is in a time window with abnormal volume</td>\n<td>This transaction has been determined as being suspicious in conjunction with time of day.</td>\n</tr>\n<tr>\n<td>50602</td>\n<td>Transaction is in a time window with abnormal volume</td>\n<td>This transaction has been determined as being suspicious in conjunction weekly behaviour.</td>\n</tr>\n<tr>\n<td>50603</td>\n<td>Transaction is in a time window with abnormal volume</td>\n<td>This transaction has been determined as being suspicious in conjunction monthly behaviour.</td>\n</tr>\n<tr>\n<td>50701</td>\n<td>Token not supported by CoinCover</td>\n<td>This transaction contains a token that is not protected by CoinCover.</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"field-information\">Field Information</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Mandatory</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>transactionCustomerId</td>\n<td>Unique internal ID used by partner's systems to identify a transaction.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>transactionHash</td>\n<td>Hash of the transaction, verifiable on chain if published.</td>\n<td>No</td>\n</tr>\n<tr>\n<td>coin</td>\n<td>Name of coin/token as defined in Coingecko.  <br />  <br />Use name and not code. E.g bitcoin not btc as codes are not unique.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>walletId</td>\n<td>walletId associated to the user. Where there is an onchain reference available, this should be used.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>outputs</td>\n<td>Array to support single or batch transactions.  <br />Each object in the array should consist of a destination address, amount and the associated user.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>outputs: destination</td>\n<td>On chain destination address.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>outputs: amount</td>\n<td>Amount in currency. E.g. 1.7 bitcoin.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>outputs: userId</td>\n<td>User ID of the end-user relevant to the customers systems and associated to each output address.</td>\n<td>Yes</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"http-status-codes\">HTTP Status Codes</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Codes</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>200</td>\n<td>OK.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Missing mandatory field value or validation issues.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Missing or invalid bearer token.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"3c6c497c-2b81-460c-b99c-e5878dc411fe","id":"3c6c497c-2b81-460c-b99c-e5878dc411fe","name":"Transaction Protection for Consumers","type":"folder"}},"urlObject":{"path":["transaction"],"host":["{{HOST}}"],"query":[],"variable":[]}},"response":[{"id":"6a30d2e8-c194-41cc-8070-1cf17a511689","name":"200 - OK","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"transactionCustomerId\": \"b27f38b9-5158-4b4b-ae2f-a030852f98cd\",\n  \"transactionHash\": \"GL8636339870050078\",\n  \"coin\": \"bitcoin-cash\",\n  \"walletId\": \"1FjgpyeeWTRd7BxTXHEL2rjCj8\",\n  \"outputs\":[\n     {\n       \"destination\": \"16bG5v7VkCeadwzyD1CqAvL6soJ3nfGAhh\",\n       \"amount\": \"356\",\n       \"userId\": \"27a73667-fb36-4708-822f-8b2c79cb817e\"\n     }\n   ]\n}","options":{"raw":{"language":"json"}}},"url":"/transaction"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"transactionUUID\": \"3d0ee9d3-4d85-5c8e-af77-3bc9feec83f2\",\n    \"status\": \"GREEN\",\n    \"message\": \"Transaction is protected by CoinCover.\"\n}"},{"id":"6beb62e1-5a5c-4112-9a42-ada8b5811bed","name":"200 - OK (50202)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"transactionCustomerId\": \"b27f38b9-5158-4b4b-ae2f-a030852f98cd\",\n  \"transactionHash\": \"GL8636339870050078\",\n  \"coin\": \"bitcoin-cash\",\n  \"walletId\": \"1FjgpyeeWTRd7BxTXHEL2rjCj8\",\n  \"outputs\":[\n     {\n       \"destination\": \"16bG5v7VkCeadwzyD1CqAvL6soJ3nfGAhh\",\n       \"amount\": \"356\",\n       \"userId\": \"27a73667-fb36-4708-822f-8b2c79cb817e\"\n     }\n   ]\n}","options":{"raw":{"language":"json"}}},"url":"/transaction"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"transactionUUID\": \"45bf9605-e388-5636-8949-9598ea872c3e\",\n    \"status\": \"RED\",\n    \"code\": \"50202\",\n    \"message\": \"The destination wallet address is suspected to be involved with malicious behaviour.\",\n    \"meta\": {\n        \"category\": \"SUSPECTED_MALICIOUS_ADDRESS\",\n        \"providerCategory\": null,\n        \"blocklistedAddress\": \"16bG5v7VkCeadwzyD1CqAvL6soJ3nfGAhh\"\n    }\n}"},{"id":"5e07673e-5a03-4652-9ab1-c28cd740fa59","name":"200 - OK (50102)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"transactionCustomerId\": \"b27f38b9-5158-4b4b-ae2f-a030852f98cd\",\n  \"transactionHash\": \"GL8636339870050078\",\n  \"coin\": \"bitcoin-cash\",\n  \"walletId\": \"1FjgpyeeWTRd7BxTXHEL2rjCj8\",\n  \"outputs\":[\n     {\n       \"destination\": \"16bG5v7VkCeadwzyD1CqAvL6soJ3nfGAhh\",\n       \"amount\": \"356\",\n       \"userId\": \"27a73667-fb36-4708-822f-8b2c79cb817e\"\n     }\n   ]\n}","options":{"raw":{"language":"json"}}},"url":"/transaction"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"transactionUUID\": \"c1ed3a7d-37ca-587c-b8b0-fe5ce018f2ad\",\n    \"status\": \"RED\",\n    \"code\": \"50102\",\n    \"message\": \"The destination wallet address has previously been associated with reported scam.\",\n    \"meta\": {\n        \"category\": \"SCAMMING_ADDRESS\",\n        \"providerCategory\": \"Scamming\",\n        \"blocklistedAddress\": \"0x5B2b8b9c674e67F718BB54Cc62C2a2E13308229d\"\n    }\n}"},{"id":"f53d4384-2672-4ed1-a650-6cc2a88ada83","name":"200 - OK (50307)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"transactionCustomerId\": \"b27f38b9-5158-4b4b-ae2f-a030852f98cd\",\n  \"transactionHash\": \"GL8636339870050078\",\n  \"coin\": \"bitcoin-cash\",\n  \"walletId\": \"1FjgpyeeWTRd7BxTXHEL2rjCj8\",\n  \"outputs\":[\n     {\n       \"destination\": \"16bG5v7VkCeadwzyD1CqAvL6soJ3nfGAhh\",\n       \"amount\": \"356\",\n       \"userId\": \"27a73667-fb36-4708-822f-8b2c79cb817e\"\n     }\n   ]\n}","options":{"raw":{"language":"json"}}},"url":"/transaction"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"transactionUUID\": \"5e78aaaf-adae-5348-83e4-108879cc98a8\",\n    \"status\": \"RED\",\n    \"code\": \"50307\",\n    \"message\": \"The transaction amount breaches the maximum daily amount for your organisation.\",\n    \"meta\": {\n        \"tokenAmount\": 100,\n        \"usdAmount\": 34801,\n        \"usdLimit\": 5000,\n        \"amountBreachedBy\": \"$29,801.00\"\n    }\n}"},{"id":"b28c2f25-d39a-438d-bc9b-296dd2a5084c","name":"200 - OK (50106)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"transactionCustomerId\": \"b27f38b9-5158-4b4b-ae2f-a030852f98cd\",\n  \"transactionHash\": \"GL8636339870050078\",\n  \"coin\": \"bitcoin-cash\",\n  \"walletId\": \"1FjgpyeeWTRd7BxTXHEL2rjCj8\",\n  \"outputs\":[\n     {\n       \"destination\": \"16bG5v7VkCeadwzyD1CqAvL6soJ3nfGAhh\",\n       \"amount\": \"356\",\n       \"userId\": \"27a73667-fb36-4708-822f-8b2c79cb817e\"\n     }\n   ]\n}","options":{"raw":{"language":"json"}}},"url":"/transaction"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"transactionUUID\": \"c1ed3a7d-37ca-587c-b8b0-fe5ce018f2ad\",\n    \"status\": \"RED\",\n    \"code\": \"50106\",\n    \"message\": \"The destination wallet address has previously been associated with blackmail activities.\",\n    \"meta\": {\n        \"category\": \"BLACKMAIL_ACTIVITIES\",\n        \"providerCategory\": \"blackmail scam\",\n        \"blocklistedAddress\": \"3NMn7e4tvH8fsbLrsGx5h1ZDHSpv3t8n6d\"\n    }\n}"},{"id":"df6223d8-6e4d-4c5d-9d3b-93849cb34355","name":"200 - OK (50102)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"transactionCustomerId\": \"b27f38b9-5158-4b4b-ae2f-a030852f98cd\",\n  \"transactionHash\": \"GL8636339870050078\",\n  \"coin\": \"bitcoin-cash\",\n  \"walletId\": \"1FjgpyeeWTRd7BxTXHEL2rjCj8\",\n  \"outputs\":[\n     {\n       \"destination\": \"16bG5v7VkCeadwzyD1CqAvL6soJ3nfGAhh\",\n       \"amount\": \"356\",\n       \"userId\": \"27a73667-fb36-4708-822f-8b2c79cb817e\"\n     }\n   ]\n}","options":{"raw":{"language":"json"}}},"url":"/transaction"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"transactionUUID\": \"23f94b8b-e68e-57ff-bf67-3670900768ce\",\n    \"status\": \"RED\",\n    \"code\": \"50102\",\n    \"message\": \"The destination wallet address has previously been associated with reported scam.\",\n    \"meta\": {\n        \"category\": \"SCAMMING_ADDRESS\",\n        \"providerCategory\": \"Scamming\",\n        \"blocklistedAddress\": \"0xCE04bB02c933bdAd15c2397b09AF2717CA581327\"\n    }\n}"},{"id":"87edd815-fd71-4e38-a794-7d396a08a170","name":"400 - Bad Request (Unsupported)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"transactionCustomerId\": \"b27f38b9-5158-4b4b-ae2f-a030852f98cd\",\n  \"transactionHash\": \"GL8636339870050078\",\n  \"coin\": \"invalid\",\n  \"walletId\": \"1FjgpyeeWTRd7BxTXHEL2rjCj8\",\n  \"outputs\":[\n     {\n       \"destination\": \"16bG5v7VkCeadwzyD1CqAvL6soJ3nfGAhh\",\n       \"amount\": \"356\",\n       \"userId\": \"27a73667-fb36-4708-822f-8b2c79cb817e\"\n     }\n   ]\n}","options":{"raw":{"language":"json"}}},"url":"/transaction"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"statusCode\": 400,\n    \"error\": \"Bad Request\",\n    \"message\": \"Coin XTZ_ETHERLINK is unsupported at this time\"\n}"},{"id":"3d6e1ff2-919a-4a00-971c-39602db7e503","name":"400 - Bad Request (Unrecognised)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"transactionCustomerId\": \"b27f38b9-5158-4b4b-ae2f-a030852f98cd\",\n  \"transactionHash\": \"GL8636339870050078\",\n  \"coin\": \"invalid\",\n  \"walletId\": \"1FjgpyeeWTRd7BxTXHEL2rjCj8\",\n  \"outputs\":[\n     {\n       \"destination\": \"16bG5v7VkCeadwzyD1CqAvL6soJ3nfGAhh\",\n       \"amount\": \"356\",\n       \"userId\": \"27a73667-fb36-4708-822f-8b2c79cb817e\"\n     }\n   ]\n}","options":{"raw":{"language":"json"}}},"url":"/transaction"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"statusCode\": 400,\n    \"error\": \"Bad Request\",\n    \"message\": \"Unrecognised coin name provided. The coin you entered is currently not supported. Please verify the coin_id format or try another coin_id. For further assistance, kindly contact our support team. Thank you.\"\n}"}],"_postman_id":"26626742-e8b0-440c-bdeb-ff1ecc9ecba0"},{"name":"Create new user","id":"a9513606-cd26-460e-9b13-ef890cbae3a3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"userId\": \"jb001\",\n    \"firstName\": \"Joe\",\n    \"lastName\": \"Blogs\",\n    \"dob\": \"1975-05-01\",\n    \"residenceCountry\": \"US\",\n    \"nationality\": \"US\"\n}","options":{"raw":{"language":"json"}}},"url":"{{HOST}}/user","description":"<p>Create new user is used to create a new User Registration for an existing User within a partner's systems. The User Id that is associated with user in the partner's systems should be specified in the request body along with the relevant user details as stated in the Field Information table.</p>\n<h4 id=\"field-information\">Field Information</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Mandatory</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>userId</code></td>\n<td>User Id of the partner's end-user relevant to the partners systems.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>firstName</code></td>\n<td>First name.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>lastName</code></td>\n<td>Last name.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>dob</code></td>\n<td>Date of Birth.</td>\n<td>No</td>\n</tr>\n<tr>\n<td><code>residenceCountry</code></td>\n<td>Country of residence of end-user <a href=\"https://www.iso.org/obp/ui/#search\">https://www.iso.org/obp/ui/#search</a> for supported format.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>nationality</code></td>\n<td>Nationality of end-user  <br /><a href=\"https://www.iso.org/obp/ui/#search\">https://www.iso.org/obp/ui/#search</a> for supported format.</td>\n<td>No</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-codes\">Response Codes</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Code</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>201</td>\n<td>Created successfully.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Missing mandatory field value or validation issues.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Missing or invalid bearer token.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"3c6c497c-2b81-460c-b99c-e5878dc411fe","id":"3c6c497c-2b81-460c-b99c-e5878dc411fe","name":"Transaction Protection for Consumers","type":"folder"}},"urlObject":{"path":["user"],"host":["{{HOST}}"],"query":[],"variable":[]}},"response":[{"id":"ca33fc06-9ed2-4196-adbb-2aae107b74a8","name":"Create new user","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"userId\": \"jb001\",\n    \"firstName\": \"Joe\",\n    \"lastName\": \"Blogs\",\n    \"dob\": \"1975-05-01\",\n    \"residenceCountry\": \"US\",\n    \"nationality\": \"US\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.txm.coincover.com/user"},"status":"Created","code":201,"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":""}],"_postman_id":"a9513606-cd26-460e-9b13-ef890cbae3a3"},{"name":"Update existing user","id":"af2f3538-23e5-43bc-881f-039d10febe8b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"firstName\": \"Joe\",\n    \"lastName\": \"Blogs\",\n    \"residenceCountry\": \"US\"\n}"},"url":"/user/${userId}","description":"<h4 id=\"field-information\">Field Information</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Mandatory</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>firstName</td>\n<td>First name.</td>\n<td>No</td>\n</tr>\n<tr>\n<td>lastName</td>\n<td>Last name.</td>\n<td>No</td>\n</tr>\n<tr>\n<td>residenceCountry</td>\n<td>Country of residence of end-user <a href=\"https://www.iso.org/obp/ui/#search\">https://www.iso.org/obp/ui/#search</a> for supported format.</td>\n<td>No</td>\n</tr>\n<tr>\n<td>dob</td>\n<td>Date of Birth.</td>\n<td>No</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-codes\">Response Codes</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Codes</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>204</td>\n<td>Successfully updated.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Missing mandatory field value or validation issues.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Missing or invalid bearer token.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>User with the specified id does not exist.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"3c6c497c-2b81-460c-b99c-e5878dc411fe","id":"3c6c497c-2b81-460c-b99c-e5878dc411fe","name":"Transaction Protection for Consumers","type":"folder"}},"urlObject":{"path":["user","${userId}"],"query":[],"variable":[]}},"response":[{"id":"3d44f7a8-e27b-4a1d-9b19-6bbb0657ac7d","name":"Update existing user","originalRequest":{"method":"PATCH","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"firstName\": \"Joe\",\n    \"lastName\": \"Blogs\",\n    \"residenceCountry\": \"US\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.txm.coincover.com/user/jb001"},"status":"No Content","code":204,"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":""}],"_postman_id":"af2f3538-23e5-43bc-881f-039d10febe8b"},{"name":"Create user plan","id":"ef4829b9-c061-4f56-9cc4-a6a730652e1a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"levelUsd\": 1000\n}","options":{"raw":{"language":"json"}}},"url":"{{HOST}}/user/${userId}/plan","description":"<h4 id=\"field-information\">Field Information</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Mandatory</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>levelUsd</code></td>\n<td>USD level of cover.</td>\n<td>Yes</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-codes\">Response Codes</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Code</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>201</td>\n<td>Created successfully.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Missing mandatory field value or validation issues.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Missing or invalid bearer token.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>User with the specified id does not exist.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"3c6c497c-2b81-460c-b99c-e5878dc411fe","id":"3c6c497c-2b81-460c-b99c-e5878dc411fe","name":"Transaction Protection for Consumers","type":"folder"}},"urlObject":{"path":["user","${userId}","plan"],"host":["{{HOST}}"],"query":[],"variable":[]}},"response":[{"id":"7711de9d-e9e3-43c6-a2f8-e083d6b5a712","name":"Create user plan","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"levelUsd\": 1000\n}","options":{"raw":{"language":"json"}}},"url":"https://api.txm.coincover.com/user/jb001/plan"},"status":"Created","code":201,"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":""}],"_postman_id":"ef4829b9-c061-4f56-9cc4-a6a730652e1a"},{"name":"Update user plan","id":"223a39e8-2748-464d-b6b3-134761fba6e1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"levelUsd\": 500\n}","options":{"raw":{"language":"json"}}},"url":"/user/${userId}/plan","description":"<h4 id=\"field-information\">Field Information</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Mandatory</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>levelUsd</code></td>\n<td>USD level of cover.</td>\n<td>No</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-codes\">Response Codes</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Code</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>204</td>\n<td>Successfully updated.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Missing mandatory field value or validation issues.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Missing or invalid bearer token.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>User with the specified id does not exist.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"3c6c497c-2b81-460c-b99c-e5878dc411fe","id":"3c6c497c-2b81-460c-b99c-e5878dc411fe","name":"Transaction Protection for Consumers","type":"folder"}},"urlObject":{"path":["user","${userId}","plan"],"query":[],"variable":[]}},"response":[{"id":"8ea91935-2d80-4b4b-9215-2a2a4ec5c7e6","name":"Update user plan","originalRequest":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"levelUsd\": 500\n}","options":{"raw":{"language":"json"}}},"url":"https://api.txm.coincover.com/user/jb001/plan"},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":null}],"_postman_id":"223a39e8-2748-464d-b6b3-134761fba6e1"}],"id":"458c560d-f251-408a-b88a-0124cebf314e","description":"<p>Our comprehensive API references and guides enable you to thoroughly explore our products and features, ensuring you can integrate with us as quickly as possible.</p>\n<p>The integration guides offer step-by-step instructions for our most common use cases. If you’d like to test the integration, please contact your Sales Representative, who can provide you with a bearer token for our test environment.</p>\n","_postman_id":"458c560d-f251-408a-b88a-0124cebf314e","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"3c6c497c-2b81-460c-b99c-e5878dc411fe","id":"3c6c497c-2b81-460c-b99c-e5878dc411fe","name":"Transaction Protection for Consumers","type":"folder"}}}],"id":"3c6c497c-2b81-460c-b99c-e5878dc411fe","description":"<h2 id=\"transaction-protection-for-your-users\">Transaction protection for your users</h2>\n<p>CoinCover protects your users by actively monitoring and validating outgoing transactions pre-broadcast against CoinCover’s risk engine. The risk engine is an advanced, multi-layered screening solution that evaluates blockchain transactions in real-time to identify, flag and notify users when something is suspicious.</p>\n<p>CoinCover’s risk engine provides a binary response of ‘Red’ or ‘Green’ to indicate if a transaction appears either malicious or safe to send, respectively. If the risk engine fails to meet the service description, then the customer may make a claim against the CoinCover guarantee.</p>\n<p>If a transaction is marked as ‘Red’ we will provide you with the reason for this decision and the description of this reason in the API response.</p>\n<p>CoinCover’s risk engine is an API-native solution. This allows you to integrate the solution directly into your UI/UX, ensuring that the solution fits with your branding and desired user experience.</p>\n<p>If you would like to test the functionality of the Transaction Check API, please contact your Sales Rep, who will set up a test account for you.</p>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"129be808-4000-4965-8fb2-c7ffdb9c4849","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"e5f5e339-76ad-45a0-aaa2-b6a92b3f3bdb","type":"text/javascript","exec":[""]}}],"_postman_id":"3c6c497c-2b81-460c-b99c-e5878dc411fe"},{"name":"Transaction Protection for Institutions","item":[{"name":"Getting started","item":[],"id":"c5616c8c-08ba-4ba7-9acd-2bb3b4dc1fb5","description":"<p>In order to integrate CoinCover's Transaction Protection for Institutions, follow these steps:</p>\n<ul>\n<li><p>Set up authentication tokens</p>\n</li>\n<li><p>Register users</p>\n</li>\n<li><p>Integrate transaction check</p>\n</li>\n<li><p>Configure partner connections</p>\n</li>\n</ul>\n<h4 id=\"set-up-authentication-tokens\">Set up Authentication Tokens</h4>\n<p>To use CoinCover's services, a bearer token is required. These are unique for TEST and PROD environments. A TEST token can be requested from our Sales team and a PROD token is supplied once contractual agreements have been made and the test configuration has been validated by our Sales Engineering team.</p>\n<h4 id=\"endpoints\">Endpoints</h4>\n<h5 id=\"test\">TEST</h5>\n<blockquote>\n<p><a href=\"https://api.txm-uat.coincover.com\">https://api.txm-uat.coincover.com</a> </p>\n</blockquote>\n<h5 id=\"production\">PRODUCTION</h5>\n<blockquote>\n<p><a href=\"https://api.txm.coincover.com\">https://api.txm.coincover.com</a> </p>\n</blockquote>\n<h4 id=\"register-users\">Register users</h4>\n<p>CoinCover requires users existing within a partner's systems to be registered with essential user details.</p>\n<p>The partner acknowledges the contractual declarations that any user details provided have been verified via suitable KYC practices and that 2FA is active on an account.</p>\n<h4 id=\"integrate-transaction-checker\">Integrate transaction checker</h4>\n<p>CoinCover needs to analyse transactions before they are sent to the blockchain.</p>\n<p>For each transaction analysed, CoinCover will provide a response indicating whether the transaction is protected by CoinCover or not.</p>\n<p>'Not protected' responses will contain the relevant reason code and description.</p>\n<img src=\"https://content.pstmn.io/c940d8d5-b805-4bdb-a3dc-d4500b79e18e/VHJhbnNhY3Rpb24gY2hlY2sgcHJvY2VzcyBmbG93IGV4YW1wbGUucG5n\" />\n\n<h4 id=\"configure-partner-connections\">Configure partner connections</h4>\n<p>CoinCover requires relevant partner platforms to be configured with read-only access to completed transactions.</p>\n<p>This is required to train machine learning models, monitor wallet activity to detect suspicious patterns and reconcile any real-time transaction protection decisions with the completed transactions.</p>\n<p>Follow the steps listed for the relevant platforms under the <a href=\"https://developer.coincover.com/#4bca44ea-7e9d-4e46-bb56-842e6daff3e8\">Partner Connections</a> section.</p>\n","_postman_id":"c5616c8c-08ba-4ba7-9acd-2bb3b4dc1fb5","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"3d672221-6065-4e2c-a12a-59191fc9c0d8","id":"3d672221-6065-4e2c-a12a-59191fc9c0d8","name":"Transaction Protection for Institutions","type":"folder"}}},{"name":"User management","item":[{"name":"Create new user","id":"951a093d-059a-4868-880d-a47bc2d39995","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"userId\": \"jb001\",\n    \"firstName\": \"Joe\",\n    \"lastName\": \"Blogs\",\n    \"dob\": \"1975-05-01\",\n    \"residenceCountry\": \"US\",\n    \"nationality\": \"US\"\n}","options":{"raw":{"language":"json"}}},"url":"{{HOST}}/user","description":"<p>Create new user is used to create a new User Registration for an existing User within a partner's systems. The User Id that is associated with user in the partner's systems should be specified in the request body along with the relevant user details as stated in the Field Information table.</p>\n<h4 id=\"field-information\">Field Information</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Mandatory</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>userId</code></td>\n<td>User Id of the partner's end-user relevant to the partners systems.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>firstName</code></td>\n<td>First name.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>lastName</code></td>\n<td>Last name.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>dob</code></td>\n<td>Date of Birth.</td>\n<td>No</td>\n</tr>\n<tr>\n<td><code>residenceCountry</code></td>\n<td>Country of residence of end-user <a href=\"https://www.iso.org/obp/ui/#search\">https://www.iso.org/obp/ui/#search</a> for supported format.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>nationality</code></td>\n<td>Nationality of end-user  <br /><a href=\"https://www.iso.org/obp/ui/#search\">https://www.iso.org/obp/ui/#search</a> for supported format.</td>\n<td>No</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-codes\">Response Codes</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Code</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>201</td>\n<td>Created successfully.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Missing mandatory field value or validation issues.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Missing or invalid bearer token.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"3d672221-6065-4e2c-a12a-59191fc9c0d8","id":"3d672221-6065-4e2c-a12a-59191fc9c0d8","name":"Transaction Protection for Institutions","type":"folder"}},"urlObject":{"path":["user"],"host":["{{HOST}}"],"query":[],"variable":[]}},"response":[{"id":"aaab9fa0-4833-4654-bc35-6ab313a66f8f","name":"Create new user","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"userId\": \"jb001\",\n    \"firstName\": \"Joe\",\n    \"lastName\": \"Blogs\",\n    \"dob\": \"1975-05-01\",\n    \"residenceCountry\": \"US\",\n    \"nationality\": \"US\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.txm.coincover.com/user"},"status":"Created","code":201,"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":""}],"_postman_id":"951a093d-059a-4868-880d-a47bc2d39995"},{"name":"Update existing user","id":"65b54b64-fc06-4d42-b665-838e0c879d8b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"firstName\": \"Joe\",\n    \"lastName\": \"Blogs\",\n    \"residenceCountry\": \"US\"\n}"},"url":"/user/${userId}","description":"<h4 id=\"field-information\">Field Information</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Mandatory</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>firstName</td>\n<td>First name.</td>\n<td>No</td>\n</tr>\n<tr>\n<td>lastName</td>\n<td>Last name.</td>\n<td>No</td>\n</tr>\n<tr>\n<td>residenceCountry</td>\n<td>Country of residence of end-user <a href=\"https://www.iso.org/obp/ui/#search\">https://www.iso.org/obp/ui/#search</a> for supported format.</td>\n<td>No</td>\n</tr>\n<tr>\n<td>dob</td>\n<td>Date of Birth.</td>\n<td>No</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-codes\">Response Codes</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Codes</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>204</td>\n<td>Successfully updated.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Missing mandatory field value or validation issues.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Missing or invalid bearer token.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>User with the specified id does not exist.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"3d672221-6065-4e2c-a12a-59191fc9c0d8","id":"3d672221-6065-4e2c-a12a-59191fc9c0d8","name":"Transaction Protection for Institutions","type":"folder"}},"urlObject":{"path":["user","${userId}"],"query":[],"variable":[]}},"response":[{"id":"c04c0b2d-f7d0-416c-bb1a-198d1052e108","name":"Update existing user","originalRequest":{"method":"PATCH","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"firstName\": \"Joe\",\n    \"lastName\": \"Blogs\",\n    \"residenceCountry\": \"US\"\n}","options":{"raw":{"language":"json"}}},"url":"https://api.txm.coincover.com/user/jb001"},"status":"No Content","code":204,"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":""}],"_postman_id":"65b54b64-fc06-4d42-b665-838e0c879d8b"}],"id":"93131683-c006-46f3-b514-94fec6acf3eb","description":"<h3 id=\"overview\">Overview</h3>\n<p>This section contains APIs that are used to create and manage user registrations.</p>\n","_postman_id":"93131683-c006-46f3-b514-94fec6acf3eb","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"3d672221-6065-4e2c-a12a-59191fc9c0d8","id":"3d672221-6065-4e2c-a12a-59191fc9c0d8","name":"Transaction Protection for Institutions","type":"folder"}}},{"name":"Business management","item":[{"name":"Create new business user","id":"9290559f-ce4b-449e-8d9e-381186d18066","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"businessId\": \"jb001\",\n    \"name\": \"Company Name\",\n    \"address\": \"13 Gerrard St\",\n    \"registrationNumber\": \"12345-6789\",\n    \"contactPersonName\": \"Joe Blogs\",\n    \"contactPersonEmail\": \"joe@company.com\",\n    \"contactPersonPhone\": \"+447822000000\"\n}","options":{"raw":{"language":"json"}}},"url":"/business","description":"<p>Create new user is used to create a new User Registration for an existing User within a partner's systems. The User Id that is associated with user in the partner's systems should be specified in the request body along with the relevant user details as stated in the Field Information table.</p>\n<h4 id=\"field-information\">Field Information</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Mandatory</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>businessId</code></td>\n<td>User Id of the partner's business user relevant to the partners systems.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>name</code></td>\n<td>Name of the business</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>address</code></td>\n<td>Address</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>registrationNumber</code></td>\n<td>Registration Number</td>\n<td>No</td>\n</tr>\n<tr>\n<td><code>contactPersonName</code></td>\n<td>Name of the contact person for the business</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>contactPersonEmail</code></td>\n<td>Email of the contact person for the business</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td><code>contactPersonPhone</code></td>\n<td>Phone number of the contact person for the business</td>\n<td>No</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-codes\">Response Codes</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Code</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>201</td>\n<td>Created successfully.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Missing mandatory field value or validation issues.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Missing or invalid bearer token.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"3d672221-6065-4e2c-a12a-59191fc9c0d8","id":"3d672221-6065-4e2c-a12a-59191fc9c0d8","name":"Transaction Protection for Institutions","type":"folder"}},"urlObject":{"path":["business"],"query":[],"variable":[]}},"response":[{"id":"c0e3b31b-ef8f-4227-bc08-90b7f7694914","name":"Create new business user","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"},{"key":"Authorization","value":"Bearer ${API_TOKEN}"}],"body":{"mode":"raw","raw":"{\n    \"businessId\": \"jb001\",\n    \"name\": \"Company Name\",\n    \"address\": \"13 Gerrard St\",\n    \"registrationNumber\": \"12345-6789\",\n    \"contactPersonName\": \"Joe Blogs\",\n    \"contactPersonEmail\": \"joe@company.com\",\n    \"contactPersonPhone\": \"+447822000000\"\n}"},"url":"https://api.txm.coincover.com/business"},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":null}],"_postman_id":"9290559f-ce4b-449e-8d9e-381186d18066"},{"name":"Update existing business user","id":"4bf7f352-a300-41ff-8a78-03f99bdf8ba0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"name\": \"Company Name\",\n    \"address\": \"72 Horseferry Rd\",\n    \"registrationNumber\": \"12345-6789\",\n    \"contactPersonName\": \"Joe Blogs\",\n    \"contactPersonEmail\": \"joe@company.com\",\n    \"contactPersonPhone\": \"+447822000000\"\n}"},"url":"/business/${businessId}","description":"<h4 id=\"field-information\">Field Information</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Mandatory</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>name</code></td>\n<td>Name of the business</td>\n<td>No</td>\n</tr>\n<tr>\n<td><code>address</code></td>\n<td>Address</td>\n<td>No</td>\n</tr>\n<tr>\n<td><code>registrationNumber</code></td>\n<td>Registration Number</td>\n<td>No</td>\n</tr>\n<tr>\n<td><code>contactPersonName</code></td>\n<td>Name of the contact person for the business</td>\n<td>No</td>\n</tr>\n<tr>\n<td><code>contactPersonEmail</code></td>\n<td>Email of the contact person for the business</td>\n<td>No</td>\n</tr>\n<tr>\n<td><code>contactPersonPhone</code></td>\n<td>Phone number of the contact person for the business</td>\n<td>No</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"response-codes\">Response Codes</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Codes</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>204</td>\n<td>Successfully updated.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Missing mandatory field value or validation issues.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Missing or invalid bearer token.</td>\n</tr>\n<tr>\n<td>404</td>\n<td>User with the specified id does not exist.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"3d672221-6065-4e2c-a12a-59191fc9c0d8","id":"3d672221-6065-4e2c-a12a-59191fc9c0d8","name":"Transaction Protection for Institutions","type":"folder"}},"urlObject":{"path":["business","${businessId}"],"query":[],"variable":[]}},"response":[{"id":"9183e9cb-7095-4b9a-84f3-b4256a842a18","name":"Update existing business user","originalRequest":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"name\": \"Company Name\",\n    \"address\": \"72 Horseferry Rd\",\n    \"registrationNumber\": \"12345-6789\",\n    \"contactPersonName\": \"Joe Blogs\",\n    \"contactPersonEmail\": \"joe@company.com\",\n    \"contactPersonPhone\": \"+447822000000\"\n}"},"url":"https://api.txm.coincover.com/business/${businessId}"},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":null}],"_postman_id":"4bf7f352-a300-41ff-8a78-03f99bdf8ba0"}],"id":"19214cf6-c6a4-466d-af70-276fd401bf50","description":"<h3 id=\"overview\">Overview</h3>\n<p>This section contains APIs that are used to create and manage business registration.</p>\n","_postman_id":"19214cf6-c6a4-466d-af70-276fd401bf50","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"3d672221-6065-4e2c-a12a-59191fc9c0d8","id":"3d672221-6065-4e2c-a12a-59191fc9c0d8","name":"Transaction Protection for Institutions","type":"folder"}}},{"name":"Transaction Check","item":[{"name":"Check Transaction","id":"2f8ccb87-7213-4208-bd32-fb38b45898c4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"transactionCustomerId\": \"b27f38b9-5158-4b4b-ae2f-a030852f98cd\",\n  \"transactionHash\": \"GL8636339870050078\",\n  \"coin\": \"bitcoin-cash\",\n  \"walletId\": \"1FjgpyeeWTRd7BxTXHEL2rjCj8\",\n  \"outputs\":[\n     {\n       \"destination\": \"16bG5v7VkCeadwzyD1CqAvL6soJ3nfGAhh\",\n       \"amount\": \"356\",\n       \"userId\": \"27a73667-fb36-4708-822f-8b2c79cb817e\"\n     }\n   ]\n}"},"url":"{{HOST}}/transaction","description":"<p>Transactions should be sent to CoinCover before they are published or broadcast to the blockchain.<br />CoinCover requires core elements of a blockchain transaction including the transaction Hash* which allows CoinCover to reconcile this for any published transactions.</p>\n<p>*For Fireblocks customers who are unable to provide a transaction Hash, a unique reference for the transaction can be submitted in place of the transaction Hash, from the <code>/v1/transaction</code> Fireblocks endpoint (please see the <strong>Fireblocks Field Information</strong> table).</p>\n<p>Transactions need to be associated to a wallet and an end-user.</p>\n<p>*For Fireblocks customers who need to provide a walletId, the tuple of the vaultId and assetId can be provided as the walletId in the form of ${vaultId}-${assetId} (please see the <strong>Fireblocks Field Information</strong> table).</p>\n<p>The chain and coin/token type needs to be defined.</p>\n<p>Note that tokens must be supported contractually and the list of token names can be found at <a href=\"https://www.coingecko.com/en/api/documentation\">https://www.coingecko.com/en/api/documentation</a></p>\n<h4 id=\"field-information\">Field Information</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Field</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Mandatory</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>transactionCustomerId</td>\n<td>Unique internal ID used by customers systems to identify a transaction.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>transactionHash</td>\n<td>Hash of the transaction, verifiable on chain if published.</td>\n<td>No</td>\n</tr>\n<tr>\n<td>coin</td>\n<td>Name of coin/token as defined in coingecko.  <br />Use name and not code. E.g bitcoin not btc as codes are not unique.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>walletId</td>\n<td>walletId associated to the user. Where there is an onchain reference available, this should be used.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>outputs</td>\n<td>Array to support single or batch transactions.  <br />Each object in the array should consist of a destination address, amount and the associated user.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>outputs: destination</td>\n<td>On chain destination address.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>outputs: amount</td>\n<td>Amount in currency. E.g. 1.7 bitcoin.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>outputs: userId</td>\n<td>User ID of the end-user relevant to the customers systems and associated to each output address.</td>\n<td>Yes</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"fireblocks-field-information\">Fireblocks Field Information</h4>\n<p><em><strong>Only applicable to customers who have assets on Fireblocks.</strong></em></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Fireblocks Field</strong></th>\n<th>CoinCover <strong>Field</strong></th>\n<th><strong>Description</strong></th>\n<th><strong>Mandatory</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>externalTxId</td>\n<td>transactionCustomerId</td>\n<td>Unique transaction ID provided by the user. Future transactions with same ID will be rejected.</td>\n<td>Yes</td>\n</tr>\n<tr>\n<td>vaultId-assetId</td>\n<td>walletId</td>\n<td>The tuple of the vaultId and assetId should be provided as the walletId in the form of ${vaultId}-${assetId}.</td>\n<td>Yes</td>\n</tr>\n</tbody>\n</table>\n</div><h4 id=\"http-status-codes\">HTTP Status Codes</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Codes</strong></th>\n<th><strong>Description</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>200</td>\n<td>OK.</td>\n</tr>\n<tr>\n<td>400</td>\n<td>Missing mandatory field value or validation issues.</td>\n</tr>\n<tr>\n<td>401</td>\n<td>Missing or invalid bearer token.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"3d672221-6065-4e2c-a12a-59191fc9c0d8","id":"3d672221-6065-4e2c-a12a-59191fc9c0d8","name":"Transaction Protection for Institutions","type":"folder"}},"urlObject":{"path":["transaction"],"host":["{{HOST}}"],"query":[],"variable":[]}},"response":[{"id":"c12e9b41-7982-41f2-a27a-e41f03a3883c","name":"200 - OK","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"transactionCustomerId\": \"b27f38b9-5158-4b4b-ae2f-a030852f98cd\",\n  \"transactionHash\": \"GL8636339870050078\",\n  \"coin\": \"bitcoin-cash\",\n  \"walletId\": \"1FjgpyeeWTRd7BxTXHEL2rjCj8\",\n  \"outputs\":[\n     {\n       \"destination\": \"16bG5v7VkCeadwzyD1CqAvL6soJ3nfGAhh\",\n       \"amount\": \"356\",\n       \"userId\": \"27a73667-fb36-4708-822f-8b2c79cb817e\"\n     }\n   ]\n}","options":{"raw":{"language":"json"}}},"url":"/transaction"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"transactionUUID\": \"3d0ee9d3-4d85-5c8e-af77-3bc9feec83f2\",\n    \"status\": \"GREEN\",\n    \"message\": \"Transaction is protected by CoinCover.\"\n}"},{"id":"c77d830f-3c6e-46c4-ab53-bdd2104b517f","name":"200 - OK (50202)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"transactionCustomerId\": \"b27f38b9-5158-4b4b-ae2f-a030852f98cd\",\n  \"transactionHash\": \"GL8636339870050078\",\n  \"coin\": \"bitcoin-cash\",\n  \"walletId\": \"1FjgpyeeWTRd7BxTXHEL2rjCj8\",\n  \"outputs\":[\n     {\n       \"destination\": \"16bG5v7VkCeadwzyD1CqAvL6soJ3nfGAhh\",\n       \"amount\": \"356\",\n       \"userId\": \"27a73667-fb36-4708-822f-8b2c79cb817e\"\n     }\n   ]\n}","options":{"raw":{"language":"json"}}},"url":"/transaction"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"transactionUUID\": \"45bf9605-e388-5636-8949-9598ea872c3e\",\n    \"status\": \"RED\",\n    \"code\": \"50202\",\n    \"message\": \"The destination wallet address is suspected to be involved with malicious behaviour.\",\n    \"meta\": {\n        \"category\": \"SUSPECTED_MALICIOUS_ADDRESS\",\n        \"providerCategory\": null,\n        \"blocklistedAddress\": \"16bG5v7VkCeadwzyD1CqAvL6soJ3nfGAhh\"\n    }\n}"},{"id":"b6617fea-f5e5-4bdb-afd4-0b9bb1513407","name":"200 - OK (50102)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"transactionCustomerId\": \"b27f38b9-5158-4b4b-ae2f-a030852f98cd\",\n  \"transactionHash\": \"GL8636339870050078\",\n  \"coin\": \"bitcoin-cash\",\n  \"walletId\": \"1FjgpyeeWTRd7BxTXHEL2rjCj8\",\n  \"outputs\":[\n     {\n       \"destination\": \"16bG5v7VkCeadwzyD1CqAvL6soJ3nfGAhh\",\n       \"amount\": \"356\",\n       \"userId\": \"27a73667-fb36-4708-822f-8b2c79cb817e\"\n     }\n   ]\n}","options":{"raw":{"language":"json"}}},"url":"/transaction"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"transactionUUID\": \"c1ed3a7d-37ca-587c-b8b0-fe5ce018f2ad\",\n    \"status\": \"RED\",\n    \"code\": \"50102\",\n    \"message\": \"The destination wallet address has previously been associated with reported scam.\",\n    \"meta\": {\n        \"category\": \"SCAMMING_ADDRESS\",\n        \"providerCategory\": \"Scamming\",\n        \"blocklistedAddress\": \"0x5B2b8b9c674e67F718BB54Cc62C2a2E13308229d\"\n    }\n}"},{"id":"8908b825-da04-4491-9b47-0431ffdfeec9","name":"200 - OK (50307)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"transactionCustomerId\": \"b27f38b9-5158-4b4b-ae2f-a030852f98cd\",\n  \"transactionHash\": \"GL8636339870050078\",\n  \"coin\": \"bitcoin-cash\",\n  \"walletId\": \"1FjgpyeeWTRd7BxTXHEL2rjCj8\",\n  \"outputs\":[\n     {\n       \"destination\": \"16bG5v7VkCeadwzyD1CqAvL6soJ3nfGAhh\",\n       \"amount\": \"356\",\n       \"userId\": \"27a73667-fb36-4708-822f-8b2c79cb817e\"\n     }\n   ]\n}","options":{"raw":{"language":"json"}}},"url":"/transaction"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"transactionUUID\": \"5e78aaaf-adae-5348-83e4-108879cc98a8\",\n    \"status\": \"RED\",\n    \"code\": \"50307\",\n    \"message\": \"The transaction amount breaches the maximum daily amount for your organisation.\",\n    \"meta\": {\n        \"tokenAmount\": 100,\n        \"usdAmount\": 34801,\n        \"usdLimit\": 5000,\n        \"amountBreachedBy\": \"$29,801.00\"\n    }\n}"},{"id":"173b9266-d7f7-41d4-8389-97ef97208fda","name":"200 - OK (50106)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"transactionCustomerId\": \"b27f38b9-5158-4b4b-ae2f-a030852f98cd\",\n  \"transactionHash\": \"GL8636339870050078\",\n  \"coin\": \"bitcoin-cash\",\n  \"walletId\": \"1FjgpyeeWTRd7BxTXHEL2rjCj8\",\n  \"outputs\":[\n     {\n       \"destination\": \"16bG5v7VkCeadwzyD1CqAvL6soJ3nfGAhh\",\n       \"amount\": \"356\",\n       \"userId\": \"27a73667-fb36-4708-822f-8b2c79cb817e\"\n     }\n   ]\n}","options":{"raw":{"language":"json"}}},"url":"/transaction"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"transactionUUID\": \"c1ed3a7d-37ca-587c-b8b0-fe5ce018f2ad\",\n    \"status\": \"RED\",\n    \"code\": \"50106\",\n    \"message\": \"The destination wallet address has previously been associated with blackmail activities.\",\n    \"meta\": {\n        \"category\": \"BLACKMAIL_ACTIVITIES\",\n        \"providerCategory\": \"blackmail scam\",\n        \"blocklistedAddress\": \"3NMn7e4tvH8fsbLrsGx5h1ZDHSpv3t8n6d\"\n    }\n}"},{"id":"4fdc6caf-1214-4c58-8b2b-629efa2d613a","name":"200 - OK (50102)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"transactionCustomerId\": \"b27f38b9-5158-4b4b-ae2f-a030852f98cd\",\n  \"transactionHash\": \"GL8636339870050078\",\n  \"coin\": \"bitcoin-cash\",\n  \"walletId\": \"1FjgpyeeWTRd7BxTXHEL2rjCj8\",\n  \"outputs\":[\n     {\n       \"destination\": \"16bG5v7VkCeadwzyD1CqAvL6soJ3nfGAhh\",\n       \"amount\": \"356\",\n       \"userId\": \"27a73667-fb36-4708-822f-8b2c79cb817e\"\n     }\n   ]\n}","options":{"raw":{"language":"json"}}},"url":"/transaction"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"transactionUUID\": \"23f94b8b-e68e-57ff-bf67-3670900768ce\",\n    \"status\": \"RED\",\n    \"code\": \"50102\",\n    \"message\": \"The destination wallet address has previously been associated with reported scam.\",\n    \"meta\": {\n        \"category\": \"SCAMMING_ADDRESS\",\n        \"providerCategory\": \"Scamming\",\n        \"blocklistedAddress\": \"0xCE04bB02c933bdAd15c2397b09AF2717CA581327\"\n    }\n}"},{"id":"ed0ec4c9-7d33-4dcf-bfda-57032fc4f0a6","name":"400 - Bad Request (Unsupported)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"transactionCustomerId\": \"b27f38b9-5158-4b4b-ae2f-a030852f98cd\",\n  \"transactionHash\": \"GL8636339870050078\",\n  \"coin\": \"invalid\",\n  \"walletId\": \"1FjgpyeeWTRd7BxTXHEL2rjCj8\",\n  \"outputs\":[\n     {\n       \"destination\": \"16bG5v7VkCeadwzyD1CqAvL6soJ3nfGAhh\",\n       \"amount\": \"356\",\n       \"userId\": \"27a73667-fb36-4708-822f-8b2c79cb817e\"\n     }\n   ]\n}","options":{"raw":{"language":"json"}}},"url":"/transaction"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"statusCode\": 400,\n    \"error\": \"Bad Request\",\n    \"message\": \"Coin XTZ_ETHERLINK is unsupported at this time\"\n}"},{"id":"c8d0457d-e527-4028-9a2d-d31186942746","name":"400 - Bad Request (Unrecognised)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Authorization","value":"Bearer ${API_TOKEN}","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"transactionCustomerId\": \"b27f38b9-5158-4b4b-ae2f-a030852f98cd\",\n  \"transactionHash\": \"GL8636339870050078\",\n  \"coin\": \"invalid\",\n  \"walletId\": \"1FjgpyeeWTRd7BxTXHEL2rjCj8\",\n  \"outputs\":[\n     {\n       \"destination\": \"16bG5v7VkCeadwzyD1CqAvL6soJ3nfGAhh\",\n       \"amount\": \"356\",\n       \"userId\": \"27a73667-fb36-4708-822f-8b2c79cb817e\"\n     }\n   ]\n}","options":{"raw":{"language":"json"}}},"url":"/transaction"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"statusCode\": 400,\n    \"error\": \"Bad Request\",\n    \"message\": \"Unrecognised coin name provided. The coin you entered is currently not supported. Please verify the coin_id format or try another coin_id. For further assistance, kindly contact our support team. Thank you.\"\n}"}],"_postman_id":"2f8ccb87-7213-4208-bd32-fb38b45898c4"}],"id":"354885a7-c957-47c6-8f9e-79dd5dd294e0","description":"<p>Transactions should be sent to the Risk Engine before they are broadcast to the blockchain.</p>\n<p>For each transaction checked, CoinCover will provide a response indicating whether the transaction is 'Green' (protected by CoinCover) or 'Red' (not protected by CoinCover). 'Red' responses will contain the relevant reason code and description.</p>\n<h4 id=\"threat-detected-codes\">Threat Detected Codes</h4>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Code</strong></th>\n<th><strong>Category</strong></th>\n<th><strong>Reason</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>50101</td>\n<td>Sanctioned address</td>\n<td>The destination wallet address is associated with an untrustworthy or high-risk jurisdiction.</td>\n</tr>\n<tr>\n<td>50102</td>\n<td>Scamming address</td>\n<td>The destination wallet address has previously been associated with reported scam.</td>\n</tr>\n<tr>\n<td>50103</td>\n<td>Phishing address</td>\n<td>The destination wallet address has previously been associated with reported phishing activities.</td>\n</tr>\n<tr>\n<td>50104</td>\n<td>Previous claim</td>\n<td>The destination wallet address has previously been associated with a previous claim incident.</td>\n</tr>\n<tr>\n<td>50105</td>\n<td>Honeypot token</td>\n<td>The destination wallet address has previously been associated with honeypot tokens or has created scam tokens.</td>\n</tr>\n<tr>\n<td>50106</td>\n<td>Blackmail activities</td>\n<td>The destination wallet address has previously been associated with blackmail activities.</td>\n</tr>\n<tr>\n<td>50107</td>\n<td>Stealing attack</td>\n<td>The destination wallet address has previously been associated with a reported stealing attack.</td>\n</tr>\n<tr>\n<td>50108</td>\n<td>Fake KYC</td>\n<td>The destination wallet address has previously been involved with faking KYC requirements.</td>\n</tr>\n<tr>\n<td>50109</td>\n<td>Malicious mining activities</td>\n<td>The destination wallet address has previously been involved with malicious mining activities.</td>\n</tr>\n<tr>\n<td>50110</td>\n<td>Darkweb transactions</td>\n<td>The destination wallet address has previously been involved with darkweb transactions.</td>\n</tr>\n<tr>\n<td>50111</td>\n<td>Cybercrime</td>\n<td>The destination wallet address has previously been involved with cybercrime activities.</td>\n</tr>\n<tr>\n<td>50112</td>\n<td>Money laundering</td>\n<td>The destination wallet address has previously been involved with money laundering activities.</td>\n</tr>\n<tr>\n<td>50113</td>\n<td>Financial crime</td>\n<td>The destination wallet address has previously been involved with financial crime activities.</td>\n</tr>\n<tr>\n<td>50114</td>\n<td>Sextortion</td>\n<td>The destination wallet address has previously been involved with sextortion activities.</td>\n</tr>\n<tr>\n<td>50115</td>\n<td>Ransomware</td>\n<td>The destination wallet address has previously been involved with ransomware attacks.</td>\n</tr>\n<tr>\n<td>50201</td>\n<td>Associated with blocklist wallet</td>\n<td>The destination wallet address has previously transacted with known blocklisted addresses.</td>\n</tr>\n<tr>\n<td>50202</td>\n<td>Suspected malicious address</td>\n<td>The destination wallet address is suspected to be involved with malicious behaviour.</td>\n</tr>\n<tr>\n<td>50301</td>\n<td>User upper amount hourly limit</td>\n<td>The transaction amount breaches the user's maximum amount per hour limit policy.</td>\n</tr>\n<tr>\n<td>50302</td>\n<td>User upper amount daily limit</td>\n<td>The transaction amount breaches the user's maximum amount per day limit policy.</td>\n</tr>\n<tr>\n<td>50303</td>\n<td>Organisation transaction upper amount limit</td>\n<td>The transaction amount breaches the maximum amount per transaction limit policy.</td>\n</tr>\n<tr>\n<td>50304</td>\n<td>Wallet hourly upper amount limit</td>\n<td>The transaction amount breaches the maximum amount per hour for this wallet.</td>\n</tr>\n<tr>\n<td>50305</td>\n<td>Wallet daily upper amount limit</td>\n<td>The transaction amount breaches the maximum amount per day for this wallet.</td>\n</tr>\n<tr>\n<td>50306</td>\n<td>Organisation hourly upper amount limit</td>\n<td>The transaction amount breaches the maximum amount per hour for your organisation.</td>\n</tr>\n<tr>\n<td>50307</td>\n<td>Organisation daily upper amount limit</td>\n<td>The transaction amount breaches the maximum amount per day for your organisation.</td>\n</tr>\n<tr>\n<td>50308</td>\n<td>Organisation transactions limit (per user)</td>\n<td>The transaction breaches the maximum number of transactions allowed per day for your organisation.</td>\n</tr>\n<tr>\n<td>50310</td>\n<td>User transaction upper amount limit</td>\n<td>This transaction amount breaches the maximum claim limit amount for this user.</td>\n</tr>\n<tr>\n<td>50401</td>\n<td>User upper limit</td>\n<td>This transaction amount breaches CoinCover's user limit policy.</td>\n</tr>\n<tr>\n<td>50402</td>\n<td>Transaction amount daily limit</td>\n<td>This transaction amount breaches CoinCover's daily limit policy.</td>\n</tr>\n<tr>\n<td>50403</td>\n<td>Transaction upper amount limit</td>\n<td>The transaction amount breaches CoinCover's maximum amount per transaction limit.</td>\n</tr>\n<tr>\n<td>50501</td>\n<td>Anomalous daily transaction</td>\n<td>This transaction has been determined as being suspicious in conjunction with the daily pattern.</td>\n</tr>\n<tr>\n<td>50502</td>\n<td>Anomalous weekly transaction</td>\n<td>This transaction has been determined as being suspicious in conjunction with the weekly pattern.</td>\n</tr>\n<tr>\n<td>50503</td>\n<td>Anomalous monthly transaction</td>\n<td>This transaction has been determined as being suspicious in conjunction with the monthly pattern.</td>\n</tr>\n<tr>\n<td>50504</td>\n<td>Anomalous quarterly transaction</td>\n<td>This transaction has been determined as being suspicious in conjunction with the quarterly pattern.</td>\n</tr>\n<tr>\n<td>50505</td>\n<td>Anomalous yearly transaction</td>\n<td>This transaction has been determined as being suspicious in conjunction with the yearly pattern.</td>\n</tr>\n<tr>\n<td>50601</td>\n<td>Transaction is in a time window with abnormal volume</td>\n<td>This transaction has been determined as being suspicious in conjunction with time of day.</td>\n</tr>\n<tr>\n<td>50602</td>\n<td>Transaction is in a time window with abnormal volume</td>\n<td>This transaction has been determined as being suspicious in conjunction weekly behaviour.</td>\n</tr>\n<tr>\n<td>50603</td>\n<td>Transaction is in a time window with abnormal volume</td>\n<td>This transaction has been determined as being suspicious in conjunction monthly behaviour.</td>\n</tr>\n<tr>\n<td>50701</td>\n<td>Token not supported by CoinCover</td>\n<td>This transaction contains a token that is not protected by CoinCover.</td>\n</tr>\n</tbody>\n</table>\n</div>","event":[{"listen":"prerequest","script":{"id":"ebe683bf-9a9f-4728-8247-b0c8769b59e7","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"d31a8602-fd1d-4774-8ab6-00300cd5ecb6","type":"text/javascript","exec":[""]}}],"_postman_id":"354885a7-c957-47c6-8f9e-79dd5dd294e0","auth":{"type":"noauth","isInherited":true,"source":{"_postman_id":"3d672221-6065-4e2c-a12a-59191fc9c0d8","id":"3d672221-6065-4e2c-a12a-59191fc9c0d8","name":"Transaction Protection for Institutions","type":"folder"}}}],"id":"3d672221-6065-4e2c-a12a-59191fc9c0d8","description":"<h2 id=\"transaction-screening-and-monitoring-for-protected-wallets\">Transaction screening and monitoring for protected wallets</h2>\n<p>CoinCover protects your wallets and workspaces by actively monitoring and validating outgoing transaction events.</p>\n<p>During various transaction stages, we'll promptly notify you that a transaction is protected by CoinCover or of any potential threats and suspicious activity, ensuring robust protection at all times.</p>\n<p>Integration methods</p>\n<ol>\n<li><p><strong>Screening and monitoring API:</strong> Use our API to directly send transaction details and receive responses within milliseconds. This allows for real-time monitoring and immediate feedback on each transaction's protected status.</p>\n</li>\n<li><p><strong>Partner connections guide:</strong> Implement event-based monitoring by configuring webhooks with your preferred wallet service provider. Our guides include specific setup instructions for:</p>\n</li>\n</ol>\n<ul>\n<li><p>Bitgo</p>\n</li>\n<li><p>Fireblocks</p>\n</li>\n<li><p>ForDeFi</p>\n</li>\n</ul>\n","auth":{"type":"noauth","isInherited":false},"event":[{"listen":"prerequest","script":{"id":"129be808-4000-4965-8fb2-c7ffdb9c4849","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"e5f5e339-76ad-45a0-aaa2-b6a92b3f3bdb","type":"text/javascript","exec":[""]}}],"_postman_id":"3d672221-6065-4e2c-a12a-59191fc9c0d8"},{"name":"Institutional partner connections","item":[{"name":"BitGo","item":[],"id":"19ccd9f9-7702-4c1b-9a83-582840e26720","description":"<h4 id=\"enabling-coincover-transaction-protection-and-recover-services-on-bitgo\">Enabling CoinCover Transaction Protection and ReCOVER services on BitGo</h4>\n<p>Creating a read-only API token and adding Webhooks, which only has access to protected wallets, is required to enable protection services for BitGo wallets.</p>\n<p>This process creates a dedicated BitGo user account with viewer access to covered wallets and then adds a viewer only API token.</p>\n<h4 id=\"step-1-create-a-viewer-account-and-add-viewer-api-token-to-existing-bitgo-account\">Step 1: Create a viewer account and add Viewer API token to existing BitGo Account</h4>\n<ul>\n<li><p>Create a new BitGo user, specifically for the purpose of CoinCover monitoring</p>\n</li>\n<li><p>If using a BitGo Enterprise account, add the user to the enterprise and get any approvals required to make it available to add to wallets</p>\n</li>\n<li><p>For each covered wallet, add the dedicated user as a <em>Viewer</em>, again, ensuring any approvals for such actions are completed</p>\n</li>\n<li><p>Log in as the dedicated user</p>\n</li>\n</ul>\n<h4 id=\"step-2-add-viewer-api-token-to-existing-bitgo-account\">Step 2: Add Viewer API token to existing BitGo Account</h4>\n<ul>\n<li><p>In the BitGo console, under the user in the top right-hand corner, click on <em>Account Settings</em></p>\n</li>\n<li><p>Select <em>Developer Options</em></p>\n</li>\n<li><p>Click on the plus sign next to <em>Access tokens</em></p>\n</li>\n<li><p>Set the token label to: <code>Coincover Monitoring Token</code></p>\n</li>\n<li><p>Leave the duration as <code>315360000</code></p>\n</li>\n<li><p>Copy the following 5 IP addresses into the box:<br />  <code>18.133.68.226,3.11.149.135,3.11.127.247,18.169.123.165,18.169.110.69</code><br />  Note a ‘,’ is left between each ip address.</p>\n</li>\n<li><p>Remove any tokens specified under <em>Lifetime Spending Limits</em> using the ‘x’ to the left of each option</p>\n</li>\n<li><p>Set Permissions to <em>View</em></p>\n</li>\n<li><p>When ready, check the box next to <em>I agree</em> and click on <em>Add Access Token</em></p>\n</li>\n<li><p>Once clicked, you will be prompted for your 2FA device to authenticate the token creation</p>\n</li>\n</ul>\n<h4 id=\"step-3-add-a-webhook-to-each-wallet-protected-by-coincover\">Step 3: Add a Webhook to each wallet protected by CoinCover</h4>\n<ul>\n<li><p>In the BitGo console, select a wallet and navigate to the Settings tab.</p>\n</li>\n<li><p>Scroll towards the end of the page and click \"+ Add Webhook\".</p>\n</li>\n<li><p>Provide a name for the Webhook and select \"Transactions\".</p>\n</li>\n<li><p>Add the relevant URL which CoinCover will generate and send to you, containing a unique token reference for your organisation.</p>\n</li>\n<li><p>Example format below:</p>\n</li>\n</ul>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Environment</th>\n<th>Example webhook url</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>TEST</td>\n<td><code>https://webhook.txm-uat.coincover.com/bitgo?token=${token}</code></td>\n</tr>\n<tr>\n<td>PROD</td>\n<td><code>https://webhook.txm.coincover.com/bitgo?token=${token}</code></td>\n</tr>\n</tbody>\n</table>\n</div><ul>\n<li><p>Check the services agreement and then Add Webhook.</p>\n</li>\n<li><p><strong>Repeat Step 3</strong> for each wallet protected by CoinCover.</p>\n</li>\n</ul>\n","_postman_id":"19ccd9f9-7702-4c1b-9a83-582840e26720"},{"name":"Fireblocks","item":[],"id":"aa52190b-5274-42c6-99a7-c0edff7c78ab","description":"<h4 id=\"enabling-coincover-protection-services-on-fireblocks\">Enabling CoinCover protection services on Fireblocks</h4>\n<p>Create a read-only API user, which has read-only access to specified vaults in a Fireblocks workspace.</p>\n<p>Configure the webhook URL on the Fireblocks console which is required to provide CoinCover with a view of completed transactions.</p>\n<h4 id=\"step-1-add-a-new-api-user-to-fireblocks-and-securely-send-the-api-key-to-coincover\">Step 1: Add a New API User to Fireblocks and Securely Send the API Key to CoinCover</h4>\n<p>To provide CoinCover with read-only access to the relevant data on Fireblocks, you will need to complete the following steps to add a new API user on the Fireblocks console.</p>\n<ul>\n<li><p>Follow this <a href=\"https://support.fireblocks.io/hc/en-us/articles/4407823826194-Adding-New-API-Users\">Fireblocks guide to Add a new API user</a>.</p>\n</li>\n<li><p>Name the new user with a relevant name e.g. ‘CoinCover’</p>\n</li>\n<li><p>Select the Role as ‘Viewer’ from the dropdown list</p>\n</li>\n</ul>\n<p><strong>Please note</strong>: if you wish to use IP address whitelisting then please follow this <a href=\"https://support.fireblocks.io/hc/en-us/articles/4405980040210-Whitelisting-IP-addresses-for-API-requests\">Fireblocks guide to Whitelist IP addresses for API requests</a> and use those listed below:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>IP Addresses</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>18.133.68.226</td>\n</tr>\n<tr>\n<td>3.11.149.135</td>\n</tr>\n<tr>\n<td>3.11.127.247</td>\n</tr>\n<tr>\n<td>18.169.123.165</td>\n</tr>\n<tr>\n<td>18.169.110.69</td>\n</tr>\n</tbody>\n</table>\n</div><ul>\n<li>Attach the .csr file provided by CoinCover:</li>\n</ul>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Environment</strong></th>\n<th><strong>CSR file name</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>TEST</td>\n<td>coincover-fireblocks-api-test.csr</td>\n</tr>\n<tr>\n<td>PROD</td>\n<td>coincover-fireblocks-api-prod.csr</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Please note</strong>: the new user will need to be approved on Fireblocks by someone with the relevant permissions in your organisation.</p>\n<ul>\n<li><p>Once you have set up the new API user, navigate to the <em>Users</em> tab, where you should see the new API user in the list.</p>\n</li>\n<li><p>Click the <em>key</em> icon next to the API username as shown in the above image to <em>Copy the API key.</em></p>\n</li>\n<li><p>Then share this API key securely with a member of the Solutions Engineering team at CoinCover.</p>\n</li>\n</ul>\n<h4 id=\"step-2-ensure-webhooks-are-enabled\">Step 2: Ensure Webhooks are Enabled</h4>\n<ul>\n<li><p>Check that Webhooks are enabled by:</p>\n</li>\n<li><p>Login into your Fireblocks console</p>\n</li>\n<li><p>Navigate to the console settings from the avatar dropdown menu</p>\n</li>\n<li><p>On the <em>General</em> tab, look for the <em>Configure Webhook URL</em> section to validate webhooks are enabled</p>\n</li>\n<li><p>If you do not see the <em>Configure Webhook URL</em> section under the general tab, then they are not enabled, and you will need to <em>Contact Fireblocks</em> requesting that webhooks are enabled on your workspace</p>\n</li>\n</ul>\n<h4 id=\"step-3-configure-webhook-url\">Step 3: Configure Webhook URL</h4>\n<ul>\n<li><p>On the <em>Fireblocks Console &gt; Avatar &gt; Drop down menu &gt; Navigate to settings &gt; General</em> (following the same instructions as in step 1)</p>\n</li>\n<li><p>In the <em>Configure Webhook URL</em> section, select the <em>Manage URL</em> button</p>\n</li>\n<li><p>Add the relevant URL which CoinCover will generate and send to you, containing a unique token reference for your organisation.</p>\n</li>\n<li><p>Example format below:</p>\n</li>\n</ul>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Environment</strong></th>\n<th><strong>Example webhook url</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>TEST</td>\n<td><code>https:// webhook.txm-uat.coincover.com/fireblocks?token=${token}</code></td>\n</tr>\n<tr>\n<td>PROD</td>\n<td><code>https:// webhook.txm.coincover.com/fireblocks?token=${token}</code></td>\n</tr>\n</tbody>\n</table>\n</div><ul>\n<li>Press ‘Save’</li>\n</ul>\n<p>Once the above steps have been completed, a member of the Solutions Engineering team at CoinCover will validate the connection.</p>\n","_postman_id":"aa52190b-5274-42c6-99a7-c0edff7c78ab"},{"name":"ForDeFi","item":[],"id":"90b3e246-6618-4992-9dcf-4c7cf000496f","description":"<p><strong>ForDeFi Integration with CoinCover</strong></p>\n<h2 id=\"step-1-create-an-api-user-on-fordefi\"><strong>Step 1: Create an API User on ForDeFi</strong></h2>\n<ol>\n<li><p>Log in to your ForDeFi account.</p>\n</li>\n<li><p>Navigate to the User Management area and click “+ Add Users”.</p>\n</li>\n<li><p>Select the API user tab.</p>\n</li>\n<li><p>Name the new API user something relevant like 'CoinCover API'.</p>\n</li>\n<li><p>Generate the API key for this user and securely store it.</p>\n</li>\n</ol>\n<img src=\"https://content.pstmn.io/c4766889-7f94-4f81-84bf-535de6caa718/aW1hZ2UucG5n\" width=\"846\" height=\"592\" />\n\n<img src=\"https://lh7-us.googleusercontent.com/docsz/AD_4nXeJeFkE7WmjoJV7_xOMtaGQ8n8AWtm4sUVX__McdubgX_3D_yxjt7Ria0P-Mx9XsFS-zIk7dP5SxNCEUpGbbztOXRwx12pysnDwlo7PN8tOFPmpzHneNsZQuk_Q2gmdqDz2j9euqOR2jAFmN6nsLHrVsqTq?key=Q0w5Esf3XlRC38ZFPJXebQ\" />\n\n<h2 id=\"step-2-create-a-rule-for-the-api-user-on-fordefi\"><strong>Step 2: Create a Rule for the API User on ForDeFi</strong></h2>\n<img src=\"https://lh7-us.googleusercontent.com/docsz/AD_4nXcUniQd8pxEgh3WIF40DkvmNmujH6cO0CE-KdYODJ15olpOHtmzDAR-iIrYrM5C8Oh4XwhKm-wnvnpSNDItF9Sg-XI_NVjm4vzZ3FsvklNiyUUM5rwNMGukm_SVM9EwAuEJ9fO1xZwZ_KApdmxRszcuE8LH?key=Q0w5Esf3XlRC38ZFPJXebQ\" />\n\n<ol>\n<li><p>Create a new transaction policy rule with an appropriate name like ‘CoinCover <strong>Read-only</strong>’.</p>\n</li>\n<li><p>In the ‘Source’ section, select the <strong>CoinCover API</strong> user previously created as the initiator.</p>\n</li>\n<li><p>Leaving everything else as default, in the ‘<strong>Action</strong>’ section, select ‘<strong>Block</strong>’.</p>\n</li>\n<li><p>Then ‘<strong>Save’</strong>.</p>\n</li>\n</ol>\n<p><strong>Note</strong>: This ensures that the CoinCover API user is blocked from performing any actions on your ForDeFi account.</p>\n<img src=\"https://lh7-us.googleusercontent.com/docsz/AD_4nXfa3iLkSXwzRsHJM-Dp5JugVWUb2poPBqw2yFPFB3bXATu37EWAPYWAq5AScinUjKVdz5ADwc3uXHaDxwt1bj0rV_UonR8RE2lEbjHLIfq0lgfH8IAUoOfCVE1NKas5PPsQ1gx0v2tN9-rM8OHA_dQnrS8?key=Q0w5Esf3XlRC38ZFPJXebQ\" />\n\n<p><strong>Important note</strong>: You must ensure that in all policies you have selected a specific group of users to be approvers, rather than leaving the default “Any“. The ‘CoinCover API user must be excluded from all lists of approvers on other Transaction Policies in order to prevent CoinCover from having the ability to approve/reject the signing of a transaction. This aligns with ForDeFi’s general recommendations for transaction policies.</p>\n<h2 id=\"step-3-share-api-key-with-coincover\"><strong>Step 3: Share API Key with CoinCover</strong></h2>\n<ol>\n<li>Contact <strong>CoinCover's Solutions Engineering</strong> team and <strong>securely share</strong> the API key you generated for the 'CoinCover' API user.</li>\n</ol>\n<h2 id=\"step-4-configure-webhook-url-on-fordefi\"><strong>Step 4: Configure Webhook URL on ForDeFi</strong></h2>\n<p>In this section, we will configure webhooks in order to provide CoinCover with transaction events so that CoinCover can be notified of transaction events occurring in your account and protect your transactions.</p>\n<img src=\"https://lh7-us.googleusercontent.com/docsz/AD_4nXfvtSVrEn1qEUR7nuqqkUhxccl48vPySsQvRoivfI5qfT1hpNjTRY8ZTZqGdO-NVm1Sf9TK-XvtBf3EwswDxkFhvl55SnKWW1WhzWIhFaZYjxKtwZgu29jpJEI17_ZFkvBH6MOZokjubXkqCPGAAThd7LfJ?key=Q0w5Esf3XlRC38ZFPJXebQ\" />\n\n<ol>\n<li><p>In your ForDeFi account, navigate to the settings area.</p>\n</li>\n<li><p>Select the Webhooks tab and click Configure webhook.</p>\n</li>\n<li><p>Populate the <strong>‘Callback URL’</strong> with the URL provided to you by CoinCover.</p>\n</li>\n</ol>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>Environment</strong></th>\n<th><strong>Example webhook format</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>TEST</td>\n<td><a href=\"https://webhook.txm-uat.coincover.com/fordefi?token=$%7Btoken%7D\"><b>https://webhook.txm-uat.coincover.com/fordefi?token=${token}</b></a></td>\n</tr>\n<tr>\n<td>PROD</td>\n<td><a href=\"https://webhook.txm.coincover.com/fordefi?token=$%7Btoken%7D\"><b>https://webhook.txm.coincover.com/fordefi?token=${token}</b></a></td>\n</tr>\n</tbody>\n</table>\n</div><img src=\"https://lh7-us.googleusercontent.com/docsz/AD_4nXcfqWkOXXgwHBCd-5MCsx3a91oYhTJntgRAueRfbFejQa6E6QPB22-Y30VOgJFpGV11_x0nuejM9_6D9wfPkm-crWSwoN5dUA9WCzM2RsFB_yn-lwThqvhrwChgVmj6rutByaOEktzHxuSbZtz4ECRgU89M?key=Q0w5Esf3XlRC38ZFPJXebQ\" />\n\n<ol>\n<li><p>Choose the ‘<strong>Transactions</strong>’ event trigger.</p>\n</li>\n<li><p>Click ‘<strong>Test webhook</strong>’ to ensure the webhook URL is valid.</p>\n</li>\n<li><p><strong>Save</strong> the webhook configuration.</p>\n</li>\n</ol>\n<h2 id=\"step-5-validate-connection\"><strong>Step 5: Validate Connection</strong></h2>\n<p>Once you have <strong>completed the above steps</strong>, a member of the CoinCover team will validate the connection and ensure that CoinCover's protection services are seamlessly integrated with your ForDeFi platform.</p>\n<p><strong>If you encounter any issues or need further assistance during the integration process, please don't hesitate to reach out to CoinCover's support team for prompt assistance.</strong></p>\n","_postman_id":"90b3e246-6618-4992-9dcf-4c7cf000496f"}],"id":"4bca44ea-7e9d-4e46-bb56-842e6daff3e8","description":"<h2 id=\"how-our-partner-connections-work\"><strong>How our partner connections work.</strong></h2>\n<p>To ensure the comprehensive monitoring and protection of your digital assets, it is essential for CoinCover to integrate with your chosen wallet service providers, referred to as 'Partners'. By establishing this connection, CoinCover gains the ability to view transaction events and monitor ongoing activities of your digitial assets. This integration is crucial for providing real-time security alerts and proactive screening of transactions to prevent unauthorised movement of funds and potential threats.</p>\n<h3 id=\"why-connect-your-wallet-service-provider\">Why connect your wallet service provider?</h3>\n<p>Connecting your wallet service provider with CoinCover allows us to:</p>\n<ul>\n<li><p><strong>Monitor transaction events:</strong> We track all transactions in real-time, ensuring that any suspicious activity is identified and addressed promptly.</p>\n</li>\n<li><p><strong>Protect digital assets:</strong> Our systems provide layers of security to protect your funds, with the option to provide additional checks prior to moving funds.</p>\n</li>\n<li><p><strong>View ongoing activity:</strong> By having visibility into the ongoing activity on your wallets, CoinCover can further enhance threat detection models based on your organisation's activity and offer insights with recommendations to adjust your claim limits to remain fully protected.</p>\n</li>\n</ul>\n<h3 id=\"how-to-connect\">How to Connect?</h3>\n<p>To initiate this process, you will need to configure your wallet service provider to allow CoinCover access. This typically involves generating read-only API users and setting up specific permissions that enable us to receive transaction data without compromising the control or security of your assets.</p>\n","_postman_id":"4bca44ea-7e9d-4e46-bb56-842e6daff3e8"}]}