Skip to content

Commit d8726f3

Browse files
Update to Plaid v1.413.0
1 parent 4711f29 commit d8726f3

39 files changed

+592
-22
lines changed

src/Plaid/AssetReport/PlaidClient.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ public sealed partial class PlaidClient
1414

1515
/// <summary>
1616
/// <para>The <c>/asset_report/get</c> endpoint retrieves the Asset Report in JSON format. Before calling <c>/asset_report/get</c>, you must first create the Asset Report using <c>/asset_report/create</c> (or filter an Asset Report using <c>/asset_report/filter</c>) and then wait for the <a href="https://plaid.com/docs/api/products/assets/#product_ready"><c>PRODUCT_READY</c></a> webhook to fire, indicating that the Report is ready to be retrieved.</para>
17-
/// <para>By default, an Asset Report includes transaction descriptions as returned by the bank, as opposed to parsed and categorized by Plaid. You can also receive cleaned and categorized transactions, as well as additional insights like merchant name or location information. We call this an Asset Report with Insights. An Asset Report with Insights provides transaction category, location, and merchant information in addition to the transaction strings provided in a standard Asset Report.</para>
18-
/// <para>If report_type was set to <c>VERIFICATION_OF_EMPLOYMENT</c> when the Asset Report was created in asset_report/create, debit transactions and transaction amounts won’t be included in the report.</para>
19-
/// <para>To retrieve an Asset Report with Insights, call the <c>/asset_report/get</c> endpoint with <c>include_insights</c> set to <c>true</c>.</para>
17+
/// <para>By default, an Asset Report includes transaction descriptions as returned by the bank, as opposed to parsed and categorized by Plaid. You can also receive cleaned and categorized transactions, as well as additional insights like merchant name or location information. We call this an Asset Report with Insights. An Asset Report with Insights provides transaction category, location, and merchant information in addition to the transaction strings provided in a standard Asset Report. To retrieve an Asset Report with Insights, call <c>/asset_report/get</c> endpoint with <c>include_insights</c> set to <c>true</c>.</para>
18+
/// <para>If <c>report_type</c> was set to <c>VERIFICATION_OF_EMPLOYMENT</c> when the Asset Report was created in <c>/asset_report/create</c>, debit transactions and transaction amounts won’t be included in the report.</para>
19+
/// <para> For latency-sensitive applications, you can optionally call <c>/asset_report/create</c> with <c>options.add_ons</c> set to <c>["fast_assets"]</c>. This will cause Plaid to create two versions of the Asset Report: one with only current and available balance and identity information, and then later on the complete Asset Report. You will receive separate webhooks for each version of the Asset Report.</para>
2020
/// </summary>
2121
/// <remarks><see href="https://plaid.com/docs/api/products/assets/#asset_reportget" /></remarks>
2222
public Task<AssetReport.AssetReportGetResponse> AssetReportGetAsync(AssetReport.AssetReportGetRequest request) =>

src/Plaid/Converters/WebhookBaseConverter.Map.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,11 @@ public partial class WebhookBaseConverter : JsonConverter<WebhookBase>
5151
[(WebhookType.Income, WebhookCode.BankIncomeRefreshUpdate)] = typeof(BankIncomeRefreshUpdateWebhook),
5252
[(WebhookType.Income, WebhookCode.BankIncomeRefreshComplete)] = typeof(BankIncomeRefreshCompleteWebhook),
5353
[(WebhookType.Link, WebhookCode.Events)] = typeof(LinkEventsWebhook),
54+
[(WebhookType.Link, WebhookCode.SessionFinished)] = typeof(LinkSessionFinishedWebhook),
5455
[(WebhookType.Assets, WebhookCode.ProductReady)] = typeof(AssetsProductReadyWebhook),
5556
[(WebhookType.Assets, WebhookCode.Error)] = typeof(AssetsErrorWebhook),
5657
[(WebhookType.BaseReport, WebhookCode.ProductReady)] = typeof(BaseReportsProductReadyWebhook),
5758
[(WebhookType.BaseReport, WebhookCode.Error)] = typeof(BaseReportsErrorWebhook),
59+
[(WebhookType.CraIncome, WebhookCode.BankIncomeComplete)] = typeof(BankIncomeCompleteWebhook),
5860
};
5961
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
namespace Going.Plaid.Entity;
2+
3+
/// <summary>
4+
/// <para>The result of the bank income refresh report generation</para>
5+
/// </summary>
6+
public enum BankIncomeCompleteResult
7+
{
8+
/// <summary>
9+
/// <para>The refreshed report was successfully generated and can be retrieved via <c>/cra/bank_income/get</c>.</para>
10+
/// </summary>
11+
[EnumMember(Value = "SUCCESS")]
12+
Success,
13+
14+
/// <summary>
15+
/// <para>The refreshed report failed to be generated</para>
16+
/// </summary>
17+
[EnumMember(Value = "FAILURE")]
18+
Failure,
19+
20+
/// <summary>
21+
/// <para>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.</para>
22+
/// </summary>
23+
[EnumMember(Value = "undefined")]
24+
Undefined,
25+
}

src/Plaid/Entity/BankIncomeRefreshCompleteResult.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ namespace Going.Plaid.Entity;
66
public enum BankIncomeRefreshCompleteResult
77
{
88
/// <summary>
9-
/// <para>The refreshed report was successfully generated and can be retrieved via /credit/bank_income/get</para>
9+
/// <para>The refreshed report was successfully generated and can be retrieved via <c>/credit/bank_income/get</c>.</para>
1010
/// </summary>
1111
[EnumMember(Value = "SUCCESS")]
1212
Success,
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
namespace Going.Plaid.Entity;
2+
3+
/// <summary>
4+
/// <para>ConsumerReportUserIdentity defines the user identity data collected for consumer report purpose. This field is required to be set if you later use the created user for consumer report purpose.</para>
5+
/// </summary>
6+
public class ConsumerReportUserIdentity
7+
{
8+
/// <summary>
9+
/// <para>The user's first name</para>
10+
/// </summary>
11+
[JsonPropertyName("first_name")]
12+
public string FirstName { get; set; } = default!;
13+
14+
/// <summary>
15+
/// <para>The user's last name</para>
16+
/// </summary>
17+
[JsonPropertyName("last_name")]
18+
public string LastName { get; set; } = default!;
19+
20+
/// <summary>
21+
/// <para>The user's phone numbers</para>
22+
/// </summary>
23+
[JsonPropertyName("phone_numbers")]
24+
public IReadOnlyList<string> PhoneNumbers { get; set; } = default!;
25+
26+
/// <summary>
27+
/// <para>The user's emails</para>
28+
/// </summary>
29+
[JsonPropertyName("emails")]
30+
public IReadOnlyList<string> Emails { get; set; } = default!;
31+
32+
/// <summary>
33+
/// <para>Data about the components comprising an address.</para>
34+
/// </summary>
35+
[JsonPropertyName("primary_address")]
36+
public Entity.AddressData PrimaryAddress { get; set; } = default!;
37+
}

src/Plaid/Entity/CraBankIncomeSource.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,8 @@ public record CraBankIncomeSource
9090
/// <summary>
9191
/// <para>The predicted average monthly net income amount for the income source(s).</para>
9292
/// </summary>
93-
[JsonPropertyName("forcasted_average_monthly_income")]
94-
public decimal? ForcastedAverageMonthlyIncome { get; init; } = default!;
93+
[JsonPropertyName("forecasted_average_monthly_income")]
94+
public decimal? ForecastedAverageMonthlyIncome { get; init; } = default!;
9595

9696
/// <summary>
9797
/// <para>The object containing employer data.</para>

src/Plaid/Entity/CraBankIncomeSummary.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@ public record CraBankIncomeSummary
5959
/// <summary>
6060
/// <para>The predicted average monthly income amount for the income source(s).</para>
6161
/// </summary>
62-
[JsonPropertyName("forcasted_average_monthly_income")]
63-
public IReadOnlyList<Entity.CreditAmountWithCurrency>? ForcastedAverageMonthlyIncome { get; init; } = default!;
62+
[JsonPropertyName("forecasted_average_monthly_income")]
63+
public IReadOnlyList<Entity.CreditAmountWithCurrency>? ForecastedAverageMonthlyIncome { get; init; } = default!;
6464

6565
/// <summary>
6666
///

src/Plaid/Entity/EntityWatchlistCode.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public enum EntityWatchlistCode
3030
IzUnc,
3131

3232
/// <summary>
33-
///
33+
/// <para>World Bank Listing of Ineligible Firms and Individuals</para>
3434
/// </summary>
3535
[EnumMember(Value = "IZ_WBK")]
3636
IzWbk,
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
namespace Going.Plaid.Entity;
2+
3+
/// <summary>
4+
///
5+
/// </summary>
6+
public enum HostedLinkDeliveryMethod
7+
{
8+
/// <summary>
9+
///
10+
/// </summary>
11+
[EnumMember(Value = "sms")]
12+
Sms,
13+
14+
/// <summary>
15+
///
16+
/// </summary>
17+
[EnumMember(Value = "email")]
18+
Email,
19+
20+
/// <summary>
21+
/// <para>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.</para>
22+
/// </summary>
23+
[EnumMember(Value = "undefined")]
24+
Undefined,
25+
}

src/Plaid/Entity/LinkSessionExit.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
namespace Going.Plaid.Entity;
2+
3+
/// <summary>
4+
/// <para>An object representing an <a href="https://plaid.com/docs/link/web/#onexit">onExit</a> callback from Link.</para>
5+
/// </summary>
6+
public record LinkSessionExit
7+
{
8+
/// <summary>
9+
/// <para>We use standard HTTP response codes for success and failure notifications, and our errors are further classified by <c>error_type</c>. 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-<c>null</c> error object will only be part of an API response when calling <c>/item/get</c> to view Item status. Otherwise, error fields will be <c>null</c> if no error has occurred; if an error has occurred, an error code will be returned instead.</para>
10+
/// </summary>
11+
[JsonPropertyName("error")]
12+
public Entity.PlaidError? Error { get; init; } = default!;
13+
14+
/// <summary>
15+
/// <para>Displayed if a user exits Link without successfully linking an Item.</para>
16+
/// </summary>
17+
[JsonPropertyName("metadata")]
18+
public Entity.LinkSessionExitMetadata? Metadata { get; init; } = default!;
19+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
namespace Going.Plaid.Entity;
2+
3+
/// <summary>
4+
/// <para>Displayed if a user exits Link without successfully linking an Item.</para>
5+
/// </summary>
6+
public record LinkSessionExitMetadata
7+
{
8+
/// <summary>
9+
/// <para>An institution object. If the Item was created via Same-Day micro-deposit verification, will be <c>null</c>.</para>
10+
/// </summary>
11+
[JsonPropertyName("institution")]
12+
public Entity.LinkSessionExitMetadataInstitution? Institution { get; init; } = default!;
13+
14+
/// <summary>
15+
/// <para>The point at which the user exited the Link flow. One of the following values.</para>
16+
/// </summary>
17+
[JsonPropertyName("status")]
18+
public string? Status { get; init; } = default!;
19+
20+
/// <summary>
21+
/// <para>A unique identifier associated with a user's actions and events through the Link flow. Include this identifier when opening a support ticket for faster turnaround.</para>
22+
/// </summary>
23+
[JsonPropertyName("link_session_id")]
24+
public string? LinkSessionId { get; init; } = default!;
25+
26+
/// <summary>
27+
/// <para>The request ID for the last request made by Link. This can be shared with Plaid Support to expedite investigation.</para>
28+
/// </summary>
29+
[JsonPropertyName("request_id")]
30+
public string? RequestId { get; init; } = default!;
31+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
namespace Going.Plaid.Entity;
2+
3+
/// <summary>
4+
/// <para>An institution object. If the Item was created via Same-Day micro-deposit verification, will be <c>null</c>.</para>
5+
/// </summary>
6+
public record LinkSessionExitMetadataInstitution
7+
{
8+
/// <summary>
9+
/// <para>The full institution name, such as <c>Wells Fargo</c></para>
10+
/// </summary>
11+
[JsonPropertyName("name")]
12+
public string? Name { get; init; } = default!;
13+
14+
/// <summary>
15+
/// <para>The Plaid institution identifier</para>
16+
/// </summary>
17+
[JsonPropertyName("institution_id")]
18+
public string? InstitutionId { get; init; } = default!;
19+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
namespace Going.Plaid.Entity;
2+
3+
/// <summary>
4+
/// <para>An object representing an <a href="https://plaid.com/docs/link/web/#onsuccess">onSuccess</a> callback from Link.</para>
5+
/// </summary>
6+
public record LinkSessionSuccess
7+
{
8+
/// <summary>
9+
/// <para>Displayed once a user has successfully linked their Item.</para>
10+
/// </summary>
11+
[JsonPropertyName("public_token")]
12+
public string PublicToken { get; init; } = default!;
13+
14+
/// <summary>
15+
/// <para>Displayed once a user has successfully linked their Item.</para>
16+
/// </summary>
17+
[JsonPropertyName("metadata")]
18+
public Entity.LinkSessionSuccessMetadata? Metadata { get; init; } = default!;
19+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
namespace Going.Plaid.Entity;
2+
3+
/// <summary>
4+
/// <para>Displayed once a user has successfully linked their Item.</para>
5+
/// </summary>
6+
public record LinkSessionSuccessMetadata
7+
{
8+
/// <summary>
9+
/// <para>An institution object. If the Item was created via Same-Day micro-deposit verification, will be <c>null</c>.</para>
10+
/// </summary>
11+
[JsonPropertyName("institution")]
12+
public Entity.LinkSessionSuccessMetadataInstitution? Institution { get; init; } = default!;
13+
14+
/// <summary>
15+
/// <para>A list of accounts attached to the connected Item. If Account Select is enabled via the developer dashboard, <c>accounts</c> will only include selected accounts.</para>
16+
/// </summary>
17+
[JsonPropertyName("accounts")]
18+
public IReadOnlyList<Entity.LinkSessionSuccessMetadataAccount>? Accounts { get; init; } = default!;
19+
20+
/// <summary>
21+
/// <para>A unique identifier associated with a user's actions and events through the Link flow. Include this identifier when opening a support ticket for faster turnaround.</para>
22+
/// </summary>
23+
[JsonPropertyName("link_session_id")]
24+
public string? LinkSessionId { get; init; } = default!;
25+
26+
/// <summary>
27+
///
28+
/// </summary>
29+
[JsonPropertyName("transfer_status")]
30+
public Entity.LinkSessionSuccessMetadataTransferStatus? TransferStatus { get; init; } = default!;
31+
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
namespace Going.Plaid.Entity;
2+
3+
/// <summary>
4+
/// <para>An account attached to the connected Item.</para>
5+
/// </summary>
6+
public record LinkSessionSuccessMetadataAccount
7+
{
8+
/// <summary>
9+
/// <para>The Plaid <c>account_id</c></para>
10+
/// </summary>
11+
[JsonPropertyName("id")]
12+
public string? Id { get; init; } = default!;
13+
14+
/// <summary>
15+
/// <para>The official account name</para>
16+
/// </summary>
17+
[JsonPropertyName("name")]
18+
public string? Name { get; init; } = default!;
19+
20+
/// <summary>
21+
/// <para>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. It may also not match the mask that the bank displays to the user.</para>
22+
/// </summary>
23+
[JsonPropertyName("mask")]
24+
public string? Mask { get; init; } = default!;
25+
26+
/// <summary>
27+
/// <para>The account type. See the <a href="https://plaid.com/docs/api/accounts#account-type-schema">Account schema</a> for a full list of possible values</para>
28+
/// </summary>
29+
[JsonPropertyName("type")]
30+
public string? Type { get; init; } = default!;
31+
32+
/// <summary>
33+
/// <para>The account subtype. See the <a href="https://plaid.com/docs/api/accounts#account-type-schema">Account schema</a> for a full list of possible values</para>
34+
/// </summary>
35+
[JsonPropertyName("subtype")]
36+
public string? Subtype { get; init; } = default!;
37+
38+
/// <summary>
39+
/// <para>Indicates an Item's micro-deposit-based verification status. Possible values are:</para>
40+
/// <para><c>pending_automatic_verification</c>: The Item is pending automatic verification</para>
41+
/// <para><c>pending_manual_verification</c>: The Item is pending manual micro-deposit verification. Items remain in this state until the user successfully verifies the two amounts.</para>
42+
/// <para><c>automatically_verified</c>: The Item has successfully been automatically verified</para>
43+
/// <para><c>manually_verified</c>: The Item has successfully been manually verified</para>
44+
/// <para><c>verification_expired</c>: 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.</para>
45+
/// <para><c>verification_failed</c>: 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.</para>
46+
/// <para><c>null</c>: micro-deposit-based verification is not being used for the Item.</para>
47+
/// </summary>
48+
[JsonPropertyName("verification_status")]
49+
public string? VerificationStatus { get; init; } = default!;
50+
51+
/// <summary>
52+
/// <para>If micro-deposit verification is being used, indicates whether the account being verified is a <c>business</c> or <c>personal</c> account.</para>
53+
/// </summary>
54+
[JsonPropertyName("class_type")]
55+
public string? ClassType { get; init; } = default!;
56+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
namespace Going.Plaid.Entity;
2+
3+
/// <summary>
4+
/// <para>An institution object. If the Item was created via Same-Day micro-deposit verification, will be <c>null</c>.</para>
5+
/// </summary>
6+
public record LinkSessionSuccessMetadataInstitution
7+
{
8+
/// <summary>
9+
/// <para>The full institution name, such as <c>'Wells Fargo'</c></para>
10+
/// </summary>
11+
[JsonPropertyName("name")]
12+
public string? Name { get; init; } = default!;
13+
14+
/// <summary>
15+
/// <para>The Plaid institution identifier</para>
16+
/// </summary>
17+
[JsonPropertyName("institution_id")]
18+
public string? InstitutionId { get; init; } = default!;
19+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
namespace Going.Plaid.Entity;
2+
3+
/// <summary>
4+
///
5+
/// </summary>
6+
public enum LinkSessionSuccessMetadataTransferStatus
7+
{
8+
/// <summary>
9+
///
10+
/// </summary>
11+
[EnumMember(Value = "COMPLETE")]
12+
Complete,
13+
14+
/// <summary>
15+
///
16+
/// </summary>
17+
[EnumMember(Value = "INCOMPLETE")]
18+
Incomplete,
19+
20+
/// <summary>
21+
/// <para>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.</para>
22+
/// </summary>
23+
[EnumMember(Value = "undefined")]
24+
Undefined,
25+
}

0 commit comments

Comments
 (0)