@zkp2p/providers 3.0.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "actionType": "transfer_zelle",
3
+ "proofEngine": "reclaim",
3
4
  "authLink": "https://secure.bankofamerica.com/pay-transfer-pay-portal/?request_locale=en-us&returnSiteIndicator=GAIMW&target=paymentactivity#/",
4
5
  "url": "https://secure.bankofamerica.com/ogateway/payment-activity/api/v4/activity",
5
6
  "method": "POST",
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "actionType": "transfer_cashapp",
3
+ "proofEngine": "reclaim",
3
4
  "authLink": "https://cash.app/account/activity",
4
5
  "url": "https://cash.app/cash-app/activity/v1.0/page",
5
6
  "method": "POST",
@@ -127,7 +128,7 @@
127
128
  "includeAdditionalCookieDomains": [],
128
129
  "useExternalAction": true,
129
130
  "external": {
130
- "actionLink": "squarecash://cash?recipient=${{RECEIVER_ID}}&amount={{AMOUNT}}",
131
+ "actionLink": "https://cash.app/{{RECIPIENT_ID}}/{{AMOUNT}}",
131
132
  "appStoreLink": "https://apps.apple.com/us/app/cash-app-mobile-banking/id711923939",
132
133
  "playStoreLink": "https://play.google.com/store/apps/details?id=com.squareup.cash"
133
134
  }
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "actionType": "transfer_zelle",
3
+ "proofEngine": "reclaim",
3
4
  "authLink": "https://secure.chase.com/web/auth/dashboard#/dashboard/singleDoor/payments/activity;params=qp,sentactivity",
4
5
  "url": "https://secure.chase.com/svc/rr/payments/secure/v1/quickpay/payment/activity/list",
5
6
  "method": "POST",
@@ -144,4 +145,4 @@
144
145
  "playStoreLink": "https://play.google.com/store/apps/details?id=com.chase.sig.android"
145
146
  }
146
147
  }
147
- }
148
+ }
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "actionType": "transfer_zelle",
3
+ "proofEngine": "reclaim",
3
4
  "authLink": "https://online.citi.com/US/nga/zelle/transfer",
4
5
  "url": "https://online.citi.com/gcgapi/prod/public/v1/p2ppayments/pastActivityTransactions?transactionCount=20&pageId=0&tab=All",
5
6
  "method": "GET",
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "actionType": "transfer_idfc",
3
+ "proofEngine": "reclaim",
3
4
  "authLink": "https://my.idfcfirstbank.com/pay/history",
4
5
  "url": "https://app.my.idfcfirstbank.com/api/pfm/v2/transactions",
5
6
  "method": "POST",
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "actionType": "transfer_luxon",
3
+ "proofEngine": "reclaim",
3
4
  "authLink": "https://web.luxon.com/dashboard",
4
5
  "url": "https://client-service.luxon.com/api/v4/transfers/{{TRANSFER_ID}}",
5
6
  "method": "GET",
@@ -115,4 +116,4 @@
115
116
  "xPath": ""
116
117
  }
117
118
  ]
118
- }
119
+ }
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "actionType": "transfer_mercado_pago",
3
+ "proofEngine": "reclaim",
3
4
  "authLink": "https://www.mercadopago.com.ar/home",
4
5
  "url": "https://www.mercadopago.com.ar/activities/detail/{{PAYMENT_ID}}?from={{URL_PARAMS_FROM}}",
5
6
  "method": "GET",
@@ -114,7 +115,7 @@
114
115
  "internal": {
115
116
  "actionLink": "https://www.mercadopago.com.ar/money-out/transfer/",
116
117
  "actionCompletedUrlRegex": "https://www.mercadopago.com.ar/money-out/transfer/congrats\\?data=\\S+",
117
- "injectedJavaScript": "(function(){const style=document.createElement('style');style.textContent='.zkp2p-icon{position:absolute;right:10px;top:50%;transform:translateY(-50%);width:24px;height:24px;background:#007AFF;border-radius:4px;cursor:pointer;z-index:9999;display:flex;align-items:center;justify-content:center;color:white;font-weight:bold;font-size:12px;}.zkp2p-dropdown{position:absolute;background:#FFF;border:1px solid #E0E0E0;border-radius:6px;box-shadow:0 4px 12px rgba(0,0,0,0.15);z-index:99999;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,sans-serif;font-size:14px;color:#333;width:auto;min-width:250px;}.zkp2p-dropdown-item{padding:12px 16px;cursor:pointer;}.zkp2p-dropdown-item:hover{background:#F5F5F5;}.zkp2p-dropdown-item:active{background:#E8E8E8;}.zkp2p-dropdown-label{color:#666;font-size:12px;margin-bottom:4px;}.zkp2p-dropdown-value{font-weight:500;color:#333;font-size:16px;}.zkp2p-toast{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);background:#333;color:white;padding:10px 20px;border-radius:6px;z-index:999999;font-family:system-ui;}';document.head.appendChild(style);const copyToClipboard=function(text){const textArea=document.createElement('textarea');textArea.value=text;textArea.style.position='fixed';textArea.style.top='-9999px';document.body.appendChild(textArea);textArea.select();textArea.setSelectionRange(0,99999);document.execCommand('copy');document.body.removeChild(textArea);const toast=document.createElement('div');toast.className='zkp2p-toast';toast.textContent='Copied!';document.body.appendChild(toast);setTimeout(()=>toast.remove(),2000);};const createDropdown=function(input,label,value){const rect=input.getBoundingClientRect();const dropdown=document.createElement('div');dropdown.className='zkp2p-dropdown';dropdown.id='zkp2p-dropdown-'+Date.now();dropdown.style.position='absolute';dropdown.style.top=(rect.bottom+window.scrollY+4)+'px';dropdown.style.left=rect.left+'px';dropdown.style.display='block';const item=document.createElement('div');item.className='zkp2p-dropdown-item';item.innerHTML='<div class=\"zkp2p-dropdown-label\">'+label+'</div><div class=\"zkp2p-dropdown-value\">'+value+'</div>';item.addEventListener('click',function(){copyToClipboard(value);dropdown.remove();});dropdown.appendChild(item);document.body.appendChild(dropdown);setTimeout(()=>{document.addEventListener('click',function hideDropdown(e){if(!dropdown.contains(e.target)&&e.target!==input&&!e.target.classList.contains('zkp2p-icon')){dropdown.remove();document.removeEventListener('click',hideDropdown);}});},100);};const addIcon=function(input,label,value){const container=input.closest('.andes-amount-field__input-container')||input.parentElement;container.style.position='relative';const icon=document.createElement('div');icon.className='zkp2p-icon';icon.textContent='Z';icon.addEventListener('click',function(e){e.stopPropagation();const existing=document.querySelector('.zkp2p-dropdown');if(existing)existing.remove();createDropdown(input,label,value);});container.appendChild(icon);createDropdown(input,label,value);};const setupFields=function(){const cvuInput=document.querySelector('input[name=\"identification_account\"]');if(cvuInput&&!cvuInput.hasAttribute('data-zkp2p')){cvuInput.setAttribute('data-zkp2p','true');addIcon(cvuInput,'CVU for ZKP2P:','{{RECIPIENT_ID}}');}const amountInput=document.querySelector('#amount-field-input');if(amountInput&&!amountInput.hasAttribute('data-zkp2p')){amountInput.setAttribute('data-zkp2p','true');addIcon(amountInput,'Amount for ZKP2P:','{{AMOUNT}}');}};setTimeout(setupFields,1500);const observer=new MutationObserver(setupFields);observer.observe(document.body,{childList:true,subtree:true});})();"
118
+ "injectedJavaScript": "(function(){const style=document.createElement('style');style.textContent='.zkp2p-icon{position:absolute;right:10px;top:50%;transform:translateY(-50%);width:24px;height:24px;background:#007AFF;border-radius:4px;cursor:pointer;z-index:9999;display:flex;align-items:center;justify-content:center;color:white;font-weight:bold;font-size:12px;}.zkp2p-dropdown{position:absolute;background:#FFF;border:1px solid #E0E0E0;border-radius:6px;box-shadow:0 4px 12px rgba(0,0,0,0.15);z-index:99999;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,sans-serif;font-size:14px;color:#333;width:auto;min-width:250px;}.zkp2p-dropdown-item{padding:12px 16px;cursor:pointer;}.zkp2p-dropdown-item:hover{background:#F5F5F5;}.zkp2p-dropdown-item:active{background:#E8E8E8;}.zkp2p-dropdown-label{color:#666;font-size:12px;margin-bottom:4px;}.zkp2p-dropdown-value{font-weight:500;color:#333;font-size:16px;}.zkp2p-toast{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);background:#333;color:white;padding:10px 20px;border-radius:6px;z-index:999999;font-family:system-ui;}';document.head.appendChild(style);const copyToClipboard=function(text){const textArea=document.createElement('textarea');textArea.value=text;textArea.style.position='fixed';textArea.style.top='-9999px';document.body.appendChild(textArea);textArea.select();textArea.setSelectionRange(0,99999);document.execCommand('copy');document.body.removeChild(textArea);const toast=document.createElement('div');toast.className='zkp2p-toast';toast.textContent='Copied!';document.body.appendChild(toast);setTimeout(()=>toast.remove(),2000);};const createDropdown=function(input,label,value){const rect=input.getBoundingClientRect();const dropdown=document.createElement('div');dropdown.className='zkp2p-dropdown';dropdown.id='zkp2p-dropdown-'+Date.now();dropdown.style.position='absolute';dropdown.style.top=(rect.bottom+window.scrollY+4)+'px';dropdown.style.left=rect.left+'px';dropdown.style.display='block';const item=document.createElement('div');item.className='zkp2p-dropdown-item';item.innerHTML='<div class=\"zkp2p-dropdown-label\">'+label+'</div><div class=\"zkp2p-dropdown-value\">'+value+'</div>';item.addEventListener('click',function(){copyToClipboard(value);dropdown.remove();});dropdown.appendChild(item);document.body.appendChild(dropdown);setTimeout(()=>{document.addEventListener('click',function hideDropdown(e){if(!dropdown.contains(e.target)&&e.target!==input&&!e.target.classList.contains('zkp2p-icon')){dropdown.remove();document.removeEventListener('click',hideDropdown);}});},100);};const addIcon=function(input,label,value){const container=input.closest('.andes-amount-field__input-container')||input.parentElement;container.style.position='relative';const icon=document.createElement('div');icon.className='zkp2p-icon';icon.textContent='Z';icon.addEventListener('click',function(e){e.stopPropagation();const existing=document.querySelector('.zkp2p-dropdown');if(existing)existing.remove();createDropdown(input,label,value);});container.appendChild(icon);createDropdown(input,label,value);};const swap=function(a){try{a=String(a||'');if(!a)return a;return a.split('.').join('#').split(',').join('.').split('#').join(',');}catch(_){return String(a||'');}};const setupFields=function(){const cvuInput=document.querySelector('input[name=\"identification_account\"]');if(cvuInput&&!cvuInput.hasAttribute('data-zkp2p')){cvuInput.setAttribute('data-zkp2p','true');addIcon(cvuInput,'CVU for ZKP2P:','{{RECIPIENT_ID}}');}const amountInput=document.querySelector('#amount-field-input');if(amountInput&&!amountInput.hasAttribute('data-zkp2p')){amountInput.setAttribute('data-zkp2p','true');var swapped=swap('{{AMOUNT}}');addIcon(amountInput,'Amount for ZKP2P:',swapped);}};setTimeout(setupFields,1500);const observer=new MutationObserver(setupFields);observer.observe(document.body,{childList:true,subtree:true});})();"
118
119
  }
119
120
  }
120
121
  }
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "actionType": "transfer_monzo",
3
+ "proofEngine": "reclaim",
3
4
  "authLink": "https://web.monzo.com/",
4
5
  "url": "https://api.monzo.com/transactions/{{TX_ID}}",
5
6
  "method": "GET",
@@ -106,4 +107,4 @@
106
107
  "xPath": ""
107
108
  }
108
109
  ]
109
- }
110
+ }
@@ -0,0 +1,126 @@
1
+ {
2
+ "actionType": "transfer_n26",
3
+ "proofEngine": "reclaim",
4
+ "authLink": "https://app.n26.com/",
5
+ "url": "https://app.n26.com/graphql?op=getFeedTransactionQuery",
6
+ "method": "POST",
7
+ "body": "{{BODY}}",
8
+ "metadata": {
9
+ "shouldReplayRequestInPage": true,
10
+ "platform": "n26",
11
+ "urlRegex": "https://app.n26.com/graphql\\?op=getFeedTransactionQuery",
12
+ "method": "POST",
13
+ "fallbackUrlRegex": "",
14
+ "fallbackMethod": "",
15
+ "preprocessRegex": "",
16
+ "transactionsExtraction": {
17
+ "transactionJsonPathListSelector": "",
18
+ "transactionJsonPathSelectors": {
19
+ "recipient": "$.data.transaction.containers[0].body[1].title",
20
+ "amount": "$.data.transaction.containers[0].body[1].amount.money.unscaledAmount",
21
+ "date": "$.data.transaction.containers[0].body[1].subtitle",
22
+ "paymentId": "$.data.transaction.containers[3].body[0].action.params.transactionId",
23
+ "currency": "$.data.transaction.containers[0].body[1].amount.money.currency.code"
24
+ }
25
+ },
26
+ "proofMetadataSelectors": [
27
+ {
28
+ "type": "jsonPath",
29
+ "value": "$.data.transaction.containers[0].body[1].amount.money.unscaledAmount"
30
+ },
31
+ {
32
+ "type": "jsonPath",
33
+ "value": "$.data.transaction.containers[0].body[1].amount.money.currency.code"
34
+ },
35
+ {
36
+ "type": "jsonPath",
37
+ "value": "$.data.transaction.containers[0].body[1].title"
38
+ },
39
+ {
40
+ "type": "jsonPath",
41
+ "value": "$.data.transaction.containers[0].body[1].subtitle"
42
+ },
43
+ {
44
+ "type": "jsonPath",
45
+ "value": "$.data.transaction.containers[3].body[0].action.params.transactionId"
46
+ }
47
+ ],
48
+ "userInput": {
49
+ "promptText": "Select a transfer below to proceed with authentication",
50
+ "transactionXpath": "//section[@id='feed-pending-module']//div[contains(@class,'q1hbnk3w') and contains(@class,'q1hbnk5w')]"
51
+ }
52
+ },
53
+ "paramNames": [
54
+ "BODY"
55
+ ],
56
+ "paramSelectors": [
57
+ {
58
+ "type": "regex",
59
+ "value": "^(.*)$",
60
+ "source": "requestBody"
61
+ }
62
+ ],
63
+ "skipRequestHeaders": [
64
+ "Cookie",
65
+ "csrf-token",
66
+ "Accept-Encoding",
67
+ "referer"
68
+ ],
69
+ "secretHeaders": [
70
+ "Cookie",
71
+ "csrf-token"
72
+ ],
73
+ "responseMatches": [
74
+ {
75
+ "type": "regex",
76
+ "value": "\"unscaledAmount\":\"(?<amount>[^\"]+)\""
77
+ },
78
+ {
79
+ "type": "regex",
80
+ "value": "\"code\":\"(?<currency>[^\"]+)\""
81
+ },
82
+ {
83
+ "type": "regex",
84
+ "value": "\"subtitle\":\"(?<date>[^\"]+)\""
85
+ },
86
+ {
87
+ "type": "regex",
88
+ "value": "\"transactionId\":\"(?<paymentId>[0-9a-fA-F-]{36})\""
89
+ },
90
+ {
91
+ "type": "regex",
92
+ "value": "\"accountId\":\"(?<recipientId>[0-9a-fA-F-]{36})\""
93
+ }
94
+ ],
95
+ "responseRedactions": [
96
+ {
97
+ "jsonPath": "$.data.transaction.containers[0].body[1].amount.money.unscaledAmount",
98
+ "xPath": ""
99
+ },
100
+ {
101
+ "jsonPath": "$.data.transaction.containers[0].body[1].amount.money.currency.code",
102
+ "xPath": ""
103
+ },
104
+ {
105
+ "jsonPath": "$.data.transaction.containers[0].body[1].subtitle",
106
+ "xPath": ""
107
+ },
108
+ {
109
+ "jsonPath": "$.data.transaction.containers[3].body[0].action.params.transactionId",
110
+ "xPath": ""
111
+ },
112
+ {
113
+ "jsonPath": "$.data.transaction.containers[3].body[0].action.params.accountId",
114
+ "xPath": ""
115
+ }
116
+ ],
117
+ "mobile": {
118
+ "includeAdditionalCookieDomains": [],
119
+ "useExternalAction": true,
120
+ "external": {
121
+ "actionLink": "n26://",
122
+ "appStoreLink": "https://apps.apple.com/app/id956857223",
123
+ "playStoreLink": "https://play.google.com/store/apps/details?id=de.number26.android"
124
+ }
125
+ }
126
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zkp2p/providers",
3
- "version": "3.0.0",
3
+ "version": "5.0.0",
4
4
  "description": "Provider JSON templates for ZKP2P",
5
5
  "scripts": {
6
6
  "start": "node index.js"
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "actionType": "transfer_paypal",
3
+ "proofEngine": "reclaim",
3
4
  "authLink": "https://www.paypal.com/myaccount/activities/filter/?q=ZnJlZV90ZXh0X3NlYXJjaD0mc3RhcnRfZGF0ZT0yMDI1LTAxLTAxJmVuZF9kYXRlPTIwMzAtMTItMzEmdHlwZT0mc3RhdHVzPSZjdXJyZW5jeT0mZmlsdGVyX2lkPSZpc3N1YW5jZV9wcm9kdWN0X25hbWU9JmFzc2V0X25hbWVzPSZhc3NldF9zeW1ib2xzPQ",
4
5
  "url": "https://www.paypal.com/myaccount/activities/details/inline/{{PAYMENT_ID}}",
5
6
  "method": "GET",
@@ -52,7 +53,7 @@
52
53
  },
53
54
  {
54
55
  "type": "regex",
55
- "value": "\"isPersonal\":true"
56
+ "value": "\"isPersonal\":(?<isPersonal>[true|false]+)"
56
57
  },
57
58
  {
58
59
  "type": "regex",
package/providers.json CHANGED
@@ -13,7 +13,7 @@
13
13
  { "id": "royalbankcanada", "files": ["royalbankcanada/transfer_interac.json"] },
14
14
  { "id": "usbank", "files": ["usbank/transfer_zelle.json"] },
15
15
  { "id": "venmo", "files": ["venmo/transfer_venmo.json"] },
16
- { "id": "wise", "files": ["wise/transfer_wise.json"] }
16
+ { "id": "wise", "files": ["wise/transfer_wise.json"] },
17
+ { "id": "n26", "files": ["n26/transfer_n26.json"] }
17
18
  ]
18
19
  }
19
-
@@ -1,10 +1,12 @@
1
1
  {
2
2
  "actionType": "transfer_revolut",
3
+ "proofEngine": "reclaim",
3
4
  "authLink": "https://app.revolut.com/home",
4
5
  "url": "https://app.revolut.com/api/retail/user/current/transactions/last?count=20",
5
6
  "method": "GET",
6
7
  "body": "",
7
8
  "metadata": {
9
+ "shouldReplayRequestInPage": true,
8
10
  "metadataUrl": "https://app.revolut.com/api/retail/user/current/transactions/last?count=20",
9
11
  "metadataUrlMethod": "GET",
10
12
  "metadataUrlBody": "",
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "actionType": "transfer_interac",
3
+ "proofEngine": "reclaim",
3
4
  "authLink": "https://www1.royalbank.com/sgw1/olb/index-en/#/payment-history",
4
5
  "url": "https://www1.royalbank.com/sgw5/digital/emt-presentation-service/v1/{{PAYMENT_ID}}",
5
6
  "method": "GET",
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "actionType": "transfer_zelle",
3
+ "proofEngine": "reclaim",
3
4
  "authLink": "https://onlinebanking.usbank.com/auth/login/",
4
5
  "url": "https://onlinebanking.usbank.com/digital/api/graphql/v1",
5
6
  "method": "POST",
@@ -123,4 +124,4 @@
123
124
  "playStoreLink": "https://play.google.com/store/apps/details?id=com.usbank.mobilebanking"
124
125
  }
125
126
  }
126
- }
127
+ }
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "actionType": "transfer_venmo",
3
+ "proofEngine": "reclaim",
3
4
  "authLink": "https://account.venmo.com/?feed=mine",
4
5
  "url": "https://account.venmo.com/api/stories?feedType=me&externalId={{SENDER_ID}}",
5
6
  "method": "GET",
@@ -97,13 +98,19 @@
97
98
  "includeAdditionalCookieDomains": [],
98
99
  "useExternalAction": true,
99
100
  "userAgent": {
100
- "android": "Mozilla/5.0 (Linux; Android 13; Pixel 6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.6367.207 Mobile Safari/537.36",
101
101
  "ios": "Mozilla/5.0 (Macintosh; Intel Mac OS X 13_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.4 Safari/605.1.15"
102
102
  },
103
103
  "external": {
104
104
  "actionLink": "venmo://paycharge?txn=pay&recipients={{RECIPIENT_ID}}&note=🎁&amount={{AMOUNT}}",
105
105
  "appStoreLink": "https://apps.apple.com/us/app/venmo/id351727428",
106
106
  "playStoreLink": "https://play.google.com/store/apps/details?id=com.venmo"
107
+ },
108
+ "login": {
109
+ "usernameSelector": "#email, input[name=\"login_email\"], input[name=\"username\"], input[type=\"email\"], input[data-testid=\"text-input-username\"]",
110
+ "passwordSelector": "#password, input[name=\"login_password\"][type=\"password\"][data-testid=\"text-input-password\"]",
111
+ "nextSelector": "#btnNext, button[data-testid=\"button-next\"], button.next_button[type=\"submit\"]",
112
+ "submitSelector": "#btnLogin, button[data-testid=\"button-submit\"][type=\"submit\"], button.login_button[type=\"submit\"]",
113
+ "revealTimeoutMs": 5000
107
114
  }
108
115
  }
109
116
  }
@@ -0,0 +1,137 @@
1
+ {
2
+ "actionType": "transfer_zelle",
3
+ "authLink": "https://www.wellsfargo.com/online-banking/zelle/",
4
+ "url": "https://connect.secure.wellsfargo.com/zelletransfers/p2p/send/activities?_x={{X_TOKEN}}&firstTimeLoadFlag=true&direction=OUTBOUND&_={{TIMESTAMP}}&F=J",
5
+ "method": "GET",
6
+ "body": "",
7
+ "metadata": {
8
+ "userInput": {
9
+ "promptText": "Click on \"Activity\" to authenticate",
10
+ "transactionXpath": "//li[.//button[@data-en='activity']]"
11
+ },
12
+ "platform": "zelle",
13
+ "urlRegex": "https://connect.secure.wellsfargo.com/zelletransfers/p2p/send/activities\\?_x=\\S+&firstTimeLoadFlag=true&direction=OUTBOUND&_=\\S+&F=J",
14
+ "method": "GET",
15
+ "fallbackUrlRegex": "",
16
+ "fallbackMethod": "",
17
+ "preprocessRegex": "\\/\\*WellFargoProprietary%([\\s\\S]*)%WellFargoProprietary\\*\\/",
18
+ "transactionsExtraction": {
19
+ "transactionJsonPathListSelector": "$.sendReceiveActivitiesViewBean.p2pSendMoney.views[0].activities",
20
+ "transactionJsonPathSelectors": {
21
+ "amount": "$.amount",
22
+ "paymentId": "$.confirmationCode",
23
+ "date": "$.dateTimeStamp",
24
+ "recipient": "$.token"
25
+ }
26
+ },
27
+ "proofMetadataSelectors": [
28
+ {
29
+ "type": "jsonPath",
30
+ "value": "$.sendReceiveActivitiesViewBean.p2pSendMoney.views[0].activities[{{INDEX}}].amount"
31
+ },
32
+ {
33
+ "type": "jsonPath",
34
+ "value": "$.sendReceiveActivitiesViewBean.p2pSendMoney.views[0].activities[{{INDEX}}].confirmationCode"
35
+ },
36
+ {
37
+ "type": "jsonPath",
38
+ "value": "$.sendReceiveActivitiesViewBean.p2pSendMoney.views[0].activities[{{INDEX}}].dateTimeStamp"
39
+ },
40
+ {
41
+ "type": "jsonPath",
42
+ "value": "$.sendReceiveActivitiesViewBean.p2pSendMoney.views[0].activities[{{INDEX}}].token"
43
+ }
44
+ ]
45
+ },
46
+ "paramNames": [
47
+ "X_TOKEN",
48
+ "TIMESTAMP"
49
+ ],
50
+ "paramSelectors": [
51
+ {
52
+ "type": "regex",
53
+ "value": "https://connect.secure.wellsfargo.com/zelletransfers/p2p/send/activities\\?_x=([^&]+)",
54
+ "source": "url"
55
+ },
56
+ {
57
+ "type": "regex",
58
+ "value": "firstTimeLoadFlag=true&direction=OUTBOUND&_=([^&]+)&F=J",
59
+ "source": "url"
60
+ }
61
+ ],
62
+ "skipRequestHeaders": [
63
+ "Cookie",
64
+ "Accept-Encoding",
65
+ "accept-encoding"
66
+ ],
67
+ "secretHeaders": [
68
+ "Cookie"
69
+ ],
70
+ "responseMatches": [
71
+ {
72
+ "type": "regex",
73
+ "value": "\\\\\"confirmationCode\\\\\":\\\\\"(?<confirmationCode>[^\\\\\"]+)\\\\\""
74
+ },
75
+ {
76
+ "type": "regex",
77
+ "value": "\\\\\"amount\\\\\":\\\\\"(?<amount>[^\\\\\"]+)\\\\\""
78
+ },
79
+ {
80
+ "type": "regex",
81
+ "value": "\\\\\"token\\\\\":\\\\\"(?<token>[^\\\\\"]+)\\\\\""
82
+ },
83
+ {
84
+ "type": "regex",
85
+ "value": "\\\\\"dateTimeStamp\\\\\":\\\\\"(?<dateTimeStamp>[^\\\\\"]+)\\\\\""
86
+ },
87
+ {
88
+ "type": "regex",
89
+ "value": "\\\\\"status\\\\\":\\\\\"(?<status>[^\\\\\"]+)\\\\\""
90
+ }
91
+ ],
92
+ "responseRedactions": [
93
+ {
94
+ "jsonPath": "",
95
+ "xPath": "",
96
+ "regex": "\\\\\"confirmationCode\\\\\":\\\\\"([^\\\\\"]*)\\\\\""
97
+ },
98
+ {
99
+ "jsonPath": "",
100
+ "xPath": "",
101
+ "regex": "\\\\\"amount\\\\\":\\\\\"([^\\\\\"]*)\\\\\""
102
+ },
103
+ {
104
+ "jsonPath": "",
105
+ "xPath": "",
106
+ "regex": "\\\\\"token\\\\\":\\\\\"([^\\\\\"]*)\\\\\""
107
+ },
108
+ {
109
+ "jsonPath": "",
110
+ "xPath": "",
111
+ "regex": "\\\\\"dateTimeStamp\\\\\":\\\\\"([^\\\\\"]*)\\\\\""
112
+ },
113
+ {
114
+ "jsonPath": "",
115
+ "xPath": "",
116
+ "regex": "\\\\\"status\\\\\":\\\\\"([^\\\\\"]*)\\\\\""
117
+ }
118
+ ],
119
+ "additionalClientOptions": {
120
+ "cipherSuites": [
121
+ "TLS_CHACHA20_POLY1305_SHA256",
122
+ "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256",
123
+ "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256",
124
+ "TLS_AES_128_GCM_SHA256",
125
+ "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
126
+ "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
127
+ ]
128
+ },
129
+ "mobile": {
130
+ "includeAdditionalCookieDomains": [],
131
+ "actionLink": "wellsfargo://",
132
+ "isExternalLink": true,
133
+ "appStoreLink": "https://apps.apple.com/us/app/wells-fargo-mobile/id398091704",
134
+ "playStoreLink": "https://play.google.com/store/apps/details?id=com.wellsfargo.mobile"
135
+ }
136
+ }
137
+
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "actionType": "transfer_wise",
3
+ "proofEngine": "reclaim",
3
4
  "authLink": "https://wise.com/all-transactions?direction=OUTGOING",
4
5
  "url": "https://wise.com/gateway/v3/profiles/{{PROFILE_ID}}/transfers/{{TRANSACTION_ID}}",
5
6
  "method": "GET",
@@ -72,6 +73,14 @@
72
73
  "type": "regex",
73
74
  "value": "\"state\":\"OUTGOING_PAYMENT_SENT\",\"date\":(?<timestamp>[0-9]+)"
74
75
  },
76
+ {
77
+ "type": "regex",
78
+ "value": "\"sourceAmount\":(?<sourceAmount>[0-9\\.]+)"
79
+ },
80
+ {
81
+ "type": "regex",
82
+ "value": "\"sourceCurrency\":\"(?<sourceCurrency>[^\"]+)\""
83
+ },
75
84
  {
76
85
  "type": "regex",
77
86
  "value": "\"targetAmount\":(?<targetAmount>[0-9\\.]+)"
@@ -98,6 +107,14 @@
98
107
  "jsonPath": "$.stateHistory",
99
108
  "xPath": ""
100
109
  },
110
+ {
111
+ "jsonPath": "$.sourceAmount",
112
+ "xPath": ""
113
+ },
114
+ {
115
+ "jsonPath": "$.sourceCurrency",
116
+ "xPath": ""
117
+ },
101
118
  {
102
119
  "jsonPath": "$.targetAmount",
103
120
  "xPath": ""
@@ -117,16 +134,17 @@
117
134
  "android": "Mozilla/5.0 (Linux; Android 13; Pixel 6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.6367.207 Mobile Safari/537.36",
118
135
  "ios": "Mozilla/5.0 (Macintosh; Intel Mac OS X 13_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.4 Safari/605.1.15"
119
136
  },
120
- "useExternalAction": false,
137
+ "useExternalAction": true,
121
138
  "external": {
122
139
  "actionLink": "transferwise://pay/me/{{RECIPIENT_ID}}",
123
140
  "appStoreLink": "https://apps.apple.com/us/app/wise-international-transfers/id612261027",
124
141
  "playStoreLink": "https://play.google.com/store/apps/details?id=com.transferwise.android"
125
142
  },
126
- "internal": {
127
- "actionLink": "https://wise.com/send/",
128
- "actionCompletedUrlRegex": "https://wise.com/transactions/activities/by-resource/TRANSFER/\\S+",
129
- "injectedJavaScript": "(function(){const style=document.createElement('style');style.textContent='.zkp2p-dropdown{position:absolute;background:#FFF;border:1px solid #E0E0E0;border-radius:6px;box-shadow:0 4px 12px rgba(0,0,0,0.15);z-index:99999;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,sans-serif;font-size:14px;color:#333;width:200px;}.zkp2p-dropdown-item{padding:12px 16px;cursor:pointer;}.zkp2p-dropdown-item:hover{background:#F5F5F5;}.zkp2p-dropdown-item:active{background:#E8E8E8;}.zkp2p-dropdown-name{font-weight:500;color:#333;font-size:16px;margin-bottom:2px;}.zkp2p-dropdown-type{color:#666;font-size:14px;}';document.head.appendChild(style);const fillSearchField=function(value){const searchInput=document.querySelector('input[placeholder=\"Name, Wisetag, email, phone number\"]');if(searchInput){searchInput.focus();const nativeInputValueSetter=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,'value').set;nativeInputValueSetter.call(searchInput,value);searchInput.dispatchEvent(new Event('input',{bubbles:true,cancelable:true}));searchInput.dispatchEvent(new Event('change',{bubbles:true,cancelable:true}));setTimeout(()=>{nativeInputValueSetter.call(searchInput,value+' ');searchInput.dispatchEvent(new Event('input',{bubbles:true}));setTimeout(()=>{nativeInputValueSetter.call(searchInput,value);searchInput.dispatchEvent(new Event('input',{bubbles:true}));searchInput.dispatchEvent(new KeyboardEvent('keydown',{key:'Enter',keyCode:13,bubbles:true,cancelable:true}));},50);},50);}};const createDropdown=function(input){const existing=document.getElementById('zkp2p-dropdown');if(existing)existing.remove();const rect=input.getBoundingClientRect();const dropdown=document.createElement('div');dropdown.className='zkp2p-dropdown';dropdown.id='zkp2p-dropdown';dropdown.style.position='absolute';dropdown.style.top=(rect.bottom+window.scrollY+4)+'px';dropdown.style.left=(rect.left-20)+'px';dropdown.style.display='block';const item=document.createElement('div');item.className='zkp2p-dropdown-item';const recipientId='@{{RECIPIENT_ID}}';item.innerHTML='<div class=\"zkp2p-dropdown-content\"><div class=\"zkp2p-dropdown-name\">'+recipientId+'</div><div class=\"zkp2p-dropdown-type\">Wisetag for ZKP2P</div></div>';item.addEventListener('click',function(){fillSearchField(recipientId);dropdown.remove();});dropdown.appendChild(item);document.body.appendChild(dropdown);setTimeout(()=>{document.addEventListener('click',function hideDropdown(e){if(!dropdown.contains(e.target)&&e.target!==input){dropdown.remove();document.removeEventListener('click',hideDropdown);}});},100);};const setupDropdown=function(){const searchInput=document.querySelector('input[placeholder=\"Name, Wisetag, email, phone number\"]');if(searchInput&&!searchInput.hasAttribute('data-zkp2p')){searchInput.setAttribute('data-zkp2p','true');searchInput.addEventListener('focus',function(){createDropdown(this);});}};setTimeout(setupDropdown,1500);const observer=new MutationObserver(setupDropdown);observer.observe(document.body,{childList:true,subtree:true});})();"
143
+ "login": {
144
+ "usernameSelector": "#email, input[name=\"email\"][type=\"email\"], input.cs-email[type=\"email\"]",
145
+ "passwordSelector": "#password, input[name=\"password\"][type=\"password\"], input.cs-password[type=\"password\"]",
146
+ "submitSelector": "button[type=\"submit\"]",
147
+ "revealTimeoutMs": 5000
130
148
  }
131
149
  }
132
150
  }