diff --git a/src/Stripe.net/Entities/EphemeralKeys/EphemeralkeyAssociatedObject.cs b/src/Stripe.net/Entities/EphemeralKeys/EphemeralkeyAssociatedObject.cs index fde8e16313..665a14d5e7 100644 --- a/src/Stripe.net/Entities/EphemeralKeys/EphemeralkeyAssociatedObject.cs +++ b/src/Stripe.net/Entities/EphemeralKeys/EphemeralkeyAssociatedObject.cs @@ -2,7 +2,7 @@ namespace Stripe { using Newtonsoft.Json; - public class EphemeralKeyAssociatedObject : StripeEntity + public class EphemeralKeyAssociatedObject : StripeEntity, IHasId { [JsonProperty("id")] public string Id { get; set; } diff --git a/src/Stripe.net/Entities/Events/EventRequest.cs b/src/Stripe.net/Entities/Events/EventRequest.cs index 1f94724e25..a0460a3250 100644 --- a/src/Stripe.net/Entities/Events/EventRequest.cs +++ b/src/Stripe.net/Entities/Events/EventRequest.cs @@ -2,7 +2,7 @@ namespace Stripe { using Newtonsoft.Json; - public class EventRequest : StripeEntity + public class EventRequest : StripeEntity, IHasId { /// /// ID of the API request that caused the event. If null, the event was automatic (e.g., diff --git a/src/Stripe.net/Entities/Orders/ShippingMethod.cs b/src/Stripe.net/Entities/Orders/ShippingMethod.cs index 400f601f62..fed1913c4a 100644 --- a/src/Stripe.net/Entities/Orders/ShippingMethod.cs +++ b/src/Stripe.net/Entities/Orders/ShippingMethod.cs @@ -2,7 +2,7 @@ namespace Stripe { using Newtonsoft.Json; - public class ShippingMethod : StripeEntity + public class ShippingMethod : StripeEntity, IHasId { [JsonProperty("id")] public string Id { get; set; } diff --git a/src/Stripe.net/Entities/Persons/Person.cs b/src/Stripe.net/Entities/Persons/Person.cs index d1f2bea1e3..16a970795c 100644 --- a/src/Stripe.net/Entities/Persons/Person.cs +++ b/src/Stripe.net/Entities/Persons/Person.cs @@ -5,7 +5,7 @@ namespace Stripe using Newtonsoft.Json; using Stripe.Infrastructure; - public class Person : StripeEntity, IHasId, IHasObject + public class Person : StripeEntity, IHasId, IHasObject, IHasMetadata { /// /// Unique identifier for the object. diff --git a/src/Stripe.net/Services/Account/AccountCardOptions.cs b/src/Stripe.net/Services/Account/AccountCardOptions.cs index 9be91ffaf4..09e20b874b 100644 --- a/src/Stripe.net/Services/Account/AccountCardOptions.cs +++ b/src/Stripe.net/Services/Account/AccountCardOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class AccountCardOptions : INestedOptions + public class AccountCardOptions : INestedOptions, IHasMetadata { [JsonProperty("object")] internal string Object => "card"; diff --git a/src/Stripe.net/Services/Account/AccountSharedOptions.cs b/src/Stripe.net/Services/Account/AccountSharedOptions.cs index 77f1c120de..1fbf8a5851 100644 --- a/src/Stripe.net/Services/Account/AccountSharedOptions.cs +++ b/src/Stripe.net/Services/Account/AccountSharedOptions.cs @@ -4,7 +4,7 @@ namespace Stripe using Newtonsoft.Json; using Stripe.Infrastructure; - public abstract class AccountSharedOptions : BaseOptions + public abstract class AccountSharedOptions : BaseOptions, IHasMetadata { [JsonProperty("account_token")] public string AccountToken { get; set; } diff --git a/src/Stripe.net/Services/ApplicationFeeRefunds/ApplicationFeeRefundCreateOptions.cs b/src/Stripe.net/Services/ApplicationFeeRefunds/ApplicationFeeRefundCreateOptions.cs index cea947c255..6f7d81746f 100644 --- a/src/Stripe.net/Services/ApplicationFeeRefunds/ApplicationFeeRefundCreateOptions.cs +++ b/src/Stripe.net/Services/ApplicationFeeRefunds/ApplicationFeeRefundCreateOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class ApplicationFeeRefundCreateOptions : BaseOptions + public class ApplicationFeeRefundCreateOptions : BaseOptions, IHasMetadata { [JsonProperty("amount")] public long? Amount { get; set; } diff --git a/src/Stripe.net/Services/ApplicationFeeRefunds/ApplicationFeeRefundUpdateOptions.cs b/src/Stripe.net/Services/ApplicationFeeRefunds/ApplicationFeeRefundUpdateOptions.cs index 3f4b1e0dba..da212fed93 100644 --- a/src/Stripe.net/Services/ApplicationFeeRefunds/ApplicationFeeRefundUpdateOptions.cs +++ b/src/Stripe.net/Services/ApplicationFeeRefunds/ApplicationFeeRefundUpdateOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class ApplicationFeeRefundUpdateOptions : BaseOptions + public class ApplicationFeeRefundUpdateOptions : BaseOptions, IHasMetadata { [JsonProperty("metadata")] public Dictionary Metadata { get; set; } diff --git a/src/Stripe.net/Services/BankAccounts/BankAccountUpdateOptions.cs b/src/Stripe.net/Services/BankAccounts/BankAccountUpdateOptions.cs index dd64dd986b..80b48aaf3b 100644 --- a/src/Stripe.net/Services/BankAccounts/BankAccountUpdateOptions.cs +++ b/src/Stripe.net/Services/BankAccounts/BankAccountUpdateOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class BankAccountUpdateOptions : BaseOptions + public class BankAccountUpdateOptions : BaseOptions, IHasMetadata { [JsonProperty("account_holder_name")] public string AccountHolderName { get; set; } diff --git a/src/Stripe.net/Services/Cards/CardCreateOptions.cs b/src/Stripe.net/Services/Cards/CardCreateOptions.cs index 712cbb6801..2aa0d84be7 100644 --- a/src/Stripe.net/Services/Cards/CardCreateOptions.cs +++ b/src/Stripe.net/Services/Cards/CardCreateOptions.cs @@ -4,7 +4,7 @@ namespace Stripe using Newtonsoft.Json; using Stripe.Infrastructure; - public class CardCreateOptions : BaseOptions + public class CardCreateOptions : BaseOptions, IHasMetadata { [JsonProperty("default_for_currency")] public bool? DefaultForCurrency { get; set; } diff --git a/src/Stripe.net/Services/Cards/CardUpdateOptions.cs b/src/Stripe.net/Services/Cards/CardUpdateOptions.cs index efc9142799..c19498c380 100644 --- a/src/Stripe.net/Services/Cards/CardUpdateOptions.cs +++ b/src/Stripe.net/Services/Cards/CardUpdateOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class CardUpdateOptions : BaseOptions + public class CardUpdateOptions : BaseOptions, IHasMetadata { [JsonProperty("address_city")] public string AddressCity { get; set; } diff --git a/src/Stripe.net/Services/Charges/ChargeCreateOptions.cs b/src/Stripe.net/Services/Charges/ChargeCreateOptions.cs index 750fc6e9a4..5301558d61 100644 --- a/src/Stripe.net/Services/Charges/ChargeCreateOptions.cs +++ b/src/Stripe.net/Services/Charges/ChargeCreateOptions.cs @@ -5,7 +5,7 @@ namespace Stripe using Newtonsoft.Json; using Stripe.Infrastructure; - public class ChargeCreateOptions : BaseOptions + public class ChargeCreateOptions : BaseOptions, IHasMetadata { /// /// A positive integer in the smallest currency unit (e.g., 100 cents to charge $1.00 or 100 to charge ¥100, a 0-decimal currency) representing how much to charge the card. The minimum amount is $0.50 US or equivalent in charge currency. diff --git a/src/Stripe.net/Services/Charges/ChargeSourceListOptions.cs b/src/Stripe.net/Services/Charges/ChargeSourceListOptions.cs index 6cc5584920..ab7f0d0f13 100644 --- a/src/Stripe.net/Services/Charges/ChargeSourceListOptions.cs +++ b/src/Stripe.net/Services/Charges/ChargeSourceListOptions.cs @@ -2,7 +2,7 @@ namespace Stripe { using Newtonsoft.Json; - public class ChargeSourceListOptions : INestedOptions + public class ChargeSourceListOptions : INestedOptions, IHasObject { [JsonProperty("object")] public string Object { get; set; } diff --git a/src/Stripe.net/Services/Charges/ChargeUpdateOptions.cs b/src/Stripe.net/Services/Charges/ChargeUpdateOptions.cs index ac498685a9..62c2e143ec 100644 --- a/src/Stripe.net/Services/Charges/ChargeUpdateOptions.cs +++ b/src/Stripe.net/Services/Charges/ChargeUpdateOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class ChargeUpdateOptions : BaseOptions + public class ChargeUpdateOptions : BaseOptions, IHasMetadata { [JsonProperty("description")] public string Description { get; set; } diff --git a/src/Stripe.net/Services/Checkout/SessionPaymentIntentDataOptions.cs b/src/Stripe.net/Services/Checkout/SessionPaymentIntentDataOptions.cs index e7d6bc511c..42aa1203fe 100644 --- a/src/Stripe.net/Services/Checkout/SessionPaymentIntentDataOptions.cs +++ b/src/Stripe.net/Services/Checkout/SessionPaymentIntentDataOptions.cs @@ -3,7 +3,7 @@ namespace Stripe.Checkout using System.Collections.Generic; using Newtonsoft.Json; - public class SessionPaymentIntentDataOptions : INestedOptions + public class SessionPaymentIntentDataOptions : INestedOptions, IHasMetadata { /// /// The amount of the application fee (if any) that will be applied to the payment and diff --git a/src/Stripe.net/Services/Checkout/SessionSubscriptionDataOptions.cs b/src/Stripe.net/Services/Checkout/SessionSubscriptionDataOptions.cs index 68414f5718..33b58f461f 100644 --- a/src/Stripe.net/Services/Checkout/SessionSubscriptionDataOptions.cs +++ b/src/Stripe.net/Services/Checkout/SessionSubscriptionDataOptions.cs @@ -5,7 +5,7 @@ namespace Stripe.Checkout using Newtonsoft.Json; using Stripe.Infrastructure; - public class SessionSubscriptionDataOptions : INestedOptions + public class SessionSubscriptionDataOptions : INestedOptions, IHasMetadata { /// /// A non-negative decimal between 0 and 100, with at most two decimal places. This diff --git a/src/Stripe.net/Services/Coupons/CouponCreateOptions.cs b/src/Stripe.net/Services/Coupons/CouponCreateOptions.cs index fdc8571595..ff23393157 100644 --- a/src/Stripe.net/Services/Coupons/CouponCreateOptions.cs +++ b/src/Stripe.net/Services/Coupons/CouponCreateOptions.cs @@ -5,7 +5,7 @@ namespace Stripe using Newtonsoft.Json; using Stripe.Infrastructure; - public class CouponCreateOptions : BaseOptions + public class CouponCreateOptions : BaseOptions, IHasId, IHasMetadata { [JsonProperty("id")] public string Id { get; set; } diff --git a/src/Stripe.net/Services/Coupons/CouponUpdateOptions.cs b/src/Stripe.net/Services/Coupons/CouponUpdateOptions.cs index a60c6240e9..0b04953f69 100644 --- a/src/Stripe.net/Services/Coupons/CouponUpdateOptions.cs +++ b/src/Stripe.net/Services/Coupons/CouponUpdateOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class CouponUpdateOptions : BaseOptions + public class CouponUpdateOptions : BaseOptions, IHasMetadata { [JsonProperty("metadata")] public Dictionary Metadata { get; set; } diff --git a/src/Stripe.net/Services/CreditNotes/CreditNoteCreateOptions.cs b/src/Stripe.net/Services/CreditNotes/CreditNoteCreateOptions.cs index ef169ae476..01c3aaab57 100644 --- a/src/Stripe.net/Services/CreditNotes/CreditNoteCreateOptions.cs +++ b/src/Stripe.net/Services/CreditNotes/CreditNoteCreateOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class CreditNoteCreateOptions : BaseOptions + public class CreditNoteCreateOptions : BaseOptions, IHasMetadata { /// /// Credit note amount. diff --git a/src/Stripe.net/Services/CreditNotes/CreditNoteUpdateOptions.cs b/src/Stripe.net/Services/CreditNotes/CreditNoteUpdateOptions.cs index 64357d1a85..4b42b11d38 100644 --- a/src/Stripe.net/Services/CreditNotes/CreditNoteUpdateOptions.cs +++ b/src/Stripe.net/Services/CreditNotes/CreditNoteUpdateOptions.cs @@ -5,7 +5,7 @@ namespace Stripe using Newtonsoft.Json; using Stripe.Infrastructure; - public class CreditNoteUpdateOptions : BaseOptions + public class CreditNoteUpdateOptions : BaseOptions, IHasMetadata { /// /// Credit note memo. diff --git a/src/Stripe.net/Services/CustomerBalanceTransactions/CustomerBalanceTransactionCreateOptions.cs b/src/Stripe.net/Services/CustomerBalanceTransactions/CustomerBalanceTransactionCreateOptions.cs index f3934e26d0..bd34dfb925 100644 --- a/src/Stripe.net/Services/CustomerBalanceTransactions/CustomerBalanceTransactionCreateOptions.cs +++ b/src/Stripe.net/Services/CustomerBalanceTransactions/CustomerBalanceTransactionCreateOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class CustomerBalanceTransactionCreateOptions : BaseOptions + public class CustomerBalanceTransactionCreateOptions : BaseOptions, IHasMetadata { /// /// The amount to apply to the customer’s balance. Pass a negative amount to credit the diff --git a/src/Stripe.net/Services/CustomerBalanceTransactions/CustomerBalanceTransactionUpdateOptions.cs b/src/Stripe.net/Services/CustomerBalanceTransactions/CustomerBalanceTransactionUpdateOptions.cs index bf1bf2e0ed..dc99b3120f 100644 --- a/src/Stripe.net/Services/CustomerBalanceTransactions/CustomerBalanceTransactionUpdateOptions.cs +++ b/src/Stripe.net/Services/CustomerBalanceTransactions/CustomerBalanceTransactionUpdateOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class CustomerBalanceTransactionUpdateOptions : BaseOptions + public class CustomerBalanceTransactionUpdateOptions : BaseOptions, IHasMetadata { /// /// An arbitrary string attached to the object. Often useful for displaying to users. diff --git a/src/Stripe.net/Services/Customers/CustomerCreateOptions.cs b/src/Stripe.net/Services/Customers/CustomerCreateOptions.cs index 565161395a..dab5a1eca7 100644 --- a/src/Stripe.net/Services/Customers/CustomerCreateOptions.cs +++ b/src/Stripe.net/Services/Customers/CustomerCreateOptions.cs @@ -5,7 +5,7 @@ namespace Stripe using Newtonsoft.Json; using Stripe.Infrastructure; - public class CustomerCreateOptions : BaseOptions + public class CustomerCreateOptions : BaseOptions, IHasMetadata { [Obsolete("Use Balance")] [JsonProperty("account_balance")] diff --git a/src/Stripe.net/Services/Customers/CustomerUpdateOptions.cs b/src/Stripe.net/Services/Customers/CustomerUpdateOptions.cs index e19bbf9c4b..b83876fe91 100644 --- a/src/Stripe.net/Services/Customers/CustomerUpdateOptions.cs +++ b/src/Stripe.net/Services/Customers/CustomerUpdateOptions.cs @@ -5,7 +5,7 @@ namespace Stripe using Newtonsoft.Json; using Stripe.Infrastructure; - public class CustomerUpdateOptions : BaseOptions + public class CustomerUpdateOptions : BaseOptions, IHasMetadata { [Obsolete("Use Balance")] [JsonProperty("account_balance")] diff --git a/src/Stripe.net/Services/Disputes/DisputeEvidenceOptions.cs b/src/Stripe.net/Services/Disputes/DisputeEvidenceOptions.cs index eabd38e630..f73af82fe6 100644 --- a/src/Stripe.net/Services/Disputes/DisputeEvidenceOptions.cs +++ b/src/Stripe.net/Services/Disputes/DisputeEvidenceOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class DisputeEvidenceOptions : INestedOptions + public class DisputeEvidenceOptions : INestedOptions, IHasMetadata { [JsonProperty("access_activity_log")] public string AccessActivityLog { get; set; } @@ -44,6 +44,9 @@ public class DisputeEvidenceOptions : INestedOptions [JsonProperty("duplicate_charge_id")] public string DuplicateChargeFileId { get; set; } + [JsonProperty("metadata")] + public Dictionary Metadata { get; set; } + [JsonProperty("product_description")] public string ProductDescription { get; set; } @@ -85,8 +88,5 @@ public class DisputeEvidenceOptions : INestedOptions [JsonProperty("uncategorized_text")] public string UncategorizedText { get; set; } - - [JsonProperty("metadata")] - public Dictionary Metadata { get; set; } } } diff --git a/src/Stripe.net/Services/Disputes/DisputeUpdateOptions.cs b/src/Stripe.net/Services/Disputes/DisputeUpdateOptions.cs index 63f913e4c9..5cd3146b96 100644 --- a/src/Stripe.net/Services/Disputes/DisputeUpdateOptions.cs +++ b/src/Stripe.net/Services/Disputes/DisputeUpdateOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class DisputeUpdateOptions : BaseOptions + public class DisputeUpdateOptions : BaseOptions, IHasMetadata { /// /// Evidence to upload, to respond to a dispute. Updating any field in the hash will submit diff --git a/src/Stripe.net/Services/ExternalAccounts/ExternalAccountCardUpdateOptions.cs b/src/Stripe.net/Services/ExternalAccounts/ExternalAccountCardUpdateOptions.cs index db32eacc0f..a5bcc6cea2 100644 --- a/src/Stripe.net/Services/ExternalAccounts/ExternalAccountCardUpdateOptions.cs +++ b/src/Stripe.net/Services/ExternalAccounts/ExternalAccountCardUpdateOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class ExternalAccountCardUpdateOptions : INestedOptions + public class ExternalAccountCardUpdateOptions : INestedOptions, IHasMetadata { [JsonProperty("default_for_currency")] public bool? DefaultForCurrency { get; set; } diff --git a/src/Stripe.net/Services/ExternalAccounts/ExternalAccountCreateOptions.cs b/src/Stripe.net/Services/ExternalAccounts/ExternalAccountCreateOptions.cs index 34d8d0e6a8..572fede5b1 100644 --- a/src/Stripe.net/Services/ExternalAccounts/ExternalAccountCreateOptions.cs +++ b/src/Stripe.net/Services/ExternalAccounts/ExternalAccountCreateOptions.cs @@ -4,7 +4,7 @@ namespace Stripe using Newtonsoft.Json; using Stripe.Infrastructure; - public class ExternalAccountCreateOptions : BaseOptions + public class ExternalAccountCreateOptions : BaseOptions, IHasMetadata { /// /// REQUIRED. Either a token, like the ones returned by diff --git a/src/Stripe.net/Services/ExternalAccounts/ExternalAccountUpdateOptions.cs b/src/Stripe.net/Services/ExternalAccounts/ExternalAccountUpdateOptions.cs index e50815db7c..3a053ee60f 100644 --- a/src/Stripe.net/Services/ExternalAccounts/ExternalAccountUpdateOptions.cs +++ b/src/Stripe.net/Services/ExternalAccounts/ExternalAccountUpdateOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class ExternalAccountUpdateOptions : BaseOptions + public class ExternalAccountUpdateOptions : BaseOptions, IHasMetadata { [JsonProperty("metadata")] public Dictionary Metadata { get; set; } diff --git a/src/Stripe.net/Services/FileLinks/FileLinkSharedOptions.cs b/src/Stripe.net/Services/FileLinks/FileLinkSharedOptions.cs index 7da79496e2..775f13970d 100644 --- a/src/Stripe.net/Services/FileLinks/FileLinkSharedOptions.cs +++ b/src/Stripe.net/Services/FileLinks/FileLinkSharedOptions.cs @@ -5,7 +5,7 @@ namespace Stripe using Newtonsoft.Json; using Stripe.Infrastructure; - public class FileLinkSharedOptions : BaseOptions + public class FileLinkSharedOptions : BaseOptions, IHasMetadata { /// /// A future timestamp after which the link will no longer be usable. diff --git a/src/Stripe.net/Services/Files/FileLinkDataOptions.cs b/src/Stripe.net/Services/Files/FileLinkDataOptions.cs index 680ec90205..a392950cb6 100644 --- a/src/Stripe.net/Services/Files/FileLinkDataOptions.cs +++ b/src/Stripe.net/Services/Files/FileLinkDataOptions.cs @@ -4,7 +4,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class FileLinkDataOptions : BaseOptions + public class FileLinkDataOptions : BaseOptions, IHasMetadata { /// /// Set this to true to create a file link for the newly created file. Creating a diff --git a/src/Stripe.net/Services/InvoiceItems/InvoiceItemCreateOptions.cs b/src/Stripe.net/Services/InvoiceItems/InvoiceItemCreateOptions.cs index 0fbf82a38e..67263570b9 100644 --- a/src/Stripe.net/Services/InvoiceItems/InvoiceItemCreateOptions.cs +++ b/src/Stripe.net/Services/InvoiceItems/InvoiceItemCreateOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class InvoiceItemCreateOptions : BaseOptions + public class InvoiceItemCreateOptions : BaseOptions, IHasMetadata { [JsonProperty("amount")] public long? Amount { get; set; } diff --git a/src/Stripe.net/Services/InvoiceItems/InvoiceItemUpdateOptions.cs b/src/Stripe.net/Services/InvoiceItems/InvoiceItemUpdateOptions.cs index 1cab22de42..bc45c01502 100644 --- a/src/Stripe.net/Services/InvoiceItems/InvoiceItemUpdateOptions.cs +++ b/src/Stripe.net/Services/InvoiceItems/InvoiceItemUpdateOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class InvoiceItemUpdateOptions : BaseOptions + public class InvoiceItemUpdateOptions : BaseOptions, IHasMetadata { [JsonProperty("amount")] public long? Amount { get; set; } diff --git a/src/Stripe.net/Services/Invoices/InvoiceCreateOptions.cs b/src/Stripe.net/Services/Invoices/InvoiceCreateOptions.cs index d32a2ae7be..c0748f6ef6 100644 --- a/src/Stripe.net/Services/Invoices/InvoiceCreateOptions.cs +++ b/src/Stripe.net/Services/Invoices/InvoiceCreateOptions.cs @@ -5,7 +5,7 @@ namespace Stripe using Newtonsoft.Json; using Stripe.Infrastructure; - public class InvoiceCreateOptions : BaseOptions + public class InvoiceCreateOptions : BaseOptions, IHasMetadata { /// /// A fee in cents that will be applied to the invoice and transferred to the application diff --git a/src/Stripe.net/Services/Invoices/InvoiceSubscriptionItemOptions.cs b/src/Stripe.net/Services/Invoices/InvoiceSubscriptionItemOptions.cs index e20112c778..470385d29f 100644 --- a/src/Stripe.net/Services/Invoices/InvoiceSubscriptionItemOptions.cs +++ b/src/Stripe.net/Services/Invoices/InvoiceSubscriptionItemOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class InvoiceSubscriptionItemOptions : BaseOptions + public class InvoiceSubscriptionItemOptions : BaseOptions, IHasId { [JsonProperty("id")] public string Id { get; set; } diff --git a/src/Stripe.net/Services/Invoices/InvoiceUpcomingInvoiceItemOption.cs b/src/Stripe.net/Services/Invoices/InvoiceUpcomingInvoiceItemOption.cs index cc047a76d2..86bb45a496 100644 --- a/src/Stripe.net/Services/Invoices/InvoiceUpcomingInvoiceItemOption.cs +++ b/src/Stripe.net/Services/Invoices/InvoiceUpcomingInvoiceItemOption.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class InvoiceUpcomingInvoiceItemOption : INestedOptions + public class InvoiceUpcomingInvoiceItemOption : INestedOptions, IHasMetadata { [JsonProperty("amount")] public long? Amount { get; set; } diff --git a/src/Stripe.net/Services/Invoices/InvoiceUpdateOptions.cs b/src/Stripe.net/Services/Invoices/InvoiceUpdateOptions.cs index da932d5530..a32ce61703 100644 --- a/src/Stripe.net/Services/Invoices/InvoiceUpdateOptions.cs +++ b/src/Stripe.net/Services/Invoices/InvoiceUpdateOptions.cs @@ -5,7 +5,7 @@ namespace Stripe using Newtonsoft.Json; using Stripe.Infrastructure; - public class InvoiceUpdateOptions : BaseOptions + public class InvoiceUpdateOptions : BaseOptions, IHasMetadata { /// /// A fee in cents that will be applied to the invoice and transferred to the application diff --git a/src/Stripe.net/Services/Issuing/Authorizations/AuthorizationUpdateOptions.cs b/src/Stripe.net/Services/Issuing/Authorizations/AuthorizationUpdateOptions.cs index 7eb9e7e0e0..665e0014b5 100644 --- a/src/Stripe.net/Services/Issuing/Authorizations/AuthorizationUpdateOptions.cs +++ b/src/Stripe.net/Services/Issuing/Authorizations/AuthorizationUpdateOptions.cs @@ -3,7 +3,7 @@ namespace Stripe.Issuing using System.Collections.Generic; using Newtonsoft.Json; - public class AuthorizationUpdateOptions : BaseOptions + public class AuthorizationUpdateOptions : BaseOptions, IHasMetadata { [JsonProperty("metadata")] public Dictionary Metadata { get; set; } diff --git a/src/Stripe.net/Services/Issuing/Cardholders/CardholderSharedOptions.cs b/src/Stripe.net/Services/Issuing/Cardholders/CardholderSharedOptions.cs index b62aa7a0b5..47df9d5119 100644 --- a/src/Stripe.net/Services/Issuing/Cardholders/CardholderSharedOptions.cs +++ b/src/Stripe.net/Services/Issuing/Cardholders/CardholderSharedOptions.cs @@ -3,7 +3,7 @@ namespace Stripe.Issuing using System.Collections.Generic; using Newtonsoft.Json; - public class CardholderSharedOptions : BaseOptions + public class CardholderSharedOptions : BaseOptions, IHasMetadata { [JsonProperty("billing")] public BillingOptions Billing { get; set; } diff --git a/src/Stripe.net/Services/Issuing/Cards/CardSharedOptions.cs b/src/Stripe.net/Services/Issuing/Cards/CardSharedOptions.cs index 3c251ad56e..a78ac6f78f 100644 --- a/src/Stripe.net/Services/Issuing/Cards/CardSharedOptions.cs +++ b/src/Stripe.net/Services/Issuing/Cards/CardSharedOptions.cs @@ -3,7 +3,7 @@ namespace Stripe.Issuing using System.Collections.Generic; using Newtonsoft.Json; - public class CardSharedOptions : BaseOptions + public class CardSharedOptions : BaseOptions, IHasMetadata { [JsonProperty("authorization_controls")] public AuthorizationControlsOptions AuthorizationControls { get; set; } diff --git a/src/Stripe.net/Services/Issuing/Disputes/DisputeSharedOptions.cs b/src/Stripe.net/Services/Issuing/Disputes/DisputeSharedOptions.cs index b6163a1985..654506aa09 100644 --- a/src/Stripe.net/Services/Issuing/Disputes/DisputeSharedOptions.cs +++ b/src/Stripe.net/Services/Issuing/Disputes/DisputeSharedOptions.cs @@ -3,7 +3,7 @@ namespace Stripe.Issuing using System.Collections.Generic; using Newtonsoft.Json; - public class DisputeSharedOptions : BaseOptions + public class DisputeSharedOptions : BaseOptions, IHasMetadata { [JsonProperty("metadata")] public Dictionary Metadata { get; set; } diff --git a/src/Stripe.net/Services/Issuing/Transactions/TransactionUpdateOptions.cs b/src/Stripe.net/Services/Issuing/Transactions/TransactionUpdateOptions.cs index 600397a45b..95a2777f4d 100644 --- a/src/Stripe.net/Services/Issuing/Transactions/TransactionUpdateOptions.cs +++ b/src/Stripe.net/Services/Issuing/Transactions/TransactionUpdateOptions.cs @@ -3,7 +3,7 @@ namespace Stripe.Issuing using System.Collections.Generic; using Newtonsoft.Json; - public class TransactionUpdateOptions : BaseOptions + public class TransactionUpdateOptions : BaseOptions, IHasMetadata { [JsonProperty("metadata")] public Dictionary Metadata { get; set; } diff --git a/src/Stripe.net/Services/Orders/OrderCreateOptions.cs b/src/Stripe.net/Services/Orders/OrderCreateOptions.cs index 10c6d0f74e..e9749ce09e 100644 --- a/src/Stripe.net/Services/Orders/OrderCreateOptions.cs +++ b/src/Stripe.net/Services/Orders/OrderCreateOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class OrderCreateOptions : BaseOptions + public class OrderCreateOptions : BaseOptions, IHasMetadata { /// /// REQUIRED: Three-letter ISO currency code, in lowercase. Must be a supported currency. diff --git a/src/Stripe.net/Services/Orders/OrderPayOptions.cs b/src/Stripe.net/Services/Orders/OrderPayOptions.cs index b50f8f35e8..f93126d403 100644 --- a/src/Stripe.net/Services/Orders/OrderPayOptions.cs +++ b/src/Stripe.net/Services/Orders/OrderPayOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class OrderPayOptions : BaseOptions + public class OrderPayOptions : BaseOptions, IHasMetadata { /// /// The ID of an existing customer that will be charged in this request. diff --git a/src/Stripe.net/Services/Orders/OrderUpdateOptions.cs b/src/Stripe.net/Services/Orders/OrderUpdateOptions.cs index 6b503046aa..de28782ead 100644 --- a/src/Stripe.net/Services/Orders/OrderUpdateOptions.cs +++ b/src/Stripe.net/Services/Orders/OrderUpdateOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class OrderUpdateOptions : BaseOptions + public class OrderUpdateOptions : BaseOptions, IHasMetadata { /// /// A coupon code that represents a discount to be applied to this order. Must be one-time duration and in tbe same currency as the order. diff --git a/src/Stripe.net/Services/PaymentIntents/PaymentIntentCreateOptions.cs b/src/Stripe.net/Services/PaymentIntents/PaymentIntentCreateOptions.cs index 0e53c75a4d..633292aabb 100644 --- a/src/Stripe.net/Services/PaymentIntents/PaymentIntentCreateOptions.cs +++ b/src/Stripe.net/Services/PaymentIntents/PaymentIntentCreateOptions.cs @@ -4,7 +4,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class PaymentIntentCreateOptions : BaseOptions + public class PaymentIntentCreateOptions : BaseOptions, IHasMetadata { /// /// A positive integer representing how much to charge in the smallest currency unit (e.g., diff --git a/src/Stripe.net/Services/PaymentIntents/PaymentIntentUpdateOptions.cs b/src/Stripe.net/Services/PaymentIntents/PaymentIntentUpdateOptions.cs index 2f40baa376..ed9d067050 100644 --- a/src/Stripe.net/Services/PaymentIntents/PaymentIntentUpdateOptions.cs +++ b/src/Stripe.net/Services/PaymentIntents/PaymentIntentUpdateOptions.cs @@ -4,7 +4,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class PaymentIntentUpdateOptions : BaseOptions + public class PaymentIntentUpdateOptions : BaseOptions, IHasMetadata { /// /// A positive integer representing how much to charge in the smallest currency unit (e.g., diff --git a/src/Stripe.net/Services/PaymentMethods/PaymentMethodCreateOptions.cs b/src/Stripe.net/Services/PaymentMethods/PaymentMethodCreateOptions.cs index 60abc5f968..5a7e72169a 100644 --- a/src/Stripe.net/Services/PaymentMethods/PaymentMethodCreateOptions.cs +++ b/src/Stripe.net/Services/PaymentMethods/PaymentMethodCreateOptions.cs @@ -5,7 +5,7 @@ namespace Stripe using Newtonsoft.Json; using Stripe.Infrastructure; - public class PaymentMethodCreateOptions : BaseOptions + public class PaymentMethodCreateOptions : BaseOptions, IHasMetadata { /// /// Billing information associated with the PaymentMethod that may be used or required by diff --git a/src/Stripe.net/Services/PaymentMethods/PaymentMethodUpdateOptions.cs b/src/Stripe.net/Services/PaymentMethods/PaymentMethodUpdateOptions.cs index add94974fe..f6b74801b5 100644 --- a/src/Stripe.net/Services/PaymentMethods/PaymentMethodUpdateOptions.cs +++ b/src/Stripe.net/Services/PaymentMethods/PaymentMethodUpdateOptions.cs @@ -5,7 +5,7 @@ namespace Stripe using Newtonsoft.Json; using Stripe.Infrastructure; - public class PaymentMethodUpdateOptions : BaseOptions + public class PaymentMethodUpdateOptions : BaseOptions, IHasMetadata { /// /// Billing information associated with the PaymentMethod that may be used or required by diff --git a/src/Stripe.net/Services/Payouts/PayoutCreateOptions.cs b/src/Stripe.net/Services/Payouts/PayoutCreateOptions.cs index e551d11750..b52e125ed1 100644 --- a/src/Stripe.net/Services/Payouts/PayoutCreateOptions.cs +++ b/src/Stripe.net/Services/Payouts/PayoutCreateOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class PayoutCreateOptions : BaseOptions + public class PayoutCreateOptions : BaseOptions, IHasMetadata { /// /// REQUIRED. A positive integer in cents representing how much to payout. diff --git a/src/Stripe.net/Services/Payouts/PayoutUpdateOptions.cs b/src/Stripe.net/Services/Payouts/PayoutUpdateOptions.cs index 4891c18e6d..577571df56 100644 --- a/src/Stripe.net/Services/Payouts/PayoutUpdateOptions.cs +++ b/src/Stripe.net/Services/Payouts/PayoutUpdateOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class PayoutUpdateOptions : BaseOptions + public class PayoutUpdateOptions : BaseOptions, IHasMetadata { /// /// A set of key-value pairs that you can attach to a payout object. It can be useful for diff --git a/src/Stripe.net/Services/Persons/PersonSharedOptions.cs b/src/Stripe.net/Services/Persons/PersonSharedOptions.cs index 0cb1ae07ee..9d30a3a68f 100644 --- a/src/Stripe.net/Services/Persons/PersonSharedOptions.cs +++ b/src/Stripe.net/Services/Persons/PersonSharedOptions.cs @@ -5,7 +5,7 @@ namespace Stripe using Newtonsoft.Json; using Stripe.Infrastructure; - public abstract class PersonSharedOptions : BaseOptions + public abstract class PersonSharedOptions : BaseOptions, IHasMetadata { [JsonProperty("address")] public AddressOptions Address { get; set; } diff --git a/src/Stripe.net/Services/Plans/PlanCreateOptions.cs b/src/Stripe.net/Services/Plans/PlanCreateOptions.cs index 26e4a5b82b..4cd66f90b2 100644 --- a/src/Stripe.net/Services/Plans/PlanCreateOptions.cs +++ b/src/Stripe.net/Services/Plans/PlanCreateOptions.cs @@ -4,7 +4,7 @@ namespace Stripe using Newtonsoft.Json; using Stripe.Infrastructure; - public class PlanCreateOptions : BaseOptions + public class PlanCreateOptions : BaseOptions, IHasId, IHasMetadata { [JsonProperty("id")] public string Id { get; set; } diff --git a/src/Stripe.net/Services/Plans/PlanUpdateOptions.cs b/src/Stripe.net/Services/Plans/PlanUpdateOptions.cs index de2c30fc78..844ff2b418 100644 --- a/src/Stripe.net/Services/Plans/PlanUpdateOptions.cs +++ b/src/Stripe.net/Services/Plans/PlanUpdateOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class PlanUpdateOptions : BaseOptions + public class PlanUpdateOptions : BaseOptions, IHasMetadata { [JsonProperty("active")] public bool? Active { get; set; } diff --git a/src/Stripe.net/Services/Products/PlanProductCreateOptions.cs b/src/Stripe.net/Services/Products/PlanProductCreateOptions.cs index dd908f24c6..34de647e71 100644 --- a/src/Stripe.net/Services/Products/PlanProductCreateOptions.cs +++ b/src/Stripe.net/Services/Products/PlanProductCreateOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class PlanProductCreateOptions : INestedOptions + public class PlanProductCreateOptions : INestedOptions, IHasId, IHasMetadata { [JsonProperty("active")] public bool? Active { get; set; } diff --git a/src/Stripe.net/Services/Products/ProductCreateOptions.cs b/src/Stripe.net/Services/Products/ProductCreateOptions.cs index ae3ab2d1d4..60c95f5937 100644 --- a/src/Stripe.net/Services/Products/ProductCreateOptions.cs +++ b/src/Stripe.net/Services/Products/ProductCreateOptions.cs @@ -2,7 +2,7 @@ namespace Stripe { using Newtonsoft.Json; - public class ProductCreateOptions : ProductSharedOptions + public class ProductCreateOptions : ProductSharedOptions, IHasId { /// /// The identifier for the product. Must be unique. If not provided, an identifier will be randomly generated. diff --git a/src/Stripe.net/Services/Products/ProductSharedOptions.cs b/src/Stripe.net/Services/Products/ProductSharedOptions.cs index 963fddbbb1..e5e5d384c5 100644 --- a/src/Stripe.net/Services/Products/ProductSharedOptions.cs +++ b/src/Stripe.net/Services/Products/ProductSharedOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public abstract class ProductSharedOptions : BaseOptions + public abstract class ProductSharedOptions : BaseOptions, IHasMetadata { /// /// Whether or not the product is currently available for purchase. Defaults to true. diff --git a/src/Stripe.net/Services/Radar/ValueLists/ValueListSharedOptions.cs b/src/Stripe.net/Services/Radar/ValueLists/ValueListSharedOptions.cs index 50e249eb6c..075e130028 100644 --- a/src/Stripe.net/Services/Radar/ValueLists/ValueListSharedOptions.cs +++ b/src/Stripe.net/Services/Radar/ValueLists/ValueListSharedOptions.cs @@ -3,7 +3,7 @@ namespace Stripe.Radar using System.Collections.Generic; using Newtonsoft.Json; - public class ValueListSharedOptions : BaseOptions + public class ValueListSharedOptions : BaseOptions, IHasMetadata { [JsonProperty("alias")] public string Alias { get; set; } diff --git a/src/Stripe.net/Services/Refunds/RefundCreateOptions.cs b/src/Stripe.net/Services/Refunds/RefundCreateOptions.cs index 4604dde10d..05f7a0c92f 100644 --- a/src/Stripe.net/Services/Refunds/RefundCreateOptions.cs +++ b/src/Stripe.net/Services/Refunds/RefundCreateOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class RefundCreateOptions : BaseOptions + public class RefundCreateOptions : BaseOptions, IHasMetadata { /// /// A positive integer in cents representing how much of this charge to refund. Can refund diff --git a/src/Stripe.net/Services/Refunds/RefundUpdateOptions.cs b/src/Stripe.net/Services/Refunds/RefundUpdateOptions.cs index 060150b99b..88f3f91cfb 100644 --- a/src/Stripe.net/Services/Refunds/RefundUpdateOptions.cs +++ b/src/Stripe.net/Services/Refunds/RefundUpdateOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class RefundUpdateOptions : BaseOptions + public class RefundUpdateOptions : BaseOptions, IHasMetadata { [JsonProperty("metadata")] public Dictionary Metadata { get; set; } diff --git a/src/Stripe.net/Services/SetupIntents/SetupIntentCreateOptions.cs b/src/Stripe.net/Services/SetupIntents/SetupIntentCreateOptions.cs index fdf293c9af..aa8fe41503 100644 --- a/src/Stripe.net/Services/SetupIntents/SetupIntentCreateOptions.cs +++ b/src/Stripe.net/Services/SetupIntents/SetupIntentCreateOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class SetupIntentCreateOptions : BaseOptions + public class SetupIntentCreateOptions : BaseOptions, IHasMetadata { /// /// Set to true to attempt to confirm this SetupIntent immediately. This parameter diff --git a/src/Stripe.net/Services/SetupIntents/SetupIntentUpdateOptions.cs b/src/Stripe.net/Services/SetupIntents/SetupIntentUpdateOptions.cs index 628dc59eb6..d5721ea2a1 100644 --- a/src/Stripe.net/Services/SetupIntents/SetupIntentUpdateOptions.cs +++ b/src/Stripe.net/Services/SetupIntents/SetupIntentUpdateOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class SetupIntentUpdateOptions : BaseOptions + public class SetupIntentUpdateOptions : BaseOptions, IHasMetadata { /// /// diff --git a/src/Stripe.net/Services/Skus/SkuCreateOptions.cs b/src/Stripe.net/Services/Skus/SkuCreateOptions.cs index 72a70861d0..53e2fa4a4a 100644 --- a/src/Stripe.net/Services/Skus/SkuCreateOptions.cs +++ b/src/Stripe.net/Services/Skus/SkuCreateOptions.cs @@ -2,7 +2,7 @@ namespace Stripe { using Newtonsoft.Json; - public class SkuCreateOptions : SkuSharedOptions + public class SkuCreateOptions : SkuSharedOptions, IHasId { /// /// The identifier for the SKU. Must be unique. If not provided, an identifier will be randomly generated. diff --git a/src/Stripe.net/Services/Skus/SkuSharedOptions.cs b/src/Stripe.net/Services/Skus/SkuSharedOptions.cs index d165b0a1a6..3ddaf8050d 100644 --- a/src/Stripe.net/Services/Skus/SkuSharedOptions.cs +++ b/src/Stripe.net/Services/Skus/SkuSharedOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public abstract class SkuSharedOptions : BaseOptions + public abstract class SkuSharedOptions : BaseOptions, IHasMetadata { /// /// Whether or not the SKU is currently available for purchase. Defaults to true. diff --git a/src/Stripe.net/Services/Sources/SourceCreateOptions.cs b/src/Stripe.net/Services/Sources/SourceCreateOptions.cs index 4de147799d..35b982974b 100644 --- a/src/Stripe.net/Services/Sources/SourceCreateOptions.cs +++ b/src/Stripe.net/Services/Sources/SourceCreateOptions.cs @@ -4,7 +4,7 @@ namespace Stripe using Newtonsoft.Json; using Stripe.Infrastructure; - public class SourceCreateOptions : BaseOptions + public class SourceCreateOptions : BaseOptions, IHasMetadata { /// /// REQUIRED: The type of the source to create. One of type diff --git a/src/Stripe.net/Services/Sources/SourceUpdateOptions.cs b/src/Stripe.net/Services/Sources/SourceUpdateOptions.cs index e1ecb72444..d5636f7f1f 100644 --- a/src/Stripe.net/Services/Sources/SourceUpdateOptions.cs +++ b/src/Stripe.net/Services/Sources/SourceUpdateOptions.cs @@ -4,7 +4,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class SourceUpdateOptions : BaseOptions + public class SourceUpdateOptions : BaseOptions, IHasMetadata { /// /// Information about a mandate possiblity attached to a source object (generally for bank debits) as well as its acceptance status. diff --git a/src/Stripe.net/Services/SubscriptionItems/SubscriptionItemCreateOptions.cs b/src/Stripe.net/Services/SubscriptionItems/SubscriptionItemCreateOptions.cs index eb0923f124..448c5ddda3 100644 --- a/src/Stripe.net/Services/SubscriptionItems/SubscriptionItemCreateOptions.cs +++ b/src/Stripe.net/Services/SubscriptionItems/SubscriptionItemCreateOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class SubscriptionItemCreateOptions : SubscriptionItemSharedOptions + public class SubscriptionItemCreateOptions : SubscriptionItemSharedOptions, IHasMetadata { /// /// REQUIRED: The identifier of the subscription to modify. diff --git a/src/Stripe.net/Services/SubscriptionItems/SubscriptionItemUpdateOptions.cs b/src/Stripe.net/Services/SubscriptionItems/SubscriptionItemUpdateOptions.cs index c708468b79..a9d3254a97 100644 --- a/src/Stripe.net/Services/SubscriptionItems/SubscriptionItemUpdateOptions.cs +++ b/src/Stripe.net/Services/SubscriptionItems/SubscriptionItemUpdateOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class SubscriptionItemUpdateOptions : SubscriptionItemSharedOptions + public class SubscriptionItemUpdateOptions : SubscriptionItemSharedOptions, IHasMetadata { /// /// A set of key/value pairs that you can attach to a subscription object. It can be useful for storing additional information about the subscription in a structured format. diff --git a/src/Stripe.net/Services/SubscriptionSchedules/SubscriptionScheduleSharedOptions.cs b/src/Stripe.net/Services/SubscriptionSchedules/SubscriptionScheduleSharedOptions.cs index 2a4b6b788b..95d2e9b578 100644 --- a/src/Stripe.net/Services/SubscriptionSchedules/SubscriptionScheduleSharedOptions.cs +++ b/src/Stripe.net/Services/SubscriptionSchedules/SubscriptionScheduleSharedOptions.cs @@ -5,7 +5,7 @@ namespace Stripe using Newtonsoft.Json; using Stripe.Infrastructure; - public abstract class SubscriptionScheduleSharedOptions : BaseOptions + public abstract class SubscriptionScheduleSharedOptions : BaseOptions, IHasMetadata { /// /// This field has been renamed to CollectionMethod and will be removed diff --git a/src/Stripe.net/Services/Subscriptions/SubscriptionItemOption.cs b/src/Stripe.net/Services/Subscriptions/SubscriptionItemOption.cs index 6f8e2c3984..7d34763b8d 100644 --- a/src/Stripe.net/Services/Subscriptions/SubscriptionItemOption.cs +++ b/src/Stripe.net/Services/Subscriptions/SubscriptionItemOption.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class SubscriptionItemOption : INestedOptions + public class SubscriptionItemOption : INestedOptions, IHasMetadata { /// /// A set of key/value pairs that you can attach to a charge object. It can be useful for diff --git a/src/Stripe.net/Services/Subscriptions/SubscriptionItemUpdateOption.cs b/src/Stripe.net/Services/Subscriptions/SubscriptionItemUpdateOption.cs index 86133e5c2d..c698028eea 100644 --- a/src/Stripe.net/Services/Subscriptions/SubscriptionItemUpdateOption.cs +++ b/src/Stripe.net/Services/Subscriptions/SubscriptionItemUpdateOption.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class SubscriptionItemUpdateOption : INestedOptions + public class SubscriptionItemUpdateOption : INestedOptions, IHasId, IHasMetadata { /// /// SubscriptionItem to update. diff --git a/src/Stripe.net/Services/Subscriptions/SubscriptionSharedOptions.cs b/src/Stripe.net/Services/Subscriptions/SubscriptionSharedOptions.cs index c661f3fdb4..02b3f2ee0c 100644 --- a/src/Stripe.net/Services/Subscriptions/SubscriptionSharedOptions.cs +++ b/src/Stripe.net/Services/Subscriptions/SubscriptionSharedOptions.cs @@ -5,7 +5,7 @@ namespace Stripe using Newtonsoft.Json; using Stripe.Infrastructure; - public abstract class SubscriptionSharedOptions : BaseOptions + public abstract class SubscriptionSharedOptions : BaseOptions, IHasMetadata { /// /// A non-negative decimal between 0 and 100, with at most two decimal places. This represents the percentage of the subscription invoice subtotal that will be transferred to the application owner’s Stripe account. The request must be made with an OAuth key in order to set an application fee percentage. For more information, see the application fees documentation. diff --git a/src/Stripe.net/Services/TaxRates/TaxRateCreateOptions.cs b/src/Stripe.net/Services/TaxRates/TaxRateCreateOptions.cs index 569e41b478..e5b30b121e 100644 --- a/src/Stripe.net/Services/TaxRates/TaxRateCreateOptions.cs +++ b/src/Stripe.net/Services/TaxRates/TaxRateCreateOptions.cs @@ -5,7 +5,7 @@ namespace Stripe using Newtonsoft.Json; using Stripe.Infrastructure; - public class TaxRateCreateOptions : BaseOptions + public class TaxRateCreateOptions : BaseOptions, IHasMetadata { /// /// Whether the tax rate is currently available for new subscriptions. diff --git a/src/Stripe.net/Services/TaxRates/TaxRateUpdateOptions.cs b/src/Stripe.net/Services/TaxRates/TaxRateUpdateOptions.cs index cea0a37585..642e53b897 100644 --- a/src/Stripe.net/Services/TaxRates/TaxRateUpdateOptions.cs +++ b/src/Stripe.net/Services/TaxRates/TaxRateUpdateOptions.cs @@ -5,7 +5,7 @@ namespace Stripe using Newtonsoft.Json; using Stripe.Infrastructure; - public class TaxRateUpdateOptions : BaseOptions + public class TaxRateUpdateOptions : BaseOptions, IHasMetadata { /// /// Whether the tax rate is currently available for new subscriptions. diff --git a/src/Stripe.net/Services/Topups/TopupCreateOptions.cs b/src/Stripe.net/Services/Topups/TopupCreateOptions.cs index bcc07b0fe5..edd4d3f1e4 100644 --- a/src/Stripe.net/Services/Topups/TopupCreateOptions.cs +++ b/src/Stripe.net/Services/Topups/TopupCreateOptions.cs @@ -4,7 +4,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class TopupCreateOptions : BaseOptions + public class TopupCreateOptions : BaseOptions, IHasMetadata { /// /// A positive integer in the smallest currency unit (e.g., 100 cents to top up $1.00 or 100 to top up ¥100, a 0-decimal currency) representing how much to top up your Stripe balance. diff --git a/src/Stripe.net/Services/Topups/TopupUpdateOptions.cs b/src/Stripe.net/Services/Topups/TopupUpdateOptions.cs index a261cfd726..18179e2331 100644 --- a/src/Stripe.net/Services/Topups/TopupUpdateOptions.cs +++ b/src/Stripe.net/Services/Topups/TopupUpdateOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class TopupUpdateOptions : BaseOptions + public class TopupUpdateOptions : BaseOptions, IHasMetadata { [JsonProperty("metadata")] public Dictionary Metadata { get; set; } diff --git a/src/Stripe.net/Services/TransferReversals/TransferReversalCreateOptions.cs b/src/Stripe.net/Services/TransferReversals/TransferReversalCreateOptions.cs index c5fc675a09..e7d4e04451 100644 --- a/src/Stripe.net/Services/TransferReversals/TransferReversalCreateOptions.cs +++ b/src/Stripe.net/Services/TransferReversals/TransferReversalCreateOptions.cs @@ -4,7 +4,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class TransferReversalCreateOptions : BaseOptions + public class TransferReversalCreateOptions : BaseOptions, IHasMetadata { [JsonProperty("amount")] public long? Amount { get; set; } diff --git a/src/Stripe.net/Services/TransferReversals/TransferReversalUpdateOptions.cs b/src/Stripe.net/Services/TransferReversals/TransferReversalUpdateOptions.cs index 27ec4aaa8d..73e6a74fc4 100644 --- a/src/Stripe.net/Services/TransferReversals/TransferReversalUpdateOptions.cs +++ b/src/Stripe.net/Services/TransferReversals/TransferReversalUpdateOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class TransferReversalUpdateOptions : BaseOptions + public class TransferReversalUpdateOptions : BaseOptions, IHasMetadata { [JsonProperty("metadata")] public Dictionary Metadata { get; set; } diff --git a/src/Stripe.net/Services/Transfers/TransferCreateOptions.cs b/src/Stripe.net/Services/Transfers/TransferCreateOptions.cs index 478d4149cd..7455d756f0 100644 --- a/src/Stripe.net/Services/Transfers/TransferCreateOptions.cs +++ b/src/Stripe.net/Services/Transfers/TransferCreateOptions.cs @@ -4,7 +4,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class TransferCreateOptions : BaseOptions + public class TransferCreateOptions : BaseOptions, IHasMetadata { [JsonProperty("amount")] public long? Amount { get; set; } diff --git a/src/Stripe.net/Services/Transfers/TransferUpdateOptions.cs b/src/Stripe.net/Services/Transfers/TransferUpdateOptions.cs index 1b0c9aedfe..2de40f3d56 100644 --- a/src/Stripe.net/Services/Transfers/TransferUpdateOptions.cs +++ b/src/Stripe.net/Services/Transfers/TransferUpdateOptions.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class TransferUpdateOptions : BaseOptions + public class TransferUpdateOptions : BaseOptions, IHasMetadata { [JsonProperty("description")] public string Description { get; set; } diff --git a/src/Stripe.net/Services/_refactor/CardCreateNestedOptions.cs b/src/Stripe.net/Services/_refactor/CardCreateNestedOptions.cs index f8c6efed77..f460a9742a 100644 --- a/src/Stripe.net/Services/_refactor/CardCreateNestedOptions.cs +++ b/src/Stripe.net/Services/_refactor/CardCreateNestedOptions.cs @@ -4,7 +4,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class CardCreateNestedOptions : INestedOptions + public class CardCreateNestedOptions : INestedOptions, IHasMetadata { /// /// The type of payment source. Should be "card". diff --git a/src/Stripe.net/Services/_refactor/SourceBankAccount.cs b/src/Stripe.net/Services/_refactor/SourceBankAccount.cs index fedc0db54f..973e0a8d35 100644 --- a/src/Stripe.net/Services/_refactor/SourceBankAccount.cs +++ b/src/Stripe.net/Services/_refactor/SourceBankAccount.cs @@ -3,7 +3,7 @@ namespace Stripe using System.Collections.Generic; using Newtonsoft.Json; - public class SourceBankAccount : INestedOptions + public class SourceBankAccount : INestedOptions, IHasMetadata { [JsonProperty("object")] internal string Object => "bank_account"; diff --git a/src/StripeTests/Wholesome/AllStripeObjectClassesPresentInDictionary.cs b/src/StripeTests/Wholesome/AllStripeObjectClassesPresentInDictionary.cs index 823f2b97f5..7b4994545a 100644 --- a/src/StripeTests/Wholesome/AllStripeObjectClassesPresentInDictionary.cs +++ b/src/StripeTests/Wholesome/AllStripeObjectClassesPresentInDictionary.cs @@ -23,8 +23,9 @@ public void Check() { List results = new List(); - // Get all classes that implement IHasObject - var modelClasses = GetClassesWithInterface(typeof(IHasObject)); + // Get all StripeEntity subclasses that implement IHasObject + var modelClasses = GetSubclassesOf(typeof(StripeEntity)) + .Intersect(GetClassesWithInterface(typeof(IHasObject))); foreach (Type modelClass in modelClasses) { diff --git a/src/StripeTests/Wholesome/DontForgetIHasInterfaces.cs b/src/StripeTests/Wholesome/DontForgetIHasInterfaces.cs new file mode 100644 index 0000000000..01aaa2d1db --- /dev/null +++ b/src/StripeTests/Wholesome/DontForgetIHasInterfaces.cs @@ -0,0 +1,68 @@ +#if NETCOREAPP +namespace StripeTests +{ + using System; + using System.Collections.Generic; + using System.Linq; + using System.Reflection; + using Stripe; + using Xunit; + + /// + /// This wholesome test ensures that all Stripe entity and options classes implement the + /// IHasX interfaces when they have matching properties. + /// + public class DontForgetIHasInterfaces : WholesomeTest + { + private const string AssertionMessage = + "Found at least one missing interface."; + + [Fact] + public void Check() + { + List results = new List(); + + // Get all classes that derive from StripeEntity or implement INestedOptions + var stripeClasses = GetSubclassesOf(typeof(StripeEntity)); + stripeClasses.AddRange(GetClassesWithInterface(typeof(INestedOptions))); + + foreach (Type stripeClass in stripeClasses) + { + var interfaces = stripeClass.GetInterfaces(); + + foreach (PropertyInfo property in stripeClass.GetProperties()) + { + // Check for IHasId + if ((property.Name == "Id") && (property.PropertyType == typeof(string))) + { + if (!interfaces.Contains(typeof(IHasId))) + { + results.Add($"{stripeClass.Name} is missing IHasId"); + } + } + + // Check for IHasObject + if ((property.Name == "Object") && (property.PropertyType == typeof(string))) + { + if (!interfaces.Contains(typeof(IHasObject))) + { + results.Add($"{stripeClass.Name} is missing IHasObject"); + } + } + + // Check for IHasMetadata + if ((property.Name == "Metadata") && (property.PropertyType == typeof(Dictionary))) + { + if (!interfaces.Contains(typeof(IHasMetadata))) + { + results.Add($"{stripeClass.Name} is missing IHasMetadata"); + } + } + } + } + + AssertEmpty(results, AssertionMessage); + } + } +} +#endif