Skip to content

Commit fcebe18

Browse files
[SAASINT-3804] Updated Plaid Assets PR (#20077)
* added additonal screenshots, updated dasboard * updated plaid logs client with 2 additional API endpoints, added metrics client * added additonal screenshots, updated dashboard * updated log files * updated log files and images * updated log files and images * updated log files and images
1 parent 9a7dc8d commit fcebe18

File tree

7 files changed

+2150
-375
lines changed

7 files changed

+2150
-375
lines changed

plaid/README.md

+21-3
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,36 @@ Here are some insights that can be drawn from your Plaid dashboard:
2222
### Configuration
2323

2424
Configure the Datadog endpoint to forward Plaid logs to Datadog.
25-
1. Navigate to Plaid.
26-
2. Add your Plaid credentials.
25+
1. Log in to [Plaid Dashboard](https://dashboard.plaid.com/)
26+
2. Navigate to the **Developers** section in the left pane.
27+
3. Extend the drop-down menu and click on **Keys**
28+
4. Obtain the client_id and Secret.
29+
30+
#### To obtain Access Token, follow these steps:
31+
1. **Get institution_id from Plaid**:
32+
Hit Plaid API **/institutions/get** endpoint to obtain institution_id. Reference [link](https://plaid.com/docs/api/institutions/#institutionsget)
33+
2. **Create a Public Token**:
34+
You will need to create a public token. Use the institution_id that you retrieved from Step 1 and hit **/public_token/create** endpoint. Reference [link](https://plaid.com/docs/api/sandbox/#sandboxpublic_tokencreate)
35+
3. **Obtain the Access token**:
36+
Now, use the public_token you obtained from Step 2 to exchange it for an access_token. Send the public_token to this **/item/public_token/** exchange . Reference [link](https://plaid.com/docs/api/items/#itempublic_tokenexchange)
37+
38+
39+
4. **Store the Access Token Securely**:
40+
41+
2742

2843
| Plaid Parameters | Description |
2944
|----------|----------|
3045
| Client ID | Client of the Plaid account. |
3146
| Secret | Secret of the Plaid account |
47+
| Access Token | Access Token of the Plaid account |
48+
3249

3350

3451
## Data Collected
3552

36-
The crawler will implement data collection of Plaid logs for the List of Transfer events, remove sensitive data and send it to Datadog.
53+
The crawler will implement data collection of Plaid logs for the List of Transfer events, Recurring Transfer events, Investment transactions
54+
events and Auth metrics. Sensitive data are removed and sent to Datadog.
3755

3856

3957
## Troubleshooting

plaid/assets/dashboards/plaid_overview.json

+1,917-323
Large diffs are not rendered by default.

plaid/assets/logs/plaid.yaml

+5-4
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@ metric_id: plaid
66
# If id and app_id already match, this field can be left blank.
77
backend_only: false
88
facets:
9-
- facetType: list
9+
- description: ""
10+
facetType: list
1011
groups:
1112
- Plaid
12-
name: Account id
13-
path: plaid_account_id
13+
name: Log Label
14+
path: label
1415
source: log
1516
type: string
1617
pipeline:
@@ -21,7 +22,7 @@ pipeline:
2122
query: "source:plaid"
2223
processors:
2324
- type: attribute-remapper
24-
name: "Map `created` to `timestamp`"
25+
name: Map `created` to `timestamp`
2526
enabled: true
2627
sources:
2728
- created

plaid/assets/logs/plaid_tests.yaml

+193-31
Original file line numberDiff line numberDiff line change
@@ -4,74 +4,236 @@ tests:
44
sample: |-
55
{
66
"amount" : "12.34",
7-
"authorization_id" : "128ff9dc-6634-22f3-a8d7-0902fc8dd99a",
8-
"created" : "2024-12-20T12:04:24.386329Z",
7+
"authorization_id" : "3e77aebb-444e-9a71-4c70-9cde604c0689",
8+
"created" : "2025-04-15T04:31:55.577677Z",
99
"description" : "posted",
10+
"failure_reason" : {
11+
"ach_return_code" : "R01",
12+
"failure_code" : "R01",
13+
"description" : "Insufficient funds"
14+
},
1015
"type" : "debit",
1116
"cancellable" : false,
12-
"standard_return_window" : "2024-12-26",
1317
"network" : "ach",
14-
"originator_client_id" : "66d5881a2972360019c5e068",
18+
"originator_client_id" : "66dec76ee40771001aff0759",
1519
"sweep_status" : "unswept",
16-
"account_id" : "dLaW3JympPiWRaz9NGPwUB98VNmDPLcJ3AXxr",
20+
"account_id" : "yngxaDxQXXT8Eok5Aw7RIx3qwmXzjQF4RbrPE",
1721
"ach_class" : "ppd",
1822
"iso_currency_code" : "USD",
1923
"origination_account_id" : "",
20-
"unauthorized_return_window" : "2025-03-21",
21-
"id" : "6ed7708c-9e7a-9a79-13fc-a65e2f771a76",
22-
"ledger_id" : "4b15ee7e-a39f-4c94-a84e-bfa3982a7737",
24+
"id" : "54ad77b7-b08b-06f1-3d2d-86d7a0c6e25e",
25+
"ledger_id" : "2ec67c41-a3c6-4501-a31e-757b362fa0be",
2326
"user" : {
24-
"legal_name" : "Anne Charleston"
27+
"legal_name" : "Alberta Bobbeth Charleson"
2528
},
26-
"status" : "posted"
29+
"status" : "failed"
2730
}
2831
result:
2932
custom:
30-
account_id: "dLaW3JympPiWRaz9NGPwUB98VNmDPLcJ3AXxr"
33+
account_id: "yngxaDxQXXT8Eok5Aw7RIx3qwmXzjQF4RbrPE"
3134
ach_class: "ppd"
3235
amount: "12.34"
33-
authorization_id: "128ff9dc-6634-22f3-a8d7-0902fc8dd99a"
36+
authorization_id: "3e77aebb-444e-9a71-4c70-9cde604c0689"
3437
cancellable: false
35-
created: "2024-12-20T12:04:24.386329Z"
38+
created: "2025-04-15T04:31:55.577677Z"
3639
description: "posted"
37-
id: "6ed7708c-9e7a-9a79-13fc-a65e2f771a76"
40+
failure_reason:
41+
ach_return_code: "R01"
42+
description: "Insufficient funds"
43+
failure_code: "R01"
44+
id: "54ad77b7-b08b-06f1-3d2d-86d7a0c6e25e"
3845
iso_currency_code: "USD"
39-
ledger_id: "4b15ee7e-a39f-4c94-a84e-bfa3982a7737"
46+
ledger_id: "2ec67c41-a3c6-4501-a31e-757b362fa0be"
4047
network: "ach"
4148
origination_account_id: ""
42-
originator_client_id: "66d5881a2972360019c5e068"
43-
standard_return_window: "2024-12-26"
44-
status: "posted"
49+
originator_client_id: "66dec76ee40771001aff0759"
50+
status: "failed"
4551
sweep_status: "unswept"
46-
timestamp: "2024-12-20T12:04:24.386329Z"
52+
timestamp: "2025-04-15T04:31:55.577677Z"
4753
type: "debit"
48-
unauthorized_return_window: "2025-03-21"
4954
user:
50-
legal_name: "Anne Charleston"
55+
legal_name: "Alberta Bobbeth Charleson"
5156
message: |-
5257
{
5358
"amount" : "12.34",
54-
"authorization_id" : "128ff9dc-6634-22f3-a8d7-0902fc8dd99a",
55-
"created" : "2024-12-20T12:04:24.386329Z",
59+
"authorization_id" : "3e77aebb-444e-9a71-4c70-9cde604c0689",
60+
"created" : "2025-04-15T04:31:55.577677Z",
5661
"description" : "posted",
62+
"failure_reason" : {
63+
"ach_return_code" : "R01",
64+
"failure_code" : "R01",
65+
"description" : "Insufficient funds"
66+
},
5767
"type" : "debit",
5868
"cancellable" : false,
59-
"standard_return_window" : "2024-12-26",
6069
"network" : "ach",
61-
"originator_client_id" : "66d5881a2972360019c5e068",
70+
"originator_client_id" : "66dec76ee40771001aff0759",
6271
"sweep_status" : "unswept",
63-
"account_id" : "dLaW3JympPiWRaz9NGPwUB98VNmDPLcJ3AXxr",
72+
"account_id" : "yngxaDxQXXT8Eok5Aw7RIx3qwmXzjQF4RbrPE",
73+
"ach_class" : "ppd",
74+
"iso_currency_code" : "USD",
75+
"origination_account_id" : "",
76+
"id" : "54ad77b7-b08b-06f1-3d2d-86d7a0c6e25e",
77+
"ledger_id" : "2ec67c41-a3c6-4501-a31e-757b362fa0be",
78+
"user" : {
79+
"legal_name" : "Alberta Bobbeth Charleson"
80+
},
81+
"status" : "failed"
82+
}
83+
tags:
84+
- "source:LOGS_SOURCE"
85+
timestamp: 1744691515577
86+
-
87+
sample: |-
88+
{
89+
"amount" : "12.34",
90+
"created" : "2025-04-15T07:10:31.960472Z",
91+
"description" : "payment",
92+
"type" : "credit",
93+
"network" : "ach",
94+
"funding_account_id" : "",
95+
"schedule" : {
96+
"end_date" : "2025-04-22",
97+
"interval_count" : 1,
98+
"interval_unit" : "week",
99+
"interval_execution_day" : 5,
100+
"start_date" : "2025-04-15"
101+
},
102+
"account_id" : "yngxaDxQXXT8Eok5Aw7RIx3qwmXzjQF4RbrPE",
103+
"ach_class" : "ppd",
104+
"next_origination_date" : "2025-04-18",
105+
"iso_currency_code" : "USD",
106+
"origination_account_id" : "",
107+
"recurring_transfer_id" : "fbba61d8-085a-0a9f-1bd1-2fe4efb4638e",
108+
"user" : {
109+
"address" : {
110+
"country" : "US",
111+
"city" : "San Francisco",
112+
"street" : "123 Main St.",
113+
"postal_code" : "94053",
114+
"region" : "CA"
115+
},
116+
"email_address" : "[email protected]",
117+
"phone_number" : "510-555-0128",
118+
"legal_name" : "Anne Charleston"
119+
},
120+
"status" : "active"
121+
}
122+
result:
123+
custom:
124+
account_id: "yngxaDxQXXT8Eok5Aw7RIx3qwmXzjQF4RbrPE"
125+
ach_class: "ppd"
126+
amount: "12.34"
127+
created: "2025-04-15T07:10:31.960472Z"
128+
description: "payment"
129+
funding_account_id: ""
130+
iso_currency_code: "USD"
131+
network: "ach"
132+
next_origination_date: "2025-04-18"
133+
origination_account_id: ""
134+
recurring_transfer_id: "fbba61d8-085a-0a9f-1bd1-2fe4efb4638e"
135+
schedule:
136+
end_date: "2025-04-22"
137+
interval_count: 1
138+
interval_execution_day: 5
139+
interval_unit: "week"
140+
start_date: "2025-04-15"
141+
status: "active"
142+
timestamp: "2025-04-15T07:10:31.960472Z"
143+
type: "credit"
144+
user:
145+
address:
146+
city: "San Francisco"
147+
country: "US"
148+
postal_code: "94053"
149+
region: "CA"
150+
street: "123 Main St."
151+
email_address: "[email protected]"
152+
legal_name: "Anne Charleston"
153+
phone_number: "510-555-0128"
154+
message: |-
155+
{
156+
"amount" : "12.34",
157+
"created" : "2025-04-15T07:10:31.960472Z",
158+
"description" : "payment",
159+
"type" : "credit",
160+
"network" : "ach",
161+
"funding_account_id" : "",
162+
"schedule" : {
163+
"end_date" : "2025-04-22",
164+
"interval_count" : 1,
165+
"interval_unit" : "week",
166+
"interval_execution_day" : 5,
167+
"start_date" : "2025-04-15"
168+
},
169+
"account_id" : "yngxaDxQXXT8Eok5Aw7RIx3qwmXzjQF4RbrPE",
64170
"ach_class" : "ppd",
171+
"next_origination_date" : "2025-04-18",
65172
"iso_currency_code" : "USD",
66173
"origination_account_id" : "",
67-
"unauthorized_return_window" : "2025-03-21",
68-
"id" : "6ed7708c-9e7a-9a79-13fc-a65e2f771a76",
69-
"ledger_id" : "4b15ee7e-a39f-4c94-a84e-bfa3982a7737",
174+
"recurring_transfer_id" : "fbba61d8-085a-0a9f-1bd1-2fe4efb4638e",
70175
"user" : {
176+
"address" : {
177+
"country" : "US",
178+
"city" : "San Francisco",
179+
"street" : "123 Main St.",
180+
"postal_code" : "94053",
181+
"region" : "CA"
182+
},
183+
"email_address" : "[email protected]",
184+
"phone_number" : "510-555-0128",
71185
"legal_name" : "Anne Charleston"
72186
},
73-
"status" : "posted"
187+
"status" : "active"
188+
}
189+
tags:
190+
- "source:LOGS_SOURCE"
191+
timestamp: 1744701031960
192+
-
193+
sample: |-
194+
{
195+
"date" : "2025-04-17",
196+
"amount" : -2066.58,
197+
"fees" : 0,
198+
"account_id" : "6EPMwLMZ33UpbKq4zal9HRDm5rj7QAc87prQp",
199+
"quantity" : -49.02909689729298,
200+
"subtype" : "sell",
201+
"investment_transaction_id" : "ln4LXJLrGGTWEXpnV8g9s8K5wxakjXcpAy6GB",
202+
"price" : 41.62,
203+
"iso_currency_code" : "USD",
204+
"name" : "SELL iShares Inc MSCI Brazil",
205+
"type" : "sell",
206+
"security_id" : "abJamDazkgfvBkVGgnnLUWXoxnomp5up8llg4"
207+
}
208+
result:
209+
custom:
210+
account_id: "6EPMwLMZ33UpbKq4zal9HRDm5rj7QAc87prQp"
211+
amount: -2066.58
212+
date: "2025-04-17"
213+
fees: 0
214+
investment_transaction_id: "ln4LXJLrGGTWEXpnV8g9s8K5wxakjXcpAy6GB"
215+
iso_currency_code: "USD"
216+
name: "SELL iShares Inc MSCI Brazil"
217+
price: 41.62
218+
quantity: -49.02909689729298
219+
security_id: "abJamDazkgfvBkVGgnnLUWXoxnomp5up8llg4"
220+
subtype: "sell"
221+
type: "sell"
222+
message: |-
223+
{
224+
"date" : "2025-04-17",
225+
"amount" : -2066.58,
226+
"fees" : 0,
227+
"account_id" : "6EPMwLMZ33UpbKq4zal9HRDm5rj7QAc87prQp",
228+
"quantity" : -49.02909689729298,
229+
"subtype" : "sell",
230+
"investment_transaction_id" : "ln4LXJLrGGTWEXpnV8g9s8K5wxakjXcpAy6GB",
231+
"price" : 41.62,
232+
"iso_currency_code" : "USD",
233+
"name" : "SELL iShares Inc MSCI Brazil",
234+
"type" : "sell",
235+
"security_id" : "abJamDazkgfvBkVGgnnLUWXoxnomp5up8llg4"
74236
}
75237
tags:
76238
- "source:LOGS_SOURCE"
77-
timestamp: 1734696264386
239+
timestamp: 1

plaid/images/plaid_other_logs.png

222 KB
Loading

plaid/images/plaid_overview.png

175 KB
Loading

plaid/manifest.json

+14-14
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
},
1919
{
2020
"media_type": "image",
21-
"caption": "Overview of other logs visualized",
21+
"caption": "Overview of other Plaid Logs",
2222
"image_url": "images/plaid_other_logs.png"
2323
}
2424
],
@@ -30,24 +30,24 @@
3030
},
3131
"assets": {
3232
"integration": {
33-
"auto_install": true,
34-
"source_type_id": 30173459,
35-
"source_type_name": "plaid",
36-
"events": {
37-
"creates_events": false
38-
},
39-
"service_checks": {
40-
"metadata_path": "assets/service_checks.json"
33+
"auto_install": true,
34+
"source_type_id": 30173459,
35+
"source_type_name": "plaid",
36+
"events": {
37+
"creates_events": false
38+
},
39+
"service_checks": {
40+
"metadata_path": "assets/service_checks.json"
41+
}
42+
},
43+
"dashboards": {
44+
"Plaid logs Overview": "assets/dashboards/plaid_overview.json"
4145
}
4246
},
43-
"dashboards": {
44-
"Plaid logs Overview": "assets/dashboards/plaid_overview.json"
45-
}
46-
},
4747
"author": {
4848
"support_email": "[email protected]",
4949
"name": "Datadog",
5050
"homepage": "https://www.datadoghq.com",
5151
"sales_email": "[email protected]"
5252
}
53-
}
53+
}

0 commit comments

Comments
 (0)