From f863e437c4cf66385dd19878da75fc6da4d9d92d Mon Sep 17 00:00:00 2001 From: Stuart Turner Date: Wed, 17 Apr 2024 15:44:07 -0500 Subject: [PATCH] Update to Plaid v1.508.0 --- plaid-openapi | 2 +- .../Entity/AccountIdentityDocumentUpload.cs | 83 +++++++++++++++++++ ...ityDocumentUploadVerificationStatusEnum.cs | 74 +++++++++++++++++ src/Plaid/Entity/AccountType.cs | 8 +- src/Plaid/Entity/BaseReportTransaction.cs | 18 ++++ .../BaseReportTransactionCategoryIdObject.cs | 8 ++ src/Plaid/Entity/BaseReportTransactionType.cs | 38 +++++++++ ...conAccountRiskEvaluateAccountAttributes.cs | 12 +-- src/Plaid/Entity/BeaconUserAddress.cs | 6 +- src/Plaid/Entity/BeaconUserIDNumber.cs | 2 +- src/Plaid/Entity/BeaconUserRequestAddress.cs | 6 +- src/Plaid/Entity/CraBankIncomeSummary.cs | 18 ++++ src/Plaid/Entity/IdentityDocumentUpload.cs | 26 ++++++ .../Entity/IdentityDocumentUploadMetadata.cs | 38 +++++++++ .../IdentityDocumentUploadRiskInsights.cs | 20 +++++ .../IdentityDocumentUploadRiskSignal.cs | 32 +++++++ .../IdentityDocumentUploadRiskSummary.cs | 14 ++++ ...entityDocumentsUploadsGetRequestOptions.cs | 15 ++++ .../IdentityVerificationAutofillAddress.cs | 6 +- .../Entity/IdentityVerificationUserAddress.cs | 6 +- src/Plaid/Entity/Item.cs | 2 +- .../Entity/LinkProfileEligibilityCheckUser.cs | 14 ++++ src/Plaid/Entity/LinkSessionExit.cs | 2 +- .../LinkSessionSuccessMetadataAccount.cs | 8 +- src/Plaid/Entity/LinkTokenCreateHostedLink.cs | 4 +- .../Entity/LinkTokenCreateRequestAuth.cs | 14 ++-- ...eateRequestAuthRerouteToCredentialsEnum.cs | 2 +- .../LinkTokenCreateRequestStatements.cs | 10 +-- ...LinkTokenCreateRequestUserAddressObject.cs | 6 +- ...inkTokenCreateRequestUserIdNumberObject.cs | 2 +- .../Entity/LinkTokenGetSessionsResponse.cs | 2 +- src/Plaid/Entity/Products.cs | 6 ++ src/Plaid/Entity/RecurringTransfer.cs | 4 +- .../SandboxPublicTokenCreateRequestOptions.cs | 6 ++ ...blicTokenCreateRequestOptionsStatements.cs | 20 +++++ .../Entity/SignalEvaluateCoreAttributes.cs | 6 ++ src/Plaid/Entity/StudentLoan.cs | 4 +- src/Plaid/Entity/TransactionsUpdateStatus.cs | 10 +-- .../Entity/TransferAuthorizationDecision.cs | 2 +- src/Plaid/Entity/TransferEventType.cs | 6 ++ .../TransferIntentAuthorizationDecision.cs | 2 +- src/Plaid/Entity/TransferRecurringSchedule.cs | 3 +- src/Plaid/Entity/TransferRecurrinngNetwork.cs | 32 +++++++ src/Plaid/Entity/TransferStatus.cs | 6 ++ src/Plaid/Entity/UserAddress.cs | 6 +- src/Plaid/Entity/UserIDNumber.cs | 2 +- .../IdentityDocumentsUploadsGetRequest.cs | 14 ++++ .../IdentityDocumentsUploadsGetResponse.cs | 20 +++++ src/Plaid/Identity/PlaidClient.cs | 8 ++ .../LinkProfileEligibilityCheckRequest.cs | 20 +++++ .../LinkProfileEligibilityCheckResponse.cs | 14 ++++ src/Plaid/Link/LinkTokenCreateRequest.cs | 6 +- src/Plaid/Link/LinkTokenCreateResponse.cs | 2 +- src/Plaid/Link/LinkTokenGetResponse.cs | 2 +- src/Plaid/Link/PlaidClient.cs | 10 +++ .../Partner/PartnerCustomerCreateRequest.cs | 2 +- .../ProcessorTransactionsSyncResponse.cs | 12 +++ src/Plaid/Statements/PlaidClient.cs | 2 +- src/Plaid/Transactions/PlaidClient.cs | 1 - .../Transactions/TransactionsSyncResponse.cs | 6 +- src/Plaid/Transfer/PlaidClient.cs | 2 +- .../TransferRecurringCreateRequest.cs | 4 +- src/Plaid/Webhook/AssetsErrorWebhook.cs | 2 +- .../Webhook/AutomaticallyVerifiedWebhook.cs | 2 +- src/Plaid/Webhook/BaseReportsErrorWebhook.cs | 2 +- src/Plaid/Webhook/DefaultUpdateWebhook.cs | 2 +- src/Plaid/Webhook/HistoricalUpdateWebhook.cs | 2 +- .../Webhook/HoldingsDefaultUpdateWebhook.cs | 2 +- .../Webhook/IdentityDefaultUpdateWebhook.cs | 2 +- .../InvestmentsDefaultUpdateWebhook.cs | 2 +- .../InvestmentsHistoricalUpdateWebhook.cs | 2 +- src/Plaid/Webhook/ItemErrorWebhook.cs | 2 +- src/Plaid/Webhook/ItemProductReadyWebhook.cs | 2 +- .../LiabilitiesDefaultUpdateWebhook.cs | 2 +- .../Webhook/LinkDeliveryCallbackWebhook.cs | 2 +- .../Webhook/NewAccountsAvailableWebhook.cs | 2 +- .../Webhook/PaymentStatusUpdateWebhook.cs | 2 +- .../Webhook/ProcessorDefaultUpdateWebhook.cs | 2 +- .../ProcessorHistoricalUpdateWebhook.cs | 2 +- .../ProcessorTransactionsRemovedWebhook.cs | 2 +- .../Webhook/TransactionsRemovedWebhook.cs | 2 +- .../Webhook/UserAccountRevokedWebhook.cs | 2 +- .../Webhook/UserPermissionRevokedWebhook.cs | 2 +- .../Webhook/VerificationExpiredWebhook.cs | 2 +- .../WebhookUpdateAcknowledgedWebhook.cs | 2 +- 85 files changed, 681 insertions(+), 103 deletions(-) create mode 100644 src/Plaid/Entity/AccountIdentityDocumentUpload.cs create mode 100644 src/Plaid/Entity/AccountIdentityDocumentUploadVerificationStatusEnum.cs create mode 100644 src/Plaid/Entity/BaseReportTransactionCategoryIdObject.cs create mode 100644 src/Plaid/Entity/BaseReportTransactionType.cs create mode 100644 src/Plaid/Entity/IdentityDocumentUpload.cs create mode 100644 src/Plaid/Entity/IdentityDocumentUploadMetadata.cs create mode 100644 src/Plaid/Entity/IdentityDocumentUploadRiskInsights.cs create mode 100644 src/Plaid/Entity/IdentityDocumentUploadRiskSignal.cs create mode 100644 src/Plaid/Entity/IdentityDocumentUploadRiskSummary.cs create mode 100644 src/Plaid/Entity/IdentityDocumentsUploadsGetRequestOptions.cs create mode 100644 src/Plaid/Entity/LinkProfileEligibilityCheckUser.cs create mode 100644 src/Plaid/Entity/SandboxPublicTokenCreateRequestOptionsStatements.cs create mode 100644 src/Plaid/Entity/TransferRecurrinngNetwork.cs create mode 100644 src/Plaid/Identity/IdentityDocumentsUploadsGetRequest.cs create mode 100644 src/Plaid/Identity/IdentityDocumentsUploadsGetResponse.cs create mode 100644 src/Plaid/Link/LinkProfileEligibilityCheckRequest.cs create mode 100644 src/Plaid/Link/LinkProfileEligibilityCheckResponse.cs diff --git a/plaid-openapi b/plaid-openapi index 811aa982..15bb2a98 160000 --- a/plaid-openapi +++ b/plaid-openapi @@ -1 +1 @@ -Subproject commit 811aa982f53aaa3c60f1e1cfc748ab18bdb14ba2 +Subproject commit 15bb2a9891bf5d20c5069e4920fcbaa564af7eba diff --git a/src/Plaid/Entity/AccountIdentityDocumentUpload.cs b/src/Plaid/Entity/AccountIdentityDocumentUpload.cs new file mode 100644 index 00000000..05ecb2c4 --- /dev/null +++ b/src/Plaid/Entity/AccountIdentityDocumentUpload.cs @@ -0,0 +1,83 @@ +namespace Going.Plaid.Entity; + +/// +/// Identity information about an account +/// +public record AccountIdentityDocumentUpload +{ + /// + /// Plaid’s unique identifier for the account. This value will not change unless Plaid can't reconcile the account with the data returned by the financial institution. This may occur, for example, when the name of the account changes. If this happens a new account_id will be assigned to the account. + /// The account_id can also change if the access_token is deleted and the same credentials that were used to generate that access_token are used to generate a new access_token on a later date. In that case, the new account_id will be different from the old account_id. + /// If an account with a specific account_id disappears instead of changing, the account is likely closed. Closed accounts are not returned by the Plaid API. + /// Like all Plaid identifiers, the account_id is case sensitive. + /// + [JsonPropertyName("account_id")] + public string? AccountId { get; init; } = default!; + + /// + /// A set of fields describing the balance for an account. Balance information may be cached unless the balance object was returned by /accounts/balance/get. + /// + [JsonPropertyName("balances")] + public Entity.AccountBalance? Balances { get; init; } = default!; + + /// + /// The last 2-4 alphanumeric characters of an account's official account number. Note that the mask may be non-unique between an Item's accounts, and it may also not match the mask that the bank displays to the user. + /// + [JsonPropertyName("mask")] + public string? Mask { get; init; } = default!; + + /// + /// The name of the account, either assigned by the user or by the financial institution itself + /// + [JsonPropertyName("name")] + public string? Name { get; init; } = default!; + + /// + /// The official name of the account as given by the financial institution + /// + [JsonPropertyName("official_name")] + public string? OfficialName { get; init; } = default!; + + /// + /// See the Account type schema for a full listing of account types and corresponding subtypes. + /// + [JsonPropertyName("type")] + public Entity.AccountType? Type { get; init; } = default!; + + /// + /// See the [Account type schema](https://plaid.com/docs/api/accounts/#account-type-schema) for a full listing of account types and corresponding subtypes. + /// + [JsonPropertyName("subtype")] + public Entity.AccountSubtype? Subtype { get; init; } = default!; + + /// + /// The current verification status of an Auth Item initiated through Automated or Manual micro-deposits. Returned for Auth Items only. + /// + [JsonPropertyName("verification_status")] + public Entity.AccountIdentityDocumentUploadVerificationStatusEnum? VerificationStatus { get; init; } = default!; + + /// + /// Insights from performing database verification for the account. + /// + [JsonPropertyName("verification_insights")] + public Entity.VerificationInsights? VerificationInsights { get; init; } = default!; + + /// + /// A unique and persistent identifier for accounts that can be used to trace multiple instances of the same account across different Items for depository accounts. This is currently only supported for Chase Items. Because Chase accounts have a different account number each time they are linked, this field may be used instead of the account number to uniquely identify a Chase account across multiple Items for payments use cases, helping to reduce duplicate Items or attempted fraud. In Sandbox, this field may be populated for any account; in Production and Development, it will only be populated for Chase accounts. + /// + [JsonPropertyName("persistent_account_id")] + public string? PersistentAccountId { get; init; } = default!; + + /// + /// Data returned by the financial institution about the account owner or owners. Only returned by Identity or Assets endpoints. For business accounts, the name reported may be either the name of the individual or the name of the business, depending on the institution; detecting whether the linked account is a business account is not currently supported. Multiple owners on a single account will be represented in the same owner object, not in multiple owner objects within the array. In API versions 2018-05-22 and earlier, the owners object is not returned, and instead identity information is returned in the top level identity object. For more details, see Plaid API versioning + /// + [JsonPropertyName("owners")] + public IReadOnlyList? Owners { get; init; } = default!; + + /// + /// An array of document with which the Identity data is derived from. + /// + [JsonPropertyName("documents")] + public IReadOnlyList? Documents { get; init; } = default!; + +} diff --git a/src/Plaid/Entity/AccountIdentityDocumentUploadVerificationStatusEnum.cs b/src/Plaid/Entity/AccountIdentityDocumentUploadVerificationStatusEnum.cs new file mode 100644 index 00000000..928f239b --- /dev/null +++ b/src/Plaid/Entity/AccountIdentityDocumentUploadVerificationStatusEnum.cs @@ -0,0 +1,74 @@ +namespace Going.Plaid.Entity; + +/// +/// The current verification status of an Auth Item initiated through Automated or Manual micro-deposits. Returned for Auth Items only. +/// +public enum AccountIdentityDocumentUploadVerificationStatusEnum +{ + /// + /// The Item has successfully been automatically verified + /// + [EnumMember(Value = "automatically_verified")] + AutomaticallyVerified, + + /// + /// The Item is pending automatic verification + /// + [EnumMember(Value = "pending_automatic_verification")] + PendingAutomaticVerification, + + /// + /// The Item is pending manual micro-deposit verification. Items remain in this state until the user successfully verifies the micro-deposit. + /// + [EnumMember(Value = "pending_manual_verification")] + PendingManualVerification, + + /// + /// The Item has successfully been manually verified + /// + [EnumMember(Value = "manually_verified")] + ManuallyVerified, + + /// + /// Plaid was unable to automatically verify the deposit within 7 calendar days and will no longer attempt to validate the Item. Users may retry by submitting their information again through Link. + /// + [EnumMember(Value = "verification_expired")] + VerificationExpired, + + /// + /// The Item failed manual micro-deposit verification because the user exhausted all 3 verification attempts. Users may retry by submitting their information again through Link. + /// + [EnumMember(Value = "verification_failed")] + VerificationFailed, + + /// + /// The Item has successfully been verified using Plaid's data sources. Note: Database Match is currently a beta feature, please contact your account manager for more information. + /// + [EnumMember(Value = "database_matched")] + DatabaseMatched, + + /// + /// The Item's ACH numbers have been verified using Plaid's data sources and have strong signal for being valid. Note: Database Insights is currently a beta feature, please contact your account manager for more information. + /// + [EnumMember(Value = "database_insights_pass")] + DatabaseInsightsPass, + + /// + /// The Item's ACH numbers have been verified using Plaid's data sources and have some signal for being valid. Note: Database Insights is currently a beta feature, please contact your account manager for more information. + /// + [EnumMember(Value = "database_insights_pass_with_caution")] + DatabaseInsightsPassWithCaution, + + /// + /// The Item's ACH numbers have been verified using Plaid's data sources and have signal for being invalid and/or have no signal for being valid. Note: Database Insights is currently a beta feature, please contact your account manager for more information. + /// + [EnumMember(Value = "database_insights_fail")] + DatabaseInsightsFail, + + /// + /// Catch-all for unknown values returned by Plaid. If you encounter this, please check if there is a later version of the Going.Plaid library. + /// + [EnumMember(Value = "undefined")] + Undefined, + +} diff --git a/src/Plaid/Entity/AccountType.cs b/src/Plaid/Entity/AccountType.cs index 199d9367..e02d937f 100644 --- a/src/Plaid/Entity/AccountType.cs +++ b/src/Plaid/Entity/AccountType.cs @@ -6,25 +6,25 @@ namespace Going.Plaid.Entity; public enum AccountType { /// - /// An account type holding cash, in which funds are deposited. Supported products for depository accounts are: Auth (checking and savings types only), Balance, Transactions, Identity, Payment Initiation, Assets, and Investments (cash management type only). + /// An account type holding cash, in which funds are deposited. Supported products for depository accounts are: Auth (checking and savings types only), Transfer, Balance, Signal, Income, Transactions, Identity, Payment Initiation, Assets, and Investments (cash management type only). /// [EnumMember(Value = "depository")] Depository, /// - /// A credit card type account. Supported products for credit accounts are: Balance, Transactions, Identity, and Liabilities. + /// A credit card type account. Supported products for credit accounts are: Balance, Transactions, Identity, Assets, and Liabilities. /// [EnumMember(Value = "credit")] Credit, /// - /// A loan type account. Supported products for loan accounts are: Balance, Liabilities, and Transactions. + /// A loan type account. Supported products for loan accounts are: Balance, Liabilities, Assets, and Transactions. /// [EnumMember(Value = "loan")] Loan, /// - /// An investment account. Supported products for investment accounts are: Balance and Investments. In API versions 2018-05-22 and earlier, this type is called brokerage. + /// An investment account. Supported products for investment accounts are: Balance, Assets, and Investments. In API versions 2018-05-22 and earlier, this type is called brokerage. /// [EnumMember(Value = "investment")] Investment, diff --git a/src/Plaid/Entity/BaseReportTransaction.cs b/src/Plaid/Entity/BaseReportTransaction.cs index d3aee76c..45128fcc 100644 --- a/src/Plaid/Entity/BaseReportTransaction.cs +++ b/src/Plaid/Entity/BaseReportTransaction.cs @@ -79,4 +79,22 @@ public record BaseReportTransaction [JsonPropertyName("account_owner")] public string? AccountOwner { get; init; } = default!; + /// + /// + /// + [JsonPropertyName("transaction_type")] + public Entity.BaseReportTransactionType? TransactionType { get; init; } = default!; + + /// + /// A hierarchical array of the categories to which this transaction belongs. For a full list of categories, see /categories/get. + /// + [JsonPropertyName("category")] + public IReadOnlyList? Category { get; init; } = default!; + + /// + /// The ID of the category to which this transaction belongs. For a full list of categories, see /categories/get. + /// + [JsonPropertyName("category_id")] + public Entity.BaseReportTransactionCategoryIdObject? CategoryId { get; init; } = default!; + } diff --git a/src/Plaid/Entity/BaseReportTransactionCategoryIdObject.cs b/src/Plaid/Entity/BaseReportTransactionCategoryIdObject.cs new file mode 100644 index 00000000..1f9bac41 --- /dev/null +++ b/src/Plaid/Entity/BaseReportTransactionCategoryIdObject.cs @@ -0,0 +1,8 @@ +namespace Going.Plaid.Entity; + +/// +/// The ID of the category to which this transaction belongs. For a full list of categories, see /categories/get. +/// +public record BaseReportTransactionCategoryIdObject +{ +} diff --git a/src/Plaid/Entity/BaseReportTransactionType.cs b/src/Plaid/Entity/BaseReportTransactionType.cs new file mode 100644 index 00000000..7de1c0a8 --- /dev/null +++ b/src/Plaid/Entity/BaseReportTransactionType.cs @@ -0,0 +1,38 @@ +namespace Going.Plaid.Entity; + +/// +/// +/// +public enum BaseReportTransactionType +{ + /// + /// transactions that took place online. + /// + [EnumMember(Value = "digital")] + Digital, + + /// + /// transactions that were made at a physical location. + /// + [EnumMember(Value = "place")] + Place, + + /// + /// transactions that relate to banks, e.g. fees or deposits. + /// + [EnumMember(Value = "special")] + Special, + + /// + /// transactions that do not fit into the other types. + /// + [EnumMember(Value = "unresolved")] + Unresolved, + + /// + /// Catch-all for unknown values returned by Plaid. If you encounter this, please check if there is a later version of the Going.Plaid library. + /// + [EnumMember(Value = "undefined")] + Undefined, + +} diff --git a/src/Plaid/Entity/BeaconAccountRiskEvaluateAccountAttributes.cs b/src/Plaid/Entity/BeaconAccountRiskEvaluateAccountAttributes.cs index 325138c5..e4c98fb7 100644 --- a/src/Plaid/Entity/BeaconAccountRiskEvaluateAccountAttributes.cs +++ b/src/Plaid/Entity/BeaconAccountRiskEvaluateAccountAttributes.cs @@ -16,12 +16,6 @@ public record BeaconAccountRiskEvaluateAccountAttributes [JsonPropertyName("days_since_first_plaid_connection")] public int? DaysSinceFirstPlaidConnection { get; init; } = default!; - /// - /// The age of the account as reported by the FI, when available. - /// - [JsonPropertyName("days_since_account_creation")] - public int? DaysSinceAccountCreation { get; init; } = default!; - /// /// Indicates if the account has been closed by the financial institution or the consumer, or is at risk of being closed /// @@ -172,4 +166,10 @@ public record BeaconAccountRiskEvaluateAccountAttributes [JsonPropertyName("phone_change_count_90d")] public int? PhoneChangeCount90d { get; init; } = default!; + /// + /// The number of days since the bank account was opened, as reported by the financial institution + /// + [JsonPropertyName("days_since_account_opening")] + public int? DaysSinceAccountOpening { get; init; } = default!; + } diff --git a/src/Plaid/Entity/BeaconUserAddress.cs b/src/Plaid/Entity/BeaconUserAddress.cs index 08bae79c..66a87c3a 100644 --- a/src/Plaid/Entity/BeaconUserAddress.cs +++ b/src/Plaid/Entity/BeaconUserAddress.cs @@ -8,19 +8,19 @@ namespace Going.Plaid.Entity; public record BeaconUserAddress { /// - /// The primary street portion of an address. If an address is provided, this field will always be filled. + /// The primary street portion of an address. If an address is provided, this field will always be filled. A string with at least one non-whitespace alphabetical character, with a max length of 80 characters. /// [JsonPropertyName("street")] public string Street { get; init; } = default!; /// - /// Extra street information, like an apartment or suite number. + /// Extra street information, like an apartment or suite number. If provided, a string with at least one non-whitespace character, with a max length of 20 characters. /// [JsonPropertyName("street2")] public string? Street2 { get; init; } = default!; /// - /// City from the end user's address + /// City from the end user's address. A string with at least one non-whitespace alphabetical character, with a max length of 100 characters." /// [JsonPropertyName("city")] public string City { get; init; } = default!; diff --git a/src/Plaid/Entity/BeaconUserIDNumber.cs b/src/Plaid/Entity/BeaconUserIDNumber.cs index 167161f8..e43fd478 100644 --- a/src/Plaid/Entity/BeaconUserIDNumber.cs +++ b/src/Plaid/Entity/BeaconUserIDNumber.cs @@ -6,7 +6,7 @@ namespace Going.Plaid.Entity; public class BeaconUserIDNumber { /// - /// Value of identity document value typed in by user. Alpha-numeric, with all formatting characters stripped. + /// Value of identity document value typed in by user. Alpha-numeric, with all formatting characters stripped. For specific format requirements by ID type, see Hybrid Input Validation. /// [JsonPropertyName("value")] public string Value { get; set; } = default!; diff --git a/src/Plaid/Entity/BeaconUserRequestAddress.cs b/src/Plaid/Entity/BeaconUserRequestAddress.cs index e542db76..94aed70e 100644 --- a/src/Plaid/Entity/BeaconUserRequestAddress.cs +++ b/src/Plaid/Entity/BeaconUserRequestAddress.cs @@ -6,19 +6,19 @@ namespace Going.Plaid.Entity; public class BeaconUserRequestAddress { /// - /// The primary street portion of an address. If an address is provided, this field will always be filled. + /// The primary street portion of an address. If an address is provided, this field will always be filled. A string with at least one non-whitespace alphabetical character, with a max length of 80 characters. /// [JsonPropertyName("street")] public string Street { get; set; } = default!; /// - /// Extra street information, like an apartment or suite number. + /// Extra street information, like an apartment or suite number. If provided, a string with at least one non-whitespace character, with a max length of 20 characters. /// [JsonPropertyName("street2")] public string? Street2 { get; set; } = default!; /// - /// City from the end user's address + /// City from the end user's address. A string with at least one non-whitespace alphabetical character, with a max length of 100 characters." /// [JsonPropertyName("city")] public string City { get; set; } = default!; diff --git a/src/Plaid/Entity/CraBankIncomeSummary.cs b/src/Plaid/Entity/CraBankIncomeSummary.cs index 85f775a3..a49b6275 100644 --- a/src/Plaid/Entity/CraBankIncomeSummary.cs +++ b/src/Plaid/Entity/CraBankIncomeSummary.cs @@ -62,6 +62,24 @@ public record CraBankIncomeSummary [JsonPropertyName("forecasted_average_monthly_income")] public IReadOnlyList? ForecastedAverageMonthlyIncome { get; init; } = default!; + /// + /// An estimate of the annual gross income based on the historical net amount and income category for the income source(s). + /// + [JsonPropertyName("historical_annual_gross_income")] + public IReadOnlyList? HistoricalAnnualGrossIncome { get; init; } = default!; + + /// + /// The annual income amount estimated based on the historical data for the income source(s). + /// + [JsonPropertyName("historical_annual_income")] + public IReadOnlyList? HistoricalAnnualIncome { get; init; } = default!; + + /// + /// The predicted average annual income amount for the income source(s). + /// + [JsonPropertyName("forecasted_annual_income")] + public IReadOnlyList? ForecastedAnnualIncome { get; init; } = default!; + /// /// /// diff --git a/src/Plaid/Entity/IdentityDocumentUpload.cs b/src/Plaid/Entity/IdentityDocumentUpload.cs new file mode 100644 index 00000000..1ad5f119 --- /dev/null +++ b/src/Plaid/Entity/IdentityDocumentUpload.cs @@ -0,0 +1,26 @@ +namespace Going.Plaid.Entity; + +/// +/// Document object with metadata of the uploaded document +/// +public record IdentityDocumentUpload +{ + /// + /// + /// + [JsonPropertyName("document_id")] + public string? DocumentId { get; init; } = default!; + + /// + /// In closed beta. Object representing metadata pertaining to the document. + /// + [JsonPropertyName("metadata")] + public Entity.IdentityDocumentUploadMetadata? Metadata { get; init; } = default!; + + /// + /// In closed beta. Object representing fraud risk data of the document + /// + [JsonPropertyName("risk_insights")] + public Entity.IdentityDocumentUploadRiskInsights? RiskInsights { get; init; } = default!; + +} diff --git a/src/Plaid/Entity/IdentityDocumentUploadMetadata.cs b/src/Plaid/Entity/IdentityDocumentUploadMetadata.cs new file mode 100644 index 00000000..9c87ad25 --- /dev/null +++ b/src/Plaid/Entity/IdentityDocumentUploadMetadata.cs @@ -0,0 +1,38 @@ +namespace Going.Plaid.Entity; + +/// +/// In closed beta. Object representing metadata pertaining to the document. +/// +public record IdentityDocumentUploadMetadata +{ + /// + /// String enumeration of the submitted document type. + /// + [JsonPropertyName("document_type")] + public string? DocumentType { get; init; } = default!; + + /// + /// Boolean field indicating if the uploaded document's account number matches the account number we have on file + /// + [JsonPropertyName("is_account_number_match")] + public bool? IsAccountNumberMatch { get; init; } = default!; + + /// + /// + /// + [JsonPropertyName("page_count")] + public int? PageCount { get; init; } = default!; + + /// + /// + /// + [JsonPropertyName("last_updated")] + public DateTimeOffset? LastUpdated { get; init; } = default!; + + /// + /// + /// + [JsonPropertyName("uploaded_at")] + public DateTimeOffset? UploadedAt { get; init; } = default!; + +} diff --git a/src/Plaid/Entity/IdentityDocumentUploadRiskInsights.cs b/src/Plaid/Entity/IdentityDocumentUploadRiskInsights.cs new file mode 100644 index 00000000..0e61cf62 --- /dev/null +++ b/src/Plaid/Entity/IdentityDocumentUploadRiskInsights.cs @@ -0,0 +1,20 @@ +namespace Going.Plaid.Entity; + +/// +/// In closed beta. Object representing fraud risk data of the document +/// +public record IdentityDocumentUploadRiskInsights +{ + /// + /// Risk summary of an uploaded document + /// + [JsonPropertyName("risk_summary")] + public Entity.IdentityDocumentUploadRiskSummary? RiskSummary { get; init; } = default!; + + /// + /// an array of risk signals + /// + [JsonPropertyName("risk_signals")] + public IReadOnlyList? RiskSignals { get; init; } = default!; + +} diff --git a/src/Plaid/Entity/IdentityDocumentUploadRiskSignal.cs b/src/Plaid/Entity/IdentityDocumentUploadRiskSignal.cs new file mode 100644 index 00000000..3c73e0af --- /dev/null +++ b/src/Plaid/Entity/IdentityDocumentUploadRiskSignal.cs @@ -0,0 +1,32 @@ +namespace Going.Plaid.Entity; + +/// +/// Risk signals tied to the document +/// +public record IdentityDocumentUploadRiskSignal +{ + /// + /// + /// + [JsonPropertyName("type")] + public string? Type { get; init; } = default!; + + /// + /// + /// + [JsonPropertyName("has_fraud_risk")] + public bool? HasFraudRisk { get; init; } = default!; + + /// + /// + /// + [JsonPropertyName("signal_description")] + public string? SignalDescription { get; init; } = default!; + + /// + /// + /// + [JsonPropertyName("page_number")] + public int? PageNumber { get; init; } = default!; + +} diff --git a/src/Plaid/Entity/IdentityDocumentUploadRiskSummary.cs b/src/Plaid/Entity/IdentityDocumentUploadRiskSummary.cs new file mode 100644 index 00000000..e3170753 --- /dev/null +++ b/src/Plaid/Entity/IdentityDocumentUploadRiskSummary.cs @@ -0,0 +1,14 @@ +namespace Going.Plaid.Entity; + +/// +/// Risk summary of an uploaded document +/// +public record IdentityDocumentUploadRiskSummary +{ + /// + /// Integer value representing the risk score of the document + /// + [JsonPropertyName("risk_score")] + public int? RiskScore { get; init; } = default!; + +} diff --git a/src/Plaid/Entity/IdentityDocumentsUploadsGetRequestOptions.cs b/src/Plaid/Entity/IdentityDocumentsUploadsGetRequestOptions.cs new file mode 100644 index 00000000..c86644c6 --- /dev/null +++ b/src/Plaid/Entity/IdentityDocumentsUploadsGetRequestOptions.cs @@ -0,0 +1,15 @@ +namespace Going.Plaid.Entity; + +/// +/// An optional object to filter /identity/documents/uploads/get results. +/// +public class IdentityDocumentsUploadsGetRequestOptions +{ + /// + /// A list of account_ids to retrieve for the Item. + /// Note: An error will be returned if a provided account_id is not associated with the Item. + /// + [JsonPropertyName("account_ids")] + public IReadOnlyList? AccountIds { get; set; } = default!; + +} diff --git a/src/Plaid/Entity/IdentityVerificationAutofillAddress.cs b/src/Plaid/Entity/IdentityVerificationAutofillAddress.cs index 20ea1538..edf15226 100644 --- a/src/Plaid/Entity/IdentityVerificationAutofillAddress.cs +++ b/src/Plaid/Entity/IdentityVerificationAutofillAddress.cs @@ -8,19 +8,19 @@ namespace Going.Plaid.Entity; public record IdentityVerificationAutofillAddress { /// - /// The primary street portion of an address. If an address is provided, this field will always be filled. + /// The primary street portion of an address. If an address is provided, this field will always be filled. A string with at least one non-whitespace alphabetical character, with a max length of 80 characters. /// [JsonPropertyName("street")] public string Street { get; init; } = default!; /// - /// Extra street information, like an apartment or suite number. + /// Extra street information, like an apartment or suite number. If provided, a string with at least one non-whitespace character, with a max length of 20 characters. /// [JsonPropertyName("street2")] public string? Street2 { get; init; } = default!; /// - /// City from the end user's address + /// City from the end user's address. A string with at least one non-whitespace alphabetical character, with a max length of 100 characters." /// [JsonPropertyName("city")] public string? City { get; init; } = default!; diff --git a/src/Plaid/Entity/IdentityVerificationUserAddress.cs b/src/Plaid/Entity/IdentityVerificationUserAddress.cs index 32ae6cc9..157c23d5 100644 --- a/src/Plaid/Entity/IdentityVerificationUserAddress.cs +++ b/src/Plaid/Entity/IdentityVerificationUserAddress.cs @@ -8,19 +8,19 @@ namespace Going.Plaid.Entity; public record IdentityVerificationUserAddress { /// - /// The primary street portion of an address. If an address is provided, this field will always be filled. + /// The primary street portion of an address. If an address is provided, this field will always be filled. A string with at least one non-whitespace alphabetical character, with a max length of 80 characters. /// [JsonPropertyName("street")] public string? Street { get; init; } = default!; /// - /// Extra street information, like an apartment or suite number. + /// Extra street information, like an apartment or suite number. If provided, a string with at least one non-whitespace character, with a max length of 20 characters. /// [JsonPropertyName("street2")] public string? Street2 { get; init; } = default!; /// - /// City from the end user's address + /// City from the end user's address. A string with at least one non-whitespace alphabetical character, with a max length of 100 characters." /// [JsonPropertyName("city")] public string? City { get; init; } = default!; diff --git a/src/Plaid/Entity/Item.cs b/src/Plaid/Entity/Item.cs index 53c5e1d6..e2f58a27 100644 --- a/src/Plaid/Entity/Item.cs +++ b/src/Plaid/Entity/Item.cs @@ -24,7 +24,7 @@ public record Item public string? Webhook { get; init; } = default!; /// - /// We use standard HTTP response codes for success and failure notifications, and our errors are further classified by error_type. In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. + /// Errors are identified by error_code and categorized by error_type. Use these in preference to HTTP status codes to identify and handle specific errors. HTTP status codes are set and provide the broadest categorization of errors: 4xx codes are for developer- or user-related errors, and 5xx codes are for Plaid-related errors, and the status will be 2xx in non-error cases. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. /// [JsonPropertyName("error")] public Entity.PlaidError? Error { get; init; } = default!; diff --git a/src/Plaid/Entity/LinkProfileEligibilityCheckUser.cs b/src/Plaid/Entity/LinkProfileEligibilityCheckUser.cs new file mode 100644 index 00000000..79bc6ff2 --- /dev/null +++ b/src/Plaid/Entity/LinkProfileEligibilityCheckUser.cs @@ -0,0 +1,14 @@ +namespace Going.Plaid.Entity; + +/// +/// An object specifying information about the end user who will be sharing their profile in this Link session +/// +public class LinkProfileEligibilityCheckUser +{ + /// + /// The user's phone number in E.164 format + /// + [JsonPropertyName("phone_number")] + public string PhoneNumber { get; set; } = default!; + +} diff --git a/src/Plaid/Entity/LinkSessionExit.cs b/src/Plaid/Entity/LinkSessionExit.cs index bfece744..07dacb77 100644 --- a/src/Plaid/Entity/LinkSessionExit.cs +++ b/src/Plaid/Entity/LinkSessionExit.cs @@ -6,7 +6,7 @@ namespace Going.Plaid.Entity; public record LinkSessionExit { /// - /// We use standard HTTP response codes for success and failure notifications, and our errors are further classified by error_type. In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. + /// Errors are identified by error_code and categorized by error_type. Use these in preference to HTTP status codes to identify and handle specific errors. HTTP status codes are set and provide the broadest categorization of errors: 4xx codes are for developer- or user-related errors, and 5xx codes are for Plaid-related errors, and the status will be 2xx in non-error cases. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. /// [JsonPropertyName("error")] public Entity.PlaidError? Error { get; init; } = default!; diff --git a/src/Plaid/Entity/LinkSessionSuccessMetadataAccount.cs b/src/Plaid/Entity/LinkSessionSuccessMetadataAccount.cs index 5eff68a6..4d33ebe7 100644 --- a/src/Plaid/Entity/LinkSessionSuccessMetadataAccount.cs +++ b/src/Plaid/Entity/LinkSessionSuccessMetadataAccount.cs @@ -43,10 +43,10 @@ public record LinkSessionSuccessMetadataAccount /// manually_verified: The Item has successfully been manually verified /// verification_expired: Plaid was unable to automatically verify the deposit within 7 calendar days and will no longer attempt to validate the Item. Users may retry by submitting their information again through Link. /// verification_failed: The Item failed manual micro-deposit verification because the user exhausted all 3 verification attempts. Users may retry by submitting their information again through Link. - /// database_matched: The Item has successfully been verified using Plaid's data sources. Note: Database Match is currently a beta feature, please contact your account manager for more information. - /// database_insights_pass: The Item's ACH numbers have been verified using Plaid's data sources and have strong signal for being valid. Note: Database Insights is currently a beta feature, please contact your account manager for more information. - /// database_insights_pass_with_caution: The Item's ACH numbers have been verified using Plaid's data sources and have some signal for being valid. Note: Database Insights is currently a beta feature, please contact your account manager for more information. - /// database_insights_fail: The Item's ACH numbers have been verified using Plaid's data sources and have signal for being invalid and/or have no signal for being valid. Note: Database Insights is currently a beta feature, please contact your account manager for more information. + /// database_matched: The Item has successfully been verified using Plaid's data sources. + /// database_insights_pass: The Item's account and routing number pair has been verified against a known account using Plaid's data sources and has strong signal for being valid. Note: Database Insights is currently a beta feature, please contact your account manager for more information. + /// database_insights_pass_with_caution: The Item's account and routing number pair was unable to be verified against a known account using Plaid's data sources. However, the routing number has strong signal for being valid, and the account number format is consistent with other known account numbers used with the given routing number. Note: Database Insights is currently a beta feature, please contact your account manager for more information. + /// database_insights_fail: The Item's account and routing number pair has been checked using Plaid's data sources and has signal for being invalid and/or has no signal for being valid. Note: Database Insights is currently a beta feature, please contact your account manager for more information. /// null: micro-deposit-based verification is not being used for the Item. /// [JsonPropertyName("verification_status")] diff --git a/src/Plaid/Entity/LinkTokenCreateHostedLink.cs b/src/Plaid/Entity/LinkTokenCreateHostedLink.cs index c63ba8ba..20b22ec4 100644 --- a/src/Plaid/Entity/LinkTokenCreateHostedLink.cs +++ b/src/Plaid/Entity/LinkTokenCreateHostedLink.cs @@ -1,7 +1,7 @@ namespace Going.Plaid.Entity; /// -/// Configuration parameters for Hosted Link (beta). Only available for participants in the Hosted Link beta program. +/// Configuration parameters for Hosted Link. To request access to Hosted Link, contact your account manager. /// public class LinkTokenCreateHostedLink { @@ -24,7 +24,7 @@ public class LinkTokenCreateHostedLink public int? UrlLifetimeSeconds { get; set; } = default!; /// - /// This indicates whether the client is opening hosted Link in a mobile app in an out of process web view (OOPWV). + /// This indicates whether the client is opening hosted Link in a mobile app in an out of process web view (OOPWV) (i.e., an AsWebAuthenticationSession / SFSafariViewController or Android Custom Tab). /// [JsonPropertyName("is_mobile_app")] public bool? IsMobileApp { get; set; } = default!; diff --git a/src/Plaid/Entity/LinkTokenCreateRequestAuth.cs b/src/Plaid/Entity/LinkTokenCreateRequestAuth.cs index a1974769..9765f2a1 100644 --- a/src/Plaid/Entity/LinkTokenCreateRequestAuth.cs +++ b/src/Plaid/Entity/LinkTokenCreateRequestAuth.cs @@ -6,7 +6,7 @@ namespace Going.Plaid.Entity; public class LinkTokenCreateRequestAuth { /// - /// Specifies whether Auth Type Select is enabled for the Link session, allowing the end user to choose between linking instantly or manually prior to selecting their financial institution. Note that this can only be true if same_day_microdeposits_enabled is set to true. + /// Specifies whether Auth Type Select is enabled for the Link session, allowing the end user to choose between linking via a credentials-based flow (i.e. Instant Auth, Instant Match, Automated Micro-deposits) or a manual flow that does not require login (all other Auth flows) prior to selecting their financial institution. Default behavior is false. /// [JsonPropertyName("auth_type_select_enabled")] public bool? AuthTypeSelectEnabled { get; set; } = default!; @@ -18,7 +18,7 @@ public class LinkTokenCreateRequestAuth public bool? AutomatedMicrodepositsEnabled { get; set; } = default!; /// - /// Specifies whether the Link session is enabled for the Instant Match flow. As of November 2022, Instant Match will be enabled by default. Instant Match can be disabled by setting this field to false. + /// Specifies whether the Link session is enabled for the Instant Match flow. Instant Match is enabled by default. Instant Match can be disabled by setting this field to false. /// [JsonPropertyName("instant_match_enabled")] public bool? InstantMatchEnabled { get; set; } = default!; @@ -30,25 +30,25 @@ public class LinkTokenCreateRequestAuth public bool? SameDayMicrodepositsEnabled { get; set; } = default!; /// - /// Specifies whether the Link session is enabled for the Instant Micro-deposits flow. Default behavior is true. + /// Specifies whether the Link session is enabled for the Instant Micro-deposits flow. Default behavior for Plaid teams created after November 2023 is false; default behavior for Plaid teams created before that date is true. /// [JsonPropertyName("instant_microdeposits_enabled")] public bool? InstantMicrodepositsEnabled { get; set; } = default!; /// - /// Specifies what type of [Reroute to Credentials](https://plaid.com/docs/auth/coverage/same-day/#reroute-to-credentials) pane should be used in the Link session for the Same Day Micro-deposits flow. As of October 15 2023, the default setting is OPTIONAL. + /// Specifies what type of [Reroute to Credentials](https://plaid.com/docs/auth/coverage/same-day/#reroute-to-credentials) pane should be used in the Link session for the Same Day Micro-deposits flow. Default behavior is OPTIONAL. /// [JsonPropertyName("reroute_to_credentials")] public Entity.LinkTokenCreateRequestAuthRerouteToCredentialsEnum? RerouteToCredentials { get; set; } = default!; /// - /// Specifies whether the Link session is enabled for the Database Match flow. + /// Specifies whether the Link session is enabled for the Database Match flow. Default behavior is false. /// [JsonPropertyName("database_match_enabled")] public bool? DatabaseMatchEnabled { get; set; } = default!; /// - /// Specifies whether the Link session is enabled for the Database Insights flow. + /// Specifies whether the Link session is enabled for the Database Insights flow. Database Insights is currently in closed beta; for access, contact your Account Manager. Default behavior is false. /// [JsonPropertyName("database_insights_enabled")] public bool? DatabaseInsightsEnabled { get; set; } = default!; @@ -60,7 +60,7 @@ public class LinkTokenCreateRequestAuth public Entity.LinkTokenCreateRequestAuthFlowTypeEnum? FlowType { get; set; } = default!; /// - /// Specifies whether the Link session is enabled for SMS microdeposits verification. If omitted, behavior defaults to as if this was set to true. + /// Specifies whether the Link session is enabled for SMS micro-deposits verification. Default behavior is true. /// [JsonPropertyName("sms_microdeposits_verification_enabled")] public bool? SmsMicrodepositsVerificationEnabled { get; set; } = default!; diff --git a/src/Plaid/Entity/LinkTokenCreateRequestAuthRerouteToCredentialsEnum.cs b/src/Plaid/Entity/LinkTokenCreateRequestAuthRerouteToCredentialsEnum.cs index 6d61a76d..7d24f2ca 100644 --- a/src/Plaid/Entity/LinkTokenCreateRequestAuthRerouteToCredentialsEnum.cs +++ b/src/Plaid/Entity/LinkTokenCreateRequestAuthRerouteToCredentialsEnum.cs @@ -1,7 +1,7 @@ namespace Going.Plaid.Entity; /// -/// Specifies what type of [Reroute to Credentials](https://plaid.com/docs/auth/coverage/same-day/#reroute-to-credentials) pane should be used in the Link session for the Same Day Micro-deposits flow. As of October 15 2023, the default setting is OPTIONAL. +/// Specifies what type of [Reroute to Credentials](https://plaid.com/docs/auth/coverage/same-day/#reroute-to-credentials) pane should be used in the Link session for the Same Day Micro-deposits flow. Default behavior is OPTIONAL. /// public enum LinkTokenCreateRequestAuthRerouteToCredentialsEnum { diff --git a/src/Plaid/Entity/LinkTokenCreateRequestStatements.cs b/src/Plaid/Entity/LinkTokenCreateRequestStatements.cs index a88961d4..2a195263 100644 --- a/src/Plaid/Entity/LinkTokenCreateRequestStatements.cs +++ b/src/Plaid/Entity/LinkTokenCreateRequestStatements.cs @@ -1,20 +1,20 @@ namespace Going.Plaid.Entity; /// -/// Specifies options for initializing Link for use with the Statements product. +/// Specifies options for initializing Link for use with the Statements product. This field is required for the statements product. /// public class LinkTokenCreateRequestStatements { /// - /// The start date for statements, in ISO 8601 “YYYY-MM-DD” format, e.g. "2020-10-30". If no value is provided, this will default to 3 months prior to the current date. + /// The start date for statements, in ISO 8601 “YYYY-MM-DD” format, e.g. "2020-10-30". /// [JsonPropertyName("start_date")] - public DateOnly? StartDate { get; set; } = default!; + public DateOnly StartDate { get; set; } = default!; /// - /// The end date for statements, in ISO 8601 “YYYY-MM-DD” format, e.g. "2020-10-30". If no value is provided, this will default to the current date. You can request up to two years of data. + /// The end date for statements, in ISO 8601 “YYYY-MM-DD” format, e.g. "2020-10-30". You can request up to two years of data. /// [JsonPropertyName("end_date")] - public DateOnly? EndDate { get; set; } = default!; + public DateOnly EndDate { get; set; } = default!; } diff --git a/src/Plaid/Entity/LinkTokenCreateRequestUserAddressObject.cs b/src/Plaid/Entity/LinkTokenCreateRequestUserAddressObject.cs index 8d6b2262..26b9e1cd 100644 --- a/src/Plaid/Entity/LinkTokenCreateRequestUserAddressObject.cs +++ b/src/Plaid/Entity/LinkTokenCreateRequestUserAddressObject.cs @@ -6,19 +6,19 @@ namespace Going.Plaid.Entity; public class LinkTokenCreateRequestUserAddressObject { /// - /// The primary street portion of an address. If an address is provided, this field will always be filled. + /// The primary street portion of an address. If an address is provided, this field will always be filled. A string with at least one non-whitespace alphabetical character, with a max length of 80 characters. /// [JsonPropertyName("street")] public string? Street { get; set; } = default!; /// - /// Extra street information, like an apartment or suite number. + /// Extra street information, like an apartment or suite number. If provided, a string with at least one non-whitespace character, with a max length of 20 characters. /// [JsonPropertyName("street2")] public string? Street2 { get; set; } = default!; /// - /// City from the end user's address + /// City from the end user's address. A string with at least one non-whitespace alphabetical character, with a max length of 100 characters." /// [JsonPropertyName("city")] public string? City { get; set; } = default!; diff --git a/src/Plaid/Entity/LinkTokenCreateRequestUserIdNumberObject.cs b/src/Plaid/Entity/LinkTokenCreateRequestUserIdNumberObject.cs index c815d9cf..2d051c62 100644 --- a/src/Plaid/Entity/LinkTokenCreateRequestUserIdNumberObject.cs +++ b/src/Plaid/Entity/LinkTokenCreateRequestUserIdNumberObject.cs @@ -6,7 +6,7 @@ namespace Going.Plaid.Entity; public class LinkTokenCreateRequestUserIdNumberObject { /// - /// Value of identity document value typed in by user. Alpha-numeric, with all formatting characters stripped. + /// Value of identity document value typed in by user. Alpha-numeric, with all formatting characters stripped. For specific format requirements by ID type, see Hybrid Input Validation. /// [JsonPropertyName("value")] public string? Value { get; set; } = default!; diff --git a/src/Plaid/Entity/LinkTokenGetSessionsResponse.cs b/src/Plaid/Entity/LinkTokenGetSessionsResponse.cs index 45197ee2..d4ee39d6 100644 --- a/src/Plaid/Entity/LinkTokenGetSessionsResponse.cs +++ b/src/Plaid/Entity/LinkTokenGetSessionsResponse.cs @@ -1,7 +1,7 @@ namespace Going.Plaid.Entity; /// -/// An object containing information about a link session. This field will only be present if your client is enabled for Hosted Link (beta). Session data will be provided for up to six hours after the session has ended. +/// An object containing information about a link session.Session data will be provided for up to six hours after the session has ended. /// public record LinkTokenGetSessionsResponse { diff --git a/src/Plaid/Entity/Products.cs b/src/Plaid/Entity/Products.cs index 76918aae..e691273c 100644 --- a/src/Plaid/Entity/Products.cs +++ b/src/Plaid/Entity/Products.cs @@ -143,6 +143,12 @@ public enum Products [EnumMember(Value = "processor_identity")] ProcessorIdentity, + /// + /// + /// + [EnumMember(Value = "profile")] + Profile, + /// /// Catch-all for unknown values returned by Plaid. If you encounter this, please check if there is a later version of the Going.Plaid library. /// diff --git a/src/Plaid/Entity/RecurringTransfer.cs b/src/Plaid/Entity/RecurringTransfer.cs index 39d0e126..9c88926e 100644 --- a/src/Plaid/Entity/RecurringTransfer.cs +++ b/src/Plaid/Entity/RecurringTransfer.cs @@ -55,10 +55,10 @@ public record RecurringTransfer public Entity.AchClass? AchClass { get; init; } = default!; /// - /// + /// Networks eligible for recurring transfers. /// [JsonPropertyName("network")] - public Entity.TransferACHNetwork Network { get; init; } = default!; + public Entity.TransferRecurrinngNetwork Network { get; init; } = default!; /// /// Plaid’s unique identifier for the origination account that was used for this transfer. diff --git a/src/Plaid/Entity/SandboxPublicTokenCreateRequestOptions.cs b/src/Plaid/Entity/SandboxPublicTokenCreateRequestOptions.cs index d1d25885..239dd02f 100644 --- a/src/Plaid/Entity/SandboxPublicTokenCreateRequestOptions.cs +++ b/src/Plaid/Entity/SandboxPublicTokenCreateRequestOptions.cs @@ -29,6 +29,12 @@ public class SandboxPublicTokenCreateRequestOptions [JsonPropertyName("transactions")] public Entity.SandboxPublicTokenCreateRequestOptionsTransactions? Transactions { get; set; } = default!; + /// + /// An optional set of parameters corresponding to statements options. + /// + [JsonPropertyName("statements")] + public Entity.SandboxPublicTokenCreateRequestOptionsStatements? Statements { get; set; } = default!; + /// /// A set of parameters for income verification options. This field is required if income_verification is included in the initial_products array. /// diff --git a/src/Plaid/Entity/SandboxPublicTokenCreateRequestOptionsStatements.cs b/src/Plaid/Entity/SandboxPublicTokenCreateRequestOptionsStatements.cs new file mode 100644 index 00000000..3731f68d --- /dev/null +++ b/src/Plaid/Entity/SandboxPublicTokenCreateRequestOptionsStatements.cs @@ -0,0 +1,20 @@ +namespace Going.Plaid.Entity; + +/// +/// An optional set of parameters corresponding to statements options. +/// +public class SandboxPublicTokenCreateRequestOptionsStatements +{ + /// + /// The earliest date for which to fetch statements history. Dates should be formatted as YYYY-MM-DD. + /// + [JsonPropertyName("start_date")] + public DateOnly StartDate { get; set; } = default!; + + /// + /// The most recent date for which to fetch statements history. Dates should be formatted as YYYY-MM-DD. + /// + [JsonPropertyName("end_date")] + public DateOnly EndDate { get; set; } = default!; + +} diff --git a/src/Plaid/Entity/SignalEvaluateCoreAttributes.cs b/src/Plaid/Entity/SignalEvaluateCoreAttributes.cs index 640aafee..b4fa3b9c 100644 --- a/src/Plaid/Entity/SignalEvaluateCoreAttributes.cs +++ b/src/Plaid/Entity/SignalEvaluateCoreAttributes.cs @@ -485,4 +485,10 @@ public record SignalEvaluateCoreAttributes [JsonPropertyName("distinct_ssl_tls_connection_sessions_count_90d")] public int? DistinctSslTlsConnectionSessionsCount90d { get; init; } = default!; + /// + /// The number of days since the bank account was opened, as reported by the financial institution + /// + [JsonPropertyName("days_since_account_opening")] + public int? DaysSinceAccountOpening { get; init; } = default!; + } diff --git a/src/Plaid/Entity/StudentLoan.cs b/src/Plaid/Entity/StudentLoan.cs index 8e5fcef3..50453c97 100644 --- a/src/Plaid/Entity/StudentLoan.cs +++ b/src/Plaid/Entity/StudentLoan.cs @@ -79,8 +79,8 @@ public record StudentLoan /// /// The minimum payment due for the next billing cycle. There are some exceptions: - /// Some institutions require a minimum payment across all loans associated with an account number. Our API presents that same minimum payment amount on each loan. The institutions that do this are: Great Lakes ( ins_116861), Firstmark (ins_116295), Commonbond Firstmark Services (ins_116950), Nelnet (ins_116528), EdFinancial Services (ins_116304), Granite State (ins_116308), and Oklahoma Student Loan Authority (ins_116945). - /// Firstmark (ins_116295 ) and Navient (ins_116248) will display as $0 if there is an autopay program in effect. + /// Some institutions require a minimum payment across all loans associated with an account number. Our API presents that same minimum payment amount on each loan. The institutions that do this are: Great Lakes ( ins_116861), Firstmark (ins_116295), Commonbond Firstmark Services (ins_116950), EdFinancial Services (ins_116304), Granite State (ins_116308), and Oklahoma Student Loan Authority (ins_116945). + /// Firstmark (ins_116295 ), EdFinancial Services (ins_116304), and Navient (ins_116248) will display as $0 if there is an autopay program in effect. /// [JsonPropertyName("minimum_payment_amount")] public decimal? MinimumPaymentAmount { get; init; } = default!; diff --git a/src/Plaid/Entity/TransactionsUpdateStatus.cs b/src/Plaid/Entity/TransactionsUpdateStatus.cs index 863f6b23..74b76a84 100644 --- a/src/Plaid/Entity/TransactionsUpdateStatus.cs +++ b/src/Plaid/Entity/TransactionsUpdateStatus.cs @@ -1,30 +1,30 @@ namespace Going.Plaid.Entity; /// -/// A description of the update status for transaction pulls of an item. +/// A description of the update status for transaction pulls of an Item. /// public enum TransactionsUpdateStatus { /// - /// Unable to fetch transactions update status for item. + /// Unable to fetch transactions update status for Item. /// [EnumMember(Value = "TRANSACTIONS_UPDATE_STATUS_UNKNOWN")] TransactionsUpdateStatusUnknown, /// - /// The item is pending transaction pull. + /// The Item is pending transaction pull. /// [EnumMember(Value = "NOT_READY")] NotReady, /// - /// Initial pull for the item is complete, pending Historical pull. + /// Initial pull for the Item is complete, historical pull is pending. /// [EnumMember(Value = "INITIAL_UPDATE_COMPLETE")] InitialUpdateComplete, /// - /// Both Initial and Historical pull for item is complete. + /// Both initial and historical pull for Item are complete. /// [EnumMember(Value = "HISTORICAL_UPDATE_COMPLETE")] HistoricalUpdateComplete, diff --git a/src/Plaid/Entity/TransferAuthorizationDecision.cs b/src/Plaid/Entity/TransferAuthorizationDecision.cs index 9776a347..a99a694e 100644 --- a/src/Plaid/Entity/TransferAuthorizationDecision.cs +++ b/src/Plaid/Entity/TransferAuthorizationDecision.cs @@ -6,7 +6,7 @@ namespace Going.Plaid.Entity; public enum TransferAuthorizationDecision { /// - /// – The proposed transfer has received the end user's consent and has been approved for processing by Plaid. The decision_rationale field is set if Plaid was unable to fetch the account information. You may proceed with the transfer, but further review is recommended (i.e., use Link in update to re-authenticate your user when decision_rationale.code is ITEM_LOGIN_REQUIRED). Refer to the code field in the decision_rationale object for details. + /// – The proposed transfer has received the end user's consent and has been approved for processing by Plaid. The decision_rationale field is set if Plaid was unable to fetch the account information. You may proceed with the transfer, but further review is recommended (i.e., use Link in update mode to re-authenticate your user when decision_rationale.code is ITEM_LOGIN_REQUIRED). Refer to the code field in the decision_rationale object for details. /// [EnumMember(Value = "approved")] Approved, diff --git a/src/Plaid/Entity/TransferEventType.cs b/src/Plaid/Entity/TransferEventType.cs index 6ca9749f..6b25db65 100644 --- a/src/Plaid/Entity/TransferEventType.cs +++ b/src/Plaid/Entity/TransferEventType.cs @@ -35,6 +35,12 @@ public enum TransferEventType [EnumMember(Value = "settled")] Settled, + /// + /// Funds from the transfer have been released from hold and applied to the ledger's available balance. (Only applicable to ACH debits.) + /// + [EnumMember(Value = "funds_available")] + FundsAvailable, + /// /// A posted transfer was returned. /// diff --git a/src/Plaid/Entity/TransferIntentAuthorizationDecision.cs b/src/Plaid/Entity/TransferIntentAuthorizationDecision.cs index 544fa078..c934c479 100644 --- a/src/Plaid/Entity/TransferIntentAuthorizationDecision.cs +++ b/src/Plaid/Entity/TransferIntentAuthorizationDecision.cs @@ -6,7 +6,7 @@ namespace Going.Plaid.Entity; public enum TransferIntentAuthorizationDecision { /// - /// – The proposed transfer has received the end user's consent and has been approved for processing by Plaid. The decision_rationale field is set if Plaid was unable to fetch the account information. You may proceed with the transfer, but further review is recommended (i.e., use Link in update to re-authenticate your user when decision_rationale.code is ITEM_LOGIN_REQUIRED). Refer to the code field in the decision_rationale object for details. + /// – The proposed transfer has received the end user's consent and has been approved for processing by Plaid. The decision_rationale field is set if Plaid was unable to fetch the account information. You may proceed with the transfer, but further review is recommended (i.e., use Link in update mode to re-authenticate your user when decision_rationale.code is ITEM_LOGIN_REQUIRED). Refer to the code field in the decision_rationale object for details. /// [EnumMember(Value = "APPROVED")] Approved, diff --git a/src/Plaid/Entity/TransferRecurringSchedule.cs b/src/Plaid/Entity/TransferRecurringSchedule.cs index 56a7c483..46bfeddd 100644 --- a/src/Plaid/Entity/TransferRecurringSchedule.cs +++ b/src/Plaid/Entity/TransferRecurringSchedule.cs @@ -29,7 +29,8 @@ public class TransferRecurringSchedule /// /// A date in ISO 8601 format (YYYY-MM-DD). The recurring transfer will begin on the first interval_execution_day on or after the start_date. - /// If the first interval_execution_day on or after the start date is also the same day that /transfer/recurring/create was called, the bank *may* make the first payment on that day, but it is not guaranteed to do so. + /// For rtp recurring transfers, start_date must be in the future. + /// Otherwise, if the first interval_execution_day on or after the start date is also the same day that /transfer/recurring/create was called, the bank *may* make the first payment on that day, but it is not guaranteed to do so. /// [JsonPropertyName("start_date")] public DateOnly StartDate { get; set; } = default!; diff --git a/src/Plaid/Entity/TransferRecurrinngNetwork.cs b/src/Plaid/Entity/TransferRecurrinngNetwork.cs new file mode 100644 index 00000000..8b358be4 --- /dev/null +++ b/src/Plaid/Entity/TransferRecurrinngNetwork.cs @@ -0,0 +1,32 @@ +namespace Going.Plaid.Entity; + +/// +/// Networks eligible for recurring transfers. +/// +public enum TransferRecurrinngNetwork +{ + /// + /// + /// + [EnumMember(Value = "ach")] + Ach, + + /// + /// + /// + [EnumMember(Value = "same-day-ach")] + SameDayAch, + + /// + /// + /// + [EnumMember(Value = "rtp")] + Rtp, + + /// + /// Catch-all for unknown values returned by Plaid. If you encounter this, please check if there is a later version of the Going.Plaid library. + /// + [EnumMember(Value = "undefined")] + Undefined, + +} diff --git a/src/Plaid/Entity/TransferStatus.cs b/src/Plaid/Entity/TransferStatus.cs index b5f554c7..22be647c 100644 --- a/src/Plaid/Entity/TransferStatus.cs +++ b/src/Plaid/Entity/TransferStatus.cs @@ -23,6 +23,12 @@ public enum TransferStatus [EnumMember(Value = "settled")] Settled, + /// + /// Funds from the transfer have been released from hold and applied to the ledger's available balance. (Only applicable to ACH debits.) + /// + [EnumMember(Value = "funds_available")] + FundsAvailable, + /// /// The transfer was cancelled by the client. /// diff --git a/src/Plaid/Entity/UserAddress.cs b/src/Plaid/Entity/UserAddress.cs index e698a49f..4c36f347 100644 --- a/src/Plaid/Entity/UserAddress.cs +++ b/src/Plaid/Entity/UserAddress.cs @@ -7,19 +7,19 @@ namespace Going.Plaid.Entity; public class UserAddress { /// - /// The primary street portion of an address. If an address is provided, this field will always be filled. + /// The primary street portion of an address. If an address is provided, this field will always be filled. A string with at least one non-whitespace alphabetical character, with a max length of 80 characters. /// [JsonPropertyName("street")] public string? Street { get; set; } = default!; /// - /// Extra street information, like an apartment or suite number. + /// Extra street information, like an apartment or suite number. If provided, a string with at least one non-whitespace character, with a max length of 20 characters. /// [JsonPropertyName("street2")] public string? Street2 { get; set; } = default!; /// - /// City from the end user's address + /// City from the end user's address. A string with at least one non-whitespace alphabetical character, with a max length of 100 characters." /// [JsonPropertyName("city")] public string? City { get; set; } = default!; diff --git a/src/Plaid/Entity/UserIDNumber.cs b/src/Plaid/Entity/UserIDNumber.cs index eb553193..600b7b08 100644 --- a/src/Plaid/Entity/UserIDNumber.cs +++ b/src/Plaid/Entity/UserIDNumber.cs @@ -6,7 +6,7 @@ namespace Going.Plaid.Entity; public class UserIDNumber { /// - /// Value of identity document value typed in by user. Alpha-numeric, with all formatting characters stripped. + /// Value of identity document value typed in by user. Alpha-numeric, with all formatting characters stripped. For specific format requirements by ID type, see Hybrid Input Validation. /// [JsonPropertyName("value")] public string Value { get; set; } = default!; diff --git a/src/Plaid/Identity/IdentityDocumentsUploadsGetRequest.cs b/src/Plaid/Identity/IdentityDocumentsUploadsGetRequest.cs new file mode 100644 index 00000000..e33205ce --- /dev/null +++ b/src/Plaid/Identity/IdentityDocumentsUploadsGetRequest.cs @@ -0,0 +1,14 @@ +namespace Going.Plaid.Identity; + +/// +/// IdentityDocumentsUploadsGetRequest defines the request schema for /identity/documents/uploads/get +/// +public partial class IdentityDocumentsUploadsGetRequest : RequestBase +{ + /// + /// An optional object to filter /identity/documents/uploads/get results. + /// + [JsonPropertyName("options")] + public Entity.IdentityDocumentsUploadsGetRequestOptions? Options { get; set; } = default!; + +} diff --git a/src/Plaid/Identity/IdentityDocumentsUploadsGetResponse.cs b/src/Plaid/Identity/IdentityDocumentsUploadsGetResponse.cs new file mode 100644 index 00000000..5591e562 --- /dev/null +++ b/src/Plaid/Identity/IdentityDocumentsUploadsGetResponse.cs @@ -0,0 +1,20 @@ +namespace Going.Plaid.Identity; + +/// +/// IdentityDocumentsUploadsGetResponse defines the response schema for /identity/documents/uploads/get +/// +public record IdentityDocumentsUploadsGetResponse : ResponseBase +{ + /// + /// The accounts for which Identity data has been requested + /// + [JsonPropertyName("accounts")] + public IReadOnlyList Accounts { get; init; } = default!; + + /// + /// Metadata about the Item. + /// + [JsonPropertyName("item")] + public Entity.Item Item { get; init; } = default!; + +} diff --git a/src/Plaid/Identity/PlaidClient.cs b/src/Plaid/Identity/PlaidClient.cs index 05e05e25..baf0cebf 100644 --- a/src/Plaid/Identity/PlaidClient.cs +++ b/src/Plaid/Identity/PlaidClient.cs @@ -12,6 +12,14 @@ public sealed partial class PlaidClient PostAsync("/identity/get", request) .ParseResponseAsync(); + /// + /// Use /identity/documents/uploads/get to retrieve document uploaded identity. + /// + /// + public Task IdentityDocumentsUploadsGetAsync(Identity.IdentityDocumentsUploadsGetRequest request) => + PostAsync("/identity/documents/uploads/get", request) + .ParseResponseAsync(); + /// /// The /identity/match endpoint generates a match score, which indicates how well the provided identity data matches the identity information on file with the account holder's financial institution. /// Fields within the balances object will always be null when retrieved by /identity/match. Instead, use the free /accounts/get endpoint to request balance cached data, or /accounts/balance/get for real-time data. diff --git a/src/Plaid/Link/LinkProfileEligibilityCheckRequest.cs b/src/Plaid/Link/LinkProfileEligibilityCheckRequest.cs new file mode 100644 index 00000000..8b78d383 --- /dev/null +++ b/src/Plaid/Link/LinkProfileEligibilityCheckRequest.cs @@ -0,0 +1,20 @@ +namespace Going.Plaid.Link; + +/// +/// LinkProfileEligibilityCheckRequest defines the request schema for /link/profile/eligibility/check +/// +public partial class LinkProfileEligibilityCheckRequest : RequestBase +{ + /// + /// The unique ID for the user's Link session + /// + [JsonPropertyName("link_session_id")] + public string LinkSessionId { get; set; } = default!; + + /// + /// An object specifying information about the end user who will be sharing their profile in this Link session + /// + [JsonPropertyName("user")] + public Entity.LinkProfileEligibilityCheckUser User { get; set; } = default!; + +} diff --git a/src/Plaid/Link/LinkProfileEligibilityCheckResponse.cs b/src/Plaid/Link/LinkProfileEligibilityCheckResponse.cs new file mode 100644 index 00000000..b37a95f0 --- /dev/null +++ b/src/Plaid/Link/LinkProfileEligibilityCheckResponse.cs @@ -0,0 +1,14 @@ +namespace Going.Plaid.Link; + +/// +/// LinkProfileEligibilityCheckResponse defines the response schema for /link/profile/eligibility/check +/// +public record LinkProfileEligibilityCheckResponse : ResponseBase +{ + /// + /// Indicates whether Plaid has a profile matching the customer's eligibility requirements for this user + /// + [JsonPropertyName("profile_matches")] + public bool ProfileMatches { get; init; } = default!; + +} diff --git a/src/Plaid/Link/LinkTokenCreateRequest.cs b/src/Plaid/Link/LinkTokenCreateRequest.cs index ad590ec9..eb40e421 100644 --- a/src/Plaid/Link/LinkTokenCreateRequest.cs +++ b/src/Plaid/Link/LinkTokenCreateRequest.cs @@ -89,7 +89,7 @@ public partial class LinkTokenCreateRequest : RequestBase public string? LinkCustomizationName { get; set; } = default!; /// - /// A URI indicating the destination where a user should be forwarded after completing the Link flow; used to support OAuth authentication flows when launching Link in the browser or via a webview. The redirect_uri should not contain any query parameters. When used in Production or Development, must be an https URI. To specify any subdomain, use * as a wildcard character, e.g. https://*.example.com/oauth.html. Note that any redirect URI must also be added to the Allowed redirect URIs list in the developer dashboard. If initializing on Android, android_package_name must be specified instead and redirect_uri should be left blank. If using Hosted Link (beta) the redirect_uri must be set to https://hosted.plaid.com/oauth/redirect. + /// A URI indicating the destination where a user should be forwarded after completing the Link flow; used to support OAuth authentication flows when launching Link in the browser or another app. The redirect_uri should not contain any query parameters. When used in Production or Development, must be an https URI. To specify any subdomain, use * as a wildcard character, e.g. https://*.example.com/oauth.html. Note that any redirect URI must also be added to the Allowed redirect URIs list in the developer dashboard. If initializing on Android, android_package_name must be specified instead and redirect_uri should be left blank. If using Hosted Link, the redirect_uri must be set to https://hosted.plaid.com/oauth/redirect. /// [JsonPropertyName("redirect_uri")] public string? RedirectUri { get; set; } = default!; @@ -198,7 +198,7 @@ public partial class LinkTokenCreateRequest : RequestBase public Entity.LinkTokenCreateRequestIdentityVerification? IdentityVerification { get; set; } = default!; /// - /// Specifies options for initializing Link for use with the Statements product. + /// Specifies options for initializing Link for use with the Statements product. This field is required for the statements product. /// [JsonPropertyName("statements")] public Entity.LinkTokenCreateRequestStatements? Statements { get; set; } = default!; @@ -222,7 +222,7 @@ public partial class LinkTokenCreateRequest : RequestBase public Entity.LinkTokenInvestmentsAuth? InvestmentsAuth { get; set; } = default!; /// - /// Configuration parameters for Hosted Link (beta). Only available for participants in the Hosted Link beta program. + /// Configuration parameters for Hosted Link. To request access to Hosted Link, contact your account manager. /// [JsonPropertyName("hosted_link")] public Entity.LinkTokenCreateHostedLink? HostedLink { get; set; } = default!; diff --git a/src/Plaid/Link/LinkTokenCreateResponse.cs b/src/Plaid/Link/LinkTokenCreateResponse.cs index 4780887c..789baf86 100644 --- a/src/Plaid/Link/LinkTokenCreateResponse.cs +++ b/src/Plaid/Link/LinkTokenCreateResponse.cs @@ -18,7 +18,7 @@ public record LinkTokenCreateResponse : ResponseBase public DateTimeOffset Expiration { get; init; } = default!; /// - /// A URL of a Plaid-hosted Link flow that will use the Link token returned by this request. Only present if the client is enabled for Hosted Link (beta). + /// A URL of a Plaid-hosted Link flow that will use the Link token returned by this request. Only present if the client is enabled for Hosted Link. /// [JsonPropertyName("hosted_link_url")] public string? HostedLinkUrl { get; init; } = default!; diff --git a/src/Plaid/Link/LinkTokenGetResponse.cs b/src/Plaid/Link/LinkTokenGetResponse.cs index 63920bf3..35a9b903 100644 --- a/src/Plaid/Link/LinkTokenGetResponse.cs +++ b/src/Plaid/Link/LinkTokenGetResponse.cs @@ -24,7 +24,7 @@ public record LinkTokenGetResponse : ResponseBase public DateTimeOffset? Expiration { get; init; } = default!; /// - /// Information about Link sessions created using this link_token. This field will only be present if your client is enabled for Hosted Link (beta). Session data will be provided for up to six hours after the session has ended. + /// Information about Link sessions created using this link_token. This field will only be present if your client is enabled for Hosted Link. Session data will be provided for up to six hours after the session has ended. /// [JsonPropertyName("link_sessions")] public IReadOnlyList? LinkSessions { get; init; } = default!; diff --git a/src/Plaid/Link/PlaidClient.cs b/src/Plaid/Link/PlaidClient.cs index 3a03e4ab..263dca8a 100644 --- a/src/Plaid/Link/PlaidClient.cs +++ b/src/Plaid/Link/PlaidClient.cs @@ -2,6 +2,16 @@ namespace Going.Plaid; public sealed partial class PlaidClient { + /// + /// The /link/profile/eligibility/check endpoint can be used to check whether a user with the + /// supplied phone number has a saved profile that satisfies customer-defined eligibility + /// requirements. + /// + /// + public Task LinkProfileEligibilityCheckAsync(Link.LinkProfileEligibilityCheckRequest request) => + PostAsync("/link/profile/eligibility/check", request) + .ParseResponseAsync(); + /// /// The /link/token/create endpoint creates a link_token, which is required as a parameter when initializing Link. Once Link has been initialized, it returns a public_token, which can then be exchanged for an access_token via /item/public_token/exchange as part of the main Link flow. /// A link_token generated by /link/token/create is also used to initialize other Link flows, such as the update mode flow for tokens with expired credentials, or the Payment Initiation (Europe) flow. diff --git a/src/Plaid/Partner/PartnerCustomerCreateRequest.cs b/src/Plaid/Partner/PartnerCustomerCreateRequest.cs index cf1d1e06..8f3777b5 100644 --- a/src/Plaid/Partner/PartnerCustomerCreateRequest.cs +++ b/src/Plaid/Partner/PartnerCustomerCreateRequest.cs @@ -90,7 +90,7 @@ public partial class PartnerCustomerCreateRequest : RequestBase public Entity.PartnerEndCustomerAssetsUnderManagement? AssetsUnderManagement { get; set; } = default!; /// - /// A list of URIs indicating the destination(s) where a user can be forwarded after completing the Link flow; used to support OAuth authentication flows when launching Link in the browser or via a webview. URIs should not contain any query parameters. When used in Production or Development, URIs must use https. To specify any subdomain, use * as a wildcard character, e.g. https://*.example.com/oauth.html. To modify redirect URIs for an end customer after creating them, go to the end customer's API page in the Dashboard. + /// A list of URIs indicating the destination(s) where a user can be forwarded after completing the Link flow; used to support OAuth authentication flows when launching Link in the browser or another app. URIs should not contain any query parameters. When used in Production or Development, URIs must use https. To specify any subdomain, use * as a wildcard character, e.g. https://*.example.com/oauth.html. To modify redirect URIs for an end customer after creating them, go to the end customer's API page in the Dashboard. /// [JsonPropertyName("redirect_uris")] public IReadOnlyList? RedirectUris { get; set; } = default!; diff --git a/src/Plaid/Processor/ProcessorTransactionsSyncResponse.cs b/src/Plaid/Processor/ProcessorTransactionsSyncResponse.cs index 5c20aac2..de6eb9a8 100644 --- a/src/Plaid/Processor/ProcessorTransactionsSyncResponse.cs +++ b/src/Plaid/Processor/ProcessorTransactionsSyncResponse.cs @@ -5,6 +5,18 @@ namespace Going.Plaid.Processor; /// public record ProcessorTransactionsSyncResponse : ResponseBase { + /// + /// A description of the update status for transaction pulls of an Item. + /// + [JsonPropertyName("transactions_update_status")] + public Entity.TransactionsUpdateStatus TransactionsUpdateStatus { get; init; } = default!; + + /// + /// A single account at a financial institution. + /// + [JsonPropertyName("account")] + public Entity.Account Account { get; init; } = default!; + /// /// Transactions that have been added to the Item since cursor ordered by ascending last modified time. /// diff --git a/src/Plaid/Statements/PlaidClient.cs b/src/Plaid/Statements/PlaidClient.cs index d9159353..1aecf4be 100644 --- a/src/Plaid/Statements/PlaidClient.cs +++ b/src/Plaid/Statements/PlaidClient.cs @@ -3,7 +3,7 @@ namespace Going.Plaid; public sealed partial class PlaidClient { /// - /// The /statements/list endpoint retrieves a list of all statements associated with the provided item. + /// The /statements/list endpoint retrieves a list of all statements associated with an item. /// /// public Task StatementsListAsync(Statements.StatementsListRequest request) => diff --git a/src/Plaid/Transactions/PlaidClient.cs b/src/Plaid/Transactions/PlaidClient.cs index 7c22b970..a8d6df9b 100644 --- a/src/Plaid/Transactions/PlaidClient.cs +++ b/src/Plaid/Transactions/PlaidClient.cs @@ -49,7 +49,6 @@ public sealed partial class PlaidClient /// Whenever new or updated transaction data becomes available, /transactions/sync will provide these updates. Plaid typically checks for new data multiple times a day, but these checks may occur less frequently, such as once a day, depending on the institution. To find out when the Item was last updated, use the Item Debugger or call /item/get; the item.status.transactions.last_successful_update field will show the timestamp of the most recent successful update. To force Plaid to check for new transactions, use the /transactions/refresh endpoint. /// For newly created Items, data may not be immediately available to /transactions/sync. Plaid begins preparing transactions data when the Item is created, but the process can take anywhere from a few seconds to several minutes to complete, depending on the number of transactions available. /// To be alerted when new data is available, listen for the SYNC_UPDATES_AVAILABLE webhook. - /// /transactions/sync does not directly return balance data. To get the balance for an account, call /accounts/get, which is a free-to-use endpoint that will return the cached balance as of the last successful transactions update. /// /// public Task TransactionsSyncAsync(Transactions.TransactionsSyncRequest request) => diff --git a/src/Plaid/Transactions/TransactionsSyncResponse.cs b/src/Plaid/Transactions/TransactionsSyncResponse.cs index 55d41a89..699b776f 100644 --- a/src/Plaid/Transactions/TransactionsSyncResponse.cs +++ b/src/Plaid/Transactions/TransactionsSyncResponse.cs @@ -6,16 +6,16 @@ namespace Going.Plaid.Transactions; public record TransactionsSyncResponse : ResponseBase { /// - /// A description of the update status for transaction pulls of an item. + /// A description of the update status for transaction pulls of an Item. /// [JsonPropertyName("transactions_update_status")] - public Entity.TransactionsUpdateStatus? TransactionsUpdateStatus { get; init; } = default!; + public Entity.TransactionsUpdateStatus TransactionsUpdateStatus { get; init; } = default!; /// /// An array of accounts at a financial institution associated with the transactions in this response. /// [JsonPropertyName("accounts")] - public IReadOnlyList? Accounts { get; init; } = default!; + public IReadOnlyList Accounts { get; init; } = default!; /// /// Transactions that have been added to the Item since cursor ordered by ascending last modified time. diff --git a/src/Plaid/Transfer/PlaidClient.cs b/src/Plaid/Transfer/PlaidClient.cs index 24c69bdf..3610653d 100644 --- a/src/Plaid/Transfer/PlaidClient.cs +++ b/src/Plaid/Transfer/PlaidClient.cs @@ -34,7 +34,7 @@ public sealed partial class PlaidClient .ParseResponseAsync(); /// - /// Use the /transfer/balance/get endpoint to view a balance held with Plaid. + /// (Deprecated) Use the /transfer/balance/get endpoint to view a balance held with Plaid. /// /// public Task TransferBalanceGetAsync(Transfer.TransferBalanceGetRequest request) => diff --git a/src/Plaid/Transfer/TransferRecurringCreateRequest.cs b/src/Plaid/Transfer/TransferRecurringCreateRequest.cs index e314ce16..e1ab235b 100644 --- a/src/Plaid/Transfer/TransferRecurringCreateRequest.cs +++ b/src/Plaid/Transfer/TransferRecurringCreateRequest.cs @@ -31,10 +31,10 @@ public partial class TransferRecurringCreateRequest : RequestBase public Entity.TransferType Type { get; set; } = default!; /// - /// + /// Networks eligible for recurring transfers. /// [JsonPropertyName("network")] - public Entity.TransferACHNetwork Network { get; set; } = default!; + public Entity.TransferRecurrinngNetwork Network { get; set; } = default!; /// /// Specifies the use case of the transfer. Required for transfers on an ACH network. diff --git a/src/Plaid/Webhook/AssetsErrorWebhook.cs b/src/Plaid/Webhook/AssetsErrorWebhook.cs index 352aa0eb..f62b9686 100644 --- a/src/Plaid/Webhook/AssetsErrorWebhook.cs +++ b/src/Plaid/Webhook/AssetsErrorWebhook.cs @@ -14,7 +14,7 @@ public record AssetsErrorWebhook : WebhookBase public override WebhookCode WebhookCode => WebhookCode.Error; /// - /// We use standard HTTP response codes for success and failure notifications, and our errors are further classified by error_type. In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. + /// Errors are identified by error_code and categorized by error_type. Use these in preference to HTTP status codes to identify and handle specific errors. HTTP status codes are set and provide the broadest categorization of errors: 4xx codes are for developer- or user-related errors, and 5xx codes are for Plaid-related errors, and the status will be 2xx in non-error cases. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. /// [JsonPropertyName("error")] public Entity.PlaidError? Error { get; init; } = default!; diff --git a/src/Plaid/Webhook/AutomaticallyVerifiedWebhook.cs b/src/Plaid/Webhook/AutomaticallyVerifiedWebhook.cs index 2ec7b6b2..b2a7ea6f 100644 --- a/src/Plaid/Webhook/AutomaticallyVerifiedWebhook.cs +++ b/src/Plaid/Webhook/AutomaticallyVerifiedWebhook.cs @@ -26,7 +26,7 @@ public record AutomaticallyVerifiedWebhook : WebhookBase public string ItemId { get; init; } = default!; /// - /// We use standard HTTP response codes for success and failure notifications, and our errors are further classified by error_type. In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. + /// Errors are identified by error_code and categorized by error_type. Use these in preference to HTTP status codes to identify and handle specific errors. HTTP status codes are set and provide the broadest categorization of errors: 4xx codes are for developer- or user-related errors, and 5xx codes are for Plaid-related errors, and the status will be 2xx in non-error cases. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. /// [JsonPropertyName("error")] public Entity.PlaidError? Error { get; init; } = default!; diff --git a/src/Plaid/Webhook/BaseReportsErrorWebhook.cs b/src/Plaid/Webhook/BaseReportsErrorWebhook.cs index 2cc093da..c2d1e970 100644 --- a/src/Plaid/Webhook/BaseReportsErrorWebhook.cs +++ b/src/Plaid/Webhook/BaseReportsErrorWebhook.cs @@ -14,7 +14,7 @@ public record BaseReportsErrorWebhook : WebhookBase public override WebhookCode WebhookCode => WebhookCode.Error; /// - /// We use standard HTTP response codes for success and failure notifications, and our errors are further classified by error_type. In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. + /// Errors are identified by error_code and categorized by error_type. Use these in preference to HTTP status codes to identify and handle specific errors. HTTP status codes are set and provide the broadest categorization of errors: 4xx codes are for developer- or user-related errors, and 5xx codes are for Plaid-related errors, and the status will be 2xx in non-error cases. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. /// [JsonPropertyName("error")] public Entity.PlaidError? Error { get; init; } = default!; diff --git a/src/Plaid/Webhook/DefaultUpdateWebhook.cs b/src/Plaid/Webhook/DefaultUpdateWebhook.cs index 5324e21e..2fb4ddb1 100644 --- a/src/Plaid/Webhook/DefaultUpdateWebhook.cs +++ b/src/Plaid/Webhook/DefaultUpdateWebhook.cs @@ -15,7 +15,7 @@ public record DefaultUpdateWebhook : WebhookBase public override WebhookCode WebhookCode => WebhookCode.DefaultUpdate; /// - /// We use standard HTTP response codes for success and failure notifications, and our errors are further classified by error_type. In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. + /// Errors are identified by error_code and categorized by error_type. Use these in preference to HTTP status codes to identify and handle specific errors. HTTP status codes are set and provide the broadest categorization of errors: 4xx codes are for developer- or user-related errors, and 5xx codes are for Plaid-related errors, and the status will be 2xx in non-error cases. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. /// [JsonPropertyName("error")] public Entity.PlaidError? Error { get; init; } = default!; diff --git a/src/Plaid/Webhook/HistoricalUpdateWebhook.cs b/src/Plaid/Webhook/HistoricalUpdateWebhook.cs index eb77bc86..bd3635f7 100644 --- a/src/Plaid/Webhook/HistoricalUpdateWebhook.cs +++ b/src/Plaid/Webhook/HistoricalUpdateWebhook.cs @@ -15,7 +15,7 @@ public record HistoricalUpdateWebhook : WebhookBase public override WebhookCode WebhookCode => WebhookCode.HistoricalUpdate; /// - /// We use standard HTTP response codes for success and failure notifications, and our errors are further classified by error_type. In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. + /// Errors are identified by error_code and categorized by error_type. Use these in preference to HTTP status codes to identify and handle specific errors. HTTP status codes are set and provide the broadest categorization of errors: 4xx codes are for developer- or user-related errors, and 5xx codes are for Plaid-related errors, and the status will be 2xx in non-error cases. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. /// [JsonPropertyName("error")] public Entity.PlaidError? Error { get; init; } = default!; diff --git a/src/Plaid/Webhook/HoldingsDefaultUpdateWebhook.cs b/src/Plaid/Webhook/HoldingsDefaultUpdateWebhook.cs index 5314d27b..b0240e10 100644 --- a/src/Plaid/Webhook/HoldingsDefaultUpdateWebhook.cs +++ b/src/Plaid/Webhook/HoldingsDefaultUpdateWebhook.cs @@ -20,7 +20,7 @@ public record HoldingsDefaultUpdateWebhook : WebhookBase public string ItemId { get; init; } = default!; /// - /// We use standard HTTP response codes for success and failure notifications, and our errors are further classified by error_type. In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. + /// Errors are identified by error_code and categorized by error_type. Use these in preference to HTTP status codes to identify and handle specific errors. HTTP status codes are set and provide the broadest categorization of errors: 4xx codes are for developer- or user-related errors, and 5xx codes are for Plaid-related errors, and the status will be 2xx in non-error cases. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. /// [JsonPropertyName("error")] public Entity.PlaidError? Error { get; init; } = default!; diff --git a/src/Plaid/Webhook/IdentityDefaultUpdateWebhook.cs b/src/Plaid/Webhook/IdentityDefaultUpdateWebhook.cs index 2b2c07bf..7ead11b4 100644 --- a/src/Plaid/Webhook/IdentityDefaultUpdateWebhook.cs +++ b/src/Plaid/Webhook/IdentityDefaultUpdateWebhook.cs @@ -27,7 +27,7 @@ public record IdentityDefaultUpdateWebhook : WebhookBase public IReadOnlyDictionary> AccountIdsWithUpdatedIdentity { get; init; } = default!; /// - /// We use standard HTTP response codes for success and failure notifications, and our errors are further classified by error_type. In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. + /// Errors are identified by error_code and categorized by error_type. Use these in preference to HTTP status codes to identify and handle specific errors. HTTP status codes are set and provide the broadest categorization of errors: 4xx codes are for developer- or user-related errors, and 5xx codes are for Plaid-related errors, and the status will be 2xx in non-error cases. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. /// [JsonPropertyName("error")] public Entity.PlaidError? Error { get; init; } = default!; diff --git a/src/Plaid/Webhook/InvestmentsDefaultUpdateWebhook.cs b/src/Plaid/Webhook/InvestmentsDefaultUpdateWebhook.cs index 535df3ff..73e76f20 100644 --- a/src/Plaid/Webhook/InvestmentsDefaultUpdateWebhook.cs +++ b/src/Plaid/Webhook/InvestmentsDefaultUpdateWebhook.cs @@ -20,7 +20,7 @@ public record InvestmentsDefaultUpdateWebhook : WebhookBase public string ItemId { get; init; } = default!; /// - /// We use standard HTTP response codes for success and failure notifications, and our errors are further classified by error_type. In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. + /// Errors are identified by error_code and categorized by error_type. Use these in preference to HTTP status codes to identify and handle specific errors. HTTP status codes are set and provide the broadest categorization of errors: 4xx codes are for developer- or user-related errors, and 5xx codes are for Plaid-related errors, and the status will be 2xx in non-error cases. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. /// [JsonPropertyName("error")] public Entity.PlaidError? Error { get; init; } = default!; diff --git a/src/Plaid/Webhook/InvestmentsHistoricalUpdateWebhook.cs b/src/Plaid/Webhook/InvestmentsHistoricalUpdateWebhook.cs index 5cc63a2d..70146988 100644 --- a/src/Plaid/Webhook/InvestmentsHistoricalUpdateWebhook.cs +++ b/src/Plaid/Webhook/InvestmentsHistoricalUpdateWebhook.cs @@ -20,7 +20,7 @@ public record InvestmentsHistoricalUpdateWebhook : WebhookBase public string ItemId { get; init; } = default!; /// - /// We use standard HTTP response codes for success and failure notifications, and our errors are further classified by error_type. In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. + /// Errors are identified by error_code and categorized by error_type. Use these in preference to HTTP status codes to identify and handle specific errors. HTTP status codes are set and provide the broadest categorization of errors: 4xx codes are for developer- or user-related errors, and 5xx codes are for Plaid-related errors, and the status will be 2xx in non-error cases. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. /// [JsonPropertyName("error")] public Entity.PlaidError? Error { get; init; } = default!; diff --git a/src/Plaid/Webhook/ItemErrorWebhook.cs b/src/Plaid/Webhook/ItemErrorWebhook.cs index 7d33e1c8..44ea2b17 100644 --- a/src/Plaid/Webhook/ItemErrorWebhook.cs +++ b/src/Plaid/Webhook/ItemErrorWebhook.cs @@ -20,7 +20,7 @@ public record ItemErrorWebhook : WebhookBase public string ItemId { get; init; } = default!; /// - /// We use standard HTTP response codes for success and failure notifications, and our errors are further classified by error_type. In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. + /// Errors are identified by error_code and categorized by error_type. Use these in preference to HTTP status codes to identify and handle specific errors. HTTP status codes are set and provide the broadest categorization of errors: 4xx codes are for developer- or user-related errors, and 5xx codes are for Plaid-related errors, and the status will be 2xx in non-error cases. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. /// [JsonPropertyName("error")] public Entity.PlaidError? Error { get; init; } = default!; diff --git a/src/Plaid/Webhook/ItemProductReadyWebhook.cs b/src/Plaid/Webhook/ItemProductReadyWebhook.cs index d4e19935..05db7226 100644 --- a/src/Plaid/Webhook/ItemProductReadyWebhook.cs +++ b/src/Plaid/Webhook/ItemProductReadyWebhook.cs @@ -20,7 +20,7 @@ public record ItemProductReadyWebhook : WebhookBase public string ItemId { get; init; } = default!; /// - /// We use standard HTTP response codes for success and failure notifications, and our errors are further classified by error_type. In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. + /// Errors are identified by error_code and categorized by error_type. Use these in preference to HTTP status codes to identify and handle specific errors. HTTP status codes are set and provide the broadest categorization of errors: 4xx codes are for developer- or user-related errors, and 5xx codes are for Plaid-related errors, and the status will be 2xx in non-error cases. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. /// [JsonPropertyName("error")] public Entity.PlaidError? Error { get; init; } = default!; diff --git a/src/Plaid/Webhook/LiabilitiesDefaultUpdateWebhook.cs b/src/Plaid/Webhook/LiabilitiesDefaultUpdateWebhook.cs index 642b044e..bb7e4daf 100644 --- a/src/Plaid/Webhook/LiabilitiesDefaultUpdateWebhook.cs +++ b/src/Plaid/Webhook/LiabilitiesDefaultUpdateWebhook.cs @@ -20,7 +20,7 @@ public record LiabilitiesDefaultUpdateWebhook : WebhookBase public string ItemId { get; init; } = default!; /// - /// We use standard HTTP response codes for success and failure notifications, and our errors are further classified by error_type. In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. + /// Errors are identified by error_code and categorized by error_type. Use these in preference to HTTP status codes to identify and handle specific errors. HTTP status codes are set and provide the broadest categorization of errors: 4xx codes are for developer- or user-related errors, and 5xx codes are for Plaid-related errors, and the status will be 2xx in non-error cases. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. /// [JsonPropertyName("error")] public Entity.PlaidError? Error { get; init; } = default!; diff --git a/src/Plaid/Webhook/LinkDeliveryCallbackWebhook.cs b/src/Plaid/Webhook/LinkDeliveryCallbackWebhook.cs index e5ddf0f9..4cfacc02 100644 --- a/src/Plaid/Webhook/LinkDeliveryCallbackWebhook.cs +++ b/src/Plaid/Webhook/LinkDeliveryCallbackWebhook.cs @@ -26,7 +26,7 @@ public record LinkDeliveryCallbackWebhook : WebhookBase public DateTimeOffset Timestamp { get; init; } = default!; /// - /// We use standard HTTP response codes for success and failure notifications, and our errors are further classified by error_type. In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. + /// Errors are identified by error_code and categorized by error_type. Use these in preference to HTTP status codes to identify and handle specific errors. HTTP status codes are set and provide the broadest categorization of errors: 4xx codes are for developer- or user-related errors, and 5xx codes are for Plaid-related errors, and the status will be 2xx in non-error cases. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. /// [JsonPropertyName("error")] public Entity.PlaidError? Error { get; init; } = default!; diff --git a/src/Plaid/Webhook/NewAccountsAvailableWebhook.cs b/src/Plaid/Webhook/NewAccountsAvailableWebhook.cs index 9b279734..5f221490 100644 --- a/src/Plaid/Webhook/NewAccountsAvailableWebhook.cs +++ b/src/Plaid/Webhook/NewAccountsAvailableWebhook.cs @@ -20,7 +20,7 @@ public record NewAccountsAvailableWebhook : WebhookBase public string? ItemId { get; init; } = default!; /// - /// We use standard HTTP response codes for success and failure notifications, and our errors are further classified by error_type. In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. + /// Errors are identified by error_code and categorized by error_type. Use these in preference to HTTP status codes to identify and handle specific errors. HTTP status codes are set and provide the broadest categorization of errors: 4xx codes are for developer- or user-related errors, and 5xx codes are for Plaid-related errors, and the status will be 2xx in non-error cases. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. /// [JsonPropertyName("error")] public Entity.PlaidError? Error { get; init; } = default!; diff --git a/src/Plaid/Webhook/PaymentStatusUpdateWebhook.cs b/src/Plaid/Webhook/PaymentStatusUpdateWebhook.cs index fe066a68..5faf7e36 100644 --- a/src/Plaid/Webhook/PaymentStatusUpdateWebhook.cs +++ b/src/Plaid/Webhook/PaymentStatusUpdateWebhook.cs @@ -68,7 +68,7 @@ public record PaymentStatusUpdateWebhook : WebhookBase public DateTimeOffset Timestamp { get; init; } = default!; /// - /// We use standard HTTP response codes for success and failure notifications, and our errors are further classified by error_type. In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. + /// Errors are identified by error_code and categorized by error_type. Use these in preference to HTTP status codes to identify and handle specific errors. HTTP status codes are set and provide the broadest categorization of errors: 4xx codes are for developer- or user-related errors, and 5xx codes are for Plaid-related errors, and the status will be 2xx in non-error cases. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. /// [JsonPropertyName("error")] public Entity.PlaidError? Error { get; init; } = default!; diff --git a/src/Plaid/Webhook/ProcessorDefaultUpdateWebhook.cs b/src/Plaid/Webhook/ProcessorDefaultUpdateWebhook.cs index e5449c91..f2bb545f 100644 --- a/src/Plaid/Webhook/ProcessorDefaultUpdateWebhook.cs +++ b/src/Plaid/Webhook/ProcessorDefaultUpdateWebhook.cs @@ -16,7 +16,7 @@ public record ProcessorDefaultUpdateWebhook : ProcessorWebhookBase public override ProcessorWebhookCode WebhookCode => ProcessorWebhookCode.DefaultUpdate; /// - /// We use standard HTTP response codes for success and failure notifications, and our errors are further classified by error_type. In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. + /// Errors are identified by error_code and categorized by error_type. Use these in preference to HTTP status codes to identify and handle specific errors. HTTP status codes are set and provide the broadest categorization of errors: 4xx codes are for developer- or user-related errors, and 5xx codes are for Plaid-related errors, and the status will be 2xx in non-error cases. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. /// [JsonPropertyName("error")] public Entity.PlaidError? Error { get; init; } = default!; diff --git a/src/Plaid/Webhook/ProcessorHistoricalUpdateWebhook.cs b/src/Plaid/Webhook/ProcessorHistoricalUpdateWebhook.cs index 91517e27..8b5560ed 100644 --- a/src/Plaid/Webhook/ProcessorHistoricalUpdateWebhook.cs +++ b/src/Plaid/Webhook/ProcessorHistoricalUpdateWebhook.cs @@ -16,7 +16,7 @@ public record ProcessorHistoricalUpdateWebhook : ProcessorWebhookBase public override ProcessorWebhookCode WebhookCode => ProcessorWebhookCode.HistoricalUpdate; /// - /// We use standard HTTP response codes for success and failure notifications, and our errors are further classified by error_type. In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. + /// Errors are identified by error_code and categorized by error_type. Use these in preference to HTTP status codes to identify and handle specific errors. HTTP status codes are set and provide the broadest categorization of errors: 4xx codes are for developer- or user-related errors, and 5xx codes are for Plaid-related errors, and the status will be 2xx in non-error cases. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. /// [JsonPropertyName("error")] public Entity.PlaidError? Error { get; init; } = default!; diff --git a/src/Plaid/Webhook/ProcessorTransactionsRemovedWebhook.cs b/src/Plaid/Webhook/ProcessorTransactionsRemovedWebhook.cs index cad46c5b..475db07b 100644 --- a/src/Plaid/Webhook/ProcessorTransactionsRemovedWebhook.cs +++ b/src/Plaid/Webhook/ProcessorTransactionsRemovedWebhook.cs @@ -16,7 +16,7 @@ public record ProcessorTransactionsRemovedWebhook : ProcessorWebhookBase public override ProcessorWebhookCode WebhookCode => ProcessorWebhookCode.TransactionsRemoved; /// - /// We use standard HTTP response codes for success and failure notifications, and our errors are further classified by error_type. In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. + /// Errors are identified by error_code and categorized by error_type. Use these in preference to HTTP status codes to identify and handle specific errors. HTTP status codes are set and provide the broadest categorization of errors: 4xx codes are for developer- or user-related errors, and 5xx codes are for Plaid-related errors, and the status will be 2xx in non-error cases. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. /// [JsonPropertyName("error")] public Entity.PlaidError? Error { get; init; } = default!; diff --git a/src/Plaid/Webhook/TransactionsRemovedWebhook.cs b/src/Plaid/Webhook/TransactionsRemovedWebhook.cs index b262229e..0eeb1e88 100644 --- a/src/Plaid/Webhook/TransactionsRemovedWebhook.cs +++ b/src/Plaid/Webhook/TransactionsRemovedWebhook.cs @@ -15,7 +15,7 @@ public record TransactionsRemovedWebhook : WebhookBase public override WebhookCode WebhookCode => WebhookCode.TransactionsRemoved; /// - /// We use standard HTTP response codes for success and failure notifications, and our errors are further classified by error_type. In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. + /// Errors are identified by error_code and categorized by error_type. Use these in preference to HTTP status codes to identify and handle specific errors. HTTP status codes are set and provide the broadest categorization of errors: 4xx codes are for developer- or user-related errors, and 5xx codes are for Plaid-related errors, and the status will be 2xx in non-error cases. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. /// [JsonPropertyName("error")] public Entity.PlaidError? Error { get; init; } = default!; diff --git a/src/Plaid/Webhook/UserAccountRevokedWebhook.cs b/src/Plaid/Webhook/UserAccountRevokedWebhook.cs index 69e26f64..0d71ba2d 100644 --- a/src/Plaid/Webhook/UserAccountRevokedWebhook.cs +++ b/src/Plaid/Webhook/UserAccountRevokedWebhook.cs @@ -29,7 +29,7 @@ public record UserAccountRevokedWebhook : WebhookBase public string AccountId { get; init; } = default!; /// - /// We use standard HTTP response codes for success and failure notifications, and our errors are further classified by error_type. In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. + /// Errors are identified by error_code and categorized by error_type. Use these in preference to HTTP status codes to identify and handle specific errors. HTTP status codes are set and provide the broadest categorization of errors: 4xx codes are for developer- or user-related errors, and 5xx codes are for Plaid-related errors, and the status will be 2xx in non-error cases. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. /// [JsonPropertyName("error")] public Entity.PlaidError? Error { get; init; } = default!; diff --git a/src/Plaid/Webhook/UserPermissionRevokedWebhook.cs b/src/Plaid/Webhook/UserPermissionRevokedWebhook.cs index 614baa5e..b378612f 100644 --- a/src/Plaid/Webhook/UserPermissionRevokedWebhook.cs +++ b/src/Plaid/Webhook/UserPermissionRevokedWebhook.cs @@ -21,7 +21,7 @@ public record UserPermissionRevokedWebhook : WebhookBase public string ItemId { get; init; } = default!; /// - /// We use standard HTTP response codes for success and failure notifications, and our errors are further classified by error_type. In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. + /// Errors are identified by error_code and categorized by error_type. Use these in preference to HTTP status codes to identify and handle specific errors. HTTP status codes are set and provide the broadest categorization of errors: 4xx codes are for developer- or user-related errors, and 5xx codes are for Plaid-related errors, and the status will be 2xx in non-error cases. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. /// [JsonPropertyName("error")] public Entity.PlaidError? Error { get; init; } = default!; diff --git a/src/Plaid/Webhook/VerificationExpiredWebhook.cs b/src/Plaid/Webhook/VerificationExpiredWebhook.cs index 573446b7..92dfda08 100644 --- a/src/Plaid/Webhook/VerificationExpiredWebhook.cs +++ b/src/Plaid/Webhook/VerificationExpiredWebhook.cs @@ -26,7 +26,7 @@ public record VerificationExpiredWebhook : WebhookBase public string AccountId { get; init; } = default!; /// - /// We use standard HTTP response codes for success and failure notifications, and our errors are further classified by error_type. In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. + /// Errors are identified by error_code and categorized by error_type. Use these in preference to HTTP status codes to identify and handle specific errors. HTTP status codes are set and provide the broadest categorization of errors: 4xx codes are for developer- or user-related errors, and 5xx codes are for Plaid-related errors, and the status will be 2xx in non-error cases. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. /// [JsonPropertyName("error")] public Entity.PlaidError? Error { get; init; } = default!; diff --git a/src/Plaid/Webhook/WebhookUpdateAcknowledgedWebhook.cs b/src/Plaid/Webhook/WebhookUpdateAcknowledgedWebhook.cs index 9f47ad3b..b28c6696 100644 --- a/src/Plaid/Webhook/WebhookUpdateAcknowledgedWebhook.cs +++ b/src/Plaid/Webhook/WebhookUpdateAcknowledgedWebhook.cs @@ -26,7 +26,7 @@ public record WebhookUpdateAcknowledgedWebhook : WebhookBase public string NewWebhookUrl { get; init; } = default!; /// - /// We use standard HTTP response codes for success and failure notifications, and our errors are further classified by error_type. In general, 200 HTTP codes correspond to success, 40X codes are for developer- or user-related failures, and 50X codes are for Plaid-related issues. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. + /// Errors are identified by error_code and categorized by error_type. Use these in preference to HTTP status codes to identify and handle specific errors. HTTP status codes are set and provide the broadest categorization of errors: 4xx codes are for developer- or user-related errors, and 5xx codes are for Plaid-related errors, and the status will be 2xx in non-error cases. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead. /// [JsonPropertyName("error")] public Entity.PlaidError? Error { get; init; } = default!;