mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-08-06 22:15:20 +02:00
Breaks our Plaid sync process out into more manageable classes. Notably, this moves the sync process to a distinct, 2-step flow: 1. Import stage - we first make API calls and import Plaid data to "mirror" tables 2. Processing stage - read the raw data, apply business rules, build internal domain models and sync balances This provides several benefits: - Plaid syncs can now be "replayed" without fetching API data again - Mirror tables provide better audit and debugging capabilities - Eliminates the "all or nothing" sync behavior that is currently in place, which is brittle
124 lines
3.1 KiB
YAML
124 lines
3.1 KiB
YAML
---
|
|
http_interactions:
|
|
- request:
|
|
method: post
|
|
uri: https://sandbox.plaid.com/sandbox/public_token/create
|
|
body:
|
|
encoding: UTF-8
|
|
string: '{"institution_id":"ins_109508","initial_products":["transactions","investments","liabilities"],"options":{"override_username":"custom_test"}}'
|
|
headers:
|
|
Content-Type:
|
|
- application/json
|
|
User-Agent:
|
|
- Plaid Ruby v38.0.0
|
|
Accept:
|
|
- application/json
|
|
Plaid-Client-Id:
|
|
- "<PLAID_CLIENT_ID>"
|
|
Plaid-Version:
|
|
- '2020-09-14'
|
|
Plaid-Secret:
|
|
- "<PLAID_SECRET>"
|
|
Accept-Encoding:
|
|
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
|
response:
|
|
status:
|
|
code: 200
|
|
message: OK
|
|
headers:
|
|
Server:
|
|
- nginx
|
|
Date:
|
|
- Mon, 19 May 2025 17:24:03 GMT
|
|
Content-Type:
|
|
- application/json; charset=utf-8
|
|
Content-Length:
|
|
- '110'
|
|
Connection:
|
|
- keep-alive
|
|
Plaid-Version:
|
|
- '2020-09-14'
|
|
Vary:
|
|
- Accept-Encoding
|
|
X-Envoy-Upstream-Service-Time:
|
|
- '2892'
|
|
X-Envoy-Decorator-Operation:
|
|
- default.svc-apiv2:8080/*
|
|
Strict-Transport-Security:
|
|
- max-age=31536000; includeSubDomains; preload
|
|
X-Content-Type-Options:
|
|
- nosniff
|
|
X-Frame-Options:
|
|
- DENY
|
|
X-Xss-Protection:
|
|
- 1; mode=block
|
|
body:
|
|
encoding: ASCII-8BIT
|
|
string: |-
|
|
{
|
|
"public_token": "public-sandbox-0463cb9d-8bdb-4e01-9b33-243e1370623c",
|
|
"request_id": "FaSopSLAyHsZM9O"
|
|
}
|
|
recorded_at: Mon, 19 May 2025 17:24:03 GMT
|
|
- request:
|
|
method: post
|
|
uri: https://sandbox.plaid.com/item/public_token/exchange
|
|
body:
|
|
encoding: UTF-8
|
|
string: '{"public_token":"public-sandbox-0463cb9d-8bdb-4e01-9b33-243e1370623c"}'
|
|
headers:
|
|
Content-Type:
|
|
- application/json
|
|
User-Agent:
|
|
- Plaid Ruby v38.0.0
|
|
Accept:
|
|
- application/json
|
|
Plaid-Client-Id:
|
|
- "<PLAID_CLIENT_ID>"
|
|
Plaid-Version:
|
|
- '2020-09-14'
|
|
Plaid-Secret:
|
|
- "<PLAID_SECRET>"
|
|
Accept-Encoding:
|
|
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
|
response:
|
|
status:
|
|
code: 200
|
|
message: OK
|
|
headers:
|
|
Server:
|
|
- nginx
|
|
Date:
|
|
- Mon, 19 May 2025 17:24:03 GMT
|
|
Content-Type:
|
|
- application/json; charset=utf-8
|
|
Content-Length:
|
|
- '164'
|
|
Connection:
|
|
- keep-alive
|
|
Plaid-Version:
|
|
- '2020-09-14'
|
|
Vary:
|
|
- Accept-Encoding
|
|
X-Envoy-Upstream-Service-Time:
|
|
- '171'
|
|
X-Envoy-Decorator-Operation:
|
|
- default.svc-apiv2:8080/*
|
|
Strict-Transport-Security:
|
|
- max-age=31536000; includeSubDomains; preload
|
|
X-Content-Type-Options:
|
|
- nosniff
|
|
X-Frame-Options:
|
|
- DENY
|
|
X-Xss-Protection:
|
|
- 1; mode=block
|
|
body:
|
|
encoding: ASCII-8BIT
|
|
string: |-
|
|
{
|
|
"access_token": "access-sandbox-0af2c971-41a6-4fc5-a97d-f2b27ab0a648",
|
|
"item_id": "n7XKpjRmDkHENymaBw7rU71wxQnrW4i6DDrQP",
|
|
"request_id": "2e1nOnm2CoOXVcH"
|
|
}
|
|
recorded_at: Mon, 19 May 2025 17:24:03 GMT
|
|
recorded_with: VCR 6.3.1
|