[object Object]

← back to Cli Printing Press

feat(catalog): generate Plaid CLI from official OpenAPI spec

66bc4ea8e5103a7dac8ce6ba1edd840a64f3ffeb · 2026-03-25 00:02:29 -0700 · Matt Van Horn

51 resource groups, 7/7 quality gates pass. All new template features
verified: --select, error hints, generation comments, README with
quickstart. Auth via PLAID_CLIENT_ID + PLAID_SECRET env vars.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

Files touched

Diff

commit 66bc4ea8e5103a7dac8ce6ba1edd840a64f3ffeb
Author: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
Date:   Wed Mar 25 00:02:29 2026 -0700

    feat(catalog): generate Plaid CLI from official OpenAPI spec
    
    51 resource groups, 7/7 quality gates pass. All new template features
    verified: --select, error hints, generation comments, README with
    quickstart. Auth via PLAID_CLIENT_ID + PLAID_SECRET env vars.
    
    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---
 catalog/plaid.yaml                                 |    15 +
 plaid-cli/.golangci.yml                            |    12 +
 plaid-cli/.goreleaser.yaml                         |    36 +
 plaid-cli/Makefile                                 |    16 +
 plaid-cli/README.md                                |   675 +
 plaid-cli/cmd/plaid-cli/main.go                    |    17 +
 plaid-cli/go.mod                                   |    15 +
 plaid-cli/go.sum                                   |    16 +
 plaid-cli/internal/cli/accounts.go                 |   110 +
 plaid-cli/internal/cli/application.go              |    69 +
 plaid-cli/internal/cli/asset-report.go             |   477 +
 plaid-cli/internal/cli/auth.go                     |   109 +
 plaid-cli/internal/cli/bank-transfer.go            |   608 +
 plaid-cli/internal/cli/beacon.go                   |   647 +
 plaid-cli/internal/cli/beta.go                     |   552 +
 plaid-cli/internal/cli/business-verification.go    |   109 +
 plaid-cli/internal/cli/cashflow-report.go          |   228 +
 plaid-cli/internal/cli/categories.go               |    51 +
 plaid-cli/internal/cli/consent.go                  |    67 +
 plaid-cli/internal/cli/consumer-report.go          |    67 +
 plaid-cli/internal/cli/cra.go                      |   918 ++
 plaid-cli/internal/cli/credit.go                   |  1004 ++
 plaid-cli/internal/cli/dashboard-user.go           |   109 +
 plaid-cli/internal/cli/doctor.go                   |   121 +
 plaid-cli/internal/cli/employers.go                |    67 +
 plaid-cli/internal/cli/employment.go               |    67 +
 plaid-cli/internal/cli/fdx.go                      |   145 +
 plaid-cli/internal/cli/helpers.go                  |   357 +
 plaid-cli/internal/cli/identity-verification.go    |   292 +
 plaid-cli/internal/cli/identity.go                 |   196 +
 plaid-cli/internal/cli/income.go                   |   255 +
 plaid-cli/internal/cli/institutions.go             |   159 +
 plaid-cli/internal/cli/investments.go              |   208 +
 plaid-cli/internal/cli/issues.go                   |   168 +
 plaid-cli/internal/cli/item.go                     |   542 +
 plaid-cli/internal/cli/liabilities.go              |    67 +
 plaid-cli/internal/cli/link-delivery.go            |   109 +
 plaid-cli/internal/cli/link.go                     |   229 +
 plaid-cli/internal/cli/network-insights.go         |    61 +
 plaid-cli/internal/cli/network.go                  |    66 +
 plaid-cli/internal/cli/oauth.go                    |   198 +
 plaid-cli/internal/cli/partner.go                  |   284 +
 plaid-cli/internal/cli/payment-initiation.go       |   608 +
 plaid-cli/internal/cli/payment-profile.go          |   146 +
 plaid-cli/internal/cli/processor.go                |  1214 ++
 plaid-cli/internal/cli/profile.go                  |    61 +
 plaid-cli/internal/cli/protect.go                  |   279 +
 plaid-cli/internal/cli/root.go                     |   160 +
 plaid-cli/internal/cli/sandbox.go                  |  1336 ++
 plaid-cli/internal/cli/session.go                  |    87 +
 plaid-cli/internal/cli/signal.go                   |   352 +
 plaid-cli/internal/cli/statements.go               |   171 +
 plaid-cli/internal/cli/transactions.go             |   261 +
 plaid-cli/internal/cli/transfer.go                 |  2493 ++++
 plaid-cli/internal/cli/user-account.go             |   115 +
 plaid-cli/internal/cli/user.go                     |   623 +
 plaid-cli/internal/cli/wallet.go                   |   312 +
 plaid-cli/internal/cli/watchlist-screening.go      |   990 ++
 plaid-cli/internal/cli/webhook-verification-key.go |    67 +
 plaid-cli/internal/client/client.go                |   300 +
 plaid-cli/internal/config/config.go                |   105 +
 plaid-cli/internal/types/types.go                  | 12972 +++++++++++++++++++
 62 files changed, 32170 insertions(+)

diff --git a/catalog/plaid.yaml b/catalog/plaid.yaml
new file mode 100644
index 00000000..ffccb912
--- /dev/null
+++ b/catalog/plaid.yaml
@@ -0,0 +1,15 @@
+name: plaid
+display_name: Plaid
+description: Banking API for account linking, transactions, identity verification, and income
+category: payments
+spec_url: https://raw.githubusercontent.com/plaid/plaid-openapi/master/2020-09-14.yml
+spec_format: yaml
+openapi_version: "3.0"
+tier: community
+verified_date: "2026-03-25"
+homepage: https://plaid.com/docs/api
+notes: "Fintech devs' go-to banking API. Abandoned community CLI (57 stars) proves demand."
+known_alternatives:
+  - name: plaid-cli
+    url: https://github.com/landakram/plaid-cli
+    language: go
diff --git a/plaid-cli/.golangci.yml b/plaid-cli/.golangci.yml
new file mode 100644
index 00000000..5397226d
--- /dev/null
+++ b/plaid-cli/.golangci.yml
@@ -0,0 +1,12 @@
+linters:
+  enable:
+    - errorlint
+    - govet
+    - ineffassign
+    - staticcheck
+    - unused
+
+formatters:
+  enable:
+    - gofmt
+    - goimports
diff --git a/plaid-cli/.goreleaser.yaml b/plaid-cli/.goreleaser.yaml
new file mode 100644
index 00000000..5e6f4283
--- /dev/null
+++ b/plaid-cli/.goreleaser.yaml
@@ -0,0 +1,36 @@
+version: 2
+project_name: plaid-cli
+changelog:
+  disable: true
+builds:
+  - id: plaid-cli
+    main: ./cmd/plaid-cli
+    binary: plaid-cli
+    env:
+      - CGO_ENABLED=0
+    ldflags:
+      - -s -w -X github.com/USER/plaid-cli/internal/cli.version={{ .Version }}
+    targets:
+      - darwin_amd64
+      - darwin_arm64
+      - linux_amd64
+      - linux_arm64
+      - windows_amd64
+      - windows_arm64
+archives:
+  - formats: [tar.gz]
+    name_template: "{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}"
+    format_overrides:
+      - goos: windows
+        formats: [zip]
+checksum:
+  name_template: checksums.txt
+brews:
+  - name: plaid-cli
+    repository:
+      owner: USER
+      name: homebrew-tap
+    homepage: "https://github.com/USER/plaid-cli"
+    description: "The Plaid REST API. Please see https://plaid.com/docs/api for more details."
+    install: |
+      bin.install "plaid-cli"
diff --git a/plaid-cli/Makefile b/plaid-cli/Makefile
new file mode 100644
index 00000000..4729148d
--- /dev/null
+++ b/plaid-cli/Makefile
@@ -0,0 +1,16 @@
+.PHONY: build test lint install clean
+
+build:
+	go build -o bin/plaid-cli ./cmd/plaid-cli
+
+test:
+	go test ./...
+
+lint:
+	golangci-lint run
+
+install:
+	go install ./cmd/plaid-cli
+
+clean:
+	rm -rf bin/
diff --git a/plaid-cli/README.md b/plaid-cli/README.md
new file mode 100644
index 00000000..ea0c95c3
--- /dev/null
+++ b/plaid-cli/README.md
@@ -0,0 +1,675 @@
+# plaid-cli
+
+The Plaid REST API. Please see https://plaid.com/docs/api for more details.
+
+## Install
+
+### Homebrew
+
+```
+brew install USER/tap/plaid-cli
+```
+
+### Go
+
+```
+go install github.com/USER/plaid-cli/cmd/plaid-cli@latest
+```
+
+### Binary
+
+Download from [Releases](https://github.com/USER/plaid-cli/releases).
+
+## Quick Start
+
+```bash
+# 1. Set your API credentials
+export PLAID_CLIENT_ID="your-key-here"
+
+# 2. Verify everything works
+plaid-cli doctor
+
+# 3. Start using it
+plaid-cli accounts --help
+```
+
+## Usage
+
+<!-- HELP_OUTPUT -->
+
+## Commands
+
+### accounts
+
+Manage accounts
+
+- **`plaid-cli accounts balance-get`** - Retrieve real-time balance data
+- **`plaid-cli accounts get`** - Retrieve accounts
+
+### application
+
+Manage application
+
+- **`plaid-cli application get`** - Retrieve information about a Plaid application
+
+### asset-report
+
+Manage asset report
+
+- **`plaid-cli asset-report audit-copy-create`** - Create Asset Report Audit Copy
+- **`plaid-cli asset-report audit-copy-get`** - Retrieve an Asset Report Audit Copy
+- **`plaid-cli asset-report audit-copy-pdf-get`** - Retrieve a PDF Asset Report Audit Copy
+- **`plaid-cli asset-report audit-copy-remove`** - Remove Asset Report Audit Copy
+- **`plaid-cli asset-report create`** - Create an Asset Report
+- **`plaid-cli asset-report filter`** - Filter Asset Report
+- **`plaid-cli asset-report get`** - Retrieve an Asset Report
+- **`plaid-cli asset-report pdf-get`** - Retrieve a PDF Asset Report
+- **`plaid-cli asset-report refresh`** - Refresh an Asset Report
+- **`plaid-cli asset-report remove`** - Delete an Asset Report
+
+### auth
+
+Manage auth
+
+- **`plaid-cli auth get`** - Retrieve auth data
+- **`plaid-cli auth verify`** - Verify auth data
+
+### bank-transfer
+
+Manage bank transfer
+
+- **`plaid-cli bank-transfer balance-get`** - Get balance of your Bank Transfer account
+- **`plaid-cli bank-transfer cancel`** - Cancel a bank transfer
+- **`plaid-cli bank-transfer create`** - Create a bank transfer
+- **`plaid-cli bank-transfer event-list`** - List bank transfer events
+- **`plaid-cli bank-transfer event-sync`** - Sync bank transfer events
+- **`plaid-cli bank-transfer get`** - Retrieve a bank transfer
+- **`plaid-cli bank-transfer list`** - List bank transfers
+- **`plaid-cli bank-transfer migrate-account`** - Migrate account into Bank Transfers
+- **`plaid-cli bank-transfer sweep-get`** - Retrieve a sweep
+- **`plaid-cli bank-transfer sweep-list`** - List sweeps
+
+### beacon
+
+Manage beacon
+
+- **`plaid-cli beacon account-risk-evaluate`** - Evaluate risk of a bank account
+- **`plaid-cli beacon duplicate-get`** - Get a Beacon Duplicate
+- **`plaid-cli beacon report-create`** - Create a Beacon Report
+- **`plaid-cli beacon report-get`** - Get a Beacon Report
+- **`plaid-cli beacon report-list`** - List Beacon Reports for a Beacon User
+- **`plaid-cli beacon report-syndication-get`** - Get a Beacon Report Syndication
+- **`plaid-cli beacon report-syndication-list`** - List Beacon Report Syndications for a Beacon User
+- **`plaid-cli beacon user-account-insights-get`** - Get Account Insights for a Beacon User
+- **`plaid-cli beacon user-create`** - Create a Beacon User
+- **`plaid-cli beacon user-get`** - Get a Beacon User
+- **`plaid-cli beacon user-history-list`** - List a Beacon User's history
+- **`plaid-cli beacon user-review`** - Review a Beacon User
+- **`plaid-cli beacon user-update`** - Update the identity data of a Beacon User
+
+### beta
+
+Manage beta
+
+- **`plaid-cli beta credit-bank-employment-get`** - Retrieve information from the bank accounts used for employment verification
+- **`plaid-cli beta ewa-report-v1-get`** - Get EWA Score Report
+- **`plaid-cli beta partner-customer-v1-create`** - Creates a new end customer for a Plaid reseller.
+- **`plaid-cli beta partner-customer-v1-enable`** - Enables a Plaid reseller's end customer in the Production environment.
+- **`plaid-cli beta partner-customer-v1-get`** - Retrieves the details of a Plaid reseller's end customer.
+- **`plaid-cli beta partner-customer-v1-update`** - Updates an existing end customer.
+- **`plaid-cli beta transactions-enhance`** - enhance locally-held transaction data
+- **`plaid-cli beta transactions-rules-create`** - Create transaction category rule
+- **`plaid-cli beta transactions-rules-list`** - Return a list of rules created for the Item associated with the access token.
+- **`plaid-cli beta transactions-rules-remove`** - Remove transaction rule
+- **`plaid-cli beta transactions-user-insights-get`** - Obtain user insights based on transactions sent through /transactions/enrich
+
+### business-verification
+
+Manage business verification
+
+- **`plaid-cli business-verification create`** - Create a business verification
+- **`plaid-cli business-verification get`** - Get a business verification
+
+### cashflow-report
+
+Manage cashflow report
+
+- **`plaid-cli cashflow-report get`** - Gets transaction data in `cashflow_report`
+- **`plaid-cli cashflow-report insights-get`** - Gets insights data in Cashflow Report
+- **`plaid-cli cashflow-report refresh`** - Refresh transaction data in `cashflow_report`
+- **`plaid-cli cashflow-report transactions-get`** - Gets transaction data in cashflow_report
+
+### categories
+
+Manage categories
+
+- **`plaid-cli categories get`** - (Deprecated) Get legacy categories
+
+### consent
+
+Manage consent
+
+- **`plaid-cli consent events-get`** - List a historical log of item consent events
+
+### consumer-report
+
+Manage consumer report
+
+- **`plaid-cli consumer-report pdf-get`** - Retrieve a PDF Reports
+
+### cra
+
+Manage cra
+
+- **`plaid-cli cra check-report-base-report-get`** - Retrieve a Base Report
+- **`plaid-cli cra check-report-cashflow-insights-get`** - Retrieve cash flow insights from your user's banking data
+- **`plaid-cli cra check-report-create`** - Refresh or create a Consumer Report
+- **`plaid-cli cra check-report-income-insights-get`** - Retrieve cash flow information from your user's banks
+- **`plaid-cli cra check-report-lend-score-get`** - Retrieve the LendScore from your user's banking data
+- **`plaid-cli cra check-report-network-insights-get`** - Retrieve network attributes for the user
+- **`plaid-cli cra check-report-partner-insights-get`** - Retrieve cash flow insights from partners
+- **`plaid-cli cra check-report-pdf-get`** - Retrieve Consumer Reports as a PDF
+- **`plaid-cli cra check-report-verification-get`** - Retrieve various home lending reports for a user.
+- **`plaid-cli cra check-report-verification-pdf-get`** - Retrieve Consumer Reports as a Verification PDF
+- **`plaid-cli cra loans-applications-register`** - Register loan applications and decisions.
+- **`plaid-cli cra loans-register`** - Register a list of loans to their applicants.
+- **`plaid-cli cra loans-unregister`** - Unregister a list of loans.
+- **`plaid-cli cra loans-update`** - Updates loan data.
+- **`plaid-cli cra monitoring-insights-get`** - Retrieve a Monitoring Insights Report
+- **`plaid-cli cra monitoring-insights-subscribe`** - Subscribe to Monitoring Insights
+- **`plaid-cli cra monitoring-insights-unsubscribe`** - Unsubscribe from Monitoring Insights
+- **`plaid-cli cra partner-insights-get`** - Retrieve cash flow insights from the bank accounts used for income verification
+
+### credit
+
+Manage credit
+
+- **`plaid-cli credit asset-report-freddie-mac-get`** - Retrieve an Asset Report with Freddie Mac format. Only Freddie Mac can use this endpoint.
+- **`plaid-cli credit audit-copy-token-create`** - Create Asset or Income Report Audit Copy Token
+- **`plaid-cli credit audit-copy-token-update`** - Update an Audit Copy Token
+- **`plaid-cli credit bank-income-get`** - Retrieve information from the bank accounts used for income verification
+- **`plaid-cli credit bank-income-pdf-get`** - Retrieve information from the bank accounts used for income verification in PDF format
+- **`plaid-cli credit bank-income-refresh`** - Refresh a user's bank income information
+- **`plaid-cli credit bank-income-webhook-update`** - Subscribe and unsubscribe to proactive notifications for a user's income profile
+- **`plaid-cli credit bank-statements-uploads-get`** - Retrieve data for a user's uploaded bank statements
+- **`plaid-cli credit employment-get`** - Retrieve a summary of an individual's employment information
+- **`plaid-cli credit freddie-mac-reports-get`** - Retrieve an Asset Report with Freddie Mac format (aka VOA - Verification Of Assets), and a Verification Of Employment (VOE) report if this one is available. Only Freddie Mac can use this endpoint.
+- **`plaid-cli credit payroll-income-get`** - Retrieve a user's payroll information
+- **`plaid-cli credit payroll-income-parsing-config-update`** - Update the parsing configuration for a document income verification
+- **`plaid-cli credit payroll-income-precheck`** - Check income verification eligibility and optimize conversion
+- **`plaid-cli credit payroll-income-refresh`** - Refresh a digital payroll income verification
+- **`plaid-cli credit payroll-income-risk-signals-get`** - Retrieve fraud insights for a user's manually uploaded document(s).
+- **`plaid-cli credit relay-create`** - Create a relay token to share an Asset Report with a partner client
+- **`plaid-cli credit relay-get`** - Retrieve the reports associated with a relay token that was shared with you
+- **`plaid-cli credit relay-pdf-get`** - Retrieve the pdf reports associated with a relay token that was shared with you (beta)
+- **`plaid-cli credit relay-refresh`** - Refresh a report of a relay token
+- **`plaid-cli credit relay-remove`** - Remove relay token
+- **`plaid-cli credit report-audit-copy-remove`** - Remove an Audit Copy token
+- **`plaid-cli credit sessions-get`** - Retrieve Link sessions for your user
+
+### dashboard-user
+
+Manage dashboard user
+
+- **`plaid-cli dashboard-user get`** - Retrieve a dashboard user
+- **`plaid-cli dashboard-user list`** - List dashboard users
+
+### employers
+
+Manage employers
+
+- **`plaid-cli employers search`** - Search employer database
+
+### employment
+
+Manage employment
+
+- **`plaid-cli employment verification-get`** - (Deprecated) Retrieve a summary of an individual's employment information
+
+### fdx
+
+Manage fdx
+
+- **`plaid-cli fdx get-recipient`** - Get Recipient
+- **`plaid-cli fdx get-recipients`** - Get Recipients
+- **`plaid-cli fdx notifications`** - Webhook receiver for fdx notifications
+
+### identity
+
+Manage identity
+
+- **`plaid-cli identity documents-uploads-get`** - Returns uploaded document identity
+- **`plaid-cli identity get`** - Retrieve identity data
+- **`plaid-cli identity match`** - Retrieve identity match score
+- **`plaid-cli identity refresh`** - Refresh identity data
+
+### identity-verification
+
+Manage identity verification
+
+- **`plaid-cli identity-verification autofill-create`** - Create autofill for an Identity Verification
+- **`plaid-cli identity-verification create`** - Create a new Identity Verification
+- **`plaid-cli identity-verification get`** - Retrieve Identity Verification
+- **`plaid-cli identity-verification list`** - List Identity Verifications
+- **`plaid-cli identity-verification retry`** - Retry an Identity Verification
+
+### income
+
+Manage income
+
+- **`plaid-cli income verification-create`** - (Deprecated) Create an income verification instance
+- **`plaid-cli income verification-documents-download`** - (Deprecated) Download the original documents used for income verification
+- **`plaid-cli income verification-paystubs-get`** - (Deprecated) Retrieve information from the paystubs used for income verification
+- **`plaid-cli income verification-precheck`** - (Deprecated) Check digital income verification eligibility and optimize conversion
+- **`plaid-cli income verification-taxforms-get`** - (Deprecated) Retrieve information from the tax documents used for income verification
+
+### institutions
+
+Manage institutions
+
+- **`plaid-cli institutions get`** - Get details of all supported institutions
+- **`plaid-cli institutions get-by-id`** - Get details of an institution
+- **`plaid-cli institutions search`** - Search institutions
+
+### investments
+
+Manage investments
+
+- **`plaid-cli investments auth-get`** - Get data needed to authorize an investments transfer
+- **`plaid-cli investments holdings-get`** - Get Investment holdings
+- **`plaid-cli investments refresh`** - Refresh investment data
+- **`plaid-cli investments transactions-get`** - Get investment transactions
+
+### issues
+
+Manage issues
+
+- **`plaid-cli issues get`** - Get an Issue
+- **`plaid-cli issues search`** - Search for an Issue
+- **`plaid-cli issues subscribe`** - Subscribe to an Issue
+
+### item
+
+Manage item
+
+- **`plaid-cli item access-token-invalidate`** - Invalidate access_token
+- **`plaid-cli item activity-list`** - List a historical log of user consent events
+- **`plaid-cli item application-list`** - List a user’s connected applications
+- **`plaid-cli item application-scopes-update`** - Update the scopes of access for a particular application
+- **`plaid-cli item application-unlink`** - Unlink a user’s connected application
+- **`plaid-cli item create-public-token`** - Create public token
+- **`plaid-cli item get`** - Retrieve an Item
+- **`plaid-cli item import`** - Import Item
+- **`plaid-cli item public-token-exchange`** - Exchange public token for an access token
+- **`plaid-cli item remove`** - Remove an Item
+- **`plaid-cli item webhook-update`** - Update Webhook URL
+
+### liabilities
+
+Manage liabilities
+
+- **`plaid-cli liabilities get`** - Retrieve Liabilities data
+
+### link
+
+Manage link
+
+- **`plaid-cli link oauth-correlation-id-exchange`** - Exchange the Link Correlation Id for a Link Token
+- **`plaid-cli link token-create`** - Create Link Token
+- **`plaid-cli link token-get`** - Get Link Token
+
+### link-delivery
+
+Manage link delivery
+
+- **`plaid-cli link-delivery create`** - Create Hosted Link session
+- **`plaid-cli link-delivery get`** - Get Hosted Link session
+
+### network
+
+Manage network
+
+- **`plaid-cli network status-get`** - Check a user's Plaid Network status
+
+### network-insights
+
+Manage network insights
+
+- **`plaid-cli network-insights report-get`** - Retrieve network insights for the provided `access_tokens`
+
+### oauth
+
+Manage oauth
+
+- **`plaid-cli oauth introspect`** - Get metadata about an OAuth token
+- **`plaid-cli oauth revoke`** - Revoke an OAuth token
+- **`plaid-cli oauth token`** - Create or refresh an OAuth access token
+
+### partner
+
+Manage partner
+
+- **`plaid-cli partner customer-create`** - Creates a new end customer for a Plaid reseller.
+- **`plaid-cli partner customer-enable`** - Enables a Plaid reseller's end customer in the Production environment.
+- **`plaid-cli partner customer-get`** - Returns a Plaid reseller's end customer.
+- **`plaid-cli partner customer-oauth-institutions-get`** - Returns OAuth-institution registration information for a given end customer.
+- **`plaid-cli partner customer-remove`** - Removes a Plaid reseller's end customer.
+
+### payment-initiation
+
+Manage payment initiation
+
+- **`plaid-cli payment-initiation consent-create`** - Create payment consent
+- **`plaid-cli payment-initiation consent-get`** - Get payment consent
+- **`plaid-cli payment-initiation consent-payment-execute`** - Execute a single payment using consent
+- **`plaid-cli payment-initiation consent-revoke`** - Revoke payment consent
+- **`plaid-cli payment-initiation create-payment-token`** - Create payment token
+- **`plaid-cli payment-initiation payment-create`** - Create a payment
+- **`plaid-cli payment-initiation payment-get`** - Get payment details
+- **`plaid-cli payment-initiation payment-list`** - List payments
+- **`plaid-cli payment-initiation payment-reverse`** - Reverse an existing payment
+- **`plaid-cli payment-initiation recipient-create`** - Create payment recipient
+- **`plaid-cli payment-initiation recipient-get`** - Get payment recipient
+- **`plaid-cli payment-initiation recipient-list`** - List payment recipients
+
+### payment-profile
+
+Manage payment profile
+
+- **`plaid-cli payment-profile create`** - Create payment profile
+- **`plaid-cli payment-profile get`** - Get payment profile
+- **`plaid-cli payment-profile remove`** - Remove payment profile
+
+### processor
+
+Manage processor
+
+- **`plaid-cli processor account-get`** - Retrieve the account associated with a processor token
+- **`plaid-cli processor apex-token-create`** - Create Apex bank account token
+- **`plaid-cli processor auth-get`** - Retrieve Auth data
+- **`plaid-cli processor balance-get`** - Retrieve Balance data
+- **`plaid-cli processor bank-transfer-create`** - Create a bank transfer as a processor
+- **`plaid-cli processor identity-get`** - Retrieve Identity data
+- **`plaid-cli processor identity-match`** - Retrieve identity match score
+- **`plaid-cli processor investments-holdings-get`** - Retrieve Investment Holdings
+- **`plaid-cli processor investments-transactions-get`** - Get investment transactions data
+- **`plaid-cli processor liabilities-get`** - Retrieve Liabilities data
+- **`plaid-cli processor signal-decision-report`** - Report whether you initiated an ACH transaction
+- **`plaid-cli processor signal-evaluate`** - Evaluate a planned ACH transaction
+- **`plaid-cli processor signal-prepare`** - Opt-in a processor token to Signal
+- **`plaid-cli processor signal-return-report`** - Report a return for an ACH transaction
+- **`plaid-cli processor stripe-bank-account-token-create`** - Create Stripe bank account token
+- **`plaid-cli processor token-create`** - Create processor token
+- **`plaid-cli processor token-permissions-get`** - Get a processor token's product permissions
+- **`plaid-cli processor token-permissions-set`** - Control a processor's access to products
+- **`plaid-cli processor token-webhook-update`** - Update a processor token's webhook URL
+- **`plaid-cli processor transactions-get`** - Get transaction data
+- **`plaid-cli processor transactions-recurring-get`** - Fetch recurring transaction streams
+- **`plaid-cli processor transactions-refresh`** - Refresh transaction data
+- **`plaid-cli processor transactions-sync`** - Get incremental transaction updates on a processor token
+
+### profile
+
+Manage profile
+
+- **`plaid-cli profile network-status-get`** - Check a user's Plaid Network status
+
+### protect
+
+Manage protect
+
+- **`plaid-cli protect compute`** - Compute Protect Trust Index Score
+- **`plaid-cli protect event-get`** - Get information about a user event
+- **`plaid-cli protect event-send`** - Send a new event to enrich user data
+- **`plaid-cli protect report-create`** - Create a Protect report
+- **`plaid-cli protect user-insights-get`** - Get Protect user insights
+
+### sandbox
+
+Manage sandbox
+
+- **`plaid-cli sandbox bank-income-fire-webhook`** - Manually fire a bank income webhook in sandbox
+- **`plaid-cli sandbox bank-transfer-fire-webhook`** - Manually fire a Bank Transfer webhook
+- **`plaid-cli sandbox bank-transfer-simulate`** - Simulate a bank transfer event in Sandbox
+- **`plaid-cli sandbox cra-cashflow-updates-update`** - Trigger an update for Cash Flow Updates
+- **`plaid-cli sandbox income-fire-webhook`** - Manually fire an Income webhook
+- **`plaid-cli sandbox item-fire-webhook`** - Fire a test webhook
+- **`plaid-cli sandbox item-reset-login`** - Force a Sandbox Item into an error state
+- **`plaid-cli sandbox item-set-verification-status`** - Set verification status for Sandbox account
+- **`plaid-cli sandbox oauth-select-accounts`** - Save the selected accounts when connecting to the Platypus Oauth institution
+- **`plaid-cli sandbox payment-profile-reset-login`** - Reset the login of a Payment Profile
+- **`plaid-cli sandbox payment-simulate`** - Simulate a payment event in Sandbox
+- **`plaid-cli sandbox processor-token-create`** - Create a test Item and processor token
+- **`plaid-cli sandbox public-token-create`** - Create a test Item
+- **`plaid-cli sandbox transactions-create`** - Create sandbox transactions
+- **`plaid-cli sandbox transfer-fire-webhook`** - Manually fire a Transfer webhook
+- **`plaid-cli sandbox transfer-ledger-deposit-simulate`** - Simulate a ledger deposit event in Sandbox
+- **`plaid-cli sandbox transfer-ledger-simulate-available`** - Simulate converting pending balance to available balance
+- **`plaid-cli sandbox transfer-ledger-withdraw-simulate`** - Simulate a ledger withdraw event in Sandbox
+- **`plaid-cli sandbox transfer-refund-simulate`** - Simulate a refund event in Sandbox
+- **`plaid-cli sandbox transfer-repayment-simulate`** - Trigger the creation of a repayment
+- **`plaid-cli sandbox transfer-simulate`** - Simulate a transfer event in Sandbox
+- **`plaid-cli sandbox transfer-sweep-simulate`** - Simulate creating a sweep
+- **`plaid-cli sandbox transfer-test-clock-advance`** - Advance a test clock
+- **`plaid-cli sandbox transfer-test-clock-create`** - Create a test clock
+- **`plaid-cli sandbox transfer-test-clock-get`** - Get a test clock
+- **`plaid-cli sandbox transfer-test-clock-list`** - List test clocks
+- **`plaid-cli sandbox user-reset-login`** - Force item(s) for a Sandbox User into an error state
+
+### session
+
+Manage session
+
+- **`plaid-cli session token-create`** - Create a Link token for Layer
+
+### signal
+
+Manage signal
+
+- **`plaid-cli signal decision-report`** - Report whether you initiated an ACH transaction
+- **`plaid-cli signal evaluate`** - Evaluate a planned ACH transaction
+- **`plaid-cli signal prepare`** - Opt-in an Item to Signal Transaction Scores
+- **`plaid-cli signal return-report`** - Report a return for an ACH transaction
+- **`plaid-cli signal schedule`** - Schedule a planned ACH transaction
+
+### statements
+
+Manage statements
+
+- **`plaid-cli statements download`** - Retrieve a single statement.
+- **`plaid-cli statements list`** - Retrieve a list of all statements associated with an item.
+- **`plaid-cli statements refresh`** - Refresh statements data.
+
+### transactions
+
+Manage transactions
+
+- **`plaid-cli transactions enrich`** - Enrich locally-held transaction data
+- **`plaid-cli transactions get`** - Get transaction data
+- **`plaid-cli transactions recurring-get`** - Fetch recurring transaction streams
+- **`plaid-cli transactions refresh`** - Refresh transaction data
+- **`plaid-cli transactions sync`** - Get incremental transaction updates on an Item
+
+### transfer
+
+Manage transfer
+
+- **`plaid-cli transfer authorization-cancel`** - Cancel a transfer authorization
+- **`plaid-cli transfer authorization-create`** - Create a transfer authorization
+- **`plaid-cli transfer balance-get`** - (Deprecated) Retrieve a balance held with Plaid
+- **`plaid-cli transfer cancel`** - Cancel a transfer
+- **`plaid-cli transfer capabilities-get`** - Get RTP eligibility information of a transfer
+- **`plaid-cli transfer configuration-get`** - Get transfer product configuration
+- **`plaid-cli transfer create`** - Create a transfer
+- **`plaid-cli transfer diligence-document-upload`** - Upload transfer diligence document on behalf of the originator
+- **`plaid-cli transfer diligence-submit`** - Submit transfer diligence on behalf of the originator
+- **`plaid-cli transfer event-list`** - List transfer events
+- **`plaid-cli transfer event-sync`** - Sync transfer events
+- **`plaid-cli transfer get`** - Retrieve a transfer
+- **`plaid-cli transfer intent-create`** - Create a transfer intent object to invoke the Transfer UI
+- **`plaid-cli transfer intent-get`** - Retrieve more information about a transfer intent
+- **`plaid-cli transfer ledger-deposit`** - Deposit funds into a Plaid Ledger balance
+- **`plaid-cli transfer ledger-distribute`** - Move available balance between ledgers
+- **`plaid-cli transfer ledger-event-list`** - List transfer ledger events
+- **`plaid-cli transfer ledger-get`** - Retrieve Plaid Ledger balance
+- **`plaid-cli transfer ledger-withdraw`** - Withdraw funds from a Plaid Ledger balance
+- **`plaid-cli transfer list`** - List transfers
+- **`plaid-cli transfer metrics-get`** - Get transfer product usage metrics
+- **`plaid-cli transfer migrate-account`** - Migrate account into Transfers
+- **`plaid-cli transfer originator-create`** - Create a new originator
+- **`plaid-cli transfer originator-funding-account-create`** - Create a new funding account for an originator
+- **`plaid-cli transfer originator-funding-account-update`** - Update the funding account associated with the originator
+- **`plaid-cli transfer originator-get`** - Get status of an originator's onboarding
+- **`plaid-cli transfer originator-list`** - Get status of all originators' onboarding
+- **`plaid-cli transfer platform-originator-create`** - Create an originator for Transfer for Platforms customers
+- **`plaid-cli transfer platform-person-create`** - Create a person associated with an originator
+- **`plaid-cli transfer platform-requirement-submit`** - Submit additional onboarding information on behalf of an originator
+- **`plaid-cli transfer questionnaire-create`** - Generate a Plaid-hosted onboarding UI URL.
+- **`plaid-cli transfer recurring-cancel`** - Cancel a recurring transfer.
+- **`plaid-cli transfer recurring-create`** - Create a recurring transfer
+- **`plaid-cli transfer recurring-get`** - Retrieve a recurring transfer
+- **`plaid-cli transfer recurring-list`** - List recurring transfers
+- **`plaid-cli transfer refund-cancel`** - Cancel a refund
+- **`plaid-cli transfer refund-create`** - Create a refund
+- **`plaid-cli transfer refund-get`** - Retrieve a refund
+- **`plaid-cli transfer repayment-list`** - Lists historical repayments
+- **`plaid-cli transfer repayment-return-list`** - List the returns included in a repayment
+- **`plaid-cli transfer sweep-get`** - Retrieve a sweep
+- **`plaid-cli transfer sweep-list`** - List sweeps
+
+### user
+
+Manage user
+
+- **`plaid-cli user create`** - Create user
+- **`plaid-cli user financial-data-refresh`** - Refresh user items for Financial-Insights bundle
+- **`plaid-cli user get`** - Retrieve user identity and information
+- **`plaid-cli user identity-remove`** - Remove user identity data
+- **`plaid-cli user items-associate`** - Associate Items to a User
+- **`plaid-cli user items-get`** - Get Items associated with a User
+- **`plaid-cli user items-remove`** - Remove Items from a User
+- **`plaid-cli user products-terminate`** - Terminate user-based products
+- **`plaid-cli user remove`** - Remove user
+- **`plaid-cli user third-party-token-create`** - Create a third-party user token
+- **`plaid-cli user third-party-token-remove`** - Remove a third-party user token
+- **`plaid-cli user transactions-refresh`** - Refresh user items for Transactions bundle
+- **`plaid-cli user update`** - Update user information
+
+### user-account
+
+Manage user account
+
+- **`plaid-cli user-account session-event-send`** - Send User Account Session Event
+- **`plaid-cli user-account session-get`** - Retrieve User Account
+
+### wallet
+
+Manage wallet
+
+- **`plaid-cli wallet create`** - Create an e-wallet
+- **`plaid-cli wallet get`** - Fetch an e-wallet
+- **`plaid-cli wallet list`** - Fetch a list of e-wallets
+- **`plaid-cli wallet transaction-execute`** - Execute a transaction using an e-wallet
+- **`plaid-cli wallet transaction-get`** - Fetch an e-wallet transaction
+- **`plaid-cli wallet transaction-list`** - List e-wallet transactions
+
+### watchlist-screening
+
+Manage watchlist screening
+
+- **`plaid-cli watchlist-screening entity-create`** - Create a watchlist screening for an entity
+- **`plaid-cli watchlist-screening entity-get`** - Get an entity screening
+- **`plaid-cli watchlist-screening entity-history-list`** - List history for entity watchlist screenings
+- **`plaid-cli watchlist-screening entity-hit-list`** - List hits for entity watchlist screenings
+- **`plaid-cli watchlist-screening entity-list`** - List entity watchlist screenings
+- **`plaid-cli watchlist-screening entity-program-get`** - Get entity watchlist screening program
+- **`plaid-cli watchlist-screening entity-program-list`** - List entity watchlist screening programs
+- **`plaid-cli watchlist-screening entity-review-create`** - Create a review for an entity watchlist screening
+- **`plaid-cli watchlist-screening entity-review-list`** - List reviews for entity watchlist screenings
+- **`plaid-cli watchlist-screening entity-update`** - Update an entity screening
+- **`plaid-cli watchlist-screening individual-create`** - Create a watchlist screening for a person
+- **`plaid-cli watchlist-screening individual-get`** - Retrieve an individual watchlist screening
+- **`plaid-cli watchlist-screening individual-history-list`** - List history for individual watchlist screenings
+- **`plaid-cli watchlist-screening individual-hit-list`** - List hits for individual watchlist screening
+- **`plaid-cli watchlist-screening individual-list`** - List Individual Watchlist Screenings
+- **`plaid-cli watchlist-screening individual-program-get`** - Get individual watchlist screening program
+- **`plaid-cli watchlist-screening individual-program-list`** - List individual watchlist screening programs
+- **`plaid-cli watchlist-screening individual-review-create`** - Create a review for an individual watchlist screening
+- **`plaid-cli watchlist-screening individual-review-list`** - List reviews for individual watchlist screenings
+- **`plaid-cli watchlist-screening individual-update`** - Update individual watchlist screening
+
+### webhook-verification-key
+
+Manage webhook verification key
+
+- **`plaid-cli webhook-verification-key get`** - Get webhook verification key
+
+
+## Output Formats
+
+```bash
+# Human-readable table (default)
+plaid-cli accounts list
+
+# JSON for scripting and agents
+plaid-cli accounts list --json
+
+# Filter specific fields
+plaid-cli accounts list --json --select id,name,status
+
+# Plain tab-separated for piping
+plaid-cli accounts list --plain
+
+# Dry run (show request without sending)
+plaid-cli accounts list --dry-run
+```
+
+## Agent Usage
+
+This CLI is designed for AI agent consumption:
+
+```bash
+# All commands support --json for structured output
+plaid-cli accounts list --json --select id,name
+
+# --dry-run shows the exact API request without sending
+plaid-cli accounts list --dry-run
+
+# Non-interactive - never prompts, never pages
+# Errors go to stderr with typed exit codes
+```
+
+Exit codes: `0` success, `2` usage error, `3` not found, `4` auth error, `5` API error, `7` rate limited, `10` config error.
+
+## Health Check
+
+```bash
+plaid-cli doctor
+```
+
+<!-- DOCTOR_OUTPUT -->
+
+## Configuration
+
+Config file: `~/.config/plaid-cli/config.toml`
+
+Environment variables:
+- `PLAID_CLIENT_ID`
+
+## Troubleshooting
+
+**Authentication errors (exit code 4)**
+- Run `plaid-cli doctor` to check credentials
+- Verify the environment variable is set: `echo $PLAID_CLIENT_ID`
+
+**Not found errors (exit code 3)**
+- Check the resource ID is correct
+- Run the `list` command to see available items
+
+**Rate limit errors (exit code 7)**
+- The CLI auto-retries with exponential backoff
+- If persistent, wait a few minutes and try again
+
+---
+
+Generated by [CLI Printing Press](https://github.com/mvanhorn/cli-printing-press)
diff --git a/plaid-cli/cmd/plaid-cli/main.go b/plaid-cli/cmd/plaid-cli/main.go
new file mode 100644
index 00000000..e12964f6
--- /dev/null
+++ b/plaid-cli/cmd/plaid-cli/main.go
@@ -0,0 +1,17 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package main
+
+import (
+	"fmt"
+	"os"
+
+	"github.com/USER/plaid-cli/internal/cli"
+)
+
+func main() {
+	if err := cli.Execute(); err != nil {
+		fmt.Fprintln(os.Stderr, err.Error())
+		os.Exit(cli.ExitCode(err))
+	}
+}
diff --git a/plaid-cli/go.mod b/plaid-cli/go.mod
new file mode 100644
index 00000000..f6b23334
--- /dev/null
+++ b/plaid-cli/go.mod
@@ -0,0 +1,15 @@
+module github.com/USER/plaid-cli
+
+go 1.23
+
+require (
+	github.com/mattn/go-isatty v0.0.20
+	github.com/pelletier/go-toml/v2 v2.2.4
+	github.com/spf13/cobra v1.9.1
+)
+
+require (
+	github.com/inconshreveable/mousetrap v1.1.0 // indirect
+	github.com/spf13/pflag v1.0.6 // indirect
+	golang.org/x/sys v0.6.0 // indirect
+)
diff --git a/plaid-cli/go.sum b/plaid-cli/go.sum
new file mode 100644
index 00000000..d0bfb4e0
--- /dev/null
+++ b/plaid-cli/go.sum
@@ -0,0 +1,16 @@
+github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
+github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
+github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
+github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
+github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
+github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=
+github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
+github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo=
+github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0=
+github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o=
+github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ=
+golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/plaid-cli/internal/cli/accounts.go b/plaid-cli/internal/cli/accounts.go
new file mode 100644
index 00000000..dcb8144a
--- /dev/null
+++ b/plaid-cli/internal/cli/accounts.go
@@ -0,0 +1,110 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newAccountsCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "accounts",
+		Short: "Manage accounts",
+	}
+
+	cmd.AddCommand(newAccountsBalanceGetCmd(flags))
+	cmd.AddCommand(newAccountsGetCmd(flags))
+	return cmd
+}
+
+func newAccountsBalanceGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "balance-get",
+		Aliases: []string{"create"},
+		Short: "Retrieve real-time balance data",
+		Example: "  plaid-cli accounts balance-get --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/accounts/balance/get"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newAccountsGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "get",
+		Short: "Retrieve accounts",
+		Example: "  plaid-cli accounts get --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/accounts/get"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/application.go b/plaid-cli/internal/cli/application.go
new file mode 100644
index 00000000..f303bcf1
--- /dev/null
+++ b/plaid-cli/internal/cli/application.go
@@ -0,0 +1,69 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newApplicationCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "application",
+		Short: "Manage application",
+	}
+
+	cmd.AddCommand(newApplicationGetCmd(flags))
+	return cmd
+}
+
+func newApplicationGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyApplicationId string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "get",
+		Aliases: []string{"create"},
+		Short: "Retrieve information about a Plaid application",
+		Example: "  plaid-cli application get --application-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/application/get"
+			body := map[string]any{}
+			if bodyApplicationId != "" {
+				body["application_id"] = bodyApplicationId
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyApplicationId, "application-id", "", "This field will map to the application ID that is returned from /item/application/list, or provided to the...")
+	_ = cmd.MarkFlagRequired("application-id")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	_ = cmd.MarkFlagRequired("client-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	_ = cmd.MarkFlagRequired("secret")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/asset-report.go b/plaid-cli/internal/cli/asset-report.go
new file mode 100644
index 00000000..f95a0e7c
--- /dev/null
+++ b/plaid-cli/internal/cli/asset-report.go
@@ -0,0 +1,477 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newAssetReportCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "asset-report",
+		Short: "Manage asset report",
+	}
+
+	cmd.AddCommand(newAssetReportAuditCopyCreateCmd(flags))
+	cmd.AddCommand(newAssetReportAuditCopyGetCmd(flags))
+	cmd.AddCommand(newAssetReportAuditCopyPdfGetCmd(flags))
+	cmd.AddCommand(newAssetReportAuditCopyRemoveCmd(flags))
+	cmd.AddCommand(newAssetReportCreateCmd(flags))
+	cmd.AddCommand(newAssetReportFilterCmd(flags))
+	cmd.AddCommand(newAssetReportGetCmd(flags))
+	cmd.AddCommand(newAssetReportPdfGetCmd(flags))
+	cmd.AddCommand(newAssetReportRefreshCmd(flags))
+	cmd.AddCommand(newAssetReportRemoveCmd(flags))
+	return cmd
+}
+
+func newAssetReportAuditCopyCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyAssetReportToken string
+	var bodyAuditorId string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "audit-copy-create",
+		Short: "Create Asset Report Audit Copy",
+		Example: "  plaid-cli asset-report audit-copy-create --asset-report-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/asset_report/audit_copy/create"
+			body := map[string]any{}
+			if bodyAssetReportToken != "" {
+				body["asset_report_token"] = bodyAssetReportToken
+			}
+			if bodyAuditorId != "" {
+				body["auditor_id"] = bodyAuditorId
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAssetReportToken, "asset-report-token", "", "A token that can be provided to endpoints such as `/asset_report/get` or `/asset_report/pdf/get` to fetch or update...")
+	_ = cmd.MarkFlagRequired("asset-report-token")
+	cmd.Flags().StringVar(&bodyAuditorId, "auditor-id", "", "The `auditor_id` of the third party with whom you would like to share the Asset Report.")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newAssetReportAuditCopyGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyAuditCopyToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "audit-copy-get",
+		Short: "Retrieve an Asset Report Audit Copy",
+		Example: "  plaid-cli asset-report audit-copy-get --audit-copy-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/asset_report/audit_copy/get"
+			body := map[string]any{}
+			if bodyAuditCopyToken != "" {
+				body["audit_copy_token"] = bodyAuditCopyToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAuditCopyToken, "audit-copy-token", "", "The `audit_copy_token` granting access to the Audit Copy you would like to get.")
+	_ = cmd.MarkFlagRequired("audit-copy-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newAssetReportAuditCopyPdfGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyAuditCopyToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "audit-copy-pdf-get",
+		Short: "Retrieve a PDF Asset Report Audit Copy",
+		Example: "  plaid-cli asset-report audit-copy-pdf-get --audit-copy-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/asset_report/audit_copy/pdf/get"
+			body := map[string]any{}
+			if bodyAuditCopyToken != "" {
+				body["audit_copy_token"] = bodyAuditCopyToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAuditCopyToken, "audit-copy-token", "", "The `audit_copy_token` granting access to the Audit Copy you would like to get as a PDF.")
+	_ = cmd.MarkFlagRequired("audit-copy-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newAssetReportAuditCopyRemoveCmd(flags *rootFlags) *cobra.Command {
+	var bodyAuditCopyToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "audit-copy-remove",
+		Short: "Remove Asset Report Audit Copy",
+		Example: "  plaid-cli asset-report audit-copy-remove --audit-copy-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/asset_report/audit_copy/remove"
+			body := map[string]any{}
+			if bodyAuditCopyToken != "" {
+				body["audit_copy_token"] = bodyAuditCopyToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAuditCopyToken, "audit-copy-token", "", "The `audit_copy_token` granting access to the Audit Copy you would like to revoke.")
+	_ = cmd.MarkFlagRequired("audit-copy-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newAssetReportCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyDaysRequested int
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "create",
+		Short: "Create an Asset Report",
+		Example: "  plaid-cli asset-report create",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/asset_report/create"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyDaysRequested != 0 {
+				body["days_requested"] = bodyDaysRequested
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().IntVar(&bodyDaysRequested, "days-requested", 0, "The maximum integer number of days of history to include in the Asset Report. If using Fannie Mae Day 1 Certainty,...")
+	_ = cmd.MarkFlagRequired("days-requested")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newAssetReportFilterCmd(flags *rootFlags) *cobra.Command {
+	var bodyAssetReportToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "filter",
+		Short: "Filter Asset Report",
+		Example: "  plaid-cli asset-report filter --asset-report-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/asset_report/filter"
+			body := map[string]any{}
+			if bodyAssetReportToken != "" {
+				body["asset_report_token"] = bodyAssetReportToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAssetReportToken, "asset-report-token", "", "A token that can be provided to endpoints such as `/asset_report/get` or `/asset_report/pdf/get` to fetch or update...")
+	_ = cmd.MarkFlagRequired("asset-report-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newAssetReportGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyAssetReportToken string
+	var bodyClientId string
+	var bodyFastReport bool
+	var bodyIncludeInsights bool
+	var bodySecret string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "get",
+		Short: "Retrieve an Asset Report",
+		Example: "  plaid-cli asset-report get",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/asset_report/get"
+			body := map[string]any{}
+			if bodyAssetReportToken != "" {
+				body["asset_report_token"] = bodyAssetReportToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyFastReport != false {
+				body["fast_report"] = bodyFastReport
+			}
+			if bodyIncludeInsights != false {
+				body["include_insights"] = bodyIncludeInsights
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAssetReportToken, "asset-report-token", "", "A token that can be provided to endpoints such as `/asset_report/get` or `/asset_report/pdf/get` to fetch or update...")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().BoolVar(&bodyFastReport, "fast-report", false, "`true` to fetch 'fast' version of asset report. Defaults to false if omitted. Can only be used if...")
+	cmd.Flags().BoolVar(&bodyIncludeInsights, "include-insights", false, "`true` if you would like to retrieve the Asset Report with Insights, `false` otherwise. This field defaults to...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User for which to create an asset report for. The latest asset report associated...")
+
+	return cmd
+}
+
+func newAssetReportPdfGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyAssetReportToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "pdf-get",
+		Short: "Retrieve a PDF Asset Report",
+		Example: "  plaid-cli asset-report pdf-get --asset-report-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/asset_report/pdf/get"
+			body := map[string]any{}
+			if bodyAssetReportToken != "" {
+				body["asset_report_token"] = bodyAssetReportToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAssetReportToken, "asset-report-token", "", "A token that can be provided to endpoints such as `/asset_report/get` or `/asset_report/pdf/get` to fetch or update...")
+	_ = cmd.MarkFlagRequired("asset-report-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newAssetReportRefreshCmd(flags *rootFlags) *cobra.Command {
+	var bodyAssetReportToken string
+	var bodyClientId string
+	var bodyDaysRequested int
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "refresh",
+		Short: "Refresh an Asset Report",
+		Example: "  plaid-cli asset-report refresh --asset-report-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/asset_report/refresh"
+			body := map[string]any{}
+			if bodyAssetReportToken != "" {
+				body["asset_report_token"] = bodyAssetReportToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyDaysRequested != 0 {
+				body["days_requested"] = bodyDaysRequested
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAssetReportToken, "asset-report-token", "", "The `asset_report_token` returned by the original call to `/asset_report/create`")
+	_ = cmd.MarkFlagRequired("asset-report-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().IntVar(&bodyDaysRequested, "days-requested", 0, "The maximum number of days of history to include in the Asset Report. Must be an integer. If not specified, the...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newAssetReportRemoveCmd(flags *rootFlags) *cobra.Command {
+	var bodyAssetReportToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "remove",
+		Short: "Delete an Asset Report",
+		Example: "  plaid-cli asset-report remove --asset-report-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/asset_report/remove"
+			body := map[string]any{}
+			if bodyAssetReportToken != "" {
+				body["asset_report_token"] = bodyAssetReportToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAssetReportToken, "asset-report-token", "", "A token that can be provided to endpoints such as `/asset_report/get` or `/asset_report/pdf/get` to fetch or update...")
+	_ = cmd.MarkFlagRequired("asset-report-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/auth.go b/plaid-cli/internal/cli/auth.go
new file mode 100644
index 00000000..ad0aa0e3
--- /dev/null
+++ b/plaid-cli/internal/cli/auth.go
@@ -0,0 +1,109 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newAuthCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "auth",
+		Short: "Manage auth",
+	}
+
+	cmd.AddCommand(newAuthGetCmd(flags))
+	cmd.AddCommand(newAuthVerifyCmd(flags))
+	return cmd
+}
+
+func newAuthGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "get",
+		Aliases: []string{"create"},
+		Short: "Retrieve auth data",
+		Example: "  plaid-cli auth get --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/auth/get"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newAuthVerifyCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyLegalName string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "verify",
+		Short: "Verify auth data",
+		Example: "  plaid-cli auth verify",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/auth/verify"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyLegalName != "" {
+				body["legal_name"] = bodyLegalName
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyLegalName, "legal-name", "", "Account owner's legal name")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/bank-transfer.go b/plaid-cli/internal/cli/bank-transfer.go
new file mode 100644
index 00000000..659f9838
--- /dev/null
+++ b/plaid-cli/internal/cli/bank-transfer.go
@@ -0,0 +1,608 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newBankTransferCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "bank-transfer",
+		Short: "Manage bank transfer",
+	}
+
+	cmd.AddCommand(newBankTransferBalanceGetCmd(flags))
+	cmd.AddCommand(newBankTransferCancelCmd(flags))
+	cmd.AddCommand(newBankTransferCreateCmd(flags))
+	cmd.AddCommand(newBankTransferEventListCmd(flags))
+	cmd.AddCommand(newBankTransferEventSyncCmd(flags))
+	cmd.AddCommand(newBankTransferGetCmd(flags))
+	cmd.AddCommand(newBankTransferListCmd(flags))
+	cmd.AddCommand(newBankTransferMigrateAccountCmd(flags))
+	cmd.AddCommand(newBankTransferSweepGetCmd(flags))
+	cmd.AddCommand(newBankTransferSweepListCmd(flags))
+	return cmd
+}
+
+func newBankTransferBalanceGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyOriginationAccountId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "balance-get",
+		Short: "Get balance of your Bank Transfer account",
+		Example: "  plaid-cli bank-transfer balance-get",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/bank_transfer/balance/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyOriginationAccountId != "" {
+				body["origination_account_id"] = bodyOriginationAccountId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyOriginationAccountId, "origination-account-id", "", "If multiple origination accounts are available, `origination_account_id` must be used to specify the account for...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newBankTransferCancelCmd(flags *rootFlags) *cobra.Command {
+	var bodyBankTransferId string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "cancel",
+		Short: "Cancel a bank transfer",
+		Example: "  plaid-cli bank-transfer cancel --bank-transfer-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/bank_transfer/cancel"
+			body := map[string]any{}
+			if bodyBankTransferId != "" {
+				body["bank_transfer_id"] = bodyBankTransferId
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyBankTransferId, "bank-transfer-id", "", "Plaid’s unique identifier for a bank transfer.")
+	_ = cmd.MarkFlagRequired("bank-transfer-id")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newBankTransferCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyAccountId string
+	var bodyAchClass string
+	var bodyAmount string
+	var bodyClientId string
+	var bodyCustomTag string
+	var bodyDescription string
+	var bodyIdempotencyKey string
+	var bodyIsoCurrencyCode string
+	var bodyNetwork string
+	var bodyOriginationAccountId string
+	var bodySecret string
+	var bodyType string
+
+	cmd := &cobra.Command{
+		Use:   "create",
+		Short: "Create a bank transfer",
+		Example: "  plaid-cli bank-transfer create --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/bank_transfer/create"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyAccountId != "" {
+				body["account_id"] = bodyAccountId
+			}
+			if bodyAchClass != "" {
+				body["ach_class"] = bodyAchClass
+			}
+			if bodyAmount != "" {
+				body["amount"] = bodyAmount
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCustomTag != "" {
+				body["custom_tag"] = bodyCustomTag
+			}
+			if bodyDescription != "" {
+				body["description"] = bodyDescription
+			}
+			if bodyIdempotencyKey != "" {
+				body["idempotency_key"] = bodyIdempotencyKey
+			}
+			if bodyIsoCurrencyCode != "" {
+				body["iso_currency_code"] = bodyIsoCurrencyCode
+			}
+			if bodyNetwork != "" {
+				body["network"] = bodyNetwork
+			}
+			if bodyOriginationAccountId != "" {
+				body["origination_account_id"] = bodyOriginationAccountId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyType != "" {
+				body["type"] = bodyType
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The Plaid `access_token` for the account that will be debited or credited.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyAccountId, "account-id", "", "The Plaid `account_id` for the account that will be debited or credited.")
+	_ = cmd.MarkFlagRequired("account-id")
+	cmd.Flags().StringVar(&bodyAchClass, "ach-class", "", "Specifies the use case of the transfer. Required for transfers on an ACH network. For more details, see [ACH SEC...")
+	cmd.Flags().StringVar(&bodyAmount, "amount", "", "The amount of the bank transfer (decimal string with two digits of precision e.g. '10.00').")
+	_ = cmd.MarkFlagRequired("amount")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyCustomTag, "custom-tag", "", "An arbitrary string provided by the client for storage with the bank transfer. May be up to 100 characters.")
+	cmd.Flags().StringVar(&bodyDescription, "description", "", "The transfer description. Maximum of 10 characters.")
+	_ = cmd.MarkFlagRequired("description")
+	cmd.Flags().StringVar(&bodyIdempotencyKey, "idempotency-key", "", "A random key provided by the client, per unique bank transfer. Maximum of 50 characters. The API supports...")
+	_ = cmd.MarkFlagRequired("idempotency-key")
+	cmd.Flags().StringVar(&bodyIsoCurrencyCode, "iso-currency-code", "", "The currency of the transfer amount – should be set to 'USD'.")
+	_ = cmd.MarkFlagRequired("iso-currency-code")
+	cmd.Flags().StringVar(&bodyNetwork, "network", "", "The network or rails used for the transfer. Valid options are `ach`, `same-day-ach`, or `wire`.")
+	_ = cmd.MarkFlagRequired("network")
+	cmd.Flags().StringVar(&bodyOriginationAccountId, "origination-account-id", "", "Plaid’s unique identifier for the origination account for this transfer. If you have more than one origination...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyType, "type", "", "The type of bank transfer. This will be either `debit` or `credit`. A `debit` indicates a transfer of money into the...")
+	_ = cmd.MarkFlagRequired("type")
+
+	return cmd
+}
+
+func newBankTransferEventListCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccountId string
+	var bodyBankTransferId string
+	var bodyBankTransferType string
+	var bodyClientId string
+	var bodyCount int
+	var bodyDirection string
+	var bodyEndDate string
+	var bodyOffset int
+	var bodyOriginationAccountId string
+	var bodySecret string
+	var bodyStartDate string
+
+	cmd := &cobra.Command{
+		Use:   "event-list",
+		Short: "List bank transfer events",
+		Example: "  plaid-cli bank-transfer event-list",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/bank_transfer/event/list"
+			body := map[string]any{}
+			if bodyAccountId != "" {
+				body["account_id"] = bodyAccountId
+			}
+			if bodyBankTransferId != "" {
+				body["bank_transfer_id"] = bodyBankTransferId
+			}
+			if bodyBankTransferType != "" {
+				body["bank_transfer_type"] = bodyBankTransferType
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCount != 0 {
+				body["count"] = bodyCount
+			}
+			if bodyDirection != "" {
+				body["direction"] = bodyDirection
+			}
+			if bodyEndDate != "" {
+				body["end_date"] = bodyEndDate
+			}
+			if bodyOffset != 0 {
+				body["offset"] = bodyOffset
+			}
+			if bodyOriginationAccountId != "" {
+				body["origination_account_id"] = bodyOriginationAccountId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyStartDate != "" {
+				body["start_date"] = bodyStartDate
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccountId, "account-id", "", "The account ID to get events for all transactions to/from an account.")
+	cmd.Flags().StringVar(&bodyBankTransferId, "bank-transfer-id", "", "Plaid’s unique identifier for a bank transfer.")
+	cmd.Flags().StringVar(&bodyBankTransferType, "bank-transfer-type", "", "The type of bank transfer. This will be either `debit` or `credit`. A `debit` indicates a transfer of money into...")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().IntVar(&bodyCount, "count", 25, "The maximum number of bank transfer events to return. If the number of events matching the above parameters is...")
+	cmd.Flags().StringVar(&bodyDirection, "direction", "", "Indicates the direction of the transfer: `outbound`: for API-initiated transfers `inbound`: for payments received by...")
+	cmd.Flags().StringVar(&bodyEndDate, "end-date", "", "The end datetime of bank transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)")
+	cmd.Flags().IntVar(&bodyOffset, "offset", 0, "The offset into the list of bank transfer events. When `count`=25 and `offset`=0, the first 25 events will be...")
+	cmd.Flags().StringVar(&bodyOriginationAccountId, "origination-account-id", "", "The origination account ID to get events for transfers from a specific origination account.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyStartDate, "start-date", "", "The start datetime of bank transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)")
+
+	return cmd
+}
+
+func newBankTransferEventSyncCmd(flags *rootFlags) *cobra.Command {
+	var bodyAfterId int
+	var bodyClientId string
+	var bodyCount int
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "event-sync",
+		Short: "Sync bank transfer events",
+		Example: "  plaid-cli bank-transfer event-sync",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/bank_transfer/event/sync"
+			body := map[string]any{}
+			if bodyAfterId != 0 {
+				body["after_id"] = bodyAfterId
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCount != 0 {
+				body["count"] = bodyCount
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().IntVar(&bodyAfterId, "after-id", 0, "The latest (largest) `event_id` fetched via the sync endpoint, or 0 initially.")
+	_ = cmd.MarkFlagRequired("after-id")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().IntVar(&bodyCount, "count", 25, "The maximum number of bank transfer events to return.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newBankTransferGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyBankTransferId string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "get",
+		Short: "Retrieve a bank transfer",
+		Example: "  plaid-cli bank-transfer get --bank-transfer-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/bank_transfer/get"
+			body := map[string]any{}
+			if bodyBankTransferId != "" {
+				body["bank_transfer_id"] = bodyBankTransferId
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyBankTransferId, "bank-transfer-id", "", "Plaid’s unique identifier for a bank transfer.")
+	_ = cmd.MarkFlagRequired("bank-transfer-id")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newBankTransferListCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyCount int
+	var bodyDirection string
+	var bodyEndDate string
+	var bodyOffset int
+	var bodyOriginationAccountId string
+	var bodySecret string
+	var bodyStartDate string
+
+	cmd := &cobra.Command{
+		Use:   "list",
+		Short: "List bank transfers",
+		Example: "  plaid-cli bank-transfer list",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/bank_transfer/list"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCount != 0 {
+				body["count"] = bodyCount
+			}
+			if bodyDirection != "" {
+				body["direction"] = bodyDirection
+			}
+			if bodyEndDate != "" {
+				body["end_date"] = bodyEndDate
+			}
+			if bodyOffset != 0 {
+				body["offset"] = bodyOffset
+			}
+			if bodyOriginationAccountId != "" {
+				body["origination_account_id"] = bodyOriginationAccountId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyStartDate != "" {
+				body["start_date"] = bodyStartDate
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().IntVar(&bodyCount, "count", 25, "The maximum number of bank transfers to return.")
+	cmd.Flags().StringVar(&bodyDirection, "direction", "", "Indicates the direction of the transfer: `outbound` for API-initiated transfers, or `inbound` for payments received...")
+	cmd.Flags().StringVar(&bodyEndDate, "end-date", "", "The end datetime of bank transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)")
+	cmd.Flags().IntVar(&bodyOffset, "offset", 0, "The number of bank transfers to skip before returning results.")
+	cmd.Flags().StringVar(&bodyOriginationAccountId, "origination-account-id", "", "Filter bank transfers to only those originated through the specified origination account.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyStartDate, "start-date", "", "The start datetime of bank transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)")
+
+	return cmd
+}
+
+func newBankTransferMigrateAccountCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccountNumber string
+	var bodyAccountType string
+	var bodyClientId string
+	var bodyRoutingNumber string
+	var bodySecret string
+	var bodyWireRoutingNumber string
+
+	cmd := &cobra.Command{
+		Use:   "migrate-account",
+		Short: "Migrate account into Bank Transfers",
+		Example: "  plaid-cli bank-transfer migrate-account --account-number value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/bank_transfer/migrate_account"
+			body := map[string]any{}
+			if bodyAccountNumber != "" {
+				body["account_number"] = bodyAccountNumber
+			}
+			if bodyAccountType != "" {
+				body["account_type"] = bodyAccountType
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyRoutingNumber != "" {
+				body["routing_number"] = bodyRoutingNumber
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyWireRoutingNumber != "" {
+				body["wire_routing_number"] = bodyWireRoutingNumber
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccountNumber, "account-number", "", "The user's account number.")
+	_ = cmd.MarkFlagRequired("account-number")
+	cmd.Flags().StringVar(&bodyAccountType, "account-type", "", "The type of the bank account (`checking` or `savings`).")
+	_ = cmd.MarkFlagRequired("account-type")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyRoutingNumber, "routing-number", "", "The user's routing number.")
+	_ = cmd.MarkFlagRequired("routing-number")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyWireRoutingNumber, "wire-routing-number", "", "The user's wire transfer routing number. This is the ABA number; for some institutions, this may differ from the ACH...")
+
+	return cmd
+}
+
+func newBankTransferSweepGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodySweepId string
+
+	cmd := &cobra.Command{
+		Use:   "sweep-get",
+		Short: "Retrieve a sweep",
+		Example: "  plaid-cli bank-transfer sweep-get --sweep-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/bank_transfer/sweep/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodySweepId != "" {
+				body["sweep_id"] = bodySweepId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodySweepId, "sweep-id", "", "Identifier of the sweep.")
+	_ = cmd.MarkFlagRequired("sweep-id")
+
+	return cmd
+}
+
+func newBankTransferSweepListCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyCount int
+	var bodyEndTime string
+	var bodyOriginationAccountId string
+	var bodySecret string
+	var bodyStartTime string
+
+	cmd := &cobra.Command{
+		Use:   "sweep-list",
+		Short: "List sweeps",
+		Example: "  plaid-cli bank-transfer sweep-list",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/bank_transfer/sweep/list"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCount != 0 {
+				body["count"] = bodyCount
+			}
+			if bodyEndTime != "" {
+				body["end_time"] = bodyEndTime
+			}
+			if bodyOriginationAccountId != "" {
+				body["origination_account_id"] = bodyOriginationAccountId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyStartTime != "" {
+				body["start_time"] = bodyStartTime
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().IntVar(&bodyCount, "count", 25, "The maximum number of sweeps to return.")
+	cmd.Flags().StringVar(&bodyEndTime, "end-time", "", "The end `created` datetime of sweeps to return (RFC 3339 format).")
+	cmd.Flags().StringVar(&bodyOriginationAccountId, "origination-account-id", "", "If multiple origination accounts are available, `origination_account_id` must be used to specify the account that...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyStartTime, "start-time", "", "The start `created` datetime of sweeps to return (RFC 3339 format).")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/beacon.go b/plaid-cli/internal/cli/beacon.go
new file mode 100644
index 00000000..7674d956
--- /dev/null
+++ b/plaid-cli/internal/cli/beacon.go
@@ -0,0 +1,647 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newBeaconCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "beacon",
+		Short: "Manage beacon",
+	}
+
+	cmd.AddCommand(newBeaconAccountRiskEvaluateCmd(flags))
+	cmd.AddCommand(newBeaconDuplicateGetCmd(flags))
+	cmd.AddCommand(newBeaconReportCreateCmd(flags))
+	cmd.AddCommand(newBeaconReportGetCmd(flags))
+	cmd.AddCommand(newBeaconReportListCmd(flags))
+	cmd.AddCommand(newBeaconReportSyndicationGetCmd(flags))
+	cmd.AddCommand(newBeaconReportSyndicationListCmd(flags))
+	cmd.AddCommand(newBeaconUserAccountInsightsGetCmd(flags))
+	cmd.AddCommand(newBeaconUserCreateCmd(flags))
+	cmd.AddCommand(newBeaconUserGetCmd(flags))
+	cmd.AddCommand(newBeaconUserHistoryListCmd(flags))
+	cmd.AddCommand(newBeaconUserReviewCmd(flags))
+	cmd.AddCommand(newBeaconUserUpdateCmd(flags))
+	return cmd
+}
+
+func newBeaconAccountRiskEvaluateCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientEvaluationId string
+	var bodyClientId string
+	var bodyClientUserId string
+	var bodyEvaluateTime string
+	var bodyEvaluationReason string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "account-risk-evaluate",
+		Aliases: []string{"create"},
+		Short: "Evaluate risk of a bank account",
+		Example: "  plaid-cli beacon account-risk-evaluate",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/beacon/account_risk/v1/evaluate"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientEvaluationId != "" {
+				body["client_evaluation_id"] = bodyClientEvaluationId
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyClientUserId != "" {
+				body["client_user_id"] = bodyClientUserId
+			}
+			if bodyEvaluateTime != "" {
+				body["evaluate_time"] = bodyEvaluateTime
+			}
+			if bodyEvaluationReason != "" {
+				body["evaluation_reason"] = bodyEvaluationReason
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	cmd.Flags().StringVar(&bodyClientEvaluationId, "client-evaluation-id", "", "Unique identifier of what you are looking to evaluate (account add, information change, etc.) to allow us to tie the...")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyClientUserId, "client-user-id", "", "A unique ID that identifies the end user in your system. This ID is used to correlate requests by a user with...")
+	cmd.Flags().StringVar(&bodyEvaluateTime, "evaluate-time", "", "The time the event for evaluation has occurred. Populate this field for backfilling data. If you don’t populate...")
+	cmd.Flags().StringVar(&bodyEvaluationReason, "evaluation-reason", "", "Description of the reason you want to evaluate risk. `ONBOARDING`: user links a first bank account as part of the...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newBeaconDuplicateGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyBeaconDuplicateId string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "duplicate-get",
+		Short: "Get a Beacon Duplicate",
+		Example: "  plaid-cli beacon duplicate-get --beacon-duplicate-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/beacon/duplicate/get"
+			body := map[string]any{}
+			if bodyBeaconDuplicateId != "" {
+				body["beacon_duplicate_id"] = bodyBeaconDuplicateId
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyBeaconDuplicateId, "beacon-duplicate-id", "", "ID of the associated Beacon Duplicate.")
+	_ = cmd.MarkFlagRequired("beacon-duplicate-id")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newBeaconReportCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyBeaconUserId string
+	var bodyClientId string
+	var bodyFraudDate string
+	var bodySecret string
+	var bodyType string
+
+	cmd := &cobra.Command{
+		Use:   "report-create",
+		Short: "Create a Beacon Report",
+		Example: "  plaid-cli beacon report-create --beacon-user-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/beacon/report/create"
+			body := map[string]any{}
+			if bodyBeaconUserId != "" {
+				body["beacon_user_id"] = bodyBeaconUserId
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyFraudDate != "" {
+				body["fraud_date"] = bodyFraudDate
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyType != "" {
+				body["type"] = bodyType
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyBeaconUserId, "beacon-user-id", "", "ID of the associated Beacon User.")
+	_ = cmd.MarkFlagRequired("beacon-user-id")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyFraudDate, "fraud-date", "", "A date in the format YYYY-MM-DD (RFC 3339 Section 5.6).")
+	_ = cmd.MarkFlagRequired("fraud-date")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyType, "type", "", "The type of Beacon Report. `first_party`: If this is the same individual as the one who submitted the KYC. `stolen`:...")
+	_ = cmd.MarkFlagRequired("type")
+
+	return cmd
+}
+
+func newBeaconReportGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyBeaconReportId string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "report-get",
+		Short: "Get a Beacon Report",
+		Example: "  plaid-cli beacon report-get --beacon-report-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/beacon/report/get"
+			body := map[string]any{}
+			if bodyBeaconReportId != "" {
+				body["beacon_report_id"] = bodyBeaconReportId
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyBeaconReportId, "beacon-report-id", "", "ID of the associated Beacon Report.")
+	_ = cmd.MarkFlagRequired("beacon-report-id")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newBeaconReportListCmd(flags *rootFlags) *cobra.Command {
+	var bodyBeaconUserId string
+	var bodyClientId string
+	var bodyCursor string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "report-list",
+		Short: "List Beacon Reports for a Beacon User",
+		Example: "  plaid-cli beacon report-list --beacon-user-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/beacon/report/list"
+			body := map[string]any{}
+			if bodyBeaconUserId != "" {
+				body["beacon_user_id"] = bodyBeaconUserId
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCursor != "" {
+				body["cursor"] = bodyCursor
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyBeaconUserId, "beacon-user-id", "", "ID of the associated Beacon User.")
+	_ = cmd.MarkFlagRequired("beacon-user-id")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyCursor, "cursor", "", "An identifier that determines which page of results you receive.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newBeaconReportSyndicationGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyBeaconReportSyndicationId string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "report-syndication-get",
+		Short: "Get a Beacon Report Syndication",
+		Example: "  plaid-cli beacon report-syndication-get --beacon-report-syndication-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/beacon/report_syndication/get"
+			body := map[string]any{}
+			if bodyBeaconReportSyndicationId != "" {
+				body["beacon_report_syndication_id"] = bodyBeaconReportSyndicationId
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyBeaconReportSyndicationId, "beacon-report-syndication-id", "", "ID of the associated Beacon Report Syndication.")
+	_ = cmd.MarkFlagRequired("beacon-report-syndication-id")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newBeaconReportSyndicationListCmd(flags *rootFlags) *cobra.Command {
+	var bodyBeaconUserId string
+	var bodyClientId string
+	var bodyCursor string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "report-syndication-list",
+		Short: "List Beacon Report Syndications for a Beacon User",
+		Example: "  plaid-cli beacon report-syndication-list --beacon-user-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/beacon/report_syndication/list"
+			body := map[string]any{}
+			if bodyBeaconUserId != "" {
+				body["beacon_user_id"] = bodyBeaconUserId
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCursor != "" {
+				body["cursor"] = bodyCursor
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyBeaconUserId, "beacon-user-id", "", "ID of the associated Beacon User.")
+	_ = cmd.MarkFlagRequired("beacon-user-id")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyCursor, "cursor", "", "An identifier that determines which page of results you receive.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newBeaconUserAccountInsightsGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyBeaconUserId string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "user-account-insights-get",
+		Short: "Get Account Insights for a Beacon User",
+		Example: "  plaid-cli beacon user-account-insights-get --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/beacon/user/account_insights/get"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyBeaconUserId != "" {
+				body["beacon_user_id"] = bodyBeaconUserId
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyBeaconUserId, "beacon-user-id", "", "ID of the associated Beacon User.")
+	_ = cmd.MarkFlagRequired("beacon-user-id")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newBeaconUserCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyClientUserId string
+	var bodyProgramId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "user-create",
+		Short: "Create a Beacon User",
+		Example: "  plaid-cli beacon user-create --client-user-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/beacon/user/create"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyClientUserId != "" {
+				body["client_user_id"] = bodyClientUserId
+			}
+			if bodyProgramId != "" {
+				body["program_id"] = bodyProgramId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyClientUserId, "client-user-id", "", "A unique ID that identifies the end user in your system. Either a `user_id` or the `client_user_id` must be...")
+	_ = cmd.MarkFlagRequired("client-user-id")
+	cmd.Flags().StringVar(&bodyProgramId, "program-id", "", "ID of the associated Beacon Program.")
+	_ = cmd.MarkFlagRequired("program-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newBeaconUserGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyBeaconUserId string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "user-get",
+		Short: "Get a Beacon User",
+		Example: "  plaid-cli beacon user-get --beacon-user-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/beacon/user/get"
+			body := map[string]any{}
+			if bodyBeaconUserId != "" {
+				body["beacon_user_id"] = bodyBeaconUserId
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyBeaconUserId, "beacon-user-id", "", "ID of the associated Beacon User.")
+	_ = cmd.MarkFlagRequired("beacon-user-id")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newBeaconUserHistoryListCmd(flags *rootFlags) *cobra.Command {
+	var bodyBeaconUserId string
+	var bodyClientId string
+	var bodyCursor string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "user-history-list",
+		Short: "List a Beacon User's history",
+		Example: "  plaid-cli beacon user-history-list --beacon-user-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/beacon/user/history/list"
+			body := map[string]any{}
+			if bodyBeaconUserId != "" {
+				body["beacon_user_id"] = bodyBeaconUserId
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCursor != "" {
+				body["cursor"] = bodyCursor
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyBeaconUserId, "beacon-user-id", "", "ID of the associated Beacon User.")
+	_ = cmd.MarkFlagRequired("beacon-user-id")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyCursor, "cursor", "", "An identifier that determines which page of results you receive.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newBeaconUserReviewCmd(flags *rootFlags) *cobra.Command {
+	var bodyBeaconUserId string
+	var bodyClientId string
+	var bodySecret string
+	var bodyStatus string
+
+	cmd := &cobra.Command{
+		Use:   "user-review",
+		Short: "Review a Beacon User",
+		Example: "  plaid-cli beacon user-review --beacon-user-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/beacon/user/review"
+			body := map[string]any{}
+			if bodyBeaconUserId != "" {
+				body["beacon_user_id"] = bodyBeaconUserId
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyStatus != "" {
+				body["status"] = bodyStatus
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyBeaconUserId, "beacon-user-id", "", "ID of the associated Beacon User.")
+	_ = cmd.MarkFlagRequired("beacon-user-id")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyStatus, "status", "", "A status of a Beacon User. `rejected`: The Beacon User has been rejected for fraud. Users can be automatically or...")
+	_ = cmd.MarkFlagRequired("status")
+
+	return cmd
+}
+
+func newBeaconUserUpdateCmd(flags *rootFlags) *cobra.Command {
+	var bodyBeaconUserId string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "user-update",
+		Short: "Update the identity data of a Beacon User",
+		Example: "  plaid-cli beacon user-update --beacon-user-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/beacon/user/update"
+			body := map[string]any{}
+			if bodyBeaconUserId != "" {
+				body["beacon_user_id"] = bodyBeaconUserId
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyBeaconUserId, "beacon-user-id", "", "ID of the associated Beacon User.")
+	_ = cmd.MarkFlagRequired("beacon-user-id")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/beta.go b/plaid-cli/internal/cli/beta.go
new file mode 100644
index 00000000..840128e6
--- /dev/null
+++ b/plaid-cli/internal/cli/beta.go
@@ -0,0 +1,552 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newBetaCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "beta",
+		Short: "Manage beta",
+	}
+
+	cmd.AddCommand(newBetaCreditBankEmploymentGetCmd(flags))
+	cmd.AddCommand(newBetaEwaReportV1GetCmd(flags))
+	cmd.AddCommand(newBetaPartnerCustomerV1CreateCmd(flags))
+	cmd.AddCommand(newBetaPartnerCustomerV1EnableCmd(flags))
+	cmd.AddCommand(newBetaPartnerCustomerV1GetCmd(flags))
+	cmd.AddCommand(newBetaPartnerCustomerV1UpdateCmd(flags))
+	cmd.AddCommand(newBetaTransactionsEnhanceCmd(flags))
+	cmd.AddCommand(newBetaTransactionsRulesCreateCmd(flags))
+	cmd.AddCommand(newBetaTransactionsRulesListCmd(flags))
+	cmd.AddCommand(newBetaTransactionsRulesRemoveCmd(flags))
+	cmd.AddCommand(newBetaTransactionsUserInsightsGetCmd(flags))
+	return cmd
+}
+
+func newBetaCreditBankEmploymentGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "credit-bank-employment-get",
+		Aliases: []string{"create"},
+		Short: "Retrieve information from the bank accounts used for employment verification",
+		Example: "  plaid-cli beta credit-bank-employment-get --user-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/beta/credit/v1/bank_employment/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+	_ = cmd.MarkFlagRequired("user-token")
+
+	return cmd
+}
+
+func newBetaEwaReportV1GetCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "ewa-report-v1-get",
+		Short: "Get EWA Score Report",
+		Example: "  plaid-cli beta ewa-report-v1-get --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/beta/ewa_report/v1/get"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newBetaPartnerCustomerV1CreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyApplicationName string
+	var bodyClientId string
+	var bodyCompanyName string
+	var bodyCreateLinkCustomization bool
+	var bodyIsDiligenceAttested bool
+	var bodyLegalEntityName string
+	var bodyLogo string
+	var bodySecret string
+	var bodyWebsite string
+
+	cmd := &cobra.Command{
+		Use:   "partner-customer-v1-create",
+		Short: "Creates a new end customer for a Plaid reseller.",
+		Example: "  plaid-cli beta partner-customer-v1-create --application-name value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/beta/partner/customer/v1/create"
+			body := map[string]any{}
+			if bodyApplicationName != "" {
+				body["application_name"] = bodyApplicationName
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCompanyName != "" {
+				body["company_name"] = bodyCompanyName
+			}
+			if bodyCreateLinkCustomization != false {
+				body["create_link_customization"] = bodyCreateLinkCustomization
+			}
+			if bodyIsDiligenceAttested != false {
+				body["is_diligence_attested"] = bodyIsDiligenceAttested
+			}
+			if bodyLegalEntityName != "" {
+				body["legal_entity_name"] = bodyLegalEntityName
+			}
+			if bodyLogo != "" {
+				body["logo"] = bodyLogo
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyWebsite != "" {
+				body["website"] = bodyWebsite
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyApplicationName, "application-name", "", "The name of the end customer's application. This will be shown to end users when they go through the Plaid Link...")
+	_ = cmd.MarkFlagRequired("application-name")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyCompanyName, "company-name", "", "The company name of the end customer being created. This will be used to display the end customer in the Plaid...")
+	_ = cmd.MarkFlagRequired("company-name")
+	cmd.Flags().BoolVar(&bodyCreateLinkCustomization, "create-link-customization", false, "If `true`, the end customer's default Link customization will be set to match the partner's. You can always change...")
+	cmd.Flags().BoolVar(&bodyIsDiligenceAttested, "is-diligence-attested", false, "Denotes whether or not the partner has completed attestation of diligence for the end customer to be created.")
+	cmd.Flags().StringVar(&bodyLegalEntityName, "legal-entity-name", "", "The end customer's legal name. This will be shared with financial institutions as part of the OAuth registration...")
+	cmd.Flags().StringVar(&bodyLogo, "logo", "", "Base64-encoded representation of the end customer's logo. Must be a PNG of size 1024x1024 under 4MB. The logo will...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyWebsite, "website", "", "The end customer's website.")
+	_ = cmd.MarkFlagRequired("website")
+
+	return cmd
+}
+
+func newBetaPartnerCustomerV1EnableCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyEndCustomerClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "partner-customer-v1-enable",
+		Short: "Enables a Plaid reseller's end customer in the Production environment.",
+		Example: "  plaid-cli beta partner-customer-v1-enable --end-customer-client-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/beta/partner/customer/v1/enable"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyEndCustomerClientId != "" {
+				body["end_customer_client_id"] = bodyEndCustomerClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyEndCustomerClientId, "end-customer-client-id", "", "End customer client id")
+	_ = cmd.MarkFlagRequired("end-customer-client-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newBetaPartnerCustomerV1GetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyEndCustomerClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "partner-customer-v1-get",
+		Short: "Retrieves the details of a Plaid reseller's end customer.",
+		Example: "  plaid-cli beta partner-customer-v1-get --end-customer-client-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/beta/partner/customer/v1/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyEndCustomerClientId != "" {
+				body["end_customer_client_id"] = bodyEndCustomerClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyEndCustomerClientId, "end-customer-client-id", "", "End customer client id")
+	_ = cmd.MarkFlagRequired("end-customer-client-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newBetaPartnerCustomerV1UpdateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyEndCustomerClientId string
+	var bodyLegalEntityName string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "partner-customer-v1-update",
+		Short: "Updates an existing end customer.",
+		Example: "  plaid-cli beta partner-customer-v1-update --end-customer-client-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/beta/partner/customer/v1/update"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyEndCustomerClientId != "" {
+				body["end_customer_client_id"] = bodyEndCustomerClientId
+			}
+			if bodyLegalEntityName != "" {
+				body["legal_entity_name"] = bodyLegalEntityName
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyEndCustomerClientId, "end-customer-client-id", "", "End customer client id")
+	_ = cmd.MarkFlagRequired("end-customer-client-id")
+	cmd.Flags().StringVar(&bodyLegalEntityName, "legal-entity-name", "", "Legal entity name")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newBetaTransactionsEnhanceCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccountType string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "transactions-enhance",
+		Short: "enhance locally-held transaction data",
+		Example: "  plaid-cli beta transactions-enhance --account-type value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/beta/transactions/v1/enhance"
+			body := map[string]any{}
+			if bodyAccountType != "" {
+				body["account_type"] = bodyAccountType
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccountType, "account-type", "", "The type of account for the requested transactions (`depository` or `credit`).")
+	_ = cmd.MarkFlagRequired("account-type")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newBetaTransactionsRulesCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyClientUserId string
+	var bodyPfcDetailedCategory string
+	var bodyPfcPrimaryCategory string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "transactions-rules-create",
+		Short: "Create transaction category rule",
+		Example: "  plaid-cli beta transactions-rules-create --client-user-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/beta/transactions/rules/v1/create"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyClientUserId != "" {
+				body["client_user_id"] = bodyClientUserId
+			}
+			if bodyPfcDetailedCategory != "" {
+				body["pfc_detailed_category"] = bodyPfcDetailedCategory
+			}
+			if bodyPfcPrimaryCategory != "" {
+				body["pfc_primary_category"] = bodyPfcPrimaryCategory
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyClientUserId, "client-user-id", "", "A unique ID representing the end user. This ID is used to associate rules with a specific user.")
+	_ = cmd.MarkFlagRequired("client-user-id")
+	cmd.Flags().StringVar(&bodyPfcDetailedCategory, "pfc-detailed-category", "", "A personal finance detailed category. See the [taxonomy csv file](https://plaid.com/documents/pfc-taxonomy-all.csv)...")
+	_ = cmd.MarkFlagRequired("pfc-detailed-category")
+	cmd.Flags().StringVar(&bodyPfcPrimaryCategory, "pfc-primary-category", "", "A personal finance primary category. See the [taxonomy csv file](https://plaid.com/documents/pfc-taxonomy-all.csv)...")
+	_ = cmd.MarkFlagRequired("pfc-primary-category")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newBetaTransactionsRulesListCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyClientUserId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "transactions-rules-list",
+		Short: "Return a list of rules created for the Item associated with the access token.",
+		Example: "  plaid-cli beta transactions-rules-list --client-user-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/beta/transactions/rules/v1/list"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyClientUserId != "" {
+				body["client_user_id"] = bodyClientUserId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyClientUserId, "client-user-id", "", "A unique ID representing the end user whose rules should be listed.")
+	_ = cmd.MarkFlagRequired("client-user-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newBetaTransactionsRulesRemoveCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyClientUserId string
+	var bodyRuleId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "transactions-rules-remove",
+		Short: "Remove transaction rule",
+		Example: "  plaid-cli beta transactions-rules-remove --client-user-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/beta/transactions/rules/v1/remove"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyClientUserId != "" {
+				body["client_user_id"] = bodyClientUserId
+			}
+			if bodyRuleId != "" {
+				body["rule_id"] = bodyRuleId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyClientUserId, "client-user-id", "", "A unique ID representing the end user the rule belongs to.")
+	_ = cmd.MarkFlagRequired("client-user-id")
+	cmd.Flags().StringVar(&bodyRuleId, "rule-id", "", "A rule's unique identifier")
+	_ = cmd.MarkFlagRequired("rule-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newBetaTransactionsUserInsightsGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyClientUserId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "transactions-user-insights-get",
+		Short: "Obtain user insights based on transactions sent through /transactions/enrich",
+		Example: "  plaid-cli beta transactions-user-insights-get --client-user-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/beta/transactions/user_insights/v1/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyClientUserId != "" {
+				body["client_user_id"] = bodyClientUserId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyClientUserId, "client-user-id", "", "A unique client-provided `client_user_id` to retrieve insights for.")
+	_ = cmd.MarkFlagRequired("client-user-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/business-verification.go b/plaid-cli/internal/cli/business-verification.go
new file mode 100644
index 00000000..be8f61b9
--- /dev/null
+++ b/plaid-cli/internal/cli/business-verification.go
@@ -0,0 +1,109 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newBusinessVerificationCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "business-verification",
+		Short: "Manage business verification",
+	}
+
+	cmd.AddCommand(newBusinessVerificationCreateCmd(flags))
+	cmd.AddCommand(newBusinessVerificationGetCmd(flags))
+	return cmd
+}
+
+func newBusinessVerificationCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyClientUserId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "create",
+		Short: "Create a business verification",
+		Example: "  plaid-cli business-verification create --client-user-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/business_verification/create"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyClientUserId != "" {
+				body["client_user_id"] = bodyClientUserId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyClientUserId, "client-user-id", "", "A unique ID that identifies the end user in your system. Either a `user_id` or the `client_user_id` must be...")
+	_ = cmd.MarkFlagRequired("client-user-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newBusinessVerificationGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyBusinessVerificationId string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "get",
+		Short: "Get a business verification",
+		Example: "  plaid-cli business-verification get --business-verification-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/business_verification/get"
+			body := map[string]any{}
+			if bodyBusinessVerificationId != "" {
+				body["business_verification_id"] = bodyBusinessVerificationId
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyBusinessVerificationId, "business-verification-id", "", "ID of the associated business verification.")
+	_ = cmd.MarkFlagRequired("business-verification-id")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/cashflow-report.go b/plaid-cli/internal/cli/cashflow-report.go
new file mode 100644
index 00000000..185bfba7
--- /dev/null
+++ b/plaid-cli/internal/cli/cashflow-report.go
@@ -0,0 +1,228 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newCashflowReportCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "cashflow-report",
+		Short: "Manage cashflow report",
+	}
+
+	cmd.AddCommand(newCashflowReportGetCmd(flags))
+	cmd.AddCommand(newCashflowReportInsightsGetCmd(flags))
+	cmd.AddCommand(newCashflowReportRefreshCmd(flags))
+	cmd.AddCommand(newCashflowReportTransactionsGetCmd(flags))
+	return cmd
+}
+
+func newCashflowReportGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodyCount int
+	var bodyCursor string
+	var bodyDaysRequested int
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "get",
+		Aliases: []string{"create"},
+		Short: "Gets transaction data in `cashflow_report`",
+		Example: "  plaid-cli cashflow-report get --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/cashflow_report/get"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCount != 0 {
+				body["count"] = bodyCount
+			}
+			if bodyCursor != "" {
+				body["cursor"] = bodyCursor
+			}
+			if bodyDaysRequested != 0 {
+				body["days_requested"] = bodyDaysRequested
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().IntVar(&bodyCount, "count", 100, "Number of transactions to fetch per call")
+	cmd.Flags().StringVar(&bodyCursor, "cursor", "", "The cursor value represents the last update requested. Pass in the empty string '' in the first call.")
+	cmd.Flags().IntVar(&bodyDaysRequested, "days-requested", 0, "Number of days to retrieve transactions data for (1 to 730)")
+	_ = cmd.MarkFlagRequired("days-requested")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newCashflowReportInsightsGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "insights-get",
+		Short: "Gets insights data in Cashflow Report",
+		Example: "  plaid-cli cashflow-report insights-get --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/cashflow_report/insights/get"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newCashflowReportRefreshCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodyDaysRequested int
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "refresh",
+		Short: "Refresh transaction data in `cashflow_report`",
+		Example: "  plaid-cli cashflow-report refresh --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/cashflow_report/refresh"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyDaysRequested != 0 {
+				body["days_requested"] = bodyDaysRequested
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().IntVar(&bodyDaysRequested, "days-requested", 365, "Number of days to retrieve transactions data for (1 to 730)")
+	_ = cmd.MarkFlagRequired("days-requested")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newCashflowReportTransactionsGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodyCount int
+	var bodyCursor string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "transactions-get",
+		Short: "Gets transaction data in cashflow_report",
+		Example: "  plaid-cli cashflow-report transactions-get --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/cashflow_report/transactions/get"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCount != 0 {
+				body["count"] = bodyCount
+			}
+			if bodyCursor != "" {
+				body["cursor"] = bodyCursor
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().IntVar(&bodyCount, "count", 100, "Number of transactions to fetch per call")
+	cmd.Flags().StringVar(&bodyCursor, "cursor", "", "The cursor value represents the last update requested. Pass in the empty string '' in the first call.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/categories.go b/plaid-cli/internal/cli/categories.go
new file mode 100644
index 00000000..2b06c3bd
--- /dev/null
+++ b/plaid-cli/internal/cli/categories.go
@@ -0,0 +1,51 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newCategoriesCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "categories",
+		Short: "Manage categories",
+	}
+
+	cmd.AddCommand(newCategoriesGetCmd(flags))
+	return cmd
+}
+
+func newCategoriesGetCmd(flags *rootFlags) *cobra.Command {
+
+	cmd := &cobra.Command{
+		Use:   "get",
+		Aliases: []string{"create"},
+		Short: "(Deprecated) Get legacy categories",
+		Example: "  plaid-cli categories get",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/categories/get"
+			body := map[string]any{}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/consent.go b/plaid-cli/internal/cli/consent.go
new file mode 100644
index 00000000..601fe88a
--- /dev/null
+++ b/plaid-cli/internal/cli/consent.go
@@ -0,0 +1,67 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newConsentCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "consent",
+		Short: "Manage consent",
+	}
+
+	cmd.AddCommand(newConsentEventsGetCmd(flags))
+	return cmd
+}
+
+func newConsentEventsGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "events-get",
+		Aliases: []string{"create"},
+		Short: "List a historical log of item consent events",
+		Example: "  plaid-cli consent events-get --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/consent/events/get"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/consumer-report.go b/plaid-cli/internal/cli/consumer-report.go
new file mode 100644
index 00000000..2d542456
--- /dev/null
+++ b/plaid-cli/internal/cli/consumer-report.go
@@ -0,0 +1,67 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newConsumerReportCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "consumer-report",
+		Short: "Manage consumer report",
+	}
+
+	cmd.AddCommand(newConsumerReportPdfGetCmd(flags))
+	return cmd
+}
+
+func newConsumerReportPdfGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "pdf-get",
+		Aliases: []string{"create"},
+		Short: "Retrieve a PDF Reports",
+		Example: "  plaid-cli consumer-report pdf-get --user-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/consumer_report/pdf/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+	_ = cmd.MarkFlagRequired("user-token")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/cra.go b/plaid-cli/internal/cli/cra.go
new file mode 100644
index 00000000..b37ee21f
--- /dev/null
+++ b/plaid-cli/internal/cli/cra.go
@@ -0,0 +1,918 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newCraCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "cra",
+		Short: "Manage cra",
+	}
+
+	cmd.AddCommand(newCraCheckReportBaseReportGetCmd(flags))
+	cmd.AddCommand(newCraCheckReportCashflowInsightsGetCmd(flags))
+	cmd.AddCommand(newCraCheckReportCreateCmd(flags))
+	cmd.AddCommand(newCraCheckReportIncomeInsightsGetCmd(flags))
+	cmd.AddCommand(newCraCheckReportLendScoreGetCmd(flags))
+	cmd.AddCommand(newCraCheckReportNetworkInsightsGetCmd(flags))
+	cmd.AddCommand(newCraCheckReportPartnerInsightsGetCmd(flags))
+	cmd.AddCommand(newCraCheckReportPdfGetCmd(flags))
+	cmd.AddCommand(newCraCheckReportVerificationGetCmd(flags))
+	cmd.AddCommand(newCraCheckReportVerificationPdfGetCmd(flags))
+	cmd.AddCommand(newCraLoansApplicationsRegisterCmd(flags))
+	cmd.AddCommand(newCraLoansRegisterCmd(flags))
+	cmd.AddCommand(newCraLoansUnregisterCmd(flags))
+	cmd.AddCommand(newCraLoansUpdateCmd(flags))
+	cmd.AddCommand(newCraMonitoringInsightsGetCmd(flags))
+	cmd.AddCommand(newCraMonitoringInsightsSubscribeCmd(flags))
+	cmd.AddCommand(newCraMonitoringInsightsUnsubscribeCmd(flags))
+	cmd.AddCommand(newCraPartnerInsightsGetCmd(flags))
+	return cmd
+}
+
+func newCraCheckReportBaseReportGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyThirdPartyUserToken string
+	var bodyUserId string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "check-report-base-report-get",
+		Aliases: []string{"create"},
+		Short: "Retrieve a Base Report",
+		Example: "  plaid-cli cra check-report-base-report-get",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/cra/check_report/base_report/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyThirdPartyUserToken != "" {
+				body["third_party_user_token"] = bodyThirdPartyUserToken
+			}
+			if bodyUserId != "" {
+				body["user_id"] = bodyUserId
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyThirdPartyUserToken, "third-party-user-token", "", "The third-party user token associated with the requested User data.")
+	cmd.Flags().StringVar(&bodyUserId, "user-id", "", "A unique user identifier, created by `/user/create`. Integrations that began using `/user/create` after December 10,...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+
+	return cmd
+}
+
+func newCraCheckReportCashflowInsightsGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyThirdPartyUserToken string
+	var bodyUserId string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "check-report-cashflow-insights-get",
+		Short: "Retrieve cash flow insights from your user's banking data",
+		Example: "  plaid-cli cra check-report-cashflow-insights-get",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/cra/check_report/cashflow_insights/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyThirdPartyUserToken != "" {
+				body["third_party_user_token"] = bodyThirdPartyUserToken
+			}
+			if bodyUserId != "" {
+				body["user_id"] = bodyUserId
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyThirdPartyUserToken, "third-party-user-token", "", "The third-party user token associated with the requested User data.")
+	cmd.Flags().StringVar(&bodyUserId, "user-id", "", "A unique user identifier, created by `/user/create`. Integrations that began using `/user/create` after December 10,...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+
+	return cmd
+}
+
+func newCraCheckReportCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyClientReportId string
+	var bodyConsumerReportPermissiblePurpose string
+	var bodyDaysRequested int
+	var bodyDaysRequired int
+	var bodyIncludeInvestments bool
+	var bodySecret string
+	var bodyUserId string
+	var bodyUserToken string
+	var bodyWebhook string
+
+	cmd := &cobra.Command{
+		Use:   "check-report-create",
+		Short: "Refresh or create a Consumer Report",
+		Example: "  plaid-cli cra check-report-create --consumer-report-permissible-purpose value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/cra/check_report/create"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyClientReportId != "" {
+				body["client_report_id"] = bodyClientReportId
+			}
+			if bodyConsumerReportPermissiblePurpose != "" {
+				body["consumer_report_permissible_purpose"] = bodyConsumerReportPermissiblePurpose
+			}
+			if bodyDaysRequested != 0 {
+				body["days_requested"] = bodyDaysRequested
+			}
+			if bodyDaysRequired != 0 {
+				body["days_required"] = bodyDaysRequired
+			}
+			if bodyIncludeInvestments != false {
+				body["include_investments"] = bodyIncludeInvestments
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserId != "" {
+				body["user_id"] = bodyUserId
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			if bodyWebhook != "" {
+				body["webhook"] = bodyWebhook
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyClientReportId, "client-report-id", "", "Client-generated identifier, which can be used by lenders to track loan applications.")
+	cmd.Flags().StringVar(&bodyConsumerReportPermissiblePurpose, "consumer-report-permissible-purpose", "", "Describes the reason you are generating a Consumer Report for this user. When calling `/link/token/create`, this...")
+	_ = cmd.MarkFlagRequired("consumer-report-permissible-purpose")
+	cmd.Flags().IntVar(&bodyDaysRequested, "days-requested", 0, "The number of days of data to request for the report. Default value is 365; maximum is 731; minimum is 180. If a...")
+	_ = cmd.MarkFlagRequired("days-requested")
+	cmd.Flags().IntVar(&bodyDaysRequired, "days-required", 0, "The minimum number of days of data required for the report to be successfully generated.")
+	cmd.Flags().BoolVar(&bodyIncludeInvestments, "include-investments", false, "Indicates that investment data should be extracted from the linked account(s).")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserId, "user-id", "", "A unique user identifier, created by `/user/create`. Integrations that began using `/user/create` after December 10,...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+	cmd.Flags().StringVar(&bodyWebhook, "webhook", "", "The destination URL to which webhooks will be sent")
+	_ = cmd.MarkFlagRequired("webhook")
+
+	return cmd
+}
+
+func newCraCheckReportIncomeInsightsGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyThirdPartyUserToken string
+	var bodyUserId string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "check-report-income-insights-get",
+		Short: "Retrieve cash flow information from your user's banks",
+		Example: "  plaid-cli cra check-report-income-insights-get",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/cra/check_report/income_insights/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyThirdPartyUserToken != "" {
+				body["third_party_user_token"] = bodyThirdPartyUserToken
+			}
+			if bodyUserId != "" {
+				body["user_id"] = bodyUserId
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyThirdPartyUserToken, "third-party-user-token", "", "The third-party user token associated with the requested User data.")
+	cmd.Flags().StringVar(&bodyUserId, "user-id", "", "A unique user identifier, created by `/user/create`. Integrations that began using `/user/create` after December 10,...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+
+	return cmd
+}
+
+func newCraCheckReportLendScoreGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyThirdPartyUserToken string
+	var bodyUserId string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "check-report-lend-score-get",
+		Short: "Retrieve the LendScore from your user's banking data",
+		Example: "  plaid-cli cra check-report-lend-score-get",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/cra/check_report/lend_score/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyThirdPartyUserToken != "" {
+				body["third_party_user_token"] = bodyThirdPartyUserToken
+			}
+			if bodyUserId != "" {
+				body["user_id"] = bodyUserId
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyThirdPartyUserToken, "third-party-user-token", "", "The third-party user token associated with the requested User data.")
+	cmd.Flags().StringVar(&bodyUserId, "user-id", "", "A unique user identifier, created by `/user/create`. Integrations that began using `/user/create` after December 10,...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+
+	return cmd
+}
+
+func newCraCheckReportNetworkInsightsGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyThirdPartyUserToken string
+	var bodyUserId string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "check-report-network-insights-get",
+		Short: "Retrieve network attributes for the user",
+		Example: "  plaid-cli cra check-report-network-insights-get",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/cra/check_report/network_insights/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyThirdPartyUserToken != "" {
+				body["third_party_user_token"] = bodyThirdPartyUserToken
+			}
+			if bodyUserId != "" {
+				body["user_id"] = bodyUserId
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyThirdPartyUserToken, "third-party-user-token", "", "The third-party user token associated with the requested User data.")
+	cmd.Flags().StringVar(&bodyUserId, "user-id", "", "A unique user identifier, created by `/user/create`. Integrations that began using `/user/create` after December 10,...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+
+	return cmd
+}
+
+func newCraCheckReportPartnerInsightsGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyThirdPartyUserToken string
+	var bodyUserId string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "check-report-partner-insights-get",
+		Short: "Retrieve cash flow insights from partners",
+		Example: "  plaid-cli cra check-report-partner-insights-get",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/cra/check_report/partner_insights/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyThirdPartyUserToken != "" {
+				body["third_party_user_token"] = bodyThirdPartyUserToken
+			}
+			if bodyUserId != "" {
+				body["user_id"] = bodyUserId
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyThirdPartyUserToken, "third-party-user-token", "", "The third-party user token associated with the requested User data.")
+	cmd.Flags().StringVar(&bodyUserId, "user-id", "", "A unique user identifier, created by `/user/create`. Integrations that began using `/user/create` after December 10,...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+
+	return cmd
+}
+
+func newCraCheckReportPdfGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyThirdPartyUserToken string
+	var bodyUserId string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "check-report-pdf-get",
+		Short: "Retrieve Consumer Reports as a PDF",
+		Example: "  plaid-cli cra check-report-pdf-get",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/cra/check_report/pdf/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyThirdPartyUserToken != "" {
+				body["third_party_user_token"] = bodyThirdPartyUserToken
+			}
+			if bodyUserId != "" {
+				body["user_id"] = bodyUserId
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyThirdPartyUserToken, "third-party-user-token", "", "The third-party user token associated with the requested User data.")
+	cmd.Flags().StringVar(&bodyUserId, "user-id", "", "A unique user identifier, created by `/user/create`. Integrations that began using `/user/create` after December 10,...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+
+	return cmd
+}
+
+func newCraCheckReportVerificationGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyUserId string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "check-report-verification-get",
+		Short: "Retrieve various home lending reports for a user.",
+		Example: "  plaid-cli cra check-report-verification-get",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/cra/check_report/verification/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserId != "" {
+				body["user_id"] = bodyUserId
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserId, "user-id", "", "A unique user identifier, created by `/user/create`. Integrations that began using `/user/create` after December 10,...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+
+	return cmd
+}
+
+func newCraCheckReportVerificationPdfGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyReportRequested string
+	var bodySecret string
+	var bodyThirdPartyUserToken string
+	var bodyUserId string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "check-report-verification-pdf-get",
+		Short: "Retrieve Consumer Reports as a Verification PDF",
+		Example: "  plaid-cli cra check-report-verification-pdf-get --report-requested value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/cra/check_report/verification/pdf/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyReportRequested != "" {
+				body["report_requested"] = bodyReportRequested
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyThirdPartyUserToken != "" {
+				body["third_party_user_token"] = bodyThirdPartyUserToken
+			}
+			if bodyUserId != "" {
+				body["user_id"] = bodyUserId
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyReportRequested, "report-requested", "", "The type of verification PDF report to fetch.")
+	_ = cmd.MarkFlagRequired("report-requested")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyThirdPartyUserToken, "third-party-user-token", "", "The third-party user token associated with the requested User data.")
+	cmd.Flags().StringVar(&bodyUserId, "user-id", "", "A unique user identifier, created by `/user/create`. Integrations that began using `/user/create` after December 10,...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+
+	return cmd
+}
+
+func newCraLoansApplicationsRegisterCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "loans-applications-register",
+		Short: "Register loan applications and decisions.",
+		Example: "  plaid-cli cra loans-applications-register",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/cra/loans/applications/register"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newCraLoansRegisterCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "loans-register",
+		Short: "Register a list of loans to their applicants.",
+		Example: "  plaid-cli cra loans-register",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/cra/loans/register"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newCraLoansUnregisterCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "loans-unregister",
+		Short: "Unregister a list of loans.",
+		Example: "  plaid-cli cra loans-unregister",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/cra/loans/unregister"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newCraLoansUpdateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "loans-update",
+		Short: "Updates loan data.",
+		Example: "  plaid-cli cra loans-update",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/cra/loans/update"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newCraMonitoringInsightsGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyConsumerReportPermissiblePurpose string
+	var bodySecret string
+	var bodyUserId string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "monitoring-insights-get",
+		Short: "Retrieve a Monitoring Insights Report",
+		Example: "  plaid-cli cra monitoring-insights-get --consumer-report-permissible-purpose value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/cra/monitoring_insights/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyConsumerReportPermissiblePurpose != "" {
+				body["consumer_report_permissible_purpose"] = bodyConsumerReportPermissiblePurpose
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserId != "" {
+				body["user_id"] = bodyUserId
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyConsumerReportPermissiblePurpose, "consumer-report-permissible-purpose", "", "Describes the reason you are generating a Consumer Report for this user. `ACCOUNT_REVIEW_CREDIT`: In connection with...")
+	_ = cmd.MarkFlagRequired("consumer-report-permissible-purpose")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserId, "user-id", "", "A unique user identifier, created by `/user/create`. Integrations that began using `/user/create` after December 10,...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+
+	return cmd
+}
+
+func newCraMonitoringInsightsSubscribeCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyItemId string
+	var bodySecret string
+	var bodyUserId string
+	var bodyUserToken string
+	var bodyWebhook string
+
+	cmd := &cobra.Command{
+		Use:   "monitoring-insights-subscribe",
+		Short: "Subscribe to Monitoring Insights",
+		Example: "  plaid-cli cra monitoring-insights-subscribe --webhook value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/cra/monitoring_insights/subscribe"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyItemId != "" {
+				body["item_id"] = bodyItemId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserId != "" {
+				body["user_id"] = bodyUserId
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			if bodyWebhook != "" {
+				body["webhook"] = bodyWebhook
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyItemId, "item-id", "", "The item ID to subscribe for Cash Flow Updates.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserId, "user-id", "", "A unique user identifier, created by `/user/create`. Integrations that began using `/user/create` after December 10,...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+	cmd.Flags().StringVar(&bodyWebhook, "webhook", "", "URL to which Plaid will send Cash Flow Updates webhooks, for example when the requested Cash Flow Updates report is...")
+	_ = cmd.MarkFlagRequired("webhook")
+
+	return cmd
+}
+
+func newCraMonitoringInsightsUnsubscribeCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodySubscriptionId string
+
+	cmd := &cobra.Command{
+		Use:   "monitoring-insights-unsubscribe",
+		Short: "Unsubscribe from Monitoring Insights",
+		Example: "  plaid-cli cra monitoring-insights-unsubscribe --subscription-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/cra/monitoring_insights/unsubscribe"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodySubscriptionId != "" {
+				body["subscription_id"] = bodySubscriptionId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodySubscriptionId, "subscription-id", "", "A unique identifier for the subscription.")
+	_ = cmd.MarkFlagRequired("subscription-id")
+
+	return cmd
+}
+
+func newCraPartnerInsightsGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "partner-insights-get",
+		Short: "Retrieve cash flow insights from the bank accounts used for income verification",
+		Example: "  plaid-cli cra partner-insights-get --user-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/cra/partner_insights/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+	_ = cmd.MarkFlagRequired("user-token")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/credit.go b/plaid-cli/internal/cli/credit.go
new file mode 100644
index 00000000..f5adf34a
--- /dev/null
+++ b/plaid-cli/internal/cli/credit.go
@@ -0,0 +1,1004 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newCreditCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "credit",
+		Short: "Manage credit",
+	}
+
+	cmd.AddCommand(newCreditAssetReportFreddieMacGetCmd(flags))
+	cmd.AddCommand(newCreditAuditCopyTokenCreateCmd(flags))
+	cmd.AddCommand(newCreditAuditCopyTokenUpdateCmd(flags))
+	cmd.AddCommand(newCreditBankIncomeGetCmd(flags))
+	cmd.AddCommand(newCreditBankIncomePdfGetCmd(flags))
+	cmd.AddCommand(newCreditBankIncomeRefreshCmd(flags))
+	cmd.AddCommand(newCreditBankIncomeWebhookUpdateCmd(flags))
+	cmd.AddCommand(newCreditBankStatementsUploadsGetCmd(flags))
+	cmd.AddCommand(newCreditEmploymentGetCmd(flags))
+	cmd.AddCommand(newCreditFreddieMacReportsGetCmd(flags))
+	cmd.AddCommand(newCreditPayrollIncomeGetCmd(flags))
+	cmd.AddCommand(newCreditPayrollIncomeParsingConfigUpdateCmd(flags))
+	cmd.AddCommand(newCreditPayrollIncomePrecheckCmd(flags))
+	cmd.AddCommand(newCreditPayrollIncomeRefreshCmd(flags))
+	cmd.AddCommand(newCreditPayrollIncomeRiskSignalsGetCmd(flags))
+	cmd.AddCommand(newCreditRelayCreateCmd(flags))
+	cmd.AddCommand(newCreditRelayGetCmd(flags))
+	cmd.AddCommand(newCreditRelayPdfGetCmd(flags))
+	cmd.AddCommand(newCreditRelayRefreshCmd(flags))
+	cmd.AddCommand(newCreditRelayRemoveCmd(flags))
+	cmd.AddCommand(newCreditReportAuditCopyRemoveCmd(flags))
+	cmd.AddCommand(newCreditSessionsGetCmd(flags))
+	return cmd
+}
+
+func newCreditAssetReportFreddieMacGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyAuditCopyToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "asset-report-freddie-mac-get",
+		Aliases: []string{"create"},
+		Short: "Retrieve an Asset Report with Freddie Mac format. Only Freddie Mac can use this endpoint.",
+		Example: "  plaid-cli credit asset-report-freddie-mac-get --audit-copy-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/credit/asset_report/freddie_mac/get"
+			body := map[string]any{}
+			if bodyAuditCopyToken != "" {
+				body["audit_copy_token"] = bodyAuditCopyToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAuditCopyToken, "audit-copy-token", "", "A token that can be shared with a third party auditor to allow them to obtain access to the Asset Report. This token...")
+	_ = cmd.MarkFlagRequired("audit-copy-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newCreditAuditCopyTokenCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "audit-copy-token-create",
+		Short: "Create Asset or Income Report Audit Copy Token",
+		Example: "  plaid-cli credit audit-copy-token-create",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/credit/audit_copy_token/create"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newCreditAuditCopyTokenUpdateCmd(flags *rootFlags) *cobra.Command {
+	var bodyAuditCopyToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "audit-copy-token-update",
+		Short: "Update an Audit Copy Token",
+		Example: "  plaid-cli credit audit-copy-token-update --audit-copy-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/credit/audit_copy_token/update"
+			body := map[string]any{}
+			if bodyAuditCopyToken != "" {
+				body["audit_copy_token"] = bodyAuditCopyToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAuditCopyToken, "audit-copy-token", "", "The `audit_copy_token` you would like to update.")
+	_ = cmd.MarkFlagRequired("audit-copy-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newCreditBankIncomeGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "bank-income-get",
+		Short: "Retrieve information from the bank accounts used for income verification",
+		Example: "  plaid-cli credit bank-income-get",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/credit/bank_income/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+
+	return cmd
+}
+
+func newCreditBankIncomePdfGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "bank-income-pdf-get",
+		Short: "Retrieve information from the bank accounts used for income verification in PDF format",
+		Example: "  plaid-cli credit bank-income-pdf-get --user-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/credit/bank_income/pdf/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+	_ = cmd.MarkFlagRequired("user-token")
+
+	return cmd
+}
+
+func newCreditBankIncomeRefreshCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "bank-income-refresh",
+		Short: "Refresh a user's bank income information",
+		Example: "  plaid-cli credit bank-income-refresh --user-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/credit/bank_income/refresh"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+	_ = cmd.MarkFlagRequired("user-token")
+
+	return cmd
+}
+
+func newCreditBankIncomeWebhookUpdateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyEnableWebhooks bool
+	var bodySecret string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "bank-income-webhook-update",
+		Short: "Subscribe and unsubscribe to proactive notifications for a user's income profile",
+		Example: "  plaid-cli credit bank-income-webhook-update --user-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/credit/bank_income/webhook/update"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyEnableWebhooks != false {
+				body["enable_webhooks"] = bodyEnableWebhooks
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().BoolVar(&bodyEnableWebhooks, "enable-webhooks", false, "Whether the user should be enabled for proactive webhook notifications when their income changes")
+	_ = cmd.MarkFlagRequired("enable-webhooks")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+	_ = cmd.MarkFlagRequired("user-token")
+
+	return cmd
+}
+
+func newCreditBankStatementsUploadsGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "bank-statements-uploads-get",
+		Short: "Retrieve data for a user's uploaded bank statements",
+		Example: "  plaid-cli credit bank-statements-uploads-get --user-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/credit/bank_statements/uploads/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+	_ = cmd.MarkFlagRequired("user-token")
+
+	return cmd
+}
+
+func newCreditEmploymentGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "employment-get",
+		Short: "Retrieve a summary of an individual's employment information",
+		Example: "  plaid-cli credit employment-get --user-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/credit/employment/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+	_ = cmd.MarkFlagRequired("user-token")
+
+	return cmd
+}
+
+func newCreditFreddieMacReportsGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyAuditCopyToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "freddie-mac-reports-get",
+		Short: "Retrieve an Asset Report with Freddie Mac format (aka VOA - Verification Of Assets), and a Verification Of...",
+		Example: "  plaid-cli credit freddie-mac-reports-get --audit-copy-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/credit/freddie_mac/reports/get"
+			body := map[string]any{}
+			if bodyAuditCopyToken != "" {
+				body["audit_copy_token"] = bodyAuditCopyToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAuditCopyToken, "audit-copy-token", "", "A token that can be shared with a third party auditor to allow them to obtain access to the Asset Report. This token...")
+	_ = cmd.MarkFlagRequired("audit-copy-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newCreditPayrollIncomeGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "payroll-income-get",
+		Short: "Retrieve a user's payroll information",
+		Example: "  plaid-cli credit payroll-income-get",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/credit/payroll_income/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+
+	return cmd
+}
+
+func newCreditPayrollIncomeParsingConfigUpdateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyItemId string
+	var bodySecret string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "payroll-income-parsing-config-update",
+		Short: "Update the parsing configuration for a document income verification",
+		Example: "  plaid-cli credit payroll-income-parsing-config-update --user-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/credit/payroll_income/parsing_config/update"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyItemId != "" {
+				body["item_id"] = bodyItemId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyItemId, "item-id", "", "The `item_id` of the Item associated with this webhook, warning, or error")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+	_ = cmd.MarkFlagRequired("user-token")
+
+	return cmd
+}
+
+func newCreditPayrollIncomePrecheckCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "payroll-income-precheck",
+		Short: "Check income verification eligibility and optimize conversion",
+		Example: "  plaid-cli credit payroll-income-precheck",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/credit/payroll_income/precheck"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+
+	return cmd
+}
+
+func newCreditPayrollIncomeRefreshCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "payroll-income-refresh",
+		Short: "Refresh a digital payroll income verification",
+		Example: "  plaid-cli credit payroll-income-refresh --user-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/credit/payroll_income/refresh"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+	_ = cmd.MarkFlagRequired("user-token")
+
+	return cmd
+}
+
+func newCreditPayrollIncomeRiskSignalsGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "payroll-income-risk-signals-get",
+		Short: "Retrieve fraud insights for a user's manually uploaded document(s).",
+		Example: "  plaid-cli credit payroll-income-risk-signals-get",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/credit/payroll_income/risk_signals/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+
+	return cmd
+}
+
+func newCreditRelayCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecondaryClientId string
+	var bodySecret string
+	var bodyWebhook string
+
+	cmd := &cobra.Command{
+		Use:   "relay-create",
+		Short: "Create a relay token to share an Asset Report with a partner client",
+		Example: "  plaid-cli credit relay-create --secondary-client-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/credit/relay/create"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecondaryClientId != "" {
+				body["secondary_client_id"] = bodySecondaryClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyWebhook != "" {
+				body["webhook"] = bodyWebhook
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecondaryClientId, "secondary-client-id", "", "The `secondary_client_id` is the client id of the third party with whom you would like to share the relay token.")
+	_ = cmd.MarkFlagRequired("secondary-client-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyWebhook, "webhook", "", "URL to which Plaid will send webhooks when the Secondary Client successfully retrieves an Asset Report by calling...")
+
+	return cmd
+}
+
+func newCreditRelayGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyIncludeInsights bool
+	var bodyRelayToken string
+	var bodyReportType string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "relay-get",
+		Short: "Retrieve the reports associated with a relay token that was shared with you",
+		Example: "  plaid-cli credit relay-get --relay-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/credit/relay/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyIncludeInsights != false {
+				body["include_insights"] = bodyIncludeInsights
+			}
+			if bodyRelayToken != "" {
+				body["relay_token"] = bodyRelayToken
+			}
+			if bodyReportType != "" {
+				body["report_type"] = bodyReportType
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().BoolVar(&bodyIncludeInsights, "include-insights", false, "`true` if you would like to retrieve the Asset Report with Insights, `false` otherwise. This field defaults to...")
+	cmd.Flags().StringVar(&bodyRelayToken, "relay-token", "", "The `relay_token` granting access to the report you would like to get.")
+	_ = cmd.MarkFlagRequired("relay-token")
+	cmd.Flags().StringVar(&bodyReportType, "report-type", "", "The report type. It can be `asset`. Income report types are not yet supported.")
+	_ = cmd.MarkFlagRequired("report-type")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newCreditRelayPdfGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyRelayToken string
+	var bodyReportType string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "relay-pdf-get",
+		Short: "Retrieve the pdf reports associated with a relay token that was shared with you (beta)",
+		Example: "  plaid-cli credit relay-pdf-get --relay-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/credit/relay/pdf/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyRelayToken != "" {
+				body["relay_token"] = bodyRelayToken
+			}
+			if bodyReportType != "" {
+				body["report_type"] = bodyReportType
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyRelayToken, "relay-token", "", "The `relay_token` granting access to the report you would like to get.")
+	_ = cmd.MarkFlagRequired("relay-token")
+	cmd.Flags().StringVar(&bodyReportType, "report-type", "", "The report type. It can be `asset`. Income report types are not yet supported.")
+	_ = cmd.MarkFlagRequired("report-type")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newCreditRelayRefreshCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyRelayToken string
+	var bodyReportType string
+	var bodySecret string
+	var bodyWebhook string
+
+	cmd := &cobra.Command{
+		Use:   "relay-refresh",
+		Short: "Refresh a report of a relay token",
+		Example: "  plaid-cli credit relay-refresh --relay-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/credit/relay/refresh"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyRelayToken != "" {
+				body["relay_token"] = bodyRelayToken
+			}
+			if bodyReportType != "" {
+				body["report_type"] = bodyReportType
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyWebhook != "" {
+				body["webhook"] = bodyWebhook
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyRelayToken, "relay-token", "", "The `relay_token` granting access to the report you would like to refresh.")
+	_ = cmd.MarkFlagRequired("relay-token")
+	cmd.Flags().StringVar(&bodyReportType, "report-type", "", "The report type. It can be `asset`. Income report types are not yet supported.")
+	_ = cmd.MarkFlagRequired("report-type")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyWebhook, "webhook", "", "The URL registered to receive webhooks when the report of a relay token has been refreshed.")
+
+	return cmd
+}
+
+func newCreditRelayRemoveCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyRelayToken string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "relay-remove",
+		Short: "Remove relay token",
+		Example: "  plaid-cli credit relay-remove --relay-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/credit/relay/remove"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyRelayToken != "" {
+				body["relay_token"] = bodyRelayToken
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyRelayToken, "relay-token", "", "The `relay_token` you would like to revoke.")
+	_ = cmd.MarkFlagRequired("relay-token")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newCreditReportAuditCopyRemoveCmd(flags *rootFlags) *cobra.Command {
+	var bodyAuditCopyToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "report-audit-copy-remove",
+		Short: "Remove an Audit Copy token",
+		Example: "  plaid-cli credit report-audit-copy-remove --audit-copy-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/credit/audit_copy_token/remove"
+			body := map[string]any{}
+			if bodyAuditCopyToken != "" {
+				body["audit_copy_token"] = bodyAuditCopyToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAuditCopyToken, "audit-copy-token", "", "The `audit_copy_token` granting access to the Audit Copy you would like to revoke.")
+	_ = cmd.MarkFlagRequired("audit-copy-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newCreditSessionsGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "sessions-get",
+		Short: "Retrieve Link sessions for your user",
+		Example: "  plaid-cli credit sessions-get --user-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/credit/sessions/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+	_ = cmd.MarkFlagRequired("user-token")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/dashboard-user.go b/plaid-cli/internal/cli/dashboard-user.go
new file mode 100644
index 00000000..ccf90cf9
--- /dev/null
+++ b/plaid-cli/internal/cli/dashboard-user.go
@@ -0,0 +1,109 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newDashboardUserCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "dashboard-user",
+		Short: "Manage dashboard user",
+	}
+
+	cmd.AddCommand(newDashboardUserGetCmd(flags))
+	cmd.AddCommand(newDashboardUserListCmd(flags))
+	return cmd
+}
+
+func newDashboardUserGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyDashboardUserId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "get",
+		Aliases: []string{"create"},
+		Short: "Retrieve a dashboard user",
+		Example: "  plaid-cli dashboard-user get --dashboard-user-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/dashboard_user/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyDashboardUserId != "" {
+				body["dashboard_user_id"] = bodyDashboardUserId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyDashboardUserId, "dashboard-user-id", "", "ID of the associated user. To retrieve the email address or other details of the person corresponding to this id,...")
+	_ = cmd.MarkFlagRequired("dashboard-user-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newDashboardUserListCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyCursor string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "list",
+		Short: "List dashboard users",
+		Example: "  plaid-cli dashboard-user list",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/dashboard_user/list"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCursor != "" {
+				body["cursor"] = bodyCursor
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyCursor, "cursor", "", "An identifier that determines which page of results you receive.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/doctor.go b/plaid-cli/internal/cli/doctor.go
new file mode 100644
index 00000000..63e69f88
--- /dev/null
+++ b/plaid-cli/internal/cli/doctor.go
@@ -0,0 +1,121 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"net/http"
+	"strings"
+	"time"
+
+	"github.com/USER/plaid-cli/internal/config"
+	"github.com/spf13/cobra"
+)
+
+func newDoctorCmd(flags *rootFlags) *cobra.Command {
+	return &cobra.Command{
+		Use:   "doctor",
+		Short: "Check CLI health",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			report := map[string]any{}
+
+			// Check config
+			cfg, err := config.Load(flags.configPath)
+			if err != nil {
+				report["config"] = fmt.Sprintf("error: %s", err)
+			} else {
+				report["config"] = "ok"
+				report["config_path"] = cfg.Path
+				report["base_url"] = cfg.BaseURL
+			}
+
+			// Check auth
+			if cfg != nil {
+				header := cfg.AuthHeader()
+				if header == "" {
+					report["auth"] = "not configured"
+				} else {
+					report["auth"] = "configured"
+					report["auth_source"] = cfg.AuthSource
+				}
+			}
+
+			// Check API connectivity
+			if cfg != nil && cfg.BaseURL != "" {
+				httpClient := &http.Client{Timeout: 5 * time.Second}
+				
+				// Try common health-check paths in order
+				paths := []string{
+					"",
+					"/health",
+					"/healthz",
+					"/status",
+					"/ping",
+				}
+
+				reached := false
+				for _, p := range paths {
+					url := strings.TrimRight(cfg.BaseURL, "/") + p
+					resp, err := httpClient.Get(url)
+					if err != nil {
+						continue
+					}
+					resp.Body.Close()
+					if resp.StatusCode >= 200 && resp.StatusCode < 400 {
+						report["api"] = fmt.Sprintf("reachable (HTTP %d)", resp.StatusCode)
+						reached = true
+						break
+					}
+				}
+
+				if !reached {
+					// Fall back to reporting the base URL status
+					resp, err := httpClient.Get(cfg.BaseURL)
+					if err != nil {
+						report["api"] = fmt.Sprintf("unreachable: %s", err)
+					} else {
+						resp.Body.Close()
+						report["api"] = fmt.Sprintf("degraded (HTTP %d)", resp.StatusCode)
+					}
+				}
+			} else if cfg != nil && cfg.BaseURL == "" {
+				report["api"] = "not configured (set base_url in config file)"
+			}
+
+			report["version"] = version
+
+			if flags.asJSON {
+				return flags.printJSON(cmd, report)
+			}
+
+			// Human-readable output with color
+			w := cmd.OutOrStdout()
+			checkKeys := []struct{ key, label string }{
+				{"config", "Config"},
+				{"auth", "Auth"},
+				{"api", "API"},
+			}
+			for _, ck := range checkKeys {
+				v, ok := report[ck.key]
+				if !ok {
+					continue
+				}
+				s := fmt.Sprintf("%v", v)
+				indicator := green("OK")
+				if strings.Contains(s, "error") || strings.Contains(s, "not configured") || strings.Contains(s, "unreachable") {
+					indicator = red("FAIL")
+				} else if strings.Contains(s, "not ") {
+					indicator = yellow("WARN")
+				}
+				fmt.Fprintf(w, "  %s %s: %s\n", indicator, ck.label, s)
+			}
+			// Print info keys without status indicator
+			for _, key := range []string{"config_path", "base_url", "auth_source", "version"} {
+				if v, ok := report[key]; ok {
+					fmt.Fprintf(w, "  %s: %v\n", key, v)
+				}
+			}
+			return nil
+		},
+	}
+}
diff --git a/plaid-cli/internal/cli/employers.go b/plaid-cli/internal/cli/employers.go
new file mode 100644
index 00000000..fa0935ad
--- /dev/null
+++ b/plaid-cli/internal/cli/employers.go
@@ -0,0 +1,67 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newEmployersCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "employers",
+		Short: "Manage employers",
+	}
+
+	cmd.AddCommand(newEmployersSearchCmd(flags))
+	return cmd
+}
+
+func newEmployersSearchCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyQuery string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "search",
+		Aliases: []string{"create"},
+		Short: "Search employer database",
+		Example: "  plaid-cli employers search --query value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/employers/search"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyQuery != "" {
+				body["query"] = bodyQuery
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyQuery, "query", "", "The employer name to be searched for.")
+	_ = cmd.MarkFlagRequired("query")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/employment.go b/plaid-cli/internal/cli/employment.go
new file mode 100644
index 00000000..0cbfd65d
--- /dev/null
+++ b/plaid-cli/internal/cli/employment.go
@@ -0,0 +1,67 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newEmploymentCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "employment",
+		Short: "Manage employment",
+	}
+
+	cmd.AddCommand(newEmploymentVerificationGetCmd(flags))
+	return cmd
+}
+
+func newEmploymentVerificationGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "verification-get",
+		Aliases: []string{"create"},
+		Short: "(Deprecated) Retrieve a summary of an individual's employment information",
+		Example: "  plaid-cli employment verification-get --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/employment/verification/get"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/fdx.go b/plaid-cli/internal/cli/fdx.go
new file mode 100644
index 00000000..13165dec
--- /dev/null
+++ b/plaid-cli/internal/cli/fdx.go
@@ -0,0 +1,145 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newFdxCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "fdx",
+		Short: "Manage fdx",
+	}
+
+	cmd.AddCommand(newFdxGetRecipientCmd(flags))
+	cmd.AddCommand(newFdxGetRecipientsCmd(flags))
+	cmd.AddCommand(newFdxNotificationsCmd(flags))
+	return cmd
+}
+
+func newFdxGetRecipientCmd(flags *rootFlags) *cobra.Command {
+
+	cmd := &cobra.Command{
+		Use:   "get-recipient <recipientId>",
+		Aliases: []string{"get"},
+		Short: "Get Recipient",
+		Example: "  plaid-cli fdx get-recipient <recipientId>",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/fdx/recipient/{recipientId}"
+			if len(args) < 1 {
+				return usageErr(fmt.Errorf("recipientId is required"))
+			}
+			path = replacePathParam(path, "recipientId", args[0])
+			params := map[string]string{}
+			data, err := c.Get(path, params)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+
+	return cmd
+}
+
+func newFdxGetRecipientsCmd(flags *rootFlags) *cobra.Command {
+
+	cmd := &cobra.Command{
+		Use:   "get-recipients",
+		Aliases: []string{"list"},
+		Short: "Get Recipients",
+		Example: "  plaid-cli fdx get-recipients",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/fdx/recipients"
+			params := map[string]string{}
+			data, err := c.Get(path, params)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+
+	return cmd
+}
+
+func newFdxNotificationsCmd(flags *rootFlags) *cobra.Command {
+	var bodyCategory string
+	var bodyNotificationId string
+	var bodyPriority string
+	var bodySentOn string
+	var bodySeverity string
+	var bodyType string
+
+	cmd := &cobra.Command{
+		Use:   "notifications",
+		Aliases: []string{"create"},
+		Short: "Webhook receiver for fdx notifications",
+		Example: "  plaid-cli fdx notifications --category value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/fdx/notifications"
+			body := map[string]any{}
+			if bodyCategory != "" {
+				body["category"] = bodyCategory
+			}
+			if bodyNotificationId != "" {
+				body["notificationId"] = bodyNotificationId
+			}
+			if bodyPriority != "" {
+				body["priority"] = bodyPriority
+			}
+			if bodySentOn != "" {
+				body["sentOn"] = bodySentOn
+			}
+			if bodySeverity != "" {
+				body["severity"] = bodySeverity
+			}
+			if bodyType != "" {
+				body["type"] = bodyType
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyCategory, "category", "", "Category of Notification")
+	_ = cmd.MarkFlagRequired("category")
+	cmd.Flags().StringVar(&bodyNotificationId, "notificationid", "", "Id of notification")
+	_ = cmd.MarkFlagRequired("notificationid")
+	cmd.Flags().StringVar(&bodyPriority, "priority", "", "Priority of notification")
+	cmd.Flags().StringVar(&bodySentOn, "senton", "", "ISO 8601 date-time in format 'YYYY-MM-DDThh:mm:ss.nnn[Z|[+|-]hh:mm]' according to [IETF...")
+	_ = cmd.MarkFlagRequired("senton")
+	cmd.Flags().StringVar(&bodySeverity, "severity", "", "Severity level of notification")
+	cmd.Flags().StringVar(&bodyType, "type", "", "Type of Notification")
+	_ = cmd.MarkFlagRequired("type")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/helpers.go b/plaid-cli/internal/cli/helpers.go
new file mode 100644
index 00000000..852e8ad2
--- /dev/null
+++ b/plaid-cli/internal/cli/helpers.go
@@ -0,0 +1,357 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"encoding/json"
+	"errors"
+	"fmt"
+	"io"
+	"os"
+	"sort"
+	"strings"
+	"text/tabwriter"
+
+	"github.com/mattn/go-isatty"
+)
+
+var As = errors.As
+
+// noColor is set by the --no-color flag
+var noColor bool
+
+func colorEnabled() bool {
+	if noColor {
+		return false
+	}
+	if os.Getenv("NO_COLOR") != "" {
+		return false
+	}
+	if os.Getenv("TERM") == "dumb" {
+		return false
+	}
+	return isatty.IsTerminal(os.Stdout.Fd()) || isatty.IsCygwinTerminal(os.Stdout.Fd())
+}
+
+func bold(s string) string {
+	if !colorEnabled() {
+		return s
+	}
+	return "\033[1m" + s + "\033[0m"
+}
+
+func green(s string) string {
+	if !colorEnabled() {
+		return s
+	}
+	return "\033[32m" + s + "\033[0m"
+}
+
+func red(s string) string {
+	if !colorEnabled() {
+		return s
+	}
+	return "\033[31m" + s + "\033[0m"
+}
+
+func yellow(s string) string {
+	if !colorEnabled() {
+		return s
+	}
+	return "\033[33m" + s + "\033[0m"
+}
+
+type cliError struct {
+	code int
+	err  error
+}
+
+func (e *cliError) Error() string { return e.err.Error() }
+func (e *cliError) Unwrap() error { return e.err }
+
+func usageErr(err error) error    { return &cliError{code: 2, err: err} }
+func notFoundErr(err error) error { return &cliError{code: 3, err: err} }
+func authErr(err error) error     { return &cliError{code: 4, err: err} }
+func apiErr(err error) error      { return &cliError{code: 5, err: err} }
+func configErr(err error) error   { return &cliError{code: 10, err: err} }
+func rateLimitErr(err error) error { return &cliError{code: 7, err: err} }
+
+// classifyAPIError maps API errors to structured exit codes with actionable hints.
+func classifyAPIError(err error) error {
+	msg := err.Error()
+	switch {
+	case strings.Contains(msg, "HTTP 401") || strings.Contains(msg, "HTTP 403"):
+		return authErr(fmt.Errorf("%w\nhint: check your API credentials. Run 'plaid-cli doctor' to verify auth, or set the required environment variable", err))
+	case strings.Contains(msg, "HTTP 404"):
+		return notFoundErr(fmt.Errorf("%w\nhint: resource not found. Run the 'list' command to see available items", err))
+	case strings.Contains(msg, "HTTP 429"):
+		return rateLimitErr(err)
+	default:
+		return apiErr(err)
+	}
+}
+
+func truncate(s string, max int) string {
+	if len(s) <= max {
+		return s
+	}
+	if max <= 3 {
+		return s[:max]
+	}
+	return s[:max-3] + "..."
+}
+
+func firstNonEmpty(items ...string) string {
+	for _, s := range items {
+		if s != "" {
+			return s
+		}
+	}
+	return ""
+}
+
+func newTabWriter(w io.Writer) *tabwriter.Writer {
+	return tabwriter.NewWriter(w, 2, 4, 2, ' ', 0)
+}
+
+func replacePathParam(path, name, value string) string {
+	return strings.ReplaceAll(path, "{"+name+"}", value)
+}
+
+// paginatedGet fetches pages and concatenates array results.
+func paginatedGet(c interface {
+	Get(path string, params map[string]string) (json.RawMessage, error)
+}, path string, params map[string]string, fetchAll bool, cursorParam, nextCursorPath, hasMoreField string) (json.RawMessage, error) {
+	// Clean zero-value params
+	clean := map[string]string{}
+	for k, v := range params {
+		if v != "" && v != "0" && v != "false" {
+			clean[k] = v
+		}
+	}
+
+	if !fetchAll {
+		return c.Get(path, clean)
+	}
+
+	// Fetch all pages
+	var allItems []json.RawMessage
+	page := 0
+	for {
+		page++
+		fmt.Fprintf(os.Stderr, "fetching page %d...\n", page)
+
+		data, err := c.Get(path, clean)
+		if err != nil {
+			return nil, err
+		}
+
+		// Try to extract items array
+		var items []json.RawMessage
+		if json.Unmarshal(data, &items) == nil {
+			allItems = append(allItems, items...)
+		} else {
+			// Response is an object - look for array inside
+			var obj map[string]json.RawMessage
+			if json.Unmarshal(data, &obj) == nil {
+				// Try common data fields
+				for _, field := range []string{"data", "items", "results", "messages", "members", "values"} {
+					if arr, ok := obj[field]; ok {
+						var nested []json.RawMessage
+						if json.Unmarshal(arr, &nested) == nil {
+							allItems = append(allItems, nested...)
+							break
+						}
+					}
+				}
+
+				// Check for next cursor
+				if nextCursorPath != "" {
+					if tokenRaw, ok := obj[nextCursorPath]; ok {
+						var token string
+						if json.Unmarshal(tokenRaw, &token) == nil && token != "" {
+							clean[cursorParam] = token
+							continue
+						}
+					}
+				}
+
+				// Check has_more
+				if hasMoreField != "" {
+					if moreRaw, ok := obj[hasMoreField]; ok {
+						var more bool
+						if json.Unmarshal(moreRaw, &more) == nil && more {
+							continue
+						}
+					}
+				}
+			}
+			// No more pages
+			break
+		}
+
+		// For direct arrays, can't paginate without cursor
+		break
+	}
+
+	fmt.Fprintf(os.Stderr, "fetched %d items across %d pages\n", len(allItems), page)
+	result, _ := json.Marshal(allItems)
+	return json.RawMessage(result), nil
+}
+
+// selectFields is set from the --select flag; used by printOutputFiltered.
+var selectFieldsGlobal string
+
+// printOutputFiltered applies --select field filtering before rendering.
+func printOutputFiltered(w io.Writer, data json.RawMessage, asJSON bool, selectExpr string) error {
+	if selectExpr != "" {
+		data = filterFields(data, selectExpr)
+	}
+	return printOutput(w, data, asJSON)
+}
+
+// filterFields keeps only the specified comma-separated fields from JSON objects/arrays.
+func filterFields(data json.RawMessage, fields string) json.RawMessage {
+	wanted := map[string]bool{}
+	for _, f := range strings.Split(fields, ",") {
+		f = strings.TrimSpace(f)
+		if f != "" {
+			wanted[f] = true
+		}
+	}
+	if len(wanted) == 0 {
+		return data
+	}
+
+	// Try array of objects
+	var items []map[string]json.RawMessage
+	if json.Unmarshal(data, &items) == nil {
+		filtered := make([]map[string]json.RawMessage, len(items))
+		for i, item := range items {
+			m := map[string]json.RawMessage{}
+			for k, v := range item {
+				if wanted[k] {
+					m[k] = v
+				}
+			}
+			filtered[i] = m
+		}
+		out, _ := json.Marshal(filtered)
+		return out
+	}
+
+	// Try single object
+	var obj map[string]json.RawMessage
+	if json.Unmarshal(data, &obj) == nil {
+		m := map[string]json.RawMessage{}
+		for k, v := range obj {
+			if wanted[k] {
+				m[k] = v
+			}
+		}
+		out, _ := json.Marshal(m)
+		return out
+	}
+
+	return data
+}
+
+// printOutput auto-detects arrays and renders as tables, or prints raw JSON for objects.
+func printOutput(w io.Writer, data json.RawMessage, asJSON bool) error {
+	if asJSON {
+		enc := json.NewEncoder(w)
+		enc.SetIndent("", "  ")
+		return enc.Encode(data)
+	}
+
+	// Try to detect if response is an array
+	var items []map[string]any
+	if err := json.Unmarshal(data, &items); err == nil && len(items) > 0 {
+		return printAutoTable(w, items)
+	}
+
+	// Single object - pretty print
+	var obj map[string]any
+	if err := json.Unmarshal(data, &obj); err == nil {
+		enc := json.NewEncoder(w)
+		enc.SetIndent("", "  ")
+		return enc.Encode(obj)
+	}
+
+	// Fallback: print raw
+	fmt.Fprintln(w, string(data))
+	return nil
+}
+
+func printAutoTable(w io.Writer, items []map[string]any) error {
+	if len(items) == 0 {
+		return nil
+	}
+
+	// Collect headers from first item, prioritize common fields
+	priority := []string{"id", "name", "username", "title", "status", "type", "email", "description"}
+	headerSet := map[string]struct{}{}
+	for k := range items[0] {
+		headerSet[k] = struct{}{}
+	}
+
+	var headers []string
+	for _, p := range priority {
+		if _, ok := headerSet[p]; ok {
+			headers = append(headers, p)
+			delete(headerSet, p)
+		}
+	}
+	// Add remaining headers sorted
+	var rest []string
+	for k := range headerSet {
+		rest = append(rest, k)
+	}
+	sort.Strings(rest)
+	headers = append(headers, rest...)
+
+	// Limit to 6 columns max for readability
+	if len(headers) > 6 {
+		headers = headers[:6]
+	}
+
+	// Build rows
+	rows := make([][]string, 0, len(items))
+	for _, item := range items {
+		row := make([]string, len(headers))
+		for i, h := range headers {
+			v := item[h]
+			switch val := v.(type) {
+			case string:
+				row[i] = truncate(val, 40)
+			case float64:
+				if val == float64(int64(val)) {
+					row[i] = fmt.Sprintf("%d", int64(val))
+				} else {
+					row[i] = fmt.Sprintf("%g", val)
+				}
+			case bool:
+				row[i] = fmt.Sprintf("%t", val)
+			case nil:
+				row[i] = ""
+			default:
+				b, _ := json.Marshal(val)
+				row[i] = truncate(string(b), 40)
+			}
+		}
+		rows = append(rows, row)
+	}
+
+	// Print with tab alignment using tabwriter
+	tw := newTabWriter(w)
+	upperHeaders := make([]string, len(headers))
+	for i, h := range headers {
+		upperHeaders[i] = bold(strings.ToUpper(h))
+	}
+
+	fmt.Fprintln(tw, strings.Join(upperHeaders, "\t"))
+	for _, row := range rows {
+		fmt.Fprintln(tw, strings.Join(row, "\t"))
+	}
+	return tw.Flush()
+}
diff --git a/plaid-cli/internal/cli/identity-verification.go b/plaid-cli/internal/cli/identity-verification.go
new file mode 100644
index 00000000..e2f31b8c
--- /dev/null
+++ b/plaid-cli/internal/cli/identity-verification.go
@@ -0,0 +1,292 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newIdentityVerificationCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "identity-verification",
+		Short: "Manage identity verification",
+	}
+
+	cmd.AddCommand(newIdentityVerificationAutofillCreateCmd(flags))
+	cmd.AddCommand(newIdentityVerificationCreateCmd(flags))
+	cmd.AddCommand(newIdentityVerificationGetCmd(flags))
+	cmd.AddCommand(newIdentityVerificationListCmd(flags))
+	cmd.AddCommand(newIdentityVerificationRetryCmd(flags))
+	return cmd
+}
+
+func newIdentityVerificationAutofillCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyIdentityVerificationId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "autofill-create",
+		Short: "Create autofill for an Identity Verification",
+		Example: "  plaid-cli identity-verification autofill-create --identity-verification-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/identity_verification/autofill/create"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyIdentityVerificationId != "" {
+				body["identity_verification_id"] = bodyIdentityVerificationId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyIdentityVerificationId, "identity-verification-id", "", "ID of the associated Identity Verification attempt.")
+	_ = cmd.MarkFlagRequired("identity-verification-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newIdentityVerificationCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyClientUserId string
+	var bodyGaveConsent bool
+	var bodyIsIdempotent bool
+	var bodyIsShareable bool
+	var bodySecret string
+	var bodyTemplateId string
+	var bodyUserId string
+
+	cmd := &cobra.Command{
+		Use:   "create",
+		Short: "Create a new Identity Verification",
+		Example: "  plaid-cli identity-verification create --template-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/identity_verification/create"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyClientUserId != "" {
+				body["client_user_id"] = bodyClientUserId
+			}
+			if bodyGaveConsent != false {
+				body["gave_consent"] = bodyGaveConsent
+			}
+			if bodyIsIdempotent != false {
+				body["is_idempotent"] = bodyIsIdempotent
+			}
+			if bodyIsShareable != false {
+				body["is_shareable"] = bodyIsShareable
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyTemplateId != "" {
+				body["template_id"] = bodyTemplateId
+			}
+			if bodyUserId != "" {
+				body["user_id"] = bodyUserId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyClientUserId, "client-user-id", "", "A unique ID that identifies the end user in your system. Either a `user_id` or the `client_user_id` must be...")
+	cmd.Flags().BoolVar(&bodyGaveConsent, "gave-consent", false, "A flag specifying whether the end user has already agreed to a privacy policy specifying that their data will be...")
+	_ = cmd.MarkFlagRequired("gave-consent")
+	cmd.Flags().BoolVar(&bodyIsIdempotent, "is-idempotent", false, "An optional flag specifying how you would like Plaid to handle attempts to create an Identity Verification when an...")
+	cmd.Flags().BoolVar(&bodyIsShareable, "is-shareable", false, "A flag specifying whether you would like Plaid to expose a shareable URL for the verification being created.")
+	_ = cmd.MarkFlagRequired("is-shareable")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyTemplateId, "template-id", "", "ID of the associated Identity Verification template. Like all Plaid identifiers, this is case-sensitive.")
+	_ = cmd.MarkFlagRequired("template-id")
+	cmd.Flags().StringVar(&bodyUserId, "user-id", "", "Unique user identifier, created by calling `/user/create`. Either a `user_id` or the `client_user_id` must be...")
+
+	return cmd
+}
+
+func newIdentityVerificationGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyIdentityVerificationId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "get",
+		Short: "Retrieve Identity Verification",
+		Example: "  plaid-cli identity-verification get --identity-verification-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/identity_verification/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyIdentityVerificationId != "" {
+				body["identity_verification_id"] = bodyIdentityVerificationId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyIdentityVerificationId, "identity-verification-id", "", "ID of the associated Identity Verification attempt.")
+	_ = cmd.MarkFlagRequired("identity-verification-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newIdentityVerificationListCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyClientUserId string
+	var bodyCursor string
+	var bodySecret string
+	var bodyTemplateId string
+
+	cmd := &cobra.Command{
+		Use:   "list",
+		Short: "List Identity Verifications",
+		Example: "  plaid-cli identity-verification list --template-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/identity_verification/list"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyClientUserId != "" {
+				body["client_user_id"] = bodyClientUserId
+			}
+			if bodyCursor != "" {
+				body["cursor"] = bodyCursor
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyTemplateId != "" {
+				body["template_id"] = bodyTemplateId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyClientUserId, "client-user-id", "", "A unique ID that identifies the end user in your system. Either a `user_id` or the `client_user_id` must be...")
+	cmd.Flags().StringVar(&bodyCursor, "cursor", "", "An identifier that determines which page of results you receive.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyTemplateId, "template-id", "", "ID of the associated Identity Verification template. Like all Plaid identifiers, this is case-sensitive.")
+	_ = cmd.MarkFlagRequired("template-id")
+
+	return cmd
+}
+
+func newIdentityVerificationRetryCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyClientUserId string
+	var bodyIsShareable bool
+	var bodySecret string
+	var bodyStrategy string
+	var bodyTemplateId string
+
+	cmd := &cobra.Command{
+		Use:   "retry",
+		Short: "Retry an Identity Verification",
+		Example: "  plaid-cli identity-verification retry --client-user-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/identity_verification/retry"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyClientUserId != "" {
+				body["client_user_id"] = bodyClientUserId
+			}
+			if bodyIsShareable != false {
+				body["is_shareable"] = bodyIsShareable
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyStrategy != "" {
+				body["strategy"] = bodyStrategy
+			}
+			if bodyTemplateId != "" {
+				body["template_id"] = bodyTemplateId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyClientUserId, "client-user-id", "", "A unique ID that identifies the end user in your system. Either a `user_id` or the `client_user_id` must be...")
+	_ = cmd.MarkFlagRequired("client-user-id")
+	cmd.Flags().BoolVar(&bodyIsShareable, "is-shareable", false, "A flag specifying whether you would like Plaid to expose a shareable URL for the verification being retried. If a...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyStrategy, "strategy", "", "An instruction specifying what steps the new Identity Verification attempt should require the user to complete:...")
+	_ = cmd.MarkFlagRequired("strategy")
+	cmd.Flags().StringVar(&bodyTemplateId, "template-id", "", "ID of the associated Identity Verification template. Like all Plaid identifiers, this is case-sensitive.")
+	_ = cmd.MarkFlagRequired("template-id")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/identity.go b/plaid-cli/internal/cli/identity.go
new file mode 100644
index 00000000..5955c260
--- /dev/null
+++ b/plaid-cli/internal/cli/identity.go
@@ -0,0 +1,196 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newIdentityCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "identity",
+		Short: "Manage identity",
+	}
+
+	cmd.AddCommand(newIdentityDocumentsUploadsGetCmd(flags))
+	cmd.AddCommand(newIdentityGetCmd(flags))
+	cmd.AddCommand(newIdentityMatchCmd(flags))
+	cmd.AddCommand(newIdentityRefreshCmd(flags))
+	return cmd
+}
+
+func newIdentityDocumentsUploadsGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "documents-uploads-get",
+		Aliases: []string{"create"},
+		Short: "Returns uploaded document identity",
+		Example: "  plaid-cli identity documents-uploads-get --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/identity/documents/uploads/get"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newIdentityGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "get",
+		Short: "Retrieve identity data",
+		Example: "  plaid-cli identity get --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/identity/get"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newIdentityMatchCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "match",
+		Short: "Retrieve identity match score",
+		Example: "  plaid-cli identity match --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/identity/match"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newIdentityRefreshCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "refresh",
+		Short: "Refresh identity data",
+		Example: "  plaid-cli identity refresh --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/identity/refresh"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/income.go b/plaid-cli/internal/cli/income.go
new file mode 100644
index 00000000..8e62a872
--- /dev/null
+++ b/plaid-cli/internal/cli/income.go
@@ -0,0 +1,255 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newIncomeCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "income",
+		Short: "Manage income",
+	}
+
+	cmd.AddCommand(newIncomeVerificationCreateCmd(flags))
+	cmd.AddCommand(newIncomeVerificationDocumentsDownloadCmd(flags))
+	cmd.AddCommand(newIncomeVerificationPaystubsGetCmd(flags))
+	cmd.AddCommand(newIncomeVerificationPrecheckCmd(flags))
+	cmd.AddCommand(newIncomeVerificationTaxformsGetCmd(flags))
+	return cmd
+}
+
+func newIncomeVerificationCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyPrecheckId string
+	var bodySecret string
+	var bodyWebhook string
+
+	cmd := &cobra.Command{
+		Use:   "verification-create",
+		Aliases: []string{"create"},
+		Short: "(Deprecated) Create an income verification instance",
+		Example: "  plaid-cli income verification-create --webhook value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/income/verification/create"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyPrecheckId != "" {
+				body["precheck_id"] = bodyPrecheckId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyWebhook != "" {
+				body["webhook"] = bodyWebhook
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyPrecheckId, "precheck-id", "", "The ID of a precheck created with `/income/verification/precheck`. Will be used to improve conversion of the income...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyWebhook, "webhook", "", "The URL endpoint to which Plaid should send webhooks related to the progress of the income verification process.")
+	_ = cmd.MarkFlagRequired("webhook")
+
+	return cmd
+}
+
+func newIncomeVerificationDocumentsDownloadCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodyDocumentId string
+	var bodyIncomeVerificationId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "verification-documents-download",
+		Short: "(Deprecated) Download the original documents used for income verification",
+		Example: "  plaid-cli income verification-documents-download",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/income/verification/documents/download"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyDocumentId != "" {
+				body["document_id"] = bodyDocumentId
+			}
+			if bodyIncomeVerificationId != "" {
+				body["income_verification_id"] = bodyIncomeVerificationId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyDocumentId, "document-id", "", "The document ID to download. If passed, a single document will be returned in the resulting zip file, rather than...")
+	cmd.Flags().StringVar(&bodyIncomeVerificationId, "income-verification-id", "", "The ID of the verification.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newIncomeVerificationPaystubsGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodyIncomeVerificationId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "verification-paystubs-get",
+		Short: "(Deprecated) Retrieve information from the paystubs used for income verification",
+		Example: "  plaid-cli income verification-paystubs-get",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/income/verification/paystubs/get"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyIncomeVerificationId != "" {
+				body["income_verification_id"] = bodyIncomeVerificationId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyIncomeVerificationId, "income-verification-id", "", "The ID of the verification for which to get paystub information.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newIncomeVerificationPrecheckCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "verification-precheck",
+		Short: "(Deprecated) Check digital income verification eligibility and optimize conversion",
+		Example: "  plaid-cli income verification-precheck",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/income/verification/precheck"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newIncomeVerificationTaxformsGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodyIncomeVerificationId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "verification-taxforms-get",
+		Short: "(Deprecated) Retrieve information from the tax documents used for income verification",
+		Example: "  plaid-cli income verification-taxforms-get",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/income/verification/taxforms/get"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyIncomeVerificationId != "" {
+				body["income_verification_id"] = bodyIncomeVerificationId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyIncomeVerificationId, "income-verification-id", "", "The ID of the verification.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/institutions.go b/plaid-cli/internal/cli/institutions.go
new file mode 100644
index 00000000..a6e8c1e8
--- /dev/null
+++ b/plaid-cli/internal/cli/institutions.go
@@ -0,0 +1,159 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newInstitutionsCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "institutions",
+		Short: "Manage institutions",
+	}
+
+	cmd.AddCommand(newInstitutionsGetCmd(flags))
+	cmd.AddCommand(newInstitutionsGetByIdCmd(flags))
+	cmd.AddCommand(newInstitutionsSearchCmd(flags))
+	return cmd
+}
+
+func newInstitutionsGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyCount int
+	var bodyOffset int
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "get",
+		Aliases: []string{"create"},
+		Short: "Get details of all supported institutions",
+		Example: "  plaid-cli institutions get",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/institutions/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCount != 0 {
+				body["count"] = bodyCount
+			}
+			if bodyOffset != 0 {
+				body["offset"] = bodyOffset
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().IntVar(&bodyCount, "count", 0, "The total number of Institutions to return.")
+	_ = cmd.MarkFlagRequired("count")
+	cmd.Flags().IntVar(&bodyOffset, "offset", 0, "The number of Institutions to skip.")
+	_ = cmd.MarkFlagRequired("offset")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newInstitutionsGetByIdCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyInstitutionId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "get-by-id",
+		Short: "Get details of an institution",
+		Example: "  plaid-cli institutions get-by-id --institution-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/institutions/get_by_id"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyInstitutionId != "" {
+				body["institution_id"] = bodyInstitutionId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyInstitutionId, "institution-id", "", "The ID of the institution to get details about")
+	_ = cmd.MarkFlagRequired("institution-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newInstitutionsSearchCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyQuery string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "search",
+		Short: "Search institutions",
+		Example: "  plaid-cli institutions search --query value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/institutions/search"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyQuery != "" {
+				body["query"] = bodyQuery
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyQuery, "query", "", "The search query. Institutions with names matching the query are returned")
+	_ = cmd.MarkFlagRequired("query")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/investments.go b/plaid-cli/internal/cli/investments.go
new file mode 100644
index 00000000..fda9c168
--- /dev/null
+++ b/plaid-cli/internal/cli/investments.go
@@ -0,0 +1,208 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newInvestmentsCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "investments",
+		Short: "Manage investments",
+	}
+
+	cmd.AddCommand(newInvestmentsAuthGetCmd(flags))
+	cmd.AddCommand(newInvestmentsHoldingsGetCmd(flags))
+	cmd.AddCommand(newInvestmentsRefreshCmd(flags))
+	cmd.AddCommand(newInvestmentsTransactionsGetCmd(flags))
+	return cmd
+}
+
+func newInvestmentsAuthGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "auth-get",
+		Aliases: []string{"create"},
+		Short: "Get data needed to authorize an investments transfer",
+		Example: "  plaid-cli investments auth-get --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/investments/auth/get"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newInvestmentsHoldingsGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "holdings-get",
+		Short: "Get Investment holdings",
+		Example: "  plaid-cli investments holdings-get --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/investments/holdings/get"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newInvestmentsRefreshCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "refresh",
+		Short: "Refresh investment data",
+		Example: "  plaid-cli investments refresh --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/investments/refresh"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newInvestmentsTransactionsGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodyEndDate string
+	var bodySecret string
+	var bodyStartDate string
+
+	cmd := &cobra.Command{
+		Use:   "transactions-get",
+		Short: "Get investment transactions",
+		Example: "  plaid-cli investments transactions-get --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/investments/transactions/get"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyEndDate != "" {
+				body["end_date"] = bodyEndDate
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyStartDate != "" {
+				body["start_date"] = bodyStartDate
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyEndDate, "end-date", "", "The most recent date for which to fetch transaction history. Dates should be formatted as YYYY-MM-DD.")
+	_ = cmd.MarkFlagRequired("end-date")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyStartDate, "start-date", "", "The earliest date for which to fetch transaction history. Dates should be formatted as YYYY-MM-DD.")
+	_ = cmd.MarkFlagRequired("start-date")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/issues.go b/plaid-cli/internal/cli/issues.go
new file mode 100644
index 00000000..27d3736a
--- /dev/null
+++ b/plaid-cli/internal/cli/issues.go
@@ -0,0 +1,168 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newIssuesCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "issues",
+		Short: "Manage issues",
+	}
+
+	cmd.AddCommand(newIssuesGetCmd(flags))
+	cmd.AddCommand(newIssuesSearchCmd(flags))
+	cmd.AddCommand(newIssuesSubscribeCmd(flags))
+	return cmd
+}
+
+func newIssuesGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyIssueId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "get",
+		Aliases: []string{"create"},
+		Short: "Get an Issue",
+		Example: "  plaid-cli issues get --issue-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/issues/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyIssueId != "" {
+				body["issue_id"] = bodyIssueId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyIssueId, "issue-id", "", "The unique identifier of the issue to retrieve.")
+	_ = cmd.MarkFlagRequired("issue-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newIssuesSearchCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyItemId string
+	var bodyLinkSessionId string
+	var bodyLinkSessionRequestId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "search",
+		Short: "Search for an Issue",
+		Example: "  plaid-cli issues search",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/issues/search"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyItemId != "" {
+				body["item_id"] = bodyItemId
+			}
+			if bodyLinkSessionId != "" {
+				body["link_session_id"] = bodyLinkSessionId
+			}
+			if bodyLinkSessionRequestId != "" {
+				body["link_session_request_id"] = bodyLinkSessionRequestId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyItemId, "item-id", "", "A unique identifier for the Plaid Item.")
+	cmd.Flags().StringVar(&bodyLinkSessionId, "link-session-id", "", "A unique identifier for the Link session.")
+	cmd.Flags().StringVar(&bodyLinkSessionRequestId, "link-session-request-id", "", "The `request_id` for the Link session that might have had an institution connection issue.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newIssuesSubscribeCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyIssueId string
+	var bodySecret string
+	var bodyWebhook string
+
+	cmd := &cobra.Command{
+		Use:   "subscribe",
+		Short: "Subscribe to an Issue",
+		Example: "  plaid-cli issues subscribe --issue-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/issues/subscribe"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyIssueId != "" {
+				body["issue_id"] = bodyIssueId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyWebhook != "" {
+				body["webhook"] = bodyWebhook
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyIssueId, "issue-id", "", "The unique identifier of the issue to subscribe to.")
+	_ = cmd.MarkFlagRequired("issue-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyWebhook, "webhook", "", "The webhook URL where notifications should be sent when the issue status changes.")
+	_ = cmd.MarkFlagRequired("webhook")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/item.go b/plaid-cli/internal/cli/item.go
new file mode 100644
index 00000000..7a239288
--- /dev/null
+++ b/plaid-cli/internal/cli/item.go
@@ -0,0 +1,542 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newItemCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "item",
+		Short: "Manage item",
+	}
+
+	cmd.AddCommand(newItemAccessTokenInvalidateCmd(flags))
+	cmd.AddCommand(newItemActivityListCmd(flags))
+	cmd.AddCommand(newItemApplicationListCmd(flags))
+	cmd.AddCommand(newItemApplicationScopesUpdateCmd(flags))
+	cmd.AddCommand(newItemApplicationUnlinkCmd(flags))
+	cmd.AddCommand(newItemCreatePublicTokenCmd(flags))
+	cmd.AddCommand(newItemGetCmd(flags))
+	cmd.AddCommand(newItemImportCmd(flags))
+	cmd.AddCommand(newItemPublicTokenExchangeCmd(flags))
+	cmd.AddCommand(newItemRemoveCmd(flags))
+	cmd.AddCommand(newItemWebhookUpdateCmd(flags))
+	return cmd
+}
+
+func newItemAccessTokenInvalidateCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "access-token-invalidate",
+		Aliases: []string{"create"},
+		Short: "Invalidate access_token",
+		Example: "  plaid-cli item access-token-invalidate --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/item/access_token/invalidate"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newItemActivityListCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodyCount int
+	var bodyCursor string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "activity-list",
+		Short: "List a historical log of user consent events",
+		Example: "  plaid-cli item activity-list",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/item/activity/list"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCount != 0 {
+				body["count"] = bodyCount
+			}
+			if bodyCursor != "" {
+				body["cursor"] = bodyCursor
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().IntVar(&bodyCount, "count", 50, "Count")
+	cmd.Flags().StringVar(&bodyCursor, "cursor", "", "Cursor used for pagination.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newItemApplicationListCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "application-list",
+		Short: "List a user’s connected applications",
+		Example: "  plaid-cli item application-list",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/item/application/list"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newItemApplicationScopesUpdateCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyApplicationId string
+	var bodyClientId string
+	var bodyContext string
+	var bodySecret string
+	var bodyState string
+
+	cmd := &cobra.Command{
+		Use:   "application-scopes-update",
+		Short: "Update the scopes of access for a particular application",
+		Example: "  plaid-cli item application-scopes-update --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/item/application/scopes/update"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyApplicationId != "" {
+				body["application_id"] = bodyApplicationId
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyContext != "" {
+				body["context"] = bodyContext
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyState != "" {
+				body["state"] = bodyState
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyApplicationId, "application-id", "", "This field will map to the application ID that is returned from /item/application/list, or provided to the...")
+	_ = cmd.MarkFlagRequired("application-id")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyContext, "context", "", "An indicator for when scopes are being updated. When scopes are updated via enrollment (i.e. OAuth), the partner...")
+	_ = cmd.MarkFlagRequired("context")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyState, "state", "", "When scopes are updated during enrollment, this field must be populated with the state sent to the partner in the...")
+
+	return cmd
+}
+
+func newItemApplicationUnlinkCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyApplicationId string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "application-unlink",
+		Short: "Unlink a user’s connected application",
+		Example: "  plaid-cli item application-unlink --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/item/application/unlink"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyApplicationId != "" {
+				body["application_id"] = bodyApplicationId
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyApplicationId, "application-id", "", "This field will map to the application ID that is returned from /item/application/list, or provided to the...")
+	_ = cmd.MarkFlagRequired("application-id")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newItemCreatePublicTokenCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "create-public-token",
+		Short: "Create public token",
+		Example: "  plaid-cli item create-public-token --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/item/public_token/create"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newItemGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "get",
+		Short: "Retrieve an Item",
+		Example: "  plaid-cli item get --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/item/get"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newItemImportCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyInstitutionId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "import",
+		Short: "Import Item",
+		Example: "  plaid-cli item import",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/item/import"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyInstitutionId != "" {
+				body["institution_id"] = bodyInstitutionId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyInstitutionId, "institution-id", "", "The Plaid Institution ID associated with the Item.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newItemPublicTokenExchangeCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyPublicToken string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "public-token-exchange",
+		Short: "Exchange public token for an access token",
+		Example: "  plaid-cli item public-token-exchange --public-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/item/public_token/exchange"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyPublicToken != "" {
+				body["public_token"] = bodyPublicToken
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyPublicToken, "public-token", "", "Your `public_token`, obtained from the Link `onSuccess` callback or `/sandbox/item/public_token/create`.")
+	_ = cmd.MarkFlagRequired("public-token")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newItemRemoveCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodyReasonCode string
+	var bodyReasonNote string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "remove",
+		Short: "Remove an Item",
+		Example: "  plaid-cli item remove --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/item/remove"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyReasonCode != "" {
+				body["reason_code"] = bodyReasonCode
+			}
+			if bodyReasonNote != "" {
+				body["reason_note"] = bodyReasonNote
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyReasonCode, "reason-code", "", "The reason for removing the item `FRAUD_FIRST_PARTY`: The end user who owns the connected bank account committed...")
+	cmd.Flags().StringVar(&bodyReasonNote, "reason-note", "", "Additional context or details about the reason for removing the item. Personally identifiable information, such as...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newItemWebhookUpdateCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodySecret string
+	var bodyWebhook string
+
+	cmd := &cobra.Command{
+		Use:   "webhook-update",
+		Short: "Update Webhook URL",
+		Example: "  plaid-cli item webhook-update --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/item/webhook/update"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyWebhook != "" {
+				body["webhook"] = bodyWebhook
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyWebhook, "webhook", "", "The new webhook URL to associate with the Item. To remove a webhook from an Item, set to `null`.")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/liabilities.go b/plaid-cli/internal/cli/liabilities.go
new file mode 100644
index 00000000..a7bd81ed
--- /dev/null
+++ b/plaid-cli/internal/cli/liabilities.go
@@ -0,0 +1,67 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newLiabilitiesCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "liabilities",
+		Short: "Manage liabilities",
+	}
+
+	cmd.AddCommand(newLiabilitiesGetCmd(flags))
+	return cmd
+}
+
+func newLiabilitiesGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "get",
+		Aliases: []string{"create"},
+		Short: "Retrieve Liabilities data",
+		Example: "  plaid-cli liabilities get --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/liabilities/get"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/link-delivery.go b/plaid-cli/internal/cli/link-delivery.go
new file mode 100644
index 00000000..4d8957e5
--- /dev/null
+++ b/plaid-cli/internal/cli/link-delivery.go
@@ -0,0 +1,109 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newLinkDeliveryCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "link-delivery",
+		Short: "Manage link delivery",
+	}
+
+	cmd.AddCommand(newLinkDeliveryCreateCmd(flags))
+	cmd.AddCommand(newLinkDeliveryGetCmd(flags))
+	return cmd
+}
+
+func newLinkDeliveryCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyLinkToken string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "create",
+		Short: "Create Hosted Link session",
+		Example: "  plaid-cli link-delivery create --link-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/link_delivery/create"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyLinkToken != "" {
+				body["link_token"] = bodyLinkToken
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyLinkToken, "link-token", "", "A `link_token` from a previous invocation of `/link/token/create`.")
+	_ = cmd.MarkFlagRequired("link-token")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newLinkDeliveryGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyLinkDeliverySessionId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "get",
+		Short: "Get Hosted Link session",
+		Example: "  plaid-cli link-delivery get --link-delivery-session-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/link_delivery/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyLinkDeliverySessionId != "" {
+				body["link_delivery_session_id"] = bodyLinkDeliverySessionId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyLinkDeliverySessionId, "link-delivery-session-id", "", "The ID for the Hosted Link session from a previous invocation of `/link_delivery/create`.")
+	_ = cmd.MarkFlagRequired("link-delivery-session-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/link.go b/plaid-cli/internal/cli/link.go
new file mode 100644
index 00000000..4764bd41
--- /dev/null
+++ b/plaid-cli/internal/cli/link.go
@@ -0,0 +1,229 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newLinkCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "link",
+		Short: "Manage link",
+	}
+
+	cmd.AddCommand(newLinkOauthCorrelationIdExchangeCmd(flags))
+	cmd.AddCommand(newLinkTokenCreateCmd(flags))
+	cmd.AddCommand(newLinkTokenGetCmd(flags))
+	return cmd
+}
+
+func newLinkOauthCorrelationIdExchangeCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyLinkCorrelationId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "oauth-correlation-id-exchange",
+		Aliases: []string{"create"},
+		Short: "Exchange the Link Correlation Id for a Link Token",
+		Example: "  plaid-cli link oauth-correlation-id-exchange --link-correlation-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/link/oauth/correlation_id/exchange"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyLinkCorrelationId != "" {
+				body["link_correlation_id"] = bodyLinkCorrelationId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyLinkCorrelationId, "link-correlation-id", "", "A `link_correlation_id` from a received OAuth redirect URI callback")
+	_ = cmd.MarkFlagRequired("link-correlation-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newLinkTokenCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyAndroidPackageName string
+	var bodyAppearanceMode string
+	var bodyClientId string
+	var bodyClientName string
+	var bodyConsumerReportPermissiblePurpose string
+	var bodyCraEnabled bool
+	var bodyEnableMultiItemLink bool
+	var bodyFinancekitSupported bool
+	var bodyInstitutionId string
+	var bodyLanguage string
+	var bodyLinkCustomizationName string
+	var bodyRedirectUri string
+	var bodySecret string
+	var bodyThirdPartyUserToken string
+	var bodyUserId string
+	var bodyUserToken string
+	var bodyWebhook string
+
+	cmd := &cobra.Command{
+		Use:   "token-create",
+		Short: "Create Link Token",
+		Example: "  plaid-cli link token-create --client-name value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/link/token/create"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyAndroidPackageName != "" {
+				body["android_package_name"] = bodyAndroidPackageName
+			}
+			if bodyAppearanceMode != "" {
+				body["appearance_mode"] = bodyAppearanceMode
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyClientName != "" {
+				body["client_name"] = bodyClientName
+			}
+			if bodyConsumerReportPermissiblePurpose != "" {
+				body["consumer_report_permissible_purpose"] = bodyConsumerReportPermissiblePurpose
+			}
+			if bodyCraEnabled != false {
+				body["cra_enabled"] = bodyCraEnabled
+			}
+			if bodyEnableMultiItemLink != false {
+				body["enable_multi_item_link"] = bodyEnableMultiItemLink
+			}
+			if bodyFinancekitSupported != false {
+				body["financekit_supported"] = bodyFinancekitSupported
+			}
+			if bodyInstitutionId != "" {
+				body["institution_id"] = bodyInstitutionId
+			}
+			if bodyLanguage != "" {
+				body["language"] = bodyLanguage
+			}
+			if bodyLinkCustomizationName != "" {
+				body["link_customization_name"] = bodyLinkCustomizationName
+			}
+			if bodyRedirectUri != "" {
+				body["redirect_uri"] = bodyRedirectUri
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyThirdPartyUserToken != "" {
+				body["third_party_user_token"] = bodyThirdPartyUserToken
+			}
+			if bodyUserId != "" {
+				body["user_id"] = bodyUserId
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			if bodyWebhook != "" {
+				body["webhook"] = bodyWebhook
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The `access_token` associated with the Item to update or reference, used when updating, modifying, or accessing an...")
+	cmd.Flags().StringVar(&bodyAndroidPackageName, "android-package-name", "", "The name of your app's Android package. Required if using the `link_token` to initialize Link on Android. Any...")
+	cmd.Flags().StringVar(&bodyAppearanceMode, "appearance-mode", "", "Enum representing the desired appearance mode for Link, used to force light or dark modes or set Link to change...")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyClientName, "client-name", "", "The name of your application, as it should be displayed in Link. Maximum length of 30 characters. If a value longer...")
+	_ = cmd.MarkFlagRequired("client-name")
+	cmd.Flags().StringVar(&bodyConsumerReportPermissiblePurpose, "consumer-report-permissible-purpose", "", "Describes the reason you are generating a Consumer Report for this user. When calling `/link/token/create`, this...")
+	cmd.Flags().BoolVar(&bodyCraEnabled, "cra-enabled", false, "If `true`, request a CRA connection. Defaults to `false`.")
+	cmd.Flags().BoolVar(&bodyEnableMultiItemLink, "enable-multi-item-link", false, "If `true`, enable linking multiple items in the same Link session. Defaults to `false`.")
+	cmd.Flags().BoolVar(&bodyFinancekitSupported, "financekit-supported", false, "If `true`, indicates that client supports linking FinanceKit / AppleCard items. Defaults to `false`.")
+	cmd.Flags().StringVar(&bodyInstitutionId, "institution-id", "", "Used for certain legacy use cases")
+	cmd.Flags().StringVar(&bodyLanguage, "language", "", "The language that Link should be displayed in. When initializing with Identity Verification, this field is not used;...")
+	_ = cmd.MarkFlagRequired("language")
+	cmd.Flags().StringVar(&bodyLinkCustomizationName, "link-customization-name", "", "The name of the Link customization from the Plaid Dashboard to be applied to Link. If not specified, the `default`...")
+	cmd.Flags().StringVar(&bodyRedirectUri, "redirect-uri", "", "A URI indicating the destination where a user should be forwarded after completing the Link flow; used to support...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyThirdPartyUserToken, "third-party-user-token", "", "A third party user token associated with the current user.")
+	cmd.Flags().StringVar(&bodyUserId, "user-id", "", "A `user_id` generated using `/user/create`. Required for integrations that began using Plaid Protect, Multi-Item...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "A user token generated using `/user/create`. Any Item created during the Link session will be associated with the...")
+	cmd.Flags().StringVar(&bodyWebhook, "webhook", "", "The destination URL to which any webhooks should be sent. Note that webhooks for Payment Initiation (e-wallet...")
+
+	return cmd
+}
+
+func newLinkTokenGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyLinkToken string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "token-get",
+		Short: "Get Link Token",
+		Example: "  plaid-cli link token-get --link-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/link/token/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyLinkToken != "" {
+				body["link_token"] = bodyLinkToken
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyLinkToken, "link-token", "", "A `link_token` from a previous invocation of `/link/token/create`")
+	_ = cmd.MarkFlagRequired("link-token")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/network-insights.go b/plaid-cli/internal/cli/network-insights.go
new file mode 100644
index 00000000..8251973e
--- /dev/null
+++ b/plaid-cli/internal/cli/network-insights.go
@@ -0,0 +1,61 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newNetworkInsightsCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "network-insights",
+		Short: "Manage network insights",
+	}
+
+	cmd.AddCommand(newNetworkInsightsReportGetCmd(flags))
+	return cmd
+}
+
+func newNetworkInsightsReportGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "report-get",
+		Aliases: []string{"create"},
+		Short: "Retrieve network insights for the provided `access_tokens`",
+		Example: "  plaid-cli network-insights report-get",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/network_insights/report/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/network.go b/plaid-cli/internal/cli/network.go
new file mode 100644
index 00000000..b58a082e
--- /dev/null
+++ b/plaid-cli/internal/cli/network.go
@@ -0,0 +1,66 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newNetworkCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "network",
+		Short: "Manage network",
+	}
+
+	cmd.AddCommand(newNetworkStatusGetCmd(flags))
+	return cmd
+}
+
+func newNetworkStatusGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyTemplateId string
+
+	cmd := &cobra.Command{
+		Use:   "status-get",
+		Aliases: []string{"create"},
+		Short: "Check a user's Plaid Network status",
+		Example: "  plaid-cli network status-get",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/network/status/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyTemplateId != "" {
+				body["template_id"] = bodyTemplateId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyTemplateId, "template-id", "", "The id of a template defined in Plaid Dashboard. This field is used if you have additional criteria that you want to...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/oauth.go b/plaid-cli/internal/cli/oauth.go
new file mode 100644
index 00000000..06887e7b
--- /dev/null
+++ b/plaid-cli/internal/cli/oauth.go
@@ -0,0 +1,198 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newOauthCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "oauth",
+		Short: "Manage oauth",
+	}
+
+	cmd.AddCommand(newOauthIntrospectCmd(flags))
+	cmd.AddCommand(newOauthRevokeCmd(flags))
+	cmd.AddCommand(newOauthTokenCmd(flags))
+	return cmd
+}
+
+func newOauthIntrospectCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyClientSecret string
+	var bodySecret string
+	var bodyToken string
+
+	cmd := &cobra.Command{
+		Use:   "introspect",
+		Aliases: []string{"create"},
+		Short: "Get metadata about an OAuth token",
+		Example: "  plaid-cli oauth introspect --token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/oauth/introspect"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyClientSecret != "" {
+				body["client_secret"] = bodyClientSecret
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyToken != "" {
+				body["token"] = bodyToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyClientSecret, "client-secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyToken, "token", "", "An OAuth token of any type (`refresh_token`, `access_token`, etc)")
+	_ = cmd.MarkFlagRequired("token")
+
+	return cmd
+}
+
+func newOauthRevokeCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyClientSecret string
+	var bodySecret string
+	var bodyToken string
+
+	cmd := &cobra.Command{
+		Use:   "revoke",
+		Short: "Revoke an OAuth token",
+		Example: "  plaid-cli oauth revoke --token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/oauth/revoke"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyClientSecret != "" {
+				body["client_secret"] = bodyClientSecret
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyToken != "" {
+				body["token"] = bodyToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyClientSecret, "client-secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyToken, "token", "", "An OAuth token of any type (`refresh_token`, `access_token`, etc)")
+	_ = cmd.MarkFlagRequired("token")
+
+	return cmd
+}
+
+func newOauthTokenCmd(flags *rootFlags) *cobra.Command {
+	var bodyAudience string
+	var bodyClientId string
+	var bodyClientSecret string
+	var bodyGrantType string
+	var bodyRefreshToken string
+	var bodyResource string
+	var bodyScope string
+	var bodySecret string
+	var bodySubjectToken string
+	var bodySubjectTokenType string
+
+	cmd := &cobra.Command{
+		Use:   "token",
+		Short: "Create or refresh an OAuth access token",
+		Example: "  plaid-cli oauth token --grant-type value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/oauth/token"
+			body := map[string]any{}
+			if bodyAudience != "" {
+				body["audience"] = bodyAudience
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyClientSecret != "" {
+				body["client_secret"] = bodyClientSecret
+			}
+			if bodyGrantType != "" {
+				body["grant_type"] = bodyGrantType
+			}
+			if bodyRefreshToken != "" {
+				body["refresh_token"] = bodyRefreshToken
+			}
+			if bodyResource != "" {
+				body["resource"] = bodyResource
+			}
+			if bodyScope != "" {
+				body["scope"] = bodyScope
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodySubjectToken != "" {
+				body["subject_token"] = bodySubjectToken
+			}
+			if bodySubjectTokenType != "" {
+				body["subject_token_type"] = bodySubjectTokenType
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAudience, "audience", "", "Used when exchanging a token. The meaning depends on the `subject_token_type`: - For `urn:plaid:params:tokens:user`:...")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyClientSecret, "client-secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyGrantType, "grant-type", "", "The type of OAuth grant being requested: `client_credentials` allows exchanging a client id and client secret for a...")
+	_ = cmd.MarkFlagRequired("grant-type")
+	cmd.Flags().StringVar(&bodyRefreshToken, "refresh-token", "", "Refresh token for OAuth")
+	cmd.Flags().StringVar(&bodyResource, "resource", "", "URI of the target resource server")
+	cmd.Flags().StringVar(&bodyScope, "scope", "", "A JSON string containing a space-separated list of scopes associated with this token, in the format described in...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodySubjectToken, "subject-token", "", "Token representing the subject. The `subject token` must be an OAuth refresh token issued from the `/oauth/token`...")
+	cmd.Flags().StringVar(&bodySubjectTokenType, "subject-token-type", "", "The type of the subject token. `urn:plaid:params:tokens:user` allows exchanging a Plaid-issued user token for an...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/partner.go b/plaid-cli/internal/cli/partner.go
new file mode 100644
index 00000000..97de2945
--- /dev/null
+++ b/plaid-cli/internal/cli/partner.go
@@ -0,0 +1,284 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newPartnerCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "partner",
+		Short: "Manage partner",
+	}
+
+	cmd.AddCommand(newPartnerCustomerCreateCmd(flags))
+	cmd.AddCommand(newPartnerCustomerEnableCmd(flags))
+	cmd.AddCommand(newPartnerCustomerGetCmd(flags))
+	cmd.AddCommand(newPartnerCustomerOauthInstitutionsGetCmd(flags))
+	cmd.AddCommand(newPartnerCustomerRemoveCmd(flags))
+	return cmd
+}
+
+func newPartnerCustomerCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyApplicationName string
+	var bodyClientId string
+	var bodyCompanyName string
+	var bodyCreateLinkCustomization bool
+	var bodyIsBankAddendumCompleted bool
+	var bodyIsDiligenceAttested bool
+	var bodyLegalEntityName string
+	var bodyLogo string
+	var bodyRegistrationNumber string
+	var bodySecret string
+	var bodyWebsite string
+
+	cmd := &cobra.Command{
+		Use:   "customer-create",
+		Aliases: []string{"create"},
+		Short: "Creates a new end customer for a Plaid reseller.",
+		Example: "  plaid-cli partner customer-create --application-name value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/partner/customer/create"
+			body := map[string]any{}
+			if bodyApplicationName != "" {
+				body["application_name"] = bodyApplicationName
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCompanyName != "" {
+				body["company_name"] = bodyCompanyName
+			}
+			if bodyCreateLinkCustomization != false {
+				body["create_link_customization"] = bodyCreateLinkCustomization
+			}
+			if bodyIsBankAddendumCompleted != false {
+				body["is_bank_addendum_completed"] = bodyIsBankAddendumCompleted
+			}
+			if bodyIsDiligenceAttested != false {
+				body["is_diligence_attested"] = bodyIsDiligenceAttested
+			}
+			if bodyLegalEntityName != "" {
+				body["legal_entity_name"] = bodyLegalEntityName
+			}
+			if bodyLogo != "" {
+				body["logo"] = bodyLogo
+			}
+			if bodyRegistrationNumber != "" {
+				body["registration_number"] = bodyRegistrationNumber
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyWebsite != "" {
+				body["website"] = bodyWebsite
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyApplicationName, "application-name", "", "The name of the end customer's application. This will be shown to end users when they go through the Plaid Link...")
+	_ = cmd.MarkFlagRequired("application-name")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyCompanyName, "company-name", "", "The company name of the end customer being created. This will be used to display the end customer in the Plaid...")
+	_ = cmd.MarkFlagRequired("company-name")
+	cmd.Flags().BoolVar(&bodyCreateLinkCustomization, "create-link-customization", false, "If `true`, the end customer's default Link customization will be set to match the partner's. You can always change...")
+	cmd.Flags().BoolVar(&bodyIsBankAddendumCompleted, "is-bank-addendum-completed", false, "Denotes whether the partner has forwarded the Plaid bank addendum to the end customer.")
+	_ = cmd.MarkFlagRequired("is-bank-addendum-completed")
+	cmd.Flags().BoolVar(&bodyIsDiligenceAttested, "is-diligence-attested", false, "Denotes whether or not the partner has completed attestation of diligence for the end customer to be created.")
+	_ = cmd.MarkFlagRequired("is-diligence-attested")
+	cmd.Flags().StringVar(&bodyLegalEntityName, "legal-entity-name", "", "The end customer's legal name. This will be shared with financial institutions as part of the OAuth registration...")
+	_ = cmd.MarkFlagRequired("legal-entity-name")
+	cmd.Flags().StringVar(&bodyLogo, "logo", "", "Base64-encoded representation of the end customer's logo. Must be a PNG of size 1024x1024 under 4MB. The logo will...")
+	cmd.Flags().StringVar(&bodyRegistrationNumber, "registration-number", "", "The unique identifier assigned to a financial institution by regulatory authorities, if applicable. For banks, this...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyWebsite, "website", "", "The end customer's website.")
+	_ = cmd.MarkFlagRequired("website")
+
+	return cmd
+}
+
+func newPartnerCustomerEnableCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyEndCustomerClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "customer-enable",
+		Short: "Enables a Plaid reseller's end customer in the Production environment.",
+		Example: "  plaid-cli partner customer-enable --end-customer-client-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/partner/customer/enable"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyEndCustomerClientId != "" {
+				body["end_customer_client_id"] = bodyEndCustomerClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyEndCustomerClientId, "end-customer-client-id", "", "End customer client id")
+	_ = cmd.MarkFlagRequired("end-customer-client-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newPartnerCustomerGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyEndCustomerClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "customer-get",
+		Short: "Returns a Plaid reseller's end customer.",
+		Example: "  plaid-cli partner customer-get --end-customer-client-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/partner/customer/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyEndCustomerClientId != "" {
+				body["end_customer_client_id"] = bodyEndCustomerClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyEndCustomerClientId, "end-customer-client-id", "", "End customer client id")
+	_ = cmd.MarkFlagRequired("end-customer-client-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newPartnerCustomerOauthInstitutionsGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyEndCustomerClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "customer-oauth-institutions-get",
+		Short: "Returns OAuth-institution registration information for a given end customer.",
+		Example: "  plaid-cli partner customer-oauth-institutions-get --end-customer-client-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/partner/customer/oauth_institutions/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyEndCustomerClientId != "" {
+				body["end_customer_client_id"] = bodyEndCustomerClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyEndCustomerClientId, "end-customer-client-id", "", "End customer client id")
+	_ = cmd.MarkFlagRequired("end-customer-client-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newPartnerCustomerRemoveCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyEndCustomerClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "customer-remove",
+		Short: "Removes a Plaid reseller's end customer.",
+		Example: "  plaid-cli partner customer-remove --end-customer-client-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/partner/customer/remove"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyEndCustomerClientId != "" {
+				body["end_customer_client_id"] = bodyEndCustomerClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyEndCustomerClientId, "end-customer-client-id", "", "The `client_id` of the end customer to be removed.")
+	_ = cmd.MarkFlagRequired("end-customer-client-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/payment-initiation.go b/plaid-cli/internal/cli/payment-initiation.go
new file mode 100644
index 00000000..f20d1ed7
--- /dev/null
+++ b/plaid-cli/internal/cli/payment-initiation.go
@@ -0,0 +1,608 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newPaymentInitiationCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "payment-initiation",
+		Short: "Manage payment initiation",
+	}
+
+	cmd.AddCommand(newPaymentInitiationConsentCreateCmd(flags))
+	cmd.AddCommand(newPaymentInitiationConsentGetCmd(flags))
+	cmd.AddCommand(newPaymentInitiationConsentPaymentExecuteCmd(flags))
+	cmd.AddCommand(newPaymentInitiationConsentRevokeCmd(flags))
+	cmd.AddCommand(newPaymentInitiationCreatePaymentTokenCmd(flags))
+	cmd.AddCommand(newPaymentInitiationPaymentCreateCmd(flags))
+	cmd.AddCommand(newPaymentInitiationPaymentGetCmd(flags))
+	cmd.AddCommand(newPaymentInitiationPaymentListCmd(flags))
+	cmd.AddCommand(newPaymentInitiationPaymentReverseCmd(flags))
+	cmd.AddCommand(newPaymentInitiationRecipientCreateCmd(flags))
+	cmd.AddCommand(newPaymentInitiationRecipientGetCmd(flags))
+	cmd.AddCommand(newPaymentInitiationRecipientListCmd(flags))
+	return cmd
+}
+
+func newPaymentInitiationConsentCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyRecipientId string
+	var bodyReference string
+	var bodySecret string
+	var bodyType string
+
+	cmd := &cobra.Command{
+		Use:   "consent-create",
+		Aliases: []string{"create"},
+		Short: "Create payment consent",
+		Example: "  plaid-cli payment-initiation consent-create --recipient-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/payment_initiation/consent/create"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyRecipientId != "" {
+				body["recipient_id"] = bodyRecipientId
+			}
+			if bodyReference != "" {
+				body["reference"] = bodyReference
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyType != "" {
+				body["type"] = bodyType
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyRecipientId, "recipient-id", "", "The ID of the recipient the payment consent is for. The created consent can be used to transfer funds to this...")
+	_ = cmd.MarkFlagRequired("recipient-id")
+	cmd.Flags().StringVar(&bodyReference, "reference", "", "A reference for the payment consent. This must be an alphanumeric string with at most 18 characters and must not...")
+	_ = cmd.MarkFlagRequired("reference")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyType, "type", "", "Payment consent type. Defines possible use case for payments made with the given consent. `SWEEPING`: Allows moving...")
+
+	return cmd
+}
+
+func newPaymentInitiationConsentGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyConsentId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "consent-get",
+		Short: "Get payment consent",
+		Example: "  plaid-cli payment-initiation consent-get --consent-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/payment_initiation/consent/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyConsentId != "" {
+				body["consent_id"] = bodyConsentId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyConsentId, "consent-id", "", "The `consent_id` returned from `/payment_initiation/consent/create`.")
+	_ = cmd.MarkFlagRequired("consent-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newPaymentInitiationConsentPaymentExecuteCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyConsentId string
+	var bodyIdempotencyKey string
+	var bodyProcessingMode string
+	var bodyReference string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "consent-payment-execute",
+		Short: "Execute a single payment using consent",
+		Example: "  plaid-cli payment-initiation consent-payment-execute --consent-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/payment_initiation/consent/payment/execute"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyConsentId != "" {
+				body["consent_id"] = bodyConsentId
+			}
+			if bodyIdempotencyKey != "" {
+				body["idempotency_key"] = bodyIdempotencyKey
+			}
+			if bodyProcessingMode != "" {
+				body["processing_mode"] = bodyProcessingMode
+			}
+			if bodyReference != "" {
+				body["reference"] = bodyReference
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyConsentId, "consent-id", "", "The consent ID.")
+	_ = cmd.MarkFlagRequired("consent-id")
+	cmd.Flags().StringVar(&bodyIdempotencyKey, "idempotency-key", "", "A random key provided by the client, per unique consent payment. Maximum of 128 characters. The API supports...")
+	_ = cmd.MarkFlagRequired("idempotency-key")
+	cmd.Flags().StringVar(&bodyProcessingMode, "processing-mode", "", "Decides the mode under which the payment processing should be performed, using `IMMEDIATE` as default. `IMMEDIATE`:...")
+	cmd.Flags().StringVar(&bodyReference, "reference", "", "A reference for the payment. This must be an alphanumeric string with at most 18 characters and must not contain any...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newPaymentInitiationConsentRevokeCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyConsentId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "consent-revoke",
+		Short: "Revoke payment consent",
+		Example: "  plaid-cli payment-initiation consent-revoke --consent-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/payment_initiation/consent/revoke"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyConsentId != "" {
+				body["consent_id"] = bodyConsentId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyConsentId, "consent-id", "", "The consent ID.")
+	_ = cmd.MarkFlagRequired("consent-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newPaymentInitiationCreatePaymentTokenCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyPaymentId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "create-payment-token",
+		Short: "Create payment token",
+		Example: "  plaid-cli payment-initiation create-payment-token --payment-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/payment_initiation/payment/token/create"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyPaymentId != "" {
+				body["payment_id"] = bodyPaymentId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyPaymentId, "payment-id", "", "The `payment_id` returned from `/payment_initiation/payment/create`.")
+	_ = cmd.MarkFlagRequired("payment-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newPaymentInitiationPaymentCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyRecipientId string
+	var bodyReference string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "payment-create",
+		Short: "Create a payment",
+		Example: "  plaid-cli payment-initiation payment-create --recipient-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/payment_initiation/payment/create"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyRecipientId != "" {
+				body["recipient_id"] = bodyRecipientId
+			}
+			if bodyReference != "" {
+				body["reference"] = bodyReference
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyRecipientId, "recipient-id", "", "The ID of the recipient the payment is for.")
+	_ = cmd.MarkFlagRequired("recipient-id")
+	cmd.Flags().StringVar(&bodyReference, "reference", "", "A reference for the payment. This must be an alphanumeric string with at most 18 characters and must not contain any...")
+	_ = cmd.MarkFlagRequired("reference")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newPaymentInitiationPaymentGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyPaymentId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "payment-get",
+		Short: "Get payment details",
+		Example: "  plaid-cli payment-initiation payment-get --payment-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/payment_initiation/payment/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyPaymentId != "" {
+				body["payment_id"] = bodyPaymentId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyPaymentId, "payment-id", "", "The `payment_id` returned from `/payment_initiation/payment/create`.")
+	_ = cmd.MarkFlagRequired("payment-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newPaymentInitiationPaymentListCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyConsentId string
+	var bodyCount int
+	var bodyCursor string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "payment-list",
+		Short: "List payments",
+		Example: "  plaid-cli payment-initiation payment-list",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/payment_initiation/payment/list"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyConsentId != "" {
+				body["consent_id"] = bodyConsentId
+			}
+			if bodyCount != 0 {
+				body["count"] = bodyCount
+			}
+			if bodyCursor != "" {
+				body["cursor"] = bodyCursor
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyConsentId, "consent-id", "", "The consent ID. If specified, only payments, executed using this consent, will be returned.")
+	cmd.Flags().IntVar(&bodyCount, "count", 10, "The maximum number of payments to return. If `count` is not specified, a maximum of 10 payments will be returned,...")
+	cmd.Flags().StringVar(&bodyCursor, "cursor", "", "A string in RFC 3339 format (i.e. '2019-12-06T22:35:49Z'). Only payments created before the cursor will be returned.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newPaymentInitiationPaymentReverseCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyCounterpartyDateOfBirth string
+	var bodyIdempotencyKey string
+	var bodyPaymentId string
+	var bodyReference string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "payment-reverse",
+		Short: "Reverse an existing payment",
+		Example: "  plaid-cli payment-initiation payment-reverse --idempotency-key value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/payment_initiation/payment/reverse"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCounterpartyDateOfBirth != "" {
+				body["counterparty_date_of_birth"] = bodyCounterpartyDateOfBirth
+			}
+			if bodyIdempotencyKey != "" {
+				body["idempotency_key"] = bodyIdempotencyKey
+			}
+			if bodyPaymentId != "" {
+				body["payment_id"] = bodyPaymentId
+			}
+			if bodyReference != "" {
+				body["reference"] = bodyReference
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyCounterpartyDateOfBirth, "counterparty-date-of-birth", "", "The counterparty's birthdate, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) (YYYY-MM-DD) format.")
+	cmd.Flags().StringVar(&bodyIdempotencyKey, "idempotency-key", "", "A random key provided by the client, per unique wallet transaction. Maximum of 128 characters. The API supports...")
+	_ = cmd.MarkFlagRequired("idempotency-key")
+	cmd.Flags().StringVar(&bodyPaymentId, "payment-id", "", "The ID of the payment to reverse")
+	_ = cmd.MarkFlagRequired("payment-id")
+	cmd.Flags().StringVar(&bodyReference, "reference", "", "A reference for the refund. This must be an alphanumeric string with 6 to 18 characters and must not contain any...")
+	_ = cmd.MarkFlagRequired("reference")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newPaymentInitiationRecipientCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyIban string
+	var bodyName string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "recipient-create",
+		Short: "Create payment recipient",
+		Example: "  plaid-cli payment-initiation recipient-create --name value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/payment_initiation/recipient/create"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyIban != "" {
+				body["iban"] = bodyIban
+			}
+			if bodyName != "" {
+				body["name"] = bodyName
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyIban, "iban", "", "The International Bank Account Number (IBAN) for the recipient. If BACS data is not provided, an IBAN is required.")
+	cmd.Flags().StringVar(&bodyName, "name", "", "The name of the recipient. We recommend using strings of length 18 or less and avoid special characters to ensure...")
+	_ = cmd.MarkFlagRequired("name")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newPaymentInitiationRecipientGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyRecipientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "recipient-get",
+		Short: "Get payment recipient",
+		Example: "  plaid-cli payment-initiation recipient-get --recipient-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/payment_initiation/recipient/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyRecipientId != "" {
+				body["recipient_id"] = bodyRecipientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyRecipientId, "recipient-id", "", "The ID of the recipient")
+	_ = cmd.MarkFlagRequired("recipient-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newPaymentInitiationRecipientListCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyCount int
+	var bodyCursor string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "recipient-list",
+		Short: "List payment recipients",
+		Example: "  plaid-cli payment-initiation recipient-list",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/payment_initiation/recipient/list"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCount != 0 {
+				body["count"] = bodyCount
+			}
+			if bodyCursor != "" {
+				body["cursor"] = bodyCursor
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().IntVar(&bodyCount, "count", 100, "The maximum number of recipients to return. If `count` is not specified, a maximum of 100 recipients will be...")
+	cmd.Flags().StringVar(&bodyCursor, "cursor", "", "A value representing the latest recipient to be included in the response. Set this from `next_cursor` received from...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/payment-profile.go b/plaid-cli/internal/cli/payment-profile.go
new file mode 100644
index 00000000..95eb1f7b
--- /dev/null
+++ b/plaid-cli/internal/cli/payment-profile.go
@@ -0,0 +1,146 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newPaymentProfileCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "payment-profile",
+		Short: "Manage payment profile",
+	}
+
+	cmd.AddCommand(newPaymentProfileCreateCmd(flags))
+	cmd.AddCommand(newPaymentProfileGetCmd(flags))
+	cmd.AddCommand(newPaymentProfileRemoveCmd(flags))
+	return cmd
+}
+
+func newPaymentProfileCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "create",
+		Short: "Create payment profile",
+		Example: "  plaid-cli payment-profile create",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/payment_profile/create"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newPaymentProfileGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyPaymentProfileToken string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "get",
+		Short: "Get payment profile",
+		Example: "  plaid-cli payment-profile get --payment-profile-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/payment_profile/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyPaymentProfileToken != "" {
+				body["payment_profile_token"] = bodyPaymentProfileToken
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyPaymentProfileToken, "payment-profile-token", "", "A payment profile token associated with the Payment Profile data that is being requested.")
+	_ = cmd.MarkFlagRequired("payment-profile-token")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newPaymentProfileRemoveCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyPaymentProfileToken string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "remove",
+		Short: "Remove payment profile",
+		Example: "  plaid-cli payment-profile remove --payment-profile-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/payment_profile/remove"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyPaymentProfileToken != "" {
+				body["payment_profile_token"] = bodyPaymentProfileToken
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyPaymentProfileToken, "payment-profile-token", "", "A payment profile token associated with the Payment Profile data that is being requested.")
+	_ = cmd.MarkFlagRequired("payment-profile-token")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/processor.go b/plaid-cli/internal/cli/processor.go
new file mode 100644
index 00000000..3ac4a368
--- /dev/null
+++ b/plaid-cli/internal/cli/processor.go
@@ -0,0 +1,1214 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newProcessorCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "processor",
+		Short: "Manage processor",
+	}
+
+	cmd.AddCommand(newProcessorAccountGetCmd(flags))
+	cmd.AddCommand(newProcessorApexTokenCreateCmd(flags))
+	cmd.AddCommand(newProcessorAuthGetCmd(flags))
+	cmd.AddCommand(newProcessorBalanceGetCmd(flags))
+	cmd.AddCommand(newProcessorBankTransferCreateCmd(flags))
+	cmd.AddCommand(newProcessorIdentityGetCmd(flags))
+	cmd.AddCommand(newProcessorIdentityMatchCmd(flags))
+	cmd.AddCommand(newProcessorInvestmentsHoldingsGetCmd(flags))
+	cmd.AddCommand(newProcessorInvestmentsTransactionsGetCmd(flags))
+	cmd.AddCommand(newProcessorLiabilitiesGetCmd(flags))
+	cmd.AddCommand(newProcessorSignalDecisionReportCmd(flags))
+	cmd.AddCommand(newProcessorSignalEvaluateCmd(flags))
+	cmd.AddCommand(newProcessorSignalPrepareCmd(flags))
+	cmd.AddCommand(newProcessorSignalReturnReportCmd(flags))
+	cmd.AddCommand(newProcessorStripeBankAccountTokenCreateCmd(flags))
+	cmd.AddCommand(newProcessorTokenCreateCmd(flags))
+	cmd.AddCommand(newProcessorTokenPermissionsGetCmd(flags))
+	cmd.AddCommand(newProcessorTokenPermissionsSetCmd(flags))
+	cmd.AddCommand(newProcessorTokenWebhookUpdateCmd(flags))
+	cmd.AddCommand(newProcessorTransactionsGetCmd(flags))
+	cmd.AddCommand(newProcessorTransactionsRecurringGetCmd(flags))
+	cmd.AddCommand(newProcessorTransactionsRefreshCmd(flags))
+	cmd.AddCommand(newProcessorTransactionsSyncCmd(flags))
+	return cmd
+}
+
+func newProcessorAccountGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyProcessorToken string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "account-get",
+		Aliases: []string{"create"},
+		Short: "Retrieve the account associated with a processor token",
+		Example: "  plaid-cli processor account-get --processor-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/processor/account/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyProcessorToken != "" {
+				body["processor_token"] = bodyProcessorToken
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyProcessorToken, "processor-token", "", "The processor token obtained from the Plaid integration partner. Processor tokens are in the format:...")
+	_ = cmd.MarkFlagRequired("processor-token")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newProcessorApexTokenCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyAccountId string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "apex-token-create",
+		Short: "Create Apex bank account token",
+		Example: "  plaid-cli processor apex-token-create --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/processor/apex/processor_token/create"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyAccountId != "" {
+				body["account_id"] = bodyAccountId
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyAccountId, "account-id", "", "The `account_id` value obtained from the `onSuccess` callback in Link")
+	_ = cmd.MarkFlagRequired("account-id")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newProcessorAuthGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyProcessorToken string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "auth-get",
+		Short: "Retrieve Auth data",
+		Example: "  plaid-cli processor auth-get --processor-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/processor/auth/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyProcessorToken != "" {
+				body["processor_token"] = bodyProcessorToken
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyProcessorToken, "processor-token", "", "The processor token obtained from the Plaid integration partner. Processor tokens are in the format:...")
+	_ = cmd.MarkFlagRequired("processor-token")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newProcessorBalanceGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyProcessorToken string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "balance-get",
+		Short: "Retrieve Balance data",
+		Example: "  plaid-cli processor balance-get --processor-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/processor/balance/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyProcessorToken != "" {
+				body["processor_token"] = bodyProcessorToken
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyProcessorToken, "processor-token", "", "The processor token obtained from the Plaid integration partner. Processor tokens are in the format:...")
+	_ = cmd.MarkFlagRequired("processor-token")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newProcessorBankTransferCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyAchClass string
+	var bodyAmount string
+	var bodyClientId string
+	var bodyCustomTag string
+	var bodyDescription string
+	var bodyIdempotencyKey string
+	var bodyIsoCurrencyCode string
+	var bodyNetwork string
+	var bodyOriginationAccountId string
+	var bodyProcessorToken string
+	var bodySecret string
+	var bodyType string
+
+	cmd := &cobra.Command{
+		Use:   "bank-transfer-create",
+		Short: "Create a bank transfer as a processor",
+		Example: "  plaid-cli processor bank-transfer-create --amount value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/processor/bank_transfer/create"
+			body := map[string]any{}
+			if bodyAchClass != "" {
+				body["ach_class"] = bodyAchClass
+			}
+			if bodyAmount != "" {
+				body["amount"] = bodyAmount
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCustomTag != "" {
+				body["custom_tag"] = bodyCustomTag
+			}
+			if bodyDescription != "" {
+				body["description"] = bodyDescription
+			}
+			if bodyIdempotencyKey != "" {
+				body["idempotency_key"] = bodyIdempotencyKey
+			}
+			if bodyIsoCurrencyCode != "" {
+				body["iso_currency_code"] = bodyIsoCurrencyCode
+			}
+			if bodyNetwork != "" {
+				body["network"] = bodyNetwork
+			}
+			if bodyOriginationAccountId != "" {
+				body["origination_account_id"] = bodyOriginationAccountId
+			}
+			if bodyProcessorToken != "" {
+				body["processor_token"] = bodyProcessorToken
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyType != "" {
+				body["type"] = bodyType
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAchClass, "ach-class", "", "Specifies the use case of the transfer. Required for transfers on an ACH network. For more details, see [ACH SEC...")
+	cmd.Flags().StringVar(&bodyAmount, "amount", "", "The amount of the bank transfer (decimal string with two digits of precision e.g. '10.00').")
+	_ = cmd.MarkFlagRequired("amount")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyCustomTag, "custom-tag", "", "An arbitrary string provided by the client for storage with the bank transfer. May be up to 100 characters.")
+	cmd.Flags().StringVar(&bodyDescription, "description", "", "The transfer description. Maximum of 10 characters.")
+	_ = cmd.MarkFlagRequired("description")
+	cmd.Flags().StringVar(&bodyIdempotencyKey, "idempotency-key", "", "A random key provided by the client, per unique bank transfer. Maximum of 50 characters. The API supports...")
+	_ = cmd.MarkFlagRequired("idempotency-key")
+	cmd.Flags().StringVar(&bodyIsoCurrencyCode, "iso-currency-code", "", "The currency of the transfer amount – should be set to 'USD'.")
+	_ = cmd.MarkFlagRequired("iso-currency-code")
+	cmd.Flags().StringVar(&bodyNetwork, "network", "", "The network or rails used for the transfer. Valid options are `ach`, `same-day-ach`, or `wire`.")
+	_ = cmd.MarkFlagRequired("network")
+	cmd.Flags().StringVar(&bodyOriginationAccountId, "origination-account-id", "", "Plaid’s unique identifier for the origination account for this transfer. If you have more than one origination...")
+	cmd.Flags().StringVar(&bodyProcessorToken, "processor-token", "", "The processor token obtained from the Plaid integration partner. Processor tokens are in the format:...")
+	_ = cmd.MarkFlagRequired("processor-token")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyType, "type", "", "The type of bank transfer. This will be either `debit` or `credit`. A `debit` indicates a transfer of money into the...")
+	_ = cmd.MarkFlagRequired("type")
+
+	return cmd
+}
+
+func newProcessorIdentityGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyProcessorToken string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "identity-get",
+		Short: "Retrieve Identity data",
+		Example: "  plaid-cli processor identity-get --processor-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/processor/identity/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyProcessorToken != "" {
+				body["processor_token"] = bodyProcessorToken
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyProcessorToken, "processor-token", "", "The processor token obtained from the Plaid integration partner. Processor tokens are in the format:...")
+	_ = cmd.MarkFlagRequired("processor-token")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newProcessorIdentityMatchCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyProcessorToken string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "identity-match",
+		Short: "Retrieve identity match score",
+		Example: "  plaid-cli processor identity-match --processor-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/processor/identity/match"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyProcessorToken != "" {
+				body["processor_token"] = bodyProcessorToken
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyProcessorToken, "processor-token", "", "The processor token obtained from the Plaid integration partner. Processor tokens are in the format:...")
+	_ = cmd.MarkFlagRequired("processor-token")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newProcessorInvestmentsHoldingsGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyProcessorToken string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "investments-holdings-get",
+		Short: "Retrieve Investment Holdings",
+		Example: "  plaid-cli processor investments-holdings-get --processor-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/processor/investments/holdings/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyProcessorToken != "" {
+				body["processor_token"] = bodyProcessorToken
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyProcessorToken, "processor-token", "", "The processor token obtained from the Plaid integration partner. Processor tokens are in the format:...")
+	_ = cmd.MarkFlagRequired("processor-token")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newProcessorInvestmentsTransactionsGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyEndDate string
+	var bodyProcessorToken string
+	var bodySecret string
+	var bodyStartDate string
+
+	cmd := &cobra.Command{
+		Use:   "investments-transactions-get",
+		Short: "Get investment transactions data",
+		Example: "  plaid-cli processor investments-transactions-get --end-date value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/processor/investments/transactions/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyEndDate != "" {
+				body["end_date"] = bodyEndDate
+			}
+			if bodyProcessorToken != "" {
+				body["processor_token"] = bodyProcessorToken
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyStartDate != "" {
+				body["start_date"] = bodyStartDate
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyEndDate, "end-date", "", "The latest date for which data should be returned. Dates should be formatted as YYYY-MM-DD.")
+	_ = cmd.MarkFlagRequired("end-date")
+	cmd.Flags().StringVar(&bodyProcessorToken, "processor-token", "", "The processor token obtained from the Plaid integration partner. Processor tokens are in the format:...")
+	_ = cmd.MarkFlagRequired("processor-token")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyStartDate, "start-date", "", "The earliest date for which data should be returned. Dates should be formatted as YYYY-MM-DD.")
+	_ = cmd.MarkFlagRequired("start-date")
+
+	return cmd
+}
+
+func newProcessorLiabilitiesGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyProcessorToken string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "liabilities-get",
+		Short: "Retrieve Liabilities data",
+		Example: "  plaid-cli processor liabilities-get --processor-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/processor/liabilities/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyProcessorToken != "" {
+				body["processor_token"] = bodyProcessorToken
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyProcessorToken, "processor-token", "", "The processor token obtained from the Plaid integration partner. Processor tokens are in the format:...")
+	_ = cmd.MarkFlagRequired("processor-token")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newProcessorSignalDecisionReportCmd(flags *rootFlags) *cobra.Command {
+	var bodyAmountInstantlyAvailable float64
+	var bodyClientId string
+	var bodyClientTransactionId string
+	var bodyDaysFundsOnHold int
+	var bodyDecisionOutcome string
+	var bodyInitiated bool
+	var bodyPaymentMethod string
+	var bodyProcessorToken string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "signal-decision-report",
+		Short: "Report whether you initiated an ACH transaction",
+		Example: "  plaid-cli processor signal-decision-report --client-transaction-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/processor/signal/decision/report"
+			body := map[string]any{}
+			if bodyAmountInstantlyAvailable != 0.0 {
+				body["amount_instantly_available"] = bodyAmountInstantlyAvailable
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyClientTransactionId != "" {
+				body["client_transaction_id"] = bodyClientTransactionId
+			}
+			if bodyDaysFundsOnHold != 0 {
+				body["days_funds_on_hold"] = bodyDaysFundsOnHold
+			}
+			if bodyDecisionOutcome != "" {
+				body["decision_outcome"] = bodyDecisionOutcome
+			}
+			if bodyInitiated != false {
+				body["initiated"] = bodyInitiated
+			}
+			if bodyPaymentMethod != "" {
+				body["payment_method"] = bodyPaymentMethod
+			}
+			if bodyProcessorToken != "" {
+				body["processor_token"] = bodyProcessorToken
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().Float64Var(&bodyAmountInstantlyAvailable, "amount-instantly-available", 0.0, "The amount (in USD) made available to your customers instantly following the debit transaction. It could be a...")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyClientTransactionId, "client-transaction-id", "", "Must be the same as the `client_transaction_id` supplied when calling `/signal/evaluate`")
+	_ = cmd.MarkFlagRequired("client-transaction-id")
+	cmd.Flags().IntVar(&bodyDaysFundsOnHold, "days-funds-on-hold", 0, "The actual number of days (hold time) since the ACH debit transaction that you wait before making funds available to...")
+	cmd.Flags().StringVar(&bodyDecisionOutcome, "decision-outcome", "", "The payment decision from the risk assessment. `APPROVE`: approve the transaction without requiring further actions...")
+	cmd.Flags().BoolVar(&bodyInitiated, "initiated", false, "`true` if the ACH transaction was initiated, `false` otherwise. This field must be returned as a boolean. If...")
+	_ = cmd.MarkFlagRequired("initiated")
+	cmd.Flags().StringVar(&bodyPaymentMethod, "payment-method", "", "The payment method to complete the transaction after the risk assessment. It may be different from the default...")
+	cmd.Flags().StringVar(&bodyProcessorToken, "processor-token", "", "The processor token obtained from the Plaid integration partner. Processor tokens are in the format:...")
+	_ = cmd.MarkFlagRequired("processor-token")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newProcessorSignalEvaluateCmd(flags *rootFlags) *cobra.Command {
+	var bodyAmount float64
+	var bodyClientId string
+	var bodyClientTransactionId string
+	var bodyClientUserId string
+	var bodyDefaultPaymentMethod string
+	var bodyIsRecurring bool
+	var bodyProcessorToken string
+	var bodyRulesetKey string
+	var bodySecret string
+	var bodyUserPresent bool
+
+	cmd := &cobra.Command{
+		Use:   "signal-evaluate",
+		Short: "Evaluate a planned ACH transaction",
+		Example: "  plaid-cli processor signal-evaluate --client-transaction-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/processor/signal/evaluate"
+			body := map[string]any{}
+			if bodyAmount != 0.0 {
+				body["amount"] = bodyAmount
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyClientTransactionId != "" {
+				body["client_transaction_id"] = bodyClientTransactionId
+			}
+			if bodyClientUserId != "" {
+				body["client_user_id"] = bodyClientUserId
+			}
+			if bodyDefaultPaymentMethod != "" {
+				body["default_payment_method"] = bodyDefaultPaymentMethod
+			}
+			if bodyIsRecurring != false {
+				body["is_recurring"] = bodyIsRecurring
+			}
+			if bodyProcessorToken != "" {
+				body["processor_token"] = bodyProcessorToken
+			}
+			if bodyRulesetKey != "" {
+				body["ruleset_key"] = bodyRulesetKey
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserPresent != false {
+				body["user_present"] = bodyUserPresent
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().Float64Var(&bodyAmount, "amount", 0.0, "The transaction amount, in USD (e.g. `102.05`)")
+	_ = cmd.MarkFlagRequired("amount")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyClientTransactionId, "client-transaction-id", "", "The unique ID that you would like to use to refer to this transaction. For your convenience mapping your internal...")
+	_ = cmd.MarkFlagRequired("client-transaction-id")
+	cmd.Flags().StringVar(&bodyClientUserId, "client-user-id", "", "A unique ID that identifies the end user in your system. This ID is used to correlate requests by a user with...")
+	cmd.Flags().StringVar(&bodyDefaultPaymentMethod, "default-payment-method", "", "The default ACH or non-ACH payment method to complete the transaction. `SAME_DAY_ACH`: Same Day ACH by Nacha. The...")
+	cmd.Flags().BoolVar(&bodyIsRecurring, "is-recurring", false, "**true** if the ACH transaction is a recurring transaction; **false** otherwise")
+	cmd.Flags().StringVar(&bodyProcessorToken, "processor-token", "", "The processor token obtained from the Plaid integration partner. Processor tokens are in the format:...")
+	_ = cmd.MarkFlagRequired("processor-token")
+	cmd.Flags().StringVar(&bodyRulesetKey, "ruleset-key", "", "The key of the ruleset to use for this transaction. You can configure a ruleset using the Plaid Dashboard, under...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().BoolVar(&bodyUserPresent, "user-present", false, "`true` if the end user is present while initiating the ACH transfer and the endpoint is being called; `false`...")
+
+	return cmd
+}
+
+func newProcessorSignalPrepareCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyProcessorToken string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "signal-prepare",
+		Short: "Opt-in a processor token to Signal",
+		Example: "  plaid-cli processor signal-prepare --processor-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/processor/signal/prepare"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyProcessorToken != "" {
+				body["processor_token"] = bodyProcessorToken
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyProcessorToken, "processor-token", "", "The processor token obtained from the Plaid integration partner. Processor tokens are in the format:...")
+	_ = cmd.MarkFlagRequired("processor-token")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newProcessorSignalReturnReportCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyClientTransactionId string
+	var bodyProcessorToken string
+	var bodyReturnCode string
+	var bodyReturnedAt string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "signal-return-report",
+		Short: "Report a return for an ACH transaction",
+		Example: "  plaid-cli processor signal-return-report --client-transaction-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/processor/signal/return/report"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyClientTransactionId != "" {
+				body["client_transaction_id"] = bodyClientTransactionId
+			}
+			if bodyProcessorToken != "" {
+				body["processor_token"] = bodyProcessorToken
+			}
+			if bodyReturnCode != "" {
+				body["return_code"] = bodyReturnCode
+			}
+			if bodyReturnedAt != "" {
+				body["returned_at"] = bodyReturnedAt
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyClientTransactionId, "client-transaction-id", "", "Must be the same as the `client_transaction_id` supplied when calling `/processor/signal/evaluate`")
+	_ = cmd.MarkFlagRequired("client-transaction-id")
+	cmd.Flags().StringVar(&bodyProcessorToken, "processor-token", "", "The processor token obtained from the Plaid integration partner. Processor tokens are in the format:...")
+	_ = cmd.MarkFlagRequired("processor-token")
+	cmd.Flags().StringVar(&bodyReturnCode, "return-code", "", "Must be a valid ACH return code (e.g. 'R01') If formatted incorrectly, this will result in an...")
+	_ = cmd.MarkFlagRequired("return-code")
+	cmd.Flags().StringVar(&bodyReturnedAt, "returned-at", "", "Date and time when you receive the returns from your payment processors, in ISO 8601 format (`YYYY-MM-DDTHH:mm:ssZ`).")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newProcessorStripeBankAccountTokenCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyAccountId string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "stripe-bank-account-token-create",
+		Short: "Create Stripe bank account token",
+		Example: "  plaid-cli processor stripe-bank-account-token-create --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/processor/stripe/bank_account_token/create"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyAccountId != "" {
+				body["account_id"] = bodyAccountId
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyAccountId, "account-id", "", "The `account_id` value obtained from the `onSuccess` callback in Link")
+	_ = cmd.MarkFlagRequired("account-id")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newProcessorTokenCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyAccountId string
+	var bodyClientId string
+	var bodyProcessor string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "token-create",
+		Short: "Create processor token",
+		Example: "  plaid-cli processor token-create --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/processor/token/create"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyAccountId != "" {
+				body["account_id"] = bodyAccountId
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyProcessor != "" {
+				body["processor"] = bodyProcessor
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyAccountId, "account-id", "", "The `account_id` value obtained from the `onSuccess` callback in Link")
+	_ = cmd.MarkFlagRequired("account-id")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyProcessor, "processor", "", "The processor you are integrating with.")
+	_ = cmd.MarkFlagRequired("processor")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newProcessorTokenPermissionsGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyProcessorToken string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "token-permissions-get",
+		Short: "Get a processor token's product permissions",
+		Example: "  plaid-cli processor token-permissions-get --processor-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/processor/token/permissions/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyProcessorToken != "" {
+				body["processor_token"] = bodyProcessorToken
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyProcessorToken, "processor-token", "", "The processor token obtained from the Plaid integration partner. Processor tokens are in the format:...")
+	_ = cmd.MarkFlagRequired("processor-token")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newProcessorTokenPermissionsSetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyProcessorToken string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "token-permissions-set",
+		Short: "Control a processor's access to products",
+		Example: "  plaid-cli processor token-permissions-set --processor-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/processor/token/permissions/set"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyProcessorToken != "" {
+				body["processor_token"] = bodyProcessorToken
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyProcessorToken, "processor-token", "", "The processor token obtained from the Plaid integration partner. Processor tokens are in the format:...")
+	_ = cmd.MarkFlagRequired("processor-token")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newProcessorTokenWebhookUpdateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyProcessorToken string
+	var bodySecret string
+	var bodyWebhook string
+
+	cmd := &cobra.Command{
+		Use:   "token-webhook-update",
+		Short: "Update a processor token's webhook URL",
+		Example: "  plaid-cli processor token-webhook-update --processor-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/processor/token/webhook/update"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyProcessorToken != "" {
+				body["processor_token"] = bodyProcessorToken
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyWebhook != "" {
+				body["webhook"] = bodyWebhook
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyProcessorToken, "processor-token", "", "The processor token obtained from the Plaid integration partner. Processor tokens are in the format:...")
+	_ = cmd.MarkFlagRequired("processor-token")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyWebhook, "webhook", "", "The new webhook URL to associate with the processor token. To remove a webhook from a processor token, set to `null`.")
+	_ = cmd.MarkFlagRequired("webhook")
+
+	return cmd
+}
+
+func newProcessorTransactionsGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyEndDate string
+	var bodyProcessorToken string
+	var bodySecret string
+	var bodyStartDate string
+
+	cmd := &cobra.Command{
+		Use:   "transactions-get",
+		Short: "Get transaction data",
+		Example: "  plaid-cli processor transactions-get --end-date value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/processor/transactions/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyEndDate != "" {
+				body["end_date"] = bodyEndDate
+			}
+			if bodyProcessorToken != "" {
+				body["processor_token"] = bodyProcessorToken
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyStartDate != "" {
+				body["start_date"] = bodyStartDate
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyEndDate, "end-date", "", "The latest date for which data should be returned. Dates should be formatted as YYYY-MM-DD.")
+	_ = cmd.MarkFlagRequired("end-date")
+	cmd.Flags().StringVar(&bodyProcessorToken, "processor-token", "", "The processor token obtained from the Plaid integration partner. Processor tokens are in the format:...")
+	_ = cmd.MarkFlagRequired("processor-token")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyStartDate, "start-date", "", "The earliest date for which data should be returned. Dates should be formatted as YYYY-MM-DD.")
+	_ = cmd.MarkFlagRequired("start-date")
+
+	return cmd
+}
+
+func newProcessorTransactionsRecurringGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyProcessorToken string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "transactions-recurring-get",
+		Short: "Fetch recurring transaction streams",
+		Example: "  plaid-cli processor transactions-recurring-get --processor-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/processor/transactions/recurring/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyProcessorToken != "" {
+				body["processor_token"] = bodyProcessorToken
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyProcessorToken, "processor-token", "", "The processor token obtained from the Plaid integration partner. Processor tokens are in the format:...")
+	_ = cmd.MarkFlagRequired("processor-token")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newProcessorTransactionsRefreshCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyProcessorToken string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "transactions-refresh",
+		Short: "Refresh transaction data",
+		Example: "  plaid-cli processor transactions-refresh --processor-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/processor/transactions/refresh"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyProcessorToken != "" {
+				body["processor_token"] = bodyProcessorToken
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyProcessorToken, "processor-token", "", "The processor token obtained from the Plaid integration partner. Processor tokens are in the format:...")
+	_ = cmd.MarkFlagRequired("processor-token")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newProcessorTransactionsSyncCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyCount int
+	var bodyCursor string
+	var bodyProcessorToken string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "transactions-sync",
+		Short: "Get incremental transaction updates on a processor token",
+		Example: "  plaid-cli processor transactions-sync --processor-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/processor/transactions/sync"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCount != 0 {
+				body["count"] = bodyCount
+			}
+			if bodyCursor != "" {
+				body["cursor"] = bodyCursor
+			}
+			if bodyProcessorToken != "" {
+				body["processor_token"] = bodyProcessorToken
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().IntVar(&bodyCount, "count", 100, "The number of transaction updates to fetch.")
+	cmd.Flags().StringVar(&bodyCursor, "cursor", "", "The cursor value represents the last update requested. Providing it will cause the response to only return changes...")
+	cmd.Flags().StringVar(&bodyProcessorToken, "processor-token", "", "The processor token obtained from the Plaid integration partner. Processor tokens are in the format:...")
+	_ = cmd.MarkFlagRequired("processor-token")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/profile.go b/plaid-cli/internal/cli/profile.go
new file mode 100644
index 00000000..423f35af
--- /dev/null
+++ b/plaid-cli/internal/cli/profile.go
@@ -0,0 +1,61 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newProfileCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "profile",
+		Short: "Manage profile",
+	}
+
+	cmd.AddCommand(newProfileNetworkStatusGetCmd(flags))
+	return cmd
+}
+
+func newProfileNetworkStatusGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "network-status-get",
+		Aliases: []string{"create"},
+		Short: "Check a user's Plaid Network status",
+		Example: "  plaid-cli profile network-status-get",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/profile/network_status/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/protect.go b/plaid-cli/internal/cli/protect.go
new file mode 100644
index 00000000..f38785e1
--- /dev/null
+++ b/plaid-cli/internal/cli/protect.go
@@ -0,0 +1,279 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newProtectCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "protect",
+		Short: "Manage protect",
+	}
+
+	cmd.AddCommand(newProtectComputeCmd(flags))
+	cmd.AddCommand(newProtectEventGetCmd(flags))
+	cmd.AddCommand(newProtectEventSendCmd(flags))
+	cmd.AddCommand(newProtectReportCreateCmd(flags))
+	cmd.AddCommand(newProtectUserInsightsGetCmd(flags))
+	return cmd
+}
+
+func newProtectComputeCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyModel string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "compute",
+		Aliases: []string{"create"},
+		Short: "Compute Protect Trust Index Score",
+		Example: "  plaid-cli protect compute --model value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/protect/compute"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyModel != "" {
+				body["model"] = bodyModel
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyModel, "model", "", "The name of the Trust Index model to use for calculating the Trust Index Score, with a major.minor version suffix....")
+	_ = cmd.MarkFlagRequired("model")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newProtectEventGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyEventId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "event-get",
+		Short: "Get information about a user event",
+		Example: "  plaid-cli protect event-get --event-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/protect/event/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyEventId != "" {
+				body["event_id"] = bodyEventId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyEventId, "event-id", "", "The event ID to retrieve information for.")
+	_ = cmd.MarkFlagRequired("event-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newProtectEventSendCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyProtectSessionId string
+	var bodyRequestTrustIndex bool
+	var bodySecret string
+	var bodyTimestamp string
+
+	cmd := &cobra.Command{
+		Use:   "event-send",
+		Short: "Send a new event to enrich user data",
+		Example: "  plaid-cli protect event-send",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/protect/event/send"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyProtectSessionId != "" {
+				body["protect_session_id"] = bodyProtectSessionId
+			}
+			if bodyRequestTrustIndex != false {
+				body["request_trust_index"] = bodyRequestTrustIndex
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyTimestamp != "" {
+				body["timestamp"] = bodyTimestamp
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyProtectSessionId, "protect-session-id", "", "Protect Session ID should be provided for any event correlated with a frontend user session started via the Protect SDK.")
+	cmd.Flags().BoolVar(&bodyRequestTrustIndex, "request-trust-index", false, "Whether this event should be scored with Trust Index. The default is false.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyTimestamp, "timestamp", "", "Timestamp of the event. Might be the current moment or a time in the past. In [ISO...")
+
+	return cmd
+}
+
+func newProtectReportCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyAchReturnCode string
+	var bodyClientId string
+	var bodyNotes string
+	var bodyReportConfidence string
+	var bodyReportSource string
+	var bodyReportType string
+	var bodySecret string
+	var bodyUserId string
+
+	cmd := &cobra.Command{
+		Use:   "report-create",
+		Short: "Create a Protect report",
+		Example: "  plaid-cli protect report-create --report-confidence value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/protect/report/create"
+			body := map[string]any{}
+			if bodyAchReturnCode != "" {
+				body["ach_return_code"] = bodyAchReturnCode
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyNotes != "" {
+				body["notes"] = bodyNotes
+			}
+			if bodyReportConfidence != "" {
+				body["report_confidence"] = bodyReportConfidence
+			}
+			if bodyReportSource != "" {
+				body["report_source"] = bodyReportSource
+			}
+			if bodyReportType != "" {
+				body["report_type"] = bodyReportType
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserId != "" {
+				body["user_id"] = bodyUserId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAchReturnCode, "ach-return-code", "", "Must be a valid ACH return code (e.g. `R01`), required if `report_type` is `ACH_RETURN`.")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyNotes, "notes", "", "Additional context or details about the report, required if `report_type` is `OTHER`.")
+	cmd.Flags().StringVar(&bodyReportConfidence, "report-confidence", "", "The confidence level of the incident report. `CONFIRMED` indicates the incident has been verified and definitively...")
+	_ = cmd.MarkFlagRequired("report-confidence")
+	cmd.Flags().StringVar(&bodyReportSource, "report-source", "", "The source that identified or reported the incident. `INTERNAL_REVIEW` - Incident was identified through internal...")
+	_ = cmd.MarkFlagRequired("report-source")
+	cmd.Flags().StringVar(&bodyReportType, "report-type", "", "The type of incident being reported. `USER_ACCOUNT_TAKEOVER` - Indicates that a legitimate user's account was...")
+	_ = cmd.MarkFlagRequired("report-type")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserId, "user-id", "", "The Plaid User ID associated with the report.")
+
+	return cmd
+}
+
+func newProtectUserInsightsGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyClientUserId string
+	var bodySecret string
+	var bodyUserId string
+
+	cmd := &cobra.Command{
+		Use:   "user-insights-get",
+		Short: "Get Protect user insights",
+		Example: "  plaid-cli protect user-insights-get",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/protect/user/insights/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyClientUserId != "" {
+				body["client_user_id"] = bodyClientUserId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserId != "" {
+				body["user_id"] = bodyUserId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyClientUserId, "client-user-id", "", "A unique ID representing the end user. Either `user_id` or `client_user_id` must be provided.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserId, "user-id", "", "The Plaid User ID. Either `user_id` or `client_user_id` must be provided.")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/root.go b/plaid-cli/internal/cli/root.go
new file mode 100644
index 00000000..f81eb7e6
--- /dev/null
+++ b/plaid-cli/internal/cli/root.go
@@ -0,0 +1,160 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"encoding/json"
+	"fmt"
+	"text/tabwriter"
+	"time"
+
+	"github.com/USER/plaid-cli/internal/client"
+	"github.com/USER/plaid-cli/internal/config"
+	"github.com/spf13/cobra"
+)
+
+var version = "2020-09-14_1.682.2"
+
+type rootFlags struct {
+	asJSON     bool
+	plain      bool
+	quiet      bool
+	dryRun     bool
+	selectFields string
+	configPath string
+	timeout    time.Duration
+}
+
+func Execute() error {
+	var flags rootFlags
+
+	rootCmd := &cobra.Command{
+		Use:           "plaid-cli",
+		Short:         "The Plaid REST API. Please see https://plaid.com/docs/api for more details.",
+		SilenceUsage:  true,
+		SilenceErrors: true,
+		Version:       version,
+	}
+	rootCmd.SetVersionTemplate("plaid-cli {{ .Version }}\n")
+
+	rootCmd.PersistentFlags().BoolVar(&flags.asJSON, "json", false, "Output as JSON")
+	rootCmd.PersistentFlags().BoolVar(&flags.plain, "plain", false, "Output as plain tab-separated text")
+	rootCmd.PersistentFlags().BoolVar(&flags.quiet, "quiet", false, "Bare output, one value per line")
+	rootCmd.PersistentFlags().StringVar(&flags.configPath, "config", "", "Config file path")
+	rootCmd.PersistentFlags().DurationVar(&flags.timeout, "timeout", 30*time.Second, "Request timeout")
+	rootCmd.PersistentFlags().BoolVar(&flags.dryRun, "dry-run", false, "Show request without sending")
+	rootCmd.PersistentFlags().StringVar(&flags.selectFields, "select", "", "Comma-separated fields to include in output (e.g. --select id,name,status)")
+	rootCmd.PersistentFlags().BoolVar(&noColor, "no-color", false, "Disable colored output")
+	rootCmd.AddCommand(newAccountsCmd(&flags)) 
+	rootCmd.AddCommand(newApplicationCmd(&flags)) 
+	rootCmd.AddCommand(newAssetReportCmd(&flags)) 
+	rootCmd.AddCommand(newAuthCmd(&flags)) 
+	rootCmd.AddCommand(newBankTransferCmd(&flags)) 
+	rootCmd.AddCommand(newBeaconCmd(&flags)) 
+	rootCmd.AddCommand(newBetaCmd(&flags)) 
+	rootCmd.AddCommand(newBusinessVerificationCmd(&flags)) 
+	rootCmd.AddCommand(newCashflowReportCmd(&flags)) 
+	rootCmd.AddCommand(newCategoriesCmd(&flags)) 
+	rootCmd.AddCommand(newConsentCmd(&flags)) 
+	rootCmd.AddCommand(newConsumerReportCmd(&flags)) 
+	rootCmd.AddCommand(newCraCmd(&flags)) 
+	rootCmd.AddCommand(newCreditCmd(&flags)) 
+	rootCmd.AddCommand(newDashboardUserCmd(&flags)) 
+	rootCmd.AddCommand(newEmployersCmd(&flags)) 
+	rootCmd.AddCommand(newEmploymentCmd(&flags)) 
+	rootCmd.AddCommand(newFdxCmd(&flags)) 
+	rootCmd.AddCommand(newIdentityCmd(&flags)) 
+	rootCmd.AddCommand(newIdentityVerificationCmd(&flags)) 
+	rootCmd.AddCommand(newIncomeCmd(&flags)) 
+	rootCmd.AddCommand(newInstitutionsCmd(&flags)) 
+	rootCmd.AddCommand(newInvestmentsCmd(&flags)) 
+	rootCmd.AddCommand(newIssuesCmd(&flags)) 
+	rootCmd.AddCommand(newItemCmd(&flags)) 
+	rootCmd.AddCommand(newLiabilitiesCmd(&flags)) 
+	rootCmd.AddCommand(newLinkCmd(&flags)) 
+	rootCmd.AddCommand(newLinkDeliveryCmd(&flags)) 
+	rootCmd.AddCommand(newNetworkCmd(&flags)) 
+	rootCmd.AddCommand(newNetworkInsightsCmd(&flags)) 
+	rootCmd.AddCommand(newOauthCmd(&flags)) 
+	rootCmd.AddCommand(newPartnerCmd(&flags)) 
+	rootCmd.AddCommand(newPaymentInitiationCmd(&flags)) 
+	rootCmd.AddCommand(newPaymentProfileCmd(&flags)) 
+	rootCmd.AddCommand(newProcessorCmd(&flags)) 
+	rootCmd.AddCommand(newProfileCmd(&flags)) 
+	rootCmd.AddCommand(newProtectCmd(&flags)) 
+	rootCmd.AddCommand(newSandboxCmd(&flags)) 
+	rootCmd.AddCommand(newSessionCmd(&flags)) 
+	rootCmd.AddCommand(newSignalCmd(&flags)) 
+	rootCmd.AddCommand(newStatementsCmd(&flags)) 
+	rootCmd.AddCommand(newTransactionsCmd(&flags)) 
+	rootCmd.AddCommand(newTransferCmd(&flags)) 
+	rootCmd.AddCommand(newUserCmd(&flags)) 
+	rootCmd.AddCommand(newUserAccountCmd(&flags)) 
+	rootCmd.AddCommand(newWalletCmd(&flags)) 
+	rootCmd.AddCommand(newWatchlistScreeningCmd(&flags)) 
+	rootCmd.AddCommand(newWebhookVerificationKeyCmd(&flags)) 
+	rootCmd.AddCommand(newDoctorCmd(&flags))
+	rootCmd.AddCommand(newVersionCliCmd())
+
+	return rootCmd.Execute()
+}
+
+func ExitCode(err error) int {
+	var codeErr *cliError
+	if As(err, &codeErr) {
+		return codeErr.code
+	}
+	return 1
+}
+
+func (f *rootFlags) newClient() (*client.Client, error) {
+	cfg, err := config.Load(f.configPath)
+	if err != nil {
+		return nil, configErr(err)
+	}
+	c := client.New(cfg, f.timeout)
+	c.DryRun = f.dryRun
+	return c, nil
+}
+
+func (f *rootFlags) printJSON(w *cobra.Command, v any) error {
+	enc := json.NewEncoder(w.OutOrStdout())
+	enc.SetIndent("", "  ")
+	return enc.Encode(v)
+}
+
+func (f *rootFlags) printTable(w *cobra.Command, headers []string, rows [][]string) error {
+	if f.asJSON {
+		return fmt.Errorf("use printJSON for JSON output")
+	}
+	tw := tabwriter.NewWriter(w.OutOrStdout(), 2, 4, 2, ' ', 0)
+	header := ""
+	for i, h := range headers {
+		if i > 0 {
+			header += "\t"
+		}
+		header += h
+	}
+	fmt.Fprintln(tw, header)
+	for _, row := range rows {
+		line := ""
+		for i, cell := range row {
+			if i > 0 {
+				line += "\t"
+			}
+			line += cell
+		}
+		fmt.Fprintln(tw, line)
+	}
+	return tw.Flush()
+}
+
+func newVersionCliCmd() *cobra.Command {
+	return &cobra.Command{
+		Use:   "version",
+		Short: "Print version",
+		Run: func(cmd *cobra.Command, args []string) {
+			fmt.Printf("plaid-cli %s\n", version)
+		},
+	}
+}
diff --git a/plaid-cli/internal/cli/sandbox.go b/plaid-cli/internal/cli/sandbox.go
new file mode 100644
index 00000000..f4ec489a
--- /dev/null
+++ b/plaid-cli/internal/cli/sandbox.go
@@ -0,0 +1,1336 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newSandboxCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "sandbox",
+		Short: "Manage sandbox",
+	}
+
+	cmd.AddCommand(newSandboxBankIncomeFireWebhookCmd(flags))
+	cmd.AddCommand(newSandboxBankTransferFireWebhookCmd(flags))
+	cmd.AddCommand(newSandboxBankTransferSimulateCmd(flags))
+	cmd.AddCommand(newSandboxCraCashflowUpdatesUpdateCmd(flags))
+	cmd.AddCommand(newSandboxIncomeFireWebhookCmd(flags))
+	cmd.AddCommand(newSandboxItemFireWebhookCmd(flags))
+	cmd.AddCommand(newSandboxItemResetLoginCmd(flags))
+	cmd.AddCommand(newSandboxItemSetVerificationStatusCmd(flags))
+	cmd.AddCommand(newSandboxOauthSelectAccountsCmd(flags))
+	cmd.AddCommand(newSandboxPaymentProfileResetLoginCmd(flags))
+	cmd.AddCommand(newSandboxPaymentSimulateCmd(flags))
+	cmd.AddCommand(newSandboxProcessorTokenCreateCmd(flags))
+	cmd.AddCommand(newSandboxPublicTokenCreateCmd(flags))
+	cmd.AddCommand(newSandboxTransactionsCreateCmd(flags))
+	cmd.AddCommand(newSandboxTransferFireWebhookCmd(flags))
+	cmd.AddCommand(newSandboxTransferLedgerDepositSimulateCmd(flags))
+	cmd.AddCommand(newSandboxTransferLedgerSimulateAvailableCmd(flags))
+	cmd.AddCommand(newSandboxTransferLedgerWithdrawSimulateCmd(flags))
+	cmd.AddCommand(newSandboxTransferRefundSimulateCmd(flags))
+	cmd.AddCommand(newSandboxTransferRepaymentSimulateCmd(flags))
+	cmd.AddCommand(newSandboxTransferSimulateCmd(flags))
+	cmd.AddCommand(newSandboxTransferSweepSimulateCmd(flags))
+	cmd.AddCommand(newSandboxTransferTestClockAdvanceCmd(flags))
+	cmd.AddCommand(newSandboxTransferTestClockCreateCmd(flags))
+	cmd.AddCommand(newSandboxTransferTestClockGetCmd(flags))
+	cmd.AddCommand(newSandboxTransferTestClockListCmd(flags))
+	cmd.AddCommand(newSandboxUserResetLoginCmd(flags))
+	return cmd
+}
+
+func newSandboxBankIncomeFireWebhookCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyWebhookCode string
+	var bodyWebhookOverride string
+
+	cmd := &cobra.Command{
+		Use:   "bank-income-fire-webhook",
+		Aliases: []string{"create"},
+		Short: "Manually fire a bank income webhook in sandbox",
+		Example: "  plaid-cli sandbox bank-income-fire-webhook --webhook-code value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/sandbox/bank_income/fire_webhook"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyWebhookCode != "" {
+				body["webhook_code"] = bodyWebhookCode
+			}
+			if bodyWebhookOverride != "" {
+				body["webhook_override"] = bodyWebhookOverride
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyWebhookCode, "webhook-code", "", "The webhook codes this endpoint can be used to test")
+	_ = cmd.MarkFlagRequired("webhook-code")
+	cmd.Flags().StringVar(&bodyWebhookOverride, "webhook-override", "", "The URL to which the webhook should be sent. If provided, this will override the URL set in the dashboard.")
+
+	return cmd
+}
+
+func newSandboxBankTransferFireWebhookCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyWebhook string
+
+	cmd := &cobra.Command{
+		Use:   "bank-transfer-fire-webhook",
+		Short: "Manually fire a Bank Transfer webhook",
+		Example: "  plaid-cli sandbox bank-transfer-fire-webhook --webhook value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/sandbox/bank_transfer/fire_webhook"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyWebhook != "" {
+				body["webhook"] = bodyWebhook
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyWebhook, "webhook", "", "The URL to which the webhook should be sent.")
+	_ = cmd.MarkFlagRequired("webhook")
+
+	return cmd
+}
+
+func newSandboxBankTransferSimulateCmd(flags *rootFlags) *cobra.Command {
+	var bodyBankTransferId string
+	var bodyClientId string
+	var bodyEventType string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "bank-transfer-simulate",
+		Short: "Simulate a bank transfer event in Sandbox",
+		Example: "  plaid-cli sandbox bank-transfer-simulate --bank-transfer-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/sandbox/bank_transfer/simulate"
+			body := map[string]any{}
+			if bodyBankTransferId != "" {
+				body["bank_transfer_id"] = bodyBankTransferId
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyEventType != "" {
+				body["event_type"] = bodyEventType
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyBankTransferId, "bank-transfer-id", "", "Plaid’s unique identifier for a bank transfer.")
+	_ = cmd.MarkFlagRequired("bank-transfer-id")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyEventType, "event-type", "", "The asynchronous event to be simulated. May be: `posted`, `failed`, or `reversed`. An error will be returned if the...")
+	_ = cmd.MarkFlagRequired("event-type")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newSandboxCraCashflowUpdatesUpdateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyUserId string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "cra-cashflow-updates-update",
+		Short: "Trigger an update for Cash Flow Updates",
+		Example: "  plaid-cli sandbox cra-cashflow-updates-update",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/sandbox/cra/cashflow_updates/update"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserId != "" {
+				body["user_id"] = bodyUserId
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserId, "user-id", "", "A unique user identifier, created by `/user/create`. Integrations that began using `/user/create` after December 10,...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+
+	return cmd
+}
+
+func newSandboxIncomeFireWebhookCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyItemId string
+	var bodySecret string
+	var bodyUserId string
+	var bodyVerificationStatus string
+	var bodyWebhook string
+	var bodyWebhookCode string
+
+	cmd := &cobra.Command{
+		Use:   "income-fire-webhook",
+		Short: "Manually fire an Income webhook",
+		Example: "  plaid-cli sandbox income-fire-webhook --item-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/sandbox/income/fire_webhook"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyItemId != "" {
+				body["item_id"] = bodyItemId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserId != "" {
+				body["user_id"] = bodyUserId
+			}
+			if bodyVerificationStatus != "" {
+				body["verification_status"] = bodyVerificationStatus
+			}
+			if bodyWebhook != "" {
+				body["webhook"] = bodyWebhook
+			}
+			if bodyWebhookCode != "" {
+				body["webhook_code"] = bodyWebhookCode
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyItemId, "item-id", "", "The Item ID associated with the verification.")
+	_ = cmd.MarkFlagRequired("item-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserId, "user-id", "", "The Plaid `user_id` of the User associated with this webhook, warning, or error.")
+	cmd.Flags().StringVar(&bodyVerificationStatus, "verification-status", "", "`VERIFICATION_STATUS_PROCESSING_COMPLETE`: The income verification status processing has completed. If the user...")
+	cmd.Flags().StringVar(&bodyWebhook, "webhook", "", "The URL to which the webhook should be sent.")
+	_ = cmd.MarkFlagRequired("webhook")
+	cmd.Flags().StringVar(&bodyWebhookCode, "webhook-code", "", "The webhook codes that can be fired by this test endpoint.")
+	_ = cmd.MarkFlagRequired("webhook-code")
+
+	return cmd
+}
+
+func newSandboxItemFireWebhookCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodySecret string
+	var bodyWebhookCode string
+	var bodyWebhookType string
+
+	cmd := &cobra.Command{
+		Use:   "item-fire-webhook",
+		Short: "Fire a test webhook",
+		Example: "  plaid-cli sandbox item-fire-webhook --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/sandbox/item/fire_webhook"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyWebhookCode != "" {
+				body["webhook_code"] = bodyWebhookCode
+			}
+			if bodyWebhookType != "" {
+				body["webhook_type"] = bodyWebhookType
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyWebhookCode, "webhook-code", "", "The webhook codes that can be fired by this test endpoint.")
+	_ = cmd.MarkFlagRequired("webhook-code")
+	cmd.Flags().StringVar(&bodyWebhookType, "webhook-type", "", "The webhook types that can be fired by this test endpoint.")
+
+	return cmd
+}
+
+func newSandboxItemResetLoginCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "item-reset-login",
+		Short: "Force a Sandbox Item into an error state",
+		Example: "  plaid-cli sandbox item-reset-login --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/sandbox/item/reset_login"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newSandboxItemSetVerificationStatusCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyAccountId string
+	var bodyClientId string
+	var bodySecret string
+	var bodyVerificationStatus string
+
+	cmd := &cobra.Command{
+		Use:   "item-set-verification-status",
+		Short: "Set verification status for Sandbox account",
+		Example: "  plaid-cli sandbox item-set-verification-status --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/sandbox/item/set_verification_status"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyAccountId != "" {
+				body["account_id"] = bodyAccountId
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyVerificationStatus != "" {
+				body["verification_status"] = bodyVerificationStatus
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyAccountId, "account-id", "", "The `account_id` of the account whose verification status is to be modified")
+	_ = cmd.MarkFlagRequired("account-id")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyVerificationStatus, "verification-status", "", "The verification status to set the account to.")
+	_ = cmd.MarkFlagRequired("verification-status")
+
+	return cmd
+}
+
+func newSandboxOauthSelectAccountsCmd(flags *rootFlags) *cobra.Command {
+	var bodyOauthStateId string
+
+	cmd := &cobra.Command{
+		Use:   "oauth-select-accounts",
+		Short: "Save the selected accounts when connecting to the Platypus Oauth institution",
+		Example: "  plaid-cli sandbox oauth-select-accounts --oauth-state-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/sandbox/oauth/select_accounts"
+			body := map[string]any{}
+			if bodyOauthStateId != "" {
+				body["oauth_state_id"] = bodyOauthStateId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyOauthStateId, "oauth-state-id", "", "Oauth state id")
+	_ = cmd.MarkFlagRequired("oauth-state-id")
+
+	return cmd
+}
+
+func newSandboxPaymentProfileResetLoginCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyPaymentProfileToken string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "payment-profile-reset-login",
+		Short: "Reset the login of a Payment Profile",
+		Example: "  plaid-cli sandbox payment-profile-reset-login --payment-profile-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/sandbox/payment_profile/reset_login"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyPaymentProfileToken != "" {
+				body["payment_profile_token"] = bodyPaymentProfileToken
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyPaymentProfileToken, "payment-profile-token", "", "A payment profile token associated with the Payment Profile data that is being requested.")
+	_ = cmd.MarkFlagRequired("payment-profile-token")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newSandboxPaymentSimulateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyPaymentId string
+	var bodySecret string
+	var bodyStatus string
+	var bodyWebhook string
+
+	cmd := &cobra.Command{
+		Use:   "payment-simulate",
+		Short: "Simulate a payment event in Sandbox",
+		Example: "  plaid-cli sandbox payment-simulate --payment-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/sandbox/payment/simulate"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyPaymentId != "" {
+				body["payment_id"] = bodyPaymentId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyStatus != "" {
+				body["status"] = bodyStatus
+			}
+			if bodyWebhook != "" {
+				body["webhook"] = bodyWebhook
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyPaymentId, "payment-id", "", "The ID of the payment to simulate")
+	_ = cmd.MarkFlagRequired("payment-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyStatus, "status", "", "The status to set the payment to. Valid statuses include: - `PAYMENT_STATUS_INITIATED` -...")
+	_ = cmd.MarkFlagRequired("status")
+	cmd.Flags().StringVar(&bodyWebhook, "webhook", "", "The webhook url to use for any payment events triggered by the simulated status change.")
+	_ = cmd.MarkFlagRequired("webhook")
+
+	return cmd
+}
+
+func newSandboxProcessorTokenCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyInstitutionId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "processor-token-create",
+		Short: "Create a test Item and processor token",
+		Example: "  plaid-cli sandbox processor-token-create --institution-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/sandbox/processor_token/create"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyInstitutionId != "" {
+				body["institution_id"] = bodyInstitutionId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyInstitutionId, "institution-id", "", "The ID of the institution the Item will be associated with")
+	_ = cmd.MarkFlagRequired("institution-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newSandboxPublicTokenCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyInstitutionId string
+	var bodySecret string
+	var bodyUserId string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "public-token-create",
+		Short: "Create a test Item",
+		Example: "  plaid-cli sandbox public-token-create --institution-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/sandbox/public_token/create"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyInstitutionId != "" {
+				body["institution_id"] = bodyInstitutionId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserId != "" {
+				body["user_id"] = bodyUserId
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyInstitutionId, "institution-id", "", "The ID of the institution the Item will be associated with")
+	_ = cmd.MarkFlagRequired("institution-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserId, "user-id", "", "A unique user identifier, created by `/user/create`. Integrations that began using `/user/create` after December 10,...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+
+	return cmd
+}
+
+func newSandboxTransactionsCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "transactions-create",
+		Short: "Create sandbox transactions",
+		Example: "  plaid-cli sandbox transactions-create --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/sandbox/transactions/create"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newSandboxTransferFireWebhookCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyWebhook string
+
+	cmd := &cobra.Command{
+		Use:   "transfer-fire-webhook",
+		Short: "Manually fire a Transfer webhook",
+		Example: "  plaid-cli sandbox transfer-fire-webhook --webhook value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/sandbox/transfer/fire_webhook"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyWebhook != "" {
+				body["webhook"] = bodyWebhook
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyWebhook, "webhook", "", "The URL to which the webhook should be sent.")
+	_ = cmd.MarkFlagRequired("webhook")
+
+	return cmd
+}
+
+func newSandboxTransferLedgerDepositSimulateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyEventType string
+	var bodySecret string
+	var bodySweepId string
+
+	cmd := &cobra.Command{
+		Use:   "transfer-ledger-deposit-simulate",
+		Short: "Simulate a ledger deposit event in Sandbox",
+		Example: "  plaid-cli sandbox transfer-ledger-deposit-simulate --event-type value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/sandbox/transfer/ledger/deposit/simulate"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyEventType != "" {
+				body["event_type"] = bodyEventType
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodySweepId != "" {
+				body["sweep_id"] = bodySweepId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyEventType, "event-type", "", "The asynchronous event to be simulated. May be: `posted`, `settled`, `failed`, or `returned`. An error will be...")
+	_ = cmd.MarkFlagRequired("event-type")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodySweepId, "sweep-id", "", "Plaid’s unique identifier for a sweep.")
+	_ = cmd.MarkFlagRequired("sweep-id")
+
+	return cmd
+}
+
+func newSandboxTransferLedgerSimulateAvailableCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyLedgerId string
+	var bodyOriginatorClientId string
+	var bodySecret string
+	var bodyTestClockId string
+	var bodyWebhook string
+
+	cmd := &cobra.Command{
+		Use:   "transfer-ledger-simulate-available",
+		Short: "Simulate converting pending balance to available balance",
+		Example: "  plaid-cli sandbox transfer-ledger-simulate-available",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/sandbox/transfer/ledger/simulate_available"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyLedgerId != "" {
+				body["ledger_id"] = bodyLedgerId
+			}
+			if bodyOriginatorClientId != "" {
+				body["originator_client_id"] = bodyOriginatorClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyTestClockId != "" {
+				body["test_clock_id"] = bodyTestClockId
+			}
+			if bodyWebhook != "" {
+				body["webhook"] = bodyWebhook
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyLedgerId, "ledger-id", "", "Specify which ledger balance to simulate converting pending balance to available balance. If this field is left...")
+	cmd.Flags().StringVar(&bodyOriginatorClientId, "originator-client-id", "", "Client ID of the end customer (i.e. the originator). Only applicable to Transfer for Platforms customers.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyTestClockId, "test-clock-id", "", "Plaid’s unique identifier for a test clock. If provided, only the pending balance that is due before the...")
+	cmd.Flags().StringVar(&bodyWebhook, "webhook", "", "The webhook URL to which a `TRANSFER_EVENTS_UPDATE` webhook should be sent.")
+
+	return cmd
+}
+
+func newSandboxTransferLedgerWithdrawSimulateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyEventType string
+	var bodySecret string
+	var bodySweepId string
+
+	cmd := &cobra.Command{
+		Use:   "transfer-ledger-withdraw-simulate",
+		Short: "Simulate a ledger withdraw event in Sandbox",
+		Example: "  plaid-cli sandbox transfer-ledger-withdraw-simulate --event-type value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/sandbox/transfer/ledger/withdraw/simulate"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyEventType != "" {
+				body["event_type"] = bodyEventType
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodySweepId != "" {
+				body["sweep_id"] = bodySweepId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyEventType, "event-type", "", "The asynchronous event to be simulated. May be: `posted`, `settled`, `failed`, or `returned`. An error will be...")
+	_ = cmd.MarkFlagRequired("event-type")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodySweepId, "sweep-id", "", "Plaid’s unique identifier for a sweep.")
+	_ = cmd.MarkFlagRequired("sweep-id")
+
+	return cmd
+}
+
+func newSandboxTransferRefundSimulateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyEventType string
+	var bodyRefundId string
+	var bodySecret string
+	var bodyTestClockId string
+	var bodyWebhook string
+
+	cmd := &cobra.Command{
+		Use:   "transfer-refund-simulate",
+		Short: "Simulate a refund event in Sandbox",
+		Example: "  plaid-cli sandbox transfer-refund-simulate --event-type value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/sandbox/transfer/refund/simulate"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyEventType != "" {
+				body["event_type"] = bodyEventType
+			}
+			if bodyRefundId != "" {
+				body["refund_id"] = bodyRefundId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyTestClockId != "" {
+				body["test_clock_id"] = bodyTestClockId
+			}
+			if bodyWebhook != "" {
+				body["webhook"] = bodyWebhook
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyEventType, "event-type", "", "The asynchronous event to be simulated. May be: `refund.posted`, `refund.settled`, `refund.failed`, or...")
+	_ = cmd.MarkFlagRequired("event-type")
+	cmd.Flags().StringVar(&bodyRefundId, "refund-id", "", "Plaid’s unique identifier for a refund.")
+	_ = cmd.MarkFlagRequired("refund-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyTestClockId, "test-clock-id", "", "Plaid’s unique identifier for a test clock. If provided, the event to be simulated is created at the...")
+	cmd.Flags().StringVar(&bodyWebhook, "webhook", "", "The webhook URL to which a `TRANSFER_EVENTS_UPDATE` webhook should be sent.")
+
+	return cmd
+}
+
+func newSandboxTransferRepaymentSimulateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "transfer-repayment-simulate",
+		Short: "Trigger the creation of a repayment",
+		Example: "  plaid-cli sandbox transfer-repayment-simulate",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/sandbox/transfer/repayment/simulate"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newSandboxTransferSimulateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyEventType string
+	var bodySecret string
+	var bodyTestClockId string
+	var bodyTransferId string
+	var bodyWebhook string
+
+	cmd := &cobra.Command{
+		Use:   "transfer-simulate",
+		Short: "Simulate a transfer event in Sandbox",
+		Example: "  plaid-cli sandbox transfer-simulate --event-type value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/sandbox/transfer/simulate"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyEventType != "" {
+				body["event_type"] = bodyEventType
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyTestClockId != "" {
+				body["test_clock_id"] = bodyTestClockId
+			}
+			if bodyTransferId != "" {
+				body["transfer_id"] = bodyTransferId
+			}
+			if bodyWebhook != "" {
+				body["webhook"] = bodyWebhook
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyEventType, "event-type", "", "The asynchronous event to be simulated. May be: `posted`, `settled`, `failed`, `funds_available`, or `returned`. An...")
+	_ = cmd.MarkFlagRequired("event-type")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyTestClockId, "test-clock-id", "", "Plaid’s unique identifier for a test clock. If provided, the event to be simulated is created at the...")
+	cmd.Flags().StringVar(&bodyTransferId, "transfer-id", "", "Plaid’s unique identifier for a transfer.")
+	_ = cmd.MarkFlagRequired("transfer-id")
+	cmd.Flags().StringVar(&bodyWebhook, "webhook", "", "The webhook URL to which a `TRANSFER_EVENTS_UPDATE` webhook should be sent.")
+
+	return cmd
+}
+
+func newSandboxTransferSweepSimulateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyTestClockId string
+	var bodyWebhook string
+
+	cmd := &cobra.Command{
+		Use:   "transfer-sweep-simulate",
+		Short: "Simulate creating a sweep",
+		Example: "  plaid-cli sandbox transfer-sweep-simulate",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/sandbox/transfer/sweep/simulate"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyTestClockId != "" {
+				body["test_clock_id"] = bodyTestClockId
+			}
+			if bodyWebhook != "" {
+				body["webhook"] = bodyWebhook
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyTestClockId, "test-clock-id", "", "Plaid’s unique identifier for a test clock. If provided, the sweep to be simulated is created on the day of the...")
+	cmd.Flags().StringVar(&bodyWebhook, "webhook", "", "The webhook URL to which a `TRANSFER_EVENTS_UPDATE` webhook should be sent.")
+
+	return cmd
+}
+
+func newSandboxTransferTestClockAdvanceCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyNewVirtualTime string
+	var bodySecret string
+	var bodyTestClockId string
+
+	cmd := &cobra.Command{
+		Use:   "transfer-test-clock-advance",
+		Short: "Advance a test clock",
+		Example: "  plaid-cli sandbox transfer-test-clock-advance --new-virtual-time value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/sandbox/transfer/test_clock/advance"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyNewVirtualTime != "" {
+				body["new_virtual_time"] = bodyNewVirtualTime
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyTestClockId != "" {
+				body["test_clock_id"] = bodyTestClockId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyNewVirtualTime, "new-virtual-time", "", "The virtual timestamp on the test clock. This will be of the form `2006-01-02T15:04:05Z`.")
+	_ = cmd.MarkFlagRequired("new-virtual-time")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyTestClockId, "test-clock-id", "", "Plaid’s unique identifier for a test clock. This field is only populated in the Sandbox environment, and only if a...")
+	_ = cmd.MarkFlagRequired("test-clock-id")
+
+	return cmd
+}
+
+func newSandboxTransferTestClockCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyVirtualTime string
+
+	cmd := &cobra.Command{
+		Use:   "transfer-test-clock-create",
+		Short: "Create a test clock",
+		Example: "  plaid-cli sandbox transfer-test-clock-create",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/sandbox/transfer/test_clock/create"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyVirtualTime != "" {
+				body["virtual_time"] = bodyVirtualTime
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyVirtualTime, "virtual-time", "", "The virtual timestamp on the test clock. If not provided, the current timestamp will be used. This will be of the...")
+
+	return cmd
+}
+
+func newSandboxTransferTestClockGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyTestClockId string
+
+	cmd := &cobra.Command{
+		Use:   "transfer-test-clock-get",
+		Short: "Get a test clock",
+		Example: "  plaid-cli sandbox transfer-test-clock-get --test-clock-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/sandbox/transfer/test_clock/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyTestClockId != "" {
+				body["test_clock_id"] = bodyTestClockId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyTestClockId, "test-clock-id", "", "Plaid’s unique identifier for a test clock. This field is only populated in the Sandbox environment, and only if a...")
+	_ = cmd.MarkFlagRequired("test-clock-id")
+
+	return cmd
+}
+
+func newSandboxTransferTestClockListCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyCount int
+	var bodyEndVirtualTime string
+	var bodyOffset int
+	var bodySecret string
+	var bodyStartVirtualTime string
+
+	cmd := &cobra.Command{
+		Use:   "transfer-test-clock-list",
+		Short: "List test clocks",
+		Example: "  plaid-cli sandbox transfer-test-clock-list",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/sandbox/transfer/test_clock/list"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCount != 0 {
+				body["count"] = bodyCount
+			}
+			if bodyEndVirtualTime != "" {
+				body["end_virtual_time"] = bodyEndVirtualTime
+			}
+			if bodyOffset != 0 {
+				body["offset"] = bodyOffset
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyStartVirtualTime != "" {
+				body["start_virtual_time"] = bodyStartVirtualTime
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().IntVar(&bodyCount, "count", 25, "The maximum number of test clocks to return.")
+	cmd.Flags().StringVar(&bodyEndVirtualTime, "end-virtual-time", "", "The end virtual timestamp of test clocks to return. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)")
+	cmd.Flags().IntVar(&bodyOffset, "offset", 0, "The number of test clocks to skip before returning results.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyStartVirtualTime, "start-virtual-time", "", "The start virtual timestamp of test clocks to return. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)")
+
+	return cmd
+}
+
+func newSandboxUserResetLoginCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyUserId string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "user-reset-login",
+		Short: "Force item(s) for a Sandbox User into an error state",
+		Example: "  plaid-cli sandbox user-reset-login",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/sandbox/user/reset_login"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserId != "" {
+				body["user_id"] = bodyUserId
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserId, "user-id", "", "A unique user identifier, created by `/user/create`. Integrations that began using `/user/create` after December 10,...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/session.go b/plaid-cli/internal/cli/session.go
new file mode 100644
index 00000000..8a4dfaf2
--- /dev/null
+++ b/plaid-cli/internal/cli/session.go
@@ -0,0 +1,87 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newSessionCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "session",
+		Short: "Manage session",
+	}
+
+	cmd.AddCommand(newSessionTokenCreateCmd(flags))
+	return cmd
+}
+
+func newSessionTokenCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyAndroidPackageName string
+	var bodyClientId string
+	var bodyRedirectUri string
+	var bodySecret string
+	var bodyTemplateId string
+	var bodyUserId string
+	var bodyWebhook string
+
+	cmd := &cobra.Command{
+		Use:   "token-create",
+		Aliases: []string{"create"},
+		Short: "Create a Link token for Layer",
+		Example: "  plaid-cli session token-create --template-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/session/token/create"
+			body := map[string]any{}
+			if bodyAndroidPackageName != "" {
+				body["android_package_name"] = bodyAndroidPackageName
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyRedirectUri != "" {
+				body["redirect_uri"] = bodyRedirectUri
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyTemplateId != "" {
+				body["template_id"] = bodyTemplateId
+			}
+			if bodyUserId != "" {
+				body["user_id"] = bodyUserId
+			}
+			if bodyWebhook != "" {
+				body["webhook"] = bodyWebhook
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAndroidPackageName, "android-package-name", "", "The name of your app's Android package. Required if using the session token to initialize Layer on Android. Any...")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyRedirectUri, "redirect-uri", "", "A URI indicating the destination where a user should be forwarded after completing the Link flow; used to support...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyTemplateId, "template-id", "", "The id of a template defined in Plaid Dashboard")
+	_ = cmd.MarkFlagRequired("template-id")
+	cmd.Flags().StringVar(&bodyUserId, "user-id", "", "A unique user identifier, created by `/user/create`. Integrations that began using `/user/create` after December 10,...")
+	cmd.Flags().StringVar(&bodyWebhook, "webhook", "", "The destination URL to which any webhooks should be sent. If you use the same webhook listener for all Sandbox or...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/signal.go b/plaid-cli/internal/cli/signal.go
new file mode 100644
index 00000000..4a2c1362
--- /dev/null
+++ b/plaid-cli/internal/cli/signal.go
@@ -0,0 +1,352 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newSignalCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "signal",
+		Short: "Manage signal",
+	}
+
+	cmd.AddCommand(newSignalDecisionReportCmd(flags))
+	cmd.AddCommand(newSignalEvaluateCmd(flags))
+	cmd.AddCommand(newSignalPrepareCmd(flags))
+	cmd.AddCommand(newSignalReturnReportCmd(flags))
+	cmd.AddCommand(newSignalScheduleCmd(flags))
+	return cmd
+}
+
+func newSignalDecisionReportCmd(flags *rootFlags) *cobra.Command {
+	var bodyAmountInstantlyAvailable float64
+	var bodyClientId string
+	var bodyClientTransactionId string
+	var bodyDaysFundsOnHold int
+	var bodyDecisionOutcome string
+	var bodyInitiated bool
+	var bodyPaymentMethod string
+	var bodySecret string
+	var bodySubmittedAt string
+
+	cmd := &cobra.Command{
+		Use:   "decision-report",
+		Aliases: []string{"create"},
+		Short: "Report whether you initiated an ACH transaction",
+		Example: "  plaid-cli signal decision-report --client-transaction-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/signal/decision/report"
+			body := map[string]any{}
+			if bodyAmountInstantlyAvailable != 0.0 {
+				body["amount_instantly_available"] = bodyAmountInstantlyAvailable
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyClientTransactionId != "" {
+				body["client_transaction_id"] = bodyClientTransactionId
+			}
+			if bodyDaysFundsOnHold != 0 {
+				body["days_funds_on_hold"] = bodyDaysFundsOnHold
+			}
+			if bodyDecisionOutcome != "" {
+				body["decision_outcome"] = bodyDecisionOutcome
+			}
+			if bodyInitiated != false {
+				body["initiated"] = bodyInitiated
+			}
+			if bodyPaymentMethod != "" {
+				body["payment_method"] = bodyPaymentMethod
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodySubmittedAt != "" {
+				body["submitted_at"] = bodySubmittedAt
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().Float64Var(&bodyAmountInstantlyAvailable, "amount-instantly-available", 0.0, "The amount (in USD) made available to your customers instantly following the debit transaction. It could be a...")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyClientTransactionId, "client-transaction-id", "", "Must be the same as the `client_transaction_id` supplied when calling `/signal/evaluate`")
+	_ = cmd.MarkFlagRequired("client-transaction-id")
+	cmd.Flags().IntVar(&bodyDaysFundsOnHold, "days-funds-on-hold", 0, "The actual number of days (hold time) since the ACH debit transaction that you wait before making funds available to...")
+	cmd.Flags().StringVar(&bodyDecisionOutcome, "decision-outcome", "", "The payment decision from the risk assessment. `APPROVE`: approve the transaction without requiring further actions...")
+	cmd.Flags().BoolVar(&bodyInitiated, "initiated", false, "`true` if the ACH transaction was initiated, `false` otherwise. This field must be returned as a boolean. If...")
+	_ = cmd.MarkFlagRequired("initiated")
+	cmd.Flags().StringVar(&bodyPaymentMethod, "payment-method", "", "The payment method to complete the transaction after the risk assessment. It may be different from the default...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodySubmittedAt, "submitted-at", "", "The date the ACH debit was submitted to the bank for processing (in ISO 8601 format: `YYYY-MM-DDTHH:mm:ssZ`). This...")
+
+	return cmd
+}
+
+func newSignalEvaluateCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyAccountId string
+	var bodyAmount float64
+	var bodyClientId string
+	var bodyClientTransactionId string
+	var bodyClientUserId string
+	var bodyDefaultPaymentMethod string
+	var bodyIsRecurring bool
+	var bodyRiskProfileKey string
+	var bodyRulesetKey string
+	var bodySecret string
+	var bodyUserPresent bool
+
+	cmd := &cobra.Command{
+		Use:   "evaluate",
+		Short: "Evaluate a planned ACH transaction",
+		Example: "  plaid-cli signal evaluate --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/signal/evaluate"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyAccountId != "" {
+				body["account_id"] = bodyAccountId
+			}
+			if bodyAmount != 0.0 {
+				body["amount"] = bodyAmount
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyClientTransactionId != "" {
+				body["client_transaction_id"] = bodyClientTransactionId
+			}
+			if bodyClientUserId != "" {
+				body["client_user_id"] = bodyClientUserId
+			}
+			if bodyDefaultPaymentMethod != "" {
+				body["default_payment_method"] = bodyDefaultPaymentMethod
+			}
+			if bodyIsRecurring != false {
+				body["is_recurring"] = bodyIsRecurring
+			}
+			if bodyRiskProfileKey != "" {
+				body["risk_profile_key"] = bodyRiskProfileKey
+			}
+			if bodyRulesetKey != "" {
+				body["ruleset_key"] = bodyRulesetKey
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserPresent != false {
+				body["user_present"] = bodyUserPresent
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyAccountId, "account-id", "", "The Plaid `account_id` of the account that is the funding source for the proposed transaction. The `account_id` is...")
+	_ = cmd.MarkFlagRequired("account-id")
+	cmd.Flags().Float64Var(&bodyAmount, "amount", 0.0, "The transaction amount, in USD (e.g. `102.05`)")
+	_ = cmd.MarkFlagRequired("amount")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyClientTransactionId, "client-transaction-id", "", "The unique ID that you would like to use to refer to this evaluation attempt - for example, a payment attempt ID....")
+	_ = cmd.MarkFlagRequired("client-transaction-id")
+	cmd.Flags().StringVar(&bodyClientUserId, "client-user-id", "", "A unique ID that identifies the end user in your system. This ID is used to correlate requests by a user with...")
+	cmd.Flags().StringVar(&bodyDefaultPaymentMethod, "default-payment-method", "", "The default ACH payment method to complete the transaction. When using a Balance-only ruleset, this field is...")
+	cmd.Flags().BoolVar(&bodyIsRecurring, "is-recurring", false, "Use `true` if the ACH transaction is a part of recurring schedule (for example, a monthly repayment); `false`...")
+	cmd.Flags().StringVar(&bodyRiskProfileKey, "risk-profile-key", "", "Specifying `risk_profile_key` is deprecated. Please provide `ruleset` instead.")
+	cmd.Flags().StringVar(&bodyRulesetKey, "ruleset-key", "", "The key of the ruleset to use for evaluating this transaction. You can create a ruleset using the Plaid Dashboard,...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().BoolVar(&bodyUserPresent, "user-present", false, "`true` if the end user is present while initiating the ACH transfer and the endpoint is being called; `false`...")
+
+	return cmd
+}
+
+func newSignalPrepareCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "prepare",
+		Short: "Opt-in an Item to Signal Transaction Scores",
+		Example: "  plaid-cli signal prepare --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/signal/prepare"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newSignalReturnReportCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyClientTransactionId string
+	var bodyReturnCode string
+	var bodyReturnedAt string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "return-report",
+		Short: "Report a return for an ACH transaction",
+		Example: "  plaid-cli signal return-report --client-transaction-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/signal/return/report"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyClientTransactionId != "" {
+				body["client_transaction_id"] = bodyClientTransactionId
+			}
+			if bodyReturnCode != "" {
+				body["return_code"] = bodyReturnCode
+			}
+			if bodyReturnedAt != "" {
+				body["returned_at"] = bodyReturnedAt
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyClientTransactionId, "client-transaction-id", "", "Must be the same as the `client_transaction_id` supplied when calling `/signal/evaluate` or `/accounts/balance/get`.")
+	_ = cmd.MarkFlagRequired("client-transaction-id")
+	cmd.Flags().StringVar(&bodyReturnCode, "return-code", "", "Must be a valid ACH return code (e.g. 'R01') If formatted incorrectly, this will result in an...")
+	_ = cmd.MarkFlagRequired("return-code")
+	cmd.Flags().StringVar(&bodyReturnedAt, "returned-at", "", "Date and time when you receive the returns from your payment processors, in ISO 8601 format (`YYYY-MM-DDTHH:mm:ssZ`).")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newSignalScheduleCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyAccountId string
+	var bodyAmount float64
+	var bodyClientId string
+	var bodyClientTransactionId string
+	var bodyDefaultPaymentMethod string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "schedule",
+		Short: "Schedule a planned ACH transaction",
+		Example: "  plaid-cli signal schedule --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/signal/schedule"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyAccountId != "" {
+				body["account_id"] = bodyAccountId
+			}
+			if bodyAmount != 0.0 {
+				body["amount"] = bodyAmount
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyClientTransactionId != "" {
+				body["client_transaction_id"] = bodyClientTransactionId
+			}
+			if bodyDefaultPaymentMethod != "" {
+				body["default_payment_method"] = bodyDefaultPaymentMethod
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyAccountId, "account-id", "", "The Plaid `account_id` of the account that is the funding source for the proposed transaction. The `account_id` is...")
+	_ = cmd.MarkFlagRequired("account-id")
+	cmd.Flags().Float64Var(&bodyAmount, "amount", 0.0, "The transaction amount, in USD (e.g. `102.05`)")
+	_ = cmd.MarkFlagRequired("amount")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyClientTransactionId, "client-transaction-id", "", "The unique ID that you would like to use to refer to this transaction. For your convenience mapping your internal...")
+	_ = cmd.MarkFlagRequired("client-transaction-id")
+	cmd.Flags().StringVar(&bodyDefaultPaymentMethod, "default-payment-method", "", "The payment method specified in the `default_payment_method` field directly impacts the timing recommendations...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/statements.go b/plaid-cli/internal/cli/statements.go
new file mode 100644
index 00000000..078bc725
--- /dev/null
+++ b/plaid-cli/internal/cli/statements.go
@@ -0,0 +1,171 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newStatementsCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "statements",
+		Short: "Manage statements",
+	}
+
+	cmd.AddCommand(newStatementsDownloadCmd(flags))
+	cmd.AddCommand(newStatementsListCmd(flags))
+	cmd.AddCommand(newStatementsRefreshCmd(flags))
+	return cmd
+}
+
+func newStatementsDownloadCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodySecret string
+	var bodyStatementId string
+
+	cmd := &cobra.Command{
+		Use:   "download",
+		Aliases: []string{"create"},
+		Short: "Retrieve a single statement.",
+		Example: "  plaid-cli statements download --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/statements/download"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyStatementId != "" {
+				body["statement_id"] = bodyStatementId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyStatementId, "statement-id", "", "Plaid's unique identifier for the statement.")
+	_ = cmd.MarkFlagRequired("statement-id")
+
+	return cmd
+}
+
+func newStatementsListCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "list",
+		Short: "Retrieve a list of all statements associated with an item.",
+		Example: "  plaid-cli statements list --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/statements/list"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newStatementsRefreshCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodyEndDate string
+	var bodySecret string
+	var bodyStartDate string
+
+	cmd := &cobra.Command{
+		Use:   "refresh",
+		Short: "Refresh statements data.",
+		Example: "  plaid-cli statements refresh --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/statements/refresh"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyEndDate != "" {
+				body["end_date"] = bodyEndDate
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyStartDate != "" {
+				body["start_date"] = bodyStartDate
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyEndDate, "end-date", "", "The end date for statements, in 'YYYY-MM-DD' format, e.g. '2023-10-30'. You can request up to two years of data. To...")
+	_ = cmd.MarkFlagRequired("end-date")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyStartDate, "start-date", "", "The start date for statements, in 'YYYY-MM-DD' format, e.g. '2023-08-30'. To determine whether a statement falls...")
+	_ = cmd.MarkFlagRequired("start-date")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/transactions.go b/plaid-cli/internal/cli/transactions.go
new file mode 100644
index 00000000..50f01ad2
--- /dev/null
+++ b/plaid-cli/internal/cli/transactions.go
@@ -0,0 +1,261 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newTransactionsCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "transactions",
+		Short: "Manage transactions",
+	}
+
+	cmd.AddCommand(newTransactionsEnrichCmd(flags))
+	cmd.AddCommand(newTransactionsGetCmd(flags))
+	cmd.AddCommand(newTransactionsRecurringGetCmd(flags))
+	cmd.AddCommand(newTransactionsRefreshCmd(flags))
+	cmd.AddCommand(newTransactionsSyncCmd(flags))
+	return cmd
+}
+
+func newTransactionsEnrichCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccountType string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "enrich",
+		Aliases: []string{"create"},
+		Short: "Enrich locally-held transaction data",
+		Example: "  plaid-cli transactions enrich --account-type value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transactions/enrich"
+			body := map[string]any{}
+			if bodyAccountType != "" {
+				body["account_type"] = bodyAccountType
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccountType, "account-type", "", "The account type for the requested transactions (either `depository` or `credit`).")
+	_ = cmd.MarkFlagRequired("account-type")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newTransactionsGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodyEndDate string
+	var bodySecret string
+	var bodyStartDate string
+
+	cmd := &cobra.Command{
+		Use:   "get",
+		Short: "Get transaction data",
+		Example: "  plaid-cli transactions get --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transactions/get"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyEndDate != "" {
+				body["end_date"] = bodyEndDate
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyStartDate != "" {
+				body["start_date"] = bodyStartDate
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyEndDate, "end-date", "", "The latest date for which data should be returned. Dates should be formatted as YYYY-MM-DD.")
+	_ = cmd.MarkFlagRequired("end-date")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyStartDate, "start-date", "", "The earliest date for which data should be returned. Dates should be formatted as YYYY-MM-DD.")
+	_ = cmd.MarkFlagRequired("start-date")
+
+	return cmd
+}
+
+func newTransactionsRecurringGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "recurring-get",
+		Short: "Fetch recurring transaction streams",
+		Example: "  plaid-cli transactions recurring-get --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transactions/recurring/get"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newTransactionsRefreshCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "refresh",
+		Short: "Refresh transaction data",
+		Example: "  plaid-cli transactions refresh --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transactions/refresh"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newTransactionsSyncCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyClientId string
+	var bodyCount int
+	var bodyCursor string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "sync",
+		Short: "Get incremental transaction updates on an Item",
+		Example: "  plaid-cli transactions sync --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transactions/sync"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCount != 0 {
+				body["count"] = bodyCount
+			}
+			if bodyCursor != "" {
+				body["cursor"] = bodyCursor
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The access token associated with the Item data is being requested for.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().IntVar(&bodyCount, "count", 100, "The number of transaction updates to fetch.")
+	cmd.Flags().StringVar(&bodyCursor, "cursor", "", "The cursor value represents the last update requested. Providing it will cause the response to only return changes...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/transfer.go b/plaid-cli/internal/cli/transfer.go
new file mode 100644
index 00000000..b6b4acb2
--- /dev/null
+++ b/plaid-cli/internal/cli/transfer.go
@@ -0,0 +1,2493 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newTransferCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "transfer",
+		Short: "Manage transfer",
+	}
+
+	cmd.AddCommand(newTransferAuthorizationCancelCmd(flags))
+	cmd.AddCommand(newTransferAuthorizationCreateCmd(flags))
+	cmd.AddCommand(newTransferBalanceGetCmd(flags))
+	cmd.AddCommand(newTransferCancelCmd(flags))
+	cmd.AddCommand(newTransferCapabilitiesGetCmd(flags))
+	cmd.AddCommand(newTransferConfigurationGetCmd(flags))
+	cmd.AddCommand(newTransferCreateCmd(flags))
+	cmd.AddCommand(newTransferDiligenceDocumentUploadCmd(flags))
+	cmd.AddCommand(newTransferDiligenceSubmitCmd(flags))
+	cmd.AddCommand(newTransferEventListCmd(flags))
+	cmd.AddCommand(newTransferEventSyncCmd(flags))
+	cmd.AddCommand(newTransferGetCmd(flags))
+	cmd.AddCommand(newTransferIntentCreateCmd(flags))
+	cmd.AddCommand(newTransferIntentGetCmd(flags))
+	cmd.AddCommand(newTransferLedgerDepositCmd(flags))
+	cmd.AddCommand(newTransferLedgerDistributeCmd(flags))
+	cmd.AddCommand(newTransferLedgerEventListCmd(flags))
+	cmd.AddCommand(newTransferLedgerGetCmd(flags))
+	cmd.AddCommand(newTransferLedgerWithdrawCmd(flags))
+	cmd.AddCommand(newTransferListCmd(flags))
+	cmd.AddCommand(newTransferMetricsGetCmd(flags))
+	cmd.AddCommand(newTransferMigrateAccountCmd(flags))
+	cmd.AddCommand(newTransferOriginatorCreateCmd(flags))
+	cmd.AddCommand(newTransferOriginatorFundingAccountCreateCmd(flags))
+	cmd.AddCommand(newTransferOriginatorFundingAccountUpdateCmd(flags))
+	cmd.AddCommand(newTransferOriginatorGetCmd(flags))
+	cmd.AddCommand(newTransferOriginatorListCmd(flags))
+	cmd.AddCommand(newTransferPlatformOriginatorCreateCmd(flags))
+	cmd.AddCommand(newTransferPlatformPersonCreateCmd(flags))
+	cmd.AddCommand(newTransferPlatformRequirementSubmitCmd(flags))
+	cmd.AddCommand(newTransferQuestionnaireCreateCmd(flags))
+	cmd.AddCommand(newTransferRecurringCancelCmd(flags))
+	cmd.AddCommand(newTransferRecurringCreateCmd(flags))
+	cmd.AddCommand(newTransferRecurringGetCmd(flags))
+	cmd.AddCommand(newTransferRecurringListCmd(flags))
+	cmd.AddCommand(newTransferRefundCancelCmd(flags))
+	cmd.AddCommand(newTransferRefundCreateCmd(flags))
+	cmd.AddCommand(newTransferRefundGetCmd(flags))
+	cmd.AddCommand(newTransferRepaymentListCmd(flags))
+	cmd.AddCommand(newTransferRepaymentReturnListCmd(flags))
+	cmd.AddCommand(newTransferSweepGetCmd(flags))
+	cmd.AddCommand(newTransferSweepListCmd(flags))
+	return cmd
+}
+
+func newTransferAuthorizationCancelCmd(flags *rootFlags) *cobra.Command {
+	var bodyAuthorizationId string
+	var bodyClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "authorization-cancel",
+		Short: "Cancel a transfer authorization",
+		Example: "  plaid-cli transfer authorization-cancel --authorization-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/authorization/cancel"
+			body := map[string]any{}
+			if bodyAuthorizationId != "" {
+				body["authorization_id"] = bodyAuthorizationId
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAuthorizationId, "authorization-id", "", "Plaid’s unique identifier for a transfer authorization.")
+	_ = cmd.MarkFlagRequired("authorization-id")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newTransferAuthorizationCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyAccountId string
+	var bodyAchClass string
+	var bodyAmount string
+	var bodyBeaconSessionId string
+	var bodyClientId string
+	var bodyFundingAccountId string
+	var bodyIdempotencyKey string
+	var bodyIsoCurrencyCode string
+	var bodyLedgerId string
+	var bodyNetwork string
+	var bodyOriginationAccountId string
+	var bodyOriginatorClientId string
+	var bodyPaymentProfileToken string
+	var bodyRequestGuarantee bool
+	var bodyRulesetKey string
+	var bodySecret string
+	var bodyTestClockId string
+	var bodyType string
+	var bodyUserPresent bool
+	var bodyWithGuarantee bool
+
+	cmd := &cobra.Command{
+		Use:   "authorization-create",
+		Short: "Create a transfer authorization",
+		Example: "  plaid-cli transfer authorization-create --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/authorization/create"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyAccountId != "" {
+				body["account_id"] = bodyAccountId
+			}
+			if bodyAchClass != "" {
+				body["ach_class"] = bodyAchClass
+			}
+			if bodyAmount != "" {
+				body["amount"] = bodyAmount
+			}
+			if bodyBeaconSessionId != "" {
+				body["beacon_session_id"] = bodyBeaconSessionId
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyFundingAccountId != "" {
+				body["funding_account_id"] = bodyFundingAccountId
+			}
+			if bodyIdempotencyKey != "" {
+				body["idempotency_key"] = bodyIdempotencyKey
+			}
+			if bodyIsoCurrencyCode != "" {
+				body["iso_currency_code"] = bodyIsoCurrencyCode
+			}
+			if bodyLedgerId != "" {
+				body["ledger_id"] = bodyLedgerId
+			}
+			if bodyNetwork != "" {
+				body["network"] = bodyNetwork
+			}
+			if bodyOriginationAccountId != "" {
+				body["origination_account_id"] = bodyOriginationAccountId
+			}
+			if bodyOriginatorClientId != "" {
+				body["originator_client_id"] = bodyOriginatorClientId
+			}
+			if bodyPaymentProfileToken != "" {
+				body["payment_profile_token"] = bodyPaymentProfileToken
+			}
+			if bodyRequestGuarantee != false {
+				body["request_guarantee"] = bodyRequestGuarantee
+			}
+			if bodyRulesetKey != "" {
+				body["ruleset_key"] = bodyRulesetKey
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyTestClockId != "" {
+				body["test_clock_id"] = bodyTestClockId
+			}
+			if bodyType != "" {
+				body["type"] = bodyType
+			}
+			if bodyUserPresent != false {
+				body["user_present"] = bodyUserPresent
+			}
+			if bodyWithGuarantee != false {
+				body["with_guarantee"] = bodyWithGuarantee
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The Plaid `access_token` for the account that will be debited or credited.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyAccountId, "account-id", "", "The Plaid `account_id` corresponding to the end-user account that will be debited or credited.")
+	_ = cmd.MarkFlagRequired("account-id")
+	cmd.Flags().StringVar(&bodyAchClass, "ach-class", "", "Specifies the use case of the transfer. Required for transfers on an ACH network. For more details, see [ACH SEC...")
+	cmd.Flags().StringVar(&bodyAmount, "amount", "", "The amount of the transfer (decimal string with two digits of precision e.g. '10.00'). When calling...")
+	_ = cmd.MarkFlagRequired("amount")
+	cmd.Flags().StringVar(&bodyBeaconSessionId, "beacon-session-id", "", "The unique identifier returned by Plaid's [beacon](https://plaid.com/docs/transfer/guarantee/#using-a-beacon) when...")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyFundingAccountId, "funding-account-id", "", "Specify the account used to fund the transfer. Should be specified if using legacy funding methods only. If using...")
+	cmd.Flags().StringVar(&bodyIdempotencyKey, "idempotency-key", "", "A random key provided by the client, per unique authorization, which expires after 48 hours. Maximum of 50...")
+	cmd.Flags().StringVar(&bodyIsoCurrencyCode, "iso-currency-code", "", "The currency of the transfer amount. The default value is 'USD'.")
+	cmd.Flags().StringVar(&bodyLedgerId, "ledger-id", "", "Specify which ledger balance should be used to fund the transfer. You can find a list of `ledger_id`s in the...")
+	cmd.Flags().StringVar(&bodyNetwork, "network", "", "The network or rails used for the transfer. For transfers submitted as `ach` or `same-day-ach`, the Standard ACH...")
+	_ = cmd.MarkFlagRequired("network")
+	cmd.Flags().StringVar(&bodyOriginationAccountId, "origination-account-id", "", "Plaid's unique identifier for the origination account for this authorization. If not specified, the default account...")
+	cmd.Flags().StringVar(&bodyOriginatorClientId, "originator-client-id", "", "The Plaid client ID that is the originator of this transfer. Only needed if creating transfers on behalf of another...")
+	cmd.Flags().StringVar(&bodyPaymentProfileToken, "payment-profile-token", "", "The payment profile token associated with the Payment Profile that will be debited or credited. Required if not...")
+	cmd.Flags().BoolVar(&bodyRequestGuarantee, "request-guarantee", false, "Indicates whether the transfer should be evaluated for guarantee coverage. When set to `true`, Plaid assesses the...")
+	cmd.Flags().StringVar(&bodyRulesetKey, "ruleset-key", "", "The key of the Ruleset for the transaction. This feature is currently in closed beta; to request access, contact...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyTestClockId, "test-clock-id", "", "Plaid’s unique identifier for a test clock. This field may only be used when using `sandbox` environment. If...")
+	cmd.Flags().StringVar(&bodyType, "type", "", "The type of transfer. This will be either `debit` or `credit`. A `debit` indicates a transfer of money into the...")
+	_ = cmd.MarkFlagRequired("type")
+	cmd.Flags().BoolVar(&bodyUserPresent, "user-present", false, "If the end user is initiating the specific transfer themselves via an interactive UI, this should be `true`; for...")
+	cmd.Flags().BoolVar(&bodyWithGuarantee, "with-guarantee", true, "If set to `false`, Plaid will not offer a `guarantee_decision` for this request (Guarantee customers only). This...")
+
+	return cmd
+}
+
+func newTransferBalanceGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyOriginatorClientId string
+	var bodySecret string
+	var bodyType string
+
+	cmd := &cobra.Command{
+		Use:   "balance-get",
+		Short: "(Deprecated) Retrieve a balance held with Plaid",
+		Example: "  plaid-cli transfer balance-get",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/balance/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyOriginatorClientId != "" {
+				body["originator_client_id"] = bodyOriginatorClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyType != "" {
+				body["type"] = bodyType
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyOriginatorClientId, "originator-client-id", "", "Client ID of the end customer.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyType, "type", "", "The type of balance. `prefunded_rtp_credits` - Your prefunded RTP credit balance with Plaid `prefunded_ach_credits`...")
+
+	return cmd
+}
+
+func newTransferCancelCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyOriginatorClientId string
+	var bodyReasonCode string
+	var bodySecret string
+	var bodyTransferId string
+
+	cmd := &cobra.Command{
+		Use:   "cancel",
+		Short: "Cancel a transfer",
+		Example: "  plaid-cli transfer cancel --transfer-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/cancel"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyOriginatorClientId != "" {
+				body["originator_client_id"] = bodyOriginatorClientId
+			}
+			if bodyReasonCode != "" {
+				body["reason_code"] = bodyReasonCode
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyTransferId != "" {
+				body["transfer_id"] = bodyTransferId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyOriginatorClientId, "originator-client-id", "", "The Plaid client ID of the transfer originator. Should only be present if `client_id` is a third-party sender (TPS).")
+	cmd.Flags().StringVar(&bodyReasonCode, "reason-code", "", "Specifies the reason for cancelling transfer. This is required for RfP transfers, and will be ignored for other...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyTransferId, "transfer-id", "", "Plaid’s unique identifier for a transfer.")
+	_ = cmd.MarkFlagRequired("transfer-id")
+
+	return cmd
+}
+
+func newTransferCapabilitiesGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyAccountId string
+	var bodyClientId string
+	var bodyPaymentProfileToken string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "capabilities-get",
+		Short: "Get RTP eligibility information of a transfer",
+		Example: "  plaid-cli transfer capabilities-get --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/capabilities/get"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyAccountId != "" {
+				body["account_id"] = bodyAccountId
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyPaymentProfileToken != "" {
+				body["payment_profile_token"] = bodyPaymentProfileToken
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The Plaid `access_token` for the account that will be debited or credited.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyAccountId, "account-id", "", "The Plaid `account_id` corresponding to the end-user account that will be debited or credited.")
+	_ = cmd.MarkFlagRequired("account-id")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyPaymentProfileToken, "payment-profile-token", "", "A payment profile token associated with the Payment Profile data that is being requested.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newTransferConfigurationGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyOriginatorClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "configuration-get",
+		Short: "Get transfer product configuration",
+		Example: "  plaid-cli transfer configuration-get",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/configuration/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyOriginatorClientId != "" {
+				body["originator_client_id"] = bodyOriginatorClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyOriginatorClientId, "originator-client-id", "", "The Plaid client ID of the transfer originator. Should only be present if `client_id` is a [Platform...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newTransferCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyAccountId string
+	var bodyAmount string
+	var bodyAuthorizationId string
+	var bodyClientId string
+	var bodyDescription string
+	var bodyFacilitatorFee string
+	var bodyIdempotencyKey string
+	var bodyIsoCurrencyCode string
+	var bodyOriginationAccountId string
+	var bodySecret string
+	var bodyTestClockId string
+
+	cmd := &cobra.Command{
+		Use:   "create",
+		Short: "Create a transfer",
+		Example: "  plaid-cli transfer create --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/create"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyAccountId != "" {
+				body["account_id"] = bodyAccountId
+			}
+			if bodyAmount != "" {
+				body["amount"] = bodyAmount
+			}
+			if bodyAuthorizationId != "" {
+				body["authorization_id"] = bodyAuthorizationId
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyDescription != "" {
+				body["description"] = bodyDescription
+			}
+			if bodyFacilitatorFee != "" {
+				body["facilitator_fee"] = bodyFacilitatorFee
+			}
+			if bodyIdempotencyKey != "" {
+				body["idempotency_key"] = bodyIdempotencyKey
+			}
+			if bodyIsoCurrencyCode != "" {
+				body["iso_currency_code"] = bodyIsoCurrencyCode
+			}
+			if bodyOriginationAccountId != "" {
+				body["origination_account_id"] = bodyOriginationAccountId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyTestClockId != "" {
+				body["test_clock_id"] = bodyTestClockId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The Plaid `access_token` for the account that will be debited or credited.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyAccountId, "account-id", "", "The Plaid `account_id` corresponding to the end-user account that will be debited or credited.")
+	_ = cmd.MarkFlagRequired("account-id")
+	cmd.Flags().StringVar(&bodyAmount, "amount", "", "The amount of the transfer (decimal string with two digits of precision e.g. '10.00'). When calling...")
+	cmd.Flags().StringVar(&bodyAuthorizationId, "authorization-id", "", "Plaid’s unique identifier for a transfer authorization. This parameter also serves the purpose of acting as an...")
+	_ = cmd.MarkFlagRequired("authorization-id")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyDescription, "description", "", "The transfer description, maximum of 15 characters (RTP transactions) or 10 characters (ACH transactions). Should...")
+	_ = cmd.MarkFlagRequired("description")
+	cmd.Flags().StringVar(&bodyFacilitatorFee, "facilitator-fee", "", "The amount to deduct from `transfer.amount` and distribute to the platform’s Ledger balance as a facilitator fee...")
+	cmd.Flags().StringVar(&bodyIdempotencyKey, "idempotency-key", "", "Deprecated. `authorization_id` is now used as idempotency instead. A random key provided by the client, per unique...")
+	cmd.Flags().StringVar(&bodyIsoCurrencyCode, "iso-currency-code", "", "The currency of the transfer amount. The default value is 'USD'.")
+	cmd.Flags().StringVar(&bodyOriginationAccountId, "origination-account-id", "", "Plaid’s unique identifier for the origination account for this transfer. If you have more than one origination...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyTestClockId, "test-clock-id", "", "Plaid’s unique identifier for a test clock. This field may only be used when using `sandbox` environment. If...")
+
+	return cmd
+}
+
+func newTransferDiligenceDocumentUploadCmd(flags *rootFlags) *cobra.Command {
+	var bodyFile string
+	var bodyOriginatorClientId string
+	var bodyPurpose string
+
+	cmd := &cobra.Command{
+		Use:   "diligence-document-upload",
+		Short: "Upload transfer diligence document on behalf of the originator",
+		Example: "  plaid-cli transfer diligence-document-upload --file value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/diligence/document/upload"
+			body := map[string]any{}
+			if bodyFile != "" {
+				body["file"] = bodyFile
+			}
+			if bodyOriginatorClientId != "" {
+				body["originator_client_id"] = bodyOriginatorClientId
+			}
+			if bodyPurpose != "" {
+				body["purpose"] = bodyPurpose
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyFile, "file", "", "A file to upload. The file size must be less than 20MB. Supported file extensions: .pdf.")
+	_ = cmd.MarkFlagRequired("file")
+	cmd.Flags().StringVar(&bodyOriginatorClientId, "originator-client-id", "", "The Client ID of the originator whose document that you want to upload.")
+	_ = cmd.MarkFlagRequired("originator-client-id")
+	cmd.Flags().StringVar(&bodyPurpose, "purpose", "", "Specifies the purpose of the uploaded file. `'DUE_DILIGENCE'` - The transfer due diligence document of the originator.")
+	_ = cmd.MarkFlagRequired("purpose")
+
+	return cmd
+}
+
+func newTransferDiligenceSubmitCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyOriginatorClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "diligence-submit",
+		Short: "Submit transfer diligence on behalf of the originator",
+		Example: "  plaid-cli transfer diligence-submit --originator-client-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/diligence/submit"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyOriginatorClientId != "" {
+				body["originator_client_id"] = bodyOriginatorClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyOriginatorClientId, "originator-client-id", "", "Client ID of the originator whose diligence that you want to submit.")
+	_ = cmd.MarkFlagRequired("originator-client-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newTransferEventListCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccountId string
+	var bodyClientId string
+	var bodyCount int
+	var bodyEndDate string
+	var bodyFundingAccountId string
+	var bodyOffset int
+	var bodyOriginationAccountId string
+	var bodyOriginatorClientId string
+	var bodySecret string
+	var bodyStartDate string
+	var bodySweepId string
+	var bodyTransferId string
+	var bodyTransferType string
+
+	cmd := &cobra.Command{
+		Use:   "event-list",
+		Short: "List transfer events",
+		Example: "  plaid-cli transfer event-list",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/event/list"
+			body := map[string]any{}
+			if bodyAccountId != "" {
+				body["account_id"] = bodyAccountId
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCount != 0 {
+				body["count"] = bodyCount
+			}
+			if bodyEndDate != "" {
+				body["end_date"] = bodyEndDate
+			}
+			if bodyFundingAccountId != "" {
+				body["funding_account_id"] = bodyFundingAccountId
+			}
+			if bodyOffset != 0 {
+				body["offset"] = bodyOffset
+			}
+			if bodyOriginationAccountId != "" {
+				body["origination_account_id"] = bodyOriginationAccountId
+			}
+			if bodyOriginatorClientId != "" {
+				body["originator_client_id"] = bodyOriginatorClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyStartDate != "" {
+				body["start_date"] = bodyStartDate
+			}
+			if bodySweepId != "" {
+				body["sweep_id"] = bodySweepId
+			}
+			if bodyTransferId != "" {
+				body["transfer_id"] = bodyTransferId
+			}
+			if bodyTransferType != "" {
+				body["transfer_type"] = bodyTransferType
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccountId, "account-id", "", "The account ID to get events for all transactions to/from an account.")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().IntVar(&bodyCount, "count", 25, "The maximum number of transfer events to return. If the number of events matching the above parameters is greater...")
+	cmd.Flags().StringVar(&bodyEndDate, "end-date", "", "The end `created` datetime of transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)")
+	cmd.Flags().StringVar(&bodyFundingAccountId, "funding-account-id", "", "Filter transfer events to only those with the specified `funding_account_id`.")
+	cmd.Flags().IntVar(&bodyOffset, "offset", 0, "The offset into the list of transfer events. When `count`=25 and `offset`=0, the first 25 events will be returned....")
+	cmd.Flags().StringVar(&bodyOriginationAccountId, "origination-account-id", "", "The origination account ID to get events for transfers from a specific origination account.")
+	cmd.Flags().StringVar(&bodyOriginatorClientId, "originator-client-id", "", "Filter transfer events to only those with the specified originator client.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyStartDate, "start-date", "", "The start `created` datetime of transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)")
+	cmd.Flags().StringVar(&bodySweepId, "sweep-id", "", "Plaid’s unique identifier for a sweep.")
+	cmd.Flags().StringVar(&bodyTransferId, "transfer-id", "", "Plaid’s unique identifier for a transfer.")
+	cmd.Flags().StringVar(&bodyTransferType, "transfer-type", "", "The type of transfer. This will be either `debit` or `credit`. A `debit` indicates a transfer of money into your...")
+
+	return cmd
+}
+
+func newTransferEventSyncCmd(flags *rootFlags) *cobra.Command {
+	var bodyAfterId int
+	var bodyClientId string
+	var bodyCount int
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "event-sync",
+		Short: "Sync transfer events",
+		Example: "  plaid-cli transfer event-sync",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/event/sync"
+			body := map[string]any{}
+			if bodyAfterId != 0 {
+				body["after_id"] = bodyAfterId
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCount != 0 {
+				body["count"] = bodyCount
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().IntVar(&bodyAfterId, "after-id", 0, "The latest (largest) `event_id` fetched via the sync endpoint, or 0 initially.")
+	_ = cmd.MarkFlagRequired("after-id")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().IntVar(&bodyCount, "count", 100, "The maximum number of transfer events to return.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newTransferGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyAuthorizationId string
+	var bodyClientId string
+	var bodyOriginatorClientId string
+	var bodySecret string
+	var bodyTransferId string
+
+	cmd := &cobra.Command{
+		Use:   "get",
+		Short: "Retrieve a transfer",
+		Example: "  plaid-cli transfer get",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/get"
+			body := map[string]any{}
+			if bodyAuthorizationId != "" {
+				body["authorization_id"] = bodyAuthorizationId
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyOriginatorClientId != "" {
+				body["originator_client_id"] = bodyOriginatorClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyTransferId != "" {
+				body["transfer_id"] = bodyTransferId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAuthorizationId, "authorization-id", "", "Plaid’s unique identifier for a transfer authorization.")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyOriginatorClientId, "originator-client-id", "", "The Plaid client ID of the transfer originator. Should only be present if `client_id` is a third-party sender (TPS).")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyTransferId, "transfer-id", "", "Plaid’s unique identifier for a transfer.")
+
+	return cmd
+}
+
+func newTransferIntentCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccountId string
+	var bodyAchClass string
+	var bodyAmount string
+	var bodyClientId string
+	var bodyDescription string
+	var bodyFundingAccountId string
+	var bodyIsoCurrencyCode string
+	var bodyMode string
+	var bodyNetwork string
+	var bodyOriginationAccountId string
+	var bodyRequireGuarantee bool
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "intent-create",
+		Short: "Create a transfer intent object to invoke the Transfer UI",
+		Example: "  plaid-cli transfer intent-create --amount value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/intent/create"
+			body := map[string]any{}
+			if bodyAccountId != "" {
+				body["account_id"] = bodyAccountId
+			}
+			if bodyAchClass != "" {
+				body["ach_class"] = bodyAchClass
+			}
+			if bodyAmount != "" {
+				body["amount"] = bodyAmount
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyDescription != "" {
+				body["description"] = bodyDescription
+			}
+			if bodyFundingAccountId != "" {
+				body["funding_account_id"] = bodyFundingAccountId
+			}
+			if bodyIsoCurrencyCode != "" {
+				body["iso_currency_code"] = bodyIsoCurrencyCode
+			}
+			if bodyMode != "" {
+				body["mode"] = bodyMode
+			}
+			if bodyNetwork != "" {
+				body["network"] = bodyNetwork
+			}
+			if bodyOriginationAccountId != "" {
+				body["origination_account_id"] = bodyOriginationAccountId
+			}
+			if bodyRequireGuarantee != false {
+				body["require_guarantee"] = bodyRequireGuarantee
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccountId, "account-id", "", "The Plaid `account_id` corresponding to the end-user account that will be debited or credited.")
+	cmd.Flags().StringVar(&bodyAchClass, "ach-class", "", "Specifies the use case of the transfer. Required for transfers on an ACH network. For more details, see [ACH SEC...")
+	cmd.Flags().StringVar(&bodyAmount, "amount", "", "The amount of the transfer (decimal string with two digits of precision e.g. '10.00'). When calling...")
+	_ = cmd.MarkFlagRequired("amount")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyDescription, "description", "", "A description for the underlying transfer. Maximum of 15 characters.")
+	_ = cmd.MarkFlagRequired("description")
+	cmd.Flags().StringVar(&bodyFundingAccountId, "funding-account-id", "", "Specify the account used to fund the transfer. Should be specified if using legacy funding methods only. If using...")
+	cmd.Flags().StringVar(&bodyIsoCurrencyCode, "iso-currency-code", "", "The currency of the transfer amount, e.g. 'USD'")
+	cmd.Flags().StringVar(&bodyMode, "mode", "", "The direction of the flow of transfer funds. `PAYMENT`: Transfers funds from an end user's account to your business...")
+	_ = cmd.MarkFlagRequired("mode")
+	cmd.Flags().StringVar(&bodyNetwork, "network", "same-day-ach", "The network or rails used for the transfer. Defaults to `same-day-ach`. For transfers submitted using `ach`, the...")
+	cmd.Flags().StringVar(&bodyOriginationAccountId, "origination-account-id", "", "Plaid’s unique identifier for the origination account for the intent. If not provided, the default account will be...")
+	cmd.Flags().BoolVar(&bodyRequireGuarantee, "require-guarantee", false, "When `true`, the transfer requires a `GUARANTEED` decision by Plaid to proceed (Guarantee customers only).")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newTransferIntentGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyTransferIntentId string
+
+	cmd := &cobra.Command{
+		Use:   "intent-get",
+		Short: "Retrieve more information about a transfer intent",
+		Example: "  plaid-cli transfer intent-get --transfer-intent-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/intent/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyTransferIntentId != "" {
+				body["transfer_intent_id"] = bodyTransferIntentId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyTransferIntentId, "transfer-intent-id", "", "Plaid's unique identifier for a transfer intent object.")
+	_ = cmd.MarkFlagRequired("transfer-intent-id")
+
+	return cmd
+}
+
+func newTransferLedgerDepositCmd(flags *rootFlags) *cobra.Command {
+	var bodyAmount string
+	var bodyClientId string
+	var bodyDescription string
+	var bodyFundingAccountId string
+	var bodyIdempotencyKey string
+	var bodyLedgerId string
+	var bodyNetwork string
+	var bodyOriginatorClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "ledger-deposit",
+		Short: "Deposit funds into a Plaid Ledger balance",
+		Example: "  plaid-cli transfer ledger-deposit --amount value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/ledger/deposit"
+			body := map[string]any{}
+			if bodyAmount != "" {
+				body["amount"] = bodyAmount
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyDescription != "" {
+				body["description"] = bodyDescription
+			}
+			if bodyFundingAccountId != "" {
+				body["funding_account_id"] = bodyFundingAccountId
+			}
+			if bodyIdempotencyKey != "" {
+				body["idempotency_key"] = bodyIdempotencyKey
+			}
+			if bodyLedgerId != "" {
+				body["ledger_id"] = bodyLedgerId
+			}
+			if bodyNetwork != "" {
+				body["network"] = bodyNetwork
+			}
+			if bodyOriginatorClientId != "" {
+				body["originator_client_id"] = bodyOriginatorClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAmount, "amount", "", "A positive amount of how much will be deposited into ledger (decimal string with two digits of precision e.g. '5.50').")
+	_ = cmd.MarkFlagRequired("amount")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyDescription, "description", "", "The description of the deposit that will be passed to the receiving bank (up to 10 characters). Note that banks...")
+	cmd.Flags().StringVar(&bodyFundingAccountId, "funding-account-id", "", "Specify which funding account to use. Customers can find a list of `funding_account_id`s in the Accounts page of the...")
+	cmd.Flags().StringVar(&bodyIdempotencyKey, "idempotency-key", "", "A unique key provided by the client, per unique ledger deposit. Maximum of 50 characters. The API supports...")
+	_ = cmd.MarkFlagRequired("idempotency-key")
+	cmd.Flags().StringVar(&bodyLedgerId, "ledger-id", "", "Specify which ledger balance to deposit to. Customers can find a list of `ledger_id`s in the Accounts page of your...")
+	cmd.Flags().StringVar(&bodyNetwork, "network", "", "The ACH networks used for the funds flow. For requests submitted as either `ach` or `same-day-ach` the cutoff for...")
+	_ = cmd.MarkFlagRequired("network")
+	cmd.Flags().StringVar(&bodyOriginatorClientId, "originator-client-id", "", "Client ID of the customer that owns the Ledger balance. This is so Plaid knows which of your customers to payout or...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newTransferLedgerDistributeCmd(flags *rootFlags) *cobra.Command {
+	var bodyAmount string
+	var bodyClientId string
+	var bodyDescription string
+	var bodyFromLedgerId string
+	var bodyIdempotencyKey string
+	var bodySecret string
+	var bodyToLedgerId string
+
+	cmd := &cobra.Command{
+		Use:   "ledger-distribute",
+		Short: "Move available balance between ledgers",
+		Example: "  plaid-cli transfer ledger-distribute --amount value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/ledger/distribute"
+			body := map[string]any{}
+			if bodyAmount != "" {
+				body["amount"] = bodyAmount
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyDescription != "" {
+				body["description"] = bodyDescription
+			}
+			if bodyFromLedgerId != "" {
+				body["from_ledger_id"] = bodyFromLedgerId
+			}
+			if bodyIdempotencyKey != "" {
+				body["idempotency_key"] = bodyIdempotencyKey
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyToLedgerId != "" {
+				body["to_ledger_id"] = bodyToLedgerId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAmount, "amount", "", "The amount to move (decimal string with two digits of precision e.g. '10.00'). Amount must be positive.")
+	_ = cmd.MarkFlagRequired("amount")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyDescription, "description", "", "An optional description for the ledger distribute operation.")
+	cmd.Flags().StringVar(&bodyFromLedgerId, "from-ledger-id", "", "The Ledger to pull money from.")
+	_ = cmd.MarkFlagRequired("from-ledger-id")
+	cmd.Flags().StringVar(&bodyIdempotencyKey, "idempotency-key", "", "A unique key provided by the client, per unique ledger distribute. Maximum of 50 characters. The API supports...")
+	_ = cmd.MarkFlagRequired("idempotency-key")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyToLedgerId, "to-ledger-id", "", "The Ledger to credit money to.")
+	_ = cmd.MarkFlagRequired("to-ledger-id")
+
+	return cmd
+}
+
+func newTransferLedgerEventListCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyCount int
+	var bodyEndDate string
+	var bodyLedgerEventId string
+	var bodyLedgerId string
+	var bodyOffset int
+	var bodyOriginatorClientId string
+	var bodySecret string
+	var bodySourceId string
+	var bodySourceType string
+	var bodyStartDate string
+
+	cmd := &cobra.Command{
+		Use:   "ledger-event-list",
+		Short: "List transfer ledger events",
+		Example: "  plaid-cli transfer ledger-event-list",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/ledger/event/list"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCount != 0 {
+				body["count"] = bodyCount
+			}
+			if bodyEndDate != "" {
+				body["end_date"] = bodyEndDate
+			}
+			if bodyLedgerEventId != "" {
+				body["ledger_event_id"] = bodyLedgerEventId
+			}
+			if bodyLedgerId != "" {
+				body["ledger_id"] = bodyLedgerId
+			}
+			if bodyOffset != 0 {
+				body["offset"] = bodyOffset
+			}
+			if bodyOriginatorClientId != "" {
+				body["originator_client_id"] = bodyOriginatorClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodySourceId != "" {
+				body["source_id"] = bodySourceId
+			}
+			if bodySourceType != "" {
+				body["source_type"] = bodySourceType
+			}
+			if bodyStartDate != "" {
+				body["start_date"] = bodyStartDate
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().IntVar(&bodyCount, "count", 25, "The maximum number of transfer events to return. If the number of events matching the above parameters is greater...")
+	cmd.Flags().StringVar(&bodyEndDate, "end-date", "", "The end created datetime of transfers to list. This should be in RFC 3339 format (i.e. 2019-12-06T22:35:49Z)")
+	cmd.Flags().StringVar(&bodyLedgerEventId, "ledger-event-id", "", "Plaid's unique identifier for the ledger event.")
+	cmd.Flags().StringVar(&bodyLedgerId, "ledger-id", "", "Plaid's unique identifier for a Plaid Ledger Balance.")
+	cmd.Flags().IntVar(&bodyOffset, "offset", 0, "The offset into the list of transfer events. When `count`=25 and `offset`=0, the first 25 events will be returned....")
+	cmd.Flags().StringVar(&bodyOriginatorClientId, "originator-client-id", "", "Filter transfer events to only those with the specified originator client. (This field is specifically for...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodySourceId, "source-id", "", "Plaid's unique identifier for a transfer, sweep, or refund.")
+	cmd.Flags().StringVar(&bodySourceType, "source-type", "", "Source of the ledger event. `'TRANSFER'` - The source of the ledger event is a transfer `'SWEEP'` - The source of...")
+	cmd.Flags().StringVar(&bodyStartDate, "start-date", "", "The start created datetime of transfers to list. This should be in RFC 3339 format (i.e. 2019-12-06T22:35:49Z)")
+
+	return cmd
+}
+
+func newTransferLedgerGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyLedgerId string
+	var bodyOriginatorClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "ledger-get",
+		Short: "Retrieve Plaid Ledger balance",
+		Example: "  plaid-cli transfer ledger-get",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/ledger/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyLedgerId != "" {
+				body["ledger_id"] = bodyLedgerId
+			}
+			if bodyOriginatorClientId != "" {
+				body["originator_client_id"] = bodyOriginatorClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyLedgerId, "ledger-id", "", "Specify which ledger balance to get. Customers can find a list of `ledger_id`s in the Accounts page of your Plaid...")
+	cmd.Flags().StringVar(&bodyOriginatorClientId, "originator-client-id", "", "Client ID of the end customer.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newTransferLedgerWithdrawCmd(flags *rootFlags) *cobra.Command {
+	var bodyAmount string
+	var bodyClientId string
+	var bodyDescription string
+	var bodyFundingAccountId string
+	var bodyIdempotencyKey string
+	var bodyLedgerId string
+	var bodyNetwork string
+	var bodyOriginatorClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "ledger-withdraw",
+		Short: "Withdraw funds from a Plaid Ledger balance",
+		Example: "  plaid-cli transfer ledger-withdraw --amount value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/ledger/withdraw"
+			body := map[string]any{}
+			if bodyAmount != "" {
+				body["amount"] = bodyAmount
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyDescription != "" {
+				body["description"] = bodyDescription
+			}
+			if bodyFundingAccountId != "" {
+				body["funding_account_id"] = bodyFundingAccountId
+			}
+			if bodyIdempotencyKey != "" {
+				body["idempotency_key"] = bodyIdempotencyKey
+			}
+			if bodyLedgerId != "" {
+				body["ledger_id"] = bodyLedgerId
+			}
+			if bodyNetwork != "" {
+				body["network"] = bodyNetwork
+			}
+			if bodyOriginatorClientId != "" {
+				body["originator_client_id"] = bodyOriginatorClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAmount, "amount", "", "A positive amount of how much will be withdrawn from the ledger balance (decimal string with two digits of precision...")
+	_ = cmd.MarkFlagRequired("amount")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyDescription, "description", "", "The description of the deposit that will be passed to the receiving bank (up to 10 characters). Note that banks...")
+	cmd.Flags().StringVar(&bodyFundingAccountId, "funding-account-id", "", "Specify which funding account to use. Customers can find a list of `funding_account_id`s in the Accounts page of the...")
+	cmd.Flags().StringVar(&bodyIdempotencyKey, "idempotency-key", "", "A unique key provided by the client, per unique ledger withdraw. Maximum of 50 characters. The API supports...")
+	_ = cmd.MarkFlagRequired("idempotency-key")
+	cmd.Flags().StringVar(&bodyLedgerId, "ledger-id", "", "Specify which ledger balance to withdraw from. Customers can find a list of `ledger_id`s in the Accounts page of...")
+	cmd.Flags().StringVar(&bodyNetwork, "network", "", "The network or rails used for the transfer. For transfers submitted as `ach` or `same-day-ach`, the Standard ACH...")
+	_ = cmd.MarkFlagRequired("network")
+	cmd.Flags().StringVar(&bodyOriginatorClientId, "originator-client-id", "", "Client ID of the customer that owns the Ledger balance. This is so Plaid knows which of your customers to payout or...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newTransferListCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyCount int
+	var bodyEndDate string
+	var bodyFundingAccountId string
+	var bodyOffset int
+	var bodyOriginationAccountId string
+	var bodyOriginatorClientId string
+	var bodySecret string
+	var bodyStartDate string
+
+	cmd := &cobra.Command{
+		Use:   "list",
+		Short: "List transfers",
+		Example: "  plaid-cli transfer list",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/list"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCount != 0 {
+				body["count"] = bodyCount
+			}
+			if bodyEndDate != "" {
+				body["end_date"] = bodyEndDate
+			}
+			if bodyFundingAccountId != "" {
+				body["funding_account_id"] = bodyFundingAccountId
+			}
+			if bodyOffset != 0 {
+				body["offset"] = bodyOffset
+			}
+			if bodyOriginationAccountId != "" {
+				body["origination_account_id"] = bodyOriginationAccountId
+			}
+			if bodyOriginatorClientId != "" {
+				body["originator_client_id"] = bodyOriginatorClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyStartDate != "" {
+				body["start_date"] = bodyStartDate
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().IntVar(&bodyCount, "count", 25, "The maximum number of transfers to return.")
+	cmd.Flags().StringVar(&bodyEndDate, "end-date", "", "The end `created` datetime of transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)")
+	cmd.Flags().StringVar(&bodyFundingAccountId, "funding-account-id", "", "Filter transfers to only those with the specified `funding_account_id`.")
+	cmd.Flags().IntVar(&bodyOffset, "offset", 0, "The number of transfers to skip before returning results.")
+	cmd.Flags().StringVar(&bodyOriginationAccountId, "origination-account-id", "", "Filter transfers to only those originated through the specified origination account.")
+	cmd.Flags().StringVar(&bodyOriginatorClientId, "originator-client-id", "", "Filter transfers to only those with the specified originator client.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyStartDate, "start-date", "", "The start `created` datetime of transfers to list. This should be in RFC 3339 format (i.e. `2019-12-06T22:35:49Z`)")
+
+	return cmd
+}
+
+func newTransferMetricsGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyOriginatorClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "metrics-get",
+		Short: "Get transfer product usage metrics",
+		Example: "  plaid-cli transfer metrics-get",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/metrics/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyOriginatorClientId != "" {
+				body["originator_client_id"] = bodyOriginatorClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyOriginatorClientId, "originator-client-id", "", "The Plaid client ID of the transfer originator. Should only be present if `client_id` is a [Platform...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newTransferMigrateAccountCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccountNumber string
+	var bodyAccountType string
+	var bodyClientId string
+	var bodyRoutingNumber string
+	var bodySecret string
+	var bodyWireRoutingNumber string
+
+	cmd := &cobra.Command{
+		Use:   "migrate-account",
+		Short: "Migrate account into Transfers",
+		Example: "  plaid-cli transfer migrate-account --account-number value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/migrate_account"
+			body := map[string]any{}
+			if bodyAccountNumber != "" {
+				body["account_number"] = bodyAccountNumber
+			}
+			if bodyAccountType != "" {
+				body["account_type"] = bodyAccountType
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyRoutingNumber != "" {
+				body["routing_number"] = bodyRoutingNumber
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyWireRoutingNumber != "" {
+				body["wire_routing_number"] = bodyWireRoutingNumber
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccountNumber, "account-number", "", "The user's account number.")
+	_ = cmd.MarkFlagRequired("account-number")
+	cmd.Flags().StringVar(&bodyAccountType, "account-type", "", "The type of the bank account (`checking` or `savings`).")
+	_ = cmd.MarkFlagRequired("account-type")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyRoutingNumber, "routing-number", "", "The user's routing number.")
+	_ = cmd.MarkFlagRequired("routing-number")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyWireRoutingNumber, "wire-routing-number", "", "The user's wire transfer routing number. This is the ABA number; for some institutions, this may differ from the ACH...")
+
+	return cmd
+}
+
+func newTransferOriginatorCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyCompanyName string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "originator-create",
+		Short: "Create a new originator",
+		Example: "  plaid-cli transfer originator-create --company-name value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/originator/create"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCompanyName != "" {
+				body["company_name"] = bodyCompanyName
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyCompanyName, "company-name", "", "The company name of the end customer being created. This will be displayed in public-facing surfaces, e.g. Plaid...")
+	_ = cmd.MarkFlagRequired("company-name")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newTransferOriginatorFundingAccountCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyOriginatorClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "originator-funding-account-create",
+		Short: "Create a new funding account for an originator",
+		Example: "  plaid-cli transfer originator-funding-account-create --originator-client-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/originator/funding_account/create"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyOriginatorClientId != "" {
+				body["originator_client_id"] = bodyOriginatorClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyOriginatorClientId, "originator-client-id", "", "The Plaid client ID of the transfer originator.")
+	_ = cmd.MarkFlagRequired("originator-client-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newTransferOriginatorFundingAccountUpdateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyOriginatorClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "originator-funding-account-update",
+		Short: "Update the funding account associated with the originator",
+		Example: "  plaid-cli transfer originator-funding-account-update --originator-client-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/originator/funding_account/update"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyOriginatorClientId != "" {
+				body["originator_client_id"] = bodyOriginatorClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyOriginatorClientId, "originator-client-id", "", "The Plaid client ID of the transfer originator.")
+	_ = cmd.MarkFlagRequired("originator-client-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newTransferOriginatorGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyOriginatorClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "originator-get",
+		Short: "Get status of an originator's onboarding",
+		Example: "  plaid-cli transfer originator-get --originator-client-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/originator/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyOriginatorClientId != "" {
+				body["originator_client_id"] = bodyOriginatorClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyOriginatorClientId, "originator-client-id", "", "Client ID of the end customer (i.e. the originator).")
+	_ = cmd.MarkFlagRequired("originator-client-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newTransferOriginatorListCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyCount int
+	var bodyOffset int
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "originator-list",
+		Short: "Get status of all originators' onboarding",
+		Example: "  plaid-cli transfer originator-list",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/originator/list"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCount != 0 {
+				body["count"] = bodyCount
+			}
+			if bodyOffset != 0 {
+				body["offset"] = bodyOffset
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().IntVar(&bodyCount, "count", 25, "The maximum number of originators to return.")
+	cmd.Flags().IntVar(&bodyOffset, "offset", 0, "The number of originators to skip before returning results.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newTransferPlatformOriginatorCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyOriginatorClientId string
+	var bodyOriginatorReviewedAt string
+	var bodySecret string
+	var bodyWebhook string
+
+	cmd := &cobra.Command{
+		Use:   "platform-originator-create",
+		Short: "Create an originator for Transfer for Platforms customers",
+		Example: "  plaid-cli transfer platform-originator-create --originator-client-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/platform/originator/create"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyOriginatorClientId != "" {
+				body["originator_client_id"] = bodyOriginatorClientId
+			}
+			if bodyOriginatorReviewedAt != "" {
+				body["originator_reviewed_at"] = bodyOriginatorReviewedAt
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyWebhook != "" {
+				body["webhook"] = bodyWebhook
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyOriginatorClientId, "originator-client-id", "", "The client ID of the originator")
+	_ = cmd.MarkFlagRequired("originator-client-id")
+	cmd.Flags().StringVar(&bodyOriginatorReviewedAt, "originator-reviewed-at", "", "ISO8601 timestamp indicating the most recent time the platform collected onboarding data from the originator")
+	_ = cmd.MarkFlagRequired("originator-reviewed-at")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyWebhook, "webhook", "", "The webhook URL to which a `PLATFORM_ONBOARDING_UPDATE` webhook should be sent.")
+
+	return cmd
+}
+
+func newTransferPlatformPersonCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyDateOfBirth string
+	var bodyEmailAddress string
+	var bodyOriginatorClientId string
+	var bodyOwnershipPercentage int
+	var bodyPhoneNumber string
+	var bodyRelationshipToOriginator string
+	var bodySecret string
+	var bodyTitle string
+
+	cmd := &cobra.Command{
+		Use:   "platform-person-create",
+		Short: "Create a person associated with an originator",
+		Example: "  plaid-cli transfer platform-person-create --originator-client-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/platform/person/create"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyDateOfBirth != "" {
+				body["date_of_birth"] = bodyDateOfBirth
+			}
+			if bodyEmailAddress != "" {
+				body["email_address"] = bodyEmailAddress
+			}
+			if bodyOriginatorClientId != "" {
+				body["originator_client_id"] = bodyOriginatorClientId
+			}
+			if bodyOwnershipPercentage != 0 {
+				body["ownership_percentage"] = bodyOwnershipPercentage
+			}
+			if bodyPhoneNumber != "" {
+				body["phone_number"] = bodyPhoneNumber
+			}
+			if bodyRelationshipToOriginator != "" {
+				body["relationship_to_originator"] = bodyRelationshipToOriginator
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyTitle != "" {
+				body["title"] = bodyTitle
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyDateOfBirth, "date-of-birth", "", "The date of birth of the person. Formatted as YYYY-MM-DD.")
+	cmd.Flags().StringVar(&bodyEmailAddress, "email-address", "", "A valid email address. Must not have leading or trailing spaces.")
+	cmd.Flags().StringVar(&bodyOriginatorClientId, "originator-client-id", "", "The client ID of the originator")
+	_ = cmd.MarkFlagRequired("originator-client-id")
+	cmd.Flags().IntVar(&bodyOwnershipPercentage, "ownership-percentage", 0, "The percentage of ownership this person has in the onboarding business. Only applicable to beneficial owners with...")
+	cmd.Flags().StringVar(&bodyPhoneNumber, "phone-number", "", "A valid phone number in E.164 format. Phone number input may be validated against valid number ranges; number...")
+	cmd.Flags().StringVar(&bodyRelationshipToOriginator, "relationship-to-originator", "", "The relationship between this person and the originator they are related to.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyTitle, "title", "", "The title of the person at the business. Only applicable to control persons - for example, 'CEO', 'President',...")
+
+	return cmd
+}
+
+func newTransferPlatformRequirementSubmitCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyOriginatorClientId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "platform-requirement-submit",
+		Short: "Submit additional onboarding information on behalf of an originator",
+		Example: "  plaid-cli transfer platform-requirement-submit --originator-client-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/platform/requirement/submit"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyOriginatorClientId != "" {
+				body["originator_client_id"] = bodyOriginatorClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyOriginatorClientId, "originator-client-id", "", "The client ID of the originator")
+	_ = cmd.MarkFlagRequired("originator-client-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newTransferQuestionnaireCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyOriginatorClientId string
+	var bodyRedirectUri string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "questionnaire-create",
+		Short: "Generate a Plaid-hosted onboarding UI URL.",
+		Example: "  plaid-cli transfer questionnaire-create --originator-client-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/questionnaire/create"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyOriginatorClientId != "" {
+				body["originator_client_id"] = bodyOriginatorClientId
+			}
+			if bodyRedirectUri != "" {
+				body["redirect_uri"] = bodyRedirectUri
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyOriginatorClientId, "originator-client-id", "", "Client ID of the end customer.")
+	_ = cmd.MarkFlagRequired("originator-client-id")
+	cmd.Flags().StringVar(&bodyRedirectUri, "redirect-uri", "", "URL the end customer will be redirected to after completing questions in Plaid-hosted onboarding flow.")
+	_ = cmd.MarkFlagRequired("redirect-uri")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newTransferRecurringCancelCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyRecurringTransferId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "recurring-cancel",
+		Short: "Cancel a recurring transfer.",
+		Example: "  plaid-cli transfer recurring-cancel --recurring-transfer-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/recurring/cancel"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyRecurringTransferId != "" {
+				body["recurring_transfer_id"] = bodyRecurringTransferId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyRecurringTransferId, "recurring-transfer-id", "", "Plaid’s unique identifier for a recurring transfer.")
+	_ = cmd.MarkFlagRequired("recurring-transfer-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newTransferRecurringCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyAccessToken string
+	var bodyAccountId string
+	var bodyAchClass string
+	var bodyAmount string
+	var bodyClientId string
+	var bodyDescription string
+	var bodyFundingAccountId string
+	var bodyIdempotencyKey string
+	var bodyIsoCurrencyCode string
+	var bodyNetwork string
+	var bodySecret string
+	var bodyTestClockId string
+	var bodyType string
+	var bodyUserPresent bool
+
+	cmd := &cobra.Command{
+		Use:   "recurring-create",
+		Short: "Create a recurring transfer",
+		Example: "  plaid-cli transfer recurring-create --access-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/recurring/create"
+			body := map[string]any{}
+			if bodyAccessToken != "" {
+				body["access_token"] = bodyAccessToken
+			}
+			if bodyAccountId != "" {
+				body["account_id"] = bodyAccountId
+			}
+			if bodyAchClass != "" {
+				body["ach_class"] = bodyAchClass
+			}
+			if bodyAmount != "" {
+				body["amount"] = bodyAmount
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyDescription != "" {
+				body["description"] = bodyDescription
+			}
+			if bodyFundingAccountId != "" {
+				body["funding_account_id"] = bodyFundingAccountId
+			}
+			if bodyIdempotencyKey != "" {
+				body["idempotency_key"] = bodyIdempotencyKey
+			}
+			if bodyIsoCurrencyCode != "" {
+				body["iso_currency_code"] = bodyIsoCurrencyCode
+			}
+			if bodyNetwork != "" {
+				body["network"] = bodyNetwork
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyTestClockId != "" {
+				body["test_clock_id"] = bodyTestClockId
+			}
+			if bodyType != "" {
+				body["type"] = bodyType
+			}
+			if bodyUserPresent != false {
+				body["user_present"] = bodyUserPresent
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAccessToken, "access-token", "", "The Plaid `access_token` for the account that will be debited or credited.")
+	_ = cmd.MarkFlagRequired("access-token")
+	cmd.Flags().StringVar(&bodyAccountId, "account-id", "", "The Plaid `account_id` corresponding to the end-user account that will be debited or credited.")
+	_ = cmd.MarkFlagRequired("account-id")
+	cmd.Flags().StringVar(&bodyAchClass, "ach-class", "", "Specifies the use case of the transfer. Required for transfers on an ACH network. For more details, see [ACH SEC...")
+	cmd.Flags().StringVar(&bodyAmount, "amount", "", "The amount of the transfer (decimal string with two digits of precision e.g. '10.00'). When calling...")
+	_ = cmd.MarkFlagRequired("amount")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyDescription, "description", "", "The description of the recurring transfer.")
+	_ = cmd.MarkFlagRequired("description")
+	cmd.Flags().StringVar(&bodyFundingAccountId, "funding-account-id", "", "Specify the account used to fund the transfer. Customers can find a list of `funding_account_id`s in the Accounts...")
+	cmd.Flags().StringVar(&bodyIdempotencyKey, "idempotency-key", "", "A random key provided by the client, per unique recurring transfer. Maximum of 50 characters. The API supports...")
+	_ = cmd.MarkFlagRequired("idempotency-key")
+	cmd.Flags().StringVar(&bodyIsoCurrencyCode, "iso-currency-code", "", "The currency of the transfer amount. The default value is 'USD'.")
+	cmd.Flags().StringVar(&bodyNetwork, "network", "", "Networks eligible for recurring transfers.")
+	_ = cmd.MarkFlagRequired("network")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyTestClockId, "test-clock-id", "", "Plaid’s unique identifier for a test clock. This field may only be used when using the `sandbox` environment. If...")
+	cmd.Flags().StringVar(&bodyType, "type", "", "The type of transfer. This will be either `debit` or `credit`. A `debit` indicates a transfer of money into the...")
+	_ = cmd.MarkFlagRequired("type")
+	cmd.Flags().BoolVar(&bodyUserPresent, "user-present", false, "If the end user is initiating the specific transfer themselves via an interactive UI, this should be `true`; for...")
+
+	return cmd
+}
+
+func newTransferRecurringGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyRecurringTransferId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "recurring-get",
+		Short: "Retrieve a recurring transfer",
+		Example: "  plaid-cli transfer recurring-get --recurring-transfer-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/recurring/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyRecurringTransferId != "" {
+				body["recurring_transfer_id"] = bodyRecurringTransferId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyRecurringTransferId, "recurring-transfer-id", "", "Plaid’s unique identifier for a recurring transfer.")
+	_ = cmd.MarkFlagRequired("recurring-transfer-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newTransferRecurringListCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyCount int
+	var bodyEndTime string
+	var bodyFundingAccountId string
+	var bodyOffset int
+	var bodySecret string
+	var bodyStartTime string
+
+	cmd := &cobra.Command{
+		Use:   "recurring-list",
+		Short: "List recurring transfers",
+		Example: "  plaid-cli transfer recurring-list",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/recurring/list"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCount != 0 {
+				body["count"] = bodyCount
+			}
+			if bodyEndTime != "" {
+				body["end_time"] = bodyEndTime
+			}
+			if bodyFundingAccountId != "" {
+				body["funding_account_id"] = bodyFundingAccountId
+			}
+			if bodyOffset != 0 {
+				body["offset"] = bodyOffset
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyStartTime != "" {
+				body["start_time"] = bodyStartTime
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().IntVar(&bodyCount, "count", 25, "The maximum number of recurring transfers to return.")
+	cmd.Flags().StringVar(&bodyEndTime, "end-time", "", "The end `created` datetime of recurring transfers to list. This should be in RFC 3339 format (i.e....")
+	cmd.Flags().StringVar(&bodyFundingAccountId, "funding-account-id", "", "Filter recurring transfers to only those with the specified `funding_account_id`.")
+	cmd.Flags().IntVar(&bodyOffset, "offset", 0, "The number of recurring transfers to skip before returning results.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyStartTime, "start-time", "", "The start `created` datetime of recurring transfers to list. This should be in RFC 3339 format (i.e....")
+
+	return cmd
+}
+
+func newTransferRefundCancelCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyRefundId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "refund-cancel",
+		Short: "Cancel a refund",
+		Example: "  plaid-cli transfer refund-cancel --refund-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/refund/cancel"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyRefundId != "" {
+				body["refund_id"] = bodyRefundId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyRefundId, "refund-id", "", "Plaid’s unique identifier for a refund.")
+	_ = cmd.MarkFlagRequired("refund-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newTransferRefundCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyAmount string
+	var bodyClientId string
+	var bodyIdempotencyKey string
+	var bodySecret string
+	var bodyTransferId string
+
+	cmd := &cobra.Command{
+		Use:   "refund-create",
+		Short: "Create a refund",
+		Example: "  plaid-cli transfer refund-create --amount value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/refund/create"
+			body := map[string]any{}
+			if bodyAmount != "" {
+				body["amount"] = bodyAmount
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyIdempotencyKey != "" {
+				body["idempotency_key"] = bodyIdempotencyKey
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyTransferId != "" {
+				body["transfer_id"] = bodyTransferId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAmount, "amount", "", "The amount of the refund (decimal string with two digits of precision e.g. '10.00').")
+	_ = cmd.MarkFlagRequired("amount")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyIdempotencyKey, "idempotency-key", "", "A random key provided by the client, per unique refund. Maximum of 50 characters. The API supports idempotency for...")
+	_ = cmd.MarkFlagRequired("idempotency-key")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyTransferId, "transfer-id", "", "The ID of the transfer to refund.")
+	_ = cmd.MarkFlagRequired("transfer-id")
+
+	return cmd
+}
+
+func newTransferRefundGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyRefundId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "refund-get",
+		Short: "Retrieve a refund",
+		Example: "  plaid-cli transfer refund-get --refund-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/refund/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyRefundId != "" {
+				body["refund_id"] = bodyRefundId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyRefundId, "refund-id", "", "Plaid’s unique identifier for a refund.")
+	_ = cmd.MarkFlagRequired("refund-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newTransferRepaymentListCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyCount int
+	var bodyEndDate string
+	var bodyOffset int
+	var bodySecret string
+	var bodyStartDate string
+
+	cmd := &cobra.Command{
+		Use:   "repayment-list",
+		Short: "Lists historical repayments",
+		Example: "  plaid-cli transfer repayment-list",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/repayment/list"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCount != 0 {
+				body["count"] = bodyCount
+			}
+			if bodyEndDate != "" {
+				body["end_date"] = bodyEndDate
+			}
+			if bodyOffset != 0 {
+				body["offset"] = bodyOffset
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyStartDate != "" {
+				body["start_date"] = bodyStartDate
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().IntVar(&bodyCount, "count", 25, "The maximum number of repayments to return.")
+	cmd.Flags().StringVar(&bodyEndDate, "end-date", "", "The end `created` datetime of repayments to return (RFC 3339 format).")
+	cmd.Flags().IntVar(&bodyOffset, "offset", 0, "The number of repayments to skip before returning results.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyStartDate, "start-date", "", "The start `created` datetime of repayments to return (RFC 3339 format).")
+
+	return cmd
+}
+
+func newTransferRepaymentReturnListCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyCount int
+	var bodyOffset int
+	var bodyRepaymentId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "repayment-return-list",
+		Short: "List the returns included in a repayment",
+		Example: "  plaid-cli transfer repayment-return-list --repayment-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/repayment/return/list"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCount != 0 {
+				body["count"] = bodyCount
+			}
+			if bodyOffset != 0 {
+				body["offset"] = bodyOffset
+			}
+			if bodyRepaymentId != "" {
+				body["repayment_id"] = bodyRepaymentId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().IntVar(&bodyCount, "count", 25, "The maximum number of repayments to return.")
+	cmd.Flags().IntVar(&bodyOffset, "offset", 0, "The number of repayments to skip before returning results.")
+	cmd.Flags().StringVar(&bodyRepaymentId, "repayment-id", "", "Identifier of the repayment to query.")
+	_ = cmd.MarkFlagRequired("repayment-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newTransferSweepGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodySweepId string
+
+	cmd := &cobra.Command{
+		Use:   "sweep-get",
+		Short: "Retrieve a sweep",
+		Example: "  plaid-cli transfer sweep-get --sweep-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/sweep/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodySweepId != "" {
+				body["sweep_id"] = bodySweepId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodySweepId, "sweep-id", "", "Plaid's unique identifier for the sweep (UUID) or a shortened form consisting of the first 8 characters of the...")
+	_ = cmd.MarkFlagRequired("sweep-id")
+
+	return cmd
+}
+
+func newTransferSweepListCmd(flags *rootFlags) *cobra.Command {
+	var bodyAmount string
+	var bodyClientId string
+	var bodyCount int
+	var bodyEndDate string
+	var bodyFundingAccountId string
+	var bodyOffset int
+	var bodyOriginatorClientId string
+	var bodySecret string
+	var bodyStartDate string
+	var bodyStatus string
+	var bodyTransferId string
+	var bodyTrigger string
+
+	cmd := &cobra.Command{
+		Use:   "sweep-list",
+		Short: "List sweeps",
+		Example: "  plaid-cli transfer sweep-list",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/transfer/sweep/list"
+			body := map[string]any{}
+			if bodyAmount != "" {
+				body["amount"] = bodyAmount
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCount != 0 {
+				body["count"] = bodyCount
+			}
+			if bodyEndDate != "" {
+				body["end_date"] = bodyEndDate
+			}
+			if bodyFundingAccountId != "" {
+				body["funding_account_id"] = bodyFundingAccountId
+			}
+			if bodyOffset != 0 {
+				body["offset"] = bodyOffset
+			}
+			if bodyOriginatorClientId != "" {
+				body["originator_client_id"] = bodyOriginatorClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyStartDate != "" {
+				body["start_date"] = bodyStartDate
+			}
+			if bodyStatus != "" {
+				body["status"] = bodyStatus
+			}
+			if bodyTransferId != "" {
+				body["transfer_id"] = bodyTransferId
+			}
+			if bodyTrigger != "" {
+				body["trigger"] = bodyTrigger
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAmount, "amount", "", "Filter sweeps to only those with the specified amount.")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().IntVar(&bodyCount, "count", 25, "The maximum number of sweeps to return.")
+	cmd.Flags().StringVar(&bodyEndDate, "end-date", "", "The end `created` datetime of sweeps to return (RFC 3339 format).")
+	cmd.Flags().StringVar(&bodyFundingAccountId, "funding-account-id", "", "Filter sweeps to only those with the specified `funding_account_id`.")
+	cmd.Flags().IntVar(&bodyOffset, "offset", 0, "The number of sweeps to skip before returning results.")
+	cmd.Flags().StringVar(&bodyOriginatorClientId, "originator-client-id", "", "Filter sweeps to only those with the specified originator client.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyStartDate, "start-date", "", "The start `created` datetime of sweeps to return (RFC 3339 format).")
+	cmd.Flags().StringVar(&bodyStatus, "status", "", "The status of a sweep transfer `'pending'` - The sweep is currently pending `'posted'` - The sweep has been posted...")
+	cmd.Flags().StringVar(&bodyTransferId, "transfer-id", "", "Filter sweeps to only those with the included `transfer_id`.")
+	cmd.Flags().StringVar(&bodyTrigger, "trigger", "", "The trigger of the sweep `'manual'` - The sweep is created manually by the customer `'incoming'` - The sweep is...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/user-account.go b/plaid-cli/internal/cli/user-account.go
new file mode 100644
index 00000000..006262c0
--- /dev/null
+++ b/plaid-cli/internal/cli/user-account.go
@@ -0,0 +1,115 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newUserAccountCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "user-account",
+		Short: "Manage user account",
+	}
+
+	cmd.AddCommand(newUserAccountSessionEventSendCmd(flags))
+	cmd.AddCommand(newUserAccountSessionGetCmd(flags))
+	return cmd
+}
+
+func newUserAccountSessionEventSendCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyCohortId string
+	var bodyLinkSessionId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "session-event-send",
+		Aliases: []string{"create"},
+		Short: "Send User Account Session Event",
+		Example: "  plaid-cli user-account session-event-send --link-session-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/user_account/session/event/send"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCohortId != "" {
+				body["cohort_id"] = bodyCohortId
+			}
+			if bodyLinkSessionId != "" {
+				body["link_session_id"] = bodyLinkSessionId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyCohortId, "cohort-id", "", "Optional cohort identifier for the user session.")
+	cmd.Flags().StringVar(&bodyLinkSessionId, "link-session-id", "", "The Link session identifier.")
+	_ = cmd.MarkFlagRequired("link-session-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newUserAccountSessionGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyPublicToken string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "session-get",
+		Short: "Retrieve User Account",
+		Example: "  plaid-cli user-account session-get --public-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/user_account/session/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyPublicToken != "" {
+				body["public_token"] = bodyPublicToken
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyPublicToken, "public-token", "", "The public token generated by the end user Layer session.")
+	_ = cmd.MarkFlagRequired("public-token")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/user.go b/plaid-cli/internal/cli/user.go
new file mode 100644
index 00000000..e6fbdd29
--- /dev/null
+++ b/plaid-cli/internal/cli/user.go
@@ -0,0 +1,623 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newUserCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "user",
+		Short: "Manage user",
+	}
+
+	cmd.AddCommand(newUserCreateCmd(flags))
+	cmd.AddCommand(newUserFinancialDataRefreshCmd(flags))
+	cmd.AddCommand(newUserGetCmd(flags))
+	cmd.AddCommand(newUserIdentityRemoveCmd(flags))
+	cmd.AddCommand(newUserItemsAssociateCmd(flags))
+	cmd.AddCommand(newUserItemsGetCmd(flags))
+	cmd.AddCommand(newUserItemsRemoveCmd(flags))
+	cmd.AddCommand(newUserProductsTerminateCmd(flags))
+	cmd.AddCommand(newUserRemoveCmd(flags))
+	cmd.AddCommand(newUserThirdPartyTokenCreateCmd(flags))
+	cmd.AddCommand(newUserThirdPartyTokenRemoveCmd(flags))
+	cmd.AddCommand(newUserTransactionsRefreshCmd(flags))
+	cmd.AddCommand(newUserUpdateCmd(flags))
+	return cmd
+}
+
+func newUserCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyClientUserId string
+	var bodyEndCustomer string
+	var bodySecret string
+	var bodyWithUpgradedUser bool
+
+	cmd := &cobra.Command{
+		Use:   "create",
+		Short: "Create user",
+		Example: "  plaid-cli user create --client-user-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/user/create"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyClientUserId != "" {
+				body["client_user_id"] = bodyClientUserId
+			}
+			if bodyEndCustomer != "" {
+				body["end_customer"] = bodyEndCustomer
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyWithUpgradedUser != false {
+				body["with_upgraded_user"] = bodyWithUpgradedUser
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyClientUserId, "client-user-id", "", "A unique ID representing the end user. Maximum of 128 characters. Typically this will be a user ID number from your...")
+	_ = cmd.MarkFlagRequired("client-user-id")
+	cmd.Flags().StringVar(&bodyEndCustomer, "end-customer", "", "A unique ID representing a CRA reseller's end customer. Maximum of 128 characters.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().BoolVar(&bodyWithUpgradedUser, "with-upgraded-user", false, "When `true`, a new user will be created and a `user_id` will be returned. Otherwise, a legacy user will be created...")
+
+	return cmd
+}
+
+func newUserFinancialDataRefreshCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyUserId string
+
+	cmd := &cobra.Command{
+		Use:   "financial-data-refresh",
+		Short: "Refresh user items for Financial-Insights bundle",
+		Example: "  plaid-cli user financial-data-refresh --user-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/user/financial_data/refresh"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserId != "" {
+				body["user_id"] = bodyUserId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserId, "user-id", "", "A Plaid-generated ID that identifies the end user.")
+	_ = cmd.MarkFlagRequired("user-id")
+
+	return cmd
+}
+
+func newUserGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyUserId string
+
+	cmd := &cobra.Command{
+		Use:   "get",
+		Short: "Retrieve user identity and information",
+		Example: "  plaid-cli user get --user-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/user/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserId != "" {
+				body["user_id"] = bodyUserId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserId, "user-id", "", "A unique user identifier, created by `/user/create`. Integrations that began using `/user/create` after December 10,...")
+	_ = cmd.MarkFlagRequired("user-id")
+
+	return cmd
+}
+
+func newUserIdentityRemoveCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyUserId string
+
+	cmd := &cobra.Command{
+		Use:   "identity-remove",
+		Short: "Remove user identity data",
+		Example: "  plaid-cli user identity-remove --user-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/user/identity/remove"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserId != "" {
+				body["user_id"] = bodyUserId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserId, "user-id", "", "A unique user identifier, created by `/user/create`. Integrations that began using `/user/create` after December 10,...")
+	_ = cmd.MarkFlagRequired("user-id")
+
+	return cmd
+}
+
+func newUserItemsAssociateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyUserId string
+
+	cmd := &cobra.Command{
+		Use:   "items-associate",
+		Short: "Associate Items to a User",
+		Example: "  plaid-cli user items-associate --user-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/user/items/associate"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserId != "" {
+				body["user_id"] = bodyUserId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserId, "user-id", "", "A unique user identifier, created by `/user/create`. Integrations that began using `/user/create` after December 10,...")
+	_ = cmd.MarkFlagRequired("user-id")
+
+	return cmd
+}
+
+func newUserItemsGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyUserId string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "items-get",
+		Short: "Get Items associated with a User",
+		Example: "  plaid-cli user items-get",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/user/items/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserId != "" {
+				body["user_id"] = bodyUserId
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserId, "user-id", "", "A unique user identifier, created by `/user/create`. Integrations that began using `/user/create` after December 10,...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+
+	return cmd
+}
+
+func newUserItemsRemoveCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyUserId string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "items-remove",
+		Short: "Remove Items from a User",
+		Example: "  plaid-cli user items-remove",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/user/items/remove"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserId != "" {
+				body["user_id"] = bodyUserId
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserId, "user-id", "", "A unique user identifier, created by `/user/create`. Integrations that began using `/user/create` after December 10,...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+
+	return cmd
+}
+
+func newUserProductsTerminateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyUserId string
+
+	cmd := &cobra.Command{
+		Use:   "products-terminate",
+		Short: "Terminate user-based products",
+		Example: "  plaid-cli user products-terminate --user-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/user/products/terminate"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserId != "" {
+				body["user_id"] = bodyUserId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserId, "user-id", "", "A unique user identifier, created by `/user/create`. Integrations that began using `/user/create` after December 10,...")
+	_ = cmd.MarkFlagRequired("user-id")
+
+	return cmd
+}
+
+func newUserRemoveCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyUserId string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "remove",
+		Short: "Remove user",
+		Example: "  plaid-cli user remove",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/user/remove"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserId != "" {
+				body["user_id"] = bodyUserId
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserId, "user-id", "", "A unique user identifier, created by `/user/create`. Integrations that began using `/user/create` after December 10,...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+
+	return cmd
+}
+
+func newUserThirdPartyTokenCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyExpirationTime string
+	var bodySecret string
+	var bodyThirdPartyClientId string
+	var bodyUserId string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "third-party-token-create",
+		Short: "Create a third-party user token",
+		Example: "  plaid-cli user third-party-token-create --third-party-client-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/user/third_party_token/create"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyExpirationTime != "" {
+				body["expiration_time"] = bodyExpirationTime
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyThirdPartyClientId != "" {
+				body["third_party_client_id"] = bodyThirdPartyClientId
+			}
+			if bodyUserId != "" {
+				body["user_id"] = bodyUserId
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyExpirationTime, "expiration-time", "", "The expiration date and time for the third-party user token in [ISO 8601](https://wikipedia.org/wiki/ISO_8601)...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyThirdPartyClientId, "third-party-client-id", "", "The Plaid API `client_id` of the third-party client the token will be shared with. The token will only be valid for...")
+	_ = cmd.MarkFlagRequired("third-party-client-id")
+	cmd.Flags().StringVar(&bodyUserId, "user-id", "", "A unique user identifier, created by `/user/create`. Integrations that began using `/user/create` after December 10,...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+
+	return cmd
+}
+
+func newUserThirdPartyTokenRemoveCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyThirdPartyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "third-party-token-remove",
+		Short: "Remove a third-party user token",
+		Example: "  plaid-cli user third-party-token-remove --third-party-user-token value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/user/third_party_token/remove"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyThirdPartyUserToken != "" {
+				body["third_party_user_token"] = bodyThirdPartyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyThirdPartyUserToken, "third-party-user-token", "", "The third-party user token associated with the requested User data.")
+	_ = cmd.MarkFlagRequired("third-party-user-token")
+
+	return cmd
+}
+
+func newUserTransactionsRefreshCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyUserId string
+
+	cmd := &cobra.Command{
+		Use:   "transactions-refresh",
+		Short: "Refresh user items for Transactions bundle",
+		Example: "  plaid-cli user transactions-refresh --user-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/user/transactions/refresh"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserId != "" {
+				body["user_id"] = bodyUserId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserId, "user-id", "", "A Plaid-generated ID that identifies the end user.")
+	_ = cmd.MarkFlagRequired("user-id")
+
+	return cmd
+}
+
+func newUserUpdateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyUserId string
+	var bodyUserToken string
+
+	cmd := &cobra.Command{
+		Use:   "update",
+		Short: "Update user information",
+		Example: "  plaid-cli user update",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/user/update"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyUserId != "" {
+				body["user_id"] = bodyUserId
+			}
+			if bodyUserToken != "" {
+				body["user_token"] = bodyUserToken
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyUserId, "user-id", "", "A unique user identifier, created by `/user/create`. Integrations that began using `/user/create` after December 10,...")
+	cmd.Flags().StringVar(&bodyUserToken, "user-token", "", "The user token associated with the User data is being requested for. This field is used only by customers with...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/wallet.go b/plaid-cli/internal/cli/wallet.go
new file mode 100644
index 00000000..9499676a
--- /dev/null
+++ b/plaid-cli/internal/cli/wallet.go
@@ -0,0 +1,312 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newWalletCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "wallet",
+		Short: "Manage wallet",
+	}
+
+	cmd.AddCommand(newWalletCreateCmd(flags))
+	cmd.AddCommand(newWalletGetCmd(flags))
+	cmd.AddCommand(newWalletListCmd(flags))
+	cmd.AddCommand(newWalletTransactionExecuteCmd(flags))
+	cmd.AddCommand(newWalletTransactionGetCmd(flags))
+	cmd.AddCommand(newWalletTransactionListCmd(flags))
+	return cmd
+}
+
+func newWalletCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyIsoCurrencyCode string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "create",
+		Short: "Create an e-wallet",
+		Example: "  plaid-cli wallet create --iso-currency-code value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/wallet/create"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyIsoCurrencyCode != "" {
+				body["iso_currency_code"] = bodyIsoCurrencyCode
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyIsoCurrencyCode, "iso-currency-code", "", "An ISO-4217 currency code, used with e-wallets and transactions.")
+	_ = cmd.MarkFlagRequired("iso-currency-code")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newWalletGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyWalletId string
+
+	cmd := &cobra.Command{
+		Use:   "get",
+		Short: "Fetch an e-wallet",
+		Example: "  plaid-cli wallet get --wallet-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/wallet/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyWalletId != "" {
+				body["wallet_id"] = bodyWalletId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyWalletId, "wallet-id", "", "The ID of the e-wallet")
+	_ = cmd.MarkFlagRequired("wallet-id")
+
+	return cmd
+}
+
+func newWalletListCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyCount int
+	var bodyCursor string
+	var bodyIsoCurrencyCode string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "list",
+		Short: "Fetch a list of e-wallets",
+		Example: "  plaid-cli wallet list",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/wallet/list"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCount != 0 {
+				body["count"] = bodyCount
+			}
+			if bodyCursor != "" {
+				body["cursor"] = bodyCursor
+			}
+			if bodyIsoCurrencyCode != "" {
+				body["iso_currency_code"] = bodyIsoCurrencyCode
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().IntVar(&bodyCount, "count", 10, "The number of e-wallets to fetch")
+	cmd.Flags().StringVar(&bodyCursor, "cursor", "", "A base64 value representing the latest e-wallet that has already been requested. Set this to `next_cursor` received...")
+	cmd.Flags().StringVar(&bodyIsoCurrencyCode, "iso-currency-code", "", "An ISO-4217 currency code, used with e-wallets and transactions.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newWalletTransactionExecuteCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyIdempotencyKey string
+	var bodyReference string
+	var bodySecret string
+	var bodyWalletId string
+
+	cmd := &cobra.Command{
+		Use:   "transaction-execute",
+		Short: "Execute a transaction using an e-wallet",
+		Example: "  plaid-cli wallet transaction-execute --idempotency-key value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/wallet/transaction/execute"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyIdempotencyKey != "" {
+				body["idempotency_key"] = bodyIdempotencyKey
+			}
+			if bodyReference != "" {
+				body["reference"] = bodyReference
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyWalletId != "" {
+				body["wallet_id"] = bodyWalletId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyIdempotencyKey, "idempotency-key", "", "A random key provided by the client, per unique wallet transaction. Maximum of 128 characters. The API supports...")
+	_ = cmd.MarkFlagRequired("idempotency-key")
+	cmd.Flags().StringVar(&bodyReference, "reference", "", "A reference for the transaction. This must be an alphanumeric string with 6 to 18 characters and must not contain...")
+	_ = cmd.MarkFlagRequired("reference")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyWalletId, "wallet-id", "", "The ID of the e-wallet to debit from")
+	_ = cmd.MarkFlagRequired("wallet-id")
+
+	return cmd
+}
+
+func newWalletTransactionGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyTransactionId string
+
+	cmd := &cobra.Command{
+		Use:   "transaction-get",
+		Short: "Fetch an e-wallet transaction",
+		Example: "  plaid-cli wallet transaction-get --transaction-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/wallet/transaction/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyTransactionId != "" {
+				body["transaction_id"] = bodyTransactionId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyTransactionId, "transaction-id", "", "The ID of the transaction to fetch")
+	_ = cmd.MarkFlagRequired("transaction-id")
+
+	return cmd
+}
+
+func newWalletTransactionListCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyCount int
+	var bodyCursor string
+	var bodySecret string
+	var bodyWalletId string
+
+	cmd := &cobra.Command{
+		Use:   "transaction-list",
+		Short: "List e-wallet transactions",
+		Example: "  plaid-cli wallet transaction-list --wallet-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/wallet/transaction/list"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCount != 0 {
+				body["count"] = bodyCount
+			}
+			if bodyCursor != "" {
+				body["cursor"] = bodyCursor
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyWalletId != "" {
+				body["wallet_id"] = bodyWalletId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().IntVar(&bodyCount, "count", 10, "The number of transactions to fetch")
+	cmd.Flags().StringVar(&bodyCursor, "cursor", "", "A value representing the latest transaction to be included in the response. Set this from `next_cursor` received in...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyWalletId, "wallet-id", "", "The ID of the e-wallet to fetch transactions from")
+	_ = cmd.MarkFlagRequired("wallet-id")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/watchlist-screening.go b/plaid-cli/internal/cli/watchlist-screening.go
new file mode 100644
index 00000000..9f23d090
--- /dev/null
+++ b/plaid-cli/internal/cli/watchlist-screening.go
@@ -0,0 +1,990 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newWatchlistScreeningCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "watchlist-screening",
+		Short: "Manage watchlist screening",
+	}
+
+	cmd.AddCommand(newWatchlistScreeningEntityCreateCmd(flags))
+	cmd.AddCommand(newWatchlistScreeningEntityGetCmd(flags))
+	cmd.AddCommand(newWatchlistScreeningEntityHistoryListCmd(flags))
+	cmd.AddCommand(newWatchlistScreeningEntityHitListCmd(flags))
+	cmd.AddCommand(newWatchlistScreeningEntityListCmd(flags))
+	cmd.AddCommand(newWatchlistScreeningEntityProgramGetCmd(flags))
+	cmd.AddCommand(newWatchlistScreeningEntityProgramListCmd(flags))
+	cmd.AddCommand(newWatchlistScreeningEntityReviewCreateCmd(flags))
+	cmd.AddCommand(newWatchlistScreeningEntityReviewListCmd(flags))
+	cmd.AddCommand(newWatchlistScreeningEntityUpdateCmd(flags))
+	cmd.AddCommand(newWatchlistScreeningIndividualCreateCmd(flags))
+	cmd.AddCommand(newWatchlistScreeningIndividualGetCmd(flags))
+	cmd.AddCommand(newWatchlistScreeningIndividualHistoryListCmd(flags))
+	cmd.AddCommand(newWatchlistScreeningIndividualHitListCmd(flags))
+	cmd.AddCommand(newWatchlistScreeningIndividualListCmd(flags))
+	cmd.AddCommand(newWatchlistScreeningIndividualProgramGetCmd(flags))
+	cmd.AddCommand(newWatchlistScreeningIndividualProgramListCmd(flags))
+	cmd.AddCommand(newWatchlistScreeningIndividualReviewCreateCmd(flags))
+	cmd.AddCommand(newWatchlistScreeningIndividualReviewListCmd(flags))
+	cmd.AddCommand(newWatchlistScreeningIndividualUpdateCmd(flags))
+	return cmd
+}
+
+func newWatchlistScreeningEntityCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyClientUserId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "entity-create",
+		Aliases: []string{"create"},
+		Short: "Create a watchlist screening for an entity",
+		Example: "  plaid-cli watchlist-screening entity-create",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/watchlist_screening/entity/create"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyClientUserId != "" {
+				body["client_user_id"] = bodyClientUserId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyClientUserId, "client-user-id", "", "A unique ID that identifies the end user in your system. Either a `user_id` or the `client_user_id` must be...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newWatchlistScreeningEntityGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyEntityWatchlistScreeningId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "entity-get",
+		Short: "Get an entity screening",
+		Example: "  plaid-cli watchlist-screening entity-get --entity-watchlist-screening-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/watchlist_screening/entity/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyEntityWatchlistScreeningId != "" {
+				body["entity_watchlist_screening_id"] = bodyEntityWatchlistScreeningId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyEntityWatchlistScreeningId, "entity-watchlist-screening-id", "", "ID of the associated entity screening.")
+	_ = cmd.MarkFlagRequired("entity-watchlist-screening-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newWatchlistScreeningEntityHistoryListCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyCursor string
+	var bodyEntityWatchlistScreeningId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "entity-history-list",
+		Short: "List history for entity watchlist screenings",
+		Example: "  plaid-cli watchlist-screening entity-history-list --entity-watchlist-screening-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/watchlist_screening/entity/history/list"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCursor != "" {
+				body["cursor"] = bodyCursor
+			}
+			if bodyEntityWatchlistScreeningId != "" {
+				body["entity_watchlist_screening_id"] = bodyEntityWatchlistScreeningId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyCursor, "cursor", "", "An identifier that determines which page of results you receive.")
+	cmd.Flags().StringVar(&bodyEntityWatchlistScreeningId, "entity-watchlist-screening-id", "", "ID of the associated entity screening.")
+	_ = cmd.MarkFlagRequired("entity-watchlist-screening-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newWatchlistScreeningEntityHitListCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyCursor string
+	var bodyEntityWatchlistScreeningId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "entity-hit-list",
+		Short: "List hits for entity watchlist screenings",
+		Example: "  plaid-cli watchlist-screening entity-hit-list --entity-watchlist-screening-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/watchlist_screening/entity/hit/list"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCursor != "" {
+				body["cursor"] = bodyCursor
+			}
+			if bodyEntityWatchlistScreeningId != "" {
+				body["entity_watchlist_screening_id"] = bodyEntityWatchlistScreeningId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyCursor, "cursor", "", "An identifier that determines which page of results you receive.")
+	cmd.Flags().StringVar(&bodyEntityWatchlistScreeningId, "entity-watchlist-screening-id", "", "ID of the associated entity screening.")
+	_ = cmd.MarkFlagRequired("entity-watchlist-screening-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newWatchlistScreeningEntityListCmd(flags *rootFlags) *cobra.Command {
+	var bodyAssignee string
+	var bodyClientId string
+	var bodyClientUserId string
+	var bodyCursor string
+	var bodyEntityWatchlistProgramId string
+	var bodySecret string
+	var bodyStatus string
+
+	cmd := &cobra.Command{
+		Use:   "entity-list",
+		Short: "List entity watchlist screenings",
+		Example: "  plaid-cli watchlist-screening entity-list --entity-watchlist-program-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/watchlist_screening/entity/list"
+			body := map[string]any{}
+			if bodyAssignee != "" {
+				body["assignee"] = bodyAssignee
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyClientUserId != "" {
+				body["client_user_id"] = bodyClientUserId
+			}
+			if bodyCursor != "" {
+				body["cursor"] = bodyCursor
+			}
+			if bodyEntityWatchlistProgramId != "" {
+				body["entity_watchlist_program_id"] = bodyEntityWatchlistProgramId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyStatus != "" {
+				body["status"] = bodyStatus
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAssignee, "assignee", "", "ID of the associated user. To retrieve the email address or other details of the person corresponding to this id,...")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyClientUserId, "client-user-id", "", "A unique ID that identifies the end user in your system. Either a `user_id` or the `client_user_id` must be...")
+	cmd.Flags().StringVar(&bodyCursor, "cursor", "", "An identifier that determines which page of results you receive.")
+	cmd.Flags().StringVar(&bodyEntityWatchlistProgramId, "entity-watchlist-program-id", "", "ID of the associated entity program.")
+	_ = cmd.MarkFlagRequired("entity-watchlist-program-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyStatus, "status", "", "A status enum indicating whether a screening is still pending review, has been rejected, or has been cleared.")
+
+	return cmd
+}
+
+func newWatchlistScreeningEntityProgramGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyEntityWatchlistProgramId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "entity-program-get",
+		Short: "Get entity watchlist screening program",
+		Example: "  plaid-cli watchlist-screening entity-program-get --entity-watchlist-program-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/watchlist_screening/entity/program/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyEntityWatchlistProgramId != "" {
+				body["entity_watchlist_program_id"] = bodyEntityWatchlistProgramId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyEntityWatchlistProgramId, "entity-watchlist-program-id", "", "ID of the associated entity program.")
+	_ = cmd.MarkFlagRequired("entity-watchlist-program-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newWatchlistScreeningEntityProgramListCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyCursor string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "entity-program-list",
+		Short: "List entity watchlist screening programs",
+		Example: "  plaid-cli watchlist-screening entity-program-list",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/watchlist_screening/entity/program/list"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCursor != "" {
+				body["cursor"] = bodyCursor
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyCursor, "cursor", "", "An identifier that determines which page of results you receive.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newWatchlistScreeningEntityReviewCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyComment string
+	var bodyEntityWatchlistScreeningId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "entity-review-create",
+		Short: "Create a review for an entity watchlist screening",
+		Example: "  plaid-cli watchlist-screening entity-review-create --entity-watchlist-screening-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/watchlist_screening/entity/review/create"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyComment != "" {
+				body["comment"] = bodyComment
+			}
+			if bodyEntityWatchlistScreeningId != "" {
+				body["entity_watchlist_screening_id"] = bodyEntityWatchlistScreeningId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyComment, "comment", "", "A comment submitted by a team member as part of reviewing a watchlist screening.")
+	cmd.Flags().StringVar(&bodyEntityWatchlistScreeningId, "entity-watchlist-screening-id", "", "ID of the associated entity screening.")
+	_ = cmd.MarkFlagRequired("entity-watchlist-screening-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newWatchlistScreeningEntityReviewListCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyCursor string
+	var bodyEntityWatchlistScreeningId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "entity-review-list",
+		Short: "List reviews for entity watchlist screenings",
+		Example: "  plaid-cli watchlist-screening entity-review-list --entity-watchlist-screening-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/watchlist_screening/entity/review/list"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCursor != "" {
+				body["cursor"] = bodyCursor
+			}
+			if bodyEntityWatchlistScreeningId != "" {
+				body["entity_watchlist_screening_id"] = bodyEntityWatchlistScreeningId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyCursor, "cursor", "", "An identifier that determines which page of results you receive.")
+	cmd.Flags().StringVar(&bodyEntityWatchlistScreeningId, "entity-watchlist-screening-id", "", "ID of the associated entity screening.")
+	_ = cmd.MarkFlagRequired("entity-watchlist-screening-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newWatchlistScreeningEntityUpdateCmd(flags *rootFlags) *cobra.Command {
+	var bodyAssignee string
+	var bodyClientId string
+	var bodyClientUserId string
+	var bodyEntityWatchlistScreeningId string
+	var bodySecret string
+	var bodyStatus string
+
+	cmd := &cobra.Command{
+		Use:   "entity-update",
+		Short: "Update an entity screening",
+		Example: "  plaid-cli watchlist-screening entity-update --entity-watchlist-screening-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/watchlist_screening/entity/update"
+			body := map[string]any{}
+			if bodyAssignee != "" {
+				body["assignee"] = bodyAssignee
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyClientUserId != "" {
+				body["client_user_id"] = bodyClientUserId
+			}
+			if bodyEntityWatchlistScreeningId != "" {
+				body["entity_watchlist_screening_id"] = bodyEntityWatchlistScreeningId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyStatus != "" {
+				body["status"] = bodyStatus
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAssignee, "assignee", "", "ID of the associated user. To retrieve the email address or other details of the person corresponding to this id,...")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyClientUserId, "client-user-id", "", "A unique ID that identifies the end user in your system. Either a `user_id` or the `client_user_id` must be...")
+	cmd.Flags().StringVar(&bodyEntityWatchlistScreeningId, "entity-watchlist-screening-id", "", "ID of the associated entity screening.")
+	_ = cmd.MarkFlagRequired("entity-watchlist-screening-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyStatus, "status", "", "A status enum indicating whether a screening is still pending review, has been rejected, or has been cleared.")
+
+	return cmd
+}
+
+func newWatchlistScreeningIndividualCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyClientUserId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "individual-create",
+		Short: "Create a watchlist screening for a person",
+		Example: "  plaid-cli watchlist-screening individual-create",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/watchlist_screening/individual/create"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyClientUserId != "" {
+				body["client_user_id"] = bodyClientUserId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyClientUserId, "client-user-id", "", "A unique ID that identifies the end user in your system. Either a `user_id` or the `client_user_id` must be...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newWatchlistScreeningIndividualGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyWatchlistScreeningId string
+
+	cmd := &cobra.Command{
+		Use:   "individual-get",
+		Short: "Retrieve an individual watchlist screening",
+		Example: "  plaid-cli watchlist-screening individual-get --watchlist-screening-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/watchlist_screening/individual/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyWatchlistScreeningId != "" {
+				body["watchlist_screening_id"] = bodyWatchlistScreeningId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyWatchlistScreeningId, "watchlist-screening-id", "", "ID of the associated screening.")
+	_ = cmd.MarkFlagRequired("watchlist-screening-id")
+
+	return cmd
+}
+
+func newWatchlistScreeningIndividualHistoryListCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyCursor string
+	var bodySecret string
+	var bodyWatchlistScreeningId string
+
+	cmd := &cobra.Command{
+		Use:   "individual-history-list",
+		Short: "List history for individual watchlist screenings",
+		Example: "  plaid-cli watchlist-screening individual-history-list --watchlist-screening-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/watchlist_screening/individual/history/list"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCursor != "" {
+				body["cursor"] = bodyCursor
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyWatchlistScreeningId != "" {
+				body["watchlist_screening_id"] = bodyWatchlistScreeningId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyCursor, "cursor", "", "An identifier that determines which page of results you receive.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyWatchlistScreeningId, "watchlist-screening-id", "", "ID of the associated screening.")
+	_ = cmd.MarkFlagRequired("watchlist-screening-id")
+
+	return cmd
+}
+
+func newWatchlistScreeningIndividualHitListCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyCursor string
+	var bodySecret string
+	var bodyWatchlistScreeningId string
+
+	cmd := &cobra.Command{
+		Use:   "individual-hit-list",
+		Short: "List hits for individual watchlist screening",
+		Example: "  plaid-cli watchlist-screening individual-hit-list --watchlist-screening-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/watchlist_screening/individual/hit/list"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCursor != "" {
+				body["cursor"] = bodyCursor
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyWatchlistScreeningId != "" {
+				body["watchlist_screening_id"] = bodyWatchlistScreeningId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyCursor, "cursor", "", "An identifier that determines which page of results you receive.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyWatchlistScreeningId, "watchlist-screening-id", "", "ID of the associated screening.")
+	_ = cmd.MarkFlagRequired("watchlist-screening-id")
+
+	return cmd
+}
+
+func newWatchlistScreeningIndividualListCmd(flags *rootFlags) *cobra.Command {
+	var bodyAssignee string
+	var bodyClientId string
+	var bodyClientUserId string
+	var bodyCursor string
+	var bodySecret string
+	var bodyStatus string
+	var bodyWatchlistProgramId string
+
+	cmd := &cobra.Command{
+		Use:   "individual-list",
+		Short: "List Individual Watchlist Screenings",
+		Example: "  plaid-cli watchlist-screening individual-list --watchlist-program-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/watchlist_screening/individual/list"
+			body := map[string]any{}
+			if bodyAssignee != "" {
+				body["assignee"] = bodyAssignee
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyClientUserId != "" {
+				body["client_user_id"] = bodyClientUserId
+			}
+			if bodyCursor != "" {
+				body["cursor"] = bodyCursor
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyStatus != "" {
+				body["status"] = bodyStatus
+			}
+			if bodyWatchlistProgramId != "" {
+				body["watchlist_program_id"] = bodyWatchlistProgramId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAssignee, "assignee", "", "ID of the associated user. To retrieve the email address or other details of the person corresponding to this id,...")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyClientUserId, "client-user-id", "", "A unique ID that identifies the end user in your system. Either a `user_id` or the `client_user_id` must be...")
+	cmd.Flags().StringVar(&bodyCursor, "cursor", "", "An identifier that determines which page of results you receive.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyStatus, "status", "", "A status enum indicating whether a screening is still pending review, has been rejected, or has been cleared.")
+	cmd.Flags().StringVar(&bodyWatchlistProgramId, "watchlist-program-id", "", "ID of the associated program.")
+	_ = cmd.MarkFlagRequired("watchlist-program-id")
+
+	return cmd
+}
+
+func newWatchlistScreeningIndividualProgramGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodySecret string
+	var bodyWatchlistProgramId string
+
+	cmd := &cobra.Command{
+		Use:   "individual-program-get",
+		Short: "Get individual watchlist screening program",
+		Example: "  plaid-cli watchlist-screening individual-program-get --watchlist-program-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/watchlist_screening/individual/program/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyWatchlistProgramId != "" {
+				body["watchlist_program_id"] = bodyWatchlistProgramId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyWatchlistProgramId, "watchlist-program-id", "", "ID of the associated program.")
+	_ = cmd.MarkFlagRequired("watchlist-program-id")
+
+	return cmd
+}
+
+func newWatchlistScreeningIndividualProgramListCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyCursor string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "individual-program-list",
+		Short: "List individual watchlist screening programs",
+		Example: "  plaid-cli watchlist-screening individual-program-list",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/watchlist_screening/individual/program/list"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCursor != "" {
+				body["cursor"] = bodyCursor
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyCursor, "cursor", "", "An identifier that determines which page of results you receive.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
+func newWatchlistScreeningIndividualReviewCreateCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyComment string
+	var bodySecret string
+	var bodyWatchlistScreeningId string
+
+	cmd := &cobra.Command{
+		Use:   "individual-review-create",
+		Short: "Create a review for an individual watchlist screening",
+		Example: "  plaid-cli watchlist-screening individual-review-create --watchlist-screening-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/watchlist_screening/individual/review/create"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyComment != "" {
+				body["comment"] = bodyComment
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyWatchlistScreeningId != "" {
+				body["watchlist_screening_id"] = bodyWatchlistScreeningId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyComment, "comment", "", "A comment submitted by a team member as part of reviewing a watchlist screening.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyWatchlistScreeningId, "watchlist-screening-id", "", "ID of the associated screening.")
+	_ = cmd.MarkFlagRequired("watchlist-screening-id")
+
+	return cmd
+}
+
+func newWatchlistScreeningIndividualReviewListCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyCursor string
+	var bodySecret string
+	var bodyWatchlistScreeningId string
+
+	cmd := &cobra.Command{
+		Use:   "individual-review-list",
+		Short: "List reviews for individual watchlist screenings",
+		Example: "  plaid-cli watchlist-screening individual-review-list --watchlist-screening-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/watchlist_screening/individual/review/list"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyCursor != "" {
+				body["cursor"] = bodyCursor
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyWatchlistScreeningId != "" {
+				body["watchlist_screening_id"] = bodyWatchlistScreeningId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyCursor, "cursor", "", "An identifier that determines which page of results you receive.")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyWatchlistScreeningId, "watchlist-screening-id", "", "ID of the associated screening.")
+	_ = cmd.MarkFlagRequired("watchlist-screening-id")
+
+	return cmd
+}
+
+func newWatchlistScreeningIndividualUpdateCmd(flags *rootFlags) *cobra.Command {
+	var bodyAssignee string
+	var bodyClientId string
+	var bodyClientUserId string
+	var bodySecret string
+	var bodyStatus string
+	var bodyWatchlistScreeningId string
+
+	cmd := &cobra.Command{
+		Use:   "individual-update",
+		Short: "Update individual watchlist screening",
+		Example: "  plaid-cli watchlist-screening individual-update --watchlist-screening-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/watchlist_screening/individual/update"
+			body := map[string]any{}
+			if bodyAssignee != "" {
+				body["assignee"] = bodyAssignee
+			}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyClientUserId != "" {
+				body["client_user_id"] = bodyClientUserId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			if bodyStatus != "" {
+				body["status"] = bodyStatus
+			}
+			if bodyWatchlistScreeningId != "" {
+				body["watchlist_screening_id"] = bodyWatchlistScreeningId
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyAssignee, "assignee", "", "ID of the associated user. To retrieve the email address or other details of the person corresponding to this id,...")
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyClientUserId, "client-user-id", "", "A unique ID that identifies the end user in your system. Either a `user_id` or the `client_user_id` must be...")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+	cmd.Flags().StringVar(&bodyStatus, "status", "", "A status enum indicating whether a screening is still pending review, has been rejected, or has been cleared.")
+	cmd.Flags().StringVar(&bodyWatchlistScreeningId, "watchlist-screening-id", "", "ID of the associated screening.")
+	_ = cmd.MarkFlagRequired("watchlist-screening-id")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/cli/webhook-verification-key.go b/plaid-cli/internal/cli/webhook-verification-key.go
new file mode 100644
index 00000000..f8aef2ab
--- /dev/null
+++ b/plaid-cli/internal/cli/webhook-verification-key.go
@@ -0,0 +1,67 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package cli
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+)
+
+var _ = strings.ReplaceAll // ensure import
+var _ = fmt.Sprintf        // ensure import
+
+func newWebhookVerificationKeyCmd(flags *rootFlags) *cobra.Command {
+	cmd := &cobra.Command{
+		Use:   "webhook-verification-key",
+		Short: "Manage webhook verification key",
+	}
+
+	cmd.AddCommand(newWebhookVerificationKeyGetCmd(flags))
+	return cmd
+}
+
+func newWebhookVerificationKeyGetCmd(flags *rootFlags) *cobra.Command {
+	var bodyClientId string
+	var bodyKeyId string
+	var bodySecret string
+
+	cmd := &cobra.Command{
+		Use:   "get",
+		Aliases: []string{"create"},
+		Short: "Get webhook verification key",
+		Example: "  plaid-cli webhook-verification-key get --key-id value",
+		RunE: func(cmd *cobra.Command, args []string) error {
+			c, err := flags.newClient()
+			if err != nil {
+				return err
+			}
+
+			path := "/webhook_verification_key/get"
+			body := map[string]any{}
+			if bodyClientId != "" {
+				body["client_id"] = bodyClientId
+			}
+			if bodyKeyId != "" {
+				body["key_id"] = bodyKeyId
+			}
+			if bodySecret != "" {
+				body["secret"] = bodySecret
+			}
+			data, err := c.Post(path, body)
+			if err != nil {
+				return classifyAPIError(err)
+			}
+
+			return printOutput(cmd.OutOrStdout(), data, flags.asJSON)
+		},
+	}
+	cmd.Flags().StringVar(&bodyClientId, "client-id", "", "Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header...")
+	cmd.Flags().StringVar(&bodyKeyId, "key-id", "", "The key ID ( `kid` ) from the JWT header.")
+	_ = cmd.MarkFlagRequired("key-id")
+	cmd.Flags().StringVar(&bodySecret, "secret", "", "Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part...")
+
+	return cmd
+}
+
diff --git a/plaid-cli/internal/client/client.go b/plaid-cli/internal/client/client.go
new file mode 100644
index 00000000..276557b0
--- /dev/null
+++ b/plaid-cli/internal/client/client.go
@@ -0,0 +1,300 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package client
+
+import (
+	"encoding/json"
+	"fmt"
+	"io"
+	"math"
+	"net/http"
+	"net/url"
+	"os"
+	"strconv"
+	"strings"
+	"time"
+
+	"github.com/USER/plaid-cli/internal/config"
+)
+
+type Client struct {
+	BaseURL    string
+	Config     *config.Config
+	HTTPClient *http.Client
+	DryRun     bool
+}
+
+// APIError carries HTTP status information for structured exit codes.
+type APIError struct {
+	Method     string
+	Path       string
+	StatusCode int
+	Body       string
+}
+
+func (e *APIError) Error() string {
+	return fmt.Sprintf("%s %s returned HTTP %d: %s", e.Method, e.Path, e.StatusCode, e.Body)
+}
+
+func New(cfg *config.Config, timeout time.Duration) *Client {
+	return &Client{
+		BaseURL:    strings.TrimRight(cfg.BaseURL, "/"),
+		Config:     cfg,
+		HTTPClient: &http.Client{Timeout: timeout},
+	}
+}
+
+func (c *Client) Get(path string, params map[string]string) (json.RawMessage, error) {
+	return c.do("GET", path, params, nil)
+}
+
+func (c *Client) Post(path string, body any) (json.RawMessage, error) {
+	return c.do("POST", path, nil, body)
+}
+
+func (c *Client) Delete(path string) (json.RawMessage, error) {
+	return c.do("DELETE", path, nil, nil)
+}
+
+func (c *Client) Put(path string, body any) (json.RawMessage, error) {
+	return c.do("PUT", path, nil, body)
+}
+
+func (c *Client) Patch(path string, body any) (json.RawMessage, error) {
+	return c.do("PATCH", path, nil, body)
+}
+
+func (c *Client) do(method, path string, params map[string]string, body any) (json.RawMessage, error) {
+	url := c.BaseURL + path
+
+	var bodyBytes []byte
+	if body != nil {
+		b, err := json.Marshal(body)
+		if err != nil {
+			return nil, fmt.Errorf("marshaling body: %w", err)
+		}
+		bodyBytes = b
+	}
+
+	// Build the request for dry-run display or actual execution
+	if c.DryRun {
+		return c.dryRun(method, url, params, bodyBytes)
+	}
+
+	const maxRetries = 3
+	var lastErr error
+
+	for attempt := 0; attempt <= maxRetries; attempt++ {
+		var bodyReader io.Reader
+		if bodyBytes != nil {
+			bodyReader = strings.NewReader(string(bodyBytes))
+		}
+
+		req, err := http.NewRequest(method, url, bodyReader)
+		if err != nil {
+			return nil, fmt.Errorf("creating request: %w", err)
+		}
+
+		authHeader, err := c.authHeader()
+		if err != nil {
+			return nil, err
+		}
+		if authHeader != "" {
+			req.Header.Set("Authorization", authHeader)
+		}
+		if bodyBytes != nil {
+			req.Header.Set("Content-Type", "application/json")
+		}
+		req.Header.Set("User-Agent", "plaid-cli/2020-09-14_1.682.2")
+
+		if params != nil {
+			q := req.URL.Query()
+			for k, v := range params {
+				if v != "" {
+					q.Set(k, v)
+				}
+			}
+			req.URL.RawQuery = q.Encode()
+		}
+
+		resp, err := c.HTTPClient.Do(req)
+		if err != nil {
+			lastErr = fmt.Errorf("%s %s: %w", method, path, err)
+			continue
+		}
+
+		respBody, err := io.ReadAll(resp.Body)
+		resp.Body.Close()
+		if err != nil {
+			return nil, fmt.Errorf("reading response: %w", err)
+		}
+
+		// Success
+		if resp.StatusCode < 400 {
+			return json.RawMessage(respBody), nil
+		}
+
+		apiErr := &APIError{
+			Method:     method,
+			Path:       path,
+			StatusCode: resp.StatusCode,
+			Body:       truncateBody(respBody),
+		}
+
+		// Rate limited - wait and retry
+		if resp.StatusCode == 429 && attempt < maxRetries {
+			wait := retryAfter(resp)
+			fmt.Fprintf(os.Stderr, "rate limited, waiting %s (attempt %d/%d)\n", wait, attempt+1, maxRetries)
+			time.Sleep(wait)
+			lastErr = apiErr
+			continue
+		}
+
+		// Server error - retry with backoff
+		if resp.StatusCode >= 500 && attempt < maxRetries {
+			wait := time.Duration(math.Pow(2, float64(attempt))) * time.Second
+			fmt.Fprintf(os.Stderr, "server error %d, retrying in %s (attempt %d/%d)\n", resp.StatusCode, wait, attempt+1, maxRetries)
+			time.Sleep(wait)
+			lastErr = apiErr
+			continue
+		}
+
+		// Client error or retries exhausted - return the error
+		return nil, apiErr
+	}
+
+	return nil, lastErr
+}
+
+func (c *Client) dryRun(method, url string, params map[string]string, body []byte) (json.RawMessage, error) {
+	fmt.Fprintf(os.Stderr, "%s %s\n", method, url)
+	if params != nil {
+		for k, v := range params {
+			if v != "" {
+				fmt.Fprintf(os.Stderr, "  ?%s=%s\n", k, v)
+			}
+		}
+	}
+	authHeader, err := c.authHeader()
+	if err != nil {
+		return nil, err
+	}
+	if authHeader != "" {
+		// Mask token for safety
+		auth := authHeader
+		if len(auth) > 20 {
+			auth = auth[:15] + "..."
+		}
+		fmt.Fprintf(os.Stderr, "  Authorization: %s\n", auth)
+	}
+	if body != nil {
+		var pretty json.RawMessage
+		if json.Unmarshal(body, &pretty) == nil {
+			enc := json.NewEncoder(os.Stderr)
+			enc.SetIndent("  ", "  ")
+			fmt.Fprintf(os.Stderr, "  Body:\n")
+			enc.Encode(pretty)
+		}
+	}
+	fmt.Fprintf(os.Stderr, "\n(dry run - no request sent)\n")
+	return json.RawMessage(`{"dry_run": true}`), nil
+}
+
+func (c *Client) authHeader() (string, error) {
+	if c.Config == nil {
+		return "", nil
+	}
+	if c.Config.AccessToken != "" && !c.Config.TokenExpiry.IsZero() && time.Now().After(c.Config.TokenExpiry) && c.Config.RefreshToken != "" {
+		if err := c.refreshAccessToken(); err != nil {
+			return "", err
+		}
+	}
+	return c.Config.AuthHeader(), nil
+}
+
+func (c *Client) refreshAccessToken() error {
+	if c.Config == nil {
+		return nil
+	}
+	if c.Config.RefreshToken == "" {
+		return nil
+	}
+
+	tokenURL := ""
+	if tokenURL == "" {
+		return nil
+	}
+
+	params := url.Values{
+		"grant_type":    {"refresh_token"},
+		"refresh_token": {c.Config.RefreshToken},
+		"client_id":     {c.Config.ClientID},
+	}
+	if c.Config.ClientSecret != "" {
+		params.Set("client_secret", c.Config.ClientSecret)
+	}
+
+	resp, err := c.HTTPClient.PostForm(tokenURL, params)
+	if err != nil {
+		return fmt.Errorf("refreshing access token: %w", err)
+	}
+	defer resp.Body.Close()
+
+	if resp.StatusCode >= 400 {
+		body, _ := io.ReadAll(resp.Body)
+		return fmt.Errorf("refreshing access token: HTTP %d: %s", resp.StatusCode, truncateBody(body))
+	}
+
+	var tokenResp struct {
+		AccessToken  string `json:"access_token"`
+		RefreshToken string `json:"refresh_token"`
+		ExpiresIn    int    `json:"expires_in"`
+	}
+	if err := json.NewDecoder(resp.Body).Decode(&tokenResp); err != nil {
+		return fmt.Errorf("parsing refresh response: %w", err)
+	}
+	if tokenResp.AccessToken == "" {
+		return fmt.Errorf("refreshing access token: no access token in response")
+	}
+
+	refreshToken := c.Config.RefreshToken
+	if tokenResp.RefreshToken != "" {
+		refreshToken = tokenResp.RefreshToken
+	}
+
+	expiry := time.Time{}
+	if tokenResp.ExpiresIn > 0 {
+		expiry = time.Now().Add(time.Duration(tokenResp.ExpiresIn) * time.Second)
+	}
+
+	if err := c.Config.SaveTokens(c.Config.ClientID, c.Config.ClientSecret, tokenResp.AccessToken, refreshToken, expiry); err != nil {
+		return fmt.Errorf("saving refreshed token: %w", err)
+	}
+
+	return nil
+}
+
+func retryAfter(resp *http.Response) time.Duration {
+	header := resp.Header.Get("Retry-After")
+	if header == "" {
+		return 5 * time.Second
+	}
+	if seconds, err := strconv.Atoi(header); err == nil {
+		return time.Duration(seconds) * time.Second
+	}
+	if t, err := http.ParseTime(header); err == nil {
+		wait := time.Until(t)
+		if wait > 0 {
+			return wait
+		}
+	}
+	return 5 * time.Second
+}
+
+func truncateBody(b []byte) string {
+	s := string(b)
+	if len(s) > 200 {
+		return s[:200] + "..."
+	}
+	return s
+}
diff --git a/plaid-cli/internal/config/config.go b/plaid-cli/internal/config/config.go
new file mode 100644
index 00000000..06097a11
--- /dev/null
+++ b/plaid-cli/internal/config/config.go
@@ -0,0 +1,105 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package config
+
+import (
+	"fmt"
+	"os"
+	"path/filepath"
+	"strings"
+	"time"
+
+	"github.com/pelletier/go-toml/v2"
+)
+
+type Config struct {
+	BaseURL        string `toml:"base_url"`
+	AuthHeaderVal  string `toml:"auth_header"`
+	AuthSource     string `toml:"-"`
+	AccessToken    string `toml:"access_token"`
+	RefreshToken   string `toml:"refresh_token"`
+	TokenExpiry    time.Time `toml:"token_expiry"`
+	ClientID       string `toml:"client_id"`
+	ClientSecret   string `toml:"client_secret"`
+	Path           string `toml:"-"`
+	PlaidClientId string `toml:"client_id"`
+}
+
+func Load(configPath string) (*Config, error) {
+	cfg := &Config{
+		BaseURL: "https://production.plaid.com",
+	}
+
+	// Resolve config path
+	path := configPath
+	if path == "" {
+		path = os.Getenv("PLAID_CONFIG")
+	}
+	if path == "" {
+		home, _ := os.UserHomeDir()
+		path = filepath.Join(home, ".config", "plaid-cli", "config.toml")
+	}
+	cfg.Path = path
+
+	// Try to load config file
+	data, err := os.ReadFile(path)
+	if err == nil {
+		if err := toml.Unmarshal(data, cfg); err != nil {
+			return nil, fmt.Errorf("parsing config %s: %w", path, err)
+		}
+	}
+
+	// Env var overrides
+	if v := os.Getenv("PLAID_CLIENT_ID"); v != "" {
+		cfg.PlaidClientId = v
+		cfg.AuthSource = "env:PLAID_CLIENT_ID"
+	}
+
+	return cfg, nil
+}
+
+func (c *Config) AuthHeader() string {
+	if c.AuthHeaderVal != "" {
+		return c.AuthHeaderVal
+	}
+	if c.PlaidClientId == "" {
+		return ""
+	}
+	format := ""
+	format = strings.ReplaceAll(format, "{client_id}", c.PlaidClientId)
+	if strings.Contains(format, "{") {
+		return "" // not all vars resolved
+	}
+	return format
+}
+
+func (c *Config) SaveTokens(clientID, clientSecret, accessToken, refreshToken string, expiry time.Time) error {
+	c.ClientID = clientID
+	c.ClientSecret = clientSecret
+	c.AccessToken = accessToken
+	c.RefreshToken = refreshToken
+	c.TokenExpiry = expiry
+	return c.save()
+}
+
+func (c *Config) ClearTokens() error {
+	c.AccessToken = ""
+	c.RefreshToken = ""
+	c.TokenExpiry = time.Time{}
+	return c.save()
+}
+
+func (c *Config) save() error {
+	dir := filepath.Dir(c.Path)
+	if err := os.MkdirAll(dir, 0o700); err != nil {
+		return fmt.Errorf("creating config dir: %w", err)
+	}
+	data, err := toml.Marshal(c)
+	if err != nil {
+		return fmt.Errorf("marshaling config: %w", err)
+	}
+	return os.WriteFile(c.Path, data, 0o600)
+}
+
+// Ensure strings import is used
+var _ = strings.ReplaceAll
diff --git a/plaid-cli/internal/types/types.go b/plaid-cli/internal/types/types.go
new file mode 100644
index 00000000..e149b0b5
--- /dev/null
+++ b/plaid-cli/internal/types/types.go
@@ -0,0 +1,12972 @@
+// Code generated by CLI Printing Press. DO NOT EDIT.
+
+package types
+
+type AAMVAAnalysis struct {
+	City string `json:"city"`
+	DateOfBirth string `json:"date_of_birth"`
+	EyeColor string `json:"eye_color"`
+	FirstName string `json:"first_name"`
+	Gender string `json:"gender"`
+	Height string `json:"height"`
+	IdExpirationDate string `json:"id_expiration_date"`
+	IdIssueDate string `json:"id_issue_date"`
+	IdNumber string `json:"id_number"`
+	IsVerified bool `json:"is_verified"`
+	LastName string `json:"last_name"`
+	MiddleName string `json:"middle_name"`
+	PostalCode string `json:"postal_code"`
+	Street string `json:"street"`
+}
+
+type APR struct {
+	AprPercentage float64 `json:"apr_percentage"`
+	AprType string `json:"apr_type"`
+	BalanceSubjectToApr float64 `json:"balance_subject_to_apr"`
+	InterestChargeAmount float64 `json:"interest_charge_amount"`
+}
+
+type AccountAccess struct {
+	AccountProductAccess string `json:"account_product_access"`
+	Authorized bool `json:"authorized"`
+	UniqueId string `json:"unique_id"`
+}
+
+type AccountAssets struct {
+	AccountId string `json:"account_id"`
+	AccountInsights string `json:"account_insights"`
+	Balances string `json:"balances"`
+	DaysAvailable float64 `json:"days_available"`
+	HistoricalBalances string `json:"historical_balances"`
+	Investments string `json:"investments"`
+	Mask string `json:"mask"`
+	Name string `json:"name"`
+	OfficialName string `json:"official_name"`
+	Owners string `json:"owners"`
+	OwnershipType string `json:"ownership_type"`
+	PersistentAccountId string `json:"persistent_account_id"`
+	Subtype string `json:"subtype"`
+	Transactions string `json:"transactions"`
+	Type string `json:"type"`
+	VerificationStatus string `json:"verification_status"`
+}
+
+type AccountBalance struct {
+	Available float64 `json:"available"`
+	Current float64 `json:"current"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	LastUpdatedDatetime string `json:"last_updated_datetime"`
+	Limit float64 `json:"limit"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type AccountBase struct {
+	AccountId string `json:"account_id"`
+	Balances string `json:"balances"`
+	HolderCategory string `json:"holder_category"`
+	Mask string `json:"mask"`
+	Name string `json:"name"`
+	OfficialName string `json:"official_name"`
+	PersistentAccountId string `json:"persistent_account_id"`
+	Subtype string `json:"subtype"`
+	Type string `json:"type"`
+	VerificationInsights string `json:"verification_insights"`
+	VerificationName string `json:"verification_name"`
+	VerificationStatus string `json:"verification_status"`
+}
+
+type AccountBaseNullable struct {
+	AccountId string `json:"account_id"`
+	Balances string `json:"balances"`
+	HolderCategory string `json:"holder_category"`
+	Mask string `json:"mask"`
+	Name string `json:"name"`
+	OfficialName string `json:"official_name"`
+	PersistentAccountId string `json:"persistent_account_id"`
+	Subtype string `json:"subtype"`
+	Type string `json:"type"`
+	VerificationInsights string `json:"verification_insights"`
+	VerificationName string `json:"verification_name"`
+	VerificationStatus string `json:"verification_status"`
+}
+
+type AccountFilter struct {
+	Credit string `json:"credit"`
+	Depository string `json:"depository"`
+	Investment string `json:"investment"`
+	Loan string `json:"loan"`
+}
+
+type AccountFiltersResponse struct {
+	Credit string `json:"credit"`
+	Depository string `json:"depository"`
+	Investment string `json:"investment"`
+	Loan string `json:"loan"`
+}
+
+type AccountIdentity struct {
+	AccountId string `json:"account_id"`
+	Balances string `json:"balances"`
+	HolderCategory string `json:"holder_category"`
+	Mask string `json:"mask"`
+	Name string `json:"name"`
+	OfficialName string `json:"official_name"`
+	Owners string `json:"owners"`
+	PersistentAccountId string `json:"persistent_account_id"`
+	Subtype string `json:"subtype"`
+	Type string `json:"type"`
+	VerificationInsights string `json:"verification_insights"`
+	VerificationName string `json:"verification_name"`
+	VerificationStatus string `json:"verification_status"`
+}
+
+type AccountIdentityDocumentUpload struct {
+	AccountId string `json:"account_id"`
+	Balances string `json:"balances"`
+	Documents string `json:"documents"`
+	HolderCategory string `json:"holder_category"`
+	Mask string `json:"mask"`
+	Name string `json:"name"`
+	OfficialName string `json:"official_name"`
+	Owners string `json:"owners"`
+	PersistentAccountId string `json:"persistent_account_id"`
+	Subtype string `json:"subtype"`
+	Type string `json:"type"`
+	VerificationInsights string `json:"verification_insights"`
+	VerificationName string `json:"verification_name"`
+	VerificationStatus string `json:"verification_status"`
+}
+
+type AccountIdentityMatchScore struct {
+	AccountId string `json:"account_id"`
+	Address string `json:"address"`
+	Balances string `json:"balances"`
+	EmailAddress string `json:"email_address"`
+	HolderCategory string `json:"holder_category"`
+	LegalName string `json:"legal_name"`
+	Mask string `json:"mask"`
+	Name string `json:"name"`
+	OfficialName string `json:"official_name"`
+	PersistentAccountId string `json:"persistent_account_id"`
+	PhoneNumber string `json:"phone_number"`
+	Subtype string `json:"subtype"`
+	Type string `json:"type"`
+	VerificationInsights string `json:"verification_insights"`
+	VerificationName string `json:"verification_name"`
+	VerificationStatus string `json:"verification_status"`
+}
+
+type AccountIdsWithUpdatedAuth struct {
+}
+
+type AccountIdsWithUpdatedIdentity struct {
+}
+
+type AccountInsights struct {
+	Affordability string `json:"affordability"`
+	Risk string `json:"risk"`
+}
+
+type AccountProductAccess struct {
+	AccountData bool `json:"account_data"`
+	Statements bool `json:"statements"`
+	TaxDocuments bool `json:"tax_documents"`
+}
+
+type AccountProductAccessNullable struct {
+	AccountData bool `json:"account_data"`
+	Statements bool `json:"statements"`
+	TaxDocuments bool `json:"tax_documents"`
+}
+
+type AccountVerificationInsights struct {
+	AccountNumberFormat string `json:"account_number_format"`
+	NameMatchScore int `json:"name_match_score"`
+	NetworkStatus string `json:"network_status"`
+	PreviousReturns string `json:"previous_returns"`
+}
+
+type AccountVerificationInsightsNetworkStatus struct {
+	HasNumbersMatch bool `json:"has_numbers_match"`
+	IsNumbersMatchVerified bool `json:"is_numbers_match_verified"`
+}
+
+type AccountVerificationInsightsPreviousReturns struct {
+	HasPreviousAdministrativeReturn bool `json:"has_previous_administrative_return"`
+}
+
+type AccountsBalanceGetRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+}
+
+type AccountsBalanceGetRequestOptions struct {
+	AccountIds string `json:"account_ids"`
+	MinLastUpdatedDatetime string `json:"min_last_updated_datetime"`
+}
+
+type AccountsGetRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+}
+
+type AccountsGetRequestOptions struct {
+	AccountIds string `json:"account_ids"`
+}
+
+type AccountsGetResponse struct {
+	Accounts string `json:"accounts"`
+	Item string `json:"item"`
+	RequestId string `json:"request_id"`
+}
+
+type Activity struct {
+	Activity string `json:"activity"`
+	Authentication string `json:"authentication"`
+	Id string `json:"id"`
+	InitiatedDate string `json:"initiated_date"`
+	Initiator string `json:"initiator"`
+	Scopes string `json:"scopes"`
+	State string `json:"state"`
+	TargetApplicationId string `json:"target_application_id"`
+}
+
+type Address struct {
+	Data string `json:"data"`
+	Primary bool `json:"primary"`
+}
+
+type AddressData struct {
+	City string `json:"city"`
+	Country string `json:"country"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+	Street string `json:"street"`
+}
+
+type AddressDataNotRequired struct {
+	City string `json:"city"`
+	Country string `json:"country"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+	Street string `json:"street"`
+}
+
+type AddressDataNullable struct {
+	City string `json:"city"`
+	Country string `json:"country"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+	Street string `json:"street"`
+}
+
+type AddressDataNullableNoRequiredFields struct {
+	City string `json:"city"`
+	Country string `json:"country"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+	Street string `json:"street"`
+}
+
+type AddressMatchScore struct {
+	IsPostalCodeMatch bool `json:"is_postal_code_match"`
+	Score int `json:"score"`
+}
+
+type AddressNullable struct {
+	Data string `json:"data"`
+	Primary bool `json:"primary"`
+}
+
+type AffordabilityInsights struct {
+	Expenditure string `json:"expenditure"`
+	Income string `json:"income"`
+}
+
+type AmountWithCurrency struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type AmountWithCurrencyWithMonthlyAverage struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type Application struct {
+	ApplicationId string `json:"application_id"`
+	ApplicationUrl string `json:"application_url"`
+	City string `json:"city"`
+	CompanyLegalName string `json:"company_legal_name"`
+	CountryCode string `json:"country_code"`
+	DisplayName string `json:"display_name"`
+	JoinDate string `json:"join_date"`
+	LogoUrl string `json:"logo_url"`
+	Name string `json:"name"`
+	PostalCode string `json:"postal_code"`
+	ReasonForAccess string `json:"reason_for_access"`
+	Region string `json:"region"`
+	UseCase string `json:"use_case"`
+}
+
+type ApplicationGetRequest struct {
+	ApplicationId string `json:"application_id"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type ApplicationGetResponse struct {
+	Application string `json:"application"`
+	RequestId string `json:"request_id"`
+}
+
+type Asset struct {
+	ASSETDETAIL string `json:"ASSET_DETAIL"`
+	ASSETHOLDER string `json:"ASSET_HOLDER"`
+	ASSETOWNERS string `json:"ASSET_OWNERS"`
+	ASSETTRANSACTIONS string `json:"ASSET_TRANSACTIONS"`
+	VALIDATIONSOURCES string `json:"VALIDATION_SOURCES"`
+}
+
+type AssetDetail struct {
+	AssetAccountIdentifier string `json:"AssetAccountIdentifier"`
+	AssetAsOfDate string `json:"AssetAsOfDate"`
+	AssetAvailableBalanceAmount float64 `json:"AssetAvailableBalanceAmount"`
+	AssetAvailableCashBalanceAmount float64 `json:"AssetAvailableCashBalanceAmount"`
+	AssetBondsBalanceAmount float64 `json:"AssetBondsBalanceAmount"`
+	AssetCashBalanceAmount float64 `json:"AssetCashBalanceAmount"`
+	AssetCryptoBalanceAmount float64 `json:"AssetCryptoBalanceAmount"`
+	AssetCurrentBalanceAmount float64 `json:"AssetCurrentBalanceAmount"`
+	AssetDaysRequestedCount int `json:"AssetDaysRequestedCount"`
+	AssetDescription string `json:"AssetDescription"`
+	AssetEmployerSponsoredIndicator string `json:"AssetEmployerSponsoredIndicator"`
+	AssetHoldingBalanceAmount float64 `json:"AssetHoldingBalanceAmount"`
+	AssetHoldingBalanceNetMarginAmount float64 `json:"AssetHoldingBalanceNetMarginAmount"`
+	AssetMarginAmountBalance float64 `json:"AssetMarginAmountBalance"`
+	AssetOtherBalanceAmount float64 `json:"AssetOtherBalanceAmount"`
+	AssetOwnershipType string `json:"AssetOwnershipType"`
+	AssetRetirementIndicator string `json:"AssetRetirementIndicator"`
+	AssetStocksBalanceAmount float64 `json:"AssetStocksBalanceAmount"`
+	AssetType string `json:"AssetType"`
+	AssetTypeAdditionalDescription string `json:"AssetTypeAdditionalDescription"`
+	AssetUniqueIdentifier string `json:"AssetUniqueIdentifier"`
+}
+
+type AssetHolder struct {
+	NAME string `json:"NAME"`
+}
+
+type AssetHolderName struct {
+	FullName string `json:"FullName"`
+}
+
+type AssetHolding struct {
+	AssetHoldingCurrentPriceAmount float64 `json:"AssetHoldingCurrentPriceAmount"`
+	AssetHoldingDescription string `json:"AssetHoldingDescription"`
+	AssetHoldingID string `json:"AssetHoldingID"`
+	AssetHoldingMarketValueAmount float64 `json:"AssetHoldingMarketValueAmount"`
+	AssetHoldingRestrictedIndicator string `json:"AssetHoldingRestrictedIndicator"`
+	AssetHoldingSecurityName string `json:"AssetHoldingSecurityName"`
+	AssetHoldingSymbol string `json:"AssetHoldingSymbol"`
+	AssetHoldingType string `json:"AssetHoldingType"`
+	AssetHoldingUnits float64 `json:"AssetHoldingUnits"`
+	AssetHoldingVestedAmount float64 `json:"AssetHoldingVestedAmount"`
+	Currency string `json:"Currency"`
+}
+
+type AssetHoldings struct {
+	ASSETHOLDING string `json:"ASSET_HOLDING"`
+}
+
+type AssetOwner struct {
+	AssetOwnerText string `json:"AssetOwnerText"`
+}
+
+type AssetOwners struct {
+	ASSETOWNER string `json:"ASSET_OWNER"`
+}
+
+type AssetReport struct {
+	AssetReportId string `json:"asset_report_id"`
+	ClientReportId string `json:"client_report_id"`
+	DateGenerated string `json:"date_generated"`
+	DaysRequested float64 `json:"days_requested"`
+	Insights string `json:"insights"`
+	Items string `json:"items"`
+	User string `json:"user"`
+}
+
+type AssetReportAccountBalance struct {
+	Available float64 `json:"available"`
+	Current float64 `json:"current"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	LastUpdatedDatetime string `json:"last_updated_datetime"`
+	Limit float64 `json:"limit"`
+	MarginLoanAmount float64 `json:"margin_loan_amount"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type AssetReportAuditCopyCreateRequest struct {
+	AssetReportToken string `json:"asset_report_token"`
+	AuditorId string `json:"auditor_id"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type AssetReportAuditCopyCreateResponse struct {
+	AuditCopyToken string `json:"audit_copy_token"`
+	RequestId string `json:"request_id"`
+}
+
+type AssetReportAuditCopyGetRequest struct {
+	AuditCopyToken string `json:"audit_copy_token"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type AssetReportAuditCopyPdfGetRequest struct {
+	AuditCopyToken string `json:"audit_copy_token"`
+	ClientId string `json:"client_id"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+}
+
+type AssetReportAuditCopyRemoveRequest struct {
+	AuditCopyToken string `json:"audit_copy_token"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type AssetReportAuditCopyRemoveResponse struct {
+	Removed bool `json:"removed"`
+	RequestId string `json:"request_id"`
+}
+
+type AssetReportCreateRequest struct {
+	AccessTokens string `json:"access_tokens"`
+	ClientId string `json:"client_id"`
+	DaysRequested int `json:"days_requested"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+}
+
+type AssetReportCreateRequestOptions struct {
+	AddOns string `json:"add_ons"`
+	ClientReportId string `json:"client_report_id"`
+	IncludeFastReport bool `json:"include_fast_report"`
+	Products string `json:"products"`
+	RequireAllItems bool `json:"require_all_items"`
+	User string `json:"user"`
+	Webhook string `json:"webhook"`
+}
+
+type AssetReportCreateResponse struct {
+	AssetReportId string `json:"asset_report_id"`
+	AssetReportToken string `json:"asset_report_token"`
+	RequestId string `json:"request_id"`
+}
+
+type AssetReportFilterRequest struct {
+	AccountIdsToExclude string `json:"account_ids_to_exclude"`
+	AssetReportToken string `json:"asset_report_token"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type AssetReportFilterResponse struct {
+	AssetReportId string `json:"asset_report_id"`
+	AssetReportToken string `json:"asset_report_token"`
+	RequestId string `json:"request_id"`
+}
+
+type AssetReportFreddie struct {
+	LOANS string `json:"LOANS"`
+	PARTIES string `json:"PARTIES"`
+	SERVICES string `json:"SERVICES"`
+}
+
+type AssetReportFreddieGetRequest struct {
+	AuditCopyToken string `json:"audit_copy_token"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type AssetReportFreddieGetResponse struct {
+	DEAL string `json:"DEAL"`
+	SchemaVersion float64 `json:"SchemaVersion"`
+	RequestId string `json:"request_id"`
+}
+
+type AssetReportGetRequest struct {
+	AssetReportToken string `json:"asset_report_token"`
+	ClientId string `json:"client_id"`
+	FastReport bool `json:"fast_report"`
+	IncludeInsights bool `json:"include_insights"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+	UserToken string `json:"user_token"`
+}
+
+type AssetReportGetRequestOptions struct {
+	DaysToInclude int `json:"days_to_include"`
+}
+
+type AssetReportGetResponse struct {
+	Report string `json:"report"`
+	RequestId string `json:"request_id"`
+	Warnings string `json:"warnings"`
+}
+
+type AssetReportInvestmentHolding struct {
+	AccountId string `json:"account_id"`
+	CostBasis float64 `json:"cost_basis"`
+	InstitutionPrice float64 `json:"institution_price"`
+	InstitutionPriceAsOf string `json:"institution_price_as_of"`
+	InstitutionValue float64 `json:"institution_value"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Quantity float64 `json:"quantity"`
+	SecurityId string `json:"security_id"`
+	TickerSymbol string `json:"ticker_symbol"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type AssetReportInvestmentSecurity struct {
+	Name string `json:"name"`
+	SecurityId string `json:"security_id"`
+	TickerSymbol string `json:"ticker_symbol"`
+	Type string `json:"type"`
+}
+
+type AssetReportInvestmentTransaction struct {
+	AccountId string `json:"account_id"`
+	Amount float64 `json:"amount"`
+	Date string `json:"date"`
+	Fees float64 `json:"fees"`
+	InvestmentTransactionId string `json:"investment_transaction_id"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Name string `json:"name"`
+	Price float64 `json:"price"`
+	Quantity float64 `json:"quantity"`
+	SecurityId string `json:"security_id"`
+	Subtype string `json:"subtype"`
+	Type string `json:"type"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+	VestedQuantity float64 `json:"vested_quantity"`
+	VestedValue float64 `json:"vested_value"`
+}
+
+type AssetReportInvestments struct {
+	Holdings string `json:"holdings"`
+	Securities string `json:"securities"`
+	Transactions string `json:"transactions"`
+}
+
+type AssetReportItem struct {
+	Accounts string `json:"accounts"`
+	DateLastUpdated string `json:"date_last_updated"`
+	InstitutionId string `json:"institution_id"`
+	InstitutionName string `json:"institution_name"`
+	ItemId string `json:"item_id"`
+}
+
+type AssetReportPDFGetRequest struct {
+	AssetReportToken string `json:"asset_report_token"`
+	ClientId string `json:"client_id"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+}
+
+type AssetReportPDFGetRequestOptions struct {
+	DaysToInclude int `json:"days_to_include"`
+}
+
+type AssetReportRefreshRequest struct {
+	AssetReportToken string `json:"asset_report_token"`
+	ClientId string `json:"client_id"`
+	DaysRequested int `json:"days_requested"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+}
+
+type AssetReportRefreshRequestOptions struct {
+	ClientReportId string `json:"client_report_id"`
+	User string `json:"user"`
+	Webhook string `json:"webhook"`
+}
+
+type AssetReportRefreshResponse struct {
+	AssetReportId string `json:"asset_report_id"`
+	AssetReportToken string `json:"asset_report_token"`
+	RequestId string `json:"request_id"`
+}
+
+type AssetReportRemoveRequest struct {
+	AssetReportToken string `json:"asset_report_token"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type AssetReportRemoveResponse struct {
+	Removed bool `json:"removed"`
+	RequestId string `json:"request_id"`
+}
+
+type AssetReportTransaction struct {
+	AccountId string `json:"account_id"`
+	AccountOwner string `json:"account_owner"`
+	Amount float64 `json:"amount"`
+	Category string `json:"category"`
+	CategoryId string `json:"category_id"`
+	CheckNumber string `json:"check_number"`
+	CreditCategory string `json:"credit_category"`
+	Date string `json:"date"`
+	DateTransacted string `json:"date_transacted"`
+	IncomeSourceId string `json:"income_source_id"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Location string `json:"location"`
+	MerchantName string `json:"merchant_name"`
+	Name string `json:"name"`
+	OriginalDescription string `json:"original_description"`
+	PaymentMeta string `json:"payment_meta"`
+	Pending bool `json:"pending"`
+	PendingTransactionId string `json:"pending_transaction_id"`
+	TransactionId string `json:"transaction_id"`
+	TransactionType string `json:"transaction_type"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type AssetReportUser struct {
+	ClientUserId string `json:"client_user_id"`
+	Email string `json:"email"`
+	FirstName string `json:"first_name"`
+	LastName string `json:"last_name"`
+	MiddleName string `json:"middle_name"`
+	PhoneNumber string `json:"phone_number"`
+	Ssn string `json:"ssn"`
+}
+
+type AssetTransaction struct {
+	ASSETTRANSACTIONDESCRIPTON string `json:"ASSET_TRANSACTION_DESCRIPTON"`
+	ASSETTRANSACTIONDETAIL string `json:"ASSET_TRANSACTION_DETAIL"`
+}
+
+type AssetTransactionDescription struct {
+	AssetTransactionDescription string `json:"AssetTransactionDescription"`
+}
+
+type AssetTransactionDetail struct {
+	AssetInvestmentTransactionType string `json:"AssetInvestmentTransactionType"`
+	AssetInvestmentTransactionTypeDescription string `json:"AssetInvestmentTransactionTypeDescription"`
+	AssetTransactionAmount float64 `json:"AssetTransactionAmount"`
+	AssetTransactionCategoryType string `json:"AssetTransactionCategoryType"`
+	AssetTransactionDate string `json:"AssetTransactionDate"`
+	AssetTransactionPaidByName string `json:"AssetTransactionPaidByName"`
+	AssetTransactionPaidToName string `json:"AssetTransactionPaidToName"`
+	AssetTransactionPostDate string `json:"AssetTransactionPostDate"`
+	AssetTransactionType string `json:"AssetTransactionType"`
+	AssetTransactionTypeAdditionalDescription string `json:"AssetTransactionTypeAdditionalDescription"`
+	AssetTransactionUniqueIdentifier string `json:"AssetTransactionUniqueIdentifier"`
+	FinancialInstitutionTransactionIdentifier string `json:"FinancialInstitutionTransactionIdentifier"`
+}
+
+type AssetTransactions struct {
+	ASSETTRANSACTION string `json:"ASSET_TRANSACTION"`
+}
+
+type Assets struct {
+	ASSET string `json:"ASSET"`
+}
+
+type AssetsErrorWebhook struct {
+	AssetReportId string `json:"asset_report_id"`
+	Environment string `json:"environment"`
+	Error string `json:"error"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type AssetsProductReadyWebhook struct {
+	AssetReportId string `json:"asset_report_id"`
+	Environment string `json:"environment"`
+	ReportType string `json:"report_type"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type AuthDefaultUpdateWebhook struct {
+	AccountIdsWithNewAuth string `json:"account_ids_with_new_auth"`
+	AccountIdsWithUpdatedAuth string `json:"account_ids_with_updated_auth"`
+	Environment string `json:"environment"`
+	Error string `json:"error"`
+	ItemId string `json:"item_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type AuthGetNumbers struct {
+	Ach string `json:"ach"`
+	Bacs string `json:"bacs"`
+	Eft string `json:"eft"`
+	International string `json:"international"`
+}
+
+type AuthGetRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+}
+
+type AuthGetRequestOptions struct {
+	AccountIds string `json:"account_ids"`
+}
+
+type AuthGetResponse struct {
+	Accounts string `json:"accounts"`
+	Item string `json:"item"`
+	Numbers string `json:"numbers"`
+	RequestId string `json:"request_id"`
+}
+
+type AuthMetadata struct {
+	SupportedMethods string `json:"supported_methods"`
+}
+
+type AuthSupportedMethods struct {
+	AutomatedMicroDeposits bool `json:"automated_micro_deposits"`
+	InstantAuth bool `json:"instant_auth"`
+	InstantMatch bool `json:"instant_match"`
+	InstantMicroDeposits bool `json:"instant_micro_deposits"`
+}
+
+type AuthVerifyNumbersACH struct {
+	Account string `json:"account"`
+	Routing string `json:"routing"`
+}
+
+type AuthVerifyRequest struct {
+	ClientId string `json:"client_id"`
+	LegalName string `json:"legal_name"`
+	Numbers string `json:"numbers"`
+	Secret string `json:"secret"`
+}
+
+type AuthVerifyRequestNumbers struct {
+	Ach string `json:"ach"`
+}
+
+type AuthVerifyResponse struct {
+	ItemId string `json:"item_id"`
+	RequestId string `json:"request_id"`
+	VerificationInsights string `json:"verification_insights"`
+	VerificationStatus string `json:"verification_status"`
+}
+
+type AutomaticallyVerifiedWebhook struct {
+	AccountId string `json:"account_id"`
+	Environment string `json:"environment"`
+	Error string `json:"error"`
+	ItemId string `json:"item_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type BankIncomeCompleteWebhook struct {
+	Environment string `json:"environment"`
+	Result string `json:"result"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type BankIncomeRefreshCompleteWebhook struct {
+	Environment string `json:"environment"`
+	Result string `json:"result"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type BankIncomeRefreshUpdateWebhook struct {
+	Environment string `json:"environment"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type BankInitiatedReturnRisk struct {
+	RiskTier int `json:"risk_tier"`
+	Score int `json:"score"`
+}
+
+type BankPenaltiesIndicators struct {
+	Amount float64 `json:"amount"`
+	CategoryDetails string `json:"category_details"`
+	DaysSinceLastOccurrence int `json:"days_since_last_occurrence"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	MonthlyAverage string `json:"monthly_average"`
+	MonthlySummaries string `json:"monthly_summaries"`
+	PercentageOfIncome float64 `json:"percentage_of_income"`
+	TransactionsCount int `json:"transactions_count"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type BankTransfer struct {
+	AccountId string `json:"account_id"`
+	AchClass string `json:"ach_class"`
+	Amount string `json:"amount"`
+	Cancellable bool `json:"cancellable"`
+	Created string `json:"created"`
+	CustomTag string `json:"custom_tag"`
+	Description string `json:"description"`
+	Direction string `json:"direction"`
+	FailureReason string `json:"failure_reason"`
+	Id string `json:"id"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Metadata string `json:"metadata"`
+	Network string `json:"network"`
+	OriginationAccountId string `json:"origination_account_id"`
+	Status string `json:"status"`
+	Type string `json:"type"`
+	User string `json:"user"`
+}
+
+type BankTransferBalance struct {
+	Available string `json:"available"`
+	Transactable string `json:"transactable"`
+}
+
+type BankTransferBalanceGetRequest struct {
+	ClientId string `json:"client_id"`
+	OriginationAccountId string `json:"origination_account_id"`
+	Secret string `json:"secret"`
+}
+
+type BankTransferBalanceGetResponse struct {
+	Balance string `json:"balance"`
+	OriginationAccountId string `json:"origination_account_id"`
+	RequestId string `json:"request_id"`
+}
+
+type BankTransferCancelRequest struct {
+	BankTransferId string `json:"bank_transfer_id"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type BankTransferCancelResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type BankTransferCreateRequest struct {
+	AccessToken string `json:"access_token"`
+	AccountId string `json:"account_id"`
+	AchClass string `json:"ach_class"`
+	Amount string `json:"amount"`
+	ClientId string `json:"client_id"`
+	CustomTag string `json:"custom_tag"`
+	Description string `json:"description"`
+	IdempotencyKey string `json:"idempotency_key"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Metadata string `json:"metadata"`
+	Network string `json:"network"`
+	OriginationAccountId string `json:"origination_account_id"`
+	Secret string `json:"secret"`
+	Type string `json:"type"`
+	User string `json:"user"`
+}
+
+type BankTransferCreateResponse struct {
+	BankTransfer string `json:"bank_transfer"`
+	RequestId string `json:"request_id"`
+}
+
+type BankTransferEvent struct {
+	AccountId string `json:"account_id"`
+	BankTransferAmount string `json:"bank_transfer_amount"`
+	BankTransferId string `json:"bank_transfer_id"`
+	BankTransferIsoCurrencyCode string `json:"bank_transfer_iso_currency_code"`
+	BankTransferType string `json:"bank_transfer_type"`
+	Direction string `json:"direction"`
+	EventId int `json:"event_id"`
+	EventType string `json:"event_type"`
+	FailureReason string `json:"failure_reason"`
+	OriginationAccountId string `json:"origination_account_id"`
+	Timestamp string `json:"timestamp"`
+}
+
+type BankTransferEventListRequest struct {
+	AccountId string `json:"account_id"`
+	BankTransferId string `json:"bank_transfer_id"`
+	BankTransferType string `json:"bank_transfer_type"`
+	ClientId string `json:"client_id"`
+	Count int `json:"count"`
+	Direction string `json:"direction"`
+	EndDate string `json:"end_date"`
+	EventTypes string `json:"event_types"`
+	Offset int `json:"offset"`
+	OriginationAccountId string `json:"origination_account_id"`
+	Secret string `json:"secret"`
+	StartDate string `json:"start_date"`
+}
+
+type BankTransferEventListResponse struct {
+	BankTransferEvents string `json:"bank_transfer_events"`
+	RequestId string `json:"request_id"`
+}
+
+type BankTransferEventSyncRequest struct {
+	AfterId int `json:"after_id"`
+	ClientId string `json:"client_id"`
+	Count int `json:"count"`
+	Secret string `json:"secret"`
+}
+
+type BankTransferEventSyncResponse struct {
+	BankTransferEvents string `json:"bank_transfer_events"`
+	RequestId string `json:"request_id"`
+}
+
+type BankTransferFailure struct {
+	AchReturnCode string `json:"ach_return_code"`
+	Description string `json:"description"`
+}
+
+type BankTransferGetRequest struct {
+	BankTransferId string `json:"bank_transfer_id"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type BankTransferGetResponse struct {
+	BankTransfer string `json:"bank_transfer"`
+	RequestId string `json:"request_id"`
+}
+
+type BankTransferListRequest struct {
+	ClientId string `json:"client_id"`
+	Count int `json:"count"`
+	Direction string `json:"direction"`
+	EndDate string `json:"end_date"`
+	Offset int `json:"offset"`
+	OriginationAccountId string `json:"origination_account_id"`
+	Secret string `json:"secret"`
+	StartDate string `json:"start_date"`
+}
+
+type BankTransferListResponse struct {
+	BankTransfers string `json:"bank_transfers"`
+	RequestId string `json:"request_id"`
+}
+
+type BankTransferMetadata struct {
+}
+
+type BankTransferMigrateAccountRequest struct {
+	AccountNumber string `json:"account_number"`
+	AccountType string `json:"account_type"`
+	ClientId string `json:"client_id"`
+	RoutingNumber string `json:"routing_number"`
+	Secret string `json:"secret"`
+	WireRoutingNumber string `json:"wire_routing_number"`
+}
+
+type BankTransferMigrateAccountResponse struct {
+	AccessToken string `json:"access_token"`
+	AccountId string `json:"account_id"`
+	RequestId string `json:"request_id"`
+}
+
+type BankTransferSweep struct {
+	Amount string `json:"amount"`
+	CreatedAt string `json:"created_at"`
+	Id string `json:"id"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+}
+
+type BankTransferSweepGetRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	SweepId string `json:"sweep_id"`
+}
+
+type BankTransferSweepGetResponse struct {
+	RequestId string `json:"request_id"`
+	Sweep string `json:"sweep"`
+}
+
+type BankTransferSweepListRequest struct {
+	ClientId string `json:"client_id"`
+	Count int `json:"count"`
+	EndTime string `json:"end_time"`
+	OriginationAccountId string `json:"origination_account_id"`
+	Secret string `json:"secret"`
+	StartTime string `json:"start_time"`
+}
+
+type BankTransferSweepListResponse struct {
+	RequestId string `json:"request_id"`
+	Sweeps string `json:"sweeps"`
+}
+
+type BankTransferUser struct {
+	EmailAddress string `json:"email_address"`
+	LegalName string `json:"legal_name"`
+	RoutingNumber string `json:"routing_number"`
+}
+
+type BankTransfersEventsUpdateWebhook struct {
+	Environment string `json:"environment"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type BankTransfersEventsUpdateWebhookForAuth struct {
+	Environment string `json:"environment"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type BaseReport struct {
+	Attributes string `json:"attributes"`
+	ClientReportId string `json:"client_report_id"`
+	DateGenerated string `json:"date_generated"`
+	DaysRequested float64 `json:"days_requested"`
+	Items string `json:"items"`
+	ReportId string `json:"report_id"`
+}
+
+type BaseReportAccount struct {
+	AccountId string `json:"account_id"`
+	AccountInsights string `json:"account_insights"`
+	Attributes string `json:"attributes"`
+	Balances string `json:"balances"`
+	ConsumerDisputes string `json:"consumer_disputes"`
+	DaysAvailable float64 `json:"days_available"`
+	HistoricalBalances string `json:"historical_balances"`
+	Mask string `json:"mask"`
+	Metadata string `json:"metadata"`
+	Name string `json:"name"`
+	OfficialName string `json:"official_name"`
+	Owners string `json:"owners"`
+	OwnershipType string `json:"ownership_type"`
+	Subtype string `json:"subtype"`
+	Transactions string `json:"transactions"`
+	Type string `json:"type"`
+}
+
+type BaseReportAccountBalances struct {
+	Available float64 `json:"available"`
+	AverageBalance float64 `json:"average_balance"`
+	AverageMonthlyBalances string `json:"average_monthly_balances"`
+	Current float64 `json:"current"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	LastUpdatedDatetime string `json:"last_updated_datetime"`
+	Limit float64 `json:"limit"`
+	MostRecentThirtyDayAverageBalance float64 `json:"most_recent_thirty_day_average_balance"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type BaseReportAccountInsights struct {
+	AverageDaysBetweenTransactions float64 `json:"average_days_between_transactions"`
+	AverageInflowAmounts string `json:"average_inflow_amounts"`
+	AverageOutflowAmounts string `json:"average_outflow_amounts"`
+	DaysAvailable int `json:"days_available"`
+	LongestGapsBetweenTransactions string `json:"longest_gaps_between_transactions"`
+	MostRecentTransactionDate string `json:"most_recent_transaction_date"`
+	NumberOfDaysNoTransactions int `json:"number_of_days_no_transactions"`
+	NumberOfInflows string `json:"number_of_inflows"`
+	NumberOfOutflows string `json:"number_of_outflows"`
+	OldestTransactionDate string `json:"oldest_transaction_date"`
+}
+
+type BaseReportAccountMetadata struct {
+	EndDate string `json:"end_date"`
+	StartDate string `json:"start_date"`
+}
+
+type BaseReportAttributes struct {
+	IsPrimaryAccount bool `json:"is_primary_account"`
+	NsfOverdraftTransactionsCount int `json:"nsf_overdraft_transactions_count"`
+	NsfOverdraftTransactionsCount30d int `json:"nsf_overdraft_transactions_count_30d"`
+	NsfOverdraftTransactionsCount60d int `json:"nsf_overdraft_transactions_count_60d"`
+	NsfOverdraftTransactionsCount90d int `json:"nsf_overdraft_transactions_count_90d"`
+	PrimaryAccountScore float64 `json:"primary_account_score"`
+	TotalInflowAmount string `json:"total_inflow_amount"`
+	TotalInflowAmount30d string `json:"total_inflow_amount_30d"`
+	TotalInflowAmount60d string `json:"total_inflow_amount_60d"`
+	TotalInflowAmount90d string `json:"total_inflow_amount_90d"`
+	TotalOutflowAmount string `json:"total_outflow_amount"`
+	TotalOutflowAmount30d string `json:"total_outflow_amount_30d"`
+	TotalOutflowAmount60d string `json:"total_outflow_amount_60d"`
+	TotalOutflowAmount90d string `json:"total_outflow_amount_90d"`
+}
+
+type BaseReportAverageFlowInsights struct {
+	EndDate string `json:"end_date"`
+	StartDate string `json:"start_date"`
+	TotalAmount string `json:"total_amount"`
+}
+
+type BaseReportAverageMonthlyBalances struct {
+	AverageBalance string `json:"average_balance"`
+	EndDate string `json:"end_date"`
+	StartDate string `json:"start_date"`
+}
+
+type BaseReportHistoricalBalance struct {
+	Current float64 `json:"current"`
+	Date string `json:"date"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type BaseReportInvestmentHolding struct {
+	AccountId string `json:"account_id"`
+	CostBasis float64 `json:"cost_basis"`
+	InstitutionPrice float64 `json:"institution_price"`
+	InstitutionPriceAsOf string `json:"institution_price_as_of"`
+	InstitutionValue float64 `json:"institution_value"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Quantity float64 `json:"quantity"`
+	SecurityId string `json:"security_id"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type BaseReportInvestmentSecurity struct {
+	Cusip string `json:"cusip"`
+	InstitutionId string `json:"institution_id"`
+	InstitutionSecurityId string `json:"institution_security_id"`
+	Isin string `json:"isin"`
+	Name string `json:"name"`
+	SecurityId string `json:"security_id"`
+	TickerSymbol string `json:"ticker_symbol"`
+	Type string `json:"type"`
+}
+
+type BaseReportInvestmentTransaction struct {
+	AccountId string `json:"account_id"`
+	Amount float64 `json:"amount"`
+	Date string `json:"date"`
+	Fees float64 `json:"fees"`
+	InvestmentTransactionId string `json:"investment_transaction_id"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Name string `json:"name"`
+	Price float64 `json:"price"`
+	Quantity float64 `json:"quantity"`
+	SecurityId string `json:"security_id"`
+	Subtype string `json:"subtype"`
+	Type string `json:"type"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type BaseReportInvestments struct {
+	Holdings string `json:"holdings"`
+	InvestmentTransactions string `json:"investment_transactions"`
+	Securities string `json:"securities"`
+}
+
+type BaseReportItem struct {
+	Accounts string `json:"accounts"`
+	DateLastUpdated string `json:"date_last_updated"`
+	InstitutionId string `json:"institution_id"`
+	InstitutionName string `json:"institution_name"`
+	ItemId string `json:"item_id"`
+}
+
+type BaseReportLongestGapInsights struct {
+	Days int `json:"days"`
+	EndDate string `json:"end_date"`
+	StartDate string `json:"start_date"`
+}
+
+type BaseReportNumberFlowInsights struct {
+	Count int `json:"count"`
+	EndDate string `json:"end_date"`
+	StartDate string `json:"start_date"`
+}
+
+type BaseReportTransaction struct {
+	AccountId string `json:"account_id"`
+	AccountOwner string `json:"account_owner"`
+	Amount float64 `json:"amount"`
+	Category string `json:"category"`
+	CategoryId string `json:"category_id"`
+	CheckNumber string `json:"check_number"`
+	CreditCategory string `json:"credit_category"`
+	Date string `json:"date"`
+	DateTransacted string `json:"date_transacted"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Location string `json:"location"`
+	MerchantName string `json:"merchant_name"`
+	Name string `json:"name"`
+	OriginalDescription string `json:"original_description"`
+	Pending bool `json:"pending"`
+	PersonalFinanceCategory string `json:"personal_finance_category"`
+	TransactionId string `json:"transaction_id"`
+	TransactionType string `json:"transaction_type"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type BaseReportUserAttributes struct {
+	NsfOverdraftTransactionsCount int `json:"nsf_overdraft_transactions_count"`
+	NsfOverdraftTransactionsCount30d int `json:"nsf_overdraft_transactions_count_30d"`
+	NsfOverdraftTransactionsCount60d int `json:"nsf_overdraft_transactions_count_60d"`
+	NsfOverdraftTransactionsCount90d int `json:"nsf_overdraft_transactions_count_90d"`
+	TotalInflowAmount string `json:"total_inflow_amount"`
+	TotalInflowAmount30d string `json:"total_inflow_amount_30d"`
+	TotalInflowAmount60d string `json:"total_inflow_amount_60d"`
+	TotalInflowAmount90d string `json:"total_inflow_amount_90d"`
+	TotalOutflowAmount string `json:"total_outflow_amount"`
+	TotalOutflowAmount30d string `json:"total_outflow_amount_30d"`
+	TotalOutflowAmount60d string `json:"total_outflow_amount_60d"`
+	TotalOutflowAmount90d string `json:"total_outflow_amount_90d"`
+}
+
+type BaseReportWarning struct {
+	Cause string `json:"cause"`
+	WarningCode string `json:"warning_code"`
+	WarningType string `json:"warning_type"`
+}
+
+type BaseReportsErrorWebhook struct {
+	Environment string `json:"environment"`
+	Error string `json:"error"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type BeaconAccountRiskAttributes struct {
+	AddressChangeCount28d int `json:"address_change_count_28d"`
+	AddressChangeCount90d int `json:"address_change_count_90d"`
+	DaysSinceAccountOpening int `json:"days_since_account_opening"`
+	DaysSinceFirstObservedTransaction int `json:"days_since_first_observed_transaction"`
+	DaysSinceFirstPlaidConnection int `json:"days_since_first_plaid_connection"`
+	DistinctIpAddressesCount30d int `json:"distinct_ip_addresses_count_30d"`
+	DistinctIpAddressesCount3d int `json:"distinct_ip_addresses_count_3d"`
+	DistinctIpAddressesCount7d int `json:"distinct_ip_addresses_count_7d"`
+	DistinctIpAddressesCount90d int `json:"distinct_ip_addresses_count_90d"`
+	DistinctUserAgentsCount30d int `json:"distinct_user_agents_count_30d"`
+	DistinctUserAgentsCount3d int `json:"distinct_user_agents_count_3d"`
+	DistinctUserAgentsCount7d int `json:"distinct_user_agents_count_7d"`
+	DistinctUserAgentsCount90d int `json:"distinct_user_agents_count_90d"`
+	EmailChangeCount28d int `json:"email_change_count_28d"`
+	EmailChangeCount90d int `json:"email_change_count_90d"`
+	FailedPlaidNonOauthAuthenticationAttemptsCount30d int `json:"failed_plaid_non_oauth_authentication_attempts_count_30d"`
+	FailedPlaidNonOauthAuthenticationAttemptsCount3d int `json:"failed_plaid_non_oauth_authentication_attempts_count_3d"`
+	FailedPlaidNonOauthAuthenticationAttemptsCount7d int `json:"failed_plaid_non_oauth_authentication_attempts_count_7d"`
+	IsAccountClosed bool `json:"is_account_closed"`
+	IsAccountFrozenOrRestricted bool `json:"is_account_frozen_or_restricted"`
+	PhoneChangeCount28d int `json:"phone_change_count_28d"`
+	PhoneChangeCount90d int `json:"phone_change_count_90d"`
+	PlaidConnectionsCount30d int `json:"plaid_connections_count_30d"`
+	PlaidConnectionsCount7d int `json:"plaid_connections_count_7d"`
+	PlaidNonOauthAuthenticationAttemptsCount30d int `json:"plaid_non_oauth_authentication_attempts_count_30d"`
+	PlaidNonOauthAuthenticationAttemptsCount3d int `json:"plaid_non_oauth_authentication_attempts_count_3d"`
+	PlaidNonOauthAuthenticationAttemptsCount7d int `json:"plaid_non_oauth_authentication_attempts_count_7d"`
+	TotalPlaidConnectionsCount int `json:"total_plaid_connections_count"`
+}
+
+type BeaconAccountRiskEvaluateAccount struct {
+	AccountId string `json:"account_id"`
+	Attributes string `json:"attributes"`
+	Subtype string `json:"subtype"`
+	Type string `json:"type"`
+}
+
+type BeaconAccountRiskEvaluateAccountAttributes struct {
+	AddressChangeCount28d int `json:"address_change_count_28d"`
+	AddressChangeCount90d int `json:"address_change_count_90d"`
+	DaysSinceAccountOpening int `json:"days_since_account_opening"`
+	DaysSinceFirstObservedTransaction int `json:"days_since_first_observed_transaction"`
+	DaysSinceFirstPlaidConnection int `json:"days_since_first_plaid_connection"`
+	DistinctIpAddressesCount30d int `json:"distinct_ip_addresses_count_30d"`
+	DistinctIpAddressesCount3d int `json:"distinct_ip_addresses_count_3d"`
+	DistinctIpAddressesCount7d int `json:"distinct_ip_addresses_count_7d"`
+	DistinctIpAddressesCount90d int `json:"distinct_ip_addresses_count_90d"`
+	DistinctUserAgentsCount30d int `json:"distinct_user_agents_count_30d"`
+	DistinctUserAgentsCount3d int `json:"distinct_user_agents_count_3d"`
+	DistinctUserAgentsCount7d int `json:"distinct_user_agents_count_7d"`
+	DistinctUserAgentsCount90d int `json:"distinct_user_agents_count_90d"`
+	EmailChangeCount28d int `json:"email_change_count_28d"`
+	EmailChangeCount90d int `json:"email_change_count_90d"`
+	FailedPlaidNonOauthAuthenticationAttemptsCount30d int `json:"failed_plaid_non_oauth_authentication_attempts_count_30d"`
+	FailedPlaidNonOauthAuthenticationAttemptsCount3d int `json:"failed_plaid_non_oauth_authentication_attempts_count_3d"`
+	FailedPlaidNonOauthAuthenticationAttemptsCount7d int `json:"failed_plaid_non_oauth_authentication_attempts_count_7d"`
+	IsAccountClosed bool `json:"is_account_closed"`
+	IsAccountFrozenOrRestricted bool `json:"is_account_frozen_or_restricted"`
+	PhoneChangeCount28d int `json:"phone_change_count_28d"`
+	PhoneChangeCount90d int `json:"phone_change_count_90d"`
+	PlaidConnectionsCount30d int `json:"plaid_connections_count_30d"`
+	PlaidConnectionsCount7d int `json:"plaid_connections_count_7d"`
+	PlaidNonOauthAuthenticationAttemptsCount30d int `json:"plaid_non_oauth_authentication_attempts_count_30d"`
+	PlaidNonOauthAuthenticationAttemptsCount3d int `json:"plaid_non_oauth_authentication_attempts_count_3d"`
+	PlaidNonOauthAuthenticationAttemptsCount7d int `json:"plaid_non_oauth_authentication_attempts_count_7d"`
+	TotalPlaidConnectionsCount int `json:"total_plaid_connections_count"`
+}
+
+type BeaconAccountRiskEvaluateRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientEvaluationId string `json:"client_evaluation_id"`
+	ClientId string `json:"client_id"`
+	ClientUserId string `json:"client_user_id"`
+	Device string `json:"device"`
+	EvaluateTime string `json:"evaluate_time"`
+	EvaluationReason string `json:"evaluation_reason"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+}
+
+type BeaconAccountRiskEvaluateRequestOptions struct {
+	AccountIds string `json:"account_ids"`
+}
+
+type BeaconAccountRiskEvaluateResponse struct {
+	Accounts string `json:"accounts"`
+	RequestId string `json:"request_id"`
+}
+
+type BeaconAuditTrail struct {
+	DashboardUserId string `json:"dashboard_user_id"`
+	Source string `json:"source"`
+	Timestamp string `json:"timestamp"`
+}
+
+type BeaconBankAccountInsights struct {
+	AccountId string `json:"account_id"`
+	Attributes string `json:"attributes"`
+	Subtype string `json:"subtype"`
+	Type string `json:"type"`
+}
+
+type BeaconBankAccounts struct {
+	Accounts string `json:"accounts"`
+	ItemId string `json:"item_id"`
+}
+
+type BeaconDuplicateDetectedWebhook struct {
+	BeaconDuplicateId string `json:"beacon_duplicate_id"`
+	Environment string `json:"environment"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type BeaconDuplicateGetRequest struct {
+	BeaconDuplicateId string `json:"beacon_duplicate_id"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type BeaconDuplicateGetResponse struct {
+	Analysis string `json:"analysis"`
+	BeaconUser1 string `json:"beacon_user1"`
+	BeaconUser2 string `json:"beacon_user2"`
+	Id string `json:"id"`
+	RequestId string `json:"request_id"`
+}
+
+type BeaconMatchSummaryAnalysis struct {
+	Address string `json:"address"`
+	DateOfBirth string `json:"date_of_birth"`
+	EmailAddress string `json:"email_address"`
+	IdNumber string `json:"id_number"`
+	IpAddress string `json:"ip_address"`
+	Name string `json:"name"`
+	PhoneNumber string `json:"phone_number"`
+}
+
+type BeaconReport struct {
+	AuditTrail string `json:"audit_trail"`
+	BeaconUserId string `json:"beacon_user_id"`
+	CreatedAt string `json:"created_at"`
+	EventDate string `json:"event_date"`
+	FraudAmount string `json:"fraud_amount"`
+	FraudDate string `json:"fraud_date"`
+	Id string `json:"id"`
+	Type string `json:"type"`
+}
+
+type BeaconReportCreateRequest struct {
+	BeaconUserId string `json:"beacon_user_id"`
+	ClientId string `json:"client_id"`
+	FraudAmount string `json:"fraud_amount"`
+	FraudDate string `json:"fraud_date"`
+	Secret string `json:"secret"`
+	Type string `json:"type"`
+}
+
+type BeaconReportCreateResponse struct {
+	AuditTrail string `json:"audit_trail"`
+	BeaconUserId string `json:"beacon_user_id"`
+	CreatedAt string `json:"created_at"`
+	EventDate string `json:"event_date"`
+	FraudAmount string `json:"fraud_amount"`
+	FraudDate string `json:"fraud_date"`
+	Id string `json:"id"`
+	RequestId string `json:"request_id"`
+	Type string `json:"type"`
+}
+
+type BeaconReportCreatedWebhook struct {
+	BeaconReportId string `json:"beacon_report_id"`
+	Environment string `json:"environment"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type BeaconReportGetRequest struct {
+	BeaconReportId string `json:"beacon_report_id"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type BeaconReportGetResponse struct {
+	AuditTrail string `json:"audit_trail"`
+	BeaconUserId string `json:"beacon_user_id"`
+	CreatedAt string `json:"created_at"`
+	EventDate string `json:"event_date"`
+	FraudAmount string `json:"fraud_amount"`
+	FraudDate string `json:"fraud_date"`
+	Id string `json:"id"`
+	RequestId string `json:"request_id"`
+	Type string `json:"type"`
+}
+
+type BeaconReportListRequest struct {
+	BeaconUserId string `json:"beacon_user_id"`
+	ClientId string `json:"client_id"`
+	Cursor string `json:"cursor"`
+	Secret string `json:"secret"`
+}
+
+type BeaconReportListResponse struct {
+	BeaconReports string `json:"beacon_reports"`
+	NextCursor string `json:"next_cursor"`
+	RequestId string `json:"request_id"`
+}
+
+type BeaconReportSyndication struct {
+	Analysis string `json:"analysis"`
+	BeaconUserId string `json:"beacon_user_id"`
+	Id string `json:"id"`
+	Report string `json:"report"`
+}
+
+type BeaconReportSyndicationAnalysis struct {
+	Address string `json:"address"`
+	DateOfBirth string `json:"date_of_birth"`
+	DepositoryAccounts string `json:"depository_accounts"`
+	EmailAddress string `json:"email_address"`
+	IdNumber string `json:"id_number"`
+	IpAddress string `json:"ip_address"`
+	Name string `json:"name"`
+	PhoneNumber string `json:"phone_number"`
+}
+
+type BeaconReportSyndicationCreatedWebhook struct {
+	BeaconReportSyndicationId string `json:"beacon_report_syndication_id"`
+	Environment string `json:"environment"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type BeaconReportSyndicationGetRequest struct {
+	BeaconReportSyndicationId string `json:"beacon_report_syndication_id"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type BeaconReportSyndicationGetResponse struct {
+	Analysis string `json:"analysis"`
+	BeaconUserId string `json:"beacon_user_id"`
+	Id string `json:"id"`
+	Report string `json:"report"`
+	RequestId string `json:"request_id"`
+}
+
+type BeaconReportSyndicationListRequest struct {
+	BeaconUserId string `json:"beacon_user_id"`
+	ClientId string `json:"client_id"`
+	Cursor string `json:"cursor"`
+	Secret string `json:"secret"`
+}
+
+type BeaconReportSyndicationListResponse struct {
+	BeaconReportSyndications string `json:"beacon_report_syndications"`
+	NextCursor string `json:"next_cursor"`
+	RequestId string `json:"request_id"`
+}
+
+type BeaconReportSyndicationOriginalReport struct {
+	CreatedAt string `json:"created_at"`
+	EventDate string `json:"event_date"`
+	FraudDate string `json:"fraud_date"`
+	Id string `json:"id"`
+	Type string `json:"type"`
+}
+
+type BeaconReportUpdatedWebhook struct {
+	BeaconReportId string `json:"beacon_report_id"`
+	Environment string `json:"environment"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type BeaconSyndicatedReportDepositoryAccountMatchAnalysis struct {
+	AccountMask string `json:"account_mask"`
+	MatchStatus string `json:"match_status"`
+	RoutingNumber string `json:"routing_number"`
+}
+
+type BeaconUser struct {
+	AuditTrail string `json:"audit_trail"`
+	ClientUserId string `json:"client_user_id"`
+	CreatedAt string `json:"created_at"`
+	Id string `json:"id"`
+	ItemIds string `json:"item_ids"`
+	ProgramId string `json:"program_id"`
+	Status string `json:"status"`
+	UpdatedAt string `json:"updated_at"`
+	User string `json:"user"`
+	Version int `json:"version"`
+}
+
+type BeaconUserAccountInsightsGetRequest struct {
+	AccessToken string `json:"access_token"`
+	BeaconUserId string `json:"beacon_user_id"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type BeaconUserAccountInsightsGetResponse struct {
+	BankAccountInsights string `json:"bank_account_insights"`
+	BeaconUserId string `json:"beacon_user_id"`
+	CreatedAt string `json:"created_at"`
+	RequestId string `json:"request_id"`
+	UpdatedAt string `json:"updated_at"`
+}
+
+type BeaconUserAddress struct {
+	City string `json:"city"`
+	Country string `json:"country"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+	Street string `json:"street"`
+	Street2 string `json:"street2"`
+}
+
+type BeaconUserCreateRequest struct {
+	AccessTokens string `json:"access_tokens"`
+	ClientId string `json:"client_id"`
+	ClientUserId string `json:"client_user_id"`
+	ProgramId string `json:"program_id"`
+	Secret string `json:"secret"`
+	User string `json:"user"`
+}
+
+type BeaconUserCreateResponse struct {
+	AuditTrail string `json:"audit_trail"`
+	ClientUserId string `json:"client_user_id"`
+	CreatedAt string `json:"created_at"`
+	Id string `json:"id"`
+	ItemIds string `json:"item_ids"`
+	ProgramId string `json:"program_id"`
+	RequestId string `json:"request_id"`
+	Status string `json:"status"`
+	UpdatedAt string `json:"updated_at"`
+	User string `json:"user"`
+	Version int `json:"version"`
+}
+
+type BeaconUserData struct {
+	Address string `json:"address"`
+	DateOfBirth string `json:"date_of_birth"`
+	DepositoryAccounts string `json:"depository_accounts"`
+	EmailAddress string `json:"email_address"`
+	IdNumber string `json:"id_number"`
+	IpAddress string `json:"ip_address"`
+	Name string `json:"name"`
+	PhoneNumber string `json:"phone_number"`
+}
+
+type BeaconUserDepositoryAccount struct {
+	AccountMask string `json:"account_mask"`
+	AddedAt string `json:"added_at"`
+	RoutingNumber string `json:"routing_number"`
+}
+
+type BeaconUserGetRequest struct {
+	BeaconUserId string `json:"beacon_user_id"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type BeaconUserGetResponse struct {
+	AuditTrail string `json:"audit_trail"`
+	ClientUserId string `json:"client_user_id"`
+	CreatedAt string `json:"created_at"`
+	Id string `json:"id"`
+	ItemIds string `json:"item_ids"`
+	ProgramId string `json:"program_id"`
+	RequestId string `json:"request_id"`
+	Status string `json:"status"`
+	UpdatedAt string `json:"updated_at"`
+	User string `json:"user"`
+	Version int `json:"version"`
+}
+
+type BeaconUserHistoryListRequest struct {
+	BeaconUserId string `json:"beacon_user_id"`
+	ClientId string `json:"client_id"`
+	Cursor string `json:"cursor"`
+	Secret string `json:"secret"`
+}
+
+type BeaconUserHistoryListResponse struct {
+	BeaconUsers string `json:"beacon_users"`
+	NextCursor string `json:"next_cursor"`
+	RequestId string `json:"request_id"`
+}
+
+type BeaconUserIDNumber struct {
+	Type string `json:"type"`
+	Value string `json:"value"`
+}
+
+type BeaconUserName struct {
+	FamilyName string `json:"family_name"`
+	GivenName string `json:"given_name"`
+}
+
+type BeaconUserNameNullable struct {
+	FamilyName string `json:"family_name"`
+	GivenName string `json:"given_name"`
+}
+
+type BeaconUserRequestAddress struct {
+	City string `json:"city"`
+	Country string `json:"country"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+	Street string `json:"street"`
+	Street2 string `json:"street2"`
+}
+
+type BeaconUserRequestAddressNullable struct {
+	City string `json:"city"`
+	Country string `json:"country"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+	Street string `json:"street"`
+	Street2 string `json:"street2"`
+}
+
+type BeaconUserRequestData struct {
+	Address string `json:"address"`
+	DateOfBirth string `json:"date_of_birth"`
+	DepositoryAccounts string `json:"depository_accounts"`
+	EmailAddress string `json:"email_address"`
+	IdNumber string `json:"id_number"`
+	IpAddress string `json:"ip_address"`
+	Name string `json:"name"`
+	PhoneNumber string `json:"phone_number"`
+}
+
+type BeaconUserRequestDepositoryAccount struct {
+	AccountNumber string `json:"account_number"`
+	RoutingNumber string `json:"routing_number"`
+}
+
+type BeaconUserReviewRequest struct {
+	BeaconUserId string `json:"beacon_user_id"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	Status string `json:"status"`
+}
+
+type BeaconUserRevision struct {
+	Id string `json:"id"`
+	Version int `json:"version"`
+}
+
+type BeaconUserStatusUpdatedWebhook struct {
+	BeaconUserId string `json:"beacon_user_id"`
+	Environment string `json:"environment"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type BeaconUserUpdateRequest struct {
+	AccessTokens string `json:"access_tokens"`
+	BeaconUserId string `json:"beacon_user_id"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	User string `json:"user"`
+}
+
+type BeaconUserUpdateRequestData struct {
+	Address string `json:"address"`
+	DateOfBirth string `json:"date_of_birth"`
+	DepositoryAccounts string `json:"depository_accounts"`
+	EmailAddress string `json:"email_address"`
+	IdNumber string `json:"id_number"`
+	IpAddress string `json:"ip_address"`
+	Name string `json:"name"`
+	PhoneNumber string `json:"phone_number"`
+}
+
+type BeaconUserUpdateResponse struct {
+	AuditTrail string `json:"audit_trail"`
+	ClientUserId string `json:"client_user_id"`
+	CreatedAt string `json:"created_at"`
+	Id string `json:"id"`
+	ItemIds string `json:"item_ids"`
+	ProgramId string `json:"program_id"`
+	RequestId string `json:"request_id"`
+	Status string `json:"status"`
+	UpdatedAt string `json:"updated_at"`
+	User string `json:"user"`
+	Version int `json:"version"`
+}
+
+type BetaEwaReportV1GetRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type BetaEwaReportV1GetResponse struct {
+	EwaReportId string `json:"ewa_report_id"`
+	EwaScores string `json:"ewa_scores"`
+	GenerationTime string `json:"generation_time"`
+	RequestId string `json:"request_id"`
+}
+
+type BetaPartnerCustomerV1CreateRequest struct {
+	Address string `json:"address"`
+	ApplicationName string `json:"application_name"`
+	BankAddendumAcceptance string `json:"bank_addendum_acceptance"`
+	BillingContact string `json:"billing_contact"`
+	ClientId string `json:"client_id"`
+	CompanyName string `json:"company_name"`
+	CreateLinkCustomization bool `json:"create_link_customization"`
+	CustomerSupportInfo string `json:"customer_support_info"`
+	IsDiligenceAttested bool `json:"is_diligence_attested"`
+	LegalEntityName string `json:"legal_entity_name"`
+	Logo string `json:"logo"`
+	Products string `json:"products"`
+	Questionnaires string `json:"questionnaires"`
+	RedirectUris string `json:"redirect_uris"`
+	Secret string `json:"secret"`
+	TechnicalContact string `json:"technical_contact"`
+	Website string `json:"website"`
+}
+
+type BetaPartnerCustomerV1CreateResponse struct {
+	EndCustomer string `json:"end_customer"`
+	RequestId string `json:"request_id"`
+}
+
+type BetaPartnerCustomerV1EnableRequest struct {
+	ClientId string `json:"client_id"`
+	EndCustomerClientId string `json:"end_customer_client_id"`
+	Products string `json:"products"`
+	Secret string `json:"secret"`
+}
+
+type BetaPartnerCustomerV1EnableResponse struct {
+	EndCustomerClientId string `json:"end_customer_client_id"`
+	ProductStatuses string `json:"product_statuses"`
+	ProductionSecret string `json:"production_secret"`
+	RequestId string `json:"request_id"`
+	Status string `json:"status"`
+}
+
+type BetaPartnerCustomerV1GetRequest struct {
+	ClientId string `json:"client_id"`
+	EndCustomerClientId string `json:"end_customer_client_id"`
+	Secret string `json:"secret"`
+}
+
+type BetaPartnerCustomerV1GetResponse struct {
+	EndCustomer string `json:"end_customer"`
+	RequestId string `json:"request_id"`
+}
+
+type BetaPartnerCustomerV1UpdateRequest struct {
+	BankAddendumAcceptance string `json:"bank_addendum_acceptance"`
+	ClientId string `json:"client_id"`
+	EndCustomerClientId string `json:"end_customer_client_id"`
+	LegalEntityName string `json:"legal_entity_name"`
+	Questionnaires string `json:"questionnaires"`
+	RedirectUris string `json:"redirect_uris"`
+	Secret string `json:"secret"`
+}
+
+type BetaPartnerCustomerV1UpdateResponse struct {
+	EndCustomer string `json:"end_customer"`
+	RequestId string `json:"request_id"`
+}
+
+type BetaPartnerEndCustomer struct {
+	ClientId string `json:"client_id"`
+	CompanyName string `json:"company_name"`
+	ProductStatuses string `json:"product_statuses"`
+	RequirementsDue string `json:"requirements_due"`
+	Status string `json:"status"`
+}
+
+type BetaPartnerEndCustomerWithSecrets struct {
+	ClientId string `json:"client_id"`
+	CompanyName string `json:"company_name"`
+	ProductStatuses string `json:"product_statuses"`
+	RequirementsDue string `json:"requirements_due"`
+	Secrets string `json:"secrets"`
+	Status string `json:"status"`
+}
+
+type BusinessAccount struct {
+	AccountId string `json:"account_id"`
+	Balances string `json:"balances"`
+	HolderCategory string `json:"holder_category"`
+	Mask string `json:"mask"`
+	Name string `json:"name"`
+	OfficialName string `json:"official_name"`
+	Owners string `json:"owners"`
+	PersistentAccountId string `json:"persistent_account_id"`
+	Subtype string `json:"subtype"`
+	Type string `json:"type"`
+	VerificationInsights string `json:"verification_insights"`
+	VerificationName string `json:"verification_name"`
+	VerificationStatus string `json:"verification_status"`
+}
+
+type BusinessDigitalPresenceCheck struct {
+	Address string `json:"address"`
+	EmailAddress string `json:"email_address"`
+	PhoneNumber string `json:"phone_number"`
+	Score int `json:"score"`
+	Status string `json:"status"`
+	Website string `json:"website"`
+	WebsiteAnalysis string `json:"website_analysis"`
+}
+
+type BusinessEmailAddress struct {
+	EmailAddress string `json:"email_address"`
+}
+
+type BusinessFieldMatchSummary struct {
+	Summary string `json:"summary"`
+}
+
+type BusinessFinanceCategory struct {
+	ConfidenceLevel string `json:"confidence_level"`
+	Detailed string `json:"detailed"`
+	Primary string `json:"primary"`
+}
+
+type BusinessIndustryPrediction struct {
+	Code int `json:"code"`
+	Title string `json:"title"`
+}
+
+type BusinessIndustryPredictionNullable struct {
+	Code int `json:"code"`
+	Title string `json:"title"`
+}
+
+type BusinessKYBCheck struct {
+	Address string `json:"address"`
+	MatchDetails string `json:"match_details"`
+	Name string `json:"name"`
+	Score int `json:"score"`
+	Status string `json:"status"`
+	Website string `json:"website"`
+}
+
+type BusinessKYBMatchDetails struct {
+	Addresses string `json:"addresses"`
+	EmailAddresses string `json:"email_addresses"`
+	EntityType string `json:"entity_type"`
+	FormationDate string `json:"formation_date"`
+	Name string `json:"name"`
+	PhoneNumbers string `json:"phone_numbers"`
+	Websites string `json:"websites"`
+}
+
+type BusinessPhoneNumber struct {
+	Number string `json:"number"`
+}
+
+type BusinessRiskCheck struct {
+	IndustryPrediction string `json:"industry_prediction"`
+	Score int `json:"score"`
+	Status string `json:"status"`
+}
+
+type BusinessSearchTerms struct {
+	Address string `json:"address"`
+	EmailAddress string `json:"email_address"`
+	Name string `json:"name"`
+	PhoneNumber string `json:"phone_number"`
+	Website string `json:"website"`
+}
+
+type BusinessVerificationCreateRequest struct {
+	Business string `json:"business"`
+	ClientId string `json:"client_id"`
+	ClientUserId string `json:"client_user_id"`
+	Secret string `json:"secret"`
+}
+
+type BusinessVerificationCreateRequestBusiness struct {
+	Address string `json:"address"`
+	EmailAddress string `json:"email_address"`
+	Name string `json:"name"`
+	PhoneNumber string `json:"phone_number"`
+	Website string `json:"website"`
+}
+
+type BusinessVerificationCreateResponse struct {
+	ClientUserId string `json:"client_user_id"`
+	CompletedAt string `json:"completed_at"`
+	CreatedAt string `json:"created_at"`
+	DigitalPresenceCheck string `json:"digital_presence_check"`
+	Id string `json:"id"`
+	KybCheck string `json:"kyb_check"`
+	RedactedAt string `json:"redacted_at"`
+	RequestId string `json:"request_id"`
+	RiskCheck string `json:"risk_check"`
+	SearchTerms string `json:"search_terms"`
+	ShareableUrl string `json:"shareable_url"`
+	Status string `json:"status"`
+}
+
+type BusinessVerificationGetRequest struct {
+	BusinessVerificationId string `json:"business_verification_id"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type BusinessVerificationGetResponse struct {
+	ClientUserId string `json:"client_user_id"`
+	CompletedAt string `json:"completed_at"`
+	CreatedAt string `json:"created_at"`
+	DigitalPresenceCheck string `json:"digital_presence_check"`
+	Id string `json:"id"`
+	KybCheck string `json:"kyb_check"`
+	RedactedAt string `json:"redacted_at"`
+	RequestId string `json:"request_id"`
+	RiskCheck string `json:"risk_check"`
+	SearchTerms string `json:"search_terms"`
+	ShareableUrl string `json:"shareable_url"`
+	Status string `json:"status"`
+}
+
+type BusinessWebsite struct {
+	Url string `json:"url"`
+}
+
+type BusinessWebsiteAnalysis struct {
+	EmailIsDeliverable string `json:"email_is_deliverable"`
+	IsParked string `json:"is_parked"`
+	Ssl string `json:"ssl"`
+	WebsiteBuildStatus string `json:"website_build_status"`
+	WhoisRecord string `json:"whois_record"`
+}
+
+type BusinessWebsiteSSL struct {
+	IsValid string `json:"is_valid"`
+}
+
+type BusinessWhoisRecord struct {
+	DomainCreatedAt string `json:"domain_created_at"`
+	DomainExpiresAt string `json:"domain_expires_at"`
+	DomainUpdatedAt string `json:"domain_updated_at"`
+	Registrar string `json:"registrar"`
+}
+
+type CRALoansRegisterRequest struct {
+	ClientId string `json:"client_id"`
+	Loans string `json:"loans"`
+	Secret string `json:"secret"`
+}
+
+type CashFlowUpdatesExpectedDepositMissedWebhook struct {
+	Environment string `json:"environment"`
+	Status string `json:"status"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type CashFlowUpdatesInsightsV2Webhook struct {
+	Environment string `json:"environment"`
+	Insights string `json:"insights"`
+	Status string `json:"status"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type CashFlowUpdatesInsightsWebhook struct {
+	Environment string `json:"environment"`
+	Status string `json:"status"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type CashFlowUpdatesLargeDepositWebhook struct {
+	Environment string `json:"environment"`
+	Status string `json:"status"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type CashFlowUpdatesLowBalanceWebhook struct {
+	Environment string `json:"environment"`
+	Status string `json:"status"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type CashFlowUpdatesNSFWebhook struct {
+	Environment string `json:"environment"`
+	Status string `json:"status"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type CashFlowUpdatesNewIncomeStreamWebhook struct {
+	Environment string `json:"environment"`
+	Status string `json:"status"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type CashFlowUpdatesNewLoanPaymentWebhook struct {
+	Environment string `json:"environment"`
+	Status string `json:"status"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type CashflowAttributesSchema struct {
+}
+
+type CashflowReportAccountInsights struct {
+	HistoricalBalances string `json:"historical_balances"`
+	MonthlySummaries string `json:"monthly_summaries"`
+}
+
+type CashflowReportGetRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Count int `json:"count"`
+	Cursor string `json:"cursor"`
+	DaysRequested int `json:"days_requested"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+}
+
+type CashflowReportGetRequestOptions struct {
+	AccountIds string `json:"account_ids"`
+}
+
+type CashflowReportGetResponse struct {
+	Accounts string `json:"accounts"`
+	HasMore bool `json:"has_more"`
+	Item string `json:"item"`
+	LastSuccessfulUpdateTime string `json:"last_successful_update_time"`
+	NextCursor string `json:"next_cursor"`
+	RequestId string `json:"request_id"`
+	TotalTransactions int `json:"total_transactions"`
+	Transactions string `json:"transactions"`
+}
+
+type CashflowReportHistoricalBalance struct {
+	Amount float64 `json:"amount"`
+	Date string `json:"date"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type CashflowReportInsightsGetRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type CashflowReportInsightsGetResponse struct {
+	AccountInsights string `json:"account_insights"`
+	Accounts string `json:"accounts"`
+	Item string `json:"item"`
+	LastGeneratedTime string `json:"last_generated_time"`
+	RequestId string `json:"request_id"`
+}
+
+type CashflowReportMonthlySummary struct {
+	AverageDailyEndingBalance string `json:"average_daily_ending_balance"`
+	AverageDailyInflowAmount string `json:"average_daily_inflow_amount"`
+	AverageDailyInflowTransactionCount float64 `json:"average_daily_inflow_transaction_count"`
+	AverageDailyNetCashflowAmount string `json:"average_daily_net_cashflow_amount"`
+	AverageDailyOutflowAmount string `json:"average_daily_outflow_amount"`
+	AverageDailyOutflowTransactionCount float64 `json:"average_daily_outflow_transaction_count"`
+	EndDate string `json:"end_date"`
+	EndingBalance string `json:"ending_balance"`
+	NegativeEndingBalanceDayCount int `json:"negative_ending_balance_day_count"`
+	NsfTransactionCount int `json:"nsf_transaction_count"`
+	OverdraftTransactionCount int `json:"overdraft_transaction_count"`
+	StartDate string `json:"start_date"`
+	StartingBalance string `json:"starting_balance"`
+	TotalLoanPayment string `json:"total_loan_payment"`
+	TotalPayroll string `json:"total_payroll"`
+	TotalRevenue string `json:"total_revenue"`
+	TotalVariableExpense string `json:"total_variable_expense"`
+}
+
+type CashflowReportMonthlySummaryAverageDailyEndingBalance struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type CashflowReportMonthlySummaryAverageDailyInflowAmount struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type CashflowReportMonthlySummaryAverageDailyNetCashflowAmount struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type CashflowReportMonthlySummaryAverageDailyOutflowAmount struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type CashflowReportMonthlySummaryEndingBalance struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type CashflowReportMonthlySummaryStartingBalance struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type CashflowReportMonthlySummaryTotalLoanPayment struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type CashflowReportMonthlySummaryTotalPayroll struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type CashflowReportMonthlySummaryTotalRevenue struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type CashflowReportMonthlySummaryTotalVariableExpense struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type CashflowReportPaymentMeta struct {
+	ByOrderOf string `json:"by_order_of"`
+	Payee string `json:"payee"`
+	Payer string `json:"payer"`
+	PaymentMethod string `json:"payment_method"`
+	PaymentProcessor string `json:"payment_processor"`
+	PpdId string `json:"ppd_id"`
+	Reason string `json:"reason"`
+	ReferenceNumber string `json:"reference_number"`
+}
+
+type CashflowReportRefreshRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	DaysRequested int `json:"days_requested"`
+	Secret string `json:"secret"`
+}
+
+type CashflowReportRefreshResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type CashflowReportTransaction struct {
+	AccountId string `json:"account_id"`
+	AccountOwner string `json:"account_owner"`
+	Amount float64 `json:"amount"`
+	AuthorizedDate string `json:"authorized_date"`
+	AuthorizedDatetime string `json:"authorized_datetime"`
+	BusinessFinanceCategory string `json:"business_finance_category"`
+	CheckNumber string `json:"check_number"`
+	Counterparties string `json:"counterparties"`
+	CreditCategory string `json:"credit_category"`
+	Date string `json:"date"`
+	Datetime string `json:"datetime"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Location string `json:"location"`
+	LogoUrl string `json:"logo_url"`
+	MerchantEntityId string `json:"merchant_entity_id"`
+	MerchantName string `json:"merchant_name"`
+	Name string `json:"name"`
+	OriginalDescription string `json:"original_description"`
+	PaymentChannel string `json:"payment_channel"`
+	PaymentMeta string `json:"payment_meta"`
+	Pending bool `json:"pending"`
+	PendingTransactionId string `json:"pending_transaction_id"`
+	PersonalFinanceCategory string `json:"personal_finance_category"`
+	PersonalFinanceCategoryIconUrl string `json:"personal_finance_category_icon_url"`
+	TransactionCode string `json:"transaction_code"`
+	TransactionId string `json:"transaction_id"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+	Website string `json:"website"`
+}
+
+type CashflowReportTransactionsGetRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Count int `json:"count"`
+	Cursor string `json:"cursor"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+}
+
+type CashflowReportTransactionsGetRequestOptions struct {
+	AccountIds string `json:"account_ids"`
+}
+
+type CashflowReportTransactionsGetResponse struct {
+	Accounts string `json:"accounts"`
+	HasMore bool `json:"has_more"`
+	Item string `json:"item"`
+	NextCursor string `json:"next_cursor"`
+	RequestId string `json:"request_id"`
+	TotalTransactions int `json:"total_transactions"`
+	Transactions string `json:"transactions"`
+}
+
+type CategoriesGetRequest struct {
+}
+
+type CategoriesGetResponse struct {
+	Categories string `json:"categories"`
+	RequestId string `json:"request_id"`
+}
+
+type Category struct {
+	CategoryId string `json:"category_id"`
+	Group string `json:"group"`
+	Hierarchy string `json:"hierarchy"`
+}
+
+type CategoryExpenses struct {
+	Amount float64 `json:"amount"`
+	Id string `json:"id"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	MonthlyAverage string `json:"monthly_average"`
+	TransactionsCount int `json:"transactions_count"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type CategoryInsightDetails struct {
+	Name string `json:"name"`
+	TopCounterparties string `json:"top_counterparties"`
+	TotalInflows float64 `json:"total_inflows"`
+	TotalOutflows float64 `json:"total_outflows"`
+	TransactionCount int `json:"transaction_count"`
+}
+
+type CategoryInsights struct {
+	DetailedCategoryInsights string `json:"detailed_category_insights"`
+	PrimaryCategoryInsights string `json:"primary_category_insights"`
+}
+
+type Cause struct {
+	Causes string `json:"causes"`
+	DisplayMessage string `json:"display_message"`
+	DocumentationUrl string `json:"documentation_url"`
+	ErrorCode string `json:"error_code"`
+	ErrorCodeReason string `json:"error_code_reason"`
+	ErrorMessage string `json:"error_message"`
+	ErrorType string `json:"error_type"`
+	ItemId string `json:"item_id"`
+	ProvidedAccountSubtypes string `json:"provided_account_subtypes"`
+	RequestId string `json:"request_id"`
+	RequiredAccountSubtypes string `json:"required_account_subtypes"`
+	Status int `json:"status"`
+	SuggestedAction string `json:"suggested_action"`
+}
+
+type CheckReportWarning struct {
+	Cause string `json:"cause"`
+	WarningCode string `json:"warning_code"`
+	WarningType string `json:"warning_type"`
+}
+
+type ClientCustomization struct {
+	CustomEntityId string `json:"custom_entity_id"`
+}
+
+type ClientProvidedEnhancedTransaction struct {
+	Amount float64 `json:"amount"`
+	Description string `json:"description"`
+	Enhancements string `json:"enhancements"`
+	Id string `json:"id"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+}
+
+type ClientProvidedEnrichedTransaction struct {
+	AccountSubtype string `json:"account_subtype"`
+	AccountType string `json:"account_type"`
+	Amount float64 `json:"amount"`
+	ClientAccountId string `json:"client_account_id"`
+	ClientCustomization string `json:"client_customization"`
+	ClientUserId string `json:"client_user_id"`
+	Description string `json:"description"`
+	Direction string `json:"direction"`
+	Enrichments string `json:"enrichments"`
+	Id string `json:"id"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+}
+
+type ClientProvidedRawTransaction struct {
+	Amount float64 `json:"amount"`
+	Description string `json:"description"`
+	Id string `json:"id"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+}
+
+type ClientProvidedTransaction struct {
+	AccountSubtype string `json:"account_subtype"`
+	AccountType string `json:"account_type"`
+	Amount float64 `json:"amount"`
+	ClientAccountId string `json:"client_account_id"`
+	ClientUserId string `json:"client_user_id"`
+	DatePosted string `json:"date_posted"`
+	Description string `json:"description"`
+	Direction string `json:"direction"`
+	Id string `json:"id"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Location string `json:"location"`
+	Mcc string `json:"mcc"`
+	UserId string `json:"user_id"`
+}
+
+type ClientProvidedTransactionLocation struct {
+	Address string `json:"address"`
+	City string `json:"city"`
+	Country string `json:"country"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+}
+
+type ClientUserIdentity struct {
+	Addresses string `json:"addresses"`
+	DateOfBirth string `json:"date_of_birth"`
+	Emails string `json:"emails"`
+	IdNumbers string `json:"id_numbers"`
+	Name string `json:"name"`
+	PhoneNumbers string `json:"phone_numbers"`
+}
+
+type ClientUserIdentityAddress struct {
+	City string `json:"city"`
+	Country string `json:"country"`
+	PostalCode string `json:"postal_code"`
+	Primary bool `json:"primary"`
+	Region string `json:"region"`
+	Street1 string `json:"street_1"`
+	Street2 string `json:"street_2"`
+}
+
+type ClientUserIdentityEmail struct {
+	Data string `json:"data"`
+	Primary bool `json:"primary"`
+}
+
+type ClientUserIdentityName struct {
+	FamilyName string `json:"family_name"`
+	GivenName string `json:"given_name"`
+}
+
+type ClientUserIdentityPhoneNumber struct {
+	Data string `json:"data"`
+	Primary bool `json:"primary"`
+}
+
+type ConnectedApplication struct {
+	ApplicationId string `json:"application_id"`
+	ApplicationUrl string `json:"application_url"`
+	CreatedAt string `json:"created_at"`
+	DisplayName string `json:"display_name"`
+	LogoUrl string `json:"logo_url"`
+	Name string `json:"name"`
+	ReasonForAccess string `json:"reason_for_access"`
+	Scopes string `json:"scopes"`
+}
+
+type ConsentEvent struct {
+	ConsentedAccounts string `json:"consented_accounts"`
+	ConsentedDataScopes string `json:"consented_data_scopes"`
+	ConsentedUseCases string `json:"consented_use_cases"`
+	CreatedAt string `json:"created_at"`
+	EventCode string `json:"event_code"`
+	EventType string `json:"event_type"`
+	Initiator string `json:"initiator"`
+	InstitutionId string `json:"institution_id"`
+	InstitutionName string `json:"institution_name"`
+	ItemId string `json:"item_id"`
+}
+
+type ConsentEventsGetRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type ConsentEventsGetResponse struct {
+	ConsentEvents string `json:"consent_events"`
+	RequestId string `json:"request_id"`
+}
+
+type ConsentedAccount struct {
+	AccountId string `json:"account_id"`
+	Mask string `json:"mask"`
+	Name string `json:"name"`
+	OfficialName string `json:"official_name"`
+	Subtype string `json:"subtype"`
+	Type string `json:"type"`
+}
+
+type ConsumerDispute struct {
+	Category string `json:"category"`
+	ConsumerDisputeId string `json:"consumer_dispute_id"`
+	DisputeFieldCreateDate string `json:"dispute_field_create_date"`
+	Statement string `json:"statement"`
+}
+
+type ConsumerReportPDFGetRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	UserToken string `json:"user_token"`
+}
+
+type ConsumerReportUserIdentity struct {
+	DateOfBirth string `json:"date_of_birth"`
+	Emails string `json:"emails"`
+	FirstName string `json:"first_name"`
+	LastName string `json:"last_name"`
+	PhoneNumbers string `json:"phone_numbers"`
+	PrimaryAddress string `json:"primary_address"`
+	SsnFull string `json:"ssn_full"`
+	SsnLast4 string `json:"ssn_last_4"`
+}
+
+type Counterparty struct {
+	AccountNumbers string `json:"account_numbers"`
+	ConfidenceLevel string `json:"confidence_level"`
+	EntityId string `json:"entity_id"`
+	LogoUrl string `json:"logo_url"`
+	Name string `json:"name"`
+	PhoneNumber string `json:"phone_number"`
+	Type string `json:"type"`
+	Website string `json:"website"`
+}
+
+type CounterpartyInsights struct {
+	FinancialInstitutionInsights string `json:"financial_institution_insights"`
+	MerchantInsights string `json:"merchant_insights"`
+}
+
+type CounterpartyNumbers struct {
+	Bacs string `json:"bacs"`
+	International string `json:"international"`
+}
+
+type CounterpartyNumbersBACS struct {
+	Account string `json:"account"`
+	SortCode string `json:"sort_code"`
+}
+
+type CounterpartyNumbersInternational struct {
+	Bic string `json:"bic"`
+	Iban string `json:"iban"`
+}
+
+type CraBankIncomeAccount struct {
+	AccountId string `json:"account_id"`
+	Mask string `json:"mask"`
+	Metadata string `json:"metadata"`
+	Name string `json:"name"`
+	OfficialName string `json:"official_name"`
+	Owners string `json:"owners"`
+	Subtype string `json:"subtype"`
+	Type string `json:"type"`
+}
+
+type CraBankIncomeAccountMetadata struct {
+	EndDate string `json:"end_date"`
+	StartDate string `json:"start_date"`
+}
+
+type CraBankIncomeCause struct {
+	DisplayMessage string `json:"display_message"`
+	ErrorCode string `json:"error_code"`
+	ErrorMessage string `json:"error_message"`
+	ErrorType string `json:"error_type"`
+}
+
+type CraBankIncomeCompleteWebhook struct {
+	Environment string `json:"environment"`
+	Result string `json:"result"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type CraBankIncomeEmployer struct {
+	Name string `json:"name"`
+}
+
+type CraBankIncomeErrorWebhook struct {
+	Environment string `json:"environment"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type CraBankIncomeHistoricalSummary struct {
+	EndDate string `json:"end_date"`
+	StartDate string `json:"start_date"`
+	TotalAmounts string `json:"total_amounts"`
+	Transactions string `json:"transactions"`
+}
+
+type CraBankIncomeIncomeProvider struct {
+	IsNormalized bool `json:"is_normalized"`
+	Name string `json:"name"`
+}
+
+type CraBankIncomeItem struct {
+	BankIncomeAccounts string `json:"bank_income_accounts"`
+	BankIncomeSources string `json:"bank_income_sources"`
+	InstitutionId string `json:"institution_id"`
+	InstitutionName string `json:"institution_name"`
+	ItemId string `json:"item_id"`
+	LastUpdatedTime string `json:"last_updated_time"`
+}
+
+type CraBankIncomeSource struct {
+	AccountId string `json:"account_id"`
+	Employer string `json:"employer"`
+	EndDate string `json:"end_date"`
+	ForecastedAverageMonthlyIncome float64 `json:"forecasted_average_monthly_income"`
+	ForecastedAverageMonthlyIncomePredictionIntervals string `json:"forecasted_average_monthly_income_prediction_intervals"`
+	HistoricalAverageMonthlyGrossIncome float64 `json:"historical_average_monthly_gross_income"`
+	HistoricalAverageMonthlyIncome float64 `json:"historical_average_monthly_income"`
+	HistoricalSummary string `json:"historical_summary"`
+	IncomeCategory string `json:"income_category"`
+	IncomeDescription string `json:"income_description"`
+	IncomeProvider string `json:"income_provider"`
+	IncomeSourceId string `json:"income_source_id"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	NextPaymentDate string `json:"next_payment_date"`
+	PayFrequency string `json:"pay_frequency"`
+	StartDate string `json:"start_date"`
+	Status string `json:"status"`
+	TotalAmount float64 `json:"total_amount"`
+	TransactionCount int `json:"transaction_count"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type CraBankIncomeSummary struct {
+	EndDate string `json:"end_date"`
+	ForecastedAnnualIncome string `json:"forecasted_annual_income"`
+	ForecastedAverageMonthlyIncome string `json:"forecasted_average_monthly_income"`
+	HistoricalAnnualGrossIncome string `json:"historical_annual_gross_income"`
+	HistoricalAnnualIncome string `json:"historical_annual_income"`
+	HistoricalAverageMonthlyGrossIncome string `json:"historical_average_monthly_gross_income"`
+	HistoricalAverageMonthlyIncome string `json:"historical_average_monthly_income"`
+	HistoricalSummary string `json:"historical_summary"`
+	IncomeCategoriesCount int `json:"income_categories_count"`
+	IncomeSourcesCount int `json:"income_sources_count"`
+	IncomeTransactionsCount int `json:"income_transactions_count"`
+	StartDate string `json:"start_date"`
+	TotalAmounts string `json:"total_amounts"`
+}
+
+type CraBankIncomeTransaction struct {
+	Amount float64 `json:"amount"`
+	BonusType string `json:"bonus_type"`
+	CheckNumber string `json:"check_number"`
+	Date string `json:"date"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Name string `json:"name"`
+	OriginalDescription string `json:"original_description"`
+	Pending bool `json:"pending"`
+	TransactionId string `json:"transaction_id"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type CraBankIncomeWarning struct {
+	Cause string `json:"cause"`
+	WarningCode string `json:"warning_code"`
+	WarningType string `json:"warning_type"`
+}
+
+type CraCashflowInsightsReport struct {
+	Attributes string `json:"attributes"`
+	GeneratedTime string `json:"generated_time"`
+	PlaidCheckScore string `json:"plaid_check_score"`
+	ReportId string `json:"report_id"`
+}
+
+type CraCheckReportBaseReportGetRequest struct {
+	ClientId string `json:"client_id"`
+	ItemIds string `json:"item_ids"`
+	Secret string `json:"secret"`
+	ThirdPartyUserToken string `json:"third_party_user_token"`
+	UserId string `json:"user_id"`
+	UserToken string `json:"user_token"`
+}
+
+type CraCheckReportBaseReportGetResponse struct {
+	Report string `json:"report"`
+	RequestId string `json:"request_id"`
+	Warnings string `json:"warnings"`
+}
+
+type CraCheckReportCashflowInsightsGetOptions struct {
+	AttributesVersion string `json:"attributes_version"`
+	PlaidCheckScoreVersion string `json:"plaid_check_score_version"`
+}
+
+type CraCheckReportCashflowInsightsGetRequest struct {
+	ClientId string `json:"client_id"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+	ThirdPartyUserToken string `json:"third_party_user_token"`
+	UserId string `json:"user_id"`
+	UserToken string `json:"user_token"`
+}
+
+type CraCheckReportCashflowInsightsGetResponse struct {
+	Report string `json:"report"`
+	RequestId string `json:"request_id"`
+	Warnings string `json:"warnings"`
+}
+
+type CraCheckReportCreateBaseReportOptions struct {
+	ClientReportId string `json:"client_report_id"`
+	GseOptions string `json:"gse_options"`
+	RequireIdentity bool `json:"require_identity"`
+}
+
+type CraCheckReportCreatePartnerInsightsOptions struct {
+	Fico string `json:"fico"`
+	PrismProducts string `json:"prism_products"`
+	PrismVersions string `json:"prism_versions"`
+}
+
+type CraCheckReportCreateRequest struct {
+	BaseReport string `json:"base_report"`
+	CashflowInsights string `json:"cashflow_insights"`
+	ClientId string `json:"client_id"`
+	ClientReportId string `json:"client_report_id"`
+	ConsumerReportPermissiblePurpose string `json:"consumer_report_permissible_purpose"`
+	DaysRequested int `json:"days_requested"`
+	DaysRequired int `json:"days_required"`
+	IncludeInvestments bool `json:"include_investments"`
+	LendScore string `json:"lend_score"`
+	NetworkInsights string `json:"network_insights"`
+	PartnerInsights string `json:"partner_insights"`
+	Products string `json:"products"`
+	Secret string `json:"secret"`
+	UserId string `json:"user_id"`
+	UserToken string `json:"user_token"`
+	Webhook string `json:"webhook"`
+}
+
+type CraCheckReportCreateResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type CraCheckReportFailedWebhook struct {
+	Environment string `json:"environment"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type CraCheckReportFreddieMacGetRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	ThirdPartyUserToken string `json:"third_party_user_token"`
+}
+
+type CraCheckReportFreddieMacGetResponse struct {
+	DEAL string `json:"DEAL"`
+	SchemaVersion float64 `json:"SchemaVersion"`
+	RequestId string `json:"request_id"`
+}
+
+type CraCheckReportFreddieMacVerificationOfAssetsDeal struct {
+	LOANS string `json:"LOANS"`
+	PARTIES string `json:"PARTIES"`
+	SERVICES string `json:"SERVICES"`
+}
+
+type CraCheckReportGSEOptions struct {
+	ReportTypes string `json:"report_types"`
+}
+
+type CraCheckReportIncomeInsightsGetRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	ThirdPartyUserToken string `json:"third_party_user_token"`
+	UserId string `json:"user_id"`
+	UserToken string `json:"user_token"`
+}
+
+type CraCheckReportIncomeInsightsGetResponse struct {
+	Report string `json:"report"`
+	RequestId string `json:"request_id"`
+	Warnings string `json:"warnings"`
+}
+
+type CraCheckReportLendScoreGetOptions struct {
+	LendScoreVersion string `json:"lend_score_version"`
+}
+
+type CraCheckReportLendScoreGetRequest struct {
+	ClientId string `json:"client_id"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+	ThirdPartyUserToken string `json:"third_party_user_token"`
+	UserId string `json:"user_id"`
+	UserToken string `json:"user_token"`
+}
+
+type CraCheckReportLendScoreGetResponse struct {
+	Report string `json:"report"`
+	RequestId string `json:"request_id"`
+	Warnings string `json:"warnings"`
+}
+
+type CraCheckReportNetworkInsightsGetOptions struct {
+	NetworkInsightsVersion string `json:"network_insights_version"`
+}
+
+type CraCheckReportNetworkInsightsGetRequest struct {
+	ClientId string `json:"client_id"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+	ThirdPartyUserToken string `json:"third_party_user_token"`
+	UserId string `json:"user_id"`
+	UserToken string `json:"user_token"`
+}
+
+type CraCheckReportNetworkInsightsGetResponse struct {
+	Report string `json:"report"`
+	RequestId string `json:"request_id"`
+	Warnings string `json:"warnings"`
+}
+
+type CraCheckReportPDFGetRequest struct {
+	AddOns string `json:"add_ons"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	ThirdPartyUserToken string `json:"third_party_user_token"`
+	UserId string `json:"user_id"`
+	UserToken string `json:"user_token"`
+}
+
+type CraCheckReportPartnerInsightsGetOptions struct {
+	PrismProducts string `json:"prism_products"`
+	PrismVersions string `json:"prism_versions"`
+}
+
+type CraCheckReportPartnerInsightsGetPartnerInsights struct {
+	Fico string `json:"fico"`
+	PrismVersions string `json:"prism_versions"`
+}
+
+type CraCheckReportPartnerInsightsGetRequest struct {
+	ClientId string `json:"client_id"`
+	Options string `json:"options"`
+	PartnerInsights string `json:"partner_insights"`
+	Secret string `json:"secret"`
+	ThirdPartyUserToken string `json:"third_party_user_token"`
+	UserId string `json:"user_id"`
+	UserToken string `json:"user_token"`
+}
+
+type CraCheckReportPartnerInsightsGetResponse struct {
+	Report string `json:"report"`
+	RequestId string `json:"request_id"`
+	Warnings string `json:"warnings"`
+}
+
+type CraCheckReportReadyWebhook struct {
+	Environment string `json:"environment"`
+	FailedProducts string `json:"failed_products"`
+	ItemIds string `json:"item_ids"`
+	SuccessfulProducts string `json:"successful_products"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type CraCheckReportVerificationGetEmploymentRefreshOptions struct {
+	DaysRequested int `json:"days_requested"`
+}
+
+type CraCheckReportVerificationGetRequest struct {
+	ClientId string `json:"client_id"`
+	EmploymentRefreshOptions string `json:"employment_refresh_options"`
+	ReportsRequested string `json:"reports_requested"`
+	Secret string `json:"secret"`
+	UserId string `json:"user_id"`
+	UserToken string `json:"user_token"`
+}
+
+type CraCheckReportVerificationGetResponse struct {
+	Report string `json:"report"`
+	RequestId string `json:"request_id"`
+	Warnings string `json:"warnings"`
+}
+
+type CraCheckReportVerificationPdfGetRequest struct {
+	ClientId string `json:"client_id"`
+	ReportRequested string `json:"report_requested"`
+	Secret string `json:"secret"`
+	ThirdPartyUserToken string `json:"third_party_user_token"`
+	UserId string `json:"user_id"`
+	UserToken string `json:"user_token"`
+}
+
+type CraEmploymentRefreshReport struct {
+	DaysRequested float64 `json:"days_requested"`
+	GeneratedTime string `json:"generated_time"`
+	Items string `json:"items"`
+}
+
+type CraEmploymentRefreshReportAccount struct {
+	AccountId string `json:"account_id"`
+	Name string `json:"name"`
+	OfficialName string `json:"official_name"`
+	Subtype string `json:"subtype"`
+	Transactions string `json:"transactions"`
+	Type string `json:"type"`
+}
+
+type CraEmploymentRefreshReportItem struct {
+	Accounts string `json:"accounts"`
+	InstitutionId string `json:"institution_id"`
+	InstitutionName string `json:"institution_name"`
+	ItemId string `json:"item_id"`
+	LastUpdateTime string `json:"last_update_time"`
+}
+
+type CraEmploymentRefreshReportTransaction struct {
+	AccountId string `json:"account_id"`
+	Date string `json:"date"`
+	OriginalDescription string `json:"original_description"`
+	Pending bool `json:"pending"`
+	TransactionId string `json:"transaction_id"`
+}
+
+type CraIncomeInsights struct {
+	BankIncomeSummary string `json:"bank_income_summary"`
+	ClientReportId string `json:"client_report_id"`
+	DaysRequested int `json:"days_requested"`
+	GeneratedTime string `json:"generated_time"`
+	Items string `json:"items"`
+	ReportId string `json:"report_id"`
+	Warnings string `json:"warnings"`
+}
+
+type CraLendScoreReport struct {
+	GeneratedTime string `json:"generated_time"`
+	LendScore string `json:"lend_score"`
+	ReportId string `json:"report_id"`
+}
+
+type CraLoanApplication struct {
+	ApplicationDate string `json:"application_date"`
+	ApplicationId string `json:"application_id"`
+	Decision string `json:"decision"`
+	DecisionDate string `json:"decision_date"`
+	Type string `json:"type"`
+	UserToken string `json:"user_token"`
+}
+
+type CraLoanClosedStatus struct {
+	Date string `json:"date"`
+	Status string `json:"status"`
+}
+
+type CraLoanOpenedStatus struct {
+	Date string `json:"date"`
+	Status string `json:"status"`
+}
+
+type CraLoanPaymentHistory struct {
+	AmountPastDue float64 `json:"amount_past_due"`
+	BalanceRemaining float64 `json:"balance_remaining"`
+	DaysPastDue int `json:"days_past_due"`
+	DueDate string `json:"due_date"`
+	Period int `json:"period"`
+}
+
+type CraLoanRegister struct {
+	Application string `json:"application"`
+	LoanAmount float64 `json:"loan_amount"`
+	LoanId string `json:"loan_id"`
+	OpenedDate string `json:"opened_date"`
+	OpenedWithStatus string `json:"opened_with_status"`
+	PaymentSchedule string `json:"payment_schedule"`
+	Type string `json:"type"`
+	UserToken string `json:"user_token"`
+}
+
+type CraLoanRegisterApplication struct {
+	ApplicationDate string `json:"application_date"`
+	ApplicationId string `json:"application_id"`
+}
+
+type CraLoanStatusHistoryUpdate struct {
+	Date string `json:"date"`
+	Status string `json:"status"`
+}
+
+type CraLoanUnregister struct {
+	ClosedWithStatus string `json:"closed_with_status"`
+	LoanId string `json:"loan_id"`
+}
+
+type CraLoanUnregisterResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type CraLoanUpdate struct {
+	LoanId string `json:"loan_id"`
+	PaymentHistory string `json:"payment_history"`
+	StatusHistory string `json:"status_history"`
+}
+
+type CraLoansApplicationsRegisterRequest struct {
+	Applications string `json:"applications"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type CraLoansApplicationsRegisterResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type CraLoansRegisterResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type CraLoansUnregisterRequest struct {
+	ClientId string `json:"client_id"`
+	Loans string `json:"loans"`
+	Secret string `json:"secret"`
+}
+
+type CraLoansUpdateRequest struct {
+	ClientId string `json:"client_id"`
+	Loans string `json:"loans"`
+	Secret string `json:"secret"`
+}
+
+type CraLoansUpdateResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type CraMonitoringInsightsGetRequest struct {
+	ClientId string `json:"client_id"`
+	ConsumerReportPermissiblePurpose string `json:"consumer_report_permissible_purpose"`
+	Secret string `json:"secret"`
+	UserId string `json:"user_id"`
+	UserToken string `json:"user_token"`
+}
+
+type CraMonitoringInsightsGetResponse struct {
+	Items string `json:"items"`
+	RequestId string `json:"request_id"`
+	UserInsightsId string `json:"user_insights_id"`
+}
+
+type CraMonitoringInsightsItem struct {
+	Accounts string `json:"accounts"`
+	DateGenerated string `json:"date_generated"`
+	Insights string `json:"insights"`
+	InstitutionId string `json:"institution_id"`
+	InstitutionName string `json:"institution_name"`
+	ItemId string `json:"item_id"`
+	Status string `json:"status"`
+}
+
+type CraMonitoringInsightsSubscribeRequest struct {
+	ClientId string `json:"client_id"`
+	IncomeCategories string `json:"income_categories"`
+	ItemId string `json:"item_id"`
+	Secret string `json:"secret"`
+	UserId string `json:"user_id"`
+	UserToken string `json:"user_token"`
+	Webhook string `json:"webhook"`
+}
+
+type CraMonitoringInsightsSubscribeResponse struct {
+	RequestId string `json:"request_id"`
+	SubscriptionId string `json:"subscription_id"`
+}
+
+type CraMonitoringInsightsUnsubscribeRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	SubscriptionId string `json:"subscription_id"`
+}
+
+type CraMonitoringInsightsUnsubscribeResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type CraNetworkInsightsItem struct {
+	InstitutionId string `json:"institution_id"`
+	InstitutionName string `json:"institution_name"`
+	ItemId string `json:"item_id"`
+}
+
+type CraNetworkInsightsReport struct {
+	GeneratedTime string `json:"generated_time"`
+	Items string `json:"items"`
+	NetworkAttributes string `json:"network_attributes"`
+	ReportId string `json:"report_id"`
+}
+
+type CraPartnerInsights struct {
+	ClientReportId string `json:"client_report_id"`
+	Fico string `json:"fico"`
+	GeneratedTime string `json:"generated_time"`
+	Items string `json:"items"`
+	Prism string `json:"prism"`
+	ReportId string `json:"report_id"`
+}
+
+type CraPartnerInsightsBaseFicoScore struct {
+	BaseFicoScoreVersion string `json:"base_fico_score_version"`
+	Bureau string `json:"bureau"`
+	DidInquiriesAdverselyAffectScore bool `json:"did_inquiries_adversely_affect_score"`
+	ReasonCode1 string `json:"reason_code_1"`
+	ReasonCode2 string `json:"reason_code_2"`
+	ReasonCode3 string `json:"reason_code_3"`
+	ReasonCode4 string `json:"reason_code_4"`
+	Score int `json:"score"`
+}
+
+type CraPartnerInsightsCompleteWebhook struct {
+	Environment string `json:"environment"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type CraPartnerInsightsErrorWebhook struct {
+	Environment string `json:"environment"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type CraPartnerInsightsFicoInput struct {
+	FicoLenderId string `json:"fico_lender_id"`
+	LenderApplicationId string `json:"lender_application_id"`
+	UltraficoScoreRequests string `json:"ultrafico_score_requests"`
+}
+
+type CraPartnerInsightsFicoResults struct {
+	LenderApplicationId string `json:"lender_application_id"`
+	UltraficoScoreResults string `json:"ultrafico_score_results"`
+}
+
+type CraPartnerInsightsGetRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	UserToken string `json:"user_token"`
+}
+
+type CraPartnerInsightsGetResponse struct {
+	Report string `json:"report"`
+	RequestId string `json:"request_id"`
+}
+
+type CraPartnerInsightsItem struct {
+	Accounts string `json:"accounts"`
+	InstitutionId string `json:"institution_id"`
+	InstitutionName string `json:"institution_name"`
+	ItemId string `json:"item_id"`
+}
+
+type CraPartnerInsightsItemAccount struct {
+	AccountId string `json:"account_id"`
+	Mask string `json:"mask"`
+	Metadata string `json:"metadata"`
+	Name string `json:"name"`
+	OfficialName string `json:"official_name"`
+	Owners string `json:"owners"`
+	Subtype string `json:"subtype"`
+	Type string `json:"type"`
+}
+
+type CraPartnerInsightsItemAccountMetadata struct {
+	EndDate string `json:"end_date"`
+	StartDate string `json:"start_date"`
+}
+
+type CraPartnerInsightsPrism struct {
+	CashScore string `json:"cash_score"`
+	Detect string `json:"detect"`
+	Extend string `json:"extend"`
+	FirstDetect string `json:"first_detect"`
+	Insights string `json:"insights"`
+	Status string `json:"status"`
+}
+
+type CraPartnerInsightsUltraFicoScore struct {
+	DidInquiriesAdverselyAffectScore bool `json:"did_inquiries_adversely_affect_score"`
+	ReasonCode1 string `json:"reason_code_1"`
+	ReasonCode2 string `json:"reason_code_2"`
+	ReasonCode3 string `json:"reason_code_3"`
+	ReasonCode4 string `json:"reason_code_4"`
+	Score int `json:"score"`
+	UltraficoScoreVersion string `json:"ultrafico_score_version"`
+}
+
+type CraPartnerInsightsUltraFicoScoreRequest struct {
+	BaseFicoScore string `json:"base_fico_score"`
+	FicoScoringRequestId string `json:"fico_scoring_request_id"`
+	RequestCorrelationId string `json:"request_correlation_id"`
+	UltraficoScoreVersion string `json:"ultrafico_score_version"`
+}
+
+type CraPartnerInsightsUltraFicoScoreResult struct {
+	ErrorReason string `json:"error_reason"`
+	FicoScoringRequestId string `json:"fico_scoring_request_id"`
+	RequestCorrelationId string `json:"request_correlation_id"`
+	UltraficoScore string `json:"ultrafico_score"`
+}
+
+type CraPredictionInterval struct {
+	LowerBound float64 `json:"lower_bound"`
+	Probability float64 `json:"probability"`
+	UpperBound float64 `json:"upper_bound"`
+}
+
+type CraUpgradeFailedWebhook struct {
+	Environment string `json:"environment"`
+	ItemIds string `json:"item_ids"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type CraUserCheckReportFailedWebhook struct {
+	Environment string `json:"environment"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type CraUserCheckReportReadyWebhook struct {
+	Environment string `json:"environment"`
+	FailedProducts string `json:"failed_products"`
+	ItemIds string `json:"item_ids"`
+	SuccessfulProducts string `json:"successful_products"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type CraVerificationReport struct {
+	ClientReportId string `json:"client_report_id"`
+	EmploymentRefresh string `json:"employment_refresh"`
+	ReportId string `json:"report_id"`
+	Voa string `json:"voa"`
+}
+
+type CraVoaReport struct {
+	Attributes string `json:"attributes"`
+	DaysRequested float64 `json:"days_requested"`
+	GeneratedTime string `json:"generated_time"`
+	Items string `json:"items"`
+}
+
+type CraVoaReportAccount struct {
+	AccountId string `json:"account_id"`
+	Balances string `json:"balances"`
+	ConsumerDisputes string `json:"consumer_disputes"`
+	DaysAvailable float64 `json:"days_available"`
+	Investments string `json:"investments"`
+	Mask string `json:"mask"`
+	Name string `json:"name"`
+	OfficialName string `json:"official_name"`
+	Owners string `json:"owners"`
+	OwnershipType string `json:"ownership_type"`
+	Subtype string `json:"subtype"`
+	TransactionsInsights string `json:"transactions_insights"`
+	Type string `json:"type"`
+}
+
+type CraVoaReportAccountBalances struct {
+	Available float64 `json:"available"`
+	AverageBalance30Days float64 `json:"average_balance_30_days"`
+	AverageBalance60Days float64 `json:"average_balance_60_days"`
+	Current float64 `json:"current"`
+	HistoricalBalances string `json:"historical_balances"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	NsfOverdraftTransactionsCount float64 `json:"nsf_overdraft_transactions_count"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type CraVoaReportAccountHistoricalBalance struct {
+	Current float64 `json:"current"`
+	Date string `json:"date"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type CraVoaReportAttributes struct {
+	TotalInflowAmount string `json:"total_inflow_amount"`
+	TotalOutflowAmount string `json:"total_outflow_amount"`
+}
+
+type CraVoaReportItem struct {
+	Accounts string `json:"accounts"`
+	InstitutionId string `json:"institution_id"`
+	InstitutionName string `json:"institution_name"`
+	ItemId string `json:"item_id"`
+	LastUpdateTime string `json:"last_update_time"`
+}
+
+type CraVoaReportTransactionsInsights struct {
+	AllTransactions string `json:"all_transactions"`
+	EndDate string `json:"end_date"`
+	StartDate string `json:"start_date"`
+}
+
+type Credit1099 struct {
+	AprilAmount float64 `json:"april_amount"`
+	AugustAmount float64 `json:"august_amount"`
+	CardNotPresentTransaction float64 `json:"card_not_present_transaction"`
+	CropInsuranceProceeds float64 `json:"crop_insurance_proceeds"`
+	DecemberAmount float64 `json:"december_amount"`
+	DocumentId string `json:"document_id"`
+	DocumentMetadata string `json:"document_metadata"`
+	ExcessGoldenParachutePayments float64 `json:"excess_golden_parachute_payments"`
+	FebruaryAmount float64 `json:"february_amount"`
+	FederalIncomeTaxWithheld float64 `json:"federal_income_tax_withheld"`
+	Filer string `json:"filer"`
+	FishingBoatProceeds float64 `json:"fishing_boat_proceeds"`
+	Form1099Type string `json:"form_1099_type"`
+	GrossAmount float64 `json:"gross_amount"`
+	GrossProceedsPaidToAnAttorney float64 `json:"gross_proceeds_paid_to_an_attorney"`
+	JanuaryAmount float64 `json:"january_amount"`
+	JulyAmount float64 `json:"july_amount"`
+	JuneAmount float64 `json:"june_amount"`
+	MarchAmount float64 `json:"march_amount"`
+	MayAmount float64 `json:"may_amount"`
+	MedicalAndHealthcarePayments float64 `json:"medical_and_healthcare_payments"`
+	MerchantCategoryCode string `json:"merchant_category_code"`
+	NonemployeeCompensation float64 `json:"nonemployee_compensation"`
+	NovemberAmount float64 `json:"november_amount"`
+	NumberOfPaymentTransactions string `json:"number_of_payment_transactions"`
+	OctoberAmount float64 `json:"october_amount"`
+	OtherIncome float64 `json:"other_income"`
+	Payer string `json:"payer"`
+	PayerMadeDirectSalesOf5000OrMoreOfConsumerProductsToBuyer string `json:"payer_made_direct_sales_of_5000_or_more_of_consumer_products_to_buyer"`
+	PayerStateNumber string `json:"payer_state_number"`
+	PayerStateNumberLower string `json:"payer_state_number_lower"`
+	PrimaryState string `json:"primary_state"`
+	PrimaryStateId string `json:"primary_state_id"`
+	PrimaryStateIncomeTax float64 `json:"primary_state_income_tax"`
+	PseName string `json:"pse_name"`
+	PseTelephoneNumber string `json:"pse_telephone_number"`
+	Recipient string `json:"recipient"`
+	Rents float64 `json:"rents"`
+	Royalties float64 `json:"royalties"`
+	SecondaryState string `json:"secondary_state"`
+	SecondaryStateId string `json:"secondary_state_id"`
+	SecondaryStateIncomeTax float64 `json:"secondary_state_income_tax"`
+	Section409aDeferrals float64 `json:"section_409a_deferrals"`
+	Section409aIncome float64 `json:"section_409a_income"`
+	SeptemberAmount float64 `json:"september_amount"`
+	StateIncome float64 `json:"state_income"`
+	StateIncomeLower float64 `json:"state_income_lower"`
+	StateTaxWithheld float64 `json:"state_tax_withheld"`
+	StateTaxWithheldLower float64 `json:"state_tax_withheld_lower"`
+	SubstitutePaymentsInLieuOfDividendsOrInterest float64 `json:"substitute_payments_in_lieu_of_dividends_or_interest"`
+	TaxYear string `json:"tax_year"`
+	TransactionsReported string `json:"transactions_reported"`
+}
+
+type Credit1099Filer struct {
+	Address string `json:"address"`
+	Name string `json:"name"`
+	Tin string `json:"tin"`
+	Type string `json:"type"`
+}
+
+type Credit1099Payer struct {
+	Address string `json:"address"`
+	Name string `json:"name"`
+	TelephoneNumber string `json:"telephone_number"`
+	Tin string `json:"tin"`
+}
+
+type Credit1099Recipient struct {
+	AccountNumber string `json:"account_number"`
+	Address string `json:"address"`
+	FactaFilingRequirement string `json:"facta_filing_requirement"`
+	Name string `json:"name"`
+	SecondTinExists string `json:"second_tin_exists"`
+	Tin string `json:"tin"`
+}
+
+type CreditAccount struct {
+	CreditCard string `json:"credit_card"`
+	Paypal string `json:"paypal"`
+}
+
+type CreditAmountWithCurrency struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type CreditAuditCopyTokenCreateRequest struct {
+	ClientId string `json:"client_id"`
+	ReportTokens string `json:"report_tokens"`
+	Secret string `json:"secret"`
+}
+
+type CreditAuditCopyTokenCreateResponse struct {
+	AuditCopyToken string `json:"audit_copy_token"`
+	RequestId string `json:"request_id"`
+}
+
+type CreditAuditCopyTokenRemoveRequest struct {
+	AuditCopyToken string `json:"audit_copy_token"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type CreditAuditCopyTokenRemoveResponse struct {
+	Removed bool `json:"removed"`
+	RequestId string `json:"request_id"`
+}
+
+type CreditAuditCopyTokenUpdateRequest struct {
+	AuditCopyToken string `json:"audit_copy_token"`
+	ClientId string `json:"client_id"`
+	ReportTokens string `json:"report_tokens"`
+	Secret string `json:"secret"`
+}
+
+type CreditAuditCopyTokenUpdateResponse struct {
+	RequestId string `json:"request_id"`
+	Updated bool `json:"updated"`
+}
+
+type CreditBankEmployer struct {
+	Name string `json:"name"`
+}
+
+type CreditBankEmployment struct {
+	AccountId string `json:"account_id"`
+	BankEmploymentId string `json:"bank_employment_id"`
+	EarliestDepositDate string `json:"earliest_deposit_date"`
+	Employer string `json:"employer"`
+	LatestDepositDate string `json:"latest_deposit_date"`
+}
+
+type CreditBankEmploymentGetRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	UserToken string `json:"user_token"`
+}
+
+type CreditBankEmploymentGetResponse struct {
+	BankEmploymentReports string `json:"bank_employment_reports"`
+	RequestId string `json:"request_id"`
+}
+
+type CreditBankEmploymentItem struct {
+	BankEmploymentAccounts string `json:"bank_employment_accounts"`
+	BankEmployments string `json:"bank_employments"`
+	InstitutionId string `json:"institution_id"`
+	InstitutionName string `json:"institution_name"`
+	ItemId string `json:"item_id"`
+	LastUpdatedTime string `json:"last_updated_time"`
+}
+
+type CreditBankEmploymentReport struct {
+	BankEmploymentReportId string `json:"bank_employment_report_id"`
+	DaysRequested int `json:"days_requested"`
+	GeneratedTime string `json:"generated_time"`
+	Items string `json:"items"`
+	Warnings string `json:"warnings"`
+}
+
+type CreditBankEmploymentWarning struct {
+	Cause string `json:"cause"`
+	WarningCode string `json:"warning_code"`
+	WarningType string `json:"warning_type"`
+}
+
+type CreditBankIncome struct {
+	BankIncomeId string `json:"bank_income_id"`
+	BankIncomeSummary string `json:"bank_income_summary"`
+	DaysRequested int `json:"days_requested"`
+	GeneratedTime string `json:"generated_time"`
+	Items string `json:"items"`
+	Warnings string `json:"warnings"`
+}
+
+type CreditBankIncomeAccount struct {
+	AccountId string `json:"account_id"`
+	Mask string `json:"mask"`
+	Name string `json:"name"`
+	OfficialName string `json:"official_name"`
+	Owners string `json:"owners"`
+	Subtype string `json:"subtype"`
+	Type string `json:"type"`
+}
+
+type CreditBankIncomeCause struct {
+	DisplayMessage string `json:"display_message"`
+	ErrorCode string `json:"error_code"`
+	ErrorMessage string `json:"error_message"`
+	ErrorType string `json:"error_type"`
+	ItemId string `json:"item_id"`
+}
+
+type CreditBankIncomeGetRequest struct {
+	ClientId string `json:"client_id"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+	UserToken string `json:"user_token"`
+}
+
+type CreditBankIncomeGetRequestOptions struct {
+	Count int `json:"count"`
+}
+
+type CreditBankIncomeGetResponse struct {
+	BankIncome string `json:"bank_income"`
+	RequestId string `json:"request_id"`
+}
+
+type CreditBankIncomeHistoricalSummary struct {
+	EndDate string `json:"end_date"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	StartDate string `json:"start_date"`
+	TotalAmount float64 `json:"total_amount"`
+	TotalAmounts string `json:"total_amounts"`
+	Transactions string `json:"transactions"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type CreditBankIncomeItem struct {
+	BankIncomeAccounts string `json:"bank_income_accounts"`
+	BankIncomeSources string `json:"bank_income_sources"`
+	InstitutionId string `json:"institution_id"`
+	InstitutionName string `json:"institution_name"`
+	ItemId string `json:"item_id"`
+	LastUpdatedTime string `json:"last_updated_time"`
+}
+
+type CreditBankIncomePDFGetRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	UserToken string `json:"user_token"`
+}
+
+type CreditBankIncomeRefreshRequest struct {
+	ClientId string `json:"client_id"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+	UserToken string `json:"user_token"`
+}
+
+type CreditBankIncomeRefreshRequestOptions struct {
+	DaysRequested int `json:"days_requested"`
+}
+
+type CreditBankIncomeRefreshResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type CreditBankIncomeSource struct {
+	AccountId string `json:"account_id"`
+	EndDate string `json:"end_date"`
+	HistoricalSummary string `json:"historical_summary"`
+	IncomeCategory string `json:"income_category"`
+	IncomeDescription string `json:"income_description"`
+	IncomeSourceId string `json:"income_source_id"`
+	PayFrequency string `json:"pay_frequency"`
+	StartDate string `json:"start_date"`
+	TotalAmount float64 `json:"total_amount"`
+	TransactionCount int `json:"transaction_count"`
+}
+
+type CreditBankIncomeSummary struct {
+	EndDate string `json:"end_date"`
+	HistoricalSummary string `json:"historical_summary"`
+	IncomeCategoriesCount int `json:"income_categories_count"`
+	IncomeSourcesCount int `json:"income_sources_count"`
+	IncomeTransactionsCount int `json:"income_transactions_count"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	StartDate string `json:"start_date"`
+	TotalAmount float64 `json:"total_amount"`
+	TotalAmounts string `json:"total_amounts"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type CreditBankIncomeTransaction struct {
+	Amount float64 `json:"amount"`
+	CheckNumber string `json:"check_number"`
+	Date string `json:"date"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Name string `json:"name"`
+	OriginalDescription string `json:"original_description"`
+	Pending bool `json:"pending"`
+	TransactionId string `json:"transaction_id"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type CreditBankIncomeWarning struct {
+	Cause string `json:"cause"`
+	WarningCode string `json:"warning_code"`
+	WarningType string `json:"warning_type"`
+}
+
+type CreditBankIncomeWebhookUpdateRequest struct {
+	ClientId string `json:"client_id"`
+	EnableWebhooks bool `json:"enable_webhooks"`
+	Secret string `json:"secret"`
+	UserToken string `json:"user_token"`
+}
+
+type CreditBankIncomeWebhookUpdateResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type CreditBankStatementUploadAccountOwner struct {
+	Address string `json:"address"`
+	Name string `json:"name"`
+}
+
+type CreditBankStatementUploadAccountOwnerAddress struct {
+	City string `json:"city"`
+	Country string `json:"country"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+	Street string `json:"street"`
+}
+
+type CreditBankStatementUploadBankAccount struct {
+	AccountId string `json:"account_id"`
+	AccountNumber string `json:"account_number"`
+	AccountType string `json:"account_type"`
+	BankName string `json:"bank_name"`
+	Name string `json:"name"`
+	Owner string `json:"owner"`
+	Periods string `json:"periods"`
+}
+
+type CreditBankStatementUploadBankAccountPeriod struct {
+	EndDate string `json:"end_date"`
+	EndingBalance float64 `json:"ending_balance"`
+	StartDate string `json:"start_date"`
+	StartingBalance float64 `json:"starting_balance"`
+}
+
+type CreditBankStatementUploadItem struct {
+	BankStatements string `json:"bank_statements"`
+	ItemId string `json:"item_id"`
+	Status string `json:"status"`
+	UpdatedAt string `json:"updated_at"`
+}
+
+type CreditBankStatementUploadObject struct {
+	BankAccounts string `json:"bank_accounts"`
+	DocumentId string `json:"document_id"`
+	DocumentMetadata string `json:"document_metadata"`
+	Transactions string `json:"transactions"`
+}
+
+type CreditBankStatementUploadTransaction struct {
+	AccountId string `json:"account_id"`
+	Amount float64 `json:"amount"`
+	Date string `json:"date"`
+	OriginalDescription string `json:"original_description"`
+}
+
+type CreditBankStatementsUploadsGetRequest struct {
+	ClientId string `json:"client_id"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+	UserToken string `json:"user_token"`
+}
+
+type CreditBankStatementsUploadsGetRequestOptions struct {
+	ItemIds string `json:"item_ids"`
+}
+
+type CreditBankStatementsUploadsGetResponse struct {
+	Items string `json:"items"`
+	RequestId string `json:"request_id"`
+}
+
+type CreditCardLiability struct {
+	AccountId string `json:"account_id"`
+	Aprs string `json:"aprs"`
+	IsOverdue bool `json:"is_overdue"`
+	LastPaymentAmount float64 `json:"last_payment_amount"`
+	LastPaymentDate string `json:"last_payment_date"`
+	LastStatementBalance float64 `json:"last_statement_balance"`
+	LastStatementIssueDate string `json:"last_statement_issue_date"`
+	MinimumPaymentAmount float64 `json:"minimum_payment_amount"`
+	NextPaymentDueDate string `json:"next_payment_due_date"`
+}
+
+type CreditCategory struct {
+	Detailed string `json:"detailed"`
+	Primary string `json:"primary"`
+}
+
+type CreditDocumentMetadata struct {
+	DocumentType string `json:"document_type"`
+	DownloadUrl string `json:"download_url"`
+	ErrorMessage string `json:"error_message"`
+	Name string `json:"name"`
+	PageCount int `json:"page_count"`
+	Status string `json:"status"`
+}
+
+type CreditEmployerVerification struct {
+	Name string `json:"name"`
+}
+
+type CreditEmploymentGetRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	UserToken string `json:"user_token"`
+}
+
+type CreditEmploymentGetResponse struct {
+	Items string `json:"items"`
+	RequestId string `json:"request_id"`
+}
+
+type CreditEmploymentItem struct {
+	EmploymentReportToken string `json:"employment_report_token"`
+	Employments string `json:"employments"`
+	ItemId string `json:"item_id"`
+}
+
+type CreditEmploymentVerification struct {
+	AccountId string `json:"account_id"`
+	EmployeeType string `json:"employee_type"`
+	Employer string `json:"employer"`
+	EndDate string `json:"end_date"`
+	LastPaystubDate string `json:"last_paystub_date"`
+	PlatformIds string `json:"platform_ids"`
+	StartDate string `json:"start_date"`
+	Status string `json:"status"`
+	Title string `json:"title"`
+}
+
+type CreditFilter struct {
+	AccountSubtypes string `json:"account_subtypes"`
+}
+
+type CreditFreddieMacAsset struct {
+	ASSETDETAIL string `json:"ASSET_DETAIL"`
+	ASSETHOLDER string `json:"ASSET_HOLDER"`
+	ASSETHOLDINGS string `json:"ASSET_HOLDINGS"`
+	ASSETOWNERS string `json:"ASSET_OWNERS"`
+	ASSETTRANSACTIONS string `json:"ASSET_TRANSACTIONS"`
+	VALIDATIONSOURCES string `json:"VALIDATION_SOURCES"`
+}
+
+type CreditFreddieMacAssetTransaction struct {
+	ASSETTRANSACTIONDESCRIPTION string `json:"ASSET_TRANSACTION_DESCRIPTION"`
+	ASSETTRANSACTIONDETAIL string `json:"ASSET_TRANSACTION_DETAIL"`
+}
+
+type CreditFreddieMacAssetTransactions struct {
+	ASSETTRANSACTION string `json:"ASSET_TRANSACTION"`
+}
+
+type CreditFreddieMacAssets struct {
+	ASSET string `json:"ASSET"`
+}
+
+type CreditFreddieMacIndividualName struct {
+	FirstName string `json:"FirstName"`
+	LastName string `json:"LastName"`
+	MiddleName string `json:"MiddleName"`
+}
+
+type CreditFreddieMacLoan struct {
+	LOANIDENTIFIERS string `json:"LOAN_IDENTIFIERS"`
+	LoanRoleType string `json:"LoanRoleType"`
+}
+
+type CreditFreddieMacLoanIdentifiers struct {
+	LOANIDENTIFIER string `json:"LOAN_IDENTIFIER"`
+}
+
+type CreditFreddieMacLoans struct {
+	LOAN string `json:"LOAN"`
+}
+
+type CreditFreddieMacParties struct {
+	PARTY string `json:"PARTY"`
+}
+
+type CreditFreddieMacParty struct {
+	INDIVIDUAL string `json:"INDIVIDUAL"`
+	ROLES string `json:"ROLES"`
+	TAXPAYERIDENTIFIERS string `json:"TAXPAYER_IDENTIFIERS"`
+}
+
+type CreditFreddieMacPartyIndividual struct {
+	NAME string `json:"NAME"`
+}
+
+type CreditFreddieMacReportingInformation struct {
+	ReportDateTime string `json:"ReportDateTime"`
+	ReportIdentifierType string `json:"ReportIdentifierType"`
+	ReportingInformationIdentifier string `json:"ReportingInformationIdentifier"`
+	ReportingInformationParentIdentifier string `json:"ReportingInformationParentIdentifier"`
+}
+
+type CreditFreddieMacReportsGetRequest struct {
+	AuditCopyToken string `json:"audit_copy_token"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type CreditFreddieMacReportsGetResponse struct {
+	DEAL string `json:"DEAL"`
+	SchemaVersion float64 `json:"SchemaVersion"`
+	RequestId string `json:"request_id"`
+}
+
+type CreditFreddieMacService struct {
+	STATUSES string `json:"STATUSES"`
+	VERIFICATIONOFASSET string `json:"VERIFICATION_OF_ASSET"`
+}
+
+type CreditFreddieMacServices struct {
+	SERVICE string `json:"SERVICE"`
+}
+
+type CreditFreddieMacVerificationOfAsset struct {
+	REPORTINGINFORMATION string `json:"REPORTING_INFORMATION"`
+	SERVICEPRODUCTFULFILLMENT string `json:"SERVICE_PRODUCT_FULFILLMENT"`
+	VERIFICATIONOFASSETRESPONSE string `json:"VERIFICATION_OF_ASSET_RESPONSE"`
+}
+
+type CreditFreddieMacVerificationOfAssetResponse struct {
+	ASSETS string `json:"ASSETS"`
+}
+
+type CreditFreddieMacVerificationOfAssetsDeal struct {
+	LOANS string `json:"LOANS"`
+	PARTIES string `json:"PARTIES"`
+	SERVICES string `json:"SERVICES"`
+}
+
+type CreditPayStub struct {
+	Deductions string `json:"deductions"`
+	DocumentId string `json:"document_id"`
+	DocumentMetadata string `json:"document_metadata"`
+	Earnings string `json:"earnings"`
+	Employee string `json:"employee"`
+	Employer string `json:"employer"`
+	NetPay string `json:"net_pay"`
+	PayPeriodDetails string `json:"pay_period_details"`
+}
+
+type CreditPayStubAddress struct {
+	City string `json:"city"`
+	Country string `json:"country"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+	Street string `json:"street"`
+}
+
+type CreditPayStubDeductions struct {
+	Breakdown string `json:"breakdown"`
+	Total string `json:"total"`
+}
+
+type CreditPayStubEarnings struct {
+	Breakdown string `json:"breakdown"`
+	Total string `json:"total"`
+}
+
+type CreditPayStubEmployee struct {
+	Address string `json:"address"`
+	MaritalStatus string `json:"marital_status"`
+	Name string `json:"name"`
+	TaxpayerId string `json:"taxpayer_id"`
+}
+
+type CreditPayStubEmployer struct {
+	Address string `json:"address"`
+	Name string `json:"name"`
+}
+
+type CreditPayStubNetPay struct {
+	CurrentAmount float64 `json:"current_amount"`
+	Description string `json:"description"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+	YtdAmount float64 `json:"ytd_amount"`
+}
+
+type CreditPayrollIncomeGetRequest struct {
+	ClientId string `json:"client_id"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+	UserToken string `json:"user_token"`
+}
+
+type CreditPayrollIncomeGetRequestOptions struct {
+	ItemIds string `json:"item_ids"`
+}
+
+type CreditPayrollIncomeGetResponse struct {
+	Error string `json:"error"`
+	Items string `json:"items"`
+	RequestId string `json:"request_id"`
+}
+
+type CreditPayrollIncomeParsingConfigUpdateRequest struct {
+	ClientId string `json:"client_id"`
+	ItemId string `json:"item_id"`
+	ParsingConfig string `json:"parsing_config"`
+	Secret string `json:"secret"`
+	UserToken string `json:"user_token"`
+}
+
+type CreditPayrollIncomeParsingConfigUpdateResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type CreditPayrollIncomePrecheckRequest struct {
+	AccessTokens string `json:"access_tokens"`
+	ClientId string `json:"client_id"`
+	Employer string `json:"employer"`
+	PayrollInstitution string `json:"payroll_institution"`
+	Secret string `json:"secret"`
+	UsMilitaryInfo string `json:"us_military_info"`
+	UserToken string `json:"user_token"`
+}
+
+type CreditPayrollIncomePrecheckResponse struct {
+	Confidence string `json:"confidence"`
+	RequestId string `json:"request_id"`
+}
+
+type CreditPayrollIncomeRefreshRequest struct {
+	ClientId string `json:"client_id"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+	UserToken string `json:"user_token"`
+}
+
+type CreditPayrollIncomeRefreshRequestOptions struct {
+	ItemIds string `json:"item_ids"`
+	Webhook string `json:"webhook"`
+}
+
+type CreditPayrollIncomeRefreshResponse struct {
+	RequestId string `json:"request_id"`
+	VerificationRefreshStatus string `json:"verification_refresh_status"`
+}
+
+type CreditPayrollIncomeRiskSignalsGetRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	UserToken string `json:"user_token"`
+}
+
+type CreditPayrollIncomeRiskSignalsGetResponse struct {
+	Error string `json:"error"`
+	Items string `json:"items"`
+	RequestId string `json:"request_id"`
+}
+
+type CreditPlatformIds struct {
+	EmployeeId string `json:"employee_id"`
+	PayrollId string `json:"payroll_id"`
+	PositionId string `json:"position_id"`
+}
+
+type CreditRelayCreateRequest struct {
+	ClientId string `json:"client_id"`
+	ReportTokens string `json:"report_tokens"`
+	SecondaryClientId string `json:"secondary_client_id"`
+	Secret string `json:"secret"`
+	Webhook string `json:"webhook"`
+}
+
+type CreditRelayCreateResponse struct {
+	RelayToken string `json:"relay_token"`
+	RequestId string `json:"request_id"`
+}
+
+type CreditRelayGetRequest struct {
+	ClientId string `json:"client_id"`
+	IncludeInsights bool `json:"include_insights"`
+	RelayToken string `json:"relay_token"`
+	ReportType string `json:"report_type"`
+	Secret string `json:"secret"`
+}
+
+type CreditRelayPDFGetRequest struct {
+	ClientId string `json:"client_id"`
+	RelayToken string `json:"relay_token"`
+	ReportType string `json:"report_type"`
+	Secret string `json:"secret"`
+}
+
+type CreditRelayRefreshRequest struct {
+	ClientId string `json:"client_id"`
+	RelayToken string `json:"relay_token"`
+	ReportType string `json:"report_type"`
+	Secret string `json:"secret"`
+	Webhook string `json:"webhook"`
+}
+
+type CreditRelayRefreshResponse struct {
+	AssetReportId string `json:"asset_report_id"`
+	RelayToken string `json:"relay_token"`
+	RequestId string `json:"request_id"`
+}
+
+type CreditRelayRemoveRequest struct {
+	ClientId string `json:"client_id"`
+	RelayToken string `json:"relay_token"`
+	Secret string `json:"secret"`
+}
+
+type CreditRelayRemoveResponse struct {
+	Removed bool `json:"removed"`
+	RequestId string `json:"request_id"`
+}
+
+type CreditSession struct {
+	Errors string `json:"errors"`
+	LinkSessionId string `json:"link_session_id"`
+	Results string `json:"results"`
+	SessionStartTime string `json:"session_start_time"`
+}
+
+type CreditSessionBankEmploymentResult struct {
+	InstitutionId string `json:"institution_id"`
+	ItemId string `json:"item_id"`
+	Status string `json:"status"`
+}
+
+type CreditSessionBankIncomeResult struct {
+	InstitutionId string `json:"institution_id"`
+	ItemId string `json:"item_id"`
+	Status string `json:"status"`
+}
+
+type CreditSessionDocumentIncomeResult struct {
+	Num1099sUploaded int `json:"num_1099s_uploaded"`
+	NumBankStatementsUploaded int `json:"num_bank_statements_uploaded"`
+	NumPaystubsUploaded int `json:"num_paystubs_uploaded"`
+	NumW2sUploaded int `json:"num_w2s_uploaded"`
+}
+
+type CreditSessionError struct {
+	DisplayMessage string `json:"display_message"`
+	ErrorCode string `json:"error_code"`
+	ErrorMessage string `json:"error_message"`
+	ErrorType string `json:"error_type"`
+}
+
+type CreditSessionItemAddResult struct {
+	InstitutionId string `json:"institution_id"`
+	ItemId string `json:"item_id"`
+	PublicToken string `json:"public_token"`
+}
+
+type CreditSessionPayrollIncomeResult struct {
+	InstitutionId string `json:"institution_id"`
+	InstitutionName string `json:"institution_name"`
+	NumPaystubsRetrieved int `json:"num_paystubs_retrieved"`
+	NumW2sRetrieved int `json:"num_w2s_retrieved"`
+}
+
+type CreditSessionResults struct {
+	BankEmploymentResults string `json:"bank_employment_results"`
+	BankIncomeResults string `json:"bank_income_results"`
+	DocumentIncomeResults string `json:"document_income_results"`
+	ItemAddResults string `json:"item_add_results"`
+	PayrollIncomeResults string `json:"payroll_income_results"`
+}
+
+type CreditSessionsGetRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	UserToken string `json:"user_token"`
+}
+
+type CreditSessionsGetResponse struct {
+	RequestId string `json:"request_id"`
+	Sessions string `json:"sessions"`
+}
+
+type CreditW2 struct {
+	AllocatedTips string `json:"allocated_tips"`
+	Box12 string `json:"box_12"`
+	Box9 string `json:"box_9"`
+	DependentCareBenefits string `json:"dependent_care_benefits"`
+	DocumentId string `json:"document_id"`
+	DocumentMetadata string `json:"document_metadata"`
+	Employee string `json:"employee"`
+	Employer string `json:"employer"`
+	EmployerIdNumber string `json:"employer_id_number"`
+	FederalIncomeTaxWithheld string `json:"federal_income_tax_withheld"`
+	MedicareTaxWithheld string `json:"medicare_tax_withheld"`
+	MedicareWagesAndTips string `json:"medicare_wages_and_tips"`
+	NonqualifiedPlans string `json:"nonqualified_plans"`
+	Other string `json:"other"`
+	RetirementPlan string `json:"retirement_plan"`
+	SocialSecurityTaxWithheld string `json:"social_security_tax_withheld"`
+	SocialSecurityTips string `json:"social_security_tips"`
+	SocialSecurityWages string `json:"social_security_wages"`
+	StateAndLocalWages string `json:"state_and_local_wages"`
+	StatutoryEmployee string `json:"statutory_employee"`
+	TaxYear string `json:"tax_year"`
+	ThirdPartySickPay string `json:"third_party_sick_pay"`
+	WagesTipsOtherComp string `json:"wages_tips_other_comp"`
+}
+
+type CustomSandboxTransaction struct {
+	Amount float64 `json:"amount"`
+	DatePosted string `json:"date_posted"`
+	DateTransacted string `json:"date_transacted"`
+	Description string `json:"description"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+}
+
+type CustomerInitiatedReturnRisk struct {
+	RiskTier int `json:"risk_tier"`
+	Score int `json:"score"`
+}
+
+type DashboardUser struct {
+	CreatedAt string `json:"created_at"`
+	EmailAddress string `json:"email_address"`
+	Id string `json:"id"`
+	Status string `json:"status"`
+}
+
+type DashboardUserGetRequest struct {
+	ClientId string `json:"client_id"`
+	DashboardUserId string `json:"dashboard_user_id"`
+	Secret string `json:"secret"`
+}
+
+type DashboardUserGetResponse struct {
+	CreatedAt string `json:"created_at"`
+	EmailAddress string `json:"email_address"`
+	Id string `json:"id"`
+	RequestId string `json:"request_id"`
+	Status string `json:"status"`
+}
+
+type DashboardUserListRequest struct {
+	ClientId string `json:"client_id"`
+	Cursor string `json:"cursor"`
+	Secret string `json:"secret"`
+}
+
+type DashboardUserListResponse struct {
+	DashboardUsers string `json:"dashboard_users"`
+	NextCursor string `json:"next_cursor"`
+	RequestId string `json:"request_id"`
+}
+
+type DateRange struct {
+	Beginning string `json:"beginning"`
+	Ending string `json:"ending"`
+}
+
+type Deductions struct {
+	Breakdown string `json:"breakdown"`
+	Subtotals string `json:"subtotals"`
+	Total string `json:"total"`
+	Totals string `json:"totals"`
+}
+
+type DeductionsBreakdown struct {
+	CurrentAmount float64 `json:"current_amount"`
+	Description string `json:"description"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+	YtdAmount float64 `json:"ytd_amount"`
+}
+
+type DeductionsTotal struct {
+	CurrentAmount float64 `json:"current_amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+	YtdAmount float64 `json:"ytd_amount"`
+}
+
+type DefaultUpdateWebhook struct {
+	Environment string `json:"environment"`
+	Error string `json:"error"`
+	ItemId string `json:"item_id"`
+	NewTransactions float64 `json:"new_transactions"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type DepositoryAccount struct {
+	CashManagement string `json:"cash_management"`
+	Cd string `json:"cd"`
+	Checking string `json:"checking"`
+	Ebt string `json:"ebt"`
+	Hsa string `json:"hsa"`
+	MoneyMarket string `json:"money_market"`
+	Paypal string `json:"paypal"`
+	Prepaid string `json:"prepaid"`
+	Savings string `json:"savings"`
+}
+
+type DepositoryFilter struct {
+	AccountSubtypes string `json:"account_subtypes"`
+}
+
+type DetailedOriginator struct {
+	ClientId string `json:"client_id"`
+	CompanyName string `json:"company_name"`
+	OutstandingRequirements string `json:"outstanding_requirements"`
+	TransferDiligenceStatus string `json:"transfer_diligence_status"`
+}
+
+type DetectedAccount struct {
+	AccountSubtype string `json:"account_subtype"`
+	AccountType string `json:"account_type"`
+	NewestTransactionAmount float64 `json:"newest_transaction_amount"`
+	NewestTransactionDate string `json:"newest_transaction_date"`
+	OldestTransactionDate string `json:"oldest_transaction_date"`
+	TotalInflows float64 `json:"total_inflows"`
+	TotalOutflows float64 `json:"total_outflows"`
+	TransactionCount int `json:"transaction_count"`
+}
+
+type DeviceId struct {
+	Id string `json:"id"`
+	Type int `json:"type"`
+}
+
+type DistributionBreakdown struct {
+	AccountName string `json:"account_name"`
+	BankName string `json:"bank_name"`
+	CurrentAmount float64 `json:"current_amount"`
+	CurrentPay string `json:"current_pay"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Mask string `json:"mask"`
+	Type string `json:"type"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type DocumentAnalysis struct {
+	AamvaVerification string `json:"aamva_verification"`
+	Authenticity string `json:"authenticity"`
+	ExtractedData string `json:"extracted_data"`
+	FraudAnalysisDetails string `json:"fraud_analysis_details"`
+	HumanReview string `json:"human_review"`
+	ImageQuality string `json:"image_quality"`
+	ImageQualityDetails string `json:"image_quality_details"`
+}
+
+type DocumentMetadata struct {
+	DocId string `json:"doc_id"`
+	DocType string `json:"doc_type"`
+	Name string `json:"name"`
+	Status string `json:"status"`
+}
+
+type DocumentRiskSignal struct {
+	ActualValue string `json:"actual_value"`
+	ExpectedValue string `json:"expected_value"`
+	Field string `json:"field"`
+	HasFraudRisk bool `json:"has_fraud_risk"`
+	InstitutionMetadata string `json:"institution_metadata"`
+	PageNumber int `json:"page_number"`
+	SignalDescription string `json:"signal_description"`
+	Type string `json:"type"`
+}
+
+type DocumentRiskSignalInstitutionMetadata struct {
+	ItemId string `json:"item_id"`
+}
+
+type DocumentRiskSignalsObject struct {
+	AccountId string `json:"account_id"`
+	MultiDocumentRiskSignals string `json:"multi_document_risk_signals"`
+	SingleDocumentRiskSignals string `json:"single_document_risk_signals"`
+}
+
+type DocumentRiskSummary struct {
+	RiskScore float64 `json:"risk_score"`
+}
+
+type DocumentaryVerification struct {
+	Documents string `json:"documents"`
+	Status string `json:"status"`
+}
+
+type DocumentaryVerificationDocument struct {
+	Analysis string `json:"analysis"`
+	Attempt int `json:"attempt"`
+	ExtractedData string `json:"extracted_data"`
+	Images string `json:"images"`
+	RedactedAt string `json:"redacted_at"`
+	Status string `json:"status"`
+}
+
+type Earnings struct {
+	Breakdown string `json:"breakdown"`
+	Subtotals string `json:"subtotals"`
+	Total string `json:"total"`
+	Totals string `json:"totals"`
+}
+
+type EarningsBreakdown struct {
+	CanonicalDescription string `json:"canonical_description"`
+	CurrentAmount float64 `json:"current_amount"`
+	Description string `json:"description"`
+	Hours float64 `json:"hours"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Rate float64 `json:"rate"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+	YtdAmount float64 `json:"ytd_amount"`
+}
+
+type EarningsTotal struct {
+	CurrentAmount float64 `json:"current_amount"`
+	CurrentPay string `json:"current_pay"`
+	Hours float64 `json:"hours"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+	YtdAmount float64 `json:"ytd_amount"`
+	YtdPay string `json:"ytd_pay"`
+}
+
+type Email struct {
+	Data string `json:"data"`
+	Primary bool `json:"primary"`
+	Type string `json:"type"`
+}
+
+type EmailAddressMatchScore struct {
+	Score int `json:"score"`
+}
+
+type Employee struct {
+	Address string `json:"address"`
+	MaritalStatus string `json:"marital_status"`
+	Name string `json:"name"`
+	TaxpayerId string `json:"taxpayer_id"`
+}
+
+type EmployeeIncomeSummaryFieldString struct {
+	Value string `json:"value"`
+	VerificationStatus string `json:"verification_status"`
+}
+
+type Employer struct {
+	Address string `json:"address"`
+	ConfidenceScore float64 `json:"confidence_score"`
+	EmployerId string `json:"employer_id"`
+	Name string `json:"name"`
+}
+
+type EmployerIncomeSummaryFieldString struct {
+	Value string `json:"value"`
+	VerificationStatus string `json:"verification_status"`
+}
+
+type EmployerVerification struct {
+	Name string `json:"name"`
+}
+
+type EmployersSearchRequest struct {
+	ClientId string `json:"client_id"`
+	Products string `json:"products"`
+	Query string `json:"query"`
+	Secret string `json:"secret"`
+}
+
+type EmployersSearchResponse struct {
+	Employers string `json:"employers"`
+	RequestId string `json:"request_id"`
+}
+
+type EmploymentDetails struct {
+	AnnualSalary string `json:"annual_salary"`
+	HireDate string `json:"hire_date"`
+}
+
+type EmploymentVerification struct {
+	Employer string `json:"employer"`
+	EndDate string `json:"end_date"`
+	PlatformIds string `json:"platform_ids"`
+	StartDate string `json:"start_date"`
+	Status string `json:"status"`
+	Title string `json:"title"`
+}
+
+type EmploymentVerificationGetRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type EmploymentVerificationGetResponse struct {
+	Employments string `json:"employments"`
+	RequestId string `json:"request_id"`
+}
+
+type Enhancements struct {
+	Category string `json:"category"`
+	CategoryId string `json:"category_id"`
+	CheckNumber string `json:"check_number"`
+	Counterparties string `json:"counterparties"`
+	Location string `json:"location"`
+	LogoUrl string `json:"logo_url"`
+	MerchantName string `json:"merchant_name"`
+	PaymentChannel string `json:"payment_channel"`
+	PersonalFinanceCategory string `json:"personal_finance_category"`
+	PersonalFinanceCategoryIconUrl string `json:"personal_finance_category_icon_url"`
+	Website string `json:"website"`
+}
+
+type Enrichments struct {
+	CheckNumber string `json:"check_number"`
+	Counterparties string `json:"counterparties"`
+	EntityId string `json:"entity_id"`
+	LegacyCategory string `json:"legacy_category"`
+	LegacyCategoryId string `json:"legacy_category_id"`
+	Location string `json:"location"`
+	LogoUrl string `json:"logo_url"`
+	MerchantName string `json:"merchant_name"`
+	PaymentChannel string `json:"payment_channel"`
+	PersonalFinanceCategory string `json:"personal_finance_category"`
+	PersonalFinanceCategoryIconUrl string `json:"personal_finance_category_icon_url"`
+	PhoneNumber string `json:"phone_number"`
+	Recurrence string `json:"recurrence"`
+	Website string `json:"website"`
+}
+
+type EntityDocument struct {
+	Number string `json:"number"`
+	Type string `json:"type"`
+}
+
+type EntityScreeningHitAnalysis struct {
+	Documents string `json:"documents"`
+	EmailAddresses string `json:"email_addresses"`
+	Locations string `json:"locations"`
+	Names string `json:"names"`
+	PhoneNumbers string `json:"phone_numbers"`
+	SearchTermsVersion int `json:"search_terms_version"`
+	Urls string `json:"urls"`
+}
+
+type EntityScreeningHitData struct {
+	Documents string `json:"documents"`
+	EmailAddresses string `json:"email_addresses"`
+	Locations string `json:"locations"`
+	Names string `json:"names"`
+	PhoneNumbers string `json:"phone_numbers"`
+	Urls string `json:"urls"`
+}
+
+type EntityScreeningHitDocumentsItems struct {
+	Analysis string `json:"analysis"`
+	Data string `json:"data"`
+}
+
+type EntityScreeningHitEmails struct {
+	EmailAddress string `json:"email_address"`
+}
+
+type EntityScreeningHitEmailsItems struct {
+	Analysis string `json:"analysis"`
+	Data string `json:"data"`
+}
+
+type EntityScreeningHitNames struct {
+	Full string `json:"full"`
+	IsPrimary bool `json:"is_primary"`
+	WeakAliasDetermination string `json:"weak_alias_determination"`
+}
+
+type EntityScreeningHitNamesItems struct {
+	Analysis string `json:"analysis"`
+	Data string `json:"data"`
+}
+
+type EntityScreeningHitPhoneNumbers struct {
+	PhoneNumber string `json:"phone_number"`
+	Type string `json:"type"`
+}
+
+type EntityScreeningHitUrls struct {
+	Url string `json:"url"`
+}
+
+type EntityScreeningHitUrlsItems struct {
+	Analysis string `json:"analysis"`
+	Data string `json:"data"`
+}
+
+type EntityScreeningHitsPhoneNumberItems struct {
+	Analysis string `json:"analysis"`
+	Data string `json:"data"`
+}
+
+type EntityScreeningStatusUpdatedWebhook struct {
+	EntityScreeningId string `json:"entity_screening_id"`
+	Environment string `json:"environment"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type EntityWatchlistProgram struct {
+	AuditTrail string `json:"audit_trail"`
+	CreatedAt string `json:"created_at"`
+	Id string `json:"id"`
+	IsArchived bool `json:"is_archived"`
+	IsRescanningEnabled bool `json:"is_rescanning_enabled"`
+	ListsEnabled string `json:"lists_enabled"`
+	Name string `json:"name"`
+	NameSensitivity string `json:"name_sensitivity"`
+}
+
+type EntityWatchlistScreening struct {
+	Assignee string `json:"assignee"`
+	AuditTrail string `json:"audit_trail"`
+	ClientUserId string `json:"client_user_id"`
+	Id string `json:"id"`
+	SearchTerms string `json:"search_terms"`
+	Status string `json:"status"`
+}
+
+type EntityWatchlistScreeningHit struct {
+	Analysis string `json:"analysis"`
+	Data string `json:"data"`
+	FirstActive string `json:"first_active"`
+	HistoricalSince string `json:"historical_since"`
+	Id string `json:"id"`
+	InactiveSince string `json:"inactive_since"`
+	ListCode string `json:"list_code"`
+	PlaidUid string `json:"plaid_uid"`
+	ReviewStatus string `json:"review_status"`
+	SourceUid string `json:"source_uid"`
+}
+
+type EntityWatchlistScreeningReview struct {
+	AuditTrail string `json:"audit_trail"`
+	Comment string `json:"comment"`
+	ConfirmedHits string `json:"confirmed_hits"`
+	DismissedHits string `json:"dismissed_hits"`
+	Id string `json:"id"`
+}
+
+type EntityWatchlistScreeningSearchTerms struct {
+	Country string `json:"country"`
+	DocumentNumber string `json:"document_number"`
+	EmailAddress string `json:"email_address"`
+	EntityWatchlistProgramId string `json:"entity_watchlist_program_id"`
+	LegalName string `json:"legal_name"`
+	PhoneNumber string `json:"phone_number"`
+	Url string `json:"url"`
+	Version int `json:"version"`
+}
+
+type EntityWatchlistSearchTerms struct {
+	Country string `json:"country"`
+	DocumentNumber string `json:"document_number"`
+	EmailAddress string `json:"email_address"`
+	EntityWatchlistProgramId string `json:"entity_watchlist_program_id"`
+	LegalName string `json:"legal_name"`
+	PhoneNumber string `json:"phone_number"`
+	Url string `json:"url"`
+}
+
+type EwaScore struct {
+	HighestAmount float64 `json:"highest_amount"`
+	LowestAmount float64 `json:"lowest_amount"`
+	Score int `json:"score"`
+}
+
+type ExpenditureInsights struct {
+	CashFlow string `json:"cash_flow"`
+	EssentialExpenditure string `json:"essential_expenditure"`
+	NonEssentialExpenditure string `json:"non_essential_expenditure"`
+	Other string `json:"other"`
+	OutlierTransactions string `json:"outlier_transactions"`
+	TotalExpenditure string `json:"total_expenditure"`
+	TransfersOut string `json:"transfers_out"`
+}
+
+type ExpenditureSummary struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	MonthlyAverage string `json:"monthly_average"`
+	PercentageOfIncome float64 `json:"percentage_of_income"`
+	TopCategories string `json:"top_categories"`
+	TransactionsCount int `json:"transactions_count"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type ExtendedRecipientMetadata struct {
+	Category string `json:"category"`
+	ClientName string `json:"client_name"`
+	ConnectionCount int `json:"connection_count"`
+	JoinedDate string `json:"joined_date"`
+	LogoUri string `json:"logo_uri"`
+	RecipientId string `json:"recipient_id"`
+	ThirdPartyLegalName string `json:"third_party_legal_name"`
+}
+
+type ExternalPaymentInitiationConsentOptions struct {
+	Bacs string `json:"bacs"`
+	Iban string `json:"iban"`
+	RequestRefundDetails bool `json:"request_refund_details"`
+}
+
+type ExternalPaymentOptions struct {
+	Bacs string `json:"bacs"`
+	Iban string `json:"iban"`
+	RequestRefundDetails bool `json:"request_refund_details"`
+	Scheme string `json:"scheme"`
+}
+
+type ExternalPaymentRefundDetails struct {
+	Bacs string `json:"bacs"`
+	Iban string `json:"iban"`
+	Name string `json:"name"`
+}
+
+type ExternalPaymentScheduleBase struct {
+	AdjustedStartDate string `json:"adjusted_start_date"`
+	EndDate string `json:"end_date"`
+	Interval string `json:"interval"`
+	IntervalExecutionDay int `json:"interval_execution_day"`
+	StartDate string `json:"start_date"`
+}
+
+type ExternalPaymentScheduleGet struct {
+	AdjustedStartDate string `json:"adjusted_start_date"`
+	EndDate string `json:"end_date"`
+	Interval string `json:"interval"`
+	IntervalExecutionDay int `json:"interval_execution_day"`
+	StartDate string `json:"start_date"`
+}
+
+type ExternalPaymentScheduleRequest struct {
+	AdjustedStartDate string `json:"adjusted_start_date"`
+	EndDate string `json:"end_date"`
+	Interval string `json:"interval"`
+	IntervalExecutionDay int `json:"interval_execution_day"`
+	StartDate string `json:"start_date"`
+}
+
+type FDXFiAttribute struct {
+	Name string `json:"name"`
+	Value string `json:"value"`
+}
+
+type FDXHateoasLink struct {
+	Action string `json:"action"`
+	Href string `json:"href"`
+	Rel string `json:"rel"`
+	Types string `json:"types"`
+}
+
+type FDXInitiatorFiAttribute struct {
+	Name string `json:"name"`
+	Value string `json:"value"`
+}
+
+type FDXLifecycleEvent struct {
+	Initiator string `json:"initiator"`
+	OtherReason string `json:"otherReason"`
+	Reason string `json:"reason"`
+	Status string `json:"status"`
+	UpdatedTime string `json:"updatedTime"`
+}
+
+type FDXNotification struct {
+	Category string `json:"category"`
+	NotificationId string `json:"notificationId"`
+	NotificationPayload string `json:"notificationPayload"`
+	Priority string `json:"priority"`
+	Publisher string `json:"publisher"`
+	SentOn string `json:"sentOn"`
+	Severity string `json:"severity"`
+	Subscriber string `json:"subscriber"`
+	Type string `json:"type"`
+	Url string `json:"url"`
+}
+
+type FDXNotificationPayload struct {
+	Event string `json:"event"`
+	Id string `json:"id"`
+	IdType string `json:"idType"`
+}
+
+type FDXParty struct {
+	HomeUri string `json:"homeUri"`
+	LogoUri string `json:"logoUri"`
+	Name string `json:"name"`
+	RegisteredEntityId string `json:"registeredEntityId"`
+	RegisteredEntityName string `json:"registeredEntityName"`
+	Registry string `json:"registry"`
+	Type string `json:"type"`
+}
+
+type FDXRecipientMetadata struct {
+	ClientName string `json:"client_name"`
+	LogoUri string `json:"logo_uri"`
+	RecipientId string `json:"recipient_id"`
+	ThirdPartyLegalName string `json:"third_party_legal_name"`
+}
+
+type FallbackAuthMicrodepositAutoVerifiedWebhook struct {
+	AccountId string `json:"account_id"`
+	Environment string `json:"environment"`
+	Error string `json:"error"`
+	ItemId string `json:"item_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type FallbackAuthMicrodepositVerificationExpiredWebhook struct {
+	AccountId string `json:"account_id"`
+	Environment string `json:"environment"`
+	Error string `json:"error"`
+	ItemId string `json:"item_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type FinancialInstitutionInsights struct {
+	DetectedAccounts string `json:"detected_accounts"`
+	EntityId string `json:"entity_id"`
+	Name string `json:"name"`
+	Website string `json:"website"`
+}
+
+type FixedIncome struct {
+	FaceValue float64 `json:"face_value"`
+	IssueDate string `json:"issue_date"`
+	MaturityDate string `json:"maturity_date"`
+	YieldRate string `json:"yield_rate"`
+}
+
+type ForecastedMonthlyIncome struct {
+	BaselineAmount float64 `json:"baseline_amount"`
+	CurrentAmount float64 `json:"current_amount"`
+}
+
+type ForwardedJSONResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type FraudAmount struct {
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Value float64 `json:"value"`
+}
+
+type FraudAnalysisDetails struct {
+	DetailCheck string `json:"detail_check"`
+	ImageCompositionCheck string `json:"image_composition_check"`
+	IntegrityCheck string `json:"integrity_check"`
+	IssueDateCheck string `json:"issue_date_check"`
+	PortraitDetailsCheck string `json:"portrait_details_check"`
+	PortraitPresenceCheck string `json:"portrait_presence_check"`
+	TypeSupported string `json:"type_supported"`
+}
+
+type FraudAttributes struct {
+}
+
+type GamblingIndicators struct {
+	Amount float64 `json:"amount"`
+	DaysSinceLastOccurrence int `json:"days_since_last_occurrence"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	MonthlyAverage string `json:"monthly_average"`
+	MonthlySummaries string `json:"monthly_summaries"`
+	PercentageOfIncome float64 `json:"percentage_of_income"`
+	TopMerchants string `json:"top_merchants"`
+	TransactionsCount int `json:"transactions_count"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type GenericScreeningHitLocationItems struct {
+	Analysis string `json:"analysis"`
+	Data string `json:"data"`
+}
+
+type GetRecipientResponse struct {
+	ClientName string `json:"client_name"`
+	LogoUri string `json:"logo_uri"`
+	RecipientId string `json:"recipient_id"`
+	ThirdPartyLegalName string `json:"third_party_legal_name"`
+}
+
+type GetRecipientsResponse struct {
+	Recipients string `json:"recipients"`
+}
+
+type HealthIncident struct {
+	EndDate string `json:"end_date"`
+	IncidentUpdates string `json:"incident_updates"`
+	StartDate string `json:"start_date"`
+	Title string `json:"title"`
+}
+
+type HistoricalAnnualIncome struct {
+	BaselineAmount float64 `json:"baseline_amount"`
+	CurrentAmount float64 `json:"current_amount"`
+}
+
+type HistoricalBalance struct {
+	Current float64 `json:"current"`
+	Date string `json:"date"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type HistoricalUpdateWebhook struct {
+	Environment string `json:"environment"`
+	Error string `json:"error"`
+	ItemId string `json:"item_id"`
+	NewTransactions float64 `json:"new_transactions"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type Holding struct {
+	AccountId string `json:"account_id"`
+	CostBasis float64 `json:"cost_basis"`
+	InstitutionPrice float64 `json:"institution_price"`
+	InstitutionPriceAsOf string `json:"institution_price_as_of"`
+	InstitutionPriceDatetime string `json:"institution_price_datetime"`
+	InstitutionValue float64 `json:"institution_value"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Quantity float64 `json:"quantity"`
+	SecurityId string `json:"security_id"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+	VestedQuantity float64 `json:"vested_quantity"`
+	VestedValue float64 `json:"vested_value"`
+}
+
+type HoldingsDefaultUpdateWebhook struct {
+	Environment string `json:"environment"`
+	Error string `json:"error"`
+	ItemId string `json:"item_id"`
+	NewHoldings float64 `json:"new_holdings"`
+	UpdatedHoldings float64 `json:"updated_holdings"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type HoldingsOverride struct {
+	CostBasis float64 `json:"cost_basis"`
+	Currency string `json:"currency"`
+	InstitutionPrice float64 `json:"institution_price"`
+	InstitutionPriceAsOf string `json:"institution_price_as_of"`
+	Quantity float64 `json:"quantity"`
+	Security string `json:"security"`
+}
+
+type HostedMMDVerificationWebhook struct {
+	AccountId string `json:"account_id"`
+	Environment string `json:"environment"`
+	ItemId string `json:"item_id"`
+	Status string `json:"status"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type HumanReview struct {
+	Status string `json:"status"`
+}
+
+type IDVProtectEvent struct {
+	EventId string `json:"event_id"`
+	FraudAttributes string `json:"fraud_attributes"`
+	Timestamp string `json:"timestamp"`
+	TrustIndex string `json:"trust_index"`
+}
+
+type IdentityDefaultUpdateWebhook struct {
+	AccountIdsWithUpdatedIdentity string `json:"account_ids_with_updated_identity"`
+	Environment string `json:"environment"`
+	Error string `json:"error"`
+	ItemId string `json:"item_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type IdentityDocumentMetadata struct {
+	IsAccountNumberMatch bool `json:"is_account_number_match"`
+	LastUpdated string `json:"last_updated"`
+	UploadedAt string `json:"uploaded_at"`
+}
+
+type IdentityDocumentUpload struct {
+	DocumentId string `json:"document_id"`
+	Metadata string `json:"metadata"`
+	RiskInsights string `json:"risk_insights"`
+}
+
+type IdentityDocumentUploadMetadata struct {
+	DocumentType string `json:"document_type"`
+	IsAccountNumberMatch bool `json:"is_account_number_match"`
+	LastUpdated string `json:"last_updated"`
+	PageCount int `json:"page_count"`
+	UploadedAt string `json:"uploaded_at"`
+}
+
+type IdentityDocumentUploadRiskInsights struct {
+	RiskSignals string `json:"risk_signals"`
+	RiskSummary string `json:"risk_summary"`
+}
+
+type IdentityDocumentUploadRiskSignal struct {
+	HasFraudRisk bool `json:"has_fraud_risk"`
+	PageNumber int `json:"page_number"`
+	SignalDescription string `json:"signal_description"`
+	Type string `json:"type"`
+}
+
+type IdentityDocumentUploadRiskSummary struct {
+	RiskScore int `json:"risk_score"`
+}
+
+type IdentityDocumentsUploadsGetRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+}
+
+type IdentityDocumentsUploadsGetRequestOptions struct {
+	AccountIds string `json:"account_ids"`
+}
+
+type IdentityDocumentsUploadsGetResponse struct {
+	Accounts string `json:"accounts"`
+	Item string `json:"item"`
+	RequestId string `json:"request_id"`
+}
+
+type IdentityGetRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+}
+
+type IdentityGetRequestOptions struct {
+	AccountIds string `json:"account_ids"`
+}
+
+type IdentityGetResponse struct {
+	Accounts string `json:"accounts"`
+	Item string `json:"item"`
+	RequestId string `json:"request_id"`
+}
+
+type IdentityMatchRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+	User string `json:"user"`
+}
+
+type IdentityMatchRequestOptions struct {
+	AccountIds string `json:"account_ids"`
+}
+
+type IdentityMatchResponse struct {
+	Accounts string `json:"accounts"`
+	Item string `json:"item"`
+	RequestId string `json:"request_id"`
+}
+
+type IdentityMatchUser struct {
+	Address string `json:"address"`
+	EmailAddress string `json:"email_address"`
+	LegalName string `json:"legal_name"`
+	PhoneNumber string `json:"phone_number"`
+}
+
+type IdentityRefreshRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type IdentityRefreshResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type IdentityVerification struct {
+	BeaconUserId string `json:"beacon_user_id"`
+	ClientUserId string `json:"client_user_id"`
+	CompletedAt string `json:"completed_at"`
+	CreatedAt string `json:"created_at"`
+	DocumentaryVerification string `json:"documentary_verification"`
+	Id string `json:"id"`
+	KycCheck string `json:"kyc_check"`
+	LatestScoredProtectEvent string `json:"latest_scored_protect_event"`
+	PreviousAttemptId string `json:"previous_attempt_id"`
+	RedactedAt string `json:"redacted_at"`
+	RiskCheck string `json:"risk_check"`
+	SelfieCheck string `json:"selfie_check"`
+	ShareableUrl string `json:"shareable_url"`
+	Status string `json:"status"`
+	Steps string `json:"steps"`
+	Template string `json:"template"`
+	User string `json:"user"`
+	UserId string `json:"user_id"`
+	VerifySms string `json:"verify_sms"`
+	WatchlistScreeningId string `json:"watchlist_screening_id"`
+}
+
+type IdentityVerificationAutofillAddress struct {
+	City string `json:"city"`
+	Country string `json:"country"`
+	PoBox string `json:"po_box"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+	Street string `json:"street"`
+	Street2 string `json:"street2"`
+	Type string `json:"type"`
+}
+
+type IdentityVerificationAutofillCreateRequest struct {
+	ClientId string `json:"client_id"`
+	IdentityVerificationId string `json:"identity_verification_id"`
+	Secret string `json:"secret"`
+}
+
+type IdentityVerificationAutofillCreateResponse struct {
+	RequestId string `json:"request_id"`
+	Status string `json:"status"`
+	User string `json:"user"`
+}
+
+type IdentityVerificationAutofillUserData struct {
+	Address string `json:"address"`
+	IdNumber string `json:"id_number"`
+	Name string `json:"name"`
+}
+
+type IdentityVerificationCreateRequest struct {
+	ClientId string `json:"client_id"`
+	ClientUserId string `json:"client_user_id"`
+	GaveConsent bool `json:"gave_consent"`
+	IsIdempotent bool `json:"is_idempotent"`
+	IsShareable bool `json:"is_shareable"`
+	Secret string `json:"secret"`
+	TemplateId string `json:"template_id"`
+	User string `json:"user"`
+	UserId string `json:"user_id"`
+}
+
+type IdentityVerificationCreateRequestUser struct {
+	Address string `json:"address"`
+	ClientUserId string `json:"client_user_id"`
+	DateOfBirth string `json:"date_of_birth"`
+	EmailAddress string `json:"email_address"`
+	IdNumber string `json:"id_number"`
+	Name string `json:"name"`
+	PhoneNumber string `json:"phone_number"`
+}
+
+type IdentityVerificationCreateResponse struct {
+	BeaconUserId string `json:"beacon_user_id"`
+	ClientUserId string `json:"client_user_id"`
+	CompletedAt string `json:"completed_at"`
+	CreatedAt string `json:"created_at"`
+	DocumentaryVerification string `json:"documentary_verification"`
+	Id string `json:"id"`
+	KycCheck string `json:"kyc_check"`
+	LatestScoredProtectEvent string `json:"latest_scored_protect_event"`
+	PreviousAttemptId string `json:"previous_attempt_id"`
+	RedactedAt string `json:"redacted_at"`
+	RequestId string `json:"request_id"`
+	RiskCheck string `json:"risk_check"`
+	SelfieCheck string `json:"selfie_check"`
+	ShareableUrl string `json:"shareable_url"`
+	Status string `json:"status"`
+	Steps string `json:"steps"`
+	Template string `json:"template"`
+	User string `json:"user"`
+	UserId string `json:"user_id"`
+	VerifySms string `json:"verify_sms"`
+	WatchlistScreeningId string `json:"watchlist_screening_id"`
+}
+
+type IdentityVerificationDocumentAddressResponse struct {
+	City string `json:"city"`
+	Country string `json:"country"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+	Street string `json:"street"`
+}
+
+type IdentityVerificationDocumentNameResponse struct {
+	FamilyName string `json:"family_name"`
+	GivenName string `json:"given_name"`
+}
+
+type IdentityVerificationGetRequest struct {
+	ClientId string `json:"client_id"`
+	IdentityVerificationId string `json:"identity_verification_id"`
+	Secret string `json:"secret"`
+}
+
+type IdentityVerificationGetResponse struct {
+	BeaconUserId string `json:"beacon_user_id"`
+	ClientUserId string `json:"client_user_id"`
+	CompletedAt string `json:"completed_at"`
+	CreatedAt string `json:"created_at"`
+	DocumentaryVerification string `json:"documentary_verification"`
+	Id string `json:"id"`
+	KycCheck string `json:"kyc_check"`
+	LatestScoredProtectEvent string `json:"latest_scored_protect_event"`
+	PreviousAttemptId string `json:"previous_attempt_id"`
+	RedactedAt string `json:"redacted_at"`
+	RequestId string `json:"request_id"`
+	RiskCheck string `json:"risk_check"`
+	SelfieCheck string `json:"selfie_check"`
+	ShareableUrl string `json:"shareable_url"`
+	Status string `json:"status"`
+	Steps string `json:"steps"`
+	Template string `json:"template"`
+	User string `json:"user"`
+	UserId string `json:"user_id"`
+	VerifySms string `json:"verify_sms"`
+	WatchlistScreeningId string `json:"watchlist_screening_id"`
+}
+
+type IdentityVerificationListRequest struct {
+	ClientId string `json:"client_id"`
+	ClientUserId string `json:"client_user_id"`
+	Cursor string `json:"cursor"`
+	Secret string `json:"secret"`
+	TemplateId string `json:"template_id"`
+	UserId string `json:"user_id"`
+}
+
+type IdentityVerificationListResponse struct {
+	IdentityVerifications string `json:"identity_verifications"`
+	NextCursor string `json:"next_cursor"`
+	RequestId string `json:"request_id"`
+}
+
+type IdentityVerificationRequestUser struct {
+	Address string `json:"address"`
+	DateOfBirth string `json:"date_of_birth"`
+	EmailAddress string `json:"email_address"`
+	IdNumber string `json:"id_number"`
+	Name string `json:"name"`
+	PhoneNumber string `json:"phone_number"`
+}
+
+type IdentityVerificationRequestUserName struct {
+	FamilyName string `json:"family_name"`
+	GivenName string `json:"given_name"`
+}
+
+type IdentityVerificationResponseUserName struct {
+	FamilyName string `json:"family_name"`
+	GivenName string `json:"given_name"`
+}
+
+type IdentityVerificationRetriedWebhook struct {
+	Environment string `json:"environment"`
+	IdentityVerificationId string `json:"identity_verification_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type IdentityVerificationRetryRequest struct {
+	ClientId string `json:"client_id"`
+	ClientUserId string `json:"client_user_id"`
+	IsShareable bool `json:"is_shareable"`
+	Secret string `json:"secret"`
+	Steps string `json:"steps"`
+	Strategy string `json:"strategy"`
+	TemplateId string `json:"template_id"`
+	User string `json:"user"`
+}
+
+type IdentityVerificationRetryRequestStepsObject struct {
+	DocumentaryVerification bool `json:"documentary_verification"`
+	KycCheck bool `json:"kyc_check"`
+	SelfieCheck bool `json:"selfie_check"`
+	VerifySms bool `json:"verify_sms"`
+}
+
+type IdentityVerificationRetryResponse struct {
+	BeaconUserId string `json:"beacon_user_id"`
+	ClientUserId string `json:"client_user_id"`
+	CompletedAt string `json:"completed_at"`
+	CreatedAt string `json:"created_at"`
+	DocumentaryVerification string `json:"documentary_verification"`
+	Id string `json:"id"`
+	KycCheck string `json:"kyc_check"`
+	LatestScoredProtectEvent string `json:"latest_scored_protect_event"`
+	PreviousAttemptId string `json:"previous_attempt_id"`
+	RedactedAt string `json:"redacted_at"`
+	RequestId string `json:"request_id"`
+	RiskCheck string `json:"risk_check"`
+	SelfieCheck string `json:"selfie_check"`
+	ShareableUrl string `json:"shareable_url"`
+	Status string `json:"status"`
+	Steps string `json:"steps"`
+	Template string `json:"template"`
+	User string `json:"user"`
+	UserId string `json:"user_id"`
+	VerifySms string `json:"verify_sms"`
+	WatchlistScreeningId string `json:"watchlist_screening_id"`
+}
+
+type IdentityVerificationStatusUpdatedWebhook struct {
+	Environment string `json:"environment"`
+	IdentityVerificationId string `json:"identity_verification_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type IdentityVerificationStepSummary struct {
+	AcceptTos string `json:"accept_tos"`
+	DocumentaryVerification string `json:"documentary_verification"`
+	KycCheck string `json:"kyc_check"`
+	RiskCheck string `json:"risk_check"`
+	SelfieCheck string `json:"selfie_check"`
+	VerifySms string `json:"verify_sms"`
+	WatchlistScreening string `json:"watchlist_screening"`
+}
+
+type IdentityVerificationStepUpdatedWebhook struct {
+	Environment string `json:"environment"`
+	IdentityVerificationId string `json:"identity_verification_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type IdentityVerificationTemplateReference struct {
+	Id string `json:"id"`
+	Version int `json:"version"`
+}
+
+type IdentityVerificationUserAddress struct {
+	City string `json:"city"`
+	Country string `json:"country"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+	Street string `json:"street"`
+	Street2 string `json:"street2"`
+}
+
+type IdentityVerificationUserData struct {
+	Address string `json:"address"`
+	DateOfBirth string `json:"date_of_birth"`
+	EmailAddress string `json:"email_address"`
+	IdNumber string `json:"id_number"`
+	IpAddress string `json:"ip_address"`
+	Name string `json:"name"`
+	PhoneNumber string `json:"phone_number"`
+}
+
+type ImageQualityDetails struct {
+	BlurCheck string `json:"blur_check"`
+	DimensionsCheck string `json:"dimensions_check"`
+	GlareCheck string `json:"glare_check"`
+}
+
+type IncidentUpdate struct {
+	Description string `json:"description"`
+	Status string `json:"status"`
+	UpdatedDate string `json:"updated_date"`
+}
+
+type IncomeBreakdown struct {
+	Hours float64 `json:"hours"`
+	Rate float64 `json:"rate"`
+	Total float64 `json:"total"`
+	Type string `json:"type"`
+}
+
+type IncomeInsights struct {
+	IncomeExcludingTransfers string `json:"income_excluding_transfers"`
+	TotalIncome string `json:"total_income"`
+	TransfersIn string `json:"transfers_in"`
+}
+
+type IncomeOverride struct {
+	Paystubs string `json:"paystubs"`
+	W2s string `json:"w2s"`
+}
+
+type IncomeSourcesCounts struct {
+	BaselineCount float64 `json:"baseline_count"`
+	CurrentCount float64 `json:"current_count"`
+}
+
+type IncomeSummary struct {
+	EmployeeName string `json:"employee_name"`
+	EmployerName string `json:"employer_name"`
+	PayFrequency string `json:"pay_frequency"`
+	ProjectedWage string `json:"projected_wage"`
+	VerifiedTransaction string `json:"verified_transaction"`
+	YtdGrossIncome string `json:"ytd_gross_income"`
+	YtdNetIncome string `json:"ytd_net_income"`
+}
+
+type IncomeSummaryFieldNumber struct {
+	Value float64 `json:"value"`
+	VerificationStatus string `json:"verification_status"`
+}
+
+type IncomeSummaryFieldString struct {
+	Value string `json:"value"`
+	VerificationStatus string `json:"verification_status"`
+}
+
+type IncomeVerificationCreateRequest struct {
+	ClientId string `json:"client_id"`
+	Options string `json:"options"`
+	PrecheckId string `json:"precheck_id"`
+	Secret string `json:"secret"`
+	Webhook string `json:"webhook"`
+}
+
+type IncomeVerificationCreateRequestOptions struct {
+	AccessTokens string `json:"access_tokens"`
+}
+
+type IncomeVerificationCreateResponse struct {
+	IncomeVerificationId string `json:"income_verification_id"`
+	RequestId string `json:"request_id"`
+}
+
+type IncomeVerificationDocumentsDownloadRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	DocumentId string `json:"document_id"`
+	IncomeVerificationId string `json:"income_verification_id"`
+	Secret string `json:"secret"`
+}
+
+type IncomeVerificationPaystubsGetRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	IncomeVerificationId string `json:"income_verification_id"`
+	Secret string `json:"secret"`
+}
+
+type IncomeVerificationPaystubsGetResponse struct {
+	DocumentMetadata string `json:"document_metadata"`
+	Error string `json:"error"`
+	Paystubs string `json:"paystubs"`
+	RequestId string `json:"request_id"`
+}
+
+type IncomeVerificationPrecheckEmployer struct {
+	Address string `json:"address"`
+	Name string `json:"name"`
+	TaxId string `json:"tax_id"`
+	Url string `json:"url"`
+}
+
+type IncomeVerificationPrecheckEmployerAddress struct {
+	City string `json:"city"`
+	Country string `json:"country"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+	Street string `json:"street"`
+}
+
+type IncomeVerificationPrecheckEmployerAddressData struct {
+	City string `json:"city"`
+	Country string `json:"country"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+	Street string `json:"street"`
+}
+
+type IncomeVerificationPrecheckMilitaryInfo struct {
+	Branch string `json:"branch"`
+	IsActiveDuty bool `json:"is_active_duty"`
+}
+
+type IncomeVerificationPrecheckPayrollInstitution struct {
+	Name string `json:"name"`
+}
+
+type IncomeVerificationPrecheckRequest struct {
+	ClientId string `json:"client_id"`
+	Employer string `json:"employer"`
+	PayrollInstitution string `json:"payroll_institution"`
+	Secret string `json:"secret"`
+	TransactionsAccessToken string `json:"transactions_access_token"`
+	TransactionsAccessTokens string `json:"transactions_access_tokens"`
+	UsMilitaryInfo string `json:"us_military_info"`
+	User string `json:"user"`
+}
+
+type IncomeVerificationPrecheckResponse struct {
+	Confidence string `json:"confidence"`
+	PrecheckId string `json:"precheck_id"`
+	RequestId string `json:"request_id"`
+}
+
+type IncomeVerificationPrecheckUser struct {
+	EmailAddress string `json:"email_address"`
+	FirstName string `json:"first_name"`
+	HomeAddress string `json:"home_address"`
+	LastName string `json:"last_name"`
+}
+
+type IncomeVerificationRefreshReconnectNeededWebhook struct {
+	Environment string `json:"environment"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type IncomeVerificationRiskSignalsStatusWebhook struct {
+	Environment string `json:"environment"`
+	ItemId string `json:"item_id"`
+	RiskSignalsStatus string `json:"risk_signals_status"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type IncomeVerificationStatusWebhook struct {
+	Environment string `json:"environment"`
+	ItemId string `json:"item_id"`
+	UserId string `json:"user_id"`
+	VerificationStatus string `json:"verification_status"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type IncomeVerificationTaxformsGetRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	IncomeVerificationId string `json:"income_verification_id"`
+	Secret string `json:"secret"`
+}
+
+type IncomeVerificationTaxformsGetResponse struct {
+	DocumentMetadata string `json:"document_metadata"`
+	Error string `json:"error"`
+	RequestId string `json:"request_id"`
+	Taxforms string `json:"taxforms"`
+}
+
+type IncomeVerificationWebhookStatus struct {
+	Id string `json:"id"`
+}
+
+type IndividualName struct {
+	FirstName string `json:"FirstName"`
+	LastName string `json:"LastName"`
+}
+
+type IndividualScreeningHitNames struct {
+	Full string `json:"full"`
+	IsPrimary bool `json:"is_primary"`
+	WeakAliasDetermination string `json:"weak_alias_determination"`
+}
+
+type IndividualWatchlistProgram struct {
+	AuditTrail string `json:"audit_trail"`
+	CreatedAt string `json:"created_at"`
+	Id string `json:"id"`
+	IsArchived bool `json:"is_archived"`
+	IsRescanningEnabled bool `json:"is_rescanning_enabled"`
+	ListsEnabled string `json:"lists_enabled"`
+	Name string `json:"name"`
+	NameSensitivity string `json:"name_sensitivity"`
+}
+
+type InflowModel struct {
+	IncomeAmount float64 `json:"income_amount"`
+	PaymentDayOfMonth float64 `json:"payment_day_of_month"`
+	StatementDayOfMonth string `json:"statement_day_of_month"`
+	TransactionName string `json:"transaction_name"`
+	Type string `json:"type"`
+}
+
+type InitialUpdateWebhook struct {
+	Environment string `json:"environment"`
+	Error string `json:"error"`
+	ItemId string `json:"item_id"`
+	NewTransactions float64 `json:"new_transactions"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type Institution struct {
+	AuthMetadata string `json:"auth_metadata"`
+	CountryCodes string `json:"country_codes"`
+	DtcNumbers string `json:"dtc_numbers"`
+	InstitutionId string `json:"institution_id"`
+	Logo string `json:"logo"`
+	Name string `json:"name"`
+	Oauth bool `json:"oauth"`
+	PaymentInitiationMetadata string `json:"payment_initiation_metadata"`
+	PrimaryColor string `json:"primary_color"`
+	Products string `json:"products"`
+	RoutingNumbers string `json:"routing_numbers"`
+	Status string `json:"status"`
+	Url string `json:"url"`
+}
+
+type InstitutionStatus struct {
+	Auth string `json:"auth"`
+	HealthIncidents string `json:"health_incidents"`
+	Identity string `json:"identity"`
+	Investments string `json:"investments"`
+	InvestmentsUpdates string `json:"investments_updates"`
+	ItemLogins string `json:"item_logins"`
+	Liabilities string `json:"liabilities"`
+	LiabilitiesUpdates string `json:"liabilities_updates"`
+	TransactionsUpdates string `json:"transactions_updates"`
+}
+
+type InstitutionStatusAlertWebhook struct {
+	Environment string `json:"environment"`
+	InstitutionId string `json:"institution_id"`
+	InstitutionOverallSuccessRate float64 `json:"institution_overall_success_rate"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type InstitutionSupportedNetworks struct {
+	Rfp string `json:"rfp"`
+	Rtp string `json:"rtp"`
+}
+
+type InstitutionsGetByIdRequest struct {
+	ClientId string `json:"client_id"`
+	CountryCodes string `json:"country_codes"`
+	InstitutionId string `json:"institution_id"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+}
+
+type InstitutionsGetByIdRequestOptions struct {
+	IncludeAuthMetadata bool `json:"include_auth_metadata"`
+	IncludeOptionalMetadata bool `json:"include_optional_metadata"`
+	IncludePaymentInitiationMetadata bool `json:"include_payment_initiation_metadata"`
+	IncludeStatus bool `json:"include_status"`
+}
+
+type InstitutionsGetByIdResponse struct {
+	Institution string `json:"institution"`
+	RequestId string `json:"request_id"`
+}
+
+type InstitutionsGetRequest struct {
+	ClientId string `json:"client_id"`
+	Count int `json:"count"`
+	CountryCodes string `json:"country_codes"`
+	Offset int `json:"offset"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+}
+
+type InstitutionsGetRequestOptions struct {
+	IncludeAuthMetadata bool `json:"include_auth_metadata"`
+	IncludeOptionalMetadata bool `json:"include_optional_metadata"`
+	IncludePaymentInitiationMetadata bool `json:"include_payment_initiation_metadata"`
+	Oauth bool `json:"oauth"`
+	Products string `json:"products"`
+	RoutingNumbers string `json:"routing_numbers"`
+}
+
+type InstitutionsGetResponse struct {
+	Institutions string `json:"institutions"`
+	RequestId string `json:"request_id"`
+	Total int `json:"total"`
+}
+
+type InstitutionsSearchAccountFilter struct {
+	Credit string `json:"credit"`
+	Depository string `json:"depository"`
+	Investment string `json:"investment"`
+	Loan string `json:"loan"`
+}
+
+type InstitutionsSearchPaymentInitiationOptions struct {
+	ConsentId string `json:"consent_id"`
+	PaymentId string `json:"payment_id"`
+}
+
+type InstitutionsSearchRequest struct {
+	ClientId string `json:"client_id"`
+	CountryCodes string `json:"country_codes"`
+	Options string `json:"options"`
+	Products string `json:"products"`
+	Query string `json:"query"`
+	Secret string `json:"secret"`
+}
+
+type InstitutionsSearchRequestOptions struct {
+	IncludeAuthMetadata bool `json:"include_auth_metadata"`
+	IncludeOptionalMetadata bool `json:"include_optional_metadata"`
+	IncludePaymentInitiationMetadata bool `json:"include_payment_initiation_metadata"`
+	Oauth bool `json:"oauth"`
+	PaymentInitiation string `json:"payment_initiation"`
+}
+
+type InstitutionsSearchResponse struct {
+	Institutions string `json:"institutions"`
+	RequestId string `json:"request_id"`
+}
+
+type InvestmentAccountSubtypeStandalone struct {
+	T401a string `json:"T401a"`
+	T401k string `json:"T401k"`
+	T403B string `json:"T403B"`
+	T457b string `json:"T457b"`
+	T529 string `json:"T529"`
+	Brokerage string `json:"brokerage"`
+	CashIsa string `json:"cash_isa"`
+	CryptoExchange string `json:"crypto_exchange"`
+	EducationSavingsAccount string `json:"education_savings_account"`
+	FixedAnnuity string `json:"fixed_annuity"`
+	Gic string `json:"gic"`
+	HealthReimbursementArrangement string `json:"health_reimbursement_arrangement"`
+	Hsa string `json:"hsa"`
+	Ira string `json:"ira"`
+	Isa string `json:"isa"`
+	Keogh string `json:"keogh"`
+	Lif string `json:"lif"`
+	LifeInsurance string `json:"life_insurance"`
+	Lira string `json:"lira"`
+	Lrif string `json:"lrif"`
+	Lrsp string `json:"lrsp"`
+	MutualFund string `json:"mutual_fund"`
+	NonCustodialWallet string `json:"non_custodial_wallet"`
+	NonTaxableBrokerageAccount string `json:"non_taxable_brokerage_account"`
+	Other string `json:"other"`
+	OtherAnnuity string `json:"other_annuity"`
+	OtherInsurance string `json:"other_insurance"`
+	Pension string `json:"pension"`
+	Prif string `json:"prif"`
+	ProfitSharingPlan string `json:"profit_sharing_plan"`
+	Qshr string `json:"qshr"`
+	Rdsp string `json:"rdsp"`
+	Resp string `json:"resp"`
+	Retirement string `json:"retirement"`
+	Rlif string `json:"rlif"`
+	Roth string `json:"roth"`
+	Roth401k string `json:"roth_401k"`
+	Rrif string `json:"rrif"`
+	Rrsp string `json:"rrsp"`
+	Sarsep string `json:"sarsep"`
+	SepIra string `json:"sep_ira"`
+	SimpleIra string `json:"simple_ira"`
+	Sipp string `json:"sipp"`
+	StockPlan string `json:"stock_plan"`
+	Tfsa string `json:"tfsa"`
+	ThriftSavingsPlan string `json:"thrift_savings_plan"`
+	Trust string `json:"trust"`
+	Ugma string `json:"ugma"`
+	Utma string `json:"utma"`
+	VariableAnnuity string `json:"variable_annuity"`
+}
+
+type InvestmentFilter struct {
+	AccountSubtypes string `json:"account_subtypes"`
+}
+
+type InvestmentHoldingsGetRequestOptions struct {
+	AccountIds string `json:"account_ids"`
+}
+
+type InvestmentTransaction struct {
+	AccountId string `json:"account_id"`
+	Amount float64 `json:"amount"`
+	CancelTransactionId string `json:"cancel_transaction_id"`
+	Date string `json:"date"`
+	Fees float64 `json:"fees"`
+	InvestmentTransactionId string `json:"investment_transaction_id"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Name string `json:"name"`
+	Price float64 `json:"price"`
+	Quantity float64 `json:"quantity"`
+	SecurityId string `json:"security_id"`
+	Subtype string `json:"subtype"`
+	TransactionDatetime string `json:"transaction_datetime"`
+	Type string `json:"type"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type InvestmentsAuth401kContributionDetails struct {
+	ContributionAmount12m float64 `json:"contribution_amount_12m"`
+	ContributionAmount1m float64 `json:"contribution_amount_1m"`
+	ContributionAmount6m float64 `json:"contribution_amount_6m"`
+	ContributionCount12m int `json:"contribution_count_12m"`
+	ContributionCount1m int `json:"contribution_count_1m"`
+	ContributionCount6m int `json:"contribution_count_6m"`
+	LastContributionTransactions string `json:"last_contribution_transactions"`
+}
+
+type InvestmentsAuth401kFeeDetails struct {
+	AccountFeeAmount12m float64 `json:"account_fee_amount_12m"`
+	AccountFeeCount12m int `json:"account_fee_count_12m"`
+}
+
+type InvestmentsAuthAccountDetails401k struct {
+	AccountId string `json:"account_id"`
+	ContributionDetails string `json:"contribution_details"`
+	FeeDetails string `json:"fee_details"`
+}
+
+type InvestmentsAuthDataSources struct {
+	Holdings string `json:"holdings"`
+	Numbers string `json:"numbers"`
+	Owners string `json:"owners"`
+}
+
+type InvestmentsAuthGetNumbers struct {
+	Acats string `json:"acats"`
+	Aton string `json:"aton"`
+	Retirement401k string `json:"retirement_401k"`
+}
+
+type InvestmentsAuthGetRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+}
+
+type InvestmentsAuthGetRequestOptions struct {
+	AccountIds string `json:"account_ids"`
+}
+
+type InvestmentsAuthGetResponse struct {
+	AccountDetails401k string `json:"account_details_401k"`
+	Accounts string `json:"accounts"`
+	DataSources string `json:"data_sources"`
+	Holdings string `json:"holdings"`
+	Item string `json:"item"`
+	Numbers string `json:"numbers"`
+	Owners string `json:"owners"`
+	RequestId string `json:"request_id"`
+	Securities string `json:"securities"`
+}
+
+type InvestmentsAuthOwner struct {
+	AccountId string `json:"account_id"`
+	Names string `json:"names"`
+}
+
+type InvestmentsDefaultUpdateWebhook struct {
+	CancelledInvestmentsTransactions float64 `json:"cancelled_investments_transactions"`
+	Environment string `json:"environment"`
+	Error string `json:"error"`
+	ItemId string `json:"item_id"`
+	NewInvestmentsTransactions float64 `json:"new_investments_transactions"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type InvestmentsHistoricalUpdateWebhook struct {
+	CancelledInvestmentsTransactions float64 `json:"cancelled_investments_transactions"`
+	Environment string `json:"environment"`
+	Error string `json:"error"`
+	ItemId string `json:"item_id"`
+	NewInvestmentsTransactions float64 `json:"new_investments_transactions"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type InvestmentsHoldingsGetRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+}
+
+type InvestmentsHoldingsGetResponse struct {
+	Accounts string `json:"accounts"`
+	Holdings string `json:"holdings"`
+	IsInvestmentsFallbackItem bool `json:"is_investments_fallback_item"`
+	Item string `json:"item"`
+	RequestId string `json:"request_id"`
+	Securities string `json:"securities"`
+}
+
+type InvestmentsRefreshRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type InvestmentsRefreshResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type InvestmentsTransactionsGetRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	EndDate string `json:"end_date"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+	StartDate string `json:"start_date"`
+}
+
+type InvestmentsTransactionsGetRequestOptions struct {
+	AccountIds string `json:"account_ids"`
+	AsyncUpdate bool `json:"async_update"`
+	Count int `json:"count"`
+	Offset int `json:"offset"`
+}
+
+type InvestmentsTransactionsGetResponse struct {
+	Accounts string `json:"accounts"`
+	InvestmentTransactions string `json:"investment_transactions"`
+	IsInvestmentsFallbackItem bool `json:"is_investments_fallback_item"`
+	Item string `json:"item"`
+	RequestId string `json:"request_id"`
+	Securities string `json:"securities"`
+	TotalInvestmentTransactions int `json:"total_investment_transactions"`
+}
+
+type Investments_TransactionsOverride struct {
+	Currency string `json:"currency"`
+	Date string `json:"date"`
+	Fees float64 `json:"fees"`
+	Name string `json:"name"`
+	Price float64 `json:"price"`
+	Quantity float64 `json:"quantity"`
+	Security string `json:"security"`
+	Type string `json:"type"`
+}
+
+type Issue struct {
+	CreatedAt string `json:"created_at"`
+	DetailedDescription string `json:"detailed_description"`
+	InstitutionIds string `json:"institution_ids"`
+	InstitutionNames string `json:"institution_names"`
+	IssueId string `json:"issue_id"`
+	Status string `json:"status"`
+	Summary string `json:"summary"`
+}
+
+type IssueResolvedWebhook struct {
+	InstitutionId string `json:"institution_id"`
+	InstitutionName string `json:"institution_name"`
+	IssueDescription string `json:"issue_description"`
+	IssueId string `json:"issue_id"`
+	IssueResolvedAt string `json:"issue_resolved_at"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type IssuesGetRequest struct {
+	ClientId string `json:"client_id"`
+	IssueId string `json:"issue_id"`
+	Secret string `json:"secret"`
+}
+
+type IssuesGetResponse struct {
+	Issue string `json:"issue"`
+	RequestId string `json:"request_id"`
+}
+
+type IssuesSearchRequest struct {
+	ClientId string `json:"client_id"`
+	ItemId string `json:"item_id"`
+	LinkSessionId string `json:"link_session_id"`
+	LinkSessionRequestId string `json:"link_session_request_id"`
+	Secret string `json:"secret"`
+}
+
+type IssuesSearchResponse struct {
+	Issues string `json:"issues"`
+	RequestId string `json:"request_id"`
+}
+
+type IssuesSubscribeRequest struct {
+	ClientId string `json:"client_id"`
+	IssueId string `json:"issue_id"`
+	Secret string `json:"secret"`
+	Webhook string `json:"webhook"`
+}
+
+type IssuesSubscribeResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type Item struct {
+	AuthMethod string `json:"auth_method"`
+	AvailableProducts string `json:"available_products"`
+	BilledProducts string `json:"billed_products"`
+	ConsentExpirationTime string `json:"consent_expiration_time"`
+	ConsentedProducts string `json:"consented_products"`
+	Error string `json:"error"`
+	InstitutionId string `json:"institution_id"`
+	InstitutionName string `json:"institution_name"`
+	ItemId string `json:"item_id"`
+	Products string `json:"products"`
+	UpdateType string `json:"update_type"`
+	Webhook string `json:"webhook"`
+}
+
+type ItemAccessTokenInvalidateRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type ItemAccessTokenInvalidateResponse struct {
+	NewAccessToken string `json:"new_access_token"`
+	RequestId string `json:"request_id"`
+}
+
+type ItemActivityListRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Count int `json:"count"`
+	Cursor string `json:"cursor"`
+	Secret string `json:"secret"`
+}
+
+type ItemActivityListResponse struct {
+	Activities string `json:"activities"`
+	Cursor string `json:"cursor"`
+	LastDataAccessTimes string `json:"last_data_access_times"`
+	RequestId string `json:"request_id"`
+}
+
+type ItemAddResultWebhook struct {
+	Environment string `json:"environment"`
+	LinkSessionId string `json:"link_session_id"`
+	LinkToken string `json:"link_token"`
+	PublicToken string `json:"public_token"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type ItemApplicationListRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type ItemApplicationListResponse struct {
+	Applications string `json:"applications"`
+	RequestId string `json:"request_id"`
+}
+
+type ItemApplicationListUserAuth struct {
+	FiUsernameHash string `json:"fi_username_hash"`
+	UserId string `json:"user_id"`
+}
+
+type ItemApplicationScopesUpdateRequest struct {
+	AccessToken string `json:"access_token"`
+	ApplicationId string `json:"application_id"`
+	ClientId string `json:"client_id"`
+	Context string `json:"context"`
+	Scopes string `json:"scopes"`
+	Secret string `json:"secret"`
+	State string `json:"state"`
+}
+
+type ItemApplicationScopesUpdateResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type ItemApplicationUnlinkRequest struct {
+	AccessToken string `json:"access_token"`
+	ApplicationId string `json:"application_id"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type ItemApplicationUnlinkResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type ItemErrorWebhook struct {
+	Environment string `json:"environment"`
+	Error string `json:"error"`
+	ItemId string `json:"item_id"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type ItemGetRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type ItemGetResponse struct {
+	Item string `json:"item"`
+	RequestId string `json:"request_id"`
+	Status string `json:"status"`
+}
+
+type ItemImportRequest struct {
+	ClientId string `json:"client_id"`
+	InstitutionId string `json:"institution_id"`
+	Options string `json:"options"`
+	Products string `json:"products"`
+	Secret string `json:"secret"`
+	UserAuth string `json:"user_auth"`
+}
+
+type ItemImportRequestOptions struct {
+	Webhook string `json:"webhook"`
+}
+
+type ItemImportRequestUserAuth struct {
+	AuthToken string `json:"auth_token"`
+	UserId string `json:"user_id"`
+}
+
+type ItemImportResponse struct {
+	AccessToken string `json:"access_token"`
+	RequestId string `json:"request_id"`
+}
+
+type ItemLoginRepairedWebhook struct {
+	Environment string `json:"environment"`
+	ItemId string `json:"item_id"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type ItemProductReadyWebhook struct {
+	Environment string `json:"environment"`
+	Error string `json:"error"`
+	ItemId string `json:"item_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type ItemPublicTokenCreateRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type ItemPublicTokenCreateResponse struct {
+	Expiration string `json:"expiration"`
+	PublicToken string `json:"public_token"`
+	RequestId string `json:"request_id"`
+}
+
+type ItemPublicTokenExchangeRequest struct {
+	ClientId string `json:"client_id"`
+	PublicToken string `json:"public_token"`
+	Secret string `json:"secret"`
+}
+
+type ItemPublicTokenExchangeResponse struct {
+	AccessToken string `json:"access_token"`
+	ItemId string `json:"item_id"`
+	RequestId string `json:"request_id"`
+}
+
+type ItemRemoveRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	ReasonCode string `json:"reason_code"`
+	ReasonNote string `json:"reason_note"`
+	Secret string `json:"secret"`
+}
+
+type ItemRemoveResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type ItemStatus struct {
+	Investments string `json:"investments"`
+	LastWebhook string `json:"last_webhook"`
+	Transactions string `json:"transactions"`
+}
+
+type ItemStatusInvestments struct {
+	LastFailedUpdate string `json:"last_failed_update"`
+	LastSuccessfulUpdate string `json:"last_successful_update"`
+}
+
+type ItemStatusLastWebhook struct {
+	CodeSent string `json:"code_sent"`
+	SentAt string `json:"sent_at"`
+}
+
+type ItemStatusNullable struct {
+	Investments string `json:"investments"`
+	LastWebhook string `json:"last_webhook"`
+	Transactions string `json:"transactions"`
+}
+
+type ItemStatusTransactions struct {
+	LastFailedUpdate string `json:"last_failed_update"`
+	LastSuccessfulUpdate string `json:"last_successful_update"`
+}
+
+type ItemWebhookUpdateRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	Webhook string `json:"webhook"`
+}
+
+type ItemWebhookUpdateResponse struct {
+	Item string `json:"item"`
+	RequestId string `json:"request_id"`
+}
+
+type ItemWithConsentFields struct {
+	AuthMethod string `json:"auth_method"`
+	AvailableProducts string `json:"available_products"`
+	BilledProducts string `json:"billed_products"`
+	ConsentExpirationTime string `json:"consent_expiration_time"`
+	ConsentedDataScopes string `json:"consented_data_scopes"`
+	ConsentedProducts string `json:"consented_products"`
+	ConsentedUseCases string `json:"consented_use_cases"`
+	CreatedAt string `json:"created_at"`
+	Error string `json:"error"`
+	InstitutionId string `json:"institution_id"`
+	InstitutionName string `json:"institution_name"`
+	ItemId string `json:"item_id"`
+	Products string `json:"products"`
+	UpdateType string `json:"update_type"`
+	Webhook string `json:"webhook"`
+}
+
+type JWKPublicKey struct {
+	Alg string `json:"alg"`
+	CreatedAt int `json:"created_at"`
+	Crv string `json:"crv"`
+	ExpiredAt int `json:"expired_at"`
+	Kid string `json:"kid"`
+	Kty string `json:"kty"`
+	Use string `json:"use"`
+	X string `json:"x"`
+	Y string `json:"y"`
+}
+
+type JWTHeader struct {
+	Alg string `json:"alg"`
+	Id string `json:"id"`
+	Kid string `json:"kid"`
+}
+
+type KYCCheckAddressSummary struct {
+	City string `json:"city"`
+	InternationalDetails string `json:"international_details"`
+	PoBox string `json:"po_box"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+	Street string `json:"street"`
+	Summary string `json:"summary"`
+	Type string `json:"type"`
+}
+
+type KYCCheckDateOfBirthSummary struct {
+	Day string `json:"day"`
+	Month string `json:"month"`
+	Summary string `json:"summary"`
+	Year string `json:"year"`
+}
+
+type KYCCheckDetails struct {
+	Address string `json:"address"`
+	DateOfBirth string `json:"date_of_birth"`
+	IdNumber string `json:"id_number"`
+	Name string `json:"name"`
+	PhoneNumber string `json:"phone_number"`
+	Status string `json:"status"`
+}
+
+type KYCCheckDetailsInternationalAddress struct {
+	Building string `json:"building"`
+	County string `json:"county"`
+	District string `json:"district"`
+	HouseNumber string `json:"house_number"`
+	Subpremise string `json:"subpremise"`
+	Thoroughfare string `json:"thoroughfare"`
+}
+
+type KYCCheckIDNumberSummary struct {
+	Summary string `json:"summary"`
+}
+
+type KYCCheckNameSummary struct {
+	FamilyName string `json:"family_name"`
+	GivenName string `json:"given_name"`
+	Summary string `json:"summary"`
+}
+
+type KYCCheckPhoneSummary struct {
+	AreaCode string `json:"area_code"`
+	Summary string `json:"summary"`
+}
+
+type LastDataAccessTimes struct {
+	AccountBalanceInfo string `json:"account_balance_info"`
+	AccountRoutingNumber string `json:"account_routing_number"`
+	ApplicationId string `json:"application_id"`
+	ContactDetails string `json:"contact_details"`
+	CreditAndLoans string `json:"credit_and_loans"`
+	Investments string `json:"investments"`
+	PayrollInfo string `json:"payroll_info"`
+	TransactionRiskInfo string `json:"transaction_risk_info"`
+	Transactions string `json:"transactions"`
+}
+
+type LatestScoredEvent struct {
+	EventId string `json:"event_id"`
+	EventType string `json:"event_type"`
+	FraudAttributes string `json:"fraud_attributes"`
+	Timestamp string `json:"timestamp"`
+	TrustIndex string `json:"trust_index"`
+}
+
+type LayerAuthenticationPassedWebhook struct {
+	Environment string `json:"environment"`
+	LinkSessionId string `json:"link_session_id"`
+	LinkToken string `json:"link_token"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type LendScore struct {
+	ErrorReason string `json:"error_reason"`
+	ReasonCodes string `json:"reason_codes"`
+	Score int `json:"score"`
+}
+
+type LiabilitiesAccountIdsWithUpdatedLiabilities struct {
+}
+
+type LiabilitiesDefaultUpdateWebhook struct {
+	AccountIdsWithNewLiabilities string `json:"account_ids_with_new_liabilities"`
+	AccountIdsWithUpdatedLiabilities string `json:"account_ids_with_updated_liabilities"`
+	Environment string `json:"environment"`
+	Error string `json:"error"`
+	ItemId string `json:"item_id"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type LiabilitiesGetRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+}
+
+type LiabilitiesGetRequestOptions struct {
+	AccountIds string `json:"account_ids"`
+}
+
+type LiabilitiesGetResponse struct {
+	Accounts string `json:"accounts"`
+	Item string `json:"item"`
+	Liabilities string `json:"liabilities"`
+	RequestId string `json:"request_id"`
+}
+
+type LiabilitiesObject struct {
+	Credit string `json:"credit"`
+	Mortgage string `json:"mortgage"`
+	Student string `json:"student"`
+}
+
+type LiabilityOverride struct {
+	BalanceTransferApr float64 `json:"balance_transfer_apr"`
+	CashApr float64 `json:"cash_apr"`
+	ExpectedPayoffDate string `json:"expected_payoff_date"`
+	Guarantor string `json:"guarantor"`
+	InterestCapitalizationGracePeriodMonths float64 `json:"interest_capitalization_grace_period_months"`
+	IsFederal bool `json:"is_federal"`
+	IsOverdue bool `json:"is_overdue"`
+	LastPaymentAmount float64 `json:"last_payment_amount"`
+	LoanName string `json:"loan_name"`
+	LoanStatus string `json:"loan_status"`
+	MinimumPaymentAmount float64 `json:"minimum_payment_amount"`
+	NominalApr float64 `json:"nominal_apr"`
+	OriginationDate string `json:"origination_date"`
+	PaymentReferenceNumber string `json:"payment_reference_number"`
+	Principal float64 `json:"principal"`
+	PslfStatus string `json:"pslf_status"`
+	PurchaseApr float64 `json:"purchase_apr"`
+	RepaymentModel string `json:"repayment_model"`
+	RepaymentPlanDescription string `json:"repayment_plan_description"`
+	RepaymentPlanType string `json:"repayment_plan_type"`
+	SequenceNumber string `json:"sequence_number"`
+	ServicerAddress string `json:"servicer_address"`
+	SpecialApr float64 `json:"special_apr"`
+	Type string `json:"type"`
+}
+
+type LinkCallbackMetadata struct {
+	Accounts string `json:"accounts"`
+	CallbackType string `json:"callback_type"`
+	EventName string `json:"event_name"`
+	Institution string `json:"institution"`
+	LinkSessionId string `json:"link_session_id"`
+	RequestId string `json:"request_id"`
+	Status string `json:"status"`
+}
+
+type LinkDeliveryAccount struct {
+	ClassType string `json:"class_type"`
+	Id string `json:"id"`
+	Mask string `json:"mask"`
+	Name string `json:"name"`
+	Subtype string `json:"subtype"`
+	Type string `json:"type"`
+	VerificationStatus string `json:"verification_status"`
+}
+
+type LinkDeliveryCallbackWebhook struct {
+	Error string `json:"error"`
+	LinkCallbackMetadata string `json:"link_callback_metadata"`
+	LinkDeliverySessionId string `json:"link_delivery_session_id"`
+	Timestamp string `json:"timestamp"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type LinkDeliveryCommunicationMethod struct {
+	Address string `json:"address"`
+	Method string `json:"method"`
+}
+
+type LinkDeliveryCreateRequest struct {
+	ClientId string `json:"client_id"`
+	LinkToken string `json:"link_token"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+}
+
+type LinkDeliveryCreateResponse struct {
+	LinkDeliverySessionId string `json:"link_delivery_session_id"`
+	LinkDeliveryUrl string `json:"link_delivery_url"`
+	RequestId string `json:"request_id"`
+}
+
+type LinkDeliveryGetRequest struct {
+	ClientId string `json:"client_id"`
+	LinkDeliverySessionId string `json:"link_delivery_session_id"`
+	Secret string `json:"secret"`
+}
+
+type LinkDeliveryGetResponse struct {
+	AccessTokens string `json:"access_tokens"`
+	CompletedAt string `json:"completed_at"`
+	CreatedAt string `json:"created_at"`
+	ItemIds string `json:"item_ids"`
+	RequestId string `json:"request_id"`
+	Status string `json:"status"`
+}
+
+type LinkDeliveryInstitution struct {
+	InstitutionId string `json:"institution_id"`
+	Name string `json:"name"`
+}
+
+type LinkDeliveryMetadata struct {
+	CommunicationMethod string `json:"communication_method"`
+	DeliveryStatus string `json:"delivery_status"`
+}
+
+type LinkDeliveryOptions struct {
+	Recipient string `json:"recipient"`
+}
+
+type LinkDeliveryRecipient struct {
+	CommunicationMethods string `json:"communication_methods"`
+	FirstName string `json:"first_name"`
+}
+
+type LinkEvent struct {
+	EventId string `json:"event_id"`
+	EventMetadata string `json:"event_metadata"`
+	EventName string `json:"event_name"`
+	Timestamp string `json:"timestamp"`
+}
+
+type LinkEventMetadata struct {
+	AccountNumberMask string `json:"account_number_mask"`
+	BrandName string `json:"brand_name"`
+	ErrorCode string `json:"error_code"`
+	ErrorMessage string `json:"error_message"`
+	ErrorType string `json:"error_type"`
+	ExitStatus string `json:"exit_status"`
+	InstitutionId string `json:"institution_id"`
+	InstitutionName string `json:"institution_name"`
+	InstitutionSearchQuery string `json:"institution_search_query"`
+	MatchReason string `json:"match_reason"`
+	MfaType string `json:"mfa_type"`
+	RequestId string `json:"request_id"`
+	RoutingNumber string `json:"routing_number"`
+	Selection string `json:"selection"`
+	ViewName string `json:"view_name"`
+}
+
+type LinkEventsWebhook struct {
+	Events string `json:"events"`
+	LinkSessionId string `json:"link_session_id"`
+	LinkToken string `json:"link_token"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type LinkOAuthCorrelationIdExchangeRequest struct {
+	ClientId string `json:"client_id"`
+	LinkCorrelationId string `json:"link_correlation_id"`
+	Secret string `json:"secret"`
+}
+
+type LinkOAuthCorrelationIdExchangeResponse struct {
+	LinkToken string `json:"link_token"`
+	RequestId string `json:"request_id"`
+}
+
+type LinkSessionBankEmploymentResult struct {
+	Institution string `json:"institution"`
+	ItemId string `json:"item_id"`
+	Status string `json:"status"`
+}
+
+type LinkSessionBankIncomeResult struct {
+	Institution string `json:"institution"`
+	ItemId string `json:"item_id"`
+	Status string `json:"status"`
+}
+
+type LinkSessionCraDocumentUploadResult struct {
+	NumBankStatementsUploaded int `json:"num_bank_statements_uploaded"`
+}
+
+type LinkSessionCraItemAddResult struct {
+	Accounts string `json:"accounts"`
+	Institution string `json:"institution"`
+	ItemId string `json:"item_id"`
+}
+
+type LinkSessionCraUpdateResult struct {
+	Accounts string `json:"accounts"`
+	Institution string `json:"institution"`
+	ItemId string `json:"item_id"`
+}
+
+type LinkSessionExit struct {
+	Error string `json:"error"`
+	Metadata string `json:"metadata"`
+}
+
+type LinkSessionExitDeprecated struct {
+	Error string `json:"error"`
+	Metadata string `json:"metadata"`
+}
+
+type LinkSessionExitMetadata struct {
+	Institution string `json:"institution"`
+	LinkSessionId string `json:"link_session_id"`
+	RequestId string `json:"request_id"`
+	Status string `json:"status"`
+}
+
+type LinkSessionExitMetadataInstitution struct {
+	InstitutionId string `json:"institution_id"`
+	Name string `json:"name"`
+}
+
+type LinkSessionFinishedWebhook struct {
+	Environment string `json:"environment"`
+	LinkSessionId string `json:"link_session_id"`
+	LinkToken string `json:"link_token"`
+	PublicToken string `json:"public_token"`
+	PublicTokens string `json:"public_tokens"`
+	Status string `json:"status"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type LinkSessionItemAddResult struct {
+	Accounts string `json:"accounts"`
+	Institution string `json:"institution"`
+	PublicToken string `json:"public_token"`
+}
+
+type LinkSessionPayrollIncomeResult struct {
+	Institution string `json:"institution"`
+	NumPaystubsRetrieved int `json:"num_paystubs_retrieved"`
+	NumW2sRetrieved int `json:"num_w2s_retrieved"`
+}
+
+type LinkSessionProtectResult struct {
+	EventId string `json:"event_id"`
+	FraudAttributes string `json:"fraud_attributes"`
+	TrustIndex string `json:"trust_index"`
+}
+
+type LinkSessionProtectResultFraudAttributes struct {
+}
+
+type LinkSessionResults struct {
+	BankIncomeResults string `json:"bank_income_results"`
+	CraDocumentUploadResults string `json:"cra_document_upload_results"`
+	CraItemAddResults string `json:"cra_item_add_results"`
+	CraUpdateResults string `json:"cra_update_results"`
+	DocumentIncomeResults string `json:"document_income_results"`
+	ItemAddResults string `json:"item_add_results"`
+	PayrollIncomeResults string `json:"payroll_income_results"`
+	ProtectResults string `json:"protect_results"`
+}
+
+type LinkSessionSuccess struct {
+	Metadata string `json:"metadata"`
+	PublicToken string `json:"public_token"`
+}
+
+type LinkSessionSuccessMetadata struct {
+	Accounts string `json:"accounts"`
+	Institution string `json:"institution"`
+	LinkSessionId string `json:"link_session_id"`
+	TransferStatus string `json:"transfer_status"`
+}
+
+type LinkSessionSuccessMetadataAccount struct {
+	ClassType string `json:"class_type"`
+	Id string `json:"id"`
+	Mask string `json:"mask"`
+	Name string `json:"name"`
+	Subtype string `json:"subtype"`
+	Type string `json:"type"`
+	VerificationStatus string `json:"verification_status"`
+}
+
+type LinkSessionSuccessMetadataInstitution struct {
+	InstitutionId string `json:"institution_id"`
+	Name string `json:"name"`
+}
+
+type LinkTokenAccountFilters struct {
+	Credit string `json:"credit"`
+	Depository string `json:"depository"`
+	Investment string `json:"investment"`
+	Loan string `json:"loan"`
+	Other string `json:"other"`
+}
+
+type LinkTokenCashflowReport struct {
+	DaysRequested int `json:"days_requested"`
+}
+
+type LinkTokenCreateCardSwitch struct {
+	CardBin string `json:"card_bin"`
+}
+
+type LinkTokenCreateCreditFilter struct {
+	AccountSubtypes string `json:"account_subtypes"`
+}
+
+type LinkTokenCreateDepositoryFilter struct {
+	AccountSubtypes string `json:"account_subtypes"`
+}
+
+type LinkTokenCreateHostedLink struct {
+	CompletionRedirectUri string `json:"completion_redirect_uri"`
+	DeliveryMethod string `json:"delivery_method"`
+	IsMobileApp bool `json:"is_mobile_app"`
+	UrlLifetimeSeconds int `json:"url_lifetime_seconds"`
+}
+
+type LinkTokenCreateIdentity struct {
+	AccountIds string `json:"account_ids"`
+	IsDocumentUpload bool `json:"is_document_upload"`
+	ParsingConfigs string `json:"parsing_configs"`
+}
+
+type LinkTokenCreateInstitutionData struct {
+	RoutingNumber string `json:"routing_number"`
+}
+
+type LinkTokenCreateInvestmentFilter struct {
+	AccountSubtypes string `json:"account_subtypes"`
+}
+
+type LinkTokenCreateLoanFilter struct {
+	AccountSubtypes string `json:"account_subtypes"`
+}
+
+type LinkTokenCreateRequest struct {
+	AccessToken string `json:"access_token"`
+	AccessTokens string `json:"access_tokens"`
+	AccountFilters string `json:"account_filters"`
+	AdditionalConsentedProducts string `json:"additional_consented_products"`
+	AndroidPackageName string `json:"android_package_name"`
+	AppearanceMode string `json:"appearance_mode"`
+	Auth string `json:"auth"`
+	BaseReport string `json:"base_report"`
+	CardSwitch string `json:"card_switch"`
+	CashflowReport string `json:"cashflow_report"`
+	ClientId string `json:"client_id"`
+	ClientName string `json:"client_name"`
+	ConsumerReportPermissiblePurpose string `json:"consumer_report_permissible_purpose"`
+	CountryCodes string `json:"country_codes"`
+	CraEnabled bool `json:"cra_enabled"`
+	CraOptions string `json:"cra_options"`
+	CreditPartnerInsights string `json:"credit_partner_insights"`
+	Employment string `json:"employment"`
+	EnableMultiItemLink bool `json:"enable_multi_item_link"`
+	EuConfig string `json:"eu_config"`
+	FinancekitSupported bool `json:"financekit_supported"`
+	HostedLink string `json:"hosted_link"`
+	Identity string `json:"identity"`
+	IdentityVerification string `json:"identity_verification"`
+	IncomeVerification string `json:"income_verification"`
+	InstitutionData string `json:"institution_data"`
+	InstitutionId string `json:"institution_id"`
+	Investments string `json:"investments"`
+	InvestmentsAuth string `json:"investments_auth"`
+	Language string `json:"language"`
+	LinkCustomizationName string `json:"link_customization_name"`
+	OptionalProducts string `json:"optional_products"`
+	PaymentConfiguration string `json:"payment_configuration"`
+	PaymentInitiation string `json:"payment_initiation"`
+	Products string `json:"products"`
+	RedirectUri string `json:"redirect_uri"`
+	RequiredIfSupportedProducts string `json:"required_if_supported_products"`
+	Secret string `json:"secret"`
+	Statements string `json:"statements"`
+	ThirdPartyUserToken string `json:"third_party_user_token"`
+	Transactions string `json:"transactions"`
+	Transfer string `json:"transfer"`
+	Update string `json:"update"`
+	User string `json:"user"`
+	UserId string `json:"user_id"`
+	UserToken string `json:"user_token"`
+	Webhook string `json:"webhook"`
+}
+
+type LinkTokenCreateRequestAccountSubtypes struct {
+	Credit string `json:"credit"`
+	Depository string `json:"depository"`
+	Investment string `json:"investment"`
+	Loan string `json:"loan"`
+}
+
+type LinkTokenCreateRequestAuth struct {
+	AuthTypeSelectEnabled bool `json:"auth_type_select_enabled"`
+	AutomatedMicrodepositsEnabled bool `json:"automated_microdeposits_enabled"`
+	DatabaseInsightsEnabled bool `json:"database_insights_enabled"`
+	DatabaseMatchEnabled bool `json:"database_match_enabled"`
+	FlowType string `json:"flow_type"`
+	InstantMatchEnabled bool `json:"instant_match_enabled"`
+	InstantMicrodepositsEnabled bool `json:"instant_microdeposits_enabled"`
+	RerouteToCredentials string `json:"reroute_to_credentials"`
+	SameDayMicrodepositsEnabled bool `json:"same_day_microdeposits_enabled"`
+	SmsMicrodepositsVerificationEnabled bool `json:"sms_microdeposits_verification_enabled"`
+}
+
+type LinkTokenCreateRequestBaseReport struct {
+	ClientReportId string `json:"client_report_id"`
+	DaysRequested int `json:"days_requested"`
+}
+
+type LinkTokenCreateRequestCraOptions struct {
+	BaseReport string `json:"base_report"`
+	CashflowInsights string `json:"cashflow_insights"`
+	ClientReportId string `json:"client_report_id"`
+	DaysRequested int `json:"days_requested"`
+	DaysRequired int `json:"days_required"`
+	IncludeInvestments bool `json:"include_investments"`
+	LendScore string `json:"lend_score"`
+	NetworkInsights string `json:"network_insights"`
+	PartnerInsights string `json:"partner_insights"`
+}
+
+type LinkTokenCreateRequestCraOptionsBaseReport struct {
+	ClientReportId string `json:"client_report_id"`
+	GseOptions string `json:"gse_options"`
+	RequireIdentity bool `json:"require_identity"`
+}
+
+type LinkTokenCreateRequestCraOptionsBaseReportGSEOptions struct {
+	ReportTypes string `json:"report_types"`
+}
+
+type LinkTokenCreateRequestCraOptionsCashflowInsights struct {
+	AttributesVersion string `json:"attributes_version"`
+	PlaidCheckScoreVersion string `json:"plaid_check_score_version"`
+}
+
+type LinkTokenCreateRequestCraOptionsLendScore struct {
+	LendScoreVersion string `json:"lend_score_version"`
+}
+
+type LinkTokenCreateRequestCraOptionsNetworkInsights struct {
+	NetworkInsightsVersion string `json:"network_insights_version"`
+}
+
+type LinkTokenCreateRequestCraOptionsPartnerInsights struct {
+	Fico string `json:"fico"`
+	PrismProducts string `json:"prism_products"`
+	PrismVersions string `json:"prism_versions"`
+}
+
+type LinkTokenCreateRequestCreditPartnerInsights struct {
+	DaysRequested int `json:"days_requested"`
+	PrismProducts string `json:"prism_products"`
+}
+
+type LinkTokenCreateRequestDepositSwitch struct {
+	DepositSwitchId string `json:"deposit_switch_id"`
+}
+
+type LinkTokenCreateRequestEmployment struct {
+	BankEmployment string `json:"bank_employment"`
+	EmploymentSourceTypes string `json:"employment_source_types"`
+}
+
+type LinkTokenCreateRequestEmploymentBankIncome struct {
+	DaysRequested int `json:"days_requested"`
+}
+
+type LinkTokenCreateRequestIdentityVerification struct {
+	Consent string `json:"consent"`
+	GaveConsent bool `json:"gave_consent"`
+	TemplateId string `json:"template_id"`
+}
+
+type LinkTokenCreateRequestIncomeVerification struct {
+	AccessTokens string `json:"access_tokens"`
+	AssetReportId string `json:"asset_report_id"`
+	BankIncome string `json:"bank_income"`
+	IncomeSourceTypes string `json:"income_source_types"`
+	IncomeVerificationId string `json:"income_verification_id"`
+	PayrollIncome string `json:"payroll_income"`
+	StatedIncomeSources string `json:"stated_income_sources"`
+}
+
+type LinkTokenCreateRequestIncomeVerificationBankIncome struct {
+	DaysRequested int `json:"days_requested"`
+	EnableMultipleItems bool `json:"enable_multiple_items"`
+}
+
+type LinkTokenCreateRequestIncomeVerificationPayrollIncome struct {
+	FlowTypes string `json:"flow_types"`
+	IsUpdateMode bool `json:"is_update_mode"`
+	ItemIdToUpdate string `json:"item_id_to_update"`
+	ParsingConfig string `json:"parsing_config"`
+}
+
+type LinkTokenCreateRequestPaymentConfiguration struct {
+	Amount string `json:"amount"`
+	Description string `json:"description"`
+}
+
+type LinkTokenCreateRequestPaymentInitiation struct {
+	ConsentId string `json:"consent_id"`
+	PaymentId string `json:"payment_id"`
+}
+
+type LinkTokenCreateRequestStatements struct {
+	EndDate string `json:"end_date"`
+	StartDate string `json:"start_date"`
+}
+
+type LinkTokenCreateRequestTransfer struct {
+	AuthorizationId string `json:"authorization_id"`
+	IntentId string `json:"intent_id"`
+	PaymentProfileToken string `json:"payment_profile_token"`
+}
+
+type LinkTokenCreateRequestUpdate struct {
+	AccountSelectionEnabled bool `json:"account_selection_enabled"`
+	ItemIds string `json:"item_ids"`
+	ReauthorizationEnabled bool `json:"reauthorization_enabled"`
+	User bool `json:"user"`
+}
+
+type LinkTokenCreateRequestUser struct {
+	Address string `json:"address"`
+	ClientUserId string `json:"client_user_id"`
+	DateOfBirth string `json:"date_of_birth"`
+	EmailAddress string `json:"email_address"`
+	EmailAddressVerifiedTime string `json:"email_address_verified_time"`
+	IdNumber string `json:"id_number"`
+	LegalName string `json:"legal_name"`
+	Name string `json:"name"`
+	PhoneNumber string `json:"phone_number"`
+	PhoneNumberVerifiedTime string `json:"phone_number_verified_time"`
+	Ssn string `json:"ssn"`
+}
+
+type LinkTokenCreateRequestUserStatedIncomeSource struct {
+	Category string `json:"category"`
+	Employer string `json:"employer"`
+	PayAnnual float64 `json:"pay_annual"`
+	PayFrequency string `json:"pay_frequency"`
+	PayPerCycle float64 `json:"pay_per_cycle"`
+	PayType string `json:"pay_type"`
+}
+
+type LinkTokenCreateResponse struct {
+	Expiration string `json:"expiration"`
+	HostedLinkUrl string `json:"hosted_link_url"`
+	LinkToken string `json:"link_token"`
+	RequestId string `json:"request_id"`
+	UserId string `json:"user_id"`
+}
+
+type LinkTokenEUConfig struct {
+	Headless bool `json:"headless"`
+}
+
+type LinkTokenGetMetadataResponse struct {
+	AccountFilters string `json:"account_filters"`
+	ClientName string `json:"client_name"`
+	CountryCodes string `json:"country_codes"`
+	InitialProducts string `json:"initial_products"`
+	InstitutionData string `json:"institution_data"`
+	Language string `json:"language"`
+	RedirectUri string `json:"redirect_uri"`
+	Webhook string `json:"webhook"`
+}
+
+type LinkTokenGetRequest struct {
+	ClientId string `json:"client_id"`
+	LinkToken string `json:"link_token"`
+	Secret string `json:"secret"`
+}
+
+type LinkTokenGetResponse struct {
+	CreatedAt string `json:"created_at"`
+	Expiration string `json:"expiration"`
+	LinkSessions string `json:"link_sessions"`
+	LinkToken string `json:"link_token"`
+	Metadata string `json:"metadata"`
+	RequestId string `json:"request_id"`
+	UserId string `json:"user_id"`
+}
+
+type LinkTokenGetSessionsResponse struct {
+	Events string `json:"events"`
+	Exit string `json:"exit"`
+	FinishedAt string `json:"finished_at"`
+	LinkSessionId string `json:"link_session_id"`
+	OnExit string `json:"on_exit"`
+	OnSuccess string `json:"on_success"`
+	Results string `json:"results"`
+	StartedAt string `json:"started_at"`
+}
+
+type LinkTokenInvestments struct {
+	AllowManualEntry bool `json:"allow_manual_entry"`
+	AllowUnverifiedCryptoWallets bool `json:"allow_unverified_crypto_wallets"`
+}
+
+type LinkTokenInvestmentsAuth struct {
+	ManualEntryEnabled bool `json:"manual_entry_enabled"`
+	MaskedNumberMatchEnabled bool `json:"masked_number_match_enabled"`
+	Rollover401kEnabled bool `json:"rollover_401k_enabled"`
+	StatedAccountNumberEnabled bool `json:"stated_account_number_enabled"`
+}
+
+type LinkTokenTransactions struct {
+	DaysRequested int `json:"days_requested"`
+}
+
+type LinkUserDeliveryStatusWebhook struct {
+	LinkDeliveryMetadata string `json:"link_delivery_metadata"`
+	LinkDeliverySessionId string `json:"link_delivery_session_id"`
+	Timestamp string `json:"timestamp"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type Loan struct {
+	LOANIDENTIFIERS string `json:"LOAN_IDENTIFIERS"`
+}
+
+type LoanAccount struct {
+	Auto string `json:"auto"`
+	Business string `json:"business"`
+	Commercial string `json:"commercial"`
+	Construction string `json:"construction"`
+	Consumer string `json:"consumer"`
+	HomeEquity string `json:"home_equity"`
+	LineOfCredit string `json:"line_of_credit"`
+	Loan string `json:"loan"`
+	Mortgage string `json:"mortgage"`
+	Other string `json:"other"`
+	Overdraft string `json:"overdraft"`
+	Student string `json:"student"`
+}
+
+type LoanDisbursementsIndicators struct {
+	Amount float64 `json:"amount"`
+	CategoryDetails string `json:"category_details"`
+	DaysSinceLastOccurrence int `json:"days_since_last_occurrence"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	MonthlyAverage string `json:"monthly_average"`
+	MonthlySummaries string `json:"monthly_summaries"`
+	PercentageOfIncome float64 `json:"percentage_of_income"`
+	TopProviders string `json:"top_providers"`
+	TransactionsCount int `json:"transactions_count"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type LoanFilter struct {
+	AccountSubtypes string `json:"account_subtypes"`
+}
+
+type LoanIdentifier struct {
+	LoanIdentifier string `json:"LoanIdentifier"`
+	LoanIdentifierType string `json:"LoanIdentifierType"`
+}
+
+type LoanIdentifiers struct {
+	LOANIDENTIFIER string `json:"LOAN_IDENTIFIER"`
+}
+
+type LoanPaymentsCounts struct {
+	BaselineCount float64 `json:"baseline_count"`
+	CurrentCount float64 `json:"current_count"`
+}
+
+type LoanPaymentsIndicators struct {
+	Amount float64 `json:"amount"`
+	CategoryDetails string `json:"category_details"`
+	DaysSinceLastOccurrence int `json:"days_since_last_occurrence"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	MonthlyAverage string `json:"monthly_average"`
+	MonthlySummaries string `json:"monthly_summaries"`
+	PercentageOfIncome float64 `json:"percentage_of_income"`
+	TopProviders string `json:"top_providers"`
+	TransactionsCount int `json:"transactions_count"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type LoanPaymentsMerchantCounts struct {
+	BaselineCount float64 `json:"baseline_count"`
+	CurrentCount float64 `json:"current_count"`
+}
+
+type Loans struct {
+	LOAN string `json:"LOAN"`
+}
+
+type Location struct {
+	Address string `json:"address"`
+	City string `json:"city"`
+	Country string `json:"country"`
+	Lat float64 `json:"lat"`
+	Lon float64 `json:"lon"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+	StoreNumber string `json:"store_number"`
+}
+
+type MFA struct {
+	QuestionRounds float64 `json:"question_rounds"`
+	QuestionsPerRound float64 `json:"questions_per_round"`
+	SelectionRounds float64 `json:"selection_rounds"`
+	SelectionsPerQuestion float64 `json:"selections_per_question"`
+	Type string `json:"type"`
+}
+
+type MatchSummary struct {
+	Summary string `json:"summary"`
+}
+
+type MerchantInsights struct {
+	EntityId string `json:"entity_id"`
+	Name string `json:"name"`
+	PersonalFinanceCategoryDetailed string `json:"personal_finance_category_detailed"`
+	PersonalFinanceCategoryPrimary string `json:"personal_finance_category_primary"`
+	TotalInflows float64 `json:"total_inflows"`
+	TotalOutflows float64 `json:"total_outflows"`
+	TransactionCount int `json:"transaction_count"`
+	Website string `json:"website"`
+}
+
+type Meta struct {
+	Limit float64 `json:"limit"`
+	Mask string `json:"mask"`
+	Name string `json:"name"`
+	OfficialName string `json:"official_name"`
+}
+
+type MonitoringIncomeInsights struct {
+	ForecastedMonthlyIncome string `json:"forecasted_monthly_income"`
+	HistoricalAnnualIncome string `json:"historical_annual_income"`
+	IncomeSources string `json:"income_sources"`
+	IncomeSourcesCounts string `json:"income_sources_counts"`
+	TotalMonthlyIncome string `json:"total_monthly_income"`
+}
+
+type MonitoringIncomeSource struct {
+	IncomeCategory string `json:"income_category"`
+	IncomeDescription string `json:"income_description"`
+	IncomeSourceId string `json:"income_source_id"`
+	LastTransactionDate string `json:"last_transaction_date"`
+}
+
+type MonitoringInsights struct {
+	Income string `json:"income"`
+	Loans string `json:"loans"`
+}
+
+type MonitoringInsightsItemStatus struct {
+	Reason string `json:"reason"`
+	StatusCode string `json:"status_code"`
+}
+
+type MonitoringLoanInsights struct {
+	LoanDisbursementsCount float64 `json:"loan_disbursements_count"`
+	LoanPaymentMerchantsCounts string `json:"loan_payment_merchants_counts"`
+	LoanPaymentsCounts string `json:"loan_payments_counts"`
+}
+
+type MonthlyAverage struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type MonthlySummary struct {
+	EndDate string `json:"end_date"`
+	StartDate string `json:"start_date"`
+	TotalAmount string `json:"total_amount"`
+}
+
+type MortgageInterestRate struct {
+	Percentage float64 `json:"percentage"`
+	Type string `json:"type"`
+}
+
+type MortgageLiability struct {
+	AccountId string `json:"account_id"`
+	AccountNumber string `json:"account_number"`
+	CurrentLateFee float64 `json:"current_late_fee"`
+	EscrowBalance float64 `json:"escrow_balance"`
+	HasPmi bool `json:"has_pmi"`
+	HasPrepaymentPenalty bool `json:"has_prepayment_penalty"`
+	InterestRate string `json:"interest_rate"`
+	LastPaymentAmount float64 `json:"last_payment_amount"`
+	LastPaymentDate string `json:"last_payment_date"`
+	LoanTerm string `json:"loan_term"`
+	LoanTypeDescription string `json:"loan_type_description"`
+	MaturityDate string `json:"maturity_date"`
+	NextMonthlyPayment float64 `json:"next_monthly_payment"`
+	NextPaymentDueDate string `json:"next_payment_due_date"`
+	OriginationDate string `json:"origination_date"`
+	OriginationPrincipalAmount float64 `json:"origination_principal_amount"`
+	PastDueAmount float64 `json:"past_due_amount"`
+	PropertyAddress string `json:"property_address"`
+	YtdInterestPaid float64 `json:"ytd_interest_paid"`
+	YtdPrincipalPaid float64 `json:"ytd_principal_paid"`
+}
+
+type MortgagePropertyAddress struct {
+	City string `json:"city"`
+	Country string `json:"country"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+	Street string `json:"street"`
+}
+
+type MultiDocumentRiskSignal struct {
+	DocumentReferences string `json:"document_references"`
+	RiskSignals string `json:"risk_signals"`
+}
+
+type NameMatchScore struct {
+	IsBusinessNameDetected bool `json:"is_business_name_detected"`
+	IsFirstNameOrLastNameMatch bool `json:"is_first_name_or_last_name_match"`
+	IsNicknameMatch bool `json:"is_nickname_match"`
+	Score int `json:"score"`
+}
+
+type NegativeBalanceInsights struct {
+	DaysSinceLastOccurrence int `json:"days_since_last_occurrence"`
+	DaysWithNegativeBalance int `json:"days_with_negative_balance"`
+	MinimumBalance string `json:"minimum_balance"`
+	Occurrences string `json:"occurrences"`
+}
+
+type NegativeBalanceOccurrence struct {
+	EndDate string `json:"end_date"`
+	MinimumBalance string `json:"minimum_balance"`
+	StartDate string `json:"start_date"`
+}
+
+type NetPay struct {
+	CurrentAmount float64 `json:"current_amount"`
+	Description string `json:"description"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Total string `json:"total"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+	YtdAmount float64 `json:"ytd_amount"`
+}
+
+type NetworkInsightsItem struct {
+	InstitutionId string `json:"institution_id"`
+	InstitutionName string `json:"institution_name"`
+	ItemId string `json:"item_id"`
+}
+
+type NetworkInsightsReport struct {
+	GeneratedTime string `json:"generated_time"`
+	Items string `json:"items"`
+	NetworkAttributes string `json:"network_attributes"`
+	ReportId string `json:"report_id"`
+}
+
+type NetworkInsightsReportGetRequest struct {
+	AccessTokens string `json:"access_tokens"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type NetworkInsightsReportGetResponse struct {
+	Report string `json:"report"`
+	RequestId string `json:"request_id"`
+}
+
+type NetworkInsightsSchema struct {
+}
+
+type NetworkStatusGetRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	TemplateId string `json:"template_id"`
+	User string `json:"user"`
+}
+
+type NetworkStatusGetResponse struct {
+	Layer string `json:"layer"`
+	NetworkStatus string `json:"network_status"`
+	RequestId string `json:"request_id"`
+}
+
+type NetworkStatusGetResponseLayer struct {
+	Eligible bool `json:"eligible"`
+}
+
+type NetworkStatusGetUser struct {
+	PhoneNumber string `json:"phone_number"`
+}
+
+type NewAccountsAvailableWebhook struct {
+	Environment string `json:"environment"`
+	Error string `json:"error"`
+	ItemId string `json:"item_id"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type Numbers struct {
+	Account string `json:"account"`
+	AchRouting string `json:"ach_routing"`
+	AchWireRouting string `json:"ach_wire_routing"`
+	BacsSortCode string `json:"bacs_sort_code"`
+	EftBranch string `json:"eft_branch"`
+	EftInstitution string `json:"eft_institution"`
+	InternationalBic string `json:"international_bic"`
+	InternationalIban string `json:"international_iban"`
+}
+
+type NumbersACATS struct {
+	Account string `json:"account"`
+	AccountId string `json:"account_id"`
+	DtcNumbers string `json:"dtc_numbers"`
+}
+
+type NumbersACH struct {
+	Account string `json:"account"`
+	AccountId string `json:"account_id"`
+	CanTransferIn bool `json:"can_transfer_in"`
+	CanTransferOut bool `json:"can_transfer_out"`
+	IsTokenizedAccountNumber bool `json:"is_tokenized_account_number"`
+	Routing string `json:"routing"`
+	WireRouting string `json:"wire_routing"`
+}
+
+type NumbersACHNullable struct {
+	Account string `json:"account"`
+	AccountId string `json:"account_id"`
+	CanTransferIn bool `json:"can_transfer_in"`
+	CanTransferOut bool `json:"can_transfer_out"`
+	IsTokenizedAccountNumber bool `json:"is_tokenized_account_number"`
+	Routing string `json:"routing"`
+	WireRouting string `json:"wire_routing"`
+}
+
+type NumbersATON struct {
+	Account string `json:"account"`
+	AccountId string `json:"account_id"`
+}
+
+type NumbersBACS struct {
+	Account string `json:"account"`
+	AccountId string `json:"account_id"`
+	SortCode string `json:"sort_code"`
+}
+
+type NumbersBACSNullable struct {
+	Account string `json:"account"`
+	AccountId string `json:"account_id"`
+	SortCode string `json:"sort_code"`
+}
+
+type NumbersEFT struct {
+	Account string `json:"account"`
+	AccountId string `json:"account_id"`
+	Branch string `json:"branch"`
+	Institution string `json:"institution"`
+}
+
+type NumbersEFTNullable struct {
+	Account string `json:"account"`
+	AccountId string `json:"account_id"`
+	Branch string `json:"branch"`
+	Institution string `json:"institution"`
+}
+
+type NumbersIBANNullable struct {
+}
+
+type NumbersInternational struct {
+	AccountId string `json:"account_id"`
+	Bic string `json:"bic"`
+	Iban string `json:"iban"`
+}
+
+type NumbersInternationalIBAN struct {
+	Bic string `json:"bic"`
+	Iban string `json:"iban"`
+}
+
+type NumbersInternationalNullable struct {
+	AccountId string `json:"account_id"`
+	Bic string `json:"bic"`
+	Iban string `json:"iban"`
+}
+
+type NumbersRetirement401k struct {
+	Account string `json:"account"`
+	AccountId string `json:"account_id"`
+	Plan string `json:"plan"`
+}
+
+type OAuthErrorResponse struct {
+	Error string `json:"error"`
+	ErrorDescription string `json:"error_description"`
+	ErrorUri string `json:"error_uri"`
+	RequestId string `json:"request_id"`
+}
+
+type OAuthIntrospectRequest struct {
+	ClientId string `json:"client_id"`
+	ClientSecret string `json:"client_secret"`
+	Secret string `json:"secret"`
+	Token string `json:"token"`
+}
+
+type OAuthIntrospectResponse struct {
+	Active bool `json:"active"`
+	Aud string `json:"aud"`
+	ClientId string `json:"client_id"`
+	Exp int `json:"exp"`
+	Iat int `json:"iat"`
+	Iss string `json:"iss"`
+	RequestId string `json:"request_id"`
+	Scope string `json:"scope"`
+	Sub string `json:"sub"`
+	TokenType string `json:"token_type"`
+	UserId string `json:"user_id"`
+}
+
+type OAuthRevokeRequest struct {
+	ClientId string `json:"client_id"`
+	ClientSecret string `json:"client_secret"`
+	Secret string `json:"secret"`
+	Token string `json:"token"`
+}
+
+type OAuthRevokeResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type OAuthTokenRequest struct {
+	Audience string `json:"audience"`
+	ClientId string `json:"client_id"`
+	ClientSecret string `json:"client_secret"`
+	GrantType string `json:"grant_type"`
+	RefreshToken string `json:"refresh_token"`
+	Resource string `json:"resource"`
+	Scope string `json:"scope"`
+	Secret string `json:"secret"`
+	SubjectToken string `json:"subject_token"`
+	SubjectTokenType string `json:"subject_token_type"`
+}
+
+type OAuthTokenResponse struct {
+	AccessToken string `json:"access_token"`
+	ExpiresIn int `json:"expires_in"`
+	RefreshToken string `json:"refresh_token"`
+	RequestId string `json:"request_id"`
+	TokenType string `json:"token_type"`
+}
+
+type OptionContract struct {
+	ContractType string `json:"contract_type"`
+	ExpirationDate string `json:"expiration_date"`
+	StrikePrice float64 `json:"strike_price"`
+	UnderlyingSecurityTicker string `json:"underlying_security_ticker"`
+}
+
+type OriginatingFundSource struct {
+	AccountNumber string `json:"account_number"`
+	Address string `json:"address"`
+	Bic string `json:"bic"`
+	FullName string `json:"full_name"`
+}
+
+type Originator struct {
+	ClientId string `json:"client_id"`
+	TransferDiligenceStatus string `json:"transfer_diligence_status"`
+}
+
+type OtherFilter struct {
+	AccountSubtypes string `json:"account_subtypes"`
+}
+
+type OutlierTransactionsInsights struct {
+	TopCategories string `json:"top_categories"`
+	TotalAmount string `json:"total_amount"`
+	TransactionsCount int `json:"transactions_count"`
+}
+
+type OverrideAccounts struct {
+	Currency string `json:"currency"`
+	ForceAvailableBalance float64 `json:"force_available_balance"`
+	HasNullAvailableBalance bool `json:"has_null_available_balance"`
+	Holdings string `json:"holdings"`
+	Identity string `json:"identity"`
+	Income string `json:"income"`
+	InflowModel string `json:"inflow_model"`
+	InvestmentTransactions string `json:"investment_transactions"`
+	Liability string `json:"liability"`
+	Meta string `json:"meta"`
+	Numbers string `json:"numbers"`
+	StartingBalance float64 `json:"starting_balance"`
+	Subtype string `json:"subtype"`
+	Transactions string `json:"transactions"`
+	Type string `json:"type"`
+}
+
+type Owner struct {
+	Addresses string `json:"addresses"`
+	Emails string `json:"emails"`
+	Names string `json:"names"`
+	PhoneNumbers string `json:"phone_numbers"`
+}
+
+type OwnerOverride struct {
+	Addresses string `json:"addresses"`
+	Emails string `json:"emails"`
+	Names string `json:"names"`
+	PhoneNumbers string `json:"phone_numbers"`
+}
+
+type PSLFStatus struct {
+	EstimatedEligibilityDate string `json:"estimated_eligibility_date"`
+	PaymentsMade int `json:"payments_made"`
+	PaymentsRemaining int `json:"payments_remaining"`
+}
+
+type Parties struct {
+	PARTY string `json:"PARTY"`
+}
+
+type PartnerCustomerCreateRequest struct {
+	Address string `json:"address"`
+	ApplicationName string `json:"application_name"`
+	AssetsUnderManagement string `json:"assets_under_management"`
+	BillingContact string `json:"billing_contact"`
+	ClientId string `json:"client_id"`
+	CompanyName string `json:"company_name"`
+	CreateLinkCustomization bool `json:"create_link_customization"`
+	CustomerSupportInfo string `json:"customer_support_info"`
+	IsBankAddendumCompleted bool `json:"is_bank_addendum_completed"`
+	IsDiligenceAttested bool `json:"is_diligence_attested"`
+	LegalEntityName string `json:"legal_entity_name"`
+	Logo string `json:"logo"`
+	Products string `json:"products"`
+	RedirectUris string `json:"redirect_uris"`
+	RegistrationNumber string `json:"registration_number"`
+	Secret string `json:"secret"`
+	TechnicalContact string `json:"technical_contact"`
+	Website string `json:"website"`
+}
+
+type PartnerCustomerCreateResponse struct {
+	EndCustomer string `json:"end_customer"`
+	RequestId string `json:"request_id"`
+}
+
+type PartnerCustomerEnableRequest struct {
+	ClientId string `json:"client_id"`
+	EndCustomerClientId string `json:"end_customer_client_id"`
+	Secret string `json:"secret"`
+}
+
+type PartnerCustomerEnableResponse struct {
+	ProductionSecret string `json:"production_secret"`
+	RequestId string `json:"request_id"`
+}
+
+type PartnerCustomerGetRequest struct {
+	ClientId string `json:"client_id"`
+	EndCustomerClientId string `json:"end_customer_client_id"`
+	Secret string `json:"secret"`
+}
+
+type PartnerCustomerGetResponse struct {
+	EndCustomer string `json:"end_customer"`
+	RequestId string `json:"request_id"`
+}
+
+type PartnerCustomerOAuthInstitutionsGetRequest struct {
+	ClientId string `json:"client_id"`
+	EndCustomerClientId string `json:"end_customer_client_id"`
+	Secret string `json:"secret"`
+}
+
+type PartnerCustomerOAuthInstitutionsGetResponse struct {
+	FlowdownStatus string `json:"flowdown_status"`
+	Institutions string `json:"institutions"`
+	QuestionnaireStatus string `json:"questionnaire_status"`
+	RequestId string `json:"request_id"`
+}
+
+type PartnerCustomerRemoveRequest struct {
+	ClientId string `json:"client_id"`
+	EndCustomerClientId string `json:"end_customer_client_id"`
+	Secret string `json:"secret"`
+}
+
+type PartnerCustomerRemoveResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type PartnerEndCustomer struct {
+	ClientId string `json:"client_id"`
+	CompanyName string `json:"company_name"`
+	Status string `json:"status"`
+}
+
+type PartnerEndCustomerAddress struct {
+	City string `json:"city"`
+	CountryCode string `json:"country_code"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+	Street string `json:"street"`
+}
+
+type PartnerEndCustomerAssetsUnderManagement struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+}
+
+type PartnerEndCustomerBankAddendumAcceptance struct {
+	CustomerAccepted bool `json:"customer_accepted"`
+	CustomerAgreementTimestamp string `json:"customer_agreement_timestamp"`
+	CustomerIpAddress string `json:"customer_ip_address"`
+}
+
+type PartnerEndCustomerBillingContact struct {
+	Email string `json:"email"`
+	FamilyName string `json:"family_name"`
+	GivenName string `json:"given_name"`
+}
+
+type PartnerEndCustomerCRAPurposes struct {
+	BUSINESSNEEDACCOUNTREVIEW string `json:"BUSINESS_NEED_ACCOUNT_REVIEW"`
+	BUSINESSNEEDTRANSACTION string `json:"BUSINESS_NEED_TRANSACTION"`
+	EMPLOYMENT string `json:"EMPLOYMENT"`
+	EXTENSIONOFCREDITORACCOUNTREVIEW string `json:"EXTENSION_OF_CREDIT_OR_ACCOUNT_REVIEW"`
+	INSURANCEUNDERWRITING string `json:"INSURANCE_UNDERWRITING"`
+	LICENSEELIGIBILITY string `json:"LICENSE_ELIGIBILITY"`
+	RISKASSESSMENT string `json:"RISK_ASSESSMENT"`
+	WRITTENINSTRUCTION string `json:"WRITTEN_INSTRUCTION"`
+}
+
+type PartnerEndCustomerCRAQuestionnaire struct {
+	IsTechnicalServiceProviderInvolved bool `json:"is_technical_service_provider_involved"`
+	IsThirdPartyInvolved bool `json:"is_third_party_involved"`
+	Purposes string `json:"purposes"`
+}
+
+type PartnerEndCustomerCRAUseCases struct {
+	UseCases string `json:"use_cases"`
+}
+
+type PartnerEndCustomerCustomerSupportInfo struct {
+	ContactUrl string `json:"contact_url"`
+	Email string `json:"email"`
+	LinkUpdateUrl string `json:"link_update_url"`
+	PhoneNumber string `json:"phone_number"`
+}
+
+type PartnerEndCustomerOAuthInstitution struct {
+	ClassicDisablementDate string `json:"classic_disablement_date"`
+	Environments string `json:"environments"`
+	Errors string `json:"errors"`
+	InstitutionId string `json:"institution_id"`
+	Name string `json:"name"`
+	ProductionEnablementDate string `json:"production_enablement_date"`
+}
+
+type PartnerEndCustomerOAuthInstitutionEnvironments struct {
+	Development string `json:"development"`
+	Production string `json:"production"`
+}
+
+type PartnerEndCustomerOAuthStatusUpdatedWebhook struct {
+	EndCustomerClientId string `json:"end_customer_client_id"`
+	Environment string `json:"environment"`
+	InstitutionId string `json:"institution_id"`
+	InstitutionName string `json:"institution_name"`
+	Status string `json:"status"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type PartnerEndCustomerProductStatuses struct {
+}
+
+type PartnerEndCustomerQuestionnaires struct {
+	Cra string `json:"cra"`
+}
+
+type PartnerEndCustomerSecrets struct {
+	Development string `json:"development"`
+	Production string `json:"production"`
+	Sandbox string `json:"sandbox"`
+}
+
+type PartnerEndCustomerTechnicalContact struct {
+	Email string `json:"email"`
+	FamilyName string `json:"family_name"`
+	GivenName string `json:"given_name"`
+}
+
+type PartnerEndCustomerWithSecrets struct {
+	ClientId string `json:"client_id"`
+	CompanyName string `json:"company_name"`
+	Secrets string `json:"secrets"`
+	Status string `json:"status"`
+}
+
+type Party struct {
+	INDIVIDUAL string `json:"INDIVIDUAL"`
+	ROLES string `json:"ROLES"`
+	TAXPAYERIDENTIFIERS string `json:"TAXPAYER_IDENTIFIERS"`
+}
+
+type PartyIndividual struct {
+	NAME string `json:"NAME"`
+}
+
+type Pay struct {
+	Amount float64 `json:"amount"`
+	Currency string `json:"currency"`
+}
+
+type PayFrequency struct {
+	Value string `json:"value"`
+	VerificationStatus string `json:"verification_status"`
+}
+
+type PayPeriodDetails struct {
+	CheckAmount float64 `json:"check_amount"`
+	DistributionBreakdown string `json:"distribution_breakdown"`
+	EndDate string `json:"end_date"`
+	GrossEarnings float64 `json:"gross_earnings"`
+	PayDate string `json:"pay_date"`
+	PayDay string `json:"pay_day"`
+	PayFrequency string `json:"pay_frequency"`
+	StartDate string `json:"start_date"`
+}
+
+type PayStubDeductionsBreakdown struct {
+	CurrentAmount float64 `json:"current_amount"`
+	Description string `json:"description"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+	YtdAmount float64 `json:"ytd_amount"`
+}
+
+type PayStubDeductionsTotal struct {
+	CurrentAmount float64 `json:"current_amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+	YtdAmount float64 `json:"ytd_amount"`
+}
+
+type PayStubDistributionBreakdown struct {
+	AccountName string `json:"account_name"`
+	BankName string `json:"bank_name"`
+	CurrentAmount float64 `json:"current_amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Mask string `json:"mask"`
+	Type string `json:"type"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type PayStubEarningsBreakdown struct {
+	CanonicalDescription string `json:"canonical_description"`
+	CurrentAmount float64 `json:"current_amount"`
+	Description string `json:"description"`
+	Hours float64 `json:"hours"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Rate float64 `json:"rate"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+	YtdAmount float64 `json:"ytd_amount"`
+}
+
+type PayStubEarningsTotal struct {
+	CurrentAmount float64 `json:"current_amount"`
+	Hours float64 `json:"hours"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+	YtdAmount float64 `json:"ytd_amount"`
+}
+
+type PayStubPayPeriodDetails struct {
+	DistributionBreakdown string `json:"distribution_breakdown"`
+	EndDate string `json:"end_date"`
+	GrossEarnings float64 `json:"gross_earnings"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	PayAmount float64 `json:"pay_amount"`
+	PayBasis string `json:"pay_basis"`
+	PayDate string `json:"pay_date"`
+	PayFrequency string `json:"pay_frequency"`
+	StartDate string `json:"start_date"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type PayStubTaxpayerID struct {
+	IdMask string `json:"id_mask"`
+	IdType string `json:"id_type"`
+}
+
+type PaymentAmount struct {
+	Currency string `json:"currency"`
+	Value float64 `json:"value"`
+}
+
+type PaymentAmountNullable struct {
+	Currency string `json:"currency"`
+	Value float64 `json:"value"`
+}
+
+type PaymentAmountRefunded struct {
+	Currency string `json:"currency"`
+	Value float64 `json:"value"`
+}
+
+type PaymentAmountToRefund struct {
+	Currency string `json:"currency"`
+	Value float64 `json:"value"`
+}
+
+type PaymentConsentMaxPaymentAmount struct {
+	Currency string `json:"currency"`
+	Value float64 `json:"value"`
+}
+
+type PaymentConsentPeriodicAmount struct {
+	Alignment string `json:"alignment"`
+	Amount string `json:"amount"`
+	Interval string `json:"interval"`
+}
+
+type PaymentConsentPeriodicAmountAmount struct {
+	Currency string `json:"currency"`
+	Value float64 `json:"value"`
+}
+
+type PaymentConsentValidDateTime struct {
+	From string `json:"from"`
+	To string `json:"to"`
+}
+
+type PaymentInitiationAddress struct {
+	City string `json:"city"`
+	Country string `json:"country"`
+	PostalCode string `json:"postal_code"`
+	Street string `json:"street"`
+}
+
+type PaymentInitiationConsent struct {
+	ConsentId string `json:"consent_id"`
+	Constraints string `json:"constraints"`
+	CreatedAt string `json:"created_at"`
+	PayerDetails string `json:"payer_details"`
+	RecipientId string `json:"recipient_id"`
+	Reference string `json:"reference"`
+	Scopes string `json:"scopes"`
+	Status string `json:"status"`
+	Type string `json:"type"`
+}
+
+type PaymentInitiationConsentConstraints struct {
+	MaxPaymentAmount string `json:"max_payment_amount"`
+	PeriodicAmounts string `json:"periodic_amounts"`
+	ValidDateTime string `json:"valid_date_time"`
+}
+
+type PaymentInitiationConsentCreateRequest struct {
+	ClientId string `json:"client_id"`
+	Constraints string `json:"constraints"`
+	Options string `json:"options"`
+	PayerDetails string `json:"payer_details"`
+	RecipientId string `json:"recipient_id"`
+	Reference string `json:"reference"`
+	Scopes string `json:"scopes"`
+	Secret string `json:"secret"`
+	Type string `json:"type"`
+}
+
+type PaymentInitiationConsentCreateResponse struct {
+	ConsentId string `json:"consent_id"`
+	RequestId string `json:"request_id"`
+	Status string `json:"status"`
+}
+
+type PaymentInitiationConsentGetRequest struct {
+	ClientId string `json:"client_id"`
+	ConsentId string `json:"consent_id"`
+	Secret string `json:"secret"`
+}
+
+type PaymentInitiationConsentGetResponse struct {
+	ConsentId string `json:"consent_id"`
+	Constraints string `json:"constraints"`
+	CreatedAt string `json:"created_at"`
+	PayerDetails string `json:"payer_details"`
+	RecipientId string `json:"recipient_id"`
+	Reference string `json:"reference"`
+	RequestId string `json:"request_id"`
+	Scopes string `json:"scopes"`
+	Status string `json:"status"`
+	Type string `json:"type"`
+}
+
+type PaymentInitiationConsentPayerDetails struct {
+	Address string `json:"address"`
+	DateOfBirth string `json:"date_of_birth"`
+	Emails string `json:"emails"`
+	Name string `json:"name"`
+	Numbers string `json:"numbers"`
+	PhoneNumbers string `json:"phone_numbers"`
+}
+
+type PaymentInitiationConsentPayerNumbers struct {
+	Bacs string `json:"bacs"`
+	Iban string `json:"iban"`
+}
+
+type PaymentInitiationConsentPaymentExecuteRequest struct {
+	Amount string `json:"amount"`
+	ClientId string `json:"client_id"`
+	ConsentId string `json:"consent_id"`
+	IdempotencyKey string `json:"idempotency_key"`
+	ProcessingMode string `json:"processing_mode"`
+	Reference string `json:"reference"`
+	Scope string `json:"scope"`
+	Secret string `json:"secret"`
+}
+
+type PaymentInitiationConsentPaymentExecuteResponse struct {
+	Error string `json:"error"`
+	PaymentId string `json:"payment_id"`
+	RequestId string `json:"request_id"`
+	Status string `json:"status"`
+}
+
+type PaymentInitiationConsentRevokeRequest struct {
+	ClientId string `json:"client_id"`
+	ConsentId string `json:"consent_id"`
+	Secret string `json:"secret"`
+}
+
+type PaymentInitiationConsentRevokeResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type PaymentInitiationConsentStatusUpdateWebhook struct {
+	ConsentId string `json:"consent_id"`
+	Environment string `json:"environment"`
+	Error string `json:"error"`
+	NewStatus string `json:"new_status"`
+	OldStatus string `json:"old_status"`
+	Timestamp string `json:"timestamp"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type PaymentInitiationMaximumPaymentAmount struct {
+}
+
+type PaymentInitiationMetadata struct {
+	MaximumPaymentAmount string `json:"maximum_payment_amount"`
+	StandingOrderMetadata string `json:"standing_order_metadata"`
+	SupportsInternationalPayments bool `json:"supports_international_payments"`
+	SupportsPaymentConsents bool `json:"supports_payment_consents"`
+	SupportsRefundDetails bool `json:"supports_refund_details"`
+	SupportsSepaInstant bool `json:"supports_sepa_instant"`
+}
+
+type PaymentInitiationOptionalRestrictionBacs struct {
+	Account string `json:"account"`
+	SortCode string `json:"sort_code"`
+}
+
+type PaymentInitiationPayment struct {
+	AdjustedReference string `json:"adjusted_reference"`
+	AdjustedScheme string `json:"adjusted_scheme"`
+	Amount string `json:"amount"`
+	AmountRefunded string `json:"amount_refunded"`
+	Bacs string `json:"bacs"`
+	ConsentId string `json:"consent_id"`
+	EndToEndId string `json:"end_to_end_id"`
+	Error string `json:"error"`
+	Iban string `json:"iban"`
+	LastStatusUpdate string `json:"last_status_update"`
+	PaymentId string `json:"payment_id"`
+	RecipientId string `json:"recipient_id"`
+	Reference string `json:"reference"`
+	RefundDetails string `json:"refund_details"`
+	RefundIds string `json:"refund_ids"`
+	Schedule string `json:"schedule"`
+	Scheme string `json:"scheme"`
+	Status string `json:"status"`
+	TransactionId string `json:"transaction_id"`
+	WalletId string `json:"wallet_id"`
+}
+
+type PaymentInitiationPaymentCreateRequest struct {
+	Amount string `json:"amount"`
+	ClientId string `json:"client_id"`
+	Options string `json:"options"`
+	RecipientId string `json:"recipient_id"`
+	Reference string `json:"reference"`
+	Schedule string `json:"schedule"`
+	Secret string `json:"secret"`
+}
+
+type PaymentInitiationPaymentCreateResponse struct {
+	PaymentId string `json:"payment_id"`
+	RequestId string `json:"request_id"`
+	Status string `json:"status"`
+}
+
+type PaymentInitiationPaymentGetRequest struct {
+	ClientId string `json:"client_id"`
+	PaymentId string `json:"payment_id"`
+	Secret string `json:"secret"`
+}
+
+type PaymentInitiationPaymentGetResponse struct {
+	AdjustedReference string `json:"adjusted_reference"`
+	AdjustedScheme string `json:"adjusted_scheme"`
+	Amount string `json:"amount"`
+	AmountRefunded string `json:"amount_refunded"`
+	Bacs string `json:"bacs"`
+	ConsentId string `json:"consent_id"`
+	EndToEndId string `json:"end_to_end_id"`
+	Error string `json:"error"`
+	Iban string `json:"iban"`
+	LastStatusUpdate string `json:"last_status_update"`
+	PaymentId string `json:"payment_id"`
+	RecipientId string `json:"recipient_id"`
+	Reference string `json:"reference"`
+	RefundDetails string `json:"refund_details"`
+	RefundIds string `json:"refund_ids"`
+	RequestId string `json:"request_id"`
+	Schedule string `json:"schedule"`
+	Scheme string `json:"scheme"`
+	Status string `json:"status"`
+	TransactionId string `json:"transaction_id"`
+	WalletId string `json:"wallet_id"`
+}
+
+type PaymentInitiationPaymentListRequest struct {
+	ClientId string `json:"client_id"`
+	ConsentId string `json:"consent_id"`
+	Count int `json:"count"`
+	Cursor string `json:"cursor"`
+	Secret string `json:"secret"`
+}
+
+type PaymentInitiationPaymentListResponse struct {
+	NextCursor string `json:"next_cursor"`
+	Payments string `json:"payments"`
+	RequestId string `json:"request_id"`
+}
+
+type PaymentInitiationPaymentReverseRequest struct {
+	Amount string `json:"amount"`
+	ClientId string `json:"client_id"`
+	CounterpartyAddress string `json:"counterparty_address"`
+	CounterpartyDateOfBirth string `json:"counterparty_date_of_birth"`
+	IdempotencyKey string `json:"idempotency_key"`
+	PaymentId string `json:"payment_id"`
+	Reference string `json:"reference"`
+	Secret string `json:"secret"`
+}
+
+type PaymentInitiationPaymentReverseResponse struct {
+	RefundId string `json:"refund_id"`
+	RequestId string `json:"request_id"`
+	Status string `json:"status"`
+}
+
+type PaymentInitiationPaymentTokenCreateRequest struct {
+	ClientId string `json:"client_id"`
+	PaymentId string `json:"payment_id"`
+	Secret string `json:"secret"`
+}
+
+type PaymentInitiationPaymentTokenCreateResponse struct {
+	PaymentToken string `json:"payment_token"`
+	PaymentTokenExpirationTime string `json:"payment_token_expiration_time"`
+	RequestId string `json:"request_id"`
+}
+
+type PaymentInitiationRecipient struct {
+	Address string `json:"address"`
+	Bacs string `json:"bacs"`
+	Iban string `json:"iban"`
+	Name string `json:"name"`
+	RecipientId string `json:"recipient_id"`
+}
+
+type PaymentInitiationRecipientCreateRequest struct {
+	Address string `json:"address"`
+	Bacs string `json:"bacs"`
+	ClientId string `json:"client_id"`
+	Iban string `json:"iban"`
+	Name string `json:"name"`
+	Secret string `json:"secret"`
+}
+
+type PaymentInitiationRecipientCreateResponse struct {
+	RecipientId string `json:"recipient_id"`
+	RequestId string `json:"request_id"`
+}
+
+type PaymentInitiationRecipientGetRequest struct {
+	ClientId string `json:"client_id"`
+	RecipientId string `json:"recipient_id"`
+	Secret string `json:"secret"`
+}
+
+type PaymentInitiationRecipientGetResponse struct {
+	Address string `json:"address"`
+	Bacs string `json:"bacs"`
+	Iban string `json:"iban"`
+	Name string `json:"name"`
+	RecipientId string `json:"recipient_id"`
+	RequestId string `json:"request_id"`
+}
+
+type PaymentInitiationRecipientListRequest struct {
+	ClientId string `json:"client_id"`
+	Count int `json:"count"`
+	Cursor string `json:"cursor"`
+	Secret string `json:"secret"`
+}
+
+type PaymentInitiationRecipientListResponse struct {
+	NextCursor string `json:"next_cursor"`
+	Recipients string `json:"recipients"`
+	RequestId string `json:"request_id"`
+}
+
+type PaymentInitiationStandingOrderMetadata struct {
+	SupportsStandingOrderEndDate bool `json:"supports_standing_order_end_date"`
+	SupportsStandingOrderNegativeExecutionDays bool `json:"supports_standing_order_negative_execution_days"`
+	ValidStandingOrderIntervals string `json:"valid_standing_order_intervals"`
+}
+
+type PaymentMeta struct {
+	ByOrderOf string `json:"by_order_of"`
+	Payee string `json:"payee"`
+	Payer string `json:"payer"`
+	PaymentMethod string `json:"payment_method"`
+	PaymentProcessor string `json:"payment_processor"`
+	PpdId string `json:"ppd_id"`
+	Reason string `json:"reason"`
+	ReferenceNumber string `json:"reference_number"`
+}
+
+type PaymentProfileCreateRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type PaymentProfileCreateResponse struct {
+	PaymentProfileToken string `json:"payment_profile_token"`
+	RequestId string `json:"request_id"`
+}
+
+type PaymentProfileGetRequest struct {
+	ClientId string `json:"client_id"`
+	PaymentProfileToken string `json:"payment_profile_token"`
+	Secret string `json:"secret"`
+}
+
+type PaymentProfileGetResponse struct {
+	CreatedAt string `json:"created_at"`
+	DeletedAt string `json:"deleted_at"`
+	RequestId string `json:"request_id"`
+	Status string `json:"status"`
+	UpdatedAt string `json:"updated_at"`
+}
+
+type PaymentProfileRemoveRequest struct {
+	ClientId string `json:"client_id"`
+	PaymentProfileToken string `json:"payment_profile_token"`
+	Secret string `json:"secret"`
+}
+
+type PaymentProfileRemoveResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type PaymentStatusUpdateWebhook struct {
+	AdjustedReference string `json:"adjusted_reference"`
+	AdjustedStartDate string `json:"adjusted_start_date"`
+	Environment string `json:"environment"`
+	Error string `json:"error"`
+	NewPaymentStatus string `json:"new_payment_status"`
+	OldPaymentStatus string `json:"old_payment_status"`
+	OriginalReference string `json:"original_reference"`
+	OriginalStartDate string `json:"original_start_date"`
+	PaymentId string `json:"payment_id"`
+	Timestamp string `json:"timestamp"`
+	TransactionId string `json:"transaction_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type PayrollAccount struct {
+	Payroll string `json:"payroll"`
+}
+
+type PayrollIncomeAccountData struct {
+	AccountId string `json:"account_id"`
+	PayFrequency string `json:"pay_frequency"`
+	RateOfPay string `json:"rate_of_pay"`
+}
+
+type PayrollIncomeObject struct {
+	AccountId string `json:"account_id"`
+	Form1099s string `json:"form1099s"`
+	PayStubs string `json:"pay_stubs"`
+	W2s string `json:"w2s"`
+}
+
+type PayrollIncomeRateOfPay struct {
+	PayAmount float64 `json:"pay_amount"`
+	PayRate string `json:"pay_rate"`
+}
+
+type PayrollItem struct {
+	Accounts string `json:"accounts"`
+	InstitutionId string `json:"institution_id"`
+	InstitutionName string `json:"institution_name"`
+	ItemId string `json:"item_id"`
+	PayrollIncome string `json:"payroll_income"`
+	Status string `json:"status"`
+	UpdatedAt string `json:"updated_at"`
+}
+
+type PayrollItemStatus struct {
+	ProcessingStatus string `json:"processing_status"`
+}
+
+type PayrollRiskSignalsItem struct {
+	ItemId string `json:"item_id"`
+	VerificationRiskSignals string `json:"verification_risk_signals"`
+}
+
+type Paystub struct {
+	Deductions string `json:"deductions"`
+	DocId string `json:"doc_id"`
+	Earnings string `json:"earnings"`
+	Employee string `json:"employee"`
+	Employer string `json:"employer"`
+	EmploymentDetails string `json:"employment_details"`
+	IncomeBreakdown string `json:"income_breakdown"`
+	NetPay string `json:"net_pay"`
+	PayPeriodDetails string `json:"pay_period_details"`
+	PaystubDetails string `json:"paystub_details"`
+	YtdEarnings string `json:"ytd_earnings"`
+}
+
+type PaystubAddress struct {
+	City string `json:"city"`
+	Country string `json:"country"`
+	Line1 string `json:"line1"`
+	Line2 string `json:"line2"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+	StateCode string `json:"state_code"`
+	Street string `json:"street"`
+}
+
+type PaystubDeduction struct {
+	IsPretax bool `json:"is_pretax"`
+	Total float64 `json:"total"`
+	Type string `json:"type"`
+}
+
+type PaystubDetails struct {
+	PayDate string `json:"pay_date"`
+	PayFrequency string `json:"pay_frequency"`
+	PayPeriodEndDate string `json:"pay_period_end_date"`
+	PayPeriodStartDate string `json:"pay_period_start_date"`
+	PaystubProvider string `json:"paystub_provider"`
+}
+
+type PaystubEmployer struct {
+	Address string `json:"address"`
+	Name string `json:"name"`
+}
+
+type PaystubOverride struct {
+	Deductions string `json:"deductions"`
+	Earnings string `json:"earnings"`
+	Employee string `json:"employee"`
+	Employer string `json:"employer"`
+	IncomeBreakdown string `json:"income_breakdown"`
+	NetPay string `json:"net_pay"`
+	PayPeriodDetails string `json:"pay_period_details"`
+}
+
+type PaystubOverrideDeductions struct {
+	Breakdown string `json:"breakdown"`
+	Total string `json:"total"`
+}
+
+type PaystubOverrideDeductionsBreakdown struct {
+	Currency string `json:"currency"`
+	CurrentAmount float64 `json:"current_amount"`
+	Description string `json:"description"`
+	YtdAmount float64 `json:"ytd_amount"`
+}
+
+type PaystubOverrideDeductionsTotal struct {
+	Currency string `json:"currency"`
+	CurrentAmount float64 `json:"current_amount"`
+	YtdAmount float64 `json:"ytd_amount"`
+}
+
+type PaystubOverrideDistributionBreakdown struct {
+	AccountName string `json:"account_name"`
+	BankName string `json:"bank_name"`
+	Currency string `json:"currency"`
+	CurrentAmount float64 `json:"current_amount"`
+	Mask string `json:"mask"`
+	Type string `json:"type"`
+}
+
+type PaystubOverrideEarnings struct {
+	Breakdown string `json:"breakdown"`
+	Total string `json:"total"`
+}
+
+type PaystubOverrideEarningsBreakdown struct {
+	CanonicalDescription string `json:"canonical_description"`
+	Currency string `json:"currency"`
+	CurrentAmount float64 `json:"current_amount"`
+	Description string `json:"description"`
+	Hours float64 `json:"hours"`
+	Rate float64 `json:"rate"`
+	YtdAmount float64 `json:"ytd_amount"`
+}
+
+type PaystubOverrideEarningsTotal struct {
+	Currency string `json:"currency"`
+	Hours float64 `json:"hours"`
+	YtdAmount float64 `json:"ytd_amount"`
+}
+
+type PaystubOverrideEmployee struct {
+	Address string `json:"address"`
+	MaritalStatus string `json:"marital_status"`
+	Name string `json:"name"`
+	TaxpayerId string `json:"taxpayer_id"`
+}
+
+type PaystubOverrideEmployeeAddress struct {
+	City string `json:"city"`
+	Country string `json:"country"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+	Street string `json:"street"`
+}
+
+type PaystubOverrideEmployer struct {
+	Address string `json:"address"`
+	Name string `json:"name"`
+}
+
+type PaystubOverrideEmployerAddress struct {
+	City string `json:"city"`
+	Country string `json:"country"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+	Street string `json:"street"`
+}
+
+type PaystubOverrideNetPay struct {
+	Currency string `json:"currency"`
+	Description string `json:"description"`
+	YtdAmount float64 `json:"ytd_amount"`
+}
+
+type PaystubOverridePayPeriodDetails struct {
+	CheckAmount float64 `json:"check_amount"`
+	DistributionBreakdown string `json:"distribution_breakdown"`
+	EndDate string `json:"end_date"`
+	GrossEarnings float64 `json:"gross_earnings"`
+	PayDate string `json:"pay_date"`
+	PayDay string `json:"pay_day"`
+	PayFrequency string `json:"pay_frequency"`
+	StartDate string `json:"start_date"`
+}
+
+type PaystubOverrideTaxpayerID struct {
+	IdMask string `json:"id_mask"`
+	IdType string `json:"id_type"`
+}
+
+type PaystubYTDDetails struct {
+	GrossEarnings float64 `json:"gross_earnings"`
+	NetEarnings float64 `json:"net_earnings"`
+}
+
+type PendingDisconnectWebhook struct {
+	Environment string `json:"environment"`
+	ItemId string `json:"item_id"`
+	Reason string `json:"reason"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type PendingExpirationWebhook struct {
+	ConsentExpirationTime string `json:"consent_expiration_time"`
+	Environment string `json:"environment"`
+	ItemId string `json:"item_id"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type PersonalFinanceCategory struct {
+	ConfidenceLevel string `json:"confidence_level"`
+	Detailed string `json:"detailed"`
+	Primary string `json:"primary"`
+	Version string `json:"version"`
+}
+
+type PhoneNumber struct {
+	Data string `json:"data"`
+	Primary bool `json:"primary"`
+	Type string `json:"type"`
+}
+
+type PhoneNumberMatchScore struct {
+	Score int `json:"score"`
+}
+
+type PhysicalDocumentExtractedData struct {
+	Address string `json:"address"`
+	Category string `json:"category"`
+	DateOfBirth string `json:"date_of_birth"`
+	ExpirationDate string `json:"expiration_date"`
+	IdNumber string `json:"id_number"`
+	IssueDate string `json:"issue_date"`
+	IssuingCountry string `json:"issuing_country"`
+	IssuingRegion string `json:"issuing_region"`
+	Name string `json:"name"`
+}
+
+type PhysicalDocumentExtractedDataAnalysis struct {
+	DateOfBirth string `json:"date_of_birth"`
+	ExpirationDate string `json:"expiration_date"`
+	IssuingCountry string `json:"issuing_country"`
+	Name string `json:"name"`
+}
+
+type PhysicalDocumentImages struct {
+	CroppedBack string `json:"cropped_back"`
+	CroppedFront string `json:"cropped_front"`
+	Face string `json:"face"`
+	OriginalBack string `json:"original_back"`
+	OriginalFront string `json:"original_front"`
+}
+
+type PlaidCheckScore struct {
+	ErrorReason string `json:"error_reason"`
+	ReasonCodes string `json:"reason_codes"`
+	Score int `json:"score"`
+}
+
+type PlaidError struct {
+	Causes string `json:"causes"`
+	DisplayMessage string `json:"display_message"`
+	DocumentationUrl string `json:"documentation_url"`
+	ErrorCode string `json:"error_code"`
+	ErrorCodeReason string `json:"error_code_reason"`
+	ErrorMessage string `json:"error_message"`
+	ErrorType string `json:"error_type"`
+	ProvidedAccountSubtypes string `json:"provided_account_subtypes"`
+	RequestId string `json:"request_id"`
+	RequiredAccountSubtypes string `json:"required_account_subtypes"`
+	Status int `json:"status"`
+	SuggestedAction string `json:"suggested_action"`
+}
+
+type PlatformIds struct {
+	EmployeeId string `json:"employee_id"`
+	PayrollId string `json:"payroll_id"`
+	PositionId string `json:"position_id"`
+}
+
+type PrismCashScore struct {
+	ErrorReason string `json:"error_reason"`
+	Metadata string `json:"metadata"`
+	ModelVersion string `json:"model_version"`
+	ReasonCodes string `json:"reason_codes"`
+	Score int `json:"score"`
+	Version int `json:"version"`
+}
+
+type PrismCashScoreMetadata struct {
+	L1mCreditValueCnt int `json:"l1m_credit_value_cnt"`
+	L1mDebitValueCnt int `json:"l1m_debit_value_cnt"`
+	MaxAge int `json:"max_age"`
+	MaxAgeCredit int `json:"max_age_credit"`
+	MaxAgeDebit int `json:"max_age_debit"`
+	MinAge int `json:"min_age"`
+	MinAgeCredit int `json:"min_age_credit"`
+	MinAgeDebit int `json:"min_age_debit"`
+	NumTrxnCredit int `json:"num_trxn_credit"`
+	NumTrxnDebit int `json:"num_trxn_debit"`
+}
+
+type PrismDetect struct {
+	ErrorReason string `json:"error_reason"`
+	Metadata string `json:"metadata"`
+	ModelVersion string `json:"model_version"`
+	ReasonCodes string `json:"reason_codes"`
+	Score int `json:"score"`
+}
+
+type PrismExtend struct {
+	ErrorReason string `json:"error_reason"`
+	Metadata string `json:"metadata"`
+	ModelVersion string `json:"model_version"`
+	ReasonCodes string `json:"reason_codes"`
+	Score int `json:"score"`
+}
+
+type PrismFirstDetect struct {
+	ErrorReason string `json:"error_reason"`
+	Metadata string `json:"metadata"`
+	ModelVersion string `json:"model_version"`
+	ReasonCodes string `json:"reason_codes"`
+	Score int `json:"score"`
+	Version int `json:"version"`
+}
+
+type PrismInsights struct {
+	ErrorReason string `json:"error_reason"`
+	Result string `json:"result"`
+	Version int `json:"version"`
+}
+
+type PrismInsightsResult struct {
+}
+
+type PrismVersions struct {
+	Cashscore string `json:"cashscore"`
+	Detect string `json:"detect"`
+	Extend string `json:"extend"`
+	Firstdetect string `json:"firstdetect"`
+	Insights string `json:"insights"`
+}
+
+type PrismVersionsDeprecated struct {
+	Cashscore string `json:"cashscore"`
+	Detect string `json:"detect"`
+	Extend string `json:"extend"`
+	Firstdetect string `json:"firstdetect"`
+	Insights string `json:"insights"`
+}
+
+type ProcessorAccountGetRequest struct {
+	ClientId string `json:"client_id"`
+	ProcessorToken string `json:"processor_token"`
+	Secret string `json:"secret"`
+}
+
+type ProcessorAccountGetResponse struct {
+	Account string `json:"account"`
+	InstitutionId string `json:"institution_id"`
+	RequestId string `json:"request_id"`
+}
+
+type ProcessorApexProcessorTokenCreateRequest struct {
+	AccessToken string `json:"access_token"`
+	AccountId string `json:"account_id"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type ProcessorAuthGetRequest struct {
+	ClientId string `json:"client_id"`
+	ProcessorToken string `json:"processor_token"`
+	Secret string `json:"secret"`
+}
+
+type ProcessorAuthGetResponse struct {
+	Account string `json:"account"`
+	Numbers string `json:"numbers"`
+	RequestId string `json:"request_id"`
+}
+
+type ProcessorBalanceGetRequest struct {
+	ClientId string `json:"client_id"`
+	Options string `json:"options"`
+	ProcessorToken string `json:"processor_token"`
+	Secret string `json:"secret"`
+}
+
+type ProcessorBalanceGetRequestOptions struct {
+	MinLastUpdatedDatetime string `json:"min_last_updated_datetime"`
+}
+
+type ProcessorBalanceGetResponse struct {
+	Account string `json:"account"`
+	RequestId string `json:"request_id"`
+}
+
+type ProcessorBankTransferCreateRequest struct {
+	AchClass string `json:"ach_class"`
+	Amount string `json:"amount"`
+	ClientId string `json:"client_id"`
+	CustomTag string `json:"custom_tag"`
+	Description string `json:"description"`
+	IdempotencyKey string `json:"idempotency_key"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Metadata string `json:"metadata"`
+	Network string `json:"network"`
+	OriginationAccountId string `json:"origination_account_id"`
+	ProcessorToken string `json:"processor_token"`
+	Secret string `json:"secret"`
+	Type string `json:"type"`
+	User string `json:"user"`
+}
+
+type ProcessorBankTransferCreateResponse struct {
+	BankTransfer string `json:"bank_transfer"`
+	RequestId string `json:"request_id"`
+}
+
+type ProcessorDefaultUpdateWebhook struct {
+	AccountId string `json:"account_id"`
+	Environment string `json:"environment"`
+	Error string `json:"error"`
+	NewTransactions float64 `json:"new_transactions"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type ProcessorHistoricalUpdateWebhook struct {
+	AccountId string `json:"account_id"`
+	Environment string `json:"environment"`
+	Error string `json:"error"`
+	NewTransactions float64 `json:"new_transactions"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type ProcessorIdentityGetRequest struct {
+	ClientId string `json:"client_id"`
+	ProcessorToken string `json:"processor_token"`
+	Secret string `json:"secret"`
+}
+
+type ProcessorIdentityGetResponse struct {
+	Account string `json:"account"`
+	RequestId string `json:"request_id"`
+}
+
+type ProcessorIdentityMatchRequest struct {
+	ClientId string `json:"client_id"`
+	ProcessorToken string `json:"processor_token"`
+	Secret string `json:"secret"`
+	User string `json:"user"`
+}
+
+type ProcessorIdentityMatchResponse struct {
+	Account string `json:"account"`
+	RequestId string `json:"request_id"`
+}
+
+type ProcessorInitialUpdateWebhook struct {
+	AccountId string `json:"account_id"`
+	Environment string `json:"environment"`
+	Error string `json:"error"`
+	NewTransactions float64 `json:"new_transactions"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type ProcessorInvestmentsHoldingsGetRequest struct {
+	ClientId string `json:"client_id"`
+	ProcessorToken string `json:"processor_token"`
+	Secret string `json:"secret"`
+}
+
+type ProcessorInvestmentsHoldingsGetResponse struct {
+	Account string `json:"account"`
+	Holdings string `json:"holdings"`
+	IsInvestmentsFallbackItem bool `json:"is_investments_fallback_item"`
+	RequestId string `json:"request_id"`
+	Securities string `json:"securities"`
+}
+
+type ProcessorInvestmentsTransactionsGetRequest struct {
+	ClientId string `json:"client_id"`
+	EndDate string `json:"end_date"`
+	Options string `json:"options"`
+	ProcessorToken string `json:"processor_token"`
+	Secret string `json:"secret"`
+	StartDate string `json:"start_date"`
+}
+
+type ProcessorInvestmentsTransactionsGetResponse struct {
+	Account string `json:"account"`
+	InvestmentTransactions string `json:"investment_transactions"`
+	IsInvestmentsFallbackItem bool `json:"is_investments_fallback_item"`
+	RequestId string `json:"request_id"`
+	Securities string `json:"securities"`
+	TotalInvestmentTransactions int `json:"total_investment_transactions"`
+}
+
+type ProcessorLiabilitiesGetRequest struct {
+	ClientId string `json:"client_id"`
+	ProcessorToken string `json:"processor_token"`
+	Secret string `json:"secret"`
+}
+
+type ProcessorLiabilitiesGetResponse struct {
+	Account string `json:"account"`
+	Liabilities string `json:"liabilities"`
+	RequestId string `json:"request_id"`
+}
+
+type ProcessorNumber struct {
+	Ach string `json:"ach"`
+	Bacs string `json:"bacs"`
+	Eft string `json:"eft"`
+	International string `json:"international"`
+}
+
+type ProcessorRecurringTransactionsUpdateWebhook struct {
+	AccountId string `json:"account_id"`
+	Environment string `json:"environment"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type ProcessorSignalDecisionReportRequest struct {
+	AmountInstantlyAvailable float64 `json:"amount_instantly_available"`
+	ClientId string `json:"client_id"`
+	ClientTransactionId string `json:"client_transaction_id"`
+	DaysFundsOnHold int `json:"days_funds_on_hold"`
+	DecisionOutcome string `json:"decision_outcome"`
+	Initiated bool `json:"initiated"`
+	PaymentMethod string `json:"payment_method"`
+	ProcessorToken string `json:"processor_token"`
+	Secret string `json:"secret"`
+}
+
+type ProcessorSignalDecisionReportResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type ProcessorSignalEvaluateRequest struct {
+	Amount float64 `json:"amount"`
+	ClientId string `json:"client_id"`
+	ClientTransactionId string `json:"client_transaction_id"`
+	ClientUserId string `json:"client_user_id"`
+	DefaultPaymentMethod string `json:"default_payment_method"`
+	Device string `json:"device"`
+	IsRecurring bool `json:"is_recurring"`
+	ProcessorToken string `json:"processor_token"`
+	RulesetKey string `json:"ruleset_key"`
+	Secret string `json:"secret"`
+	User string `json:"user"`
+	UserPresent bool `json:"user_present"`
+}
+
+type ProcessorSignalEvaluateResponse struct {
+	CoreAttributes string `json:"core_attributes"`
+	RequestId string `json:"request_id"`
+	Ruleset string `json:"ruleset"`
+	Scores string `json:"scores"`
+	Warnings string `json:"warnings"`
+}
+
+type ProcessorSignalPrepareRequest struct {
+	ClientId string `json:"client_id"`
+	ProcessorToken string `json:"processor_token"`
+	Secret string `json:"secret"`
+}
+
+type ProcessorSignalPrepareResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type ProcessorSignalReturnReportRequest struct {
+	ClientId string `json:"client_id"`
+	ClientTransactionId string `json:"client_transaction_id"`
+	ProcessorToken string `json:"processor_token"`
+	ReturnCode string `json:"return_code"`
+	ReturnedAt string `json:"returned_at"`
+	Secret string `json:"secret"`
+}
+
+type ProcessorSignalReturnReportResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type ProcessorStripeBankAccountTokenCreateRequest struct {
+	AccessToken string `json:"access_token"`
+	AccountId string `json:"account_id"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type ProcessorStripeBankAccountTokenCreateResponse struct {
+	RequestId string `json:"request_id"`
+	StripeBankAccountToken string `json:"stripe_bank_account_token"`
+}
+
+type ProcessorSyncUpdatesAvailableWebhook struct {
+	AccountId string `json:"account_id"`
+	Environment string `json:"environment"`
+	HistoricalUpdateComplete bool `json:"historical_update_complete"`
+	InitialUpdateComplete bool `json:"initial_update_complete"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type ProcessorTokenCreateRequest struct {
+	AccessToken string `json:"access_token"`
+	AccountId string `json:"account_id"`
+	ClientId string `json:"client_id"`
+	Processor string `json:"processor"`
+	Secret string `json:"secret"`
+}
+
+type ProcessorTokenCreateResponse struct {
+	ProcessorToken string `json:"processor_token"`
+	RequestId string `json:"request_id"`
+}
+
+type ProcessorTokenPermissionsGetRequest struct {
+	ClientId string `json:"client_id"`
+	ProcessorToken string `json:"processor_token"`
+	Secret string `json:"secret"`
+}
+
+type ProcessorTokenPermissionsGetResponse struct {
+	Products string `json:"products"`
+	RequestId string `json:"request_id"`
+}
+
+type ProcessorTokenPermissionsSetRequest struct {
+	ClientId string `json:"client_id"`
+	ProcessorToken string `json:"processor_token"`
+	Products string `json:"products"`
+	Secret string `json:"secret"`
+}
+
+type ProcessorTokenPermissionsSetResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type ProcessorTokenWebhookUpdate struct {
+	AccountId string `json:"account_id"`
+	Environment string `json:"environment"`
+	Error string `json:"error"`
+	NewWebhookUrl string `json:"new_webhook_url"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type ProcessorTokenWebhookUpdateRequest struct {
+	ClientId string `json:"client_id"`
+	ProcessorToken string `json:"processor_token"`
+	Secret string `json:"secret"`
+	Webhook string `json:"webhook"`
+}
+
+type ProcessorTokenWebhookUpdateResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type ProcessorTransactionsGetRequest struct {
+	ClientId string `json:"client_id"`
+	EndDate string `json:"end_date"`
+	Options string `json:"options"`
+	ProcessorToken string `json:"processor_token"`
+	Secret string `json:"secret"`
+	StartDate string `json:"start_date"`
+}
+
+type ProcessorTransactionsGetRequestOptions struct {
+	Count int `json:"count"`
+	IncludeLogoAndCounterpartyBeta bool `json:"include_logo_and_counterparty_beta"`
+	IncludeOriginalDescription bool `json:"include_original_description"`
+	IncludePersonalFinanceCategory bool `json:"include_personal_finance_category"`
+	IncludePersonalFinanceCategoryBeta bool `json:"include_personal_finance_category_beta"`
+	Offset int `json:"offset"`
+}
+
+type ProcessorTransactionsGetResponse struct {
+	Account string `json:"account"`
+	RequestId string `json:"request_id"`
+	TotalTransactions int `json:"total_transactions"`
+	Transactions string `json:"transactions"`
+}
+
+type ProcessorTransactionsRecurringGetRequest struct {
+	ClientId string `json:"client_id"`
+	Options string `json:"options"`
+	ProcessorToken string `json:"processor_token"`
+	Secret string `json:"secret"`
+}
+
+type ProcessorTransactionsRecurringGetResponse struct {
+	InflowStreams string `json:"inflow_streams"`
+	OutflowStreams string `json:"outflow_streams"`
+	PersonalFinanceCategoryVersion string `json:"personal_finance_category_version"`
+	RequestId string `json:"request_id"`
+	UpdatedDatetime string `json:"updated_datetime"`
+}
+
+type ProcessorTransactionsRefreshRequest struct {
+	ClientId string `json:"client_id"`
+	ProcessorToken string `json:"processor_token"`
+	Secret string `json:"secret"`
+}
+
+type ProcessorTransactionsRefreshResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type ProcessorTransactionsRemovedWebhook struct {
+	AccountId string `json:"account_id"`
+	Environment string `json:"environment"`
+	Error string `json:"error"`
+	RemovedTransactions string `json:"removed_transactions"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type ProcessorTransactionsSyncRequest struct {
+	ClientId string `json:"client_id"`
+	Count int `json:"count"`
+	Cursor string `json:"cursor"`
+	Options string `json:"options"`
+	ProcessorToken string `json:"processor_token"`
+	Secret string `json:"secret"`
+}
+
+type ProcessorTransactionsSyncResponse struct {
+	Account string `json:"account"`
+	Added string `json:"added"`
+	HasMore bool `json:"has_more"`
+	Modified string `json:"modified"`
+	NextCursor string `json:"next_cursor"`
+	Removed string `json:"removed"`
+	RequestId string `json:"request_id"`
+	TransactionsUpdateStatus string `json:"transactions_update_status"`
+}
+
+type ProductAccess struct {
+	AccountsDetailsTransactions bool `json:"accounts_details_transactions"`
+	AccountsRoutingNumber bool `json:"accounts_routing_number"`
+	AccountsStatements bool `json:"accounts_statements"`
+	AccountsTaxStatements bool `json:"accounts_tax_statements"`
+	Auth bool `json:"auth"`
+	CustomersProfiles bool `json:"customers_profiles"`
+	Identity bool `json:"identity"`
+	Statements bool `json:"statements"`
+	Transactions bool `json:"transactions"`
+}
+
+type ProductPermissionsRequiredAuthWebhook struct {
+	Environment string `json:"environment"`
+	ItemId string `json:"item_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type ProductPermissionsRequiredIdentityWebhook struct {
+	Environment string `json:"environment"`
+	ItemId string `json:"item_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type ProductStatus struct {
+	Breakdown string `json:"breakdown"`
+	LastStatusChange string `json:"last_status_change"`
+	Status string `json:"status"`
+}
+
+type ProductStatusBreakdown struct {
+	ErrorInstitution float64 `json:"error_institution"`
+	ErrorPlaid float64 `json:"error_plaid"`
+	RefreshInterval string `json:"refresh_interval"`
+	Success float64 `json:"success"`
+}
+
+type ProfileNetworkStatusGetRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	User string `json:"user"`
+}
+
+type ProfileNetworkStatusGetResponse struct {
+	NetworkStatus string `json:"network_status"`
+	RequestId string `json:"request_id"`
+}
+
+type ProjectedIncomeSummaryFieldNumber struct {
+	Value float64 `json:"value"`
+	VerificationStatus string `json:"verification_status"`
+}
+
+type ProtectAppVisitEvent struct {
+}
+
+type ProtectBankAccount struct {
+	AccountId string `json:"account_id"`
+	AccountNumber string `json:"account_number"`
+	RoutingNumber string `json:"routing_number"`
+}
+
+type ProtectComputeRequest struct {
+	ClientId string `json:"client_id"`
+	Model string `json:"model"`
+	ModelInputs string `json:"model_inputs"`
+	Secret string `json:"secret"`
+	User string `json:"user"`
+}
+
+type ProtectComputeResponse struct {
+	Attributes string `json:"attributes"`
+	Model string `json:"model"`
+	RequestId string `json:"request_id"`
+	Score int `json:"score"`
+}
+
+type ProtectEvent struct {
+	AppVisit string `json:"app_visit"`
+	ProtectSessionId string `json:"protect_session_id"`
+	Timestamp string `json:"timestamp"`
+	UserSignIn string `json:"user_sign_in"`
+	UserSignUp string `json:"user_sign_up"`
+}
+
+type ProtectEventGetRequest struct {
+	ClientId string `json:"client_id"`
+	EventId string `json:"event_id"`
+	Secret string `json:"secret"`
+}
+
+type ProtectEventGetResponse struct {
+	EventId string `json:"event_id"`
+	FraudAttributes string `json:"fraud_attributes"`
+	RequestId string `json:"request_id"`
+	Timestamp string `json:"timestamp"`
+	TrustIndex string `json:"trust_index"`
+}
+
+type ProtectEventSendRequest struct {
+	ClientId string `json:"client_id"`
+	Event string `json:"event"`
+	ProtectSessionId string `json:"protect_session_id"`
+	RequestTrustIndex bool `json:"request_trust_index"`
+	Secret string `json:"secret"`
+	Timestamp string `json:"timestamp"`
+}
+
+type ProtectEventSendResponse struct {
+	EventId string `json:"event_id"`
+	FraudAttributes string `json:"fraud_attributes"`
+	RequestId string `json:"request_id"`
+	TrustIndex string `json:"trust_index"`
+}
+
+type ProtectIncidentAmount struct {
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Value float64 `json:"value"`
+}
+
+type ProtectIncidentEvent struct {
+	AccessToken string `json:"access_token"`
+	Amount string `json:"amount"`
+	IdvSessionId string `json:"idv_session_id"`
+	InternalReference string `json:"internal_reference"`
+	LinkSessionId string `json:"link_session_id"`
+	ProtectEventId string `json:"protect_event_id"`
+	SignalClientTransactionId string `json:"signal_client_transaction_id"`
+	Time string `json:"time"`
+}
+
+type ProtectIncidentEventResponse struct {
+	Amount string `json:"amount"`
+	IdvSessionId string `json:"idv_session_id"`
+	InternalReference string `json:"internal_reference"`
+	ItemId string `json:"item_id"`
+	LinkSessionId string `json:"link_session_id"`
+	ProtectEventId string `json:"protect_event_id"`
+	SignalClientTransactionId string `json:"signal_client_transaction_id"`
+	Time string `json:"time"`
+}
+
+type ProtectLinkModelInputs struct {
+	LinkSessionId string `json:"link_session_id"`
+	RequireExtractedData bool `json:"require_extracted_data"`
+}
+
+type ProtectModelInputs struct {
+	Link string `json:"link"`
+	Sdk string `json:"sdk"`
+}
+
+type ProtectReport struct {
+	AchReturnCode string `json:"ach_return_code"`
+	BankAccount string `json:"bank_account"`
+	CreatedAt string `json:"created_at"`
+	IncidentEvent string `json:"incident_event"`
+	Notes string `json:"notes"`
+	ReportConfidence string `json:"report_confidence"`
+	ReportId string `json:"report_id"`
+	ReportSource string `json:"report_source"`
+	ReportType string `json:"report_type"`
+}
+
+type ProtectReportCreateRequest struct {
+	AchReturnCode string `json:"ach_return_code"`
+	BankAccount string `json:"bank_account"`
+	ClientId string `json:"client_id"`
+	IncidentEvent string `json:"incident_event"`
+	Notes string `json:"notes"`
+	ReportConfidence string `json:"report_confidence"`
+	ReportSource string `json:"report_source"`
+	ReportType string `json:"report_type"`
+	Secret string `json:"secret"`
+	UserId string `json:"user_id"`
+}
+
+type ProtectReportCreateResponse struct {
+	ReportId string `json:"report_id"`
+	RequestId string `json:"request_id"`
+}
+
+type ProtectSDKModelInputs struct {
+	SdkSessionId string `json:"sdk_session_id"`
+}
+
+type ProtectUser struct {
+	ClientUserId string `json:"client_user_id"`
+	UserId string `json:"user_id"`
+}
+
+type ProtectUserEventWebhook struct {
+	ClientUserId string `json:"client_user_id"`
+	Environment string `json:"environment"`
+	EventId string `json:"event_id"`
+	EventType string `json:"event_type"`
+	Timestamp string `json:"timestamp"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type ProtectUserInsightsGetRequest struct {
+	ClientId string `json:"client_id"`
+	ClientUserId string `json:"client_user_id"`
+	Secret string `json:"secret"`
+	UserId string `json:"user_id"`
+}
+
+type ProtectUserInsightsGetResponse struct {
+	LatestScoredEvent string `json:"latest_scored_event"`
+	Reports string `json:"reports"`
+	RequestId string `json:"request_id"`
+	UserId string `json:"user_id"`
+}
+
+type ProtectUserSignInEvent struct {
+}
+
+type ProtectUserSignUpEvent struct {
+}
+
+type ProviderBusinessAddress struct {
+	City string `json:"city"`
+	Country string `json:"country"`
+	IsPrimary bool `json:"is_primary"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+	Street string `json:"street"`
+	Street2 string `json:"street2"`
+}
+
+type Recaptcha_RequiredError struct {
+	CommonCauses string `json:"common_causes"`
+	DisplayMessage string `json:"display_message"`
+	ErrorCode string `json:"error_code"`
+	ErrorType string `json:"error_type"`
+	HttpCode string `json:"http_code"`
+	LinkUserExperience string `json:"link_user_experience"`
+	TroubleshootingSteps string `json:"troubleshooting_steps"`
+}
+
+type RecipientBACS struct {
+	Account string `json:"account"`
+	SortCode string `json:"sort_code"`
+}
+
+type RecipientBACSNullable struct {
+	Account string `json:"account"`
+	SortCode string `json:"sort_code"`
+}
+
+type Recurrence struct {
+	Frequency string `json:"frequency"`
+	IsRecurring bool `json:"is_recurring"`
+}
+
+type RecurringCancelledWebhook struct {
+	Environment string `json:"environment"`
+	RecurringTransferId string `json:"recurring_transfer_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type RecurringInsightsStream struct {
+	AverageAmount string `json:"average_amount"`
+	AverageDaysApart float64 `json:"average_days_apart"`
+	Description string `json:"description"`
+	Frequency string `json:"frequency"`
+	IsActive bool `json:"is_active"`
+	MerchantName string `json:"merchant_name"`
+	NewestTransactionAmount string `json:"newest_transaction_amount"`
+	NewestTransactionDate string `json:"newest_transaction_date"`
+	OldestTransactionDate string `json:"oldest_transaction_date"`
+	PersonalFinanceCategoryDetailed string `json:"personal_finance_category_detailed"`
+	PersonalFinanceCategoryPrimary string `json:"personal_finance_category_primary"`
+	Status string `json:"status"`
+	StreamId string `json:"stream_id"`
+	TransactionCount int `json:"transaction_count"`
+	TransactionIds string `json:"transaction_ids"`
+}
+
+type RecurringNewTransferWebhook struct {
+	Environment string `json:"environment"`
+	RecurringTransferId string `json:"recurring_transfer_id"`
+	TransferId string `json:"transfer_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type RecurringTransactions struct {
+	InflowStreams string `json:"inflow_streams"`
+	OutflowStreams string `json:"outflow_streams"`
+}
+
+type RecurringTransactionsUpdateWebhook struct {
+	AccountIds string `json:"account_ids"`
+	Environment string `json:"environment"`
+	ItemId string `json:"item_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type RecurringTransfer struct {
+	AccountId string `json:"account_id"`
+	AchClass string `json:"ach_class"`
+	Amount string `json:"amount"`
+	Created string `json:"created"`
+	Description string `json:"description"`
+	FundingAccountId string `json:"funding_account_id"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Network string `json:"network"`
+	NextOriginationDate string `json:"next_origination_date"`
+	OriginationAccountId string `json:"origination_account_id"`
+	RecurringTransferId string `json:"recurring_transfer_id"`
+	Schedule string `json:"schedule"`
+	Status string `json:"status"`
+	TestClockId string `json:"test_clock_id"`
+	TransferIds string `json:"transfer_ids"`
+	Type string `json:"type"`
+	User string `json:"user"`
+}
+
+type RecurringTransferNullable struct {
+	AccountId string `json:"account_id"`
+	AchClass string `json:"ach_class"`
+	Amount string `json:"amount"`
+	Created string `json:"created"`
+	Description string `json:"description"`
+	FundingAccountId string `json:"funding_account_id"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Network string `json:"network"`
+	NextOriginationDate string `json:"next_origination_date"`
+	OriginationAccountId string `json:"origination_account_id"`
+	RecurringTransferId string `json:"recurring_transfer_id"`
+	Schedule string `json:"schedule"`
+	Status string `json:"status"`
+	TestClockId string `json:"test_clock_id"`
+	TransferIds string `json:"transfer_ids"`
+	Type string `json:"type"`
+	User string `json:"user"`
+}
+
+type RecurringTransferSkippedWebhook struct {
+	AuthorizationDecision string `json:"authorization_decision"`
+	AuthorizationDecisionRationaleCode string `json:"authorization_decision_rationale_code"`
+	Environment string `json:"environment"`
+	RecurringTransferId string `json:"recurring_transfer_id"`
+	SkippedOriginationDate string `json:"skipped_origination_date"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type RefreshResult struct {
+	Error string `json:"error"`
+	ItemId string `json:"item_id"`
+	Product string `json:"product"`
+}
+
+type RemovedTransaction struct {
+	AccountId string `json:"account_id"`
+	TransactionId string `json:"transaction_id"`
+}
+
+type ReportingInformation struct {
+	ReportingInformationIdentifier string `json:"ReportingInformationIdentifier"`
+}
+
+type RequestBusinessAddress struct {
+	City string `json:"city"`
+	Country string `json:"country"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+	Street string `json:"street"`
+	Street2 string `json:"street2"`
+}
+
+type ResponseBusinessAddress struct {
+	City string `json:"city"`
+	Country string `json:"country"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+	Street string `json:"street"`
+	Street2 string `json:"street2"`
+}
+
+type RiskCheckBehavior struct {
+	BotDetected string `json:"bot_detected"`
+	FraudRingDetected string `json:"fraud_ring_detected"`
+	RiskLevel string `json:"risk_level"`
+	UserInteractions string `json:"user_interactions"`
+}
+
+type RiskCheckDetails struct {
+	Behavior string `json:"behavior"`
+	Devices string `json:"devices"`
+	Email string `json:"email"`
+	FacialDuplicates string `json:"facial_duplicates"`
+	IdentityAbuseSignals string `json:"identity_abuse_signals"`
+	Network string `json:"network"`
+	Phone string `json:"phone"`
+	Status string `json:"status"`
+	TrustIndexScore int `json:"trust_index_score"`
+}
+
+type RiskCheckDevice struct {
+	Factors string `json:"factors"`
+	IpProxyType string `json:"ip_proxy_type"`
+	IpSpamListCount int `json:"ip_spam_list_count"`
+	IpTimezoneOffset string `json:"ip_timezone_offset"`
+	RiskLevel string `json:"risk_level"`
+}
+
+type RiskCheckEmail struct {
+	BreachCount int `json:"breach_count"`
+	DomainIsCustom string `json:"domain_is_custom"`
+	DomainIsDisposable string `json:"domain_is_disposable"`
+	DomainIsFreeProvider string `json:"domain_is_free_provider"`
+	DomainRegisteredAt string `json:"domain_registered_at"`
+	Factors string `json:"factors"`
+	FirstBreachedAt string `json:"first_breached_at"`
+	IsDeliverable string `json:"is_deliverable"`
+	LastBreachedAt string `json:"last_breached_at"`
+	LinkedServices string `json:"linked_services"`
+	RiskLevel string `json:"risk_level"`
+	TopLevelDomainIsSuspicious string `json:"top_level_domain_is_suspicious"`
+}
+
+type RiskCheckFacialDuplicate struct {
+	Id string `json:"id"`
+	MatchedAfterCompleted bool `json:"matched_after_completed"`
+	Similarity int `json:"similarity"`
+}
+
+type RiskCheckIdentityAbuseSignals struct {
+	StolenIdentity string `json:"stolen_identity"`
+	SyntheticIdentity string `json:"synthetic_identity"`
+}
+
+type RiskCheckNetwork struct {
+	Factors string `json:"factors"`
+	RiskLevel string `json:"risk_level"`
+}
+
+type RiskCheckPhone struct {
+	Factors string `json:"factors"`
+	LinkedServices string `json:"linked_services"`
+	RiskLevel string `json:"risk_level"`
+}
+
+type RiskCheckStolenIdentity struct {
+	RiskLevel string `json:"risk_level"`
+	Score int `json:"score"`
+}
+
+type RiskCheckSyntheticIdentity struct {
+	FirstPartySyntheticFraud string `json:"first_party_synthetic_fraud"`
+	RiskLevel string `json:"risk_level"`
+	Score int `json:"score"`
+	ThirdPartySyntheticFraud string `json:"third_party_synthetic_fraud"`
+}
+
+type RiskIndicators struct {
+	BankPenalties string `json:"bank_penalties"`
+	Gambling string `json:"gambling"`
+	LoanDisbursements string `json:"loan_disbursements"`
+	LoanPayments string `json:"loan_payments"`
+	NegativeBalance string `json:"negative_balance"`
+}
+
+type RiskProfile struct {
+	Key string `json:"key"`
+	Outcome string `json:"outcome"`
+}
+
+type RiskReason struct {
+	Code string `json:"code"`
+	Description string `json:"description"`
+}
+
+type RiskSignalDocumentReference struct {
+	DocumentId string `json:"document_id"`
+	DocumentName string `json:"document_name"`
+	DocumentType string `json:"document_type"`
+	FileType string `json:"file_type"`
+	Status string `json:"status"`
+}
+
+type Role struct {
+	ROLEDETAIL string `json:"ROLE_DETAIL"`
+}
+
+type RoleDetail struct {
+	PartyRoleType string `json:"PartyRoleType"`
+}
+
+type Roles struct {
+	ROLE string `json:"ROLE"`
+}
+
+type RuleDetails struct {
+	CustomActionKey string `json:"custom_action_key"`
+	InternalNote string `json:"internal_note"`
+}
+
+type Ruleset struct {
+	Outcome string `json:"outcome"`
+	Result string `json:"result"`
+	RulesetKey string `json:"ruleset_key"`
+	TriggeredRuleDetails string `json:"triggered_rule_details"`
+}
+
+type SMSVerification struct {
+	Attempt int `json:"attempt"`
+	DeliveryAttemptCount int `json:"delivery_attempt_count"`
+	InitiallySentAt string `json:"initially_sent_at"`
+	LastSentAt string `json:"last_sent_at"`
+	PhoneNumber string `json:"phone_number"`
+	RedactedAt string `json:"redacted_at"`
+	SolveAttemptCount int `json:"solve_attempt_count"`
+	Status string `json:"status"`
+}
+
+type SandboxBankIncomeFireWebhookRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookFields string `json:"webhook_fields"`
+	WebhookOverride string `json:"webhook_override"`
+}
+
+type SandboxBankIncomeFireWebhookResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type SandboxBankIncomeWebhookFireRequestWebhookFields struct {
+	BankIncomeRefreshCompleteResult string `json:"bank_income_refresh_complete_result"`
+	UserId string `json:"user_id"`
+}
+
+type SandboxBankTransferFireWebhookRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	Webhook string `json:"webhook"`
+}
+
+type SandboxBankTransferFireWebhookResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type SandboxBankTransferSimulateRequest struct {
+	BankTransferId string `json:"bank_transfer_id"`
+	ClientId string `json:"client_id"`
+	EventType string `json:"event_type"`
+	FailureReason string `json:"failure_reason"`
+	Secret string `json:"secret"`
+}
+
+type SandboxBankTransferSimulateResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type SandboxCraCashflowUpdatesUpdateRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	UserId string `json:"user_id"`
+	UserToken string `json:"user_token"`
+	WebhookCodes string `json:"webhook_codes"`
+}
+
+type SandboxCraCashflowUpdatesUpdateResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type SandboxIncomeFireWebhookRequest struct {
+	ClientId string `json:"client_id"`
+	ItemId string `json:"item_id"`
+	Secret string `json:"secret"`
+	UserId string `json:"user_id"`
+	VerificationStatus string `json:"verification_status"`
+	Webhook string `json:"webhook"`
+	WebhookCode string `json:"webhook_code"`
+}
+
+type SandboxIncomeFireWebhookResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type SandboxItemFireWebhookRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type SandboxItemFireWebhookResponse struct {
+	RequestId string `json:"request_id"`
+	WebhookFired bool `json:"webhook_fired"`
+}
+
+type SandboxItemResetLoginRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type SandboxItemResetLoginResponse struct {
+	RequestId string `json:"request_id"`
+	ResetLogin bool `json:"reset_login"`
+}
+
+type SandboxItemSetVerificationStatusRequest struct {
+	AccessToken string `json:"access_token"`
+	AccountId string `json:"account_id"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	VerificationStatus string `json:"verification_status"`
+}
+
+type SandboxItemSetVerificationStatusResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type SandboxOauthSelectAccountsRequest struct {
+	Accounts string `json:"accounts"`
+	OauthStateId string `json:"oauth_state_id"`
+}
+
+type SandboxOauthSelectAccountsResponse struct {
+}
+
+type SandboxPaymentProfileResetLoginRequest struct {
+	ClientId string `json:"client_id"`
+	PaymentProfileToken string `json:"payment_profile_token"`
+	Secret string `json:"secret"`
+}
+
+type SandboxPaymentProfileResetLoginResponse struct {
+	RequestId string `json:"request_id"`
+	ResetLogin bool `json:"reset_login"`
+}
+
+type SandboxPaymentSimulateRequest struct {
+	ClientId string `json:"client_id"`
+	PaymentId string `json:"payment_id"`
+	Secret string `json:"secret"`
+	Status string `json:"status"`
+	Webhook string `json:"webhook"`
+}
+
+type SandboxPaymentSimulateResponse struct {
+	NewStatus string `json:"new_status"`
+	OldStatus string `json:"old_status"`
+	RequestId string `json:"request_id"`
+}
+
+type SandboxProcessorTokenCreateRequest struct {
+	ClientId string `json:"client_id"`
+	InstitutionId string `json:"institution_id"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+}
+
+type SandboxProcessorTokenCreateRequestOptions struct {
+	OverridePassword string `json:"override_password"`
+	OverrideUsername string `json:"override_username"`
+}
+
+type SandboxProcessorTokenCreateResponse struct {
+	ProcessorToken string `json:"processor_token"`
+	RequestId string `json:"request_id"`
+}
+
+type SandboxPublicTokenCreateRequest struct {
+	ClientId string `json:"client_id"`
+	InitialProducts string `json:"initial_products"`
+	InstitutionId string `json:"institution_id"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+	UserId string `json:"user_id"`
+	UserToken string `json:"user_token"`
+}
+
+type SandboxPublicTokenCreateRequestIncomeVerificationBankIncome struct {
+	DaysRequested int `json:"days_requested"`
+}
+
+type SandboxPublicTokenCreateRequestOptions struct {
+	IncomeVerification string `json:"income_verification"`
+	OverridePassword string `json:"override_password"`
+	OverrideUsername string `json:"override_username"`
+	Statements string `json:"statements"`
+	Transactions string `json:"transactions"`
+	Webhook string `json:"webhook"`
+}
+
+type SandboxPublicTokenCreateRequestOptionsIncomeVerification struct {
+	BankIncome string `json:"bank_income"`
+	IncomeSourceTypes string `json:"income_source_types"`
+}
+
+type SandboxPublicTokenCreateRequestOptionsStatements struct {
+	EndDate string `json:"end_date"`
+	StartDate string `json:"start_date"`
+}
+
+type SandboxPublicTokenCreateRequestOptionsTransactions struct {
+	DaysRequested int `json:"days_requested"`
+	EndDate string `json:"end_date"`
+	StartDate string `json:"start_date"`
+}
+
+type SandboxPublicTokenCreateResponse struct {
+	PublicToken string `json:"public_token"`
+	RequestId string `json:"request_id"`
+}
+
+type SandboxTransactionsCreateRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	Transactions string `json:"transactions"`
+}
+
+type SandboxTransactionsCreateResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type SandboxTransferFireWebhookRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	Webhook string `json:"webhook"`
+}
+
+type SandboxTransferFireWebhookResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type SandboxTransferLedgerDepositSimulateRequest struct {
+	ClientId string `json:"client_id"`
+	EventType string `json:"event_type"`
+	FailureReason string `json:"failure_reason"`
+	Secret string `json:"secret"`
+	SweepId string `json:"sweep_id"`
+}
+
+type SandboxTransferLedgerDepositSimulateResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type SandboxTransferLedgerSimulateAvailableRequest struct {
+	ClientId string `json:"client_id"`
+	LedgerId string `json:"ledger_id"`
+	OriginatorClientId string `json:"originator_client_id"`
+	Secret string `json:"secret"`
+	TestClockId string `json:"test_clock_id"`
+	Webhook string `json:"webhook"`
+}
+
+type SandboxTransferLedgerSimulateAvailableResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type SandboxTransferLedgerWithdrawSimulateRequest struct {
+	ClientId string `json:"client_id"`
+	EventType string `json:"event_type"`
+	FailureReason string `json:"failure_reason"`
+	Secret string `json:"secret"`
+	SweepId string `json:"sweep_id"`
+}
+
+type SandboxTransferLedgerWithdrawSimulateResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type SandboxTransferRefundSimulateRequest struct {
+	ClientId string `json:"client_id"`
+	EventType string `json:"event_type"`
+	FailureReason string `json:"failure_reason"`
+	RefundId string `json:"refund_id"`
+	Secret string `json:"secret"`
+	TestClockId string `json:"test_clock_id"`
+	Webhook string `json:"webhook"`
+}
+
+type SandboxTransferRefundSimulateResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type SandboxTransferRepaymentSimulateRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type SandboxTransferRepaymentSimulateResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type SandboxTransferRfpSimulateRequest struct {
+	Action string `json:"action"`
+	Amount string `json:"amount"`
+	ClientName string `json:"client_name"`
+	TransferId string `json:"transfer_id"`
+}
+
+type SandboxTransferRfpSimulateResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type SandboxTransferSimulateRequest struct {
+	ClientId string `json:"client_id"`
+	EventType string `json:"event_type"`
+	FailureReason string `json:"failure_reason"`
+	Secret string `json:"secret"`
+	TestClockId string `json:"test_clock_id"`
+	TransferId string `json:"transfer_id"`
+	Webhook string `json:"webhook"`
+}
+
+type SandboxTransferSimulateResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type SandboxTransferSweepSimulateRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	TestClockId string `json:"test_clock_id"`
+	Webhook string `json:"webhook"`
+}
+
+type SandboxTransferSweepSimulateResponse struct {
+	RequestId string `json:"request_id"`
+	Sweep string `json:"sweep"`
+}
+
+type SandboxTransferTestClockAdvanceRequest struct {
+	ClientId string `json:"client_id"`
+	NewVirtualTime string `json:"new_virtual_time"`
+	Secret string `json:"secret"`
+	TestClockId string `json:"test_clock_id"`
+}
+
+type SandboxTransferTestClockAdvanceResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type SandboxTransferTestClockCreateRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	VirtualTime string `json:"virtual_time"`
+}
+
+type SandboxTransferTestClockCreateResponse struct {
+	RequestId string `json:"request_id"`
+	TestClock string `json:"test_clock"`
+}
+
+type SandboxTransferTestClockGetRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	TestClockId string `json:"test_clock_id"`
+}
+
+type SandboxTransferTestClockGetResponse struct {
+	RequestId string `json:"request_id"`
+	TestClock string `json:"test_clock"`
+}
+
+type SandboxTransferTestClockListRequest struct {
+	ClientId string `json:"client_id"`
+	Count int `json:"count"`
+	EndVirtualTime string `json:"end_virtual_time"`
+	Offset int `json:"offset"`
+	Secret string `json:"secret"`
+	StartVirtualTime string `json:"start_virtual_time"`
+}
+
+type SandboxTransferTestClockListResponse struct {
+	RequestId string `json:"request_id"`
+	TestClocks string `json:"test_clocks"`
+}
+
+type SandboxUserResetLoginRequest struct {
+	ClientId string `json:"client_id"`
+	ItemIds string `json:"item_ids"`
+	Secret string `json:"secret"`
+	UserId string `json:"user_id"`
+	UserToken string `json:"user_token"`
+}
+
+type SandboxUserResetLoginResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type Scopes struct {
+	Accounts string `json:"accounts"`
+	NewAccounts bool `json:"new_accounts"`
+	ProductAccess string `json:"product_access"`
+}
+
+type ScopesNullable struct {
+	Accounts string `json:"accounts"`
+	NewAccounts bool `json:"new_accounts"`
+	ProductAccess string `json:"product_access"`
+}
+
+type ScreeningHitAnalysis struct {
+	DatesOfBirth string `json:"dates_of_birth"`
+	Documents string `json:"documents"`
+	Locations string `json:"locations"`
+	Names string `json:"names"`
+	SearchTermsVersion int `json:"search_terms_version"`
+}
+
+type ScreeningHitData struct {
+	DatesOfBirth string `json:"dates_of_birth"`
+	Documents string `json:"documents"`
+	Locations string `json:"locations"`
+	Names string `json:"names"`
+}
+
+type ScreeningHitDateOfBirthItem struct {
+	Analysis string `json:"analysis"`
+	Data string `json:"data"`
+}
+
+type ScreeningHitDocumentsItems struct {
+	Analysis string `json:"analysis"`
+	Data string `json:"data"`
+}
+
+type ScreeningHitNamesItems struct {
+	Analysis string `json:"analysis"`
+	Data string `json:"data"`
+}
+
+type ScreeningStatusUpdatedWebhook struct {
+	Environment string `json:"environment"`
+	ScreeningId string `json:"screening_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type Security struct {
+	ClosePrice float64 `json:"close_price"`
+	ClosePriceAsOf string `json:"close_price_as_of"`
+	Cusip string `json:"cusip"`
+	FixedIncome string `json:"fixed_income"`
+	Industry string `json:"industry"`
+	InstitutionId string `json:"institution_id"`
+	InstitutionSecurityId string `json:"institution_security_id"`
+	IsCashEquivalent bool `json:"is_cash_equivalent"`
+	Isin string `json:"isin"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	MarketIdentifierCode string `json:"market_identifier_code"`
+	Name string `json:"name"`
+	OptionContract string `json:"option_contract"`
+	ProxySecurityId string `json:"proxy_security_id"`
+	Sector string `json:"sector"`
+	SecurityId string `json:"security_id"`
+	Sedol string `json:"sedol"`
+	Subtype string `json:"subtype"`
+	TickerSymbol string `json:"ticker_symbol"`
+	Type string `json:"type"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+	UpdateDatetime string `json:"update_datetime"`
+}
+
+type SecurityOverride struct {
+	Currency string `json:"currency"`
+	Cusip string `json:"cusip"`
+	Isin string `json:"isin"`
+	Name string `json:"name"`
+	Sedol string `json:"sedol"`
+	TickerSymbol string `json:"ticker_symbol"`
+}
+
+type SelfieAnalysis struct {
+	DocumentComparison string `json:"document_comparison"`
+	FacialAnalysis string `json:"facial_analysis"`
+	LivenessCheck string `json:"liveness_check"`
+}
+
+type SelfieAnalysisFacialAnalysis struct {
+	Forehead string `json:"forehead"`
+	Jaw string `json:"jaw"`
+	LeftBrow string `json:"left_brow"`
+	LeftCheek string `json:"left_cheek"`
+	LeftEye string `json:"left_eye"`
+	MiddleForehead string `json:"middle_forehead"`
+	Mouth string `json:"mouth"`
+	Nose string `json:"nose"`
+	Philtrum string `json:"philtrum"`
+	RightBrow string `json:"right_brow"`
+	RightCheek string `json:"right_cheek"`
+	RightEye string `json:"right_eye"`
+}
+
+type SelfieCapture struct {
+	ImageUrl string `json:"image_url"`
+	VideoUrl string `json:"video_url"`
+}
+
+type SelfieCheck struct {
+	Selfies string `json:"selfies"`
+	Status string `json:"status"`
+}
+
+type SelfieCheckSelfie struct {
+	Analysis string `json:"analysis"`
+	Attempt int `json:"attempt"`
+	Capture string `json:"capture"`
+	Status string `json:"status"`
+}
+
+type SenderBACSNullable struct {
+	Account string `json:"account"`
+	SortCode string `json:"sort_code"`
+}
+
+type Service struct {
+	STATUSES string `json:"STATUSES"`
+	VERIFICATIONOFASSET string `json:"VERIFICATION_OF_ASSET"`
+}
+
+type ServiceProductFulfillment struct {
+	SERVICEPRODUCTFULFILLMENTDETAIL string `json:"SERVICE_PRODUCT_FULFILLMENT_DETAIL"`
+}
+
+type ServiceProductFulfillmentDetail struct {
+	ServiceProductFulfillmentIdentifier string `json:"ServiceProductFulfillmentIdentifier"`
+	VendorOrderIdentifier string `json:"VendorOrderIdentifier"`
+}
+
+type ServicerAddressData struct {
+	City string `json:"city"`
+	Country string `json:"country"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+	Street string `json:"street"`
+}
+
+type Services struct {
+	SERVICE string `json:"SERVICE"`
+}
+
+type SessionTokenCreateRequest struct {
+	AndroidPackageName string `json:"android_package_name"`
+	ClientId string `json:"client_id"`
+	RedirectUri string `json:"redirect_uri"`
+	Secret string `json:"secret"`
+	TemplateId string `json:"template_id"`
+	User string `json:"user"`
+	UserId string `json:"user_id"`
+	Webhook string `json:"webhook"`
+}
+
+type SessionTokenCreateRequestUser struct {
+	ClientUserId string `json:"client_user_id"`
+	UserId string `json:"user_id"`
+}
+
+type SessionTokenCreateResponse struct {
+	Link string `json:"link"`
+	RequestId string `json:"request_id"`
+}
+
+type SessionTokenCreateResponseLink struct {
+	Expiration string `json:"expiration"`
+	LinkToken string `json:"link_token"`
+	UserId string `json:"user_id"`
+}
+
+type SignalAddressData struct {
+	City string `json:"city"`
+	Country string `json:"country"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+	Street string `json:"street"`
+}
+
+type SignalDecisionReportRequest struct {
+	AmountInstantlyAvailable float64 `json:"amount_instantly_available"`
+	ClientId string `json:"client_id"`
+	ClientTransactionId string `json:"client_transaction_id"`
+	DaysFundsOnHold int `json:"days_funds_on_hold"`
+	DecisionOutcome string `json:"decision_outcome"`
+	Initiated bool `json:"initiated"`
+	PaymentMethod string `json:"payment_method"`
+	Secret string `json:"secret"`
+	SubmittedAt string `json:"submitted_at"`
+}
+
+type SignalDecisionReportResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type SignalDevice struct {
+	IpAddress string `json:"ip_address"`
+	UserAgent string `json:"user_agent"`
+}
+
+type SignalEvaluateCoreAttributes struct {
+	AddressChangeCount28d int `json:"address_change_count_28d"`
+	AddressChangeCount90d int `json:"address_change_count_90d"`
+	AvailableBalance float64 `json:"available_balance"`
+	BalanceLastUpdated string `json:"balance_last_updated"`
+	BalanceToTransactionAmountRatio float64 `json:"balance_to_transaction_amount_ratio"`
+	CreditTransactionsCount10d int `json:"credit_transactions_count_10d"`
+	CreditTransactionsCount30d int `json:"credit_transactions_count_30d"`
+	CreditTransactionsCount60d int `json:"credit_transactions_count_60d"`
+	CreditTransactionsCount90d int `json:"credit_transactions_count_90d"`
+	CurrentBalance float64 `json:"current_balance"`
+	DaysSinceAccountOpening int `json:"days_since_account_opening"`
+	DaysSinceFirstPlaidConnection int `json:"days_since_first_plaid_connection"`
+	DaysWithNegativeBalanceCount90d int `json:"days_with_negative_balance_count_90d"`
+	DebitTransactionsCount10d int `json:"debit_transactions_count_10d"`
+	DebitTransactionsCount30d int `json:"debit_transactions_count_30d"`
+	DebitTransactionsCount60d int `json:"debit_transactions_count_60d"`
+	DebitTransactionsCount90d int `json:"debit_transactions_count_90d"`
+	DistinctIpAddressesCount30d int `json:"distinct_ip_addresses_count_30d"`
+	DistinctIpAddressesCount3d int `json:"distinct_ip_addresses_count_3d"`
+	DistinctIpAddressesCount7d int `json:"distinct_ip_addresses_count_7d"`
+	DistinctIpAddressesCount90d int `json:"distinct_ip_addresses_count_90d"`
+	DistinctSslTlsConnectionSessionsCount30d int `json:"distinct_ssl_tls_connection_sessions_count_30d"`
+	DistinctSslTlsConnectionSessionsCount3d int `json:"distinct_ssl_tls_connection_sessions_count_3d"`
+	DistinctSslTlsConnectionSessionsCount7d int `json:"distinct_ssl_tls_connection_sessions_count_7d"`
+	DistinctSslTlsConnectionSessionsCount90d int `json:"distinct_ssl_tls_connection_sessions_count_90d"`
+	DistinctUserAgentsCount30d int `json:"distinct_user_agents_count_30d"`
+	DistinctUserAgentsCount3d int `json:"distinct_user_agents_count_3d"`
+	DistinctUserAgentsCount7d int `json:"distinct_user_agents_count_7d"`
+	DistinctUserAgentsCount90d int `json:"distinct_user_agents_count_90d"`
+	EmailChangeCount28d int `json:"email_change_count_28d"`
+	EmailChangeCount90d int `json:"email_change_count_90d"`
+	FailedPlaidNonOauthAuthenticationAttemptsCount30d int `json:"failed_plaid_non_oauth_authentication_attempts_count_30d"`
+	FailedPlaidNonOauthAuthenticationAttemptsCount3d int `json:"failed_plaid_non_oauth_authentication_attempts_count_3d"`
+	FailedPlaidNonOauthAuthenticationAttemptsCount7d int `json:"failed_plaid_non_oauth_authentication_attempts_count_7d"`
+	IsAccountClosed bool `json:"is_account_closed"`
+	IsAccountFrozenOrRestricted bool `json:"is_account_frozen_or_restricted"`
+	IsSavingsOrMoneyMarketAccount bool `json:"is_savings_or_money_market_account"`
+	NsfOverdraftTransactionsCount30d int `json:"nsf_overdraft_transactions_count_30d"`
+	NsfOverdraftTransactionsCount60d int `json:"nsf_overdraft_transactions_count_60d"`
+	NsfOverdraftTransactionsCount7d int `json:"nsf_overdraft_transactions_count_7d"`
+	NsfOverdraftTransactionsCount90d int `json:"nsf_overdraft_transactions_count_90d"`
+	P10EodBalance30d float64 `json:"p10_eod_balance_30d"`
+	P10EodBalance31dTo60d float64 `json:"p10_eod_balance_31d_to_60d"`
+	P10EodBalance60d float64 `json:"p10_eod_balance_60d"`
+	P10EodBalance61dTo90d float64 `json:"p10_eod_balance_61d_to_90d"`
+	P10EodBalance90d float64 `json:"p10_eod_balance_90d"`
+	P50CreditTransactionsAmount28d float64 `json:"p50_credit_transactions_amount_28d"`
+	P50DebitTransactionsAmount28d float64 `json:"p50_debit_transactions_amount_28d"`
+	P50EodBalance30d float64 `json:"p50_eod_balance_30d"`
+	P50EodBalance31dTo60d float64 `json:"p50_eod_balance_31d_to_60d"`
+	P50EodBalance60d float64 `json:"p50_eod_balance_60d"`
+	P50EodBalance61dTo90d float64 `json:"p50_eod_balance_61d_to_90d"`
+	P50EodBalance90d float64 `json:"p50_eod_balance_90d"`
+	P90EodBalance30d float64 `json:"p90_eod_balance_30d"`
+	P90EodBalance31dTo60d float64 `json:"p90_eod_balance_31d_to_60d"`
+	P90EodBalance60d float64 `json:"p90_eod_balance_60d"`
+	P90EodBalance61dTo90d float64 `json:"p90_eod_balance_61d_to_90d"`
+	P90EodBalance90d float64 `json:"p90_eod_balance_90d"`
+	P95CreditTransactionsAmount28d float64 `json:"p95_credit_transactions_amount_28d"`
+	P95DebitTransactionsAmount28d float64 `json:"p95_debit_transactions_amount_28d"`
+	PhoneChangeCount28d int `json:"phone_change_count_28d"`
+	PhoneChangeCount90d int `json:"phone_change_count_90d"`
+	PlaidConnectionsCount30d int `json:"plaid_connections_count_30d"`
+	PlaidConnectionsCount7d int `json:"plaid_connections_count_7d"`
+	PlaidNonOauthAuthenticationAttemptsCount30d int `json:"plaid_non_oauth_authentication_attempts_count_30d"`
+	PlaidNonOauthAuthenticationAttemptsCount3d int `json:"plaid_non_oauth_authentication_attempts_count_3d"`
+	PlaidNonOauthAuthenticationAttemptsCount7d int `json:"plaid_non_oauth_authentication_attempts_count_7d"`
+	TotalCreditTransactionsAmount10d float64 `json:"total_credit_transactions_amount_10d"`
+	TotalCreditTransactionsAmount30d float64 `json:"total_credit_transactions_amount_30d"`
+	TotalCreditTransactionsAmount60d float64 `json:"total_credit_transactions_amount_60d"`
+	TotalCreditTransactionsAmount90d float64 `json:"total_credit_transactions_amount_90d"`
+	TotalDebitTransactionsAmount10d float64 `json:"total_debit_transactions_amount_10d"`
+	TotalDebitTransactionsAmount30d float64 `json:"total_debit_transactions_amount_30d"`
+	TotalDebitTransactionsAmount60d float64 `json:"total_debit_transactions_amount_60d"`
+	TotalDebitTransactionsAmount90d float64 `json:"total_debit_transactions_amount_90d"`
+	TotalPlaidConnectionsCount int `json:"total_plaid_connections_count"`
+	TransactionsLastUpdated string `json:"transactions_last_updated"`
+	UnauthorizedTransactionsCount30d int `json:"unauthorized_transactions_count_30d"`
+	UnauthorizedTransactionsCount60d int `json:"unauthorized_transactions_count_60d"`
+	UnauthorizedTransactionsCount7d int `json:"unauthorized_transactions_count_7d"`
+	UnauthorizedTransactionsCount90d int `json:"unauthorized_transactions_count_90d"`
+}
+
+type SignalEvaluateRequest struct {
+	AccessToken string `json:"access_token"`
+	AccountId string `json:"account_id"`
+	Amount float64 `json:"amount"`
+	ClientId string `json:"client_id"`
+	ClientTransactionId string `json:"client_transaction_id"`
+	ClientUserId string `json:"client_user_id"`
+	DefaultPaymentMethod string `json:"default_payment_method"`
+	Device string `json:"device"`
+	IsRecurring bool `json:"is_recurring"`
+	RiskProfileKey string `json:"risk_profile_key"`
+	RulesetKey string `json:"ruleset_key"`
+	Secret string `json:"secret"`
+	User string `json:"user"`
+	UserPresent bool `json:"user_present"`
+}
+
+type SignalEvaluateResponse struct {
+	CoreAttributes string `json:"core_attributes"`
+	RequestId string `json:"request_id"`
+	RiskProfile string `json:"risk_profile"`
+	Ruleset string `json:"ruleset"`
+	Scores string `json:"scores"`
+	Warnings string `json:"warnings"`
+}
+
+type SignalPersonName struct {
+	FamilyName string `json:"family_name"`
+	GivenName string `json:"given_name"`
+	MiddleName string `json:"middle_name"`
+	Prefix string `json:"prefix"`
+	Suffix string `json:"suffix"`
+}
+
+type SignalPrepareRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type SignalPrepareResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type SignalReturnReportRequest struct {
+	ClientId string `json:"client_id"`
+	ClientTransactionId string `json:"client_transaction_id"`
+	ReturnCode string `json:"return_code"`
+	ReturnedAt string `json:"returned_at"`
+	Secret string `json:"secret"`
+}
+
+type SignalReturnReportResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type SignalScheduleRecommendation struct {
+	Date string `json:"date"`
+	Rank int `json:"rank"`
+	Recommendation string `json:"recommendation"`
+}
+
+type SignalScheduleRequest struct {
+	AccessToken string `json:"access_token"`
+	AccountId string `json:"account_id"`
+	Amount float64 `json:"amount"`
+	ClientId string `json:"client_id"`
+	ClientTransactionId string `json:"client_transaction_id"`
+	DefaultPaymentMethod string `json:"default_payment_method"`
+	Secret string `json:"secret"`
+}
+
+type SignalScheduleResponse struct {
+	OptimalDate string `json:"optimal_date"`
+	Recommendations string `json:"recommendations"`
+	RequestId string `json:"request_id"`
+	Warnings string `json:"warnings"`
+}
+
+type SignalScores struct {
+	BankInitiatedReturnRisk string `json:"bank_initiated_return_risk"`
+	CustomerInitiatedReturnRisk string `json:"customer_initiated_return_risk"`
+}
+
+type SignalUser struct {
+	Address string `json:"address"`
+	EmailAddress string `json:"email_address"`
+	Name string `json:"name"`
+	PhoneNumber string `json:"phone_number"`
+}
+
+type SignalWarning struct {
+	WarningCode string `json:"warning_code"`
+	WarningMessage string `json:"warning_message"`
+	WarningType string `json:"warning_type"`
+}
+
+type SimulatedTransferSweep struct {
+	Amount string `json:"amount"`
+	Created string `json:"created"`
+	Description string `json:"description"`
+	ExpectedFundsAvailableDate string `json:"expected_funds_available_date"`
+	FailureReason string `json:"failure_reason"`
+	FundingAccountId string `json:"funding_account_id"`
+	Id string `json:"id"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	LedgerId string `json:"ledger_id"`
+	NetworkTraceId string `json:"network_trace_id"`
+	Settled string `json:"settled"`
+	Status string `json:"status"`
+	Trigger string `json:"trigger"`
+}
+
+type SingleDocumentRiskSignal struct {
+	DocumentReference string `json:"document_reference"`
+	RiskSignals string `json:"risk_signals"`
+	RiskSummary string `json:"risk_summary"`
+}
+
+type StandaloneAccountType struct {
+	Credit string `json:"credit"`
+	Depository string `json:"depository"`
+	Investment string `json:"investment"`
+	Loan string `json:"loan"`
+	Other string `json:"other"`
+	Payroll string `json:"payroll"`
+}
+
+type StandaloneCurrencyCodeList struct {
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type StandaloneInvestmentTransactionBuyType struct {
+	Assignment string `json:"assignment"`
+	Buy string `json:"buy"`
+	BuyToCover string `json:"buy_to_cover"`
+	Contribution string `json:"contribution"`
+	DividendReinvestment string `json:"dividend_reinvestment"`
+	InterestReinvestment string `json:"interest_reinvestment"`
+	LongTermCapitalGainReinvestment string `json:"long_term_capital_gain_reinvestment"`
+	ShortTermCapitalGainReinvestment string `json:"short_term_capital_gain_reinvestment"`
+}
+
+type StandaloneInvestmentTransactionCashType struct {
+	AccountFee string `json:"account_fee"`
+	Contribution string `json:"contribution"`
+	Deposit string `json:"deposit"`
+	Dividend string `json:"dividend"`
+	Interest string `json:"interest"`
+	LegalFee string `json:"legal_fee"`
+	LongTermCapitalGain string `json:"long_term_capital_gain"`
+	ManagementFee string `json:"management_fee"`
+	MarginExpense string `json:"margin_expense"`
+	NonQualifiedDividend string `json:"non_qualified_dividend"`
+	NonResidentTax string `json:"non_resident_tax"`
+	PendingCredit string `json:"pending_credit"`
+	PendingDebit string `json:"pending_debit"`
+	QualifiedDividend string `json:"qualified_dividend"`
+	ShortTermCapitalGain string `json:"short_term_capital_gain"`
+	StockDistribution string `json:"stock_distribution"`
+	Tax string `json:"tax"`
+	TaxWithheld string `json:"tax_withheld"`
+	TransferFee string `json:"transfer_fee"`
+	TrustFee string `json:"trust_fee"`
+	UnqualifiedGain string `json:"unqualified_gain"`
+	Withdrawal string `json:"withdrawal"`
+}
+
+type StandaloneInvestmentTransactionFeeType struct {
+	AccountFee string `json:"account_fee"`
+	Adjustment string `json:"adjustment"`
+	Dividend string `json:"dividend"`
+	Interest string `json:"interest"`
+	InterestReceivable string `json:"interest_receivable"`
+	LegalFee string `json:"legal_fee"`
+	LongTermCapitalGain string `json:"long_term_capital_gain"`
+	ManagementFee string `json:"management_fee"`
+	MarginExpense string `json:"margin_expense"`
+	NonQualifiedDividend string `json:"non_qualified_dividend"`
+	NonResidentTax string `json:"non_resident_tax"`
+	QualifiedDividend string `json:"qualified_dividend"`
+	ReturnOfPrincipal string `json:"return_of_principal"`
+	ShortTermCapitalGain string `json:"short_term_capital_gain"`
+	StockDistribution string `json:"stock_distribution"`
+	Tax string `json:"tax"`
+	TaxWithheld string `json:"tax_withheld"`
+	TransferFee string `json:"transfer_fee"`
+	TrustFee string `json:"trust_fee"`
+	UnqualifiedGain string `json:"unqualified_gain"`
+}
+
+type StandaloneInvestmentTransactionSellType struct {
+	Distribution string `json:"distribution"`
+	Exercise string `json:"exercise"`
+	Sell string `json:"sell"`
+	SellShort string `json:"sell_short"`
+}
+
+type StandaloneInvestmentTransactionTransferType struct {
+	Adjustment string `json:"adjustment"`
+	Assignment string `json:"assignment"`
+	Exercise string `json:"exercise"`
+	Expire string `json:"expire"`
+	Merger string `json:"merger"`
+	Request string `json:"request"`
+	Send string `json:"send"`
+	SpinOff string `json:"spin_off"`
+	Split string `json:"split"`
+	Trade string `json:"trade"`
+	Transfer string `json:"transfer"`
+}
+
+type StandaloneInvestmentTransactionType struct {
+	Buy string `json:"buy"`
+	Cancel string `json:"cancel"`
+	Cash string `json:"cash"`
+	Fee string `json:"fee"`
+	Sell string `json:"sell"`
+	Transfer string `json:"transfer"`
+}
+
+type StatementsAccount struct {
+	AccountId string `json:"account_id"`
+	AccountMask string `json:"account_mask"`
+	AccountName string `json:"account_name"`
+	AccountOfficialName string `json:"account_official_name"`
+	AccountSubtype string `json:"account_subtype"`
+	AccountType string `json:"account_type"`
+	Statements string `json:"statements"`
+}
+
+type StatementsDownloadRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	StatementId string `json:"statement_id"`
+}
+
+type StatementsListRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type StatementsListResponse struct {
+	Accounts string `json:"accounts"`
+	InstitutionId string `json:"institution_id"`
+	InstitutionName string `json:"institution_name"`
+	ItemId string `json:"item_id"`
+	RequestId string `json:"request_id"`
+}
+
+type StatementsRefreshCompleteWebhook struct {
+	Environment string `json:"environment"`
+	ItemId string `json:"item_id"`
+	Result string `json:"result"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type StatementsRefreshRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	EndDate string `json:"end_date"`
+	Secret string `json:"secret"`
+	StartDate string `json:"start_date"`
+}
+
+type StatementsRefreshResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type StatementsStatement struct {
+	DatePosted string `json:"date_posted"`
+	Month int `json:"month"`
+	StatementId string `json:"statement_id"`
+	Year int `json:"year"`
+}
+
+type Status struct {
+	StatusCode string `json:"StatusCode"`
+	StatusDescription string `json:"StatusDescription"`
+}
+
+type Statuses struct {
+	STATUS string `json:"STATUS"`
+}
+
+type StudentLoan struct {
+	AccountId string `json:"account_id"`
+	AccountNumber string `json:"account_number"`
+	DisbursementDates string `json:"disbursement_dates"`
+	ExpectedPayoffDate string `json:"expected_payoff_date"`
+	Guarantor string `json:"guarantor"`
+	InterestRatePercentage float64 `json:"interest_rate_percentage"`
+	IsOverdue bool `json:"is_overdue"`
+	LastPaymentAmount float64 `json:"last_payment_amount"`
+	LastPaymentDate string `json:"last_payment_date"`
+	LastStatementBalance float64 `json:"last_statement_balance"`
+	LastStatementIssueDate string `json:"last_statement_issue_date"`
+	LoanName string `json:"loan_name"`
+	LoanStatus string `json:"loan_status"`
+	MinimumPaymentAmount float64 `json:"minimum_payment_amount"`
+	NextPaymentDueDate string `json:"next_payment_due_date"`
+	OriginationDate string `json:"origination_date"`
+	OriginationPrincipalAmount float64 `json:"origination_principal_amount"`
+	OutstandingInterestAmount float64 `json:"outstanding_interest_amount"`
+	PaymentReferenceNumber string `json:"payment_reference_number"`
+	PslfStatus string `json:"pslf_status"`
+	RepaymentPlan string `json:"repayment_plan"`
+	SequenceNumber string `json:"sequence_number"`
+	ServicerAddress string `json:"servicer_address"`
+	YtdInterestPaid float64 `json:"ytd_interest_paid"`
+	YtdPrincipalPaid float64 `json:"ytd_principal_paid"`
+}
+
+type StudentLoanRepaymentModel struct {
+	NonRepaymentMonths float64 `json:"non_repayment_months"`
+	RepaymentMonths float64 `json:"repayment_months"`
+	Type string `json:"type"`
+}
+
+type StudentLoanStatus struct {
+	EndDate string `json:"end_date"`
+	Type string `json:"type"`
+}
+
+type StudentRepaymentPlan struct {
+	Description string `json:"description"`
+	Type string `json:"type"`
+}
+
+type SweepFailure struct {
+	Description string `json:"description"`
+	FailureCode string `json:"failure_code"`
+}
+
+type SyncUpdatesAvailableWebhook struct {
+	Environment string `json:"environment"`
+	HistoricalUpdateComplete bool `json:"historical_update_complete"`
+	InitialUpdateComplete bool `json:"initial_update_complete"`
+	ItemId string `json:"item_id"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type SyntheticFraud struct {
+	RiskLevel string `json:"risk_level"`
+}
+
+type Taxform struct {
+	DocId string `json:"doc_id"`
+	DocumentType string `json:"document_type"`
+	W2 string `json:"w2"`
+}
+
+type TaxpayerID struct {
+	IdMask string `json:"id_mask"`
+	IdType string `json:"id_type"`
+	Last4Digits string `json:"last_4_digits"`
+}
+
+type TaxpayerIdentifier struct {
+	TaxpayerIdentifierType string `json:"TaxpayerIdentifierType"`
+	TaxpayerIdentifierValue string `json:"TaxpayerIdentifierValue"`
+}
+
+type TaxpayerIdentifiers struct {
+	TAXPAYERIDENTIFIER string `json:"TAXPAYER_IDENTIFIER"`
+}
+
+type Total struct {
+	CanonicalDescription string `json:"canonical_description"`
+	CurrentPay string `json:"current_pay"`
+	Description string `json:"description"`
+	YtdPay string `json:"ytd_pay"`
+}
+
+type TotalInflowAmount struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type TotalInflowAmount30d struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type TotalInflowAmount60d struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type TotalInflowAmount90d struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type TotalMonthlyIncomeInsights struct {
+	BaselineAmount float64 `json:"baseline_amount"`
+	CurrentAmount float64 `json:"current_amount"`
+}
+
+type TotalOutflowAmount struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type TotalOutflowAmount30d struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type TotalOutflowAmount60d struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type TotalOutflowAmount90d struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type TotalReportInflowAmount struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type TotalReportInflowAmount30d struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type TotalReportInflowAmount60d struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type TotalReportInflowAmount90d struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type TotalReportOutflowAmount struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type TotalReportOutflowAmount30d struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type TotalReportOutflowAmount60d struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type TotalReportOutflowAmount90d struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type Transaction struct {
+	AccountId string `json:"account_id"`
+	AccountOwner string `json:"account_owner"`
+	Amount float64 `json:"amount"`
+	AuthorizedDate string `json:"authorized_date"`
+	AuthorizedDatetime string `json:"authorized_datetime"`
+	BusinessFinanceCategory string `json:"business_finance_category"`
+	Category string `json:"category"`
+	CategoryId string `json:"category_id"`
+	CheckNumber string `json:"check_number"`
+	ClientCustomization string `json:"client_customization"`
+	Counterparties string `json:"counterparties"`
+	Date string `json:"date"`
+	Datetime string `json:"datetime"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Location string `json:"location"`
+	LogoUrl string `json:"logo_url"`
+	MerchantEntityId string `json:"merchant_entity_id"`
+	MerchantName string `json:"merchant_name"`
+	Name string `json:"name"`
+	OriginalDescription string `json:"original_description"`
+	PaymentChannel string `json:"payment_channel"`
+	PaymentMeta string `json:"payment_meta"`
+	Pending bool `json:"pending"`
+	PendingTransactionId string `json:"pending_transaction_id"`
+	PersonalFinanceCategory string `json:"personal_finance_category"`
+	PersonalFinanceCategoryIconUrl string `json:"personal_finance_category_icon_url"`
+	TransactionCode string `json:"transaction_code"`
+	TransactionId string `json:"transaction_id"`
+	TransactionType string `json:"transaction_type"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+	Website string `json:"website"`
+}
+
+type TransactionBase struct {
+	AccountId string `json:"account_id"`
+	AccountOwner string `json:"account_owner"`
+	Amount float64 `json:"amount"`
+	Category string `json:"category"`
+	CategoryId string `json:"category_id"`
+	CheckNumber string `json:"check_number"`
+	Date string `json:"date"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Location string `json:"location"`
+	LogoUrl string `json:"logo_url"`
+	MerchantName string `json:"merchant_name"`
+	Name string `json:"name"`
+	OriginalDescription string `json:"original_description"`
+	PaymentMeta string `json:"payment_meta"`
+	Pending bool `json:"pending"`
+	PendingTransactionId string `json:"pending_transaction_id"`
+	TransactionId string `json:"transaction_id"`
+	TransactionType string `json:"transaction_type"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+	Website string `json:"website"`
+}
+
+type TransactionCounterparty struct {
+	AccountNumbers string `json:"account_numbers"`
+	ConfidenceLevel string `json:"confidence_level"`
+	EntityId string `json:"entity_id"`
+	LogoUrl string `json:"logo_url"`
+	Name string `json:"name"`
+	Type string `json:"type"`
+	Website string `json:"website"`
+}
+
+type TransactionData struct {
+	AccountId string `json:"account_id"`
+	Amount float64 `json:"amount"`
+	Date string `json:"date"`
+	Description string `json:"description"`
+	TransactionId string `json:"transaction_id"`
+}
+
+type TransactionOverride struct {
+	Amount float64 `json:"amount"`
+	Currency string `json:"currency"`
+	DatePosted string `json:"date_posted"`
+	DateTransacted string `json:"date_transacted"`
+	Description string `json:"description"`
+}
+
+type TransactionStream struct {
+	AccountId string `json:"account_id"`
+	AverageAmount string `json:"average_amount"`
+	Category string `json:"category"`
+	CategoryId string `json:"category_id"`
+	Description string `json:"description"`
+	FirstDate string `json:"first_date"`
+	Frequency string `json:"frequency"`
+	IsActive bool `json:"is_active"`
+	IsUserModified bool `json:"is_user_modified"`
+	LastAmount string `json:"last_amount"`
+	LastDate string `json:"last_date"`
+	LastUserModifiedDatetime string `json:"last_user_modified_datetime"`
+	MerchantName string `json:"merchant_name"`
+	PersonalFinanceCategory string `json:"personal_finance_category"`
+	PredictedNextDate string `json:"predicted_next_date"`
+	Status string `json:"status"`
+	StreamId string `json:"stream_id"`
+	TransactionIds string `json:"transaction_ids"`
+}
+
+type TransactionStreamAmount struct {
+	Amount float64 `json:"amount"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	UnofficialCurrencyCode string `json:"unofficial_currency_code"`
+}
+
+type TransactionsCategoryRule struct {
+	CreatedAt string `json:"created_at"`
+	Id string `json:"id"`
+	PfcDetailedCategory string `json:"pfc_detailed_category"`
+	PfcPrimaryCategory string `json:"pfc_primary_category"`
+	RuleDetails string `json:"rule_details"`
+	UpdatedAt string `json:"updated_at"`
+	UserId string `json:"user_id"`
+}
+
+type TransactionsEnhanceGetRequest struct {
+	AccountType string `json:"account_type"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	Transactions string `json:"transactions"`
+}
+
+type TransactionsEnhanceGetResponse struct {
+	EnhancedTransactions string `json:"enhanced_transactions"`
+}
+
+type TransactionsEnrichRequest struct {
+	AccountType string `json:"account_type"`
+	ClientId string `json:"client_id"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+	Transactions string `json:"transactions"`
+}
+
+type TransactionsEnrichRequestOptions struct {
+	IncludeLegacyCategory bool `json:"include_legacy_category"`
+	PersonalFinanceCategoryVersion string `json:"personal_finance_category_version"`
+}
+
+type TransactionsEnrichResponse struct {
+	EnrichedTransactions string `json:"enriched_transactions"`
+	RequestId string `json:"request_id"`
+}
+
+type TransactionsGetRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	EndDate string `json:"end_date"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+	StartDate string `json:"start_date"`
+}
+
+type TransactionsGetRequestOptions struct {
+	AccountIds string `json:"account_ids"`
+	Count int `json:"count"`
+	DaysRequested int `json:"days_requested"`
+	IncludeLogoAndCounterpartyBeta bool `json:"include_logo_and_counterparty_beta"`
+	IncludeOriginalDescription bool `json:"include_original_description"`
+	IncludePersonalFinanceCategory bool `json:"include_personal_finance_category"`
+	IncludePersonalFinanceCategoryBeta bool `json:"include_personal_finance_category_beta"`
+	Offset int `json:"offset"`
+	PersonalFinanceCategoryVersion string `json:"personal_finance_category_version"`
+}
+
+type TransactionsGetResponse struct {
+	Accounts string `json:"accounts"`
+	Item string `json:"item"`
+	RequestId string `json:"request_id"`
+	TotalTransactions int `json:"total_transactions"`
+	Transactions string `json:"transactions"`
+}
+
+type TransactionsRecurringCreateInput struct {
+	TransactionIds string `json:"transaction_ids"`
+}
+
+type TransactionsRecurringCreateRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Inputs string `json:"inputs"`
+	Secret string `json:"secret"`
+}
+
+type TransactionsRecurringCreateResponse struct {
+	AddedStreams string `json:"added_streams"`
+	ModifiedStreams string `json:"modified_streams"`
+	RemovedStreamIds string `json:"removed_stream_ids"`
+}
+
+type TransactionsRecurringGetRequest struct {
+	AccessToken string `json:"access_token"`
+	AccountIds string `json:"account_ids"`
+	ClientId string `json:"client_id"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+}
+
+type TransactionsRecurringGetRequestOptions struct {
+	IncludePersonalFinanceCategory bool `json:"include_personal_finance_category"`
+	PersonalFinanceCategoryVersion string `json:"personal_finance_category_version"`
+}
+
+type TransactionsRecurringGetResponse struct {
+	InflowStreams string `json:"inflow_streams"`
+	OutflowStreams string `json:"outflow_streams"`
+	PersonalFinanceCategoryVersion string `json:"personal_finance_category_version"`
+	RequestId string `json:"request_id"`
+	UpdatedDatetime string `json:"updated_datetime"`
+}
+
+type TransactionsRecurringMergeInput struct {
+	StreamIds string `json:"stream_ids"`
+}
+
+type TransactionsRecurringMergeRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Inputs string `json:"inputs"`
+	Secret string `json:"secret"`
+}
+
+type TransactionsRecurringMergeResponse struct {
+	ModifiedStreams string `json:"modified_streams"`
+	RemovedStreamIds string `json:"removed_stream_ids"`
+}
+
+type TransactionsRecurringUpdateInput struct {
+	StreamId string `json:"stream_id"`
+	TransactionIds string `json:"transaction_ids"`
+}
+
+type TransactionsRecurringUpdateRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Inputs string `json:"inputs"`
+	Secret string `json:"secret"`
+}
+
+type TransactionsRecurringUpdateResponse struct {
+	ModifiedStreams string `json:"modified_streams"`
+	RemovedStreamIds string `json:"removed_stream_ids"`
+}
+
+type TransactionsRefreshRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type TransactionsRefreshResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type TransactionsRemovedWebhook struct {
+	Environment string `json:"environment"`
+	Error string `json:"error"`
+	ItemId string `json:"item_id"`
+	RemovedTransactions string `json:"removed_transactions"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type TransactionsRuleDetails struct {
+	Field string `json:"field"`
+	Query string `json:"query"`
+	Type string `json:"type"`
+}
+
+type TransactionsRulesCreateRequest struct {
+	ClientId string `json:"client_id"`
+	ClientUserId string `json:"client_user_id"`
+	PfcDetailedCategory string `json:"pfc_detailed_category"`
+	PfcPrimaryCategory string `json:"pfc_primary_category"`
+	RuleDetails string `json:"rule_details"`
+	Secret string `json:"secret"`
+}
+
+type TransactionsRulesCreateResponse struct {
+	RequestId string `json:"request_id"`
+	Rule string `json:"rule"`
+}
+
+type TransactionsRulesListRequest struct {
+	ClientId string `json:"client_id"`
+	ClientUserId string `json:"client_user_id"`
+	Secret string `json:"secret"`
+}
+
+type TransactionsRulesListResponse struct {
+	RequestId string `json:"request_id"`
+	Rules string `json:"rules"`
+}
+
+type TransactionsRulesRemoveRequest struct {
+	ClientId string `json:"client_id"`
+	ClientUserId string `json:"client_user_id"`
+	RuleId string `json:"rule_id"`
+	Secret string `json:"secret"`
+}
+
+type TransactionsRulesRemoveResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type TransactionsSyncRequest struct {
+	AccessToken string `json:"access_token"`
+	ClientId string `json:"client_id"`
+	Count int `json:"count"`
+	Cursor string `json:"cursor"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+}
+
+type TransactionsSyncRequestOptions struct {
+	AccountId string `json:"account_id"`
+	DaysRequested int `json:"days_requested"`
+	IncludeLogoAndCounterpartyBeta bool `json:"include_logo_and_counterparty_beta"`
+	IncludeOriginalDescription bool `json:"include_original_description"`
+	IncludePersonalFinanceCategory bool `json:"include_personal_finance_category"`
+	PersonalFinanceCategoryVersion string `json:"personal_finance_category_version"`
+}
+
+type TransactionsSyncResponse struct {
+	Accounts string `json:"accounts"`
+	Added string `json:"added"`
+	HasMore bool `json:"has_more"`
+	Modified string `json:"modified"`
+	NextCursor string `json:"next_cursor"`
+	Removed string `json:"removed"`
+	RequestId string `json:"request_id"`
+	TransactionsUpdateStatus string `json:"transactions_update_status"`
+}
+
+type TransactionsUserInsightsGetRequest struct {
+	ClientId string `json:"client_id"`
+	ClientUserId string `json:"client_user_id"`
+	Secret string `json:"secret"`
+}
+
+type TransactionsUserInsightsGetResponse struct {
+	CategoryInsights string `json:"category_insights"`
+	CounterpartyInsights string `json:"counterparty_insights"`
+	RecurringTransactions string `json:"recurring_transactions"`
+	UserDataOverview string `json:"user_data_overview"`
+}
+
+type Transfer struct {
+	AccountId string `json:"account_id"`
+	AchClass string `json:"ach_class"`
+	Amount string `json:"amount"`
+	AuthorizationId string `json:"authorization_id"`
+	Cancellable bool `json:"cancellable"`
+	Created string `json:"created"`
+	CreditFundsSource string `json:"credit_funds_source"`
+	Description string `json:"description"`
+	ExpectedFundsAvailableDate string `json:"expected_funds_available_date"`
+	ExpectedSettlementDate string `json:"expected_settlement_date"`
+	ExpectedSweepSettlementSchedule string `json:"expected_sweep_settlement_schedule"`
+	FacilitatorFee string `json:"facilitator_fee"`
+	FailureReason string `json:"failure_reason"`
+	FundingAccountId string `json:"funding_account_id"`
+	GuaranteeDecision string `json:"guarantee_decision"`
+	GuaranteeDecisionRationale string `json:"guarantee_decision_rationale"`
+	Id string `json:"id"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	LedgerId string `json:"ledger_id"`
+	Metadata string `json:"metadata"`
+	Network string `json:"network"`
+	NetworkTraceId string `json:"network_trace_id"`
+	OriginationAccountId string `json:"origination_account_id"`
+	OriginatorClientId string `json:"originator_client_id"`
+	RecurringTransferId string `json:"recurring_transfer_id"`
+	Refunds string `json:"refunds"`
+	StandardReturnWindow string `json:"standard_return_window"`
+	Status string `json:"status"`
+	SweepStatus string `json:"sweep_status"`
+	Type string `json:"type"`
+	UnauthorizedReturnWindow string `json:"unauthorized_return_window"`
+	User string `json:"user"`
+	WireDetails string `json:"wire_details"`
+}
+
+type TransferAuthorization struct {
+	Created string `json:"created"`
+	Decision string `json:"decision"`
+	DecisionRationale string `json:"decision_rationale"`
+	GuaranteeDecision string `json:"guarantee_decision"`
+	GuaranteeDecisionRationale string `json:"guarantee_decision_rationale"`
+	Id string `json:"id"`
+	PaymentRisk string `json:"payment_risk"`
+	ProposedTransfer string `json:"proposed_transfer"`
+}
+
+type TransferAuthorizationCancelRequest struct {
+	AuthorizationId string `json:"authorization_id"`
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+}
+
+type TransferAuthorizationCancelResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type TransferAuthorizationCreateRequest struct {
+	AccessToken string `json:"access_token"`
+	AccountId string `json:"account_id"`
+	AchClass string `json:"ach_class"`
+	Amount string `json:"amount"`
+	BeaconSessionId string `json:"beacon_session_id"`
+	ClientId string `json:"client_id"`
+	CreditFundsSource string `json:"credit_funds_source"`
+	Device string `json:"device"`
+	FundingAccountId string `json:"funding_account_id"`
+	IdempotencyKey string `json:"idempotency_key"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	LedgerId string `json:"ledger_id"`
+	Network string `json:"network"`
+	OriginationAccountId string `json:"origination_account_id"`
+	OriginatorClientId string `json:"originator_client_id"`
+	PaymentProfileToken string `json:"payment_profile_token"`
+	RequestGuarantee bool `json:"request_guarantee"`
+	RulesetKey string `json:"ruleset_key"`
+	Secret string `json:"secret"`
+	TestClockId string `json:"test_clock_id"`
+	Type string `json:"type"`
+	User string `json:"user"`
+	UserPresent bool `json:"user_present"`
+	WireDetails string `json:"wire_details"`
+	WithGuarantee bool `json:"with_guarantee"`
+}
+
+type TransferAuthorizationCreateResponse struct {
+	Authorization string `json:"authorization"`
+	RequestId string `json:"request_id"`
+}
+
+type TransferAuthorizationDecisionRationale struct {
+	Code string `json:"code"`
+	Description string `json:"description"`
+}
+
+type TransferAuthorizationDevice struct {
+	IpAddress string `json:"ip_address"`
+	UserAgent string `json:"user_agent"`
+}
+
+type TransferAuthorizationGuaranteeDecisionRationale struct {
+	Code string `json:"code"`
+	Description string `json:"description"`
+}
+
+type TransferAuthorizationPaymentRisk struct {
+	BankInitiatedReturnScore int `json:"bank_initiated_return_score"`
+	CustomerInitiatedReturnScore int `json:"customer_initiated_return_score"`
+	RiskLevel string `json:"risk_level"`
+	Warnings string `json:"warnings"`
+}
+
+type TransferAuthorizationProposedTransfer struct {
+	AccountId string `json:"account_id"`
+	AchClass string `json:"ach_class"`
+	Amount string `json:"amount"`
+	CreditFundsSource string `json:"credit_funds_source"`
+	FundingAccountId string `json:"funding_account_id"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	LedgerId string `json:"ledger_id"`
+	Network string `json:"network"`
+	OriginationAccountId string `json:"origination_account_id"`
+	OriginatorClientId string `json:"originator_client_id"`
+	Type string `json:"type"`
+	User string `json:"user"`
+	WireDetails string `json:"wire_details"`
+}
+
+type TransferAuthorizationUserInRequest struct {
+	Address string `json:"address"`
+	EmailAddress string `json:"email_address"`
+	LegalName string `json:"legal_name"`
+	PhoneNumber string `json:"phone_number"`
+}
+
+type TransferBalance struct {
+	Available string `json:"available"`
+	Current string `json:"current"`
+	Type string `json:"type"`
+}
+
+type TransferBalanceGetRequest struct {
+	ClientId string `json:"client_id"`
+	OriginatorClientId string `json:"originator_client_id"`
+	Secret string `json:"secret"`
+	Type string `json:"type"`
+}
+
+type TransferBalanceGetResponse struct {
+	Balance string `json:"balance"`
+	RequestId string `json:"request_id"`
+}
+
+type TransferCancelRequest struct {
+	ClientId string `json:"client_id"`
+	OriginatorClientId string `json:"originator_client_id"`
+	ReasonCode string `json:"reason_code"`
+	Secret string `json:"secret"`
+	TransferId string `json:"transfer_id"`
+}
+
+type TransferCancelResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type TransferCapabilitiesGetRTP struct {
+	Credit bool `json:"credit"`
+}
+
+type TransferCapabilitiesGetRequest struct {
+	AccessToken string `json:"access_token"`
+	AccountId string `json:"account_id"`
+	ClientId string `json:"client_id"`
+	PaymentProfileToken string `json:"payment_profile_token"`
+	Secret string `json:"secret"`
+}
+
+type TransferCapabilitiesGetResponse struct {
+	InstitutionSupportedNetworks string `json:"institution_supported_networks"`
+	RequestId string `json:"request_id"`
+}
+
+type TransferCapabilitiesGetRfP struct {
+	Debit bool `json:"debit"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	MaxAmount string `json:"max_amount"`
+}
+
+type TransferConfigurationGetRequest struct {
+	ClientId string `json:"client_id"`
+	OriginatorClientId string `json:"originator_client_id"`
+	Secret string `json:"secret"`
+}
+
+type TransferConfigurationGetResponse struct {
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	MaxDailyCreditAmount string `json:"max_daily_credit_amount"`
+	MaxDailyDebitAmount string `json:"max_daily_debit_amount"`
+	MaxMonthlyAmount string `json:"max_monthly_amount"`
+	MaxMonthlyCreditAmount string `json:"max_monthly_credit_amount"`
+	MaxMonthlyDebitAmount string `json:"max_monthly_debit_amount"`
+	MaxSingleTransferAmount string `json:"max_single_transfer_amount"`
+	MaxSingleTransferCreditAmount string `json:"max_single_transfer_credit_amount"`
+	MaxSingleTransferDebitAmount string `json:"max_single_transfer_debit_amount"`
+	RequestId string `json:"request_id"`
+}
+
+type TransferCreateRequest struct {
+	AccessToken string `json:"access_token"`
+	AccountId string `json:"account_id"`
+	AchClass string `json:"ach_class"`
+	Amount string `json:"amount"`
+	AuthorizationId string `json:"authorization_id"`
+	ClientId string `json:"client_id"`
+	Description string `json:"description"`
+	FacilitatorFee string `json:"facilitator_fee"`
+	IdempotencyKey string `json:"idempotency_key"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Metadata string `json:"metadata"`
+	Network string `json:"network"`
+	OriginationAccountId string `json:"origination_account_id"`
+	Secret string `json:"secret"`
+	TestClockId string `json:"test_clock_id"`
+	Type string `json:"type"`
+	User string `json:"user"`
+}
+
+type TransferCreateResponse struct {
+	RequestId string `json:"request_id"`
+	Transfer string `json:"transfer"`
+}
+
+type TransferCreditUsageConfiguration struct {
+	ExpectedAverageAmount string `json:"expected_average_amount"`
+	ExpectedFrequency string `json:"expected_frequency"`
+	ExpectedHighestAmount string `json:"expected_highest_amount"`
+	ExpectedMonthlyAmount string `json:"expected_monthly_amount"`
+	SecCodes string `json:"sec_codes"`
+}
+
+type TransferDebitUsageConfiguration struct {
+	ExpectedAverageAmount string `json:"expected_average_amount"`
+	ExpectedFrequency string `json:"expected_frequency"`
+	ExpectedHighestAmount string `json:"expected_highest_amount"`
+	ExpectedMonthlyAmount string `json:"expected_monthly_amount"`
+	SecCodes string `json:"sec_codes"`
+}
+
+type TransferDevice struct {
+	IpAddress string `json:"ip_address"`
+	UserAgent string `json:"user_agent"`
+}
+
+type TransferDiligenceDocumentUploadRequest struct {
+	File string `json:"file"`
+	OriginatorClientId string `json:"originator_client_id"`
+	Purpose string `json:"purpose"`
+}
+
+type TransferDiligenceDocumentUploadResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type TransferDiligenceSubmitRequest struct {
+	ClientId string `json:"client_id"`
+	OriginatorClientId string `json:"originator_client_id"`
+	OriginatorDiligence string `json:"originator_diligence"`
+	Secret string `json:"secret"`
+}
+
+type TransferDiligenceSubmitResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type TransferEvent struct {
+	AccountId string `json:"account_id"`
+	EventId int `json:"event_id"`
+	EventType string `json:"event_type"`
+	FailureReason string `json:"failure_reason"`
+	FundingAccountId string `json:"funding_account_id"`
+	IntentId string `json:"intent_id"`
+	LedgerId string `json:"ledger_id"`
+	OriginationAccountId string `json:"origination_account_id"`
+	OriginatorClientId string `json:"originator_client_id"`
+	RefundId string `json:"refund_id"`
+	SweepAmount string `json:"sweep_amount"`
+	SweepId string `json:"sweep_id"`
+	Timestamp string `json:"timestamp"`
+	TransferAmount string `json:"transfer_amount"`
+	TransferId string `json:"transfer_id"`
+	TransferType string `json:"transfer_type"`
+	WireReturnFee string `json:"wire_return_fee"`
+}
+
+type TransferEventListRequest struct {
+	AccountId string `json:"account_id"`
+	ClientId string `json:"client_id"`
+	Count int `json:"count"`
+	EndDate string `json:"end_date"`
+	EventTypes string `json:"event_types"`
+	FundingAccountId string `json:"funding_account_id"`
+	Offset int `json:"offset"`
+	OriginationAccountId string `json:"origination_account_id"`
+	OriginatorClientId string `json:"originator_client_id"`
+	Secret string `json:"secret"`
+	StartDate string `json:"start_date"`
+	SweepId string `json:"sweep_id"`
+	TransferId string `json:"transfer_id"`
+	TransferType string `json:"transfer_type"`
+}
+
+type TransferEventListResponse struct {
+	HasMore bool `json:"has_more"`
+	RequestId string `json:"request_id"`
+	TransferEvents string `json:"transfer_events"`
+}
+
+type TransferEventSyncRequest struct {
+	AfterId int `json:"after_id"`
+	ClientId string `json:"client_id"`
+	Count int `json:"count"`
+	Secret string `json:"secret"`
+}
+
+type TransferEventSyncResponse struct {
+	HasMore bool `json:"has_more"`
+	RequestId string `json:"request_id"`
+	TransferEvents string `json:"transfer_events"`
+}
+
+type TransferEventsUpdateWebhook struct {
+	Environment string `json:"environment"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type TransferExpectedSweepSettlementScheduleItem struct {
+	SweepSettlementDate string `json:"sweep_settlement_date"`
+	SweptSettledAmount string `json:"swept_settled_amount"`
+}
+
+type TransferFailure struct {
+	AchReturnCode string `json:"ach_return_code"`
+	Description string `json:"description"`
+	FailureCode string `json:"failure_code"`
+}
+
+type TransferFundingAccount struct {
+	AccessToken string `json:"access_token"`
+	AccountId string `json:"account_id"`
+}
+
+type TransferFundingAccountWithDisplayName struct {
+	AccessToken string `json:"access_token"`
+	AccountId string `json:"account_id"`
+	DisplayName string `json:"display_name"`
+}
+
+type TransferGetRequest struct {
+	AuthorizationId string `json:"authorization_id"`
+	ClientId string `json:"client_id"`
+	OriginatorClientId string `json:"originator_client_id"`
+	Secret string `json:"secret"`
+	TransferId string `json:"transfer_id"`
+}
+
+type TransferGetResponse struct {
+	RequestId string `json:"request_id"`
+	Transfer string `json:"transfer"`
+}
+
+type TransferIntentCreate struct {
+	AccountId string `json:"account_id"`
+	AchClass string `json:"ach_class"`
+	Amount string `json:"amount"`
+	Created string `json:"created"`
+	Description string `json:"description"`
+	FundingAccountId string `json:"funding_account_id"`
+	Id string `json:"id"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Metadata string `json:"metadata"`
+	Mode string `json:"mode"`
+	Network string `json:"network"`
+	OriginationAccountId string `json:"origination_account_id"`
+	RequireGuarantee bool `json:"require_guarantee"`
+	Status string `json:"status"`
+	User string `json:"user"`
+}
+
+type TransferIntentCreateRequest struct {
+	AccountId string `json:"account_id"`
+	AchClass string `json:"ach_class"`
+	Amount string `json:"amount"`
+	ClientId string `json:"client_id"`
+	Description string `json:"description"`
+	FundingAccountId string `json:"funding_account_id"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Metadata string `json:"metadata"`
+	Mode string `json:"mode"`
+	Network string `json:"network"`
+	OriginationAccountId string `json:"origination_account_id"`
+	RequireGuarantee bool `json:"require_guarantee"`
+	Secret string `json:"secret"`
+	User string `json:"user"`
+}
+
+type TransferIntentCreateResponse struct {
+	RequestId string `json:"request_id"`
+	TransferIntent string `json:"transfer_intent"`
+}
+
+type TransferIntentGet struct {
+	AccountId string `json:"account_id"`
+	AchClass string `json:"ach_class"`
+	Amount string `json:"amount"`
+	AuthorizationDecision string `json:"authorization_decision"`
+	AuthorizationDecisionRationale string `json:"authorization_decision_rationale"`
+	Created string `json:"created"`
+	Description string `json:"description"`
+	FailureReason string `json:"failure_reason"`
+	FundingAccountId string `json:"funding_account_id"`
+	GuaranteeDecision string `json:"guarantee_decision"`
+	GuaranteeDecisionRationale string `json:"guarantee_decision_rationale"`
+	Id string `json:"id"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Metadata string `json:"metadata"`
+	Mode string `json:"mode"`
+	Network string `json:"network"`
+	OriginationAccountId string `json:"origination_account_id"`
+	RequireGuarantee bool `json:"require_guarantee"`
+	Status string `json:"status"`
+	TransferId string `json:"transfer_id"`
+	User string `json:"user"`
+}
+
+type TransferIntentGetFailureReason struct {
+	ErrorCode string `json:"error_code"`
+	ErrorMessage string `json:"error_message"`
+	ErrorType string `json:"error_type"`
+}
+
+type TransferIntentGetRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	TransferIntentId string `json:"transfer_intent_id"`
+}
+
+type TransferIntentGetResponse struct {
+	RequestId string `json:"request_id"`
+	TransferIntent string `json:"transfer_intent"`
+}
+
+type TransferLedgerBalance struct {
+	Available string `json:"available"`
+	Pending string `json:"pending"`
+}
+
+type TransferLedgerDepositRequest struct {
+	Amount string `json:"amount"`
+	ClientId string `json:"client_id"`
+	Description string `json:"description"`
+	FundingAccountId string `json:"funding_account_id"`
+	IdempotencyKey string `json:"idempotency_key"`
+	LedgerId string `json:"ledger_id"`
+	Network string `json:"network"`
+	OriginatorClientId string `json:"originator_client_id"`
+	Secret string `json:"secret"`
+}
+
+type TransferLedgerDepositResponse struct {
+	RequestId string `json:"request_id"`
+	Sweep string `json:"sweep"`
+}
+
+type TransferLedgerDistributeRequest struct {
+	Amount string `json:"amount"`
+	ClientId string `json:"client_id"`
+	Description string `json:"description"`
+	FromLedgerId string `json:"from_ledger_id"`
+	IdempotencyKey string `json:"idempotency_key"`
+	Secret string `json:"secret"`
+	ToLedgerId string `json:"to_ledger_id"`
+}
+
+type TransferLedgerDistributeResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type TransferLedgerEvent struct {
+	Amount string `json:"amount"`
+	AvailableBalance string `json:"available_balance"`
+	Description string `json:"description"`
+	LedgerEventId string `json:"ledger_event_id"`
+	LedgerId string `json:"ledger_id"`
+	PendingBalance string `json:"pending_balance"`
+	RefundId string `json:"refund_id"`
+	SweepId string `json:"sweep_id"`
+	Timestamp string `json:"timestamp"`
+	TransferId string `json:"transfer_id"`
+	Type string `json:"type"`
+}
+
+type TransferLedgerEventListRequest struct {
+	ClientId string `json:"client_id"`
+	Count int `json:"count"`
+	EndDate string `json:"end_date"`
+	LedgerEventId string `json:"ledger_event_id"`
+	LedgerId string `json:"ledger_id"`
+	Offset int `json:"offset"`
+	OriginatorClientId string `json:"originator_client_id"`
+	Secret string `json:"secret"`
+	SourceId string `json:"source_id"`
+	SourceType string `json:"source_type"`
+	StartDate string `json:"start_date"`
+}
+
+type TransferLedgerEventListResponse struct {
+	HasMore bool `json:"has_more"`
+	LedgerEvents string `json:"ledger_events"`
+	RequestId string `json:"request_id"`
+}
+
+type TransferLedgerGetRequest struct {
+	ClientId string `json:"client_id"`
+	LedgerId string `json:"ledger_id"`
+	OriginatorClientId string `json:"originator_client_id"`
+	Secret string `json:"secret"`
+}
+
+type TransferLedgerGetResponse struct {
+	Balance string `json:"balance"`
+	IsDefault bool `json:"is_default"`
+	LedgerId string `json:"ledger_id"`
+	Name string `json:"name"`
+	RequestId string `json:"request_id"`
+}
+
+type TransferLedgerWithdrawRequest struct {
+	Amount string `json:"amount"`
+	ClientId string `json:"client_id"`
+	Description string `json:"description"`
+	FundingAccountId string `json:"funding_account_id"`
+	IdempotencyKey string `json:"idempotency_key"`
+	LedgerId string `json:"ledger_id"`
+	Network string `json:"network"`
+	OriginatorClientId string `json:"originator_client_id"`
+	Secret string `json:"secret"`
+}
+
+type TransferLedgerWithdrawResponse struct {
+	RequestId string `json:"request_id"`
+	Sweep string `json:"sweep"`
+}
+
+type TransferListRequest struct {
+	ClientId string `json:"client_id"`
+	Count int `json:"count"`
+	EndDate string `json:"end_date"`
+	FundingAccountId string `json:"funding_account_id"`
+	Offset int `json:"offset"`
+	OriginationAccountId string `json:"origination_account_id"`
+	OriginatorClientId string `json:"originator_client_id"`
+	Secret string `json:"secret"`
+	StartDate string `json:"start_date"`
+}
+
+type TransferListResponse struct {
+	RequestId string `json:"request_id"`
+	Transfers string `json:"transfers"`
+}
+
+type TransferMetadata struct {
+}
+
+type TransferMetricsGetAuthorizationUsage struct {
+	DailyCreditUtilization string `json:"daily_credit_utilization"`
+	DailyDebitUtilization string `json:"daily_debit_utilization"`
+	MonthlyCreditUtilization string `json:"monthly_credit_utilization"`
+	MonthlyDebitUtilization string `json:"monthly_debit_utilization"`
+}
+
+type TransferMetricsGetRequest struct {
+	ClientId string `json:"client_id"`
+	OriginatorClientId string `json:"originator_client_id"`
+	Secret string `json:"secret"`
+}
+
+type TransferMetricsGetResponse struct {
+	AuthorizationUsage string `json:"authorization_usage"`
+	DailyCreditTransferVolume string `json:"daily_credit_transfer_volume"`
+	DailyDebitTransferVolume string `json:"daily_debit_transfer_volume"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	MonthlyCreditTransferVolume string `json:"monthly_credit_transfer_volume"`
+	MonthlyDebitTransferVolume string `json:"monthly_debit_transfer_volume"`
+	MonthlyTransferVolume string `json:"monthly_transfer_volume"`
+	RequestId string `json:"request_id"`
+	ReturnRates string `json:"return_rates"`
+}
+
+type TransferMetricsGetReturnRates struct {
+	Last60d string `json:"last_60d"`
+}
+
+type TransferMetricsGetReturnRatesOverInterval struct {
+	AdministrativeReturnRate string `json:"administrative_return_rate"`
+	OverallReturnRate string `json:"overall_return_rate"`
+	UnauthorizedReturnRate string `json:"unauthorized_return_rate"`
+}
+
+type TransferMigrateAccountRequest struct {
+	AccountNumber string `json:"account_number"`
+	AccountType string `json:"account_type"`
+	ClientId string `json:"client_id"`
+	RoutingNumber string `json:"routing_number"`
+	Secret string `json:"secret"`
+	WireRoutingNumber string `json:"wire_routing_number"`
+}
+
+type TransferMigrateAccountResponse struct {
+	AccessToken string `json:"access_token"`
+	AccountId string `json:"account_id"`
+	RequestId string `json:"request_id"`
+}
+
+type TransferOriginatorAddress struct {
+	City string `json:"city"`
+	CountryCode string `json:"country_code"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+	Street string `json:"street"`
+}
+
+type TransferOriginatorCreateRequest struct {
+	ClientId string `json:"client_id"`
+	CompanyName string `json:"company_name"`
+	Secret string `json:"secret"`
+}
+
+type TransferOriginatorCreateResponse struct {
+	CompanyName string `json:"company_name"`
+	OriginatorClientId string `json:"originator_client_id"`
+	RequestId string `json:"request_id"`
+}
+
+type TransferOriginatorDiligence struct {
+	Address string `json:"address"`
+	CreditUsageConfiguration string `json:"credit_usage_configuration"`
+	Dba string `json:"dba"`
+	DebitUsageConfiguration string `json:"debit_usage_configuration"`
+	FundingAccount string `json:"funding_account"`
+	NaicsCode string `json:"naics_code"`
+	TaxId string `json:"tax_id"`
+	Website string `json:"website"`
+}
+
+type TransferOriginatorFundingAccountCreateRequest struct {
+	ClientId string `json:"client_id"`
+	FundingAccount string `json:"funding_account"`
+	OriginatorClientId string `json:"originator_client_id"`
+	Secret string `json:"secret"`
+}
+
+type TransferOriginatorFundingAccountCreateResponse struct {
+	FundingAccountId string `json:"funding_account_id"`
+	RequestId string `json:"request_id"`
+}
+
+type TransferOriginatorFundingAccountUpdateRequest struct {
+	ClientId string `json:"client_id"`
+	FundingAccount string `json:"funding_account"`
+	OriginatorClientId string `json:"originator_client_id"`
+	Secret string `json:"secret"`
+}
+
+type TransferOriginatorFundingAccountUpdateResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type TransferOriginatorGetRequest struct {
+	ClientId string `json:"client_id"`
+	OriginatorClientId string `json:"originator_client_id"`
+	Secret string `json:"secret"`
+}
+
+type TransferOriginatorGetResponse struct {
+	Originator string `json:"originator"`
+	RequestId string `json:"request_id"`
+}
+
+type TransferOriginatorListRequest struct {
+	ClientId string `json:"client_id"`
+	Count int `json:"count"`
+	Offset int `json:"offset"`
+	Secret string `json:"secret"`
+}
+
+type TransferOriginatorListResponse struct {
+	Originators string `json:"originators"`
+	RequestId string `json:"request_id"`
+}
+
+type TransferPlatformOnboardingUpdateWebhook struct {
+	Environment string `json:"environment"`
+	OriginatorClientId string `json:"originator_client_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type TransferPlatformOriginatorCreateRequest struct {
+	ClientId string `json:"client_id"`
+	OriginatorClientId string `json:"originator_client_id"`
+	OriginatorReviewedAt string `json:"originator_reviewed_at"`
+	Secret string `json:"secret"`
+	TosAcceptanceMetadata string `json:"tos_acceptance_metadata"`
+	Webhook string `json:"webhook"`
+}
+
+type TransferPlatformOriginatorCreateResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type TransferPlatformPersonAddress struct {
+	City string `json:"city"`
+	Country string `json:"country"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+	Street string `json:"street"`
+	Street2 string `json:"street2"`
+}
+
+type TransferPlatformPersonCreateRequest struct {
+	Address string `json:"address"`
+	ClientId string `json:"client_id"`
+	DateOfBirth string `json:"date_of_birth"`
+	EmailAddress string `json:"email_address"`
+	IdNumber string `json:"id_number"`
+	Name string `json:"name"`
+	OriginatorClientId string `json:"originator_client_id"`
+	OwnershipPercentage int `json:"ownership_percentage"`
+	PhoneNumber string `json:"phone_number"`
+	RelationshipToOriginator string `json:"relationship_to_originator"`
+	Secret string `json:"secret"`
+	Title string `json:"title"`
+}
+
+type TransferPlatformPersonCreateResponse struct {
+	PersonId string `json:"person_id"`
+	RequestId string `json:"request_id"`
+}
+
+type TransferPlatformPersonIDNumber struct {
+	Type string `json:"type"`
+	Value string `json:"value"`
+}
+
+type TransferPlatformPersonName struct {
+	FamilyName string `json:"family_name"`
+	GivenName string `json:"given_name"`
+}
+
+type TransferPlatformRequirement struct {
+	PersonId string `json:"person_id"`
+	RequirementType string `json:"requirement_type"`
+}
+
+type TransferPlatformRequirementSubmission struct {
+	PersonId string `json:"person_id"`
+	RequirementType string `json:"requirement_type"`
+	Value string `json:"value"`
+}
+
+type TransferPlatformRequirementSubmitRequest struct {
+	ClientId string `json:"client_id"`
+	OriginatorClientId string `json:"originator_client_id"`
+	RequirementSubmissions string `json:"requirement_submissions"`
+	Secret string `json:"secret"`
+}
+
+type TransferPlatformRequirementSubmitResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type TransferPlatformTOSAcceptanceMetadata struct {
+	AgreementAccepted bool `json:"agreement_accepted"`
+	AgreementAcceptedAt string `json:"agreement_accepted_at"`
+	OriginatorIpAddress string `json:"originator_ip_address"`
+}
+
+type TransferQuestionnaireCreateRequest struct {
+	ClientId string `json:"client_id"`
+	OriginatorClientId string `json:"originator_client_id"`
+	RedirectUri string `json:"redirect_uri"`
+	Secret string `json:"secret"`
+}
+
+type TransferQuestionnaireCreateResponse struct {
+	OnboardingUrl string `json:"onboarding_url"`
+	RequestId string `json:"request_id"`
+}
+
+type TransferRecurringCancelRequest struct {
+	ClientId string `json:"client_id"`
+	RecurringTransferId string `json:"recurring_transfer_id"`
+	Secret string `json:"secret"`
+}
+
+type TransferRecurringCancelResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type TransferRecurringCreateRequest struct {
+	AccessToken string `json:"access_token"`
+	AccountId string `json:"account_id"`
+	AchClass string `json:"ach_class"`
+	Amount string `json:"amount"`
+	ClientId string `json:"client_id"`
+	Description string `json:"description"`
+	Device string `json:"device"`
+	FundingAccountId string `json:"funding_account_id"`
+	IdempotencyKey string `json:"idempotency_key"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Network string `json:"network"`
+	Schedule string `json:"schedule"`
+	Secret string `json:"secret"`
+	TestClockId string `json:"test_clock_id"`
+	Type string `json:"type"`
+	User string `json:"user"`
+	UserPresent bool `json:"user_present"`
+}
+
+type TransferRecurringCreateResponse struct {
+	Decision string `json:"decision"`
+	DecisionRationale string `json:"decision_rationale"`
+	RecurringTransfer string `json:"recurring_transfer"`
+	RequestId string `json:"request_id"`
+}
+
+type TransferRecurringGetRequest struct {
+	ClientId string `json:"client_id"`
+	RecurringTransferId string `json:"recurring_transfer_id"`
+	Secret string `json:"secret"`
+}
+
+type TransferRecurringGetResponse struct {
+	RecurringTransfer string `json:"recurring_transfer"`
+	RequestId string `json:"request_id"`
+}
+
+type TransferRecurringListRequest struct {
+	ClientId string `json:"client_id"`
+	Count int `json:"count"`
+	EndTime string `json:"end_time"`
+	FundingAccountId string `json:"funding_account_id"`
+	Offset int `json:"offset"`
+	Secret string `json:"secret"`
+	StartTime string `json:"start_time"`
+}
+
+type TransferRecurringListResponse struct {
+	RecurringTransfers string `json:"recurring_transfers"`
+	RequestId string `json:"request_id"`
+}
+
+type TransferRecurringSchedule struct {
+	EndDate string `json:"end_date"`
+	IntervalCount int `json:"interval_count"`
+	IntervalExecutionDay int `json:"interval_execution_day"`
+	IntervalUnit string `json:"interval_unit"`
+	StartDate string `json:"start_date"`
+}
+
+type TransferRefund struct {
+	Amount string `json:"amount"`
+	Created string `json:"created"`
+	FailureReason string `json:"failure_reason"`
+	Id string `json:"id"`
+	LedgerId string `json:"ledger_id"`
+	NetworkTraceId string `json:"network_trace_id"`
+	Status string `json:"status"`
+	TransferId string `json:"transfer_id"`
+}
+
+type TransferRefundCancelRequest struct {
+	ClientId string `json:"client_id"`
+	RefundId string `json:"refund_id"`
+	Secret string `json:"secret"`
+}
+
+type TransferRefundCancelResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type TransferRefundCreateRequest struct {
+	Amount string `json:"amount"`
+	ClientId string `json:"client_id"`
+	IdempotencyKey string `json:"idempotency_key"`
+	Secret string `json:"secret"`
+	TransferId string `json:"transfer_id"`
+}
+
+type TransferRefundCreateResponse struct {
+	Refund string `json:"refund"`
+	RequestId string `json:"request_id"`
+}
+
+type TransferRefundFailure struct {
+	AchReturnCode string `json:"ach_return_code"`
+	Description string `json:"description"`
+	FailureCode string `json:"failure_code"`
+}
+
+type TransferRefundGetRequest struct {
+	ClientId string `json:"client_id"`
+	RefundId string `json:"refund_id"`
+	Secret string `json:"secret"`
+}
+
+type TransferRefundGetResponse struct {
+	Refund string `json:"refund"`
+	RequestId string `json:"request_id"`
+}
+
+type TransferRepayment struct {
+	Amount string `json:"amount"`
+	Created string `json:"created"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	RepaymentId string `json:"repayment_id"`
+}
+
+type TransferRepaymentListRequest struct {
+	ClientId string `json:"client_id"`
+	Count int `json:"count"`
+	EndDate string `json:"end_date"`
+	Offset int `json:"offset"`
+	Secret string `json:"secret"`
+	StartDate string `json:"start_date"`
+}
+
+type TransferRepaymentListResponse struct {
+	Repayments string `json:"repayments"`
+	RequestId string `json:"request_id"`
+}
+
+type TransferRepaymentReturn struct {
+	Amount string `json:"amount"`
+	EventId int `json:"event_id"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	TransferId string `json:"transfer_id"`
+}
+
+type TransferRepaymentReturnListRequest struct {
+	ClientId string `json:"client_id"`
+	Count int `json:"count"`
+	Offset int `json:"offset"`
+	RepaymentId string `json:"repayment_id"`
+	Secret string `json:"secret"`
+}
+
+type TransferRepaymentReturnListResponse struct {
+	RepaymentReturns string `json:"repayment_returns"`
+	RequestId string `json:"request_id"`
+}
+
+type TransferSweep struct {
+	Amount string `json:"amount"`
+	Created string `json:"created"`
+	Description string `json:"description"`
+	ExpectedFundsAvailableDate string `json:"expected_funds_available_date"`
+	FailureReason string `json:"failure_reason"`
+	FundingAccountId string `json:"funding_account_id"`
+	Id string `json:"id"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	LedgerId string `json:"ledger_id"`
+	NetworkTraceId string `json:"network_trace_id"`
+	Settled string `json:"settled"`
+	Status string `json:"status"`
+	Trigger string `json:"trigger"`
+}
+
+type TransferSweepGetRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	SweepId string `json:"sweep_id"`
+}
+
+type TransferSweepGetResponse struct {
+	RequestId string `json:"request_id"`
+	Sweep string `json:"sweep"`
+}
+
+type TransferSweepListRequest struct {
+	Amount string `json:"amount"`
+	ClientId string `json:"client_id"`
+	Count int `json:"count"`
+	EndDate string `json:"end_date"`
+	FundingAccountId string `json:"funding_account_id"`
+	Offset int `json:"offset"`
+	OriginatorClientId string `json:"originator_client_id"`
+	Secret string `json:"secret"`
+	StartDate string `json:"start_date"`
+	Status string `json:"status"`
+	TransferId string `json:"transfer_id"`
+	Trigger string `json:"trigger"`
+}
+
+type TransferSweepListResponse struct {
+	RequestId string `json:"request_id"`
+	Sweeps string `json:"sweeps"`
+}
+
+type TransferTestClock struct {
+	TestClockId string `json:"test_clock_id"`
+	VirtualTime string `json:"virtual_time"`
+}
+
+type TransferUserAddressInRequest struct {
+	City string `json:"city"`
+	Country string `json:"country"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+	Street string `json:"street"`
+}
+
+type TransferUserAddressInResponse struct {
+	City string `json:"city"`
+	Country string `json:"country"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+	Street string `json:"street"`
+}
+
+type TransferUserInRequest struct {
+	Address string `json:"address"`
+	EmailAddress string `json:"email_address"`
+	LegalName string `json:"legal_name"`
+	PhoneNumber string `json:"phone_number"`
+}
+
+type TransferUserInRequestDeprecated struct {
+	Address string `json:"address"`
+	EmailAddress string `json:"email_address"`
+	LegalName string `json:"legal_name"`
+	PhoneNumber string `json:"phone_number"`
+}
+
+type TransferUserInResponse struct {
+	Address string `json:"address"`
+	EmailAddress string `json:"email_address"`
+	LegalName string `json:"legal_name"`
+	PhoneNumber string `json:"phone_number"`
+}
+
+type TransferWireDetails struct {
+	MessageToBeneficiary string `json:"message_to_beneficiary"`
+	WireReturnFee string `json:"wire_return_fee"`
+}
+
+type TrustIndex struct {
+	Model string `json:"model"`
+	Score int `json:"score"`
+	Subscores string `json:"subscores"`
+}
+
+type TrustIndexSubscore struct {
+	Score int `json:"score"`
+}
+
+type TrustIndexSubscores struct {
+	BankAccountInsights string `json:"bank_account_insights"`
+	DeviceAndConnection string `json:"device_and_connection"`
+}
+
+type TrustedDeviceData struct {
+	DeviceId string `json:"device_id"`
+	TrustLevel int `json:"trust_level"`
+}
+
+type UnofficialCurrencyCodeList struct {
+	ADA string `json:"ADA"`
+	BAT string `json:"BAT"`
+	BCH string `json:"BCH"`
+	BNB string `json:"BNB"`
+	BSV string `json:"BSV"`
+	BTC string `json:"BTC"`
+	BTG string `json:"BTG"`
+	CNH string `json:"CNH"`
+	DASH string `json:"DASH"`
+	DOGE string `json:"DOGE"`
+	ETC string `json:"ETC"`
+	ETH string `json:"ETH"`
+	GBX string `json:"GBX"`
+	LSK string `json:"LSK"`
+	NEO string `json:"NEO"`
+	OMG string `json:"OMG"`
+	QTUM string `json:"QTUM"`
+	USDT string `json:"USDT"`
+	XLM string `json:"XLM"`
+	XMR string `json:"XMR"`
+	XRP string `json:"XRP"`
+	ZEC string `json:"ZEC"`
+	ZRX string `json:"ZRX"`
+}
+
+type UpdateEntityScreeningRequestSearchTerms struct {
+	Country string `json:"country"`
+	DocumentNumber string `json:"document_number"`
+	EmailAddress string `json:"email_address"`
+	EntityWatchlistProgramId string `json:"entity_watchlist_program_id"`
+	LegalName string `json:"legal_name"`
+	PhoneNumber string `json:"phone_number"`
+	Url string `json:"url"`
+}
+
+type UpdateIndividualScreeningRequestSearchTerms struct {
+	Country string `json:"country"`
+	DateOfBirth string `json:"date_of_birth"`
+	DocumentNumber string `json:"document_number"`
+	LegalName string `json:"legal_name"`
+	WatchlistProgramId string `json:"watchlist_program_id"`
+}
+
+type UserAccountIdentity struct {
+	Address string `json:"address"`
+	DateOfBirth string `json:"date_of_birth"`
+	Email string `json:"email"`
+	Name string `json:"name"`
+	PhoneNumber string `json:"phone_number"`
+	Ssn string `json:"ssn"`
+	SsnLast4 string `json:"ssn_last_4"`
+}
+
+type UserAccountIdentityAddress struct {
+	City string `json:"city"`
+	Country string `json:"country"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+	Street string `json:"street"`
+	Street2 string `json:"street2"`
+}
+
+type UserAccountIdentityEditCounts struct {
+	Edits1d int `json:"edits_1d"`
+	Edits30d int `json:"edits_30d"`
+	Edits365d int `json:"edits_365d"`
+	EditsAllTime int `json:"edits_all_time"`
+	EditsCurrent int `json:"edits_current"`
+}
+
+type UserAccountIdentityEditHistory struct {
+	Address string `json:"address"`
+	DateOfBirth string `json:"date_of_birth"`
+	Email string `json:"email"`
+	Name string `json:"name"`
+	OfficialDocument string `json:"official_document"`
+}
+
+type UserAccountIdentityName struct {
+	FirstName string `json:"first_name"`
+	LastName string `json:"last_name"`
+}
+
+type UserAccountIdentityOfficialDocument struct {
+	Ssn string `json:"ssn"`
+}
+
+type UserAccountItem struct {
+	AccessToken string `json:"access_token"`
+	ItemId string `json:"item_id"`
+}
+
+type UserAccountRevokedWebhook struct {
+	AccountId string `json:"account_id"`
+	Environment string `json:"environment"`
+	ItemId string `json:"item_id"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type UserAccountSessionEvent struct {
+	Name string `json:"name"`
+	Outcome string `json:"outcome"`
+	Timestamp string `json:"timestamp"`
+}
+
+type UserAccountSessionEventSendRequest struct {
+	ClientId string `json:"client_id"`
+	CohortId string `json:"cohort_id"`
+	Event string `json:"event"`
+	LinkSessionId string `json:"link_session_id"`
+	Secret string `json:"secret"`
+}
+
+type UserAccountSessionEventSendResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type UserAccountSessionGetRequest struct {
+	ClientId string `json:"client_id"`
+	PublicToken string `json:"public_token"`
+	Secret string `json:"secret"`
+}
+
+type UserAccountSessionGetResponse struct {
+	Identity string `json:"identity"`
+	IdentityEditHistory string `json:"identity_edit_history"`
+	Items string `json:"items"`
+	RequestId string `json:"request_id"`
+}
+
+type UserAddress struct {
+	City string `json:"city"`
+	Country string `json:"country"`
+	PostalCode string `json:"postal_code"`
+	Region string `json:"region"`
+	Street string `json:"street"`
+	Street2 string `json:"street2"`
+}
+
+type UserCreateRequest struct {
+	ClientId string `json:"client_id"`
+	ClientUserId string `json:"client_user_id"`
+	ConsumerReportUserIdentity string `json:"consumer_report_user_identity"`
+	EndCustomer string `json:"end_customer"`
+	Identity string `json:"identity"`
+	Secret string `json:"secret"`
+	WithUpgradedUser bool `json:"with_upgraded_user"`
+}
+
+type UserCreateResponse struct {
+	RequestId string `json:"request_id"`
+	UserId string `json:"user_id"`
+	UserToken string `json:"user_token"`
+}
+
+type UserCustomPassword struct {
+	ForceError string `json:"force_error"`
+	Mfa string `json:"mfa"`
+	OverrideAccounts string `json:"override_accounts"`
+	Recaptcha string `json:"recaptcha"`
+	Seed string `json:"seed"`
+	Version string `json:"version"`
+}
+
+type UserDataOverview struct {
+	DaysAvailable int `json:"days_available"`
+	NewestTransactionDate string `json:"newest_transaction_date"`
+	OldestTransactionDate string `json:"oldest_transaction_date"`
+	TotalInflows float64 `json:"total_inflows"`
+	TotalOutflows float64 `json:"total_outflows"`
+	TransactionCount int `json:"transaction_count"`
+}
+
+type UserFinancialDataRefreshRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	UserId string `json:"user_id"`
+}
+
+type UserFinancialDataRefreshResponse struct {
+	RequestId string `json:"request_id"`
+	Results string `json:"results"`
+	UserId string `json:"user_id"`
+}
+
+type UserGetRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	UserId string `json:"user_id"`
+}
+
+type UserGetResponse struct {
+	ClientUserId string `json:"client_user_id"`
+	CreatedAt string `json:"created_at"`
+	Identity string `json:"identity"`
+	RequestId string `json:"request_id"`
+	UpdatedAt string `json:"updated_at"`
+	UserId string `json:"user_id"`
+}
+
+type UserIDNumber struct {
+	Type string `json:"type"`
+	Value string `json:"value"`
+}
+
+type UserIdentityRemoveRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	UserId string `json:"user_id"`
+}
+
+type UserIdentityRemoveResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type UserItemsAssociateRequest struct {
+	ClientId string `json:"client_id"`
+	ItemIds string `json:"item_ids"`
+	Secret string `json:"secret"`
+	UserId string `json:"user_id"`
+}
+
+type UserItemsAssociateResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type UserItemsGetRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	UserId string `json:"user_id"`
+	UserToken string `json:"user_token"`
+}
+
+type UserItemsGetResponse struct {
+	Items string `json:"items"`
+	RequestId string `json:"request_id"`
+}
+
+type UserItemsRemoveRequest struct {
+	ClientId string `json:"client_id"`
+	ItemIds string `json:"item_ids"`
+	Secret string `json:"secret"`
+	UserId string `json:"user_id"`
+	UserToken string `json:"user_token"`
+}
+
+type UserItemsRemoveResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type UserPermissionRevokedWebhook struct {
+	Environment string `json:"environment"`
+	Error string `json:"error"`
+	ItemId string `json:"item_id"`
+	UserId string `json:"user_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type UserProductsTerminateRequest struct {
+	ClientId string `json:"client_id"`
+	Products string `json:"products"`
+	Secret string `json:"secret"`
+	UserId string `json:"user_id"`
+}
+
+type UserProductsTerminateResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type UserRemoveRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	UserId string `json:"user_id"`
+	UserToken string `json:"user_token"`
+}
+
+type UserRemoveResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type UserThirdPartyTokenCreateRequest struct {
+	ClientId string `json:"client_id"`
+	ExpirationTime string `json:"expiration_time"`
+	Secret string `json:"secret"`
+	ThirdPartyClientId string `json:"third_party_client_id"`
+	UserId string `json:"user_id"`
+	UserToken string `json:"user_token"`
+}
+
+type UserThirdPartyTokenCreateResponse struct {
+	RequestId string `json:"request_id"`
+	ThirdPartyUserToken string `json:"third_party_user_token"`
+}
+
+type UserThirdPartyTokenRemoveRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	ThirdPartyUserToken string `json:"third_party_user_token"`
+}
+
+type UserThirdPartyTokenRemoveResponse struct {
+	Removed bool `json:"removed"`
+	RequestId string `json:"request_id"`
+}
+
+type UserTransactionsRefreshRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	UserId string `json:"user_id"`
+}
+
+type UserTransactionsRefreshResponse struct {
+	RequestId string `json:"request_id"`
+	Results string `json:"results"`
+	UserId string `json:"user_id"`
+}
+
+type UserUpdateRequest struct {
+	ClientId string `json:"client_id"`
+	ConsumerReportUserIdentity string `json:"consumer_report_user_identity"`
+	Identity string `json:"identity"`
+	Secret string `json:"secret"`
+	UserId string `json:"user_id"`
+	UserToken string `json:"user_token"`
+}
+
+type UserUpdateResponse struct {
+	RequestId string `json:"request_id"`
+}
+
+type ValidationSource struct {
+	ValidationSourceName string `json:"ValidationSourceName"`
+	ValidationSourceReferenceIdentifier string `json:"ValidationSourceReferenceIdentifier"`
+}
+
+type ValidationSources struct {
+	VALIDATIONSOURCE string `json:"VALIDATION_SOURCE"`
+}
+
+type VerificationExpiredWebhook struct {
+	AccountId string `json:"account_id"`
+	Environment string `json:"environment"`
+	Error string `json:"error"`
+	ItemId string `json:"item_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type VerificationOfAsset struct {
+	REPORTINGINFORMATION string `json:"REPORTING_INFORMATION"`
+	SERVICEPRODUCTFULFILLMENT string `json:"SERVICE_PRODUCT_FULFILLMENT"`
+	VERIFICATIONOFASSETRESPONSE string `json:"VERIFICATION_OF_ASSET_RESPONSE"`
+}
+
+type VerificationOfAssetResponse struct {
+	ASSETS string `json:"ASSETS"`
+}
+
+type VerifySMSDetails struct {
+	Status string `json:"status"`
+	Verifications string `json:"verifications"`
+}
+
+type W2 struct {
+	AllocatedTips string `json:"allocated_tips"`
+	Box12 string `json:"box_12"`
+	Box9 string `json:"box_9"`
+	DependentCareBenefits string `json:"dependent_care_benefits"`
+	Employee string `json:"employee"`
+	Employer string `json:"employer"`
+	EmployerIdNumber string `json:"employer_id_number"`
+	FederalIncomeTaxWithheld string `json:"federal_income_tax_withheld"`
+	MedicareTaxWithheld string `json:"medicare_tax_withheld"`
+	MedicareWagesAndTips string `json:"medicare_wages_and_tips"`
+	NonqualifiedPlans string `json:"nonqualified_plans"`
+	Other string `json:"other"`
+	RetirementPlan string `json:"retirement_plan"`
+	SocialSecurityTaxWithheld string `json:"social_security_tax_withheld"`
+	SocialSecurityTips string `json:"social_security_tips"`
+	SocialSecurityWages string `json:"social_security_wages"`
+	StateAndLocalWages string `json:"state_and_local_wages"`
+	StatutoryEmployee string `json:"statutory_employee"`
+	TaxYear string `json:"tax_year"`
+	ThirdPartySickPay string `json:"third_party_sick_pay"`
+	WagesTipsOtherComp string `json:"wages_tips_other_comp"`
+}
+
+type W2Box12 struct {
+	Amount string `json:"amount"`
+	Code string `json:"code"`
+}
+
+type W2Box12Override struct {
+	Amount string `json:"amount"`
+	Code string `json:"code"`
+}
+
+type W2Override struct {
+	AllocatedTips string `json:"allocated_tips"`
+	Box12 string `json:"box_12"`
+	Box9 string `json:"box_9"`
+	DependentCareBenefits string `json:"dependent_care_benefits"`
+	Employee string `json:"employee"`
+	Employer string `json:"employer"`
+	EmployerIdNumber string `json:"employer_id_number"`
+	FederalIncomeTaxWithheld string `json:"federal_income_tax_withheld"`
+	MedicareTaxWithheld string `json:"medicare_tax_withheld"`
+	MedicareWagesAndTips string `json:"medicare_wages_and_tips"`
+	NonqualifiedPlans string `json:"nonqualified_plans"`
+	Other string `json:"other"`
+	RetirementPlan string `json:"retirement_plan"`
+	SocialSecurityTaxWithheld string `json:"social_security_tax_withheld"`
+	SocialSecurityTips string `json:"social_security_tips"`
+	SocialSecurityWages string `json:"social_security_wages"`
+	StateAndLocalWages string `json:"state_and_local_wages"`
+	StatutoryEmployee string `json:"statutory_employee"`
+	TaxYear string `json:"tax_year"`
+	ThirdPartySickPay string `json:"third_party_sick_pay"`
+	WagesTipsOtherComp string `json:"wages_tips_other_comp"`
+}
+
+type W2StateAndLocalWages struct {
+	EmployerStateIdNumber string `json:"employer_state_id_number"`
+	LocalIncomeTax string `json:"local_income_tax"`
+	LocalWagesTips string `json:"local_wages_tips"`
+	LocalityName string `json:"locality_name"`
+	State string `json:"state"`
+	StateIncomeTax string `json:"state_income_tax"`
+	StateWagesTips string `json:"state_wages_tips"`
+}
+
+type W2StateAndLocalWagesOverride struct {
+	EmployerStateIdNumber string `json:"employer_state_id_number"`
+	LocalIncomeTax string `json:"local_income_tax"`
+	LocalWagesTips string `json:"local_wages_tips"`
+	LocalityName string `json:"locality_name"`
+	State string `json:"state"`
+	StateIncomeTax string `json:"state_income_tax"`
+	StateWagesTips string `json:"state_wages_tips"`
+}
+
+type Wallet struct {
+	Balance string `json:"balance"`
+	Numbers string `json:"numbers"`
+	RecipientId string `json:"recipient_id"`
+	Status string `json:"status"`
+	WalletId string `json:"wallet_id"`
+}
+
+type WalletBalance struct {
+	Available float64 `json:"available"`
+	Current float64 `json:"current"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+}
+
+type WalletCreateRequest struct {
+	ClientId string `json:"client_id"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Secret string `json:"secret"`
+}
+
+type WalletCreateResponse struct {
+	Balance string `json:"balance"`
+	Numbers string `json:"numbers"`
+	RecipientId string `json:"recipient_id"`
+	RequestId string `json:"request_id"`
+	Status string `json:"status"`
+	WalletId string `json:"wallet_id"`
+}
+
+type WalletGetRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	WalletId string `json:"wallet_id"`
+}
+
+type WalletGetResponse struct {
+	Balance string `json:"balance"`
+	Numbers string `json:"numbers"`
+	RecipientId string `json:"recipient_id"`
+	RequestId string `json:"request_id"`
+	Status string `json:"status"`
+	WalletId string `json:"wallet_id"`
+}
+
+type WalletListRequest struct {
+	ClientId string `json:"client_id"`
+	Count int `json:"count"`
+	Cursor string `json:"cursor"`
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Secret string `json:"secret"`
+}
+
+type WalletListResponse struct {
+	NextCursor string `json:"next_cursor"`
+	RequestId string `json:"request_id"`
+	Wallets string `json:"wallets"`
+}
+
+type WalletNumbers struct {
+	Bacs string `json:"bacs"`
+	International string `json:"international"`
+}
+
+type WalletTransaction struct {
+	Amount string `json:"amount"`
+	Counterparty string `json:"counterparty"`
+	CreatedAt string `json:"created_at"`
+	Error string `json:"error"`
+	FailureReason string `json:"failure_reason"`
+	LastStatusUpdate string `json:"last_status_update"`
+	PayeeVerificationStatus string `json:"payee_verification_status"`
+	PaymentId string `json:"payment_id"`
+	Reference string `json:"reference"`
+	RelatedTransactions string `json:"related_transactions"`
+	Scheme string `json:"scheme"`
+	Status string `json:"status"`
+	TransactionId string `json:"transaction_id"`
+	Type string `json:"type"`
+	WalletId string `json:"wallet_id"`
+}
+
+type WalletTransactionAmount struct {
+	IsoCurrencyCode string `json:"iso_currency_code"`
+	Value float64 `json:"value"`
+}
+
+type WalletTransactionCounterparty struct {
+	Address string `json:"address"`
+	DateOfBirth string `json:"date_of_birth"`
+	Name string `json:"name"`
+	Numbers string `json:"numbers"`
+}
+
+type WalletTransactionCounterpartyBACS struct {
+	Account string `json:"account"`
+	SortCode string `json:"sort_code"`
+}
+
+type WalletTransactionCounterpartyInternational struct {
+	Iban string `json:"iban"`
+}
+
+type WalletTransactionCounterpartyNumbers struct {
+	Bacs string `json:"bacs"`
+	International string `json:"international"`
+}
+
+type WalletTransactionExecuteRequest struct {
+	Amount string `json:"amount"`
+	ClientId string `json:"client_id"`
+	Counterparty string `json:"counterparty"`
+	IdempotencyKey string `json:"idempotency_key"`
+	OriginatingFundSource string `json:"originating_fund_source"`
+	Reference string `json:"reference"`
+	Secret string `json:"secret"`
+	WalletId string `json:"wallet_id"`
+}
+
+type WalletTransactionExecuteResponse struct {
+	RequestId string `json:"request_id"`
+	Status string `json:"status"`
+	TransactionId string `json:"transaction_id"`
+}
+
+type WalletTransactionGetRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	TransactionId string `json:"transaction_id"`
+}
+
+type WalletTransactionGetResponse struct {
+	Amount string `json:"amount"`
+	Counterparty string `json:"counterparty"`
+	CreatedAt string `json:"created_at"`
+	Error string `json:"error"`
+	FailureReason string `json:"failure_reason"`
+	LastStatusUpdate string `json:"last_status_update"`
+	PayeeVerificationStatus string `json:"payee_verification_status"`
+	PaymentId string `json:"payment_id"`
+	Reference string `json:"reference"`
+	RelatedTransactions string `json:"related_transactions"`
+	RequestId string `json:"request_id"`
+	Scheme string `json:"scheme"`
+	Status string `json:"status"`
+	TransactionId string `json:"transaction_id"`
+	Type string `json:"type"`
+	WalletId string `json:"wallet_id"`
+}
+
+type WalletTransactionListRequest struct {
+	ClientId string `json:"client_id"`
+	Count int `json:"count"`
+	Cursor string `json:"cursor"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+	WalletId string `json:"wallet_id"`
+}
+
+type WalletTransactionListRequestOptions struct {
+	EndTime string `json:"end_time"`
+	StartTime string `json:"start_time"`
+}
+
+type WalletTransactionListResponse struct {
+	NextCursor string `json:"next_cursor"`
+	RequestId string `json:"request_id"`
+	Transactions string `json:"transactions"`
+}
+
+type WalletTransactionRelation struct {
+	Id string `json:"id"`
+	Type string `json:"type"`
+}
+
+type WalletTransactionStatusUpdateWebhook struct {
+	Environment string `json:"environment"`
+	Error string `json:"error"`
+	NewStatus string `json:"new_status"`
+	OldStatus string `json:"old_status"`
+	PaymentId string `json:"payment_id"`
+	Timestamp string `json:"timestamp"`
+	TransactionId string `json:"transaction_id"`
+	WalletId string `json:"wallet_id"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type WalletTransactionsListRequest struct {
+	ClientId string `json:"client_id"`
+	Count int `json:"count"`
+	Cursor string `json:"cursor"`
+	Options string `json:"options"`
+	Secret string `json:"secret"`
+	WalletId string `json:"wallet_id"`
+}
+
+type Warning struct {
+	Cause string `json:"cause"`
+	WarningCode string `json:"warning_code"`
+	WarningType string `json:"warning_type"`
+}
+
+type WatchlistScreeningAuditTrail struct {
+	DashboardUserId string `json:"dashboard_user_id"`
+	Source string `json:"source"`
+	Timestamp string `json:"timestamp"`
+}
+
+type WatchlistScreeningDocument struct {
+	Number string `json:"number"`
+	Type string `json:"type"`
+}
+
+type WatchlistScreeningEntityCreateRequest struct {
+	ClientId string `json:"client_id"`
+	ClientUserId string `json:"client_user_id"`
+	SearchTerms string `json:"search_terms"`
+	Secret string `json:"secret"`
+}
+
+type WatchlistScreeningEntityCreateResponse struct {
+	Assignee string `json:"assignee"`
+	AuditTrail string `json:"audit_trail"`
+	ClientUserId string `json:"client_user_id"`
+	Id string `json:"id"`
+	RequestId string `json:"request_id"`
+	SearchTerms string `json:"search_terms"`
+	Status string `json:"status"`
+}
+
+type WatchlistScreeningEntityGetRequest struct {
+	ClientId string `json:"client_id"`
+	EntityWatchlistScreeningId string `json:"entity_watchlist_screening_id"`
+	Secret string `json:"secret"`
+}
+
+type WatchlistScreeningEntityGetResponse struct {
+	Assignee string `json:"assignee"`
+	AuditTrail string `json:"audit_trail"`
+	ClientUserId string `json:"client_user_id"`
+	Id string `json:"id"`
+	RequestId string `json:"request_id"`
+	SearchTerms string `json:"search_terms"`
+	Status string `json:"status"`
+}
+
+type WatchlistScreeningEntityHistoryListRequest struct {
+	ClientId string `json:"client_id"`
+	Cursor string `json:"cursor"`
+	EntityWatchlistScreeningId string `json:"entity_watchlist_screening_id"`
+	Secret string `json:"secret"`
+}
+
+type WatchlistScreeningEntityHistoryListResponse struct {
+	EntityWatchlistScreenings string `json:"entity_watchlist_screenings"`
+	NextCursor string `json:"next_cursor"`
+	RequestId string `json:"request_id"`
+}
+
+type WatchlistScreeningEntityHitListRequest struct {
+	ClientId string `json:"client_id"`
+	Cursor string `json:"cursor"`
+	EntityWatchlistScreeningId string `json:"entity_watchlist_screening_id"`
+	Secret string `json:"secret"`
+}
+
+type WatchlistScreeningEntityHitListResponse struct {
+	EntityWatchlistScreeningHits string `json:"entity_watchlist_screening_hits"`
+	NextCursor string `json:"next_cursor"`
+	RequestId string `json:"request_id"`
+}
+
+type WatchlistScreeningEntityListRequest struct {
+	Assignee string `json:"assignee"`
+	ClientId string `json:"client_id"`
+	ClientUserId string `json:"client_user_id"`
+	Cursor string `json:"cursor"`
+	EntityWatchlistProgramId string `json:"entity_watchlist_program_id"`
+	Secret string `json:"secret"`
+	Status string `json:"status"`
+}
+
+type WatchlistScreeningEntityListResponse struct {
+	EntityWatchlistScreenings string `json:"entity_watchlist_screenings"`
+	NextCursor string `json:"next_cursor"`
+	RequestId string `json:"request_id"`
+}
+
+type WatchlistScreeningEntityProgramGetRequest struct {
+	ClientId string `json:"client_id"`
+	EntityWatchlistProgramId string `json:"entity_watchlist_program_id"`
+	Secret string `json:"secret"`
+}
+
+type WatchlistScreeningEntityProgramGetResponse struct {
+	AuditTrail string `json:"audit_trail"`
+	CreatedAt string `json:"created_at"`
+	Id string `json:"id"`
+	IsArchived bool `json:"is_archived"`
+	IsRescanningEnabled bool `json:"is_rescanning_enabled"`
+	ListsEnabled string `json:"lists_enabled"`
+	Name string `json:"name"`
+	NameSensitivity string `json:"name_sensitivity"`
+	RequestId string `json:"request_id"`
+}
+
+type WatchlistScreeningEntityProgramListRequest struct {
+	ClientId string `json:"client_id"`
+	Cursor string `json:"cursor"`
+	Secret string `json:"secret"`
+}
+
+type WatchlistScreeningEntityProgramListResponse struct {
+	EntityWatchlistPrograms string `json:"entity_watchlist_programs"`
+	NextCursor string `json:"next_cursor"`
+	RequestId string `json:"request_id"`
+}
+
+type WatchlistScreeningEntityReviewCreateRequest struct {
+	ClientId string `json:"client_id"`
+	Comment string `json:"comment"`
+	ConfirmedHits string `json:"confirmed_hits"`
+	DismissedHits string `json:"dismissed_hits"`
+	EntityWatchlistScreeningId string `json:"entity_watchlist_screening_id"`
+	Secret string `json:"secret"`
+}
+
+type WatchlistScreeningEntityReviewCreateResponse struct {
+	AuditTrail string `json:"audit_trail"`
+	Comment string `json:"comment"`
+	ConfirmedHits string `json:"confirmed_hits"`
+	DismissedHits string `json:"dismissed_hits"`
+	Id string `json:"id"`
+	RequestId string `json:"request_id"`
+}
+
+type WatchlistScreeningEntityReviewListRequest struct {
+	ClientId string `json:"client_id"`
+	Cursor string `json:"cursor"`
+	EntityWatchlistScreeningId string `json:"entity_watchlist_screening_id"`
+	Secret string `json:"secret"`
+}
+
+type WatchlistScreeningEntityReviewListResponse struct {
+	EntityWatchlistScreeningReviews string `json:"entity_watchlist_screening_reviews"`
+	NextCursor string `json:"next_cursor"`
+	RequestId string `json:"request_id"`
+}
+
+type WatchlistScreeningEntityUpdateRequest struct {
+	Assignee string `json:"assignee"`
+	ClientId string `json:"client_id"`
+	ClientUserId string `json:"client_user_id"`
+	EntityWatchlistScreeningId string `json:"entity_watchlist_screening_id"`
+	ResetFields string `json:"reset_fields"`
+	SearchTerms string `json:"search_terms"`
+	Secret string `json:"secret"`
+	Status string `json:"status"`
+}
+
+type WatchlistScreeningEntityUpdateResponse struct {
+	Assignee string `json:"assignee"`
+	AuditTrail string `json:"audit_trail"`
+	ClientUserId string `json:"client_user_id"`
+	Id string `json:"id"`
+	RequestId string `json:"request_id"`
+	SearchTerms string `json:"search_terms"`
+	Status string `json:"status"`
+}
+
+type WatchlistScreeningHit struct {
+	Analysis string `json:"analysis"`
+	Data string `json:"data"`
+	FirstActive string `json:"first_active"`
+	HistoricalSince string `json:"historical_since"`
+	Id string `json:"id"`
+	InactiveSince string `json:"inactive_since"`
+	ListCode string `json:"list_code"`
+	PlaidUid string `json:"plaid_uid"`
+	ReviewStatus string `json:"review_status"`
+	SourceUid string `json:"source_uid"`
+}
+
+type WatchlistScreeningHitLocations struct {
+	Country string `json:"country"`
+	Full string `json:"full"`
+}
+
+type WatchlistScreeningIndividual struct {
+	Assignee string `json:"assignee"`
+	AuditTrail string `json:"audit_trail"`
+	ClientUserId string `json:"client_user_id"`
+	Id string `json:"id"`
+	SearchTerms string `json:"search_terms"`
+	Status string `json:"status"`
+}
+
+type WatchlistScreeningIndividualCreateRequest struct {
+	ClientId string `json:"client_id"`
+	ClientUserId string `json:"client_user_id"`
+	SearchTerms string `json:"search_terms"`
+	Secret string `json:"secret"`
+}
+
+type WatchlistScreeningIndividualCreateResponse struct {
+	Assignee string `json:"assignee"`
+	AuditTrail string `json:"audit_trail"`
+	ClientUserId string `json:"client_user_id"`
+	Id string `json:"id"`
+	RequestId string `json:"request_id"`
+	SearchTerms string `json:"search_terms"`
+	Status string `json:"status"`
+}
+
+type WatchlistScreeningIndividualGetRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	WatchlistScreeningId string `json:"watchlist_screening_id"`
+}
+
+type WatchlistScreeningIndividualGetResponse struct {
+	Assignee string `json:"assignee"`
+	AuditTrail string `json:"audit_trail"`
+	ClientUserId string `json:"client_user_id"`
+	Id string `json:"id"`
+	RequestId string `json:"request_id"`
+	SearchTerms string `json:"search_terms"`
+	Status string `json:"status"`
+}
+
+type WatchlistScreeningIndividualHistoryListRequest struct {
+	ClientId string `json:"client_id"`
+	Cursor string `json:"cursor"`
+	Secret string `json:"secret"`
+	WatchlistScreeningId string `json:"watchlist_screening_id"`
+}
+
+type WatchlistScreeningIndividualHistoryListResponse struct {
+	NextCursor string `json:"next_cursor"`
+	RequestId string `json:"request_id"`
+	WatchlistScreenings string `json:"watchlist_screenings"`
+}
+
+type WatchlistScreeningIndividualHitListRequest struct {
+	ClientId string `json:"client_id"`
+	Cursor string `json:"cursor"`
+	Secret string `json:"secret"`
+	WatchlistScreeningId string `json:"watchlist_screening_id"`
+}
+
+type WatchlistScreeningIndividualHitListResponse struct {
+	NextCursor string `json:"next_cursor"`
+	RequestId string `json:"request_id"`
+	WatchlistScreeningHits string `json:"watchlist_screening_hits"`
+}
+
+type WatchlistScreeningIndividualListRequest struct {
+	Assignee string `json:"assignee"`
+	ClientId string `json:"client_id"`
+	ClientUserId string `json:"client_user_id"`
+	Cursor string `json:"cursor"`
+	Secret string `json:"secret"`
+	Status string `json:"status"`
+	WatchlistProgramId string `json:"watchlist_program_id"`
+}
+
+type WatchlistScreeningIndividualListResponse struct {
+	NextCursor string `json:"next_cursor"`
+	RequestId string `json:"request_id"`
+	WatchlistScreenings string `json:"watchlist_screenings"`
+}
+
+type WatchlistScreeningIndividualProgramGetRequest struct {
+	ClientId string `json:"client_id"`
+	Secret string `json:"secret"`
+	WatchlistProgramId string `json:"watchlist_program_id"`
+}
+
+type WatchlistScreeningIndividualProgramGetResponse struct {
+	AuditTrail string `json:"audit_trail"`
+	CreatedAt string `json:"created_at"`
+	Id string `json:"id"`
+	IsArchived bool `json:"is_archived"`
+	IsRescanningEnabled bool `json:"is_rescanning_enabled"`
+	ListsEnabled string `json:"lists_enabled"`
+	Name string `json:"name"`
+	NameSensitivity string `json:"name_sensitivity"`
+	RequestId string `json:"request_id"`
+}
+
+type WatchlistScreeningIndividualProgramListRequest struct {
+	ClientId string `json:"client_id"`
+	Cursor string `json:"cursor"`
+	Secret string `json:"secret"`
+}
+
+type WatchlistScreeningIndividualProgramListResponse struct {
+	NextCursor string `json:"next_cursor"`
+	RequestId string `json:"request_id"`
+	WatchlistPrograms string `json:"watchlist_programs"`
+}
+
+type WatchlistScreeningIndividualReviewCreateRequest struct {
+	ClientId string `json:"client_id"`
+	Comment string `json:"comment"`
+	ConfirmedHits string `json:"confirmed_hits"`
+	DismissedHits string `json:"dismissed_hits"`
+	Secret string `json:"secret"`
+	WatchlistScreeningId string `json:"watchlist_screening_id"`
+}
+
+type WatchlistScreeningIndividualReviewCreateResponse struct {
+	AuditTrail string `json:"audit_trail"`
+	Comment string `json:"comment"`
+	ConfirmedHits string `json:"confirmed_hits"`
+	DismissedHits string `json:"dismissed_hits"`
+	Id string `json:"id"`
+	RequestId string `json:"request_id"`
+}
+
+type WatchlistScreeningIndividualReviewListRequest struct {
+	ClientId string `json:"client_id"`
+	Cursor string `json:"cursor"`
+	Secret string `json:"secret"`
+	WatchlistScreeningId string `json:"watchlist_screening_id"`
+}
+
+type WatchlistScreeningIndividualReviewListResponse struct {
+	NextCursor string `json:"next_cursor"`
+	RequestId string `json:"request_id"`
+	WatchlistScreeningReviews string `json:"watchlist_screening_reviews"`
+}
+
+type WatchlistScreeningIndividualUpdateRequest struct {
+	Assignee string `json:"assignee"`
+	ClientId string `json:"client_id"`
+	ClientUserId string `json:"client_user_id"`
+	ResetFields string `json:"reset_fields"`
+	SearchTerms string `json:"search_terms"`
+	Secret string `json:"secret"`
+	Status string `json:"status"`
+	WatchlistScreeningId string `json:"watchlist_screening_id"`
+}
+
+type WatchlistScreeningIndividualUpdateResponse struct {
+	Assignee string `json:"assignee"`
+	AuditTrail string `json:"audit_trail"`
+	ClientUserId string `json:"client_user_id"`
+	Id string `json:"id"`
+	RequestId string `json:"request_id"`
+	SearchTerms string `json:"search_terms"`
+	Status string `json:"status"`
+}
+
+type WatchlistScreeningRequestSearchTerms struct {
+	Country string `json:"country"`
+	DateOfBirth string `json:"date_of_birth"`
+	DocumentNumber string `json:"document_number"`
+	LegalName string `json:"legal_name"`
+	WatchlistProgramId string `json:"watchlist_program_id"`
+}
+
+type WatchlistScreeningReview struct {
+	AuditTrail string `json:"audit_trail"`
+	Comment string `json:"comment"`
+	ConfirmedHits string `json:"confirmed_hits"`
+	DismissedHits string `json:"dismissed_hits"`
+	Id string `json:"id"`
+}
+
+type WatchlistScreeningSearchTerms struct {
+	Country string `json:"country"`
+	DateOfBirth string `json:"date_of_birth"`
+	DocumentNumber string `json:"document_number"`
+	LegalName string `json:"legal_name"`
+	Version int `json:"version"`
+	WatchlistProgramId string `json:"watchlist_program_id"`
+}
+
+type WebhookUpdateAcknowledgedWebhook struct {
+	Environment string `json:"environment"`
+	Error string `json:"error"`
+	ItemId string `json:"item_id"`
+	NewWebhookUrl string `json:"new_webhook_url"`
+	WebhookCode string `json:"webhook_code"`
+	WebhookType string `json:"webhook_type"`
+}
+
+type WebhookVerificationKeyGetRequest struct {
+	ClientId string `json:"client_id"`
+	KeyId string `json:"key_id"`
+	Secret string `json:"secret"`
+}
+
+type WebhookVerificationKeyGetResponse struct {
+	Key string `json:"key"`
+	RequestId string `json:"request_id"`
+}
+
+type YTDGrossIncomeSummaryFieldNumber struct {
+	Value float64 `json:"value"`
+	VerificationStatus string `json:"verification_status"`
+}
+
+type YTDNetIncomeSummaryFieldNumber struct {
+	Value float64 `json:"value"`
+	VerificationStatus string `json:"verification_status"`
+}
+
+type YieldRate struct {
+	Percentage float64 `json:"percentage"`
+	Type string `json:"type"`
+}
+

← 02d022fe test: add coverage for research, dogfood, comparative, textf  ·  back to Cli Printing Press  ·  feat(catalog): generate Pipedrive CLI from official OpenAPI 451b7cb7 →