BokaMera.API.Host

<back to all web services

GroupedBookingQuery

Requires Authentication
The following routes are available for this service:
GET/bookings/groupedFind booked events for currently logged in user grouped by booking from dateThis service is used to get bookings for the current user, the result will grouped by the bookings from date and paged if the query returns a to large set of values.
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization;
using ServiceStack;
using ServiceStack.DataAnnotations;
using BokaMera.API.ServiceModel.Dtos;
using BokaMera.API.ServiceModel.Db;
using ServiceStack.Data;
using BokaMera.API.ServiceModel.Helpers.Articles.Parameters;
using BokaMera.API.ServiceModel.Helpers.Payment;
using QvicklyIntegration.Models.Checkout;
using QvicklyIntegration.Models.Common;
using QvicklyIntegration.Models.Payment;
using QvicklyIntegration.Models;
using BokaMera.API.ServiceModel.Helpers.PaymentHttpTriggerHelper.Stripe;
using Stripe.Checkout;
using Stripe;
using StripeIntegration.Enums;
using Microsoft.Extensions.Logging;
using BokaMera.API.ServiceModel.DataStore;
using BokaMera.API.ServiceModel.Enums;
using BokaMera.API.ServiceModel.Interfaces;
using BokaMera.API.ServiceModel.Helpers.VossHelper;
using BokaMera.Helpers.HttpClientHelper;
using BokaMera.VossIntegration.ApiTools.Model;
using BokaMera.VossIntegration.ApiTools.Enums;
using BokaMera.API.ServiceModel.Security;

namespace BokaMera.API.ServiceModel.DataStore
{
    public partial class CacheDataProvider
    {
        public virtual DataCacheStore Dist { get; set; }
        public virtual DataCacheStore Static { get; set; }
    }

    public partial class DataCacheStore
    {
    }

}

namespace BokaMera.API.ServiceModel.Db
{
    public partial class AdminPaymentOptions
        : BaseModel
    {
        [Required]
        public virtual string Name { get; set; }

        [Required]
        public virtual string Description { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        [Required]
        public virtual int Id { get; set; }
    }

    public partial class Article
        : BaseModel, IBaseModelCreated, IBaseModelUpdated
    {
        public virtual Company Company { get; set; }
        public virtual Currency CurrencyInfo { get; set; }
        public virtual List<ArticleServiceRelation> ArticleServiceRelations { get; set; } = [];
        [Ignore]
        public virtual List<int> ServiceIds { get; set; } = [];

        [Ignore]
        public virtual List<Service> Services { get; set; } = [];

        [Ignore]
        public virtual ArticleTypeEnum ArticleType { get; set; }

        [Required]
        public virtual Guid CompanyId { get; set; }

        public virtual int Id { get; set; }
        [Required]
        public virtual string Name { get; set; }

        [Required]
        public virtual int ArticleTypeId { get; set; }

        public virtual string? Description { get; set; }
        public virtual string? ImageUrl { get; set; }
        [Required]
        public virtual bool Active { get; set; }

        [Required]
        public virtual int Amount { get; set; }

        [Required]
        public virtual double Price { get; set; }

        public virtual decimal? VAT { get; set; }
        public virtual int SortOrder { get; set; }
        [Required]
        [StringLength(50)]
        public virtual string CurrencyId { get; set; }

        [Required]
        public virtual DateTime UpdatedDate { get; set; }

        [Required]
        public virtual DateTime CreatedDate { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
    }

    public partial class ArticleInvoiceAddress
        : BaseModel, IBaseModelCreated, IBaseModelUpdated
    {
        [Required]
        public virtual Guid ArticleInvoiceAddressId { get; set; }

        [Required]
        public virtual Guid CompanyId { get; set; }

        [Required]
        public virtual string InternalReferenceId { get; set; }

        [Required]
        public virtual int ArticleTypeId { get; set; }

        public virtual string? CorporateIdentityNumber { get; set; }
        public virtual string? InvoiceAddress1 { get; set; }
        public virtual string? InvoiceAddress2 { get; set; }
        public virtual string? InvoiceCity { get; set; }
        public virtual string? InvoicePostalCode { get; set; }
        public virtual string? InvoiceCountryCode { get; set; }
        [Required]
        public virtual DateTime UpdatedDate { get; set; }

        [Required]
        public virtual DateTime CreatedDate { get; set; }
    }

    public partial class ArticleServiceRelation
        : BaseModel
    {
        [Required]
        public virtual Guid CompanyId { get; set; }

        public virtual int Id { get; set; }
        [Required]
        public virtual int ServiceId { get; set; }

        [Required]
        public virtual int ArticleId { get; set; }
    }

    public partial class ArticleType
        : BaseModel
    {
        public virtual int ArticleTypeId { get; set; }
        [Required]
        public virtual string ArticleTypeName { get; set; }

        public virtual string? ArticleTypeDescription { get; set; }
    }

    public partial class AverageRatingScore
    {
        public virtual double AverageScore { get; set; }
        public virtual int Score1Count { get; set; }
        public virtual int Score2Count { get; set; }
        public virtual int Score3Count { get; set; }
        public virtual int Score4Count { get; set; }
        public virtual int Score5Count { get; set; }
        public virtual int Count { get; set; }
    }

    public partial class BaseModel
    {
    }

    public partial class BillingInformation
        : BaseModel, IBaseModelCreated, IBaseModelUpdated
    {
        public virtual BillingMethod BillingMethod { get; set; }
        [Required]
        public virtual int BillingMethodId { get; set; }

        [Required]
        public virtual string Name { get; set; }

        public virtual string? FirstName { get; set; }
        public virtual string? LastName { get; set; }
        public virtual string? PhoneNumber { get; set; }
        public virtual string? Attention { get; set; }
        public virtual string? Street1 { get; set; }
        public virtual string? Street2 { get; set; }
        public virtual string? ZipCode { get; set; }
        public virtual string? City { get; set; }
        public virtual string? Email { get; set; }
        public virtual string? CreditCard { get; set; }
        public virtual string? CreditCardHolder { get; set; }
        public virtual string? CreditCardNumber { get; set; }
        public virtual short? ValidToYear { get; set; }
        public virtual short? ValidToMonth { get; set; }
        public virtual string? CSV { get; set; }
        [Required]
        public virtual DateTime UpdatedDate { get; set; }

        [Required]
        public virtual DateTime CreatedDate { get; set; }

        [Required]
        public virtual string CountryId { get; set; }

        [Required]
        public virtual int PaymentTermsDays { get; set; }

        public virtual string? VatRegistrationNumber { get; set; }
        public virtual int LicensePlanId { get; set; }
        public virtual string? GLN { get; set; }
        public virtual string? ReferenceLine1 { get; set; }
        public virtual string? ReferenceLine2 { get; set; }
        public virtual DateTimeOffset? ModifiedDate { get; set; }
        [Required]
        public virtual Guid Id { get; set; }
    }

    public partial class BillingMethod
        : BaseModel
    {
        public virtual List<BillingMethodCountriesRelation> BillingMethodCountriesRelation { get; set; } = [];
        [Required]
        public virtual string Name { get; set; }

        [Required]
        public virtual string Description { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        public virtual int Id { get; set; }
    }

    public partial class BillingMethodCountriesRelation
        : BaseModel
    {
        [Required]
        public virtual int BillingMethodId { get; set; }

        [Required]
        public virtual string CountryId { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
    }

    public partial class Booking
        : PayableEntity, IInterval, ICustomFieldTable, IBaseModelUpdated, IBaseModelCreated
    {
        [Ignore]
        public virtual Service Service { get; set; }

        [Ignore]
        public virtual List<BookingLog> Log { get; set; } = [];

        [Ignore]
        public virtual List<PaymentDetails> CheckoutLogs { get; set; } = [];

        [Ignore]
        public virtual List<BookingPrice> Prices { get; set; } = [];

        [Ignore]
        public virtual BookingStatusEnum Status { get; set; }

        [Ignore]
        public virtual bool IsReserved { get; set; }

        [Ignore]
        public virtual string StatusName { get; set; }

        public virtual BookingStatus BookingStatus { get; set; }
        [Ignore]
        public virtual double? TotalPrice { get; set; }

        [Ignore]
        public virtual int? TotalSpots { get; set; }

        [Ignore]
        public virtual IList<Resource> Resources { get; set; }

        [Ignore]
        public virtual IList<ExternalReference> ExternalReferences { get; set; }

        [Ignore]
        public virtual IList<BookedResourceType> BookedResources { get; set; }

        [Ignore]
        public virtual IList<CustomFieldConfig> CustomFieldsConfig { get; set; }

        [Ignore]
        public virtual IList<CustomFieldDataResponse> CustomFieldsData { get; set; }

        [Ignore]
        public virtual Guid DeterministicId { get; set; }

        [Ignore]
        public virtual bool Active { get; set; }

        [Ignore]
        public virtual DateTime? LastTimeToUnBook { get; set; }

        [Ignore]
        public virtual List<PriceMapping> PriceMappings { get; set; } = [];

        [Ignore]
        public virtual string InternalReferenceId { get; set; }

        public virtual int Id { get; set; }
        [Required]
        public virtual Guid CustomerId { get; set; }

        [Required]
        public virtual int ServiceId { get; set; }

        [Required]
        public virtual int StatusId { get; set; }

        public virtual DateTime? UnbookedOn { get; set; }
        public virtual string? UnbookedComments { get; set; }
        public virtual string? BookedComments { get; set; }
        [Required]
        public virtual string BookedBy { get; set; }

        public virtual string? UnBookedBy { get; set; }
        [Required]
        public virtual bool SendSmsReminder { get; set; }

        [Required]
        public virtual bool SendEmailReminder { get; set; }

        [Required]
        public virtual bool SendSmsConfirmation { get; set; }

        public virtual string? RebateCode { get; set; }
        public virtual string? Comments { get; set; }
        public virtual string? IpAddress { get; set; }
        [Required]
        public virtual int NumberOfBookedSpots { get; set; }

        public virtual string? CommentsToCustomer { get; set; }
        public virtual DateTime? PaymentExpiration { get; set; }
        [Required]
        public virtual bool SendEmailConfirmation { get; set; }

        public virtual string? CancellationCode { get; set; }
        public virtual DateTimeOffset? ModifiedDate { get; set; }
        public virtual string? RatingCode { get; set; }
        public virtual string? TextField1 { get; set; }
        public virtual string? TextField2 { get; set; }
        public virtual string? TextField3 { get; set; }
        public virtual string? TextField4 { get; set; }
        public virtual string? TextField5 { get; set; }
        public virtual string? TextField6 { get; set; }
        public virtual string? TextField7 { get; set; }
        public virtual string? TextField8 { get; set; }
        public virtual string? TextField9 { get; set; }
        public virtual string? TextField10 { get; set; }
        public virtual string? TextField11 { get; set; }
        public virtual string? TextField12 { get; set; }
        public virtual string? TextField13 { get; set; }
        public virtual string? TextField14 { get; set; }
        public virtual string? TextField15 { get; set; }
        public virtual string? TextField16 { get; set; }
        public virtual string? TextField17 { get; set; }
        public virtual string? TextField18 { get; set; }
        public virtual string? TextField19 { get; set; }
        public virtual string? TextField20 { get; set; }
        [Required]
        public virtual DateTime From { get; set; }

        [Required]
        public virtual DateTime To { get; set; }

        public virtual Guid? ArticleInvoiceAddressId { get; set; }
    }

    public partial class BookingLog
        : BaseModel
    {
        [References(typeof(BokaMera.API.ServiceModel.Db.BookingLogEventType))]
        public virtual int EventTypeId { get; set; }

        public virtual BookingLogEventType EventType { get; set; }
        [Required]
        public virtual Guid CompanyId { get; set; }

        [Required]
        public virtual int BookingId { get; set; }

        public virtual int Id { get; set; }
        public virtual string? Comments { get; set; }
        public virtual string? UserId { get; set; }
        [Required]
        public virtual DateTime Created { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
    }

    public partial class BookingLogEventType
        : BaseModel
    {
        [Required]
        public virtual string Name { get; set; }

        [Required]
        public virtual string Description { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        [Required]
        public virtual int Id { get; set; }
    }

    public partial class BookingPrice
        : BaseModel
    {
        [References(typeof(BokaMera.API.ServiceModel.Db.Currency))]
        public virtual string CurrencyId { get; set; }

        public virtual ServicePrice ServicePrice { get; set; }
        public virtual Currency CurrencyInfo { get; set; }
        [Ignore]
        public virtual string PriceText { get; set; }

        [Ignore]
        public virtual List<AppliedRebateCodes> AppliedCodes { get; set; } = [];

        [Ignore]
        public virtual bool IsRebate { get; set; }

        [Required]
        public virtual Guid CompanyId { get; set; }

        [Required]
        public virtual int BookingId { get; set; }

        [Required]
        public virtual int Quantity { get; set; }

        public virtual double? Price { get; set; }
        public virtual decimal? VAT { get; set; }
        public virtual string? Category { get; set; }
        [Required]
        public virtual DateTime Updated { get; set; }

        [Required]
        public virtual DateTime Created { get; set; }

        [Required]
        public virtual bool Invoiced { get; set; }

        [Required]
        public virtual bool OccupiesSpot { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        public virtual int? ServicePriceId { get; set; }
        public virtual int Id { get; set; }
    }

    public partial class BookingSettings
        : BaseModel
    {
        [References(typeof(BokaMera.API.ServiceModel.Db.FreeSpotTexts))]
        public virtual int FreeSpotTextsId { get; set; }

        [Ignore]
        public virtual bool SendEmailConfirmation { get; set; }

        [Ignore]
        public virtual List<ScheduleView> ScheduleViewOptions { get; set; } = [];

        [Ignore]
        public virtual List<WeekNumberSetting> WeekNumberSettingOptions { get; set; } = [];

        [Ignore]
        public virtual List<BookingTemplate> BookingTemplateOptions { get; set; } = [];

        [Ignore]
        public virtual List<CalendarType> CalendarTypeOptions { get; set; } = [];

        [Ignore]
        public virtual List<FreeSpotTexts> FreeSpotTextOptions { get; set; } = [];

        [Ignore]
        public virtual List<BookingStatusOptions> BookingStatusOptions { get; set; } = [];

        public virtual FreeSpotTexts FreeSpotTextsInfo { get; set; }
        [Ignore]
        public virtual string FreeSpotsTextSingular { get; set; }

        [Ignore]
        public virtual string FreeSpotsTextPlural { get; set; }

        [Required]
        public virtual int BookingStatusId { get; set; }

        [Required]
        public virtual int ScheduleViewId { get; set; }

        [Required]
        public virtual int BookingTemplateId { get; set; }

        [Required]
        public virtual int CalendarTypeId { get; set; }

        [Required]
        public virtual bool AllowBookingOnUnbookedTimes { get; set; }

        [Required]
        public virtual bool SendEmailReminder { get; set; }

        [Required]
        public virtual bool SendSmsReminder { get; set; }

        [Required]
        public virtual bool SendSmsConfirmation { get; set; }

        [Required]
        public virtual int EmailReminderTime { get; set; }

        [Required]
        public virtual int SmsReminderTime { get; set; }

        [Required]
        public virtual bool SendPushNotification { get; set; }

        [Required]
        public virtual bool SendPushNotificationReminder { get; set; }

        [Required]
        public virtual int PushNotificationReminderTime { get; set; }

        [Required]
        public virtual int MaxActiveBookings { get; set; }

        [Required]
        public virtual bool SendNotifications { get; set; }

        public virtual string? SendNotificationsEmail { get; set; }
        [Required]
        public virtual bool EnableMobileApp { get; set; }

        public virtual TimeSpan? ScheduleStartTime { get; set; }
        public virtual TimeSpan? ScheduleEndTime { get; set; }
        public virtual string? ReceiptTemplate { get; set; }
        [Required]
        public virtual int ScheduleTimeSlotMinutes { get; set; }

        [Required]
        public virtual bool ShowFreeTimesLeft { get; set; }

        [Required]
        public virtual bool EnableICalGroupBookings { get; set; }

        public virtual string? AgreementTemplate { get; set; }
        [Required]
        public virtual bool ScheduleShowTimeExeptions { get; set; }

        [Required]
        public virtual bool EnableBookingsOnSameTime { get; set; }

        [Required]
        public virtual int ShowWeekNumberSettingId { get; set; }

        [Required]
        public virtual bool EnableShowBookedTimes { get; set; }

        [Required]
        public virtual bool EnableSendFollowUpMessage { get; set; }

        [Required]
        public virtual int FollowUpMessageTime { get; set; }

        public virtual string? MessageText { get; set; }
        [Required]
        public virtual bool ScheduleGroupResources { get; set; }

        [Required]
        public virtual int BookSpotUserResponseMinutes { get; set; }

        [Required]
        public virtual bool IsBookSpotDirectly { get; set; }

        [Required]
        public virtual int BookSpotDirectlyTimeLeftMinutes { get; set; }

        [Required]
        public virtual bool SendEmailNotificationQueue { get; set; }

        [Required]
        public virtual bool SendSMSNotificationQueue { get; set; }

        [Required]
        public virtual bool SchedulerDisableHorizontalScrolling { get; set; }

        [Required]
        public virtual bool BookOnlyOnExistingCustomers { get; set; }

        [Required]
        public virtual bool AutoGenerateUniquePinCode { get; set; }

        [Required]
        public virtual bool WeightedPrices { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        [Required]
        public virtual bool AutoCreateUserProfile { get; set; }

        public virtual bool ShowMultipleResourcesAsOne { get; set; }
        public virtual bool ShowPersonalIdentityNumber { get; set; }
        public virtual bool PersonalIdentityNumberRequired { get; set; }
        public virtual bool ShowMultiDayAsTime { get; set; }
        public virtual string? BookingPinCodeRestriction { get; set; }
        public virtual bool CustomerInvoiceAdressRequired { get; set; }
        [Required]
        public virtual Guid Id { get; set; }
    }

    public partial class BookingStatus
        : BaseModel
    {
        [Required]
        public virtual string Name { get; set; }

        [Required]
        public virtual string Description { get; set; }

        [Required]
        public virtual string Color { get; set; }

        [Required]
        public virtual string Icon { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        public virtual int Id { get; set; }
    }

    public partial class BookingStatusOptions
    {
        public virtual int Id { get; set; }
        public virtual string Name { get; set; }
        public virtual string Description { get; set; }
    }

    public partial class BookingTemplate
        : BaseModel
    {
        [Required]
        public virtual string Name { get; set; }

        [Required]
        public virtual string Description { get; set; }

        [Required]
        public virtual string UsedByApplication { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        public virtual int Id { get; set; }
    }

    public partial class CalendarType
        : BaseModel
    {
        [Required]
        public virtual string Name { get; set; }

        [Required]
        public virtual string Description { get; set; }

        [Required]
        public virtual bool Active { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        public virtual int Id { get; set; }
    }

    public partial class CodeLockSetting
        : BaseModel
    {
        [Ignore]
        public virtual List<CodeLockSystem> CodeLockSystemOptions { get; set; } = [];

        [Required]
        public virtual bool Active { get; set; }

        [Required]
        public virtual int CodeLockSystemsId { get; set; }

        [Required]
        public virtual int ValidBeforeMinutes { get; set; }

        [Required]
        public virtual int ValidAfterMinutes { get; set; }

        [Required]
        public virtual bool DeleteOldBySchedule { get; set; }

        [Required]
        public virtual DateTime Created { get; set; }

        [Required]
        public virtual DateTime Updated { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        [Required]
        public virtual bool SendEmailNotification { get; set; }

        [Required]
        public virtual bool SendSMSNotification { get; set; }

        [Required]
        public virtual short EmailNotificationTime { get; set; }

        [Required]
        public virtual short SMSNotificationTime { get; set; }

        [Required]
        public virtual Guid Id { get; set; }
    }

    public partial class CodeLockSystem
        : BaseModel
    {
        [Required]
        public virtual string Name { get; set; }

        [Required]
        public virtual string Supplier { get; set; }

        public virtual string? LogoType { get; set; }
        [Required]
        public virtual string Description { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        [Required]
        public virtual int Id { get; set; }
    }

    public partial class Company
        : BaseModel
    {
        [Ignore]
        public virtual CompanyStatus Status { get; set; }

        [Ignore]
        public virtual bool Active { get; set; }

        [Ignore]
        public virtual IList<CustomFieldConfig> CustomerCustomFieldsConfig { get; set; }

        [Ignore]
        public virtual string BookingAgreements { get; set; }

        [Ignore]
        public virtual BookingSettings BookingSettings { get; set; }

        [Ignore]
        public virtual CompanyType CompanyType { get; set; }

        [Ignore]
        public virtual CodeLockSetting CodeLockSettings { get; set; }

        [Ignore]
        public virtual PaymentSettings PaymentSettings { get; set; }

        [Ignore]
        public virtual CompanySetting Settings { get; set; }

        [Ignore]
        public virtual HomepageWidgetSetting WidgetSettings { get; set; }

        [Ignore]
        public virtual HomepageSetting HomepageSettings { get; set; }

        [Ignore]
        public virtual AverageRatingScore RatingScore { get; set; }

        [Ignore]
        public virtual List<Rating> Ratings { get; set; } = [];

        [Ignore]
        public virtual double? Distance { get; set; }

        [Ignore]
        public virtual List<License> Licenses { get; set; } = [];

        [Ignore]
        public virtual CustomApiResult<CustomerResult>? VossCustomers { get; set; }

        [Ignore]
        public virtual BillingInformation BillingInformation { get; set; }

        [Ignore]
        public virtual List<CompanyUser> CompanyUsers { get; set; } = [];

        [Ignore]
        public virtual CompanyOwner CompanyOwner { get; set; }

        [Ignore]
        public virtual List<License> ActiveLicenses { get; set; } = [];

        [Ignore]
        public virtual License CurrentLicense { get; set; }

        [Ignore]
        public virtual bool IsFreeAccount { get; set; }

        [Ignore]
        public virtual CultureInfo DefaultLanguage { get; set; }

        public virtual CompanyCategory Category { get; set; }
        [Ignore]
        public virtual double Lat { get; set; }

        [Ignore]
        public virtual double Lon { get; set; }

        [Ignore]
        public virtual bool IsFavorite { get; set; }

        [Ignore]
        public virtual IList<ExternalReference> ExternalReferences { get; set; }

        [Required]
        public virtual string OrganisationNumber { get; set; }

        [Required]
        public virtual int StatusId { get; set; }

        [Required]
        public virtual int CategoryId { get; set; }

        [Required]
        public virtual string SitePath { get; set; }

        [Required]
        public virtual string Name { get; set; }

        public virtual string? Street1 { get; set; }
        public virtual string? Street2 { get; set; }
        public virtual string? ZipCode { get; set; }
        public virtual string? City { get; set; }
        public virtual string? OpeningHours { get; set; }
        public virtual string? FaxNumber { get; set; }
        [Required]
        public virtual string Email { get; set; }

        public virtual string? Phone { get; set; }
        public virtual string? Details { get; set; }
        public virtual string? LogoType { get; set; }
        [Required]
        public virtual bool ApprovedByAdmin { get; set; }

        [Required]
        public virtual DateTime Updated { get; set; }

        [Required]
        public virtual DateTime Created { get; set; }

        public virtual string? IpAddress { get; set; }
        public virtual string? Homepage { get; set; }
        public virtual string? DomainName { get; set; }
        [Required]
        public virtual string CountryId { get; set; }

        public virtual int? TypeId { get; set; }
        public virtual DateTimeOffset? ModifiedDate { get; set; }
        [Required]
        public virtual Guid Id { get; set; }

        public virtual int CompanyOwnerId { get; set; }
        public virtual DateTime? DeletionNotificationDate { get; set; }
    }

    public partial class CompanyCategory
        : BaseModel
    {
        [Required]
        public virtual string Name { get; set; }

        [Required]
        public virtual string NormalizedName { get; set; }

        [Required]
        public virtual bool Active { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        public virtual int Id { get; set; }
    }

    public partial class CompanyOwner
        : BaseModel
    {
        public virtual Company Company { get; set; }
        public virtual int Id { get; set; }
        [Required]
        public virtual string Name { get; set; }

        public virtual string? Description { get; set; }
        public virtual string? LogoTypeUrl { get; set; }
        [Required]
        public virtual Guid BillingCompanyId { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
    }

    public partial class CompanySetting
        : BaseModel
    {
        [Ignore]
        public virtual List<LanguageResponse> Languages { get; set; } = [];

        [Required]
        public virtual bool Active { get; set; }

        public virtual string? InactiveMessage { get; set; }
        [Required]
        public virtual bool Searchable { get; set; }

        public virtual string? GATrackingId { get; set; }
        public virtual string? FacebookPixelId { get; set; }
        [Required]
        public virtual bool MultiLanguage { get; set; }

        [Required]
        public virtual bool EnableAPITranslation { get; set; }

        [Required]
        public virtual string DefaultLanguage { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        public virtual string? GTMTrackingId { get; set; }
        [Required]
        public virtual bool ShowOnMarketPlace { get; set; }

        public virtual string? GoogleAdsConversionId { get; set; }
        public virtual string? LinkedinTagId { get; set; }
        public virtual string? GoogleAdsConversionLabel { get; set; }
        public virtual bool SendCustomerInformationToExternalProviders { get; set; }
        [Required]
        public virtual Guid Id { get; set; }

        public virtual bool IsWebhookFeatureEnabled { get; set; }
        public virtual int? SmsMessageSendLimit { get; set; }
        public virtual int? EmailMessageSendLimit { get; set; }
    }

    public partial class CompanyType
        : BaseModel
    {
        [Required]
        public virtual string Name { get; set; }

        [Required]
        public virtual string Description { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        [Required]
        public virtual int Id { get; set; }
    }

    public partial class CompanyUser
        : BaseModel, IUser, IBaseModelCreated, IBaseModelUpdated
    {
        public virtual Resource Resource { get; set; }
        [Ignore]
        public virtual List<KeyCloakRole> Roles { get; set; } = [];

        [Ignore]
        public virtual Company Company { get; set; }

        public virtual string Email { get; set; }
        [Ignore]
        public virtual string FullName { get; set; }

        public virtual int? ResourceId { get; set; }
        public virtual string? WorkerId { get; set; }
        [Required]
        public virtual bool Active { get; set; }

        [Required]
        public virtual bool IsSuperAdmin { get; set; }

        [Required]
        public virtual DateTime CreatedDate { get; set; }

        [Required]
        public virtual DateTime UpdatedDate { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        [Required]
        public virtual Guid CompanyId { get; set; }

        [Required]
        public virtual Guid Id { get; set; }

        public virtual Guid UserId { get; set; }
        public virtual string? Firstname { get; set; }
        public virtual string? Lastname { get; set; }
        [Required]
        public virtual bool SendPushNotification { get; set; }

        [Required]
        public virtual bool SendPushNotificationReminder { get; set; }

        public virtual string? Phone { get; set; }
    }

    public partial class Country
        : BaseModel
    {
        [References(typeof(BokaMera.API.ServiceModel.Db.Currency))]
        public virtual string CurrencyId { get; set; }

        public virtual Currency CurrencyInfo { get; set; }
        [Required]
        public virtual string Name { get; set; }

        public virtual string? Culture { get; set; }
        public virtual string? TimeZone { get; set; }
        public virtual DateTimeOffset? ModifiedDate { get; set; }
        [Required]
        public virtual string Id { get; set; }
    }

    public partial class Currency
        : BaseModel
    {
        [Required]
        public virtual string Name { get; set; }

        [Required]
        public virtual string CurrencySign { get; set; }

        [Required]
        public virtual bool Active { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        [Required]
        public virtual string Id { get; set; }
    }

    public partial class Customer
        : BaseModel, IUser, ICustomFieldTable
    {
        public virtual int IdentityId { get; set; }
        [Ignore]
        public virtual Guid DeterministicId { get; set; }

        public virtual Guid Id { get; set; }
        [Ignore]
        public virtual Guid CustomerId { get; set; }

        [Ignore]
        public virtual IList<UserAccessKeys> AccessKeys { get; set; }

        public virtual string Email { get; set; }
        [Ignore]
        public virtual IList<ExternalReference> ExternalReferences { get; set; }

        [Ignore]
        public virtual IList<InvoiceAddress> InvoiceAddress { get; set; }

        [Ignore]
        public virtual InvoiceAddress MainInvoiceAddress { get; set; }

        [Ignore]
        public virtual Company Company { get; set; }

        [Ignore]
        public virtual IList<CustomFieldConfig> CustomFieldsConfig { get; set; }

        [Ignore]
        public virtual IList<CustomFieldDataResponse> CustomFieldsData { get; set; }

        [Ignore]
        public virtual IList<CustomerComment> Comments { get; set; }

        [Ignore]
        public virtual IList<RebateCode> RebateCodes { get; set; }

        public virtual string Firstname { get; set; }
        [Ignore]
        public virtual string FullName { get; set; }

        [Ignore]
        public virtual string ImageUrl { get; set; }

        [Required]
        public virtual bool Active { get; set; }

        public virtual string? FacebookUsername { get; set; }
        [Required]
        public virtual DateTime Updated { get; set; }

        [Required]
        public virtual DateTime Created { get; set; }

        public virtual string? IpAddress { get; set; }
        public virtual DateTimeOffset? ModifiedDate { get; set; }
        public virtual string? TextField1 { get; set; }
        public virtual string? TextField2 { get; set; }
        public virtual string? TextField3 { get; set; }
        public virtual string? TextField4 { get; set; }
        public virtual string? TextField5 { get; set; }
        public virtual string? TextField6 { get; set; }
        public virtual string? TextField7 { get; set; }
        public virtual string? TextField8 { get; set; }
        public virtual string? TextField9 { get; set; }
        public virtual string? TextField10 { get; set; }
        public virtual string? TextField11 { get; set; }
        public virtual string? TextField12 { get; set; }
        public virtual string? TextField13 { get; set; }
        public virtual string? TextField14 { get; set; }
        public virtual string? TextField15 { get; set; }
        public virtual string? TextField16 { get; set; }
        public virtual string? TextField17 { get; set; }
        public virtual string? TextField18 { get; set; }
        public virtual string? TextField19 { get; set; }
        public virtual string? TextField20 { get; set; }
        public virtual Guid UserId { get; set; }
        public virtual string? Lastname { get; set; }
        public virtual string? Phone { get; set; }
        public virtual string? PersonalIdentityNumber { get; set; }
        [Required]
        public virtual Guid CompanyId { get; set; }

        public virtual bool SubscribedToNewsletter { get; set; }
    }

    public partial class CustomerComment
        : BaseModel
    {
        [Required]
        public virtual Guid CompanyId { get; set; }

        public virtual int Id { get; set; }
        [Required]
        public virtual Guid CustomerId { get; set; }

        [Required]
        public virtual string Comments { get; set; }

        [Required]
        public virtual DateTime Updated { get; set; }

        [Required]
        public virtual DateTime Created { get; set; }

        public virtual string? ImageUrl { get; set; }
        public virtual DateTimeOffset? ModifiedDate { get; set; }
    }

    public partial class CustomField
        : BaseModel
    {
        [Required]
        public virtual string Table { get; set; }

        [Required]
        public virtual string Column { get; set; }

        [Required]
        public virtual string DataType { get; set; }

        [Required]
        public virtual string Description { get; set; }

        [Required]
        public virtual bool Active { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        public virtual int Id { get; set; }
    }

    public partial class CustomFieldConfig
        : BaseModel
    {
        [Ignore]
        public virtual List<CustomFieldValue> Values { get; set; } = [];

        public virtual CustomField CustomField { get; set; }
        [Ignore]
        public virtual RegEx RegEx { get; set; }

        [Ignore]
        public virtual List<Service> Services { get; set; } = [];

        public virtual List<CustomFieldServiceRelation> CustomFieldServiceRelation { get; set; } = [];
        [Required]
        public virtual Guid CompanyId { get; set; }

        public virtual int Id { get; set; }
        public virtual int? GroupId { get; set; }
        [Required]
        public virtual int FieldId { get; set; }

        [Required]
        public virtual int IconId { get; set; }

        public virtual int? RegExId { get; set; }
        [Required]
        public virtual string Name { get; set; }

        [Required]
        public virtual string Description { get; set; }

        [Required]
        public virtual string Datatype { get; set; }

        [Required]
        public virtual int MaxLength { get; set; }

        [Required]
        public virtual bool IsPublic { get; set; }

        [Required]
        public virtual bool IsHidden { get; set; }

        [Required]
        public virtual bool IsMandatory { get; set; }

        public virtual string? DefaultValue { get; set; }
        public virtual string? RegExErrorMessage { get; set; }
        public virtual string? MandatoryErrorMessage { get; set; }
        public virtual int? Width { get; set; }
        [Required]
        public virtual bool MultipleLineText { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
    }

    public partial class CustomFieldServiceRelation
        : BaseModel
    {
        [Required]
        public virtual Guid CompanyId { get; set; }

        public virtual int Id { get; set; }
        [Required]
        public virtual int CustomFieldConfigId { get; set; }

        [Required]
        public virtual int ServiceId { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
    }

    public partial class CustomFieldValue
        : BaseModel
    {
        [Required]
        public virtual Guid CompanyId { get; set; }

        public virtual int Id { get; set; }
        [Required]
        public virtual string Value { get; set; }

        [Required]
        public virtual bool Active { get; set; }

        public virtual short? SortOrder { get; set; }
        public virtual DateTimeOffset? ModifiedDate { get; set; }
    }

    public partial class DaysOfWeek
        : BaseModel
    {
        [Required]
        public virtual string DayOfWeek { get; set; }

        [Required]
        public virtual string DayOfWeekTranslation { get; set; }

        public virtual bool? DayOfWeekActive { get; set; }
        public virtual short? DayOfWeekSortOrder { get; set; }
        public virtual DateTimeOffset? ModifiedDate { get; set; }
        public virtual int Id { get; set; }
    }

    public partial class ExternalReference
        : BaseModel, IBaseModelCreated, IBaseModelUpdated
    {
        [Required]
        public virtual Guid CompanyId { get; set; }

        [Required]
        public virtual Guid Id { get; set; }

        [Required]
        public virtual Guid OwnerId { get; set; }

        [Required]
        public virtual string ReferenceType { get; set; }

        [Required]
        public virtual int ReferenceTypeId { get; set; }

        public virtual string? ExternalData { get; set; }
        public virtual string? InternalData { get; set; }
        public virtual string? CreatedBy { get; set; }
        [Required]
        public virtual DateTime UpdatedDate { get; set; }

        [Required]
        public virtual DateTime CreatedDate { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
    }

    public partial class FreeSpotTexts
        : BaseModel
    {
        [Required]
        public virtual string TextSingular { get; set; }

        [Required]
        public virtual string TextPlural { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        [Required]
        public virtual int Id { get; set; }
    }

    public partial class HeroSectionStyle
        : BaseModel
    {
        [Required]
        public virtual string Name { get; set; }

        public virtual string? Description { get; set; }
        public virtual DateTimeOffset? ModifiedDate { get; set; }
        [Required]
        public virtual int Id { get; set; }
    }

    public partial class HomepageSetting
        : BaseModel, ICompany
    {
        [Ignore]
        public virtual List<HomepageTemplate> HomepageTemplateOptions { get; set; } = [];

        [Ignore]
        public virtual List<HeroSectionStyle> HomepageHeroSectionStyleOptions { get; set; } = [];

        [Ignore]
        public virtual Guid? CompanyId { get; set; }

        public virtual string? WelcomePageHeading { get; set; }
        public virtual string? WelcomePageBody { get; set; }
        public virtual string? AboutUsPageHeading { get; set; }
        public virtual string? AboutUsPageBody { get; set; }
        [Required]
        public virtual int HomePageTemplateId { get; set; }

        public virtual string? ImageUrl { get; set; }
        [Required]
        public virtual DateTime Updated { get; set; }

        [Required]
        public virtual DateTime Created { get; set; }

        public virtual string? HomepageHeading { get; set; }
        [Required]
        public virtual int HeroSectionStyleId { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        [Required]
        public virtual bool ShowRating { get; set; }

        [Required]
        public virtual bool EnableHomepage { get; set; }

        [Required]
        public virtual Guid Id { get; set; }
    }

    public partial class HomepageTemplate
        : BaseModel
    {
        [Required]
        public virtual string Name { get; set; }

        [Required]
        public virtual string Description { get; set; }

        public virtual Uri? ImageUrl { get; set; }
        [Required]
        public virtual bool Premium { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        public virtual int Id { get; set; }
    }

    public partial class HomepageWidgetSetting
        : BaseModel
    {
        [Ignore]
        public virtual List<WidgetServiceLayouts> WidgetServiceLayoutOptions { get; set; } = [];

        [Ignore]
        public virtual List<WidgetTimeLayouts> WidgetTimeLayoutOptions { get; set; } = [];

        [Ignore]
        public virtual List<WidgetBookingLayouts> WidgetBookingLayoutOptions { get; set; } = [];

        [Ignore]
        public virtual List<WidgetBookingMethods> WidgetBookingMethodOptions { get; set; } = [];

        [Required]
        public virtual int ServiceLayoutId { get; set; }

        [Required]
        public virtual int TimeLayoutId { get; set; }

        [Required]
        public virtual int BookingLayoutId { get; set; }

        [Required]
        public virtual string PrimaryColor { get; set; }

        [Required]
        public virtual bool ShowServiceImage { get; set; }

        [Required]
        public virtual bool ShowNextAvailableTime { get; set; }

        [Required]
        public virtual bool ShowEndTime { get; set; }

        public virtual string? BookedTimeSlotText { get; set; }
        [Required]
        public virtual bool DarkTheme { get; set; }

        [Required]
        public virtual bool ShowRebateCodeField { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        [Required]
        public virtual bool EnableCreateAccount { get; set; }

        [Required]
        public virtual bool EnableLogin { get; set; }

        [Required]
        public virtual bool EnableDirectBooking { get; set; }

        [Required]
        public virtual bool EnableFacebookLogin { get; set; }

        [Required]
        public virtual bool ShowSubscribeToNewsletter { get; set; }

        [Required]
        public virtual Guid Id { get; set; }
    }

    public partial class InvoiceAddress
        : BaseModel, IInvoiceAddress, IBaseModelCreated, IBaseModelUpdated
    {
        [Required]
        public virtual Guid InvoiceAddressId { get; set; }

        public virtual string? CorporateIdentityNumber { get; set; }
        public virtual string? InvoiceAddress1 { get; set; }
        public virtual string? InvoiceAddress2 { get; set; }
        public virtual string? InvoiceCity { get; set; }
        public virtual string? InvoicePostalCode { get; set; }
        public virtual string? InvoiceCountryCode { get; set; }
        public virtual bool Main { get; set; }
        public virtual Guid? UserId { get; set; }
        public virtual Guid? CustomerId { get; set; }
        [Required]
        public virtual DateTime UpdatedDate { get; set; }

        [Required]
        public virtual DateTime CreatedDate { get; set; }
    }

    public partial class License
        : BaseModel
    {
        [Ignore]
        public virtual VossSubscriptionResponse VossSubscription { get; set; }

        [Ignore]
        public virtual Company Company { get; set; }

        public virtual LicenseTypes Type { get; set; }
        [Required]
        public virtual Guid CompanyId { get; set; }

        public virtual int Id { get; set; }
        [Required]
        public virtual int TypeId { get; set; }

        public virtual Guid VossSubscriptionId { get; set; }
        [Required]
        public virtual DateTime ValidFrom { get; set; }

        [Required]
        public virtual DateTime ValidTo { get; set; }

        [Required]
        public virtual bool Active { get; set; }

        [Required]
        public virtual DateTime UpdatedDate { get; set; }

        [Required]
        public virtual DateTime CreatedDate { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        public virtual string? MetaData { get; set; }
    }

    public partial class LicensePrice
        : BaseModel
    {
        [Ignore]
        public virtual Country Country { get; set; }

        [Required]
        public virtual int LicenseTypeId { get; set; }

        [Required]
        public virtual string CountryId { get; set; }

        [Required]
        public virtual int Price { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        public virtual int LicensePlanId { get; set; }
    }

    public partial class LicenseTypeItem
        : BaseModel
    {
        [Ignore]
        public virtual string Name { get; set; }

        [Ignore]
        public virtual LicenseTypes LicenseType { get; set; }

        [Required]
        public virtual int LicenseTypesId { get; set; }

        [Required]
        public virtual int LicenseItemsId { get; set; }

        [Required]
        public virtual int NumberOfItems { get; set; }

        public virtual int Id { get; set; }
        public virtual DateTimeOffset? ModifiedDate { get; set; }
    }

    public partial class LicenseTypes
        : BaseModel
    {
        [Ignore]
        public virtual IList<LicenseTypeItem> LicenseItems { get; set; }

        [Ignore]
        public virtual IList<LicensePrice> Prices { get; set; }

        [Ignore]
        public virtual bool IsFree { get; set; }

        [Ignore]
        public virtual int PeriodOfNoticeDays { get; set; }

        [Ignore]
        public virtual LicenseTypes NextLicenseOption { get; set; }

        [Required]
        public virtual string Name { get; set; }

        [Required]
        public virtual string Description { get; set; }

        [Required]
        public virtual bool ExtraLicenseOption { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        public virtual bool Active { get; set; }
        public virtual Guid VossTierId { get; set; }
        public virtual int Id { get; set; }
    }

    public partial class PayableEntity
        : BaseModel
    {
        [Ignore]
        public virtual IDbConnectionFactory DbFactory { get; set; }

        [Ignore]
        public virtual ArticlePaymentSettings ArticlePaymentSettings { get; set; }

        [Ignore]
        public virtual IBokameraPaymentManager<InitCheckoutRequestBody, QvicklyCustomCheckoutData, QvicklyCustomCheckoutData> QvicklyPaymentManager { get; set; }

        [Ignore]
        public virtual IBokameraPaymentManager<StripeCreateCheckoutQuery, StripeCustomCheckoutData, StripeCustomCheckoutData> StripePaymentManager { get; set; }

        [Ignore]
        public virtual ILogger<PayableEntity> Logger { get; set; }

        [Ignore]
        public virtual CacheDataProvider CacheProvider { get; set; }

        [Ignore]
        public virtual string ServicesNames { get; set; }

        [Ignore]
        public virtual string InternalReferenceId { get; set; }

        [Ignore]
        public virtual List<PaymentLog> PaymentLog { get; set; } = [];

        [Ignore]
        public virtual ArticleType ArticleType { get; set; }

        public virtual Guid CompanyId { get; set; }
        [Required]
        public virtual DateTime UpdatedDate { get; set; }

        [Required]
        public virtual DateTime CreatedDate { get; set; }

        [References(typeof(BokaMera.API.ServiceModel.Db.Currency))]
        public virtual string CurrencyId { get; set; }

        public virtual Currency CurrencyInfo { get; set; }
        [Ignore]
        public virtual Customer? Customer { get; set; }

        [Ignore]
        public virtual List<Customer>? Customers { get; set; }

        [Ignore]
        public virtual Company Company { get; set; }

        [Ignore]
        public virtual List<Service> Services { get; set; } = [];

        [Ignore]
        public virtual Article Article { get; set; }

        [Ignore]
        public virtual ArticleInvoiceAddress InvoiceAddress { get; set; }
    }

    public partial class PaymentDetails
        : BaseModel, IBaseModelCreated, IBaseModelUpdated
    {
        [Ignore]
        public virtual QvicklyCustomCheckoutData? QvicklyCheckoutSerialized { get; set; }

        [Ignore]
        public virtual StripeCustomCheckoutData? StripeCheckoutSerialized { get; set; }

        public virtual int Id { get; set; }
        [Required]
        public virtual Guid CompanyId { get; set; }

        [Required]
        public virtual string InternalReferenceId { get; set; }

        [Required]
        public virtual int ArticleTypeId { get; set; }

        [Required]
        public virtual string ExternalResponseData { get; set; }

        [Required]
        public virtual string ExternalResponseReference { get; set; }

        [Required]
        public virtual int PaymentProviderId { get; set; }

        public virtual int TypeId { get; set; }
        [Required]
        public virtual DateTime CreatedDate { get; set; }

        [Required]
        public virtual DateTime UpdatedDate { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
    }

    public partial class PaymentLog
        : BaseModel
    {
        [References(typeof(BokaMera.API.ServiceModel.Db.Currency))]
        public virtual string CurrencyId { get; set; }

        public virtual Currency CurrencyInfo { get; set; }
        [Required]
        public virtual Guid CompanyId { get; set; }

        public virtual int Id { get; set; }
        [Required]
        public virtual string InternalReferenceId { get; set; }

        [Required]
        public virtual int ArticleTypeId { get; set; }

        public virtual string? PaymentReferenceId { get; set; }
        public virtual int? PaymentProviderId { get; set; }
        public virtual string? OrderItemReferenceId { get; set; }
        public virtual double? Amount { get; set; }
        public virtual decimal? VAT { get; set; }
        public virtual double? AmountCredited { get; set; }
        public virtual string? Comments { get; set; }
        [Required]
        public virtual DateTime Created { get; set; }

        [Required]
        public virtual DateTime Updated { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
    }

    public partial class PaymentProviders
        : BaseModel
    {
        [Required]
        public virtual string Name { get; set; }

        [Required]
        public virtual string Description { get; set; }

        [Required]
        public virtual string Category { get; set; }

        public virtual string? Url { get; set; }
        [Required]
        public virtual bool Active { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        [Required]
        public virtual int Id { get; set; }
    }

    public partial class PaymentSettings
        : BaseModel, IBaseModelUpdated
    {
        [Ignore]
        public virtual AdminPaymentOptions AdminPaymentOption { get; set; }

        [Ignore]
        public virtual List<AdminPaymentOptions> AdminPaymentOptions { get; set; } = [];

        [Ignore]
        public virtual List<PaymentProviders> PaymentProviderOptions { get; set; } = [];

        [Required]
        public virtual Guid Id { get; set; }

        [Required]
        public virtual bool Enabled { get; set; }

        [Required]
        public virtual bool RefundOnCancelBooking { get; set; }

        public virtual int? DefaultPaymentOptionId { get; set; }
        [Required]
        public virtual int PaymentProviderId { get; set; }

        public virtual DateTime UpdatedDate { get; set; }
    }

    public partial class PriceMapping
        : BaseModel
    {
        [Required]
        public virtual Guid CompanyId { get; set; }

        [Required]
        public virtual Guid Id { get; set; }

        [Required]
        public virtual int ServicePriceId { get; set; }

        public virtual string? ReferenceType { get; set; }
        public virtual string? ExternalReference { get; set; }
        [Required]
        public virtual DateTime UpdatedDate { get; set; }

        [Required]
        public virtual DateTime CreatedDate { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
    }

    public partial class Rating
        : BaseModel
    {
        public virtual Guid? ReviewId { get; set; }
        public virtual Review Review { get; set; }
        [Required]
        public virtual Guid CompanyId { get; set; }

        [Required]
        public virtual int BookingId { get; set; }

        [Required]
        public virtual int RatingScore { get; set; }

        [Required]
        public virtual int Status { get; set; }

        [Required]
        public virtual DateTime Created { get; set; }

        [Required]
        public virtual DateTime Updated { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
    }

    public partial class RebateCode
        : PayableEntity
    {
        [References(typeof(BokaMera.API.ServiceModel.Db.RebateCodeType))]
        public virtual int RebateCodeTypeId { get; set; }

        public virtual RebateCodeType RebateCodeTypeInfo { get; set; }
        [References(typeof(BokaMera.API.ServiceModel.Db.RebateCodeStatus))]
        public virtual int RebateCodeStatusId { get; set; }

        public virtual RebateCodeStatus RebateCodeStatusInfo { get; set; }
        public virtual List<RebateCodeDayOfWeekRelation> RebateCodeDayOfWeekRelation { get; set; } = [];
        public virtual List<RebateCodeServiceRelation> RebateCodeServiceRelation { get; set; } = [];
        public virtual List<RebateCodeBookingPriceRelation> RebateCodeBookingPriceRelation { get; set; } = [];
        public virtual List<RebateCodeCustomerRelation> RebateCodeCustomerRelation { get; set; } = [];
        [Ignore]
        public virtual List<DaysOfWeek> DaysOfWeek { get; set; } = [];

        [Ignore]
        public virtual RebateCodeStatus RebateCodeStatus { get; set; }

        [Ignore]
        public virtual RebateCodeType RebateCodeType { get; set; }

        [Ignore]
        public virtual List<RebateCodeTransaction> Transactions { get; set; } = [];

        [Ignore]
        public virtual double? RemainingAmount { get; set; }

        [Ignore]
        public virtual int? RemainingUsage { get; set; }

        [Ignore]
        public virtual int CurrentNumberOfUsesPerCustomer { get; set; }

        [Ignore]
        public virtual bool IsSpecificByDayOfWeek { get; set; }

        [Ignore]
        public virtual bool Active { get; set; }

        [Ignore]
        public virtual bool ActiveByStatus { get; set; }

        [Ignore]
        public virtual string RebateCodeCurrencySign { get; set; }

        [Ignore]
        public virtual bool PaymentReceived { get; set; }

        [Ignore]
        public virtual string InternalReferenceId { get; set; }

        [Required]
        public virtual DateTime ValidFrom { get; set; }

        [Required]
        public virtual DateTime ValidTo { get; set; }

        [Required]
        public virtual string RebateCodeSign { get; set; }

        [Required]
        public virtual int RebateCodeValue { get; set; }

        [Required]
        public virtual int MaxNumberOfUses { get; set; }

        [Required]
        public virtual int MaxNumberOfUsesPerCustomer { get; set; }

        [Required]
        public virtual int NumberOfUsesUsed { get; set; }

        public virtual string? PersonalNote { get; set; }
        [Required]
        public virtual string CreatedBy { get; set; }

        [Required]
        public virtual string UpdatedBy { get; set; }

        [Required]
        public virtual TimeSpan FromTime { get; set; }

        [Required]
        public virtual TimeSpan ToTime { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        public virtual decimal? Price { get; set; }
        public virtual decimal? VAT { get; set; }
        public virtual int Id { get; set; }
        public virtual int? ArticleId { get; set; }
    }

    public partial class RebateCodeBookingPriceRelation
        : BaseModel
    {
        [Required]
        public virtual Guid CompanyId { get; set; }

        [Required]
        public virtual int PriceId { get; set; }

        [Required]
        public virtual int RebateCodeId { get; set; }

        public virtual int Id { get; set; }
        public virtual DateTimeOffset? ModifiedDate { get; set; }
    }

    public partial class RebateCodeCustomerRelation
        : BaseModel
    {
        [Required]
        public virtual Guid CompanyId { get; set; }

        [Required]
        public virtual Guid CustomerId { get; set; }

        [Required]
        public virtual int RebateCodeId { get; set; }

        public virtual int Id { get; set; }
        public virtual DateTimeOffset? ModifiedDate { get; set; }
        public virtual bool RebateCodeEmailSentToCustomer { get; set; }
        public virtual string? MessageToReceiver { get; set; }
        public virtual bool Buyer { get; set; }
    }

    public partial class RebateCodeDayOfWeekRelation
        : BaseModel
    {
        [Ignore]
        public virtual BokaMeraDayOfWeek DayOfWeek { get; set; }

        [Required]
        public virtual int DayOfWeekId { get; set; }

        [Required]
        public virtual int RebateCodeId { get; set; }

        [Required]
        public virtual Guid CompanyId { get; set; }

        public virtual int Id { get; set; }
        public virtual DateTimeOffset? ModifiedDate { get; set; }
    }

    public partial class RebateCodeServiceRelation
        : BaseModel
    {
        [Required]
        public virtual Guid CompanyId { get; set; }

        [Required]
        public virtual int ServiceId { get; set; }

        [Required]
        public virtual int RebateCodeId { get; set; }

        public virtual int Id { get; set; }
        public virtual DateTimeOffset? ModifiedDate { get; set; }
    }

    public partial class RebateCodeStatus
        : BaseModel
    {
        [Required]
        public virtual string Name { get; set; }

        public virtual string? Description { get; set; }
        public virtual DateTimeOffset? ModifiedDate { get; set; }
        public virtual int Id { get; set; }
    }

    public partial class RebateCodeTransaction
        : BaseModel, IBaseModelCreated, IBaseModelUpdated
    {
        [Ignore]
        public virtual Booking Booking { get; set; }

        [Ignore]
        public virtual RebateCode RebateCode { get; set; }

        [Ignore]
        public virtual Customer Customer { get; set; }

        public virtual int Id { get; set; }
        public virtual Guid CompanyId { get; set; }
        public virtual string? Note { get; set; }
        [Required]
        public virtual int RebateCodeId { get; set; }

        [Required]
        public virtual double Amount { get; set; }

        [Required]
        public virtual int Usage { get; set; }

        public virtual int? BookingId { get; set; }
        [Required]
        public virtual DateTime UpdatedDate { get; set; }

        [Required]
        public virtual DateTime CreatedDate { get; set; }
    }

    public partial class RebateCodeType
        : BaseModel
    {
        [Required]
        public virtual string Name { get; set; }

        public virtual string? Description { get; set; }
        public virtual DateTimeOffset? ModifiedDate { get; set; }
        public virtual int Id { get; set; }
    }

    public partial class RegEx
        : BaseModel
    {
        [Required]
        public virtual string Name { get; set; }

        [Required]
        public virtual string Description { get; set; }

        [Required]
        public virtual string RegExCode { get; set; }

        public virtual string? ErrorMessage { get; set; }
        public virtual DateTimeOffset? ModifiedDate { get; set; }
        public virtual int Id { get; set; }
    }

    public partial class Resource
        : BaseModel, ICustomFieldTable, IBaseModelCreated, IBaseModelUpdated
    {
        [Ignore]
        public virtual int Priority { get; set; }

        [Ignore]
        public virtual IList<ISchedule> Schedules { get; set; }

        [Ignore]
        public virtual IList<ITimeException> Exceptions { get; set; }

        [Ignore]
        public virtual IList<IBookedTime> Bookings { get; set; }

        [Ignore]
        public virtual IList<CustomFieldConfig> CustomFieldsConfig { get; set; }

        [Ignore]
        public virtual IList<CustomFieldDataResponse> CustomFieldsData { get; set; }

        [Required]
        public virtual Guid CompanyId { get; set; }

        public virtual int Id { get; set; }
        [Required]
        public virtual string Name { get; set; }

        [Required]
        public virtual bool Active { get; set; }

        public virtual string? Description { get; set; }
        public virtual string? ImageUrl { get; set; }
        [Required]
        public virtual DateTime UpdatedDate { get; set; }

        [Required]
        public virtual DateTime CreatedDate { get; set; }

        [Required]
        public virtual string Color { get; set; }

        public virtual string? Email { get; set; }
        public virtual string? MobilePhone { get; set; }
        public virtual bool? EmailNotification { get; set; }
        public virtual bool? SMSNotification { get; set; }
        [Required]
        public virtual bool SendSMSReminder { get; set; }

        [Required]
        public virtual bool SendEmailReminder { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        public virtual string? AccessGroup { get; set; }
        public virtual string? TextField1 { get; set; }
        public virtual string? TextField2 { get; set; }
        public virtual string? TextField3 { get; set; }
        public virtual string? TextField4 { get; set; }
        public virtual string? TextField5 { get; set; }
        public virtual string? TextField6 { get; set; }
        public virtual string? TextField7 { get; set; }
        public virtual string? TextField8 { get; set; }
        public virtual string? TextField9 { get; set; }
        public virtual string? TextField10 { get; set; }
        public virtual string? TextField11 { get; set; }
        public virtual string? TextField12 { get; set; }
        public virtual string? TextField13 { get; set; }
        public virtual string? TextField14 { get; set; }
        public virtual string? TextField15 { get; set; }
        public virtual string? TextField16 { get; set; }
        public virtual string? TextField17 { get; set; }
        public virtual string? TextField18 { get; set; }
        public virtual string? TextField19 { get; set; }
        public virtual string? TextField20 { get; set; }
    }

    public partial class ResourceType
        : BaseModel, IBaseModelCreated, IBaseModelUpdated
    {
        [Ignore]
        public virtual bool SelectableByUser { get; set; }

        [Ignore]
        public virtual List<Resource> Resources { get; set; } = [];

        [Required]
        public virtual Guid CompanyId { get; set; }

        public virtual int Id { get; set; }
        [Required]
        public virtual string Name { get; set; }

        public virtual string? Description { get; set; }
        [Required]
        public virtual bool Active { get; set; }

        [Required]
        public virtual DateTime UpdatedDate { get; set; }

        [Required]
        public virtual DateTime CreatedDate { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
    }

    public partial class Review
        : BaseModel
    {
        public virtual Guid ReviewId { get; set; }
        [Required]
        public virtual Guid CompanyId { get; set; }

        [Required]
        public virtual string Title { get; set; }

        [Required]
        public virtual string Description { get; set; }

        [Required]
        public virtual string Author { get; set; }

        [Required]
        public virtual int Status { get; set; }

        [Required]
        public virtual DateTime Created { get; set; }

        [Required]
        public virtual DateTime Updated { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        public virtual string? ReviewAnswer { get; set; }
    }

    public partial class ScheduleView
        : BaseModel
    {
        [Required]
        public virtual string Name { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        public virtual int Id { get; set; }
    }

    public partial class Service
        : BaseModel, ICustomFieldTable, IBaseModelCreated, IBaseModelUpdated
    {
        [Ignore]
        public virtual List<ResourceType> ResourceTypes { get; set; } = [];

        [Ignore]
        public virtual IEnumerable<Resource> Resources { get; set; }

        [Ignore]
        public virtual TotalPriceInformation TotalPrice { get; set; }

        [Ignore]
        public virtual List<ServicePrice> Prices { get; set; } = [];

        [Ignore]
        public virtual List<BookingStatusOptions> BookingStatusOptions { get; set; } = [];

        [Ignore]
        public virtual bool IsGroupBooking { get; set; }

        [Ignore]
        public virtual bool IsMultipleResource { get; set; }

        [Ignore]
        public virtual BookingSettings Settings { get; set; }

        [Ignore]
        public virtual PaymentSettings PaymentSettings { get; set; }

        [Ignore]
        public virtual IList<CustomFieldConfig> BookingCustomFieldsConfig { get; set; }

        [Ignore]
        public virtual IList<CustomFieldConfig> CustomerCustomFieldsConfig { get; set; }

        [Ignore]
        public virtual IList<CustomFieldConfig> CustomFieldsConfig { get; set; }

        [Ignore]
        public virtual IList<CustomFieldDataResponse> CustomFieldsData { get; set; }

        [Ignore]
        public virtual IList<ISchedule> Schedules { get; set; }

        [Ignore]
        public virtual IList<Booking> CustomerActiveBookings { get; set; }

        [Ignore]
        public virtual ScheduleType ScheduleType { get; set; }

        [Ignore]
        public virtual TimeSpan LastTimeToUnbookThreshold { get; set; }

        [Ignore]
        public virtual TimeSpan LastTimeToBookThreshold { get; set; }

        [Ignore]
        public virtual AverageRatingScore RatingScore { get; set; }

        [Ignore]
        public virtual List<Rating> Ratings { get; set; } = [];

        [Required]
        public virtual Guid CompanyId { get; set; }

        public virtual int Id { get; set; }
        [Required]
        public virtual string Name { get; set; }

        [Required]
        public virtual string Description { get; set; }

        public virtual string? Group { get; set; }
        [Required]
        public virtual bool Active { get; set; }

        [Required]
        public virtual int SortOrder { get; set; }

        [Required]
        public virtual int PauseAfterBooking { get; set; }

        [Required]
        public virtual int UnbookBeforeDays { get; set; }

        [Required]
        public virtual int UnbookBeforeHours { get; set; }

        [Required]
        public virtual int UnbookBeforeMinutes { get; set; }

        [Required]
        public virtual int BookBeforeDays { get; set; }

        [Required]
        public virtual int BookBeforeHours { get; set; }

        [Required]
        public virtual int BookBeforeMinutes { get; set; }

        public virtual int? Duration { get; set; }
        public virtual int DurationTypeId { get; set; }
        public virtual int? MinDuration { get; set; }
        public virtual int? MaxDuration { get; set; }
        public virtual int? DurationInterval { get; set; }
        public virtual int? TotalSpots { get; set; }
        public virtual string? ImageUrl { get; set; }
        [Required]
        public virtual int ScheduleTypeId { get; set; }

        [Required]
        public virtual DateTime UpdatedDate { get; set; }

        [Required]
        public virtual DateTime CreatedDate { get; set; }

        [Required]
        public virtual bool OnlyVisibleByAdmin { get; set; }

        [Required]
        public virtual int MinNumberOfSpotsPerBooking { get; set; }

        [Required]
        public virtual int MaxNumberOfSpotsPerBooking { get; set; }

        [Required]
        public virtual int MinNumberOfResourcesToBook { get; set; }

        [Required]
        public virtual int MaxNumberOfResourcesToBook { get; set; }

        [Required]
        public virtual bool IsPaymentEnabled { get; set; }

        [Required]
        public virtual int MaxPaymentTime { get; set; }

        [Required]
        public virtual bool LockSpotsToBooking { get; set; }

        [Required]
        public virtual bool EnableBookingQueue { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        [Required]
        public virtual int BookingStatusId { get; set; }

        [Required]
        public virtual bool EnableCodeLockSync { get; set; }

        [Required]
        public virtual bool EnableCustomerManualPayment { get; set; }

        public virtual int? PriceViewTypeId { get; set; }
        public virtual string? TextField1 { get; set; }
        public virtual string? TextField2 { get; set; }
        public virtual string? TextField3 { get; set; }
        public virtual string? TextField4 { get; set; }
        public virtual string? TextField5 { get; set; }
        public virtual string? TextField6 { get; set; }
        public virtual string? TextField7 { get; set; }
        public virtual string? TextField8 { get; set; }
        public virtual string? TextField9 { get; set; }
        public virtual string? TextField10 { get; set; }
        public virtual string? TextField11 { get; set; }
        public virtual string? TextField12 { get; set; }
        public virtual string? TextField13 { get; set; }
        public virtual string? TextField14 { get; set; }
        public virtual string? TextField15 { get; set; }
        public virtual string? TextField16 { get; set; }
        public virtual string? TextField17 { get; set; }
        public virtual string? TextField18 { get; set; }
        public virtual string? TextField19 { get; set; }
        public virtual string? TextField20 { get; set; }
        public partial class TotalPriceInformation
        {
            public virtual double TotalPrice { get; set; }
            public virtual double TotalVATAmount { get; set; }
            public virtual double TotalRebate { get; set; }
            public virtual double TotalPriceBeforeRebate { get; set; }
            public virtual List<AppliedRebateCodes> AppliedCodes { get; set; } = [];
            public virtual string PriceSign { get; set; }
            public virtual string CurrencyId { get; set; }
            public virtual decimal VAT { get; set; }
        }

        public partial class AppliedRebateCodes
        {
            public virtual int RebateCodeId { get; set; }
            public virtual string RebateCodeSign { get; set; }
            public virtual int RebateCodeValue { get; set; }
            public virtual double RebateAmount { get; set; }
            public virtual RebateCodeType RebateCodeType { get; set; }
        }

    }

    public partial class ServicePrice
        : BaseModel, IInterval
    {
        [References(typeof(BokaMera.API.ServiceModel.Db.Currency))]
        public virtual string CurrencyId { get; set; }

        public virtual Currency CurrencyInfo { get; set; }
        [Ignore]
        public virtual Service Service { get; set; }

        public virtual List<PriceMapping> PriceMappings { get; set; } = [];
        [Ignore]
        public virtual bool isTimeSpecific { get; set; }

        [Ignore]
        public virtual bool isDaysOfWeekSpecific { get; set; }

        public virtual List<ServicePriceDayOfWeekRelation> DayOfWeeks { get; set; } = [];
        [Ignore]
        public virtual double? PriceBeforeRebate { get; set; }

        [Ignore]
        public virtual List<RebateCode> RebateCodesApplied { get; set; } = [];

        [Ignore]
        public virtual string PriceText { get; set; }

        [Ignore]
        public virtual List<ServicePrice> OverlappingPrices { get; set; } = [];

        [Required]
        public virtual Guid CompanyId { get; set; }

        public virtual int Id { get; set; }
        [Required]
        public virtual int ServiceId { get; set; }

        public virtual double? Price { get; set; }
        [Required]
        public virtual DateTime Updated { get; set; }

        [Required]
        public virtual DateTime Created { get; set; }

        [Required]
        public virtual TimeSpan FromTime { get; set; }

        [Required]
        public virtual TimeSpan ToTime { get; set; }

        [Required]
        public virtual decimal VAT { get; set; }

        public virtual string? Category { get; set; }
        public virtual DateTimeOffset? ModifiedDate { get; set; }
        [Required]
        public virtual DateTime From { get; set; }

        [Required]
        public virtual DateTime To { get; set; }

        [Required]
        public virtual int CalculationTypeId { get; set; }
    }

    public partial class ServicePriceDayOfWeekRelation
        : BaseModel
    {
        [Ignore]
        public virtual BokaMeraDayOfWeek DayOfWeek { get; set; }

        [Required]
        public virtual Guid CompanyId { get; set; }

        [Required]
        public virtual int ServicePriceId { get; set; }

        [Required]
        public virtual int DayOfWeekId { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        public virtual int Id { get; set; }
    }

    public partial class UserAccessKeys
        : BaseModel
    {
        [Required]
        public virtual Guid CompanyId { get; set; }

        [Required]
        public virtual int AccessKeyTypeId { get; set; }

        [Required]
        public virtual string Value { get; set; }

        [Required]
        public virtual Guid CustomerId { get; set; }

        public virtual string? Description { get; set; }
        [Required]
        public virtual Guid Id { get; set; }
    }

    public partial class WeekNumberSetting
        : BaseModel
    {
        [Required]
        public virtual string Name { get; set; }

        [Required]
        public virtual string Description { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        [Required]
        public virtual int Id { get; set; }
    }

    public partial class WidgetBookingLayouts
        : BaseModel
    {
        [Required]
        public virtual string Name { get; set; }

        [Required]
        public virtual string Description { get; set; }

        [Required]
        public virtual string Code { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        [Required]
        public virtual int Id { get; set; }
    }

    public partial class WidgetBookingMethods
        : BaseModel
    {
        [Required]
        public virtual string Name { get; set; }

        [Required]
        public virtual string Description { get; set; }

        [Required]
        public virtual string Code { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        [Required]
        public virtual int Id { get; set; }
    }

    public partial class WidgetServiceLayouts
        : BaseModel
    {
        [Required]
        public virtual string Name { get; set; }

        [Required]
        public virtual string Description { get; set; }

        [Required]
        public virtual string Code { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        [Required]
        public virtual int Id { get; set; }
    }

    public partial class WidgetTimeLayouts
        : BaseModel
    {
        [Required]
        public virtual string Name { get; set; }

        [Required]
        public virtual string Description { get; set; }

        [Required]
        public virtual string Code { get; set; }

        public virtual DateTimeOffset? ModifiedDate { get; set; }
        [Required]
        public virtual int Id { get; set; }
    }

}

namespace BokaMera.API.ServiceModel.Dtos
{
    public partial class AccessKeyTypeResponse
    {
        public virtual int Id { get; set; }
        public virtual string KeyType { get; set; }
        public virtual string Description { get; set; }
    }

    public partial class BookedCompany
    {
        public virtual Guid Id { get; set; }
        public virtual string Name { get; set; }
        public virtual Uri LogoType { get; set; }
        public virtual string Category { get; set; }
        public virtual string Street1 { get; set; }
        public virtual string Street2 { get; set; }
        public virtual string ZipCode { get; set; }
        public virtual string City { get; set; }
        public virtual string CountryId { get; set; }
        public virtual string Longitude { get; set; }
        public virtual string Latitude { get; set; }
        public virtual string Phone { get; set; }
        public virtual string Email { get; set; }
        public virtual string HomePage { get; set; }
        public virtual string SitePath { get; set; }
        public virtual bool IsFavorite { get; set; }
        public virtual int? PaymentProviderId { get; set; }
    }

    public partial class BookedCustomer
    {
        public virtual Guid Id { get; set; }
        public virtual string Firstname { get; set; }
        public virtual string Lastname { get; set; }
        public virtual string Email { get; set; }
        public virtual string Phone { get; set; }
        public virtual string FacebookUserName { get; set; }
        public virtual string ImageUrl { get; set; }
        public virtual string PersonalIdentityNumber { get; set; }
        public virtual string CorporateIdentityNumber { get; set; }
        public virtual string InvoiceAddress1 { get; set; }
        public virtual string InvoiceAddress2 { get; set; }
        public virtual string InvoiceCity { get; set; }
        public virtual string InvoicePostalCode { get; set; }
        public virtual string InvoiceCountryCode { get; set; }
    }

    public partial class BookedQuantity
    {
        ///<summary>
        ///The quantity Id
        ///</summary>
        [ApiMember(Description="The quantity Id")]
        public virtual int Id { get; set; }

        ///<summary>
        ///The quantity for booked on this price category
        ///</summary>
        [ApiMember(Description="The quantity for booked on this price category")]
        public virtual int Quantity { get; set; }

        ///<summary>
        ///The price
        ///</summary>
        [ApiMember(Description="The price")]
        public virtual double? Price { get; set; }

        ///<summary>
        ///The price bofore rebate codes
        ///</summary>
        [ApiMember(Description="The price bofore rebate codes")]
        public virtual double? PriceBeforeRebate { get; set; }

        ///<summary>
        ///The price currency
        ///</summary>
        [ApiMember(Description="The price currency")]
        public virtual string CurrencyId { get; set; }

        ///<summary>
        ///The price sign
        ///</summary>
        [ApiMember(Description="The price sign")]
        public virtual string PriceSign { get; set; }

        ///<summary>
        ///The price category
        ///</summary>
        [ApiMember(Description="The price category")]
        public virtual string Category { get; set; }

        ///<summary>
        ///The price VAT in percent
        ///</summary>
        [ApiMember(Description="The price VAT in percent")]
        public virtual decimal? VAT { get; set; }

        ///<summary>
        ///The price text to display
        ///</summary>
        [ApiMember(Description="The price text to display")]
        public virtual string PriceText { get; set; }

        ///<summary>
        ///If the quantity you add should occupy a spot. Default is true. If no it will only be a row that includes price information.
        ///</summary>
        [ApiMember(Description="If the quantity you add should occupy a spot. Default is true. If no it will only be a row that includes price information.")]
        public virtual bool OccupiesSpot { get; set; }
    }

    public partial class BookedResource
    {
        public virtual int Id { get; set; }
        public virtual string Name { get; set; }
        public virtual string Color { get; set; }
        public virtual Uri ImageUrl { get; set; }
        public virtual string Email { get; set; }
        public virtual string MobilePhone { get; set; }
        public virtual string AccessGroup { get; set; }
        public virtual bool EmailNotification { get; set; }
        public virtual bool SMSNotification { get; set; }
        public virtual bool EmailReminder { get; set; }
        public virtual bool SMSReminder { get; set; }
    }

    public partial class BookedResourceType
    {
        ///<summary>
        ///The resource type id
        ///</summary>
        [ApiMember(Description="The resource type id")]
        public virtual int Id { get; set; }

        ///<summary>
        ///The resource type name
        ///</summary>
        [ApiMember(Description="The resource type name")]
        public virtual string Name { get; set; }

        ///<summary>
        ///The resources inside resource type
        ///</summary>
        [ApiMember(Description="The resources inside resource type")]
        public virtual List<BookedResource> Resources { get; set; } = [];
    }

    public partial class BookingCheckoutQueryResponse
    {
        ///<summary>
        ///The checkout id
        ///</summary>
        [ApiMember(Description="The checkout id")]
        public virtual Guid Id { get; set; }

        ///<summary>
        ///The booking id
        ///</summary>
        [ApiMember(Description="The booking id")]
        public virtual int BookingId { get; set; }

        ///<summary>
        ///The purchase id
        ///</summary>
        [ApiMember(Description="The purchase id")]
        public virtual int? PurchaseId { get; set; }

        ///<summary>
        ///The payment checkout expiration datetime
        ///</summary>
        [ApiMember(Description="The payment checkout expiration datetime")]
        public virtual DateTime? ExpirationTime { get; set; }

        ///<summary>
        ///The payment snippet code
        ///</summary>
        [ApiMember(Description="The payment snippet code")]
        public virtual string Snippet { get; set; }

        ///<summary>
        ///The payment status
        ///</summary>
        [ApiMember(Description="The payment status")]
        public virtual string Status { get; set; }

        ///<summary>
        ///Log message
        ///</summary>
        [ApiMember(Description="Log message")]
        public virtual string Message { get; set; }

        ///<summary>
        ///When the checkout log item was created
        ///</summary>
        [ApiMember(Description="When the checkout log item was created")]
        public virtual DateTime Created { get; set; }

        ///<summary>
        ///When the checkout log item was updated
        ///</summary>
        [ApiMember(Description="When the checkout log item was updated")]
        public virtual DateTime Updated { get; set; }
    }

    public partial class BookingLogEventTypeResponse
    {
        ///<summary>
        ///The event type id
        ///</summary>
        [ApiMember(Description="The event type id")]
        public virtual int Id { get; set; }

        ///<summary>
        ///The event type name
        ///</summary>
        [ApiMember(Description="The event type name")]
        public virtual string Name { get; set; }

        ///<summary>
        ///The event type description
        ///</summary>
        [ApiMember(Description="The event type description")]
        public virtual string Description { get; set; }
    }

    public partial class BookingLogQueryResponse
    {
        ///<summary>
        ///The booking log id
        ///</summary>
        [ApiMember(Description="The booking log id")]
        public virtual int Id { get; set; }

        ///<summary>
        ///The booking id
        ///</summary>
        [ApiMember(Description="The booking id")]
        public virtual int BookingId { get; set; }

        ///<summary>
        ///The type of event
        ///</summary>
        [ApiMember(Description="The type of event")]
        public virtual int EventTypeId { get; set; }

        ///<summary>
        ///The type of event
        ///</summary>
        [ApiMember(Description="The type of event")]
        public virtual BookingLogEventTypeResponse EventType { get; set; }

        ///<summary>
        ///Comments that could be added to the event log item
        ///</summary>
        [ApiMember(Description="Comments that could be added to the event log item")]
        public virtual string Comments { get; set; }

        ///<summary>
        ///The user created the event
        ///</summary>
        [ApiMember(Description="The user created the event")]
        public virtual string UserName { get; set; }

        ///<summary>
        ///The date when the event occurred
        ///</summary>
        [ApiMember(Description="The date when the event occurred")]
        public virtual DateTime Created { get; set; }
    }

    public partial class BookingPaymentLogQueryResponse
    {
        ///<summary>
        ///The booking payment log id
        ///</summary>
        [ApiMember(Description="The booking payment log id")]
        public virtual int Id { get; set; }

        ///<summary>
        ///The booking id
        ///</summary>
        [ApiMember(Description="The booking id")]
        public virtual int BookingId { get; set; }

        ///<summary>
        ///The payment reference id
        ///</summary>
        [ApiMember(Description="The payment reference id")]
        public virtual string PaymentReferenceId { get; set; }

        ///<summary>
        ///The payment order item reference id
        ///</summary>
        [ApiMember(Description="The payment order item reference id")]
        public virtual string OrderItemReferenceId { get; set; }

        ///<summary>
        ///The payment reference id
        ///</summary>
        [ApiMember(Description="The payment reference id")]
        public virtual int? PaymentProviderId { get; set; }

        ///<summary>
        ///The payment amount
        ///</summary>
        [ApiMember(Description="The payment amount")]
        public virtual double Amount { get; set; }

        ///<summary>
        ///The payment VAT in percent
        ///</summary>
        [ApiMember(Description="The payment VAT in percent")]
        public virtual decimal VAT { get; set; }

        ///<summary>
        ///The payment amount that is credited
        ///</summary>
        [ApiMember(Description="The payment amount that is credited")]
        public virtual double AmountCredited { get; set; }

        ///<summary>
        ///The payment currency id
        ///</summary>
        [ApiMember(Description="The payment currency id")]
        public virtual string CurrencyId { get; set; }

        ///<summary>
        ///The payment currency info
        ///</summary>
        [ApiMember(Description="The payment currency info")]
        public virtual CurrencyInfoResponse CurrencyInfo { get; set; }

        ///<summary>
        ///Comments that could be added to the event log item
        ///</summary>
        [ApiMember(Description="Comments that could be added to the event log item")]
        public virtual string Comments { get; set; }

        ///<summary>
        ///The date when the payment items was created
        ///</summary>
        [ApiMember(Description="The date when the payment items was created")]
        public virtual DateTime Created { get; set; }

        ///<summary>
        ///The date when the payment items were updated.
        ///</summary>
        [ApiMember(Description="The date when the payment items were updated.")]
        public virtual DateTime Updated { get; set; }
    }

    public partial class BookingQueryResponse
    {
        public virtual int Id { get; set; }
        public virtual Guid CompanyId { get; set; }
        public virtual DateTime From { get; set; }
        public virtual DateTime To { get; set; }
        public virtual BookingStatusEnum Status { get; set; }
        public virtual int StatusId { get; set; }
        public virtual string StatusName { get; set; }
        public virtual BookingStatusQueryResponse StatusInfo { get; set; }
        public virtual bool SendEmailReminder { get; set; }
        public virtual bool SendSmsReminder { get; set; }
        public virtual bool SendSmsConfirmation { get; set; }
        public virtual bool SendEmailConfirmation { get; set; }
        public virtual DateTime? LastTimeToUnBook { get; set; }
        public virtual List<CustomFieldConfigData> CustomFields { get; set; } = [];
        public virtual List<CustomFieldDataResponse> CustomFieldValues { get; set; } = [];
        public virtual List<BookedResourceType> BookedResourceTypes { get; set; } = [];
        public virtual BookedCompany Company { get; set; }
        public virtual BookedCustomer Customer { get; set; }
        public virtual List<BookedQuantity> Quantities { get; set; } = [];
        public virtual ServiceInfoResponse Service { get; set; }
        public virtual InvoiceAddressResponse InvoiceAddress { get; set; }
        public virtual DateTime? PaymentExpiration { get; set; }
        public virtual List<BookingLogQueryResponse> Log { get; set; } = [];
        public virtual List<BookingPaymentLogQueryResponse> PaymentLog { get; set; } = [];
        public virtual List<BookingCheckoutQueryResponse> CheckoutLog { get; set; } = [];
        public virtual List<ExternalReferenceResponse> ExternalReference { get; set; } = [];
        public virtual ResponseStatus ResponseStatus { get; set; }
        public virtual int? LengthInMinutes { get; set; }
        public virtual string BookedBy { get; set; }
        public virtual string BookedComments { get; set; }
        public virtual string UnbookedComments { get; set; }
        public virtual string CommentsToCustomer { get; set; }
        public virtual DateTime CreatedDate { get; set; }
        public virtual DateTime UpdatedDate { get; set; }
        public virtual DateTime? UnbookedOn { get; set; }
        public virtual string CancellationCode { get; set; }
        public virtual string RatingCode { get; set; }
    }

    public partial class BookingStatusQueryResponse
    {
        public virtual int Id { get; set; }
        public virtual string Name { get; set; }
        public virtual string Description { get; set; }
        public virtual string Icon { get; set; }
        public virtual string Color { get; set; }
    }

    public partial class CurrencyInfoResponse
    {
        ///<summary>
        ///The currency id
        ///</summary>
        [ApiMember(Description="The currency id")]
        public virtual string Id { get; set; }

        ///<summary>
        ///The currency id
        ///</summary>
        [ApiMember(Description="The currency id")]
        public virtual string Name { get; set; }

        ///<summary>
        ///The currency id
        ///</summary>
        [ApiMember(Description="The currency id")]
        public virtual string CurrencySign { get; set; }
    }

    public partial class CustomFieldConfigData
    {
        ///<summary>
        ///Custom field id
        ///</summary>
        [ApiMember(Description="Custom field id")]
        public virtual int Id { get; set; }

        ///<summary>
        ///Configuration name. Example: 'Number of persons'.
        ///</summary>
        [ApiMember(Description="Configuration name. Example: 'Number of persons'.")]
        public virtual string Name { get; set; }

        ///<summary>
        ///Custom field description. Example: 'For how many persons is this booking?'
        ///</summary>
        [ApiMember(Description="Custom field description. Example: 'For how many persons is this booking?'")]
        public virtual string Description { get; set; }

        ///<summary>
        ///Field width. Example: 20 for 20px
        ///</summary>
        [ApiMember(Description="Field width. Example: 20 for 20px")]
        public virtual int? Width { get; set; }

        ///<summary>
        ///Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'
        ///</summary>
        [ApiMember(Description="Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'")]
        public virtual string DataType { get; set; }

        ///<summary>
        ///Default value of the field. Example: '3'
        ///</summary>
        [ApiMember(Description="Default value of the field. Example: '3'")]
        public virtual string DefaultValue { get; set; }

        ///<summary>
        ///Determines if the field is required to have a value or not
        ///</summary>
        [ApiMember(Description="Determines if the field is required to have a value or not")]
        public virtual bool IsMandatory { get; set; }

        ///<summary>
        ///Error message shown to the user if the field data is required but not entered
        ///</summary>
        [ApiMember(Description="Error message shown to the user if the field data is required but not entered")]
        public virtual string MandatoryErrorMessage { get; set; }

        ///<summary>
        ///Max lenght of the field
        ///</summary>
        [ApiMember(Description="Max lenght of the field")]
        public virtual int MaxLength { get; set; }

        ///<summary>
        ///If the field should have multiple lines
        ///</summary>
        [ApiMember(Description="If the field should have multiple lines")]
        public virtual bool MultipleLineText { get; set; }

        ///<summary>
        ///Regular expression used for validation of the field
        ///</summary>
        [ApiMember(Description="Regular expression used for validation of the field")]
        public virtual string RegEx { get; set; }

        ///<summary>
        ///Error message shown if the regular expression validation failed
        ///</summary>
        [ApiMember(Description="Error message shown if the regular expression validation failed")]
        public virtual string RegExErrorMessage { get; set; }

        ///<summary>
        ///The values to select from if Datatype is DropDown for this custom field
        ///</summary>
        [ApiMember(Description="The values to select from if Datatype is DropDown for this custom field")]
        public virtual List<CustomFieldValueResponse> Values { get; set; } = [];
    }

    public partial class CustomFieldDataResponse
    {
        public virtual int Id { get; set; }
        public virtual string Column { get; set; }
        public virtual string Name { get; set; }
        public virtual string Description { get; set; }
        public virtual string Value { get; set; }
        ///<summary>
        ///Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'
        ///</summary>
        [ApiMember(Description="Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'")]
        public virtual string DataType { get; set; }
    }

    public partial class CustomFieldValueResponse
    {
        public virtual string Value { get; set; }
    }

    public partial class ExternalReferenceResponse
    {
        public virtual Guid CompanyId { get; set; }
        public virtual Guid Id { get; set; }
        public virtual Guid OwnerId { get; set; }
        public virtual string ReferenceType { get; set; }
        public virtual int ReferenceTypeId { get; set; }
        public virtual string ExternalData { get; set; }
        public virtual string CreatedBy { get; set; }
        public virtual DateTime Updated { get; set; }
        public virtual DateTime Created { get; set; }
    }

    public partial class GroupBookingSettings
    {
        public virtual bool Active { get; set; }
        public virtual int Min { get; set; }
        public virtual int Max { get; set; }
    }

    [ValidateRequest("IsAuthenticated")]
    public partial class GroupedBookingQuery
        : QueryDb<Booking, GroupedBookingQueryResponse>
    {
        ///<summary>
        ///Query for specific Booked Resources, default is all resources
        ///</summary>
        [DataMember(Name="BookedResourceIds")]
        [ApiMember(Description="Query for specific Booked Resources, default is all resources", ParameterType="query")]
        public virtual int[] BookingResourceRelationResourceIds { get; set; }

        ///<summary>
        ///Query for specific Booked Resource types, default is all resource types
        ///</summary>
        [DataMember(Name="BookedResourceTypeIds")]
        [ApiMember(Description="Query for specific Booked Resource types, default is all resource types", ParameterType="query")]
        public virtual int[] BookingResourceRelationResourceTypeIds { get; set; }

        ///<summary>
        ///The company id, if empty will use the company id for the user you are logged in with.
        ///</summary>
        [ApiMember(Description="The company id, if empty will use the company id for the user you are logged in with.")]
        public virtual Guid? CompanyId { get; set; }

        ///<summary>
        ///Id of the booking
        ///</summary>
        [ApiMember(Description="Id of the booking", ParameterType="path")]
        public virtual int? Id { get; set; }

        ///<summary>
        ///Start of interval to query for bookings. UTC+0 and parameter as defined by date-time - RFC3339
        ///</summary>
        [ApiMember(DataType="dateTime", Description="Start of interval to query for bookings. UTC+0 and parameter as defined by date-time - RFC3339", ParameterType="query")]
        public virtual DateTime? BookingStart { get; set; }

        ///<summary>
        ///End of interval to query for bookings. UTC+0 and parameter as defined by date-time - RFC3339
        ///</summary>
        [ApiMember(DataType="dateTime", Description="End of interval to query for bookings. UTC+0 and parameter as defined by date-time - RFC3339", ParameterType="query")]
        public virtual DateTime? BookingEnd { get; set; }

        ///<summary>
        ///Set to true if you want to include all bookings for the company. Only administrators are allowed to do this.
        ///</summary>
        [ApiMember(DataType="boolean", Description="Set to true if you want to include all bookings for the company. Only administrators are allowed to do this.", ParameterType="query")]
        public virtual bool CompanyBookings { get; set; }

        ///<summary>
        ///Query for specific booking statuses. Valid statuses are TimeBooked = 1, TimeUnbooked = 2, TimeReserved = 3, TimeCanceled = 4. Default is 1,3 for active statuses.
        ///</summary>
        [ApiMember(Description="Query for specific booking statuses. Valid statuses are TimeBooked = 1, TimeUnbooked = 2, TimeReserved = 3, TimeCanceled = 4. Default is 1,3 for active statuses.", ParameterType="query")]
        public virtual int[] IncludeStatuses { get; set; }

        ///<summary>
        ///If you want to include the connected resourcetypes and resources
        ///</summary>
        [ApiMember(DataType="boolean", Description="If you want to include the connected resourcetypes and resources", ParameterType="query")]
        public virtual bool IncludeCustomFields { get; set; }

        ///<summary>
        ///If you want to include the connected custom fields
        ///</summary>
        [ApiMember(DataType="boolean", Description="If you want to include the connected custom fields", ParameterType="query")]
        public virtual bool IncludeCustomFieldValues { get; set; }

        ///<summary>
        ///If you want to include the price information on the booking
        ///</summary>
        [ApiMember(DataType="boolean", Description="If you want to include the price information on the booking", ParameterType="query")]
        public virtual bool IncludePriceInformation { get; set; }

        ///<summary>
        ///If you want to include booking status information
        ///</summary>
        [ApiMember(DataType="boolean", Description="If you want to include booking status information", ParameterType="query")]
        public virtual bool IncludeStatusInformation { get; set; }

        ///<summary>
        ///If you want to include the payment log on the booking
        ///</summary>
        [ApiMember(DataType="boolean", Description="If you want to include the payment log on the booking", ParameterType="query")]
        public virtual bool IncludePaymentLog { get; set; }

        ///<summary>
        ///If you want to include the checkouts
        ///</summary>
        [ApiMember(DataType="boolean", Description="If you want to include the checkouts", ParameterType="query")]
        public virtual bool IncludeCheckouts { get; set; }

        ///<summary>
        ///If you want to include the booked resourcetypes and it's booked resources
        ///</summary>
        [ApiMember(DataType="boolean", Description="If you want to include the booked resourcetypes and it's booked resources", ParameterType="query")]
        public virtual bool IncludeBookedResourceTypes { get; set; }

        ///<summary>
        ///If you want to include the company information for the booking
        ///</summary>
        [ApiMember(DataType="boolean", Description="If you want to include the company information for the booking", ParameterType="query")]
        public virtual bool IncludeCompanyInformation { get; set; }

        ///<summary>
        ///If you want to include the customer information for the booking
        ///</summary>
        [ApiMember(DataType="boolean", Description="If you want to include the customer information for the booking", ParameterType="query")]
        public virtual bool IncludeCustomerInformation { get; set; }

        ///<summary>
        ///Start of interval to query for bookings when they where created. UTC+0 and parameter as defined by date-time - RFC3339
        ///</summary>
        [ApiMember(DataType="dateTime", Description="Start of interval to query for bookings when they where created. UTC+0 and parameter as defined by date-time - RFC3339", ParameterType="query")]
        public virtual DateTime? CreatedFrom { get; set; }

        ///<summary>
        ///End of interval to query for bookings when they where created. UTC+0 and parameter as defined by date-time - RFC3339
        ///</summary>
        [ApiMember(DataType="dateTime", Description="End of interval to query for bookings when they where created. UTC+0 and parameter as defined by date-time - RFC3339", ParameterType="query")]
        public virtual DateTime? CreatedTo { get; set; }

        ///<summary>
        ///Query for specific booking statuses. Valid statuses are TimeBooked = 1, TimeUnbooked = 2, TimeReserved = 3, TimeCanceled = 4, AwaitingPayment = 5, AwaitingPaymentNoTimeLimit = 6, BookedAndPayed = 7, 8 = AwaitingPaymentRequestFromAdmin, 9 = AwaitingPaymentFromProvider. Default is all.
        ///</summary>
        [ApiMember(Description="Query for specific booking statuses. Valid statuses are TimeBooked = 1, TimeUnbooked = 2, TimeReserved = 3, TimeCanceled = 4, AwaitingPayment = 5, AwaitingPaymentNoTimeLimit = 6, BookedAndPayed = 7, 8 = AwaitingPaymentRequestFromAdmin, 9 = AwaitingPaymentFromProvider. Default is all.", ParameterType="query")]
        public virtual int[] StatusIds { get; set; }

        ///<summary>
        ///Query for specific customer
        ///</summary>
        [ApiMember(Description="Query for specific customer", ParameterType="query")]
        public virtual Guid? CustomerId { get; set; }

        ///<summary>
        ///The max limit of records you want to retrieve, default is 100
        ///</summary>
        [ApiMember(DataType="int", Description="The max limit of records you want to retrieve, default is 100", ParameterType="query")]
        public virtual int? MaxLimit { get; set; }

        public virtual ResponseStatus ResponseStatus { get; set; }
    }

    public partial class GroupedBookingQueryResponse
    {
        public virtual Guid CompanyId { get; set; }
        public virtual DateTime Date { get; set; }
        public virtual List<BookingQueryResponse> Bookings { get; set; } = [];
    }

    public partial class InvoiceAddressResponse
    {
        public virtual Guid InvoiceAddressId { get; set; }
        public virtual Guid? UserId { get; set; }
        public virtual string CorporateIdentityNumber { get; set; }
        public virtual string InvoiceAddress1 { get; set; }
        public virtual string InvoiceAddress2 { get; set; }
        public virtual string InvoiceCity { get; set; }
        public virtual string InvoicePostalCode { get; set; }
        public virtual string InvoiceCountryCode { get; set; }
    }

    public partial class LanguageResponse
    {
        public virtual string Id { get; set; }
        public virtual string Name { get; set; }
    }

    public partial class MultipleResourceSettings
    {
        public virtual bool Active { get; set; }
        public virtual int Min { get; set; }
        public virtual int Max { get; set; }
    }

    public partial class ServiceInfoResponse
    {
        public virtual int Id { get; set; }
        public virtual string Name { get; set; }
        public virtual string Description { get; set; }
        public virtual Uri ImageUrl { get; set; }
        public virtual int? LengthInMinutes { get; set; }
        public virtual int MaxNumberOfSpotsPerBooking { get; set; }
        public virtual int MinNumberOfSpotsPerBooking { get; set; }
        public virtual GroupBookingSettings GroupBooking { get; set; }
        public virtual MultipleResourceSettings MultipleResource { get; set; }
        public virtual bool IsGroupBooking { get; set; }
        public virtual bool IsPaymentEnabled { get; set; }
    }

}

namespace BokaMera.API.ServiceModel.Enums
{
    public enum ArticleTypeEnum
    {
        ServiceArticle = 1,
        StandAloneArticle = 2,
        RebateCodePunchTicketArticle = 3,
        RebateCodeGiftCardArticle = 4,
        RebateCodeValueCardArticle = 5,
        RebateCodeServiceArticleWithDuration = 6,
    }

    public enum BokaMeraDayOfWeek
    {
        Monday = 1,
        Tuesday = 2,
        Wednesday = 3,
        Thursday = 4,
        Friday = 5,
        Saturday = 6,
        Sunday = 7,
    }

    public enum BookingStatusEnum
    {
        Booked = 1,
        Unbooked = 2,
        Reserved = 3,
        Canceled = 4,
        AwaitingPayment = 5,
        AwaitingPaymentNoTimeLimit = 6,
        Payed = 7,
        AwaitingPaymentRequestFromAdmin = 8,
        AwaitingPaymentFromProvider = 9,
        Invoiced = 10,
    }

    public enum CompanyStatus
    {
        Registered = 1,
        AwaitingApproval = 2,
        Approved = 3,
        Inactive = 4,
        ClosedDown = 5,
        NotApproved = 6,
    }

    public enum ScheduleType
    {
        NotDefined,
        RecurringSchedule,
        DateSchedule,
    }

}

namespace BokaMera.API.ServiceModel.Helpers.Articles.Parameters
{
    public partial class ArticlePaymentSettings
    {
        public virtual string WeeksBeforeArticleIsCancelled { get; set; }
        public virtual string ToleranceWhenComparingPaymentAmounts { get; set; }
    }

}

namespace BokaMera.API.ServiceModel.Helpers.Payment
{
    public partial interface IBokameraPaymentManager<TCreatedCheckoutResponse, TCheckoutResponse, TPaymentResponse>
    {
    }

}

namespace BokaMera.API.ServiceModel.Helpers.PaymentHttpTriggerHelper.Stripe
{
    public partial class StripeCreateCheckoutQuery
    {
        public virtual StripeCreatePaymentOptions CheckoutData { get; set; }
        public virtual RequestOptions RequestOptions { get; set; }
    }

    public partial class StripeCreatePaymentOptions
    {
        public virtual SessionCreateOptions? SessionCreateOptions { get; set; }
        public virtual PaymentIntentCreateOptions? PaymentIntentCreateOptions { get; set; }
        public virtual CustomerCreateOptions? CustomerCreateOptions { get; set; }
    }

}

namespace BokaMera.API.ServiceModel.Helpers.VossHelper
{
    public partial class ProductGroupResponse
    {
        public virtual Guid Id { get; set; }
        public virtual string Name { get; set; }
        public virtual Guid TierId { get; set; }
    }

    public partial class TierResponse
    {
        public virtual Guid Id { get; set; }
        public virtual string Name { get; set; }
        public virtual List<ProductGroupResponse> ProductGroups { get; set; } = [];
    }

    public partial class VossSubscriptionResponse
    {
        public virtual DateTime SubscriptionBillingPeriodStartDate { get; set; }
        public virtual DateTime SubscriptionBillingPeriodEndDate { get; set; }
        public virtual TierResponse Tier { get; set; }
    }

}

namespace BokaMera.API.ServiceModel.Interfaces
{
    public partial interface IBookedTime
        : IInterval
    {
        int Id { get; set; }
        int ServiceId { get; set; }
        int BookedSpots { get; set; }
        int TotalSpots { get; set; }
        int PauseAfterInMinutes { get; set; }
        BookingStatusEnum Status { get; set; }
        int StatusId { get; set; }
        BookedCustomer Customer { get; set; }
    }

    public partial interface ISchedule
    {
        Guid CompanyId { get; set; }
        IList<Resource> Resources { get; set; }
        ScheduleType Type { get; set; }
        bool Active { get; set; }
        bool IsResourceSpecific { get; set; }
    }

    public partial interface ITimeException
        : IInterval
    {
        int Id { get; set; }
        string ReasonText { get; set; }
        bool IsBlock { get; set; }
        string ReasonTextPublic { get; set; }
        bool IsRecurring { get; set; }
        int[] ResourceIds { get; set; } = [];
    }

}

namespace BokaMera.API.ServiceModel.Security
{
    public partial class KeyCloakRole
    {
        public virtual Guid Id { get; set; }
        public virtual string Name { get; set; }
    }

}

namespace BokaMera.Helpers.HttpClientHelper
{
    public partial class CustomApiResult<TResult>
    {
        public virtual TResult? Data { get; set; }
        public virtual bool Success { get; set; }
        public virtual string? ErrorMessage { get; set; }
        public virtual HttpStatusCode? StatusCode { get; set; }
        public virtual string? RawResponse { get; set; }
    }

}

namespace BokaMera.VossIntegration.ApiTools.Enums
{
    public enum CountryCodeEnum
    {
        AD,
        AE,
        AF,
        AG,
        AI,
        AL,
        AM,
        AO,
        AQ,
        AR,
        AS,
        AT,
        AU,
        AW,
        AX,
        AZ,
        BA,
        BB,
        BD,
        BE,
        BF,
        BG,
        BH,
        BI,
        BJ,
        BL,
        BM,
        BN,
        BO,
        BQ,
        BR,
        BS,
        BT,
        BV,
        BW,
        BY,
        BZ,
        CA,
        CC,
        CD,
        CF,
        CG,
        CH,
        CI,
        CK,
        CL,
        CM,
        CN,
        CO,
        CR,
        CU,
        CV,
        CW,
        CX,
        CY,
        CZ,
        DE,
        DJ,
        DK,
        DM,
        DO,
        DZ,
        EC,
        EE,
        EG,
        EH,
        ER,
        ES,
        ET,
        FI,
        FJ,
        FK,
        FM,
        FO,
        FR,
        GA,
        GB,
        GD,
        GE,
        GF,
        GG,
        GH,
        GI,
        GL,
        GM,
        GN,
        GP,
        GQ,
        GR,
        GS,
        GT,
        GU,
        GW,
        GY,
        HK,
        HM,
        HN,
        HR,
        HT,
        HU,
        ID,
        IE,
        IL,
        IM,
        IN,
        IO,
        IQ,
        IR,
        IS,
        IT,
        JE,
        JM,
        JO,
        JP,
        KE,
        KG,
        KH,
        KI,
        KM,
        KN,
        KP,
        KR,
        KW,
        KY,
        KZ,
        LA,
        LB,
        LC,
        LI,
        LK,
        LR,
        LS,
        LT,
        LU,
        LV,
        LY,
        MA,
        MC,
        MD,
        ME,
        MF,
        MG,
        MH,
        MK,
        ML,
        MM,
        MN,
        MO,
        MP,
        MQ,
        MR,
        MS,
        MT,
        MU,
        MV,
        MW,
        MX,
        MY,
        MZ,
        NA,
        NC,
        NE,
        NF,
        NG,
        NI,
        NL,
        NO,
        NP,
        NR,
        NU,
        NZ,
        OM,
        PA,
        PE,
        PF,
        PG,
        PH,
        PK,
        PL,
        PM,
        PN,
        PR,
        PS,
        PT,
        PW,
        PY,
        QA,
        RE,
        RO,
        RS,
        RU,
        RW,
        SA,
        SB,
        SC,
        SD,
        SE,
        SG,
        SH,
        SI,
        SJ,
        SK,
        SL,
        SM,
        SN,
        SO,
        SR,
        SS,
        ST,
        SV,
        SX,
        SY,
        SZ,
        TC,
        TD,
        TF,
        TG,
        TH,
        TJ,
        TK,
        TL,
        TM,
        TN,
        TO,
        TR,
        TT,
        TV,
        TW,
        TZ,
        UA,
        UG,
        UM,
        US,
        UY,
        UZ,
        VA,
        VC,
        VE,
        VG,
        VI,
        VN,
        VU,
        WF,
        WS,
        YE,
        YT,
        ZA,
        ZM,
        ZW,
    }

}

namespace BokaMera.VossIntegration.ApiTools.Model
{
    [DataContract(Name="CustomerContactPersonDto")]
    public partial class CustomerContactPersonDto
    {
        [DataMember(Name="email", IsRequired=true)]
        public virtual string Email { get; set; }

        [DataMember(Name="firstName", IsRequired=true)]
        public virtual string FirstName { get; set; }

        [DataMember(Name="lastName", IsRequired=true)]
        public virtual string LastName { get; set; }

        [DataMember(Name="phoneNumber")]
        public virtual string PhoneNumber { get; set; }
    }

    [DataContract(Name="CustomerResult")]
    public partial class CustomerResult
    {
        [DataMember(Name="countryCode")]
        public virtual CountryCodeEnum? CountryCode { get; set; }

        [DataMember(Name="id", IsRequired=true)]
        public virtual Guid Id { get; set; }

        [DataMember(Name="name", IsRequired=true)]
        public virtual string Name { get; set; }

        [DataMember(Name="customerNumber")]
        public virtual int? CustomerNumber { get; set; }

        [DataMember(Name="organizationNumber")]
        public virtual string OrganizationNumber { get; set; }

        [DataMember(Name="email")]
        public virtual string Email { get; set; }

        [DataMember(Name="careOf")]
        public virtual string CareOf { get; set; }

        [DataMember(Name="address")]
        public virtual string Address { get; set; }

        [DataMember(Name="postalCode")]
        public virtual string PostalCode { get; set; }

        [DataMember(Name="city")]
        public virtual string City { get; set; }

        [DataMember(Name="electronicInvoiceOperatorCode")]
        public virtual string ElectronicInvoiceOperatorCode { get; set; }

        [DataMember(Name="electronicInvoiceAddress")]
        public virtual string ElectronicInvoiceAddress { get; set; }

        [DataMember(Name="customerGroup")]
        public virtual int? CustomerGroup { get; set; }

        [DataMember(Name="contactPerson")]
        public virtual CustomerContactPersonDto ContactPerson { get; set; }

        [DataMember(Name="targetGroups", EmitDefaultValue=false)]
        public virtual List<CustomerTargetGroupDto> TargetGroups { get; set; } = [];

        [DataMember(Name="expiryDate")]
        public virtual DateTime? ExpiryDate { get; set; }

        [DataMember(Name="created", IsRequired=true)]
        public virtual DateTime Created { get; set; }

        [DataMember(Name="externalId")]
        public virtual string ExternalId { get; set; }
    }

    [DataContract(Name="CustomerTargetGroupDto")]
    public partial class CustomerTargetGroupDto
    {
        [DataMember(Name="id", IsRequired=true)]
        public virtual Guid Id { get; set; }

        [DataMember(Name="name", IsRequired=true)]
        public virtual string Name { get; set; }

        [DataMember(Name="isDefault")]
        public virtual bool IsDefault { get; set; }

        [DataMember(Name="externalId")]
        public virtual string ExternalId { get; set; }
    }

}

namespace Microsoft.Extensions.Logging
{
    public partial interface ILogger<TCategoryName>
        : ILogger
    {
    }

}

namespace QvicklyIntegration.Models
{
    public partial class GetCheckoutData
    {
        public virtual CheckoutData CheckoutData { get; set; }
        public virtual CheckoutPaymentData PaymentData { get; set; }
        public virtual List<QvicklyArticle> Articles { get; set; } = [];
    }

    public partial class GetCheckoutResponse
    {
        public virtual Credentials credentials { get; set; }
        public virtual GetCheckoutData GetCheckoutData { get; set; }
    }

    public partial class QvicklyCustomCheckoutData
    {
        public virtual GetCheckoutResponse? QvicklyCheckoutResponse { get; set; }
        public virtual InitCheckoutResponse? InitCheckoutResponse { get; set; }
        public virtual QvicklyPaymentResponse? QvicklyPaymentResponse { get; set; }
    }

}

namespace QvicklyIntegration.Models.Checkout
{
    public partial class Cart
    {
        public virtual CartHandling Handling { get; set; }
        public virtual CartTotal? Total { get; set; }
        public virtual Shipping Shipping { get; set; }
    }

    public partial class CartHandling
    {
        public virtual string withouttax { get; set; }
        public virtual string taxrate { get; set; }
    }

    public partial class CartTotal
    {
        public virtual decimal rounding { get; set; }
        public virtual int withouttax { get; set; }
        public virtual int tax { get; set; }
        public virtual int withtax { get; set; }
    }

    public partial class CheckoutData
    {
        public virtual Uri terms { get; set; }
        public virtual Uri privacyPolicy { get; set; }
        public virtual string redirectOnSuccess { get; set; }
    }

    public partial class CheckoutInvoice
    {
        public virtual string? number { get; set; }
        public virtual string? status { get; set; }
    }

    public partial class CheckoutPaymentData
    {
        public virtual string currency { get; set; }
        public virtual string language { get; set; }
        public virtual string country { get; set; }
        public virtual string autoactivate { get; set; }
        public virtual string orderid { get; set; }
        public virtual string returnmethod { get; set; }
        public virtual string accepturl { get; set; }
        public virtual string cancelurl { get; set; }
        public virtual Uri callbackurl { get; set; }
        public virtual CheckoutInvoice? invoice { get; set; }
    }

    public partial class InitCheckoutData
    {
        public virtual CheckoutData CheckoutData { get; set; }
        public virtual CheckoutPaymentData PaymentData { get; set; }
        public virtual PaymentInfo PaymentInfo { get; set; }
        public virtual QvicklyArticle[] Articles { get; set; } = [];
        public virtual Cart Cart { get; set; }
        public virtual QvicklyCustomer QvicklyCustomer { get; set; }
    }

    public partial class InitCheckoutRequestBody
    {
        public virtual Credentials credentials { get; set; }
        public virtual InitCheckoutData data { get; set; }
        public virtual string function { get; set; }
    }

    public partial class Shipping
    {
        public virtual string firstname { get; set; }
        public virtual string lastname { get; set; }
        public virtual string company { get; set; }
        public virtual string street { get; set; }
        public virtual string street2 { get; set; }
        public virtual string zip { get; set; }
        public virtual string city { get; set; }
        public virtual string country { get; set; }
        public virtual string phone { get; set; }
        public virtual string withouttax { get; set; }
        public virtual string taxrate { get; set; }
    }

}

namespace QvicklyIntegration.Models.Common
{
    public partial class Credentials
    {
        public virtual string hash { get; set; }
        public virtual string id { get; set; }
        public virtual string version { get; set; }
        public virtual string client { get; set; }
        public virtual ServerData serverdata { get; set; }
        public virtual string time { get; set; }
        public virtual string test { get; set; }
        public virtual string language { get; set; }
    }

    public partial class QvicklyArticle
    {
        public virtual string artnr { get; set; }
        public virtual string title { get; set; }
        public virtual int quantity { get; set; }
        public virtual int aprice { get; set; }
        public virtual int tax { get; set; }
        public virtual int discount { get; set; }
        public virtual int withouttax { get; set; }
        public virtual int taxrate { get; set; }
    }

    public partial class ServerData
    {
        public virtual string HTTP_HOST { get; set; }
        public virtual string HTTP_CONNECTION { get; set; }
        public virtual string HTTP_CACHE_CONTROL { get; set; }
        public virtual string HTTP_ACCEPT { get; set; }
        public virtual string HTTP_USER_AGENT { get; set; }
        public virtual string HTTP_ACCEPT_ENCODING { get; set; }
        public virtual string HTTP_ACCEPT_LANGUAGE { get; set; }
        public virtual string PATH { get; set; }
        public virtual string SERVER_SOFTWARE { get; set; }
        public virtual string SERVER_NAME { get; set; }
        public virtual string SERVER_ADDR { get; set; }
        public virtual string SERVER_PORT { get; set; }
        public virtual string REMOTE_ADDR { get; set; }
        public virtual string REMOTE_PORT { get; set; }
        public virtual string GATEWAY_INTERFACE { get; set; }
        public virtual string SERVER_PROTOCOL { get; set; }
        public virtual string REQUEST_METHOD { get; set; }
        public virtual string QUERY_STRING { get; set; }
        public virtual string REQUEST_TIME { get; set; }
    }

}

namespace QvicklyIntegration.Models.Payment
{
    public partial class Card
    {
        public virtual string promptname { get; set; }
        public virtual string recurring { get; set; }
        public virtual string recurringnr { get; set; }
        public virtual string accepturl { get; set; }
        public virtual string cancelurl { get; set; }
        public virtual string callbackurl { get; set; }
        public virtual string returnmethod { get; set; }
    }

    public partial class Credentials
    {
        public virtual string Hash { get; set; }
        public virtual string Logid { get; set; }
    }

    public partial class CustomerBilling
    {
        public virtual string firstname { get; set; }
        public virtual string lastname { get; set; }
        public virtual string company { get; set; }
        public virtual string street { get; set; }
        public virtual string street2 { get; set; }
        public virtual string zip { get; set; }
        public virtual string city { get; set; }
        public virtual string country { get; set; }
        public virtual string phone { get; set; }
        public virtual string email { get; set; }
    }

    public partial class InitCheckoutResponse
    {
        public virtual int Number { get; set; }
        public virtual string Status { get; set; }
        public virtual string OrderId { get; set; }
        public virtual string Url { get; set; }
    }

    public partial class PaymentInfo
    {
        public virtual string paymentdate { get; set; }
        public virtual string paymentterms { get; set; }
        public virtual string yourreference { get; set; }
        public virtual string ourreference { get; set; }
        public virtual string projectname { get; set; }
        public virtual string deliverymethod { get; set; }
        public virtual string deliveryterms { get; set; }
    }

    public partial class QvicklyCustomer
    {
        public virtual string nr { get; set; }
        public virtual string pno { get; set; }
        public virtual CustomerBilling Billing { get; set; }
    }

    public partial class QvicklyPaymentResponse
    {
        public virtual QvikclyPaymentData PaymentData { get; set; }
        public virtual PaymentInfo PaymentInfo { get; set; }
        public virtual Card Card { get; set; }
        public virtual Settlement Settlement { get; set; }
        public virtual QvicklyCustomer QvicklyCustomer { get; set; }
        public virtual QvicklyArticle[] Articles { get; set; } = [];
        public virtual Cart Cart { get; set; }
    }

    public partial class QvikclyPaymentData
    {
        public virtual string method { get; set; }
        public virtual string paymentplanid { get; set; }
        public virtual string currency { get; set; }
        public virtual string country { get; set; }
        public virtual string language { get; set; }
        public virtual string autoactivate { get; set; }
        public virtual string orderid { get; set; }
        public virtual string status { get; set; }
        public virtual string paymentid_related { get; set; }
        public virtual string url { get; set; }
    }

    public partial class Settlement
    {
        public virtual int number { get; set; }
        public virtual string date { get; set; }
    }

}

namespace ServiceStack
{
    [DataContract]
    public partial class QueryBase
    {
        [DataMember(Order=1)]
        public virtual int? Skip { get; set; }

        [DataMember(Order=2)]
        public virtual int? Take { get; set; }

        [DataMember(Order=3)]
        public virtual string? OrderBy { get; set; }

        [DataMember(Order=4)]
        public virtual string? OrderByDesc { get; set; }

        [DataMember(Order=5)]
        public virtual string? Include { get; set; }

        [DataMember(Order=6)]
        public virtual string? Fields { get; set; }

        [DataMember(Order=7)]
        public virtual Dictionary<string, string>? Meta { get; set; }
    }

    public partial class QueryDb<From, Into>
        : QueryBase
    {
    }

    [DataContract]
    public partial class QueryResponse<T>
    {
        [DataMember(Order=1)]
        public virtual int Offset { get; set; }

        [DataMember(Order=2)]
        public virtual int Total { get; set; }

        [DataMember(Order=3)]
        public virtual List<AccessKeyTypeResponse> Results { get; set; } = [];

        [DataMember(Order=4)]
        public virtual Dictionary<string, string>? Meta { get; set; }

        [DataMember(Order=5)]
        public virtual ResponseStatus? ResponseStatus { get; set; }
    }

}

namespace ServiceStack.Data
{
    public partial interface IDbConnectionFactory
    {
    }

}

namespace Stripe
{
    public partial class Address
        : StripeEntity<Address>
    {
        public virtual string? City { get; set; }
        public virtual string? Country { get; set; }
        public virtual string? Line1 { get; set; }
        public virtual string? Line2 { get; set; }
        public virtual string? PostalCode { get; set; }
        public virtual string? State { get; set; }
    }

    public partial class AddressOptions
        : INestedOptions
    {
        public virtual string? City { get; set; }
        public virtual string? Country { get; set; }
        public virtual string? Line1 { get; set; }
        public virtual string? Line2 { get; set; }
        public virtual string? PostalCode { get; set; }
        public virtual string? State { get; set; }
    }

    public partial class AnyOf
        : IAnyOf
    {
        public virtual Object? Value { get; set; }
        public virtual Type? Type { get; set; }
    }

    public partial class AnyOf<T1, T2>
        : AnyOf
    {
        public virtual Object? Value { get; set; }
        public virtual Type? Type { get; set; }
    }

    public partial class BaseOptions
        : INestedOptions
    {
        public virtual IDictionary<string, Object>? ExtraParams { get; set; }
    }

    public partial class CardCreateNestedOptions
        : INestedOptions, IHasMetadata, IHasObject
    {
        public virtual string? AddressCity { get; set; }
        public virtual string? AddressCountry { get; set; }
        public virtual string? AddressLine1 { get; set; }
        public virtual string? AddressLine2 { get; set; }
        public virtual string? AddressState { get; set; }
        public virtual string? AddressZip { get; set; }
        public virtual string? Currency { get; set; }
        public virtual string? Cvc { get; set; }
        public virtual long? ExpMonth { get; set; }
        public virtual long? ExpYear { get; set; }
        public virtual Dictionary<string, string>? Metadata { get; set; }
        public virtual string? Name { get; set; }
        public virtual string? Number { get; set; }
        public virtual string? Object { get; set; }
    }

    public partial class ChargeShippingOptions
        : INestedOptions
    {
        public virtual AddressOptions? Address { get; set; }
        public virtual string? Carrier { get; set; }
        public virtual string? Name { get; set; }
        public virtual string? Phone { get; set; }
        public virtual string? TrackingNumber { get; set; }
    }

    public partial class Coupon
        : StripeEntity<Coupon>, IHasId, IHasMetadata, IHasObject
    {
        public virtual string? Id { get; set; }
        public virtual string? Object { get; set; }
        public virtual long? AmountOff { get; set; }
        public virtual CouponAppliesTo? AppliesTo { get; set; }
        public virtual DateTime Created { get; set; }
        public virtual string? Currency { get; set; }
        public virtual Dictionary<string, CouponCurrencyOptions>? CurrencyOptions { get; set; }
        public virtual string? Duration { get; set; }
        public virtual long? DurationInMonths { get; set; }
        public virtual bool Livemode { get; set; }
        public virtual long? MaxRedemptions { get; set; }
        public virtual Dictionary<string, string>? Metadata { get; set; }
        public virtual string? Name { get; set; }
        public virtual decimal? PercentOff { get; set; }
        public virtual DateTime? RedeemBy { get; set; }
        public virtual long TimesRedeemed { get; set; }
        public virtual bool Valid { get; set; }
    }

    public partial class CouponAppliesTo
        : StripeEntity<CouponAppliesTo>
    {
        public virtual List<string>? Products { get; set; }
    }

    public partial class CouponCurrencyOptions
        : StripeEntity<CouponCurrencyOptions>
    {
        public virtual long AmountOff { get; set; }
    }

    public partial class CustomerCashBalanceOptions
        : INestedOptions
    {
        public virtual CustomerCashBalanceSettingsOptions? Settings { get; set; }
    }

    public partial class CustomerCashBalanceSettingsOptions
        : INestedOptions
    {
        public virtual string? ReconciliationMode { get; set; }
    }

    public partial class CustomerCreateOptions
        : BaseOptions, IHasMetadata
    {
        public virtual AddressOptions? Address { get; set; }
        public virtual long? Balance { get; set; }
        public virtual CustomerCashBalanceOptions? CashBalance { get; set; }
        public virtual string? Description { get; set; }
        public virtual string? Email { get; set; }
        public virtual string? InvoicePrefix { get; set; }
        public virtual CustomerInvoiceSettingsOptions? InvoiceSettings { get; set; }
        public virtual Dictionary<string, string>? Metadata { get; set; }
        public virtual string? Name { get; set; }
        public virtual long? NextInvoiceSequence { get; set; }
        public virtual string? PaymentMethod { get; set; }
        public virtual string? Phone { get; set; }
        public virtual string? Plan { get; set; }
        public virtual List<string>? PreferredLocales { get; set; }
        public virtual ShippingOptions? Shipping { get; set; }
        public virtual AnyOf<string, CardCreateNestedOptions>? Source { get; set; }
        public virtual CustomerTaxOptions? Tax { get; set; }
        public virtual string? TaxExempt { get; set; }
        public virtual List<CustomerTaxIdDataOptions>? TaxIdData { get; set; }
        public virtual string? TestClock { get; set; }
        public virtual bool? Validate { get; set; }
    }

    public partial class CustomerInvoiceSettingsCustomFieldOptions
        : INestedOptions
    {
        public virtual string? Name { get; set; }
        public virtual string? Value { get; set; }
    }

    public partial class CustomerInvoiceSettingsOptions
        : INestedOptions
    {
        public virtual List<CustomerInvoiceSettingsCustomFieldOptions>? CustomFields { get; set; }
        public virtual string? DefaultPaymentMethod { get; set; }
        public virtual string? Footer { get; set; }
        public virtual CustomerInvoiceSettingsRenderingOptionsOptions? RenderingOptions { get; set; }
    }

    public partial class CustomerInvoiceSettingsRenderingOptionsOptions
        : INestedOptions
    {
        public virtual string? AmountTaxDisplay { get; set; }
        public virtual string? Template { get; set; }
    }

    public partial class CustomerTaxIdDataOptions
        : INestedOptions
    {
        public virtual string? Type { get; set; }
        public virtual string? Value { get; set; }
    }

    public partial class CustomerTaxOptions
        : INestedOptions
    {
        public virtual string? IpAddress { get; set; }
        public virtual string? ValidateLocation { get; set; }
    }

    public partial class Discount
        : StripeEntity<Discount>, IHasId, IHasObject
    {
        public virtual string? Id { get; set; }
        public virtual string? Object { get; set; }
        public virtual string? CheckoutSession { get; set; }
        public virtual Coupon? Coupon { get; set; }
        public virtual DateTime? End { get; set; }
        public virtual string? Invoice { get; set; }
        public virtual string? InvoiceItem { get; set; }
        public virtual DateTime Start { get; set; }
        public virtual string? Subscription { get; set; }
        public virtual string? SubscriptionItem { get; set; }
    }

    public partial class DobOptions
        : INestedOptions
    {
        public virtual long? Day { get; set; }
        public virtual long? Month { get; set; }
        public virtual long? Year { get; set; }
    }

    public partial interface IPaymentSource
        : IStripeEntity, IHasId, IHasObject
    {
    }

    public partial class LineItem
        : StripeEntity<LineItem>, IHasId, IHasObject
    {
        public virtual string? Id { get; set; }
        public virtual string? Object { get; set; }
        public virtual long AmountDiscount { get; set; }
        public virtual long AmountSubtotal { get; set; }
        public virtual long AmountTax { get; set; }
        public virtual long AmountTotal { get; set; }
        public virtual string? Currency { get; set; }
        public virtual string? Description { get; set; }
        public virtual List<LineItemDiscount>? Discounts { get; set; }
        public virtual Price? Price { get; set; }
        public virtual long? Quantity { get; set; }
        public virtual List<LineItemTax>? Taxes { get; set; }
    }

    public partial class LineItemDiscount
        : StripeEntity<LineItemDiscount>
    {
        public virtual long Amount { get; set; }
        public virtual Discount? Discount { get; set; }
    }

    public partial class LineItemTax
        : StripeEntity<LineItemTax>
    {
        public virtual long Amount { get; set; }
        public virtual TaxRate? Rate { get; set; }
        public virtual string? TaxabilityReason { get; set; }
        public virtual long? TaxableAmount { get; set; }
    }

    public partial class PaymentIntent
        : StripeEntity<PaymentIntent>, IHasId, IHasMetadata, IHasObject
    {
        public virtual string? Id { get; set; }
        public virtual string? Object { get; set; }
        public virtual long Amount { get; set; }
        public virtual long AmountCapturable { get; set; }
        public virtual PaymentIntentAmountDetails? AmountDetails { get; set; }
        public virtual long AmountReceived { get; set; }
        public virtual long? ApplicationFeeAmount { get; set; }
        public virtual PaymentIntentAutomaticPaymentMethods? AutomaticPaymentMethods { get; set; }
        public virtual DateTime? CanceledAt { get; set; }
        public virtual string? CancellationReason { get; set; }
        public virtual string? CaptureMethod { get; set; }
        public virtual string? ClientSecret { get; set; }
        public virtual string? ConfirmationMethod { get; set; }
        public virtual DateTime Created { get; set; }
        public virtual string? Currency { get; set; }
        public virtual string? Description { get; set; }
        public virtual StripeError? LastPaymentError { get; set; }
        public virtual bool Livemode { get; set; }
        public virtual Dictionary<string, string>? Metadata { get; set; }
        public virtual PaymentIntentNextAction? NextAction { get; set; }
        public virtual PaymentIntentPaymentMethodConfigurationDetails? PaymentMethodConfigurationDetails { get; set; }
        public virtual PaymentIntentPaymentMethodOptions? PaymentMethodOptions { get; set; }
        public virtual List<string>? PaymentMethodTypes { get; set; }
        public virtual PaymentIntentPresentmentDetails? PresentmentDetails { get; set; }
        public virtual PaymentIntentProcessing? Processing { get; set; }
        public virtual string? ReceiptEmail { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
        public virtual Shipping? Shipping { get; set; }
        public virtual string? StatementDescriptor { get; set; }
        public virtual string? StatementDescriptorSuffix { get; set; }
        public virtual string? Status { get; set; }
        public virtual PaymentIntentTransferData? TransferData { get; set; }
        public virtual string? TransferGroup { get; set; }
    }

    public partial class PaymentIntentAmountDetails
        : StripeEntity<PaymentIntentAmountDetails>
    {
        public virtual PaymentIntentAmountDetailsTip? Tip { get; set; }
    }

    public partial class PaymentIntentAmountDetailsTip
        : StripeEntity<PaymentIntentAmountDetailsTip>
    {
        public virtual long Amount { get; set; }
    }

    public partial class PaymentIntentAutomaticPaymentMethods
        : StripeEntity<PaymentIntentAutomaticPaymentMethods>
    {
        public virtual string? AllowRedirects { get; set; }
        public virtual bool Enabled { get; set; }
    }

    public partial class PaymentIntentAutomaticPaymentMethodsOptions
        : INestedOptions
    {
        public virtual string? AllowRedirects { get; set; }
        public virtual bool? Enabled { get; set; }
    }

    public partial class PaymentIntentCreateOptions
        : BaseOptions, IHasMetadata
    {
        public virtual long? Amount { get; set; }
        public virtual long? ApplicationFeeAmount { get; set; }
        public virtual PaymentIntentAutomaticPaymentMethodsOptions? AutomaticPaymentMethods { get; set; }
        public virtual string? CaptureMethod { get; set; }
        public virtual bool? Confirm { get; set; }
        public virtual string? ConfirmationMethod { get; set; }
        public virtual string? ConfirmationToken { get; set; }
        public virtual string? Currency { get; set; }
        public virtual string? Customer { get; set; }
        public virtual string? Description { get; set; }
        public virtual bool? ErrorOnRequiresAction { get; set; }
        public virtual string? Mandate { get; set; }
        public virtual PaymentIntentMandateDataOptions? MandateData { get; set; }
        public virtual Dictionary<string, string>? Metadata { get; set; }
        public virtual bool? OffSession { get; set; }
        public virtual string? OnBehalfOf { get; set; }
        public virtual string? PaymentMethod { get; set; }
        public virtual string? PaymentMethodConfiguration { get; set; }
        public virtual PaymentIntentPaymentMethodDataOptions? PaymentMethodData { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsOptions? PaymentMethodOptions { get; set; }
        public virtual List<string>? PaymentMethodTypes { get; set; }
        public virtual PaymentIntentRadarOptionsOptions? RadarOptions { get; set; }
        public virtual string? ReceiptEmail { get; set; }
        public virtual string? ReturnUrl { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
        public virtual ChargeShippingOptions? Shipping { get; set; }
        public virtual string? StatementDescriptor { get; set; }
        public virtual string? StatementDescriptorSuffix { get; set; }
        public virtual PaymentIntentTransferDataOptions? TransferData { get; set; }
        public virtual string? TransferGroup { get; set; }
        public virtual bool? UseStripeSdk { get; set; }
    }

    public partial class PaymentIntentMandateDataCustomerAcceptanceOfflineOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentMandateDataCustomerAcceptanceOnlineOptions
        : INestedOptions
    {
        public virtual string? IpAddress { get; set; }
        public virtual string? UserAgent { get; set; }
    }

    public partial class PaymentIntentMandateDataCustomerAcceptanceOptions
        : INestedOptions
    {
        public virtual DateTime? AcceptedAt { get; set; }
        public virtual PaymentIntentMandateDataCustomerAcceptanceOfflineOptions? Offline { get; set; }
        public virtual PaymentIntentMandateDataCustomerAcceptanceOnlineOptions? Online { get; set; }
        public virtual string? Type { get; set; }
    }

    public partial class PaymentIntentMandateDataOptions
        : INestedOptions
    {
        public virtual PaymentIntentMandateDataCustomerAcceptanceOptions? CustomerAcceptance { get; set; }
    }

    public partial class PaymentIntentNextAction
        : StripeEntity<PaymentIntentNextAction>
    {
        public virtual PaymentIntentNextActionAlipayHandleRedirect? AlipayHandleRedirect { get; set; }
        public virtual PaymentIntentNextActionBoletoDisplayDetails? BoletoDisplayDetails { get; set; }
        public virtual PaymentIntentNextActionCardAwaitNotification? CardAwaitNotification { get; set; }
        public virtual PaymentIntentNextActionCashappHandleRedirectOrDisplayQrCode? CashappHandleRedirectOrDisplayQrCode { get; set; }
        public virtual PaymentIntentNextActionDisplayBankTransferInstructions? DisplayBankTransferInstructions { get; set; }
        public virtual PaymentIntentNextActionKonbiniDisplayDetails? KonbiniDisplayDetails { get; set; }
        public virtual PaymentIntentNextActionMultibancoDisplayDetails? MultibancoDisplayDetails { get; set; }
        public virtual PaymentIntentNextActionOxxoDisplayDetails? OxxoDisplayDetails { get; set; }
        public virtual PaymentIntentNextActionPaynowDisplayQrCode? PaynowDisplayQrCode { get; set; }
        public virtual PaymentIntentNextActionPixDisplayQrCode? PixDisplayQrCode { get; set; }
        public virtual PaymentIntentNextActionPromptpayDisplayQrCode? PromptpayDisplayQrCode { get; set; }
        public virtual PaymentIntentNextActionRedirectToUrl? RedirectToUrl { get; set; }
        public virtual PaymentIntentNextActionSwishHandleRedirectOrDisplayQrCode? SwishHandleRedirectOrDisplayQrCode { get; set; }
        public virtual string? Type { get; set; }
        public virtual PaymentIntentNextActionUseStripeSdk? UseStripeSdk { get; set; }
        public virtual PaymentIntentNextActionVerifyWithMicrodeposits? VerifyWithMicrodeposits { get; set; }
        public virtual PaymentIntentNextActionWechatPayDisplayQrCode? WechatPayDisplayQrCode { get; set; }
        public virtual PaymentIntentNextActionWechatPayRedirectToAndroidApp? WechatPayRedirectToAndroidApp { get; set; }
        public virtual PaymentIntentNextActionWechatPayRedirectToIosApp? WechatPayRedirectToIosApp { get; set; }
    }

    public partial class PaymentIntentNextActionAlipayHandleRedirect
        : StripeEntity<PaymentIntentNextActionAlipayHandleRedirect>
    {
        public virtual string? NativeData { get; set; }
        public virtual string? NativeUrl { get; set; }
        public virtual string? ReturnUrl { get; set; }
        public virtual string? Url { get; set; }
    }

    public partial class PaymentIntentNextActionBoletoDisplayDetails
        : StripeEntity<PaymentIntentNextActionBoletoDisplayDetails>
    {
        public virtual DateTime? ExpiresAt { get; set; }
        public virtual string? HostedVoucherUrl { get; set; }
        public virtual string? Number { get; set; }
        public virtual string? Pdf { get; set; }
    }

    public partial class PaymentIntentNextActionCardAwaitNotification
        : StripeEntity<PaymentIntentNextActionCardAwaitNotification>
    {
        public virtual DateTime? ChargeAttemptAt { get; set; }
        public virtual bool? CustomerApprovalRequired { get; set; }
    }

    public partial class PaymentIntentNextActionCashappHandleRedirectOrDisplayQrCode
        : StripeEntity<PaymentIntentNextActionCashappHandleRedirectOrDisplayQrCode>
    {
        public virtual string? HostedInstructionsUrl { get; set; }
        public virtual string? MobileAuthUrl { get; set; }
        public virtual PaymentIntentNextActionCashappHandleRedirectOrDisplayQrCodeQrCode? QrCode { get; set; }
    }

    public partial class PaymentIntentNextActionCashappHandleRedirectOrDisplayQrCodeQrCode
        : StripeEntity<PaymentIntentNextActionCashappHandleRedirectOrDisplayQrCodeQrCode>
    {
        public virtual DateTime ExpiresAt { get; set; }
        public virtual string? ImageUrlPng { get; set; }
        public virtual string? ImageUrlSvg { get; set; }
    }

    public partial class PaymentIntentNextActionDisplayBankTransferInstructions
        : StripeEntity<PaymentIntentNextActionDisplayBankTransferInstructions>
    {
        public virtual long? AmountRemaining { get; set; }
        public virtual string? Currency { get; set; }
        public virtual List<PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddress>? FinancialAddresses { get; set; }
        public virtual string? HostedInstructionsUrl { get; set; }
        public virtual string? Reference { get; set; }
        public virtual string? Type { get; set; }
    }

    public partial class PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddress
        : StripeEntity<PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddress>
    {
        public virtual PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressAba? Aba { get; set; }
        public virtual PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressIban? Iban { get; set; }
        public virtual PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressSortCode? SortCode { get; set; }
        public virtual PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressSpei? Spei { get; set; }
        public virtual List<string>? SupportedNetworks { get; set; }
        public virtual PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressSwift? Swift { get; set; }
        public virtual string? Type { get; set; }
        public virtual PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressZengin? Zengin { get; set; }
    }

    public partial class PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressAba
        : StripeEntity<PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressAba>
    {
        public virtual Address? AccountHolderAddress { get; set; }
        public virtual string? AccountHolderName { get; set; }
        public virtual string? AccountNumber { get; set; }
        public virtual string? AccountType { get; set; }
        public virtual Address? BankAddress { get; set; }
        public virtual string? BankName { get; set; }
        public virtual string? RoutingNumber { get; set; }
    }

    public partial class PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressIban
        : StripeEntity<PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressIban>
    {
        public virtual Address? AccountHolderAddress { get; set; }
        public virtual string? AccountHolderName { get; set; }
        public virtual Address? BankAddress { get; set; }
        public virtual string? Bic { get; set; }
        public virtual string? Country { get; set; }
        public virtual string? Iban { get; set; }
    }

    public partial class PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressSortCode
        : StripeEntity<PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressSortCode>
    {
        public virtual Address? AccountHolderAddress { get; set; }
        public virtual string? AccountHolderName { get; set; }
        public virtual string? AccountNumber { get; set; }
        public virtual Address? BankAddress { get; set; }
        public virtual string? SortCode { get; set; }
    }

    public partial class PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressSpei
        : StripeEntity<PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressSpei>
    {
        public virtual Address? AccountHolderAddress { get; set; }
        public virtual string? AccountHolderName { get; set; }
        public virtual Address? BankAddress { get; set; }
        public virtual string? BankCode { get; set; }
        public virtual string? BankName { get; set; }
        public virtual string? Clabe { get; set; }
    }

    public partial class PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressSwift
        : StripeEntity<PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressSwift>
    {
        public virtual Address? AccountHolderAddress { get; set; }
        public virtual string? AccountHolderName { get; set; }
        public virtual string? AccountNumber { get; set; }
        public virtual string? AccountType { get; set; }
        public virtual Address? BankAddress { get; set; }
        public virtual string? BankName { get; set; }
        public virtual string? SwiftCode { get; set; }
    }

    public partial class PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressZengin
        : StripeEntity<PaymentIntentNextActionDisplayBankTransferInstructionsFinancialAddressZengin>
    {
        public virtual Address? AccountHolderAddress { get; set; }
        public virtual string? AccountHolderName { get; set; }
        public virtual string? AccountNumber { get; set; }
        public virtual string? AccountType { get; set; }
        public virtual Address? BankAddress { get; set; }
        public virtual string? BankCode { get; set; }
        public virtual string? BankName { get; set; }
        public virtual string? BranchCode { get; set; }
        public virtual string? BranchName { get; set; }
    }

    public partial class PaymentIntentNextActionKonbiniDisplayDetails
        : StripeEntity<PaymentIntentNextActionKonbiniDisplayDetails>
    {
        public virtual DateTime ExpiresAt { get; set; }
        public virtual string? HostedVoucherUrl { get; set; }
        public virtual PaymentIntentNextActionKonbiniDisplayDetailsStores? Stores { get; set; }
    }

    public partial class PaymentIntentNextActionKonbiniDisplayDetailsStores
        : StripeEntity<PaymentIntentNextActionKonbiniDisplayDetailsStores>
    {
        public virtual PaymentIntentNextActionKonbiniDisplayDetailsStoresFamilymart? Familymart { get; set; }
        public virtual PaymentIntentNextActionKonbiniDisplayDetailsStoresLawson? Lawson { get; set; }
        public virtual PaymentIntentNextActionKonbiniDisplayDetailsStoresMinistop? Ministop { get; set; }
        public virtual PaymentIntentNextActionKonbiniDisplayDetailsStoresSeicomart? Seicomart { get; set; }
    }

    public partial class PaymentIntentNextActionKonbiniDisplayDetailsStoresFamilymart
        : StripeEntity<PaymentIntentNextActionKonbiniDisplayDetailsStoresFamilymart>
    {
        public virtual string? ConfirmationNumber { get; set; }
        public virtual string? PaymentCode { get; set; }
    }

    public partial class PaymentIntentNextActionKonbiniDisplayDetailsStoresLawson
        : StripeEntity<PaymentIntentNextActionKonbiniDisplayDetailsStoresLawson>
    {
        public virtual string? ConfirmationNumber { get; set; }
        public virtual string? PaymentCode { get; set; }
    }

    public partial class PaymentIntentNextActionKonbiniDisplayDetailsStoresMinistop
        : StripeEntity<PaymentIntentNextActionKonbiniDisplayDetailsStoresMinistop>
    {
        public virtual string? ConfirmationNumber { get; set; }
        public virtual string? PaymentCode { get; set; }
    }

    public partial class PaymentIntentNextActionKonbiniDisplayDetailsStoresSeicomart
        : StripeEntity<PaymentIntentNextActionKonbiniDisplayDetailsStoresSeicomart>
    {
        public virtual string? ConfirmationNumber { get; set; }
        public virtual string? PaymentCode { get; set; }
    }

    public partial class PaymentIntentNextActionMultibancoDisplayDetails
        : StripeEntity<PaymentIntentNextActionMultibancoDisplayDetails>
    {
        public virtual string? Entity { get; set; }
        public virtual DateTime? ExpiresAt { get; set; }
        public virtual string? HostedVoucherUrl { get; set; }
        public virtual string? Reference { get; set; }
    }

    public partial class PaymentIntentNextActionOxxoDisplayDetails
        : StripeEntity<PaymentIntentNextActionOxxoDisplayDetails>
    {
        public virtual DateTime? ExpiresAfter { get; set; }
        public virtual string? HostedVoucherUrl { get; set; }
        public virtual string? Number { get; set; }
    }

    public partial class PaymentIntentNextActionPaynowDisplayQrCode
        : StripeEntity<PaymentIntentNextActionPaynowDisplayQrCode>
    {
        public virtual string? Data { get; set; }
        public virtual string? HostedInstructionsUrl { get; set; }
        public virtual string? ImageUrlPng { get; set; }
        public virtual string? ImageUrlSvg { get; set; }
    }

    public partial class PaymentIntentNextActionPixDisplayQrCode
        : StripeEntity<PaymentIntentNextActionPixDisplayQrCode>
    {
        public virtual string? Data { get; set; }
        public virtual DateTime ExpiresAt { get; set; }
        public virtual string? HostedInstructionsUrl { get; set; }
        public virtual string? ImageUrlPng { get; set; }
        public virtual string? ImageUrlSvg { get; set; }
    }

    public partial class PaymentIntentNextActionPromptpayDisplayQrCode
        : StripeEntity<PaymentIntentNextActionPromptpayDisplayQrCode>
    {
        public virtual string? Data { get; set; }
        public virtual string? HostedInstructionsUrl { get; set; }
        public virtual string? ImageUrlPng { get; set; }
        public virtual string? ImageUrlSvg { get; set; }
    }

    public partial class PaymentIntentNextActionRedirectToUrl
        : StripeEntity<PaymentIntentNextActionRedirectToUrl>
    {
        public virtual string? ReturnUrl { get; set; }
        public virtual string? Url { get; set; }
    }

    public partial class PaymentIntentNextActionSwishHandleRedirectOrDisplayQrCode
        : StripeEntity<PaymentIntentNextActionSwishHandleRedirectOrDisplayQrCode>
    {
        public virtual string? HostedInstructionsUrl { get; set; }
        public virtual string? MobileAuthUrl { get; set; }
        public virtual PaymentIntentNextActionSwishHandleRedirectOrDisplayQrCodeQrCode? QrCode { get; set; }
    }

    public partial class PaymentIntentNextActionSwishHandleRedirectOrDisplayQrCodeQrCode
        : StripeEntity<PaymentIntentNextActionSwishHandleRedirectOrDisplayQrCodeQrCode>
    {
        public virtual string? Data { get; set; }
        public virtual string? ImageUrlPng { get; set; }
        public virtual string? ImageUrlSvg { get; set; }
    }

    public partial class PaymentIntentNextActionUseStripeSdk
        : StripeEntity<PaymentIntentNextActionUseStripeSdk>
    {
    }

    public partial class PaymentIntentNextActionVerifyWithMicrodeposits
        : StripeEntity<PaymentIntentNextActionVerifyWithMicrodeposits>
    {
        public virtual DateTime ArrivalDate { get; set; }
        public virtual string? HostedVerificationUrl { get; set; }
        public virtual string? MicrodepositType { get; set; }
    }

    public partial class PaymentIntentNextActionWechatPayDisplayQrCode
        : StripeEntity<PaymentIntentNextActionWechatPayDisplayQrCode>
    {
        public virtual string? Data { get; set; }
        public virtual string? HostedInstructionsUrl { get; set; }
        public virtual string? ImageDataUrl { get; set; }
        public virtual string? ImageUrlPng { get; set; }
        public virtual string? ImageUrlSvg { get; set; }
    }

    public partial class PaymentIntentNextActionWechatPayRedirectToAndroidApp
        : StripeEntity<PaymentIntentNextActionWechatPayRedirectToAndroidApp>
    {
        public virtual string? AppId { get; set; }
        public virtual string? NonceStr { get; set; }
        public virtual string? Package { get; set; }
        public virtual string? PartnerId { get; set; }
        public virtual string? PrepayId { get; set; }
        public virtual string? Sign { get; set; }
        public virtual string? Timestamp { get; set; }
    }

    public partial class PaymentIntentNextActionWechatPayRedirectToIosApp
        : StripeEntity<PaymentIntentNextActionWechatPayRedirectToIosApp>
    {
        public virtual string? NativeUrl { get; set; }
    }

    public partial class PaymentIntentPaymentMethodConfigurationDetails
        : StripeEntity<PaymentIntentPaymentMethodConfigurationDetails>, IHasId
    {
        public virtual string? Id { get; set; }
        public virtual string? Parent { get; set; }
    }

    public partial class PaymentIntentPaymentMethodDataAcssDebitOptions
        : INestedOptions
    {
        public virtual string? AccountNumber { get; set; }
        public virtual string? InstitutionNumber { get; set; }
        public virtual string? TransitNumber { get; set; }
    }

    public partial class PaymentIntentPaymentMethodDataAffirmOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodDataAfterpayClearpayOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodDataAlipayOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodDataAlmaOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodDataAmazonPayOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodDataAuBecsDebitOptions
        : INestedOptions
    {
        public virtual string? AccountNumber { get; set; }
        public virtual string? BsbNumber { get; set; }
    }

    public partial class PaymentIntentPaymentMethodDataBacsDebitOptions
        : INestedOptions
    {
        public virtual string? AccountNumber { get; set; }
        public virtual string? SortCode { get; set; }
    }

    public partial class PaymentIntentPaymentMethodDataBancontactOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodDataBillieOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodDataBillingDetailsOptions
        : INestedOptions
    {
        public virtual AddressOptions? Address { get; set; }
        public virtual string? Email { get; set; }
        public virtual string? Name { get; set; }
        public virtual string? Phone { get; set; }
    }

    public partial class PaymentIntentPaymentMethodDataBlikOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodDataBoletoOptions
        : INestedOptions
    {
        public virtual string? TaxId { get; set; }
    }

    public partial class PaymentIntentPaymentMethodDataCashappOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodDataCustomerBalanceOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodDataEpsOptions
        : INestedOptions
    {
        public virtual string? Bank { get; set; }
    }

    public partial class PaymentIntentPaymentMethodDataFpxOptions
        : INestedOptions
    {
        public virtual string? AccountHolderType { get; set; }
        public virtual string? Bank { get; set; }
    }

    public partial class PaymentIntentPaymentMethodDataGiropayOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodDataGrabpayOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodDataIdealOptions
        : INestedOptions
    {
        public virtual string? Bank { get; set; }
    }

    public partial class PaymentIntentPaymentMethodDataInteracPresentOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodDataKakaoPayOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodDataKlarnaOptions
        : INestedOptions
    {
        public virtual DobOptions? Dob { get; set; }
    }

    public partial class PaymentIntentPaymentMethodDataKonbiniOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodDataKrCardOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodDataLinkOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodDataMobilepayOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodDataMultibancoOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodDataNaverPayOptions
        : INestedOptions
    {
        public virtual string? Funding { get; set; }
    }

    public partial class PaymentIntentPaymentMethodDataNzBankAccountOptions
        : INestedOptions
    {
        public virtual string? AccountHolderName { get; set; }
        public virtual string? AccountNumber { get; set; }
        public virtual string? BankCode { get; set; }
        public virtual string? BranchCode { get; set; }
        public virtual string? Reference { get; set; }
        public virtual string? Suffix { get; set; }
    }

    public partial class PaymentIntentPaymentMethodDataOptions
        : INestedOptions, IHasMetadata
    {
        public virtual PaymentIntentPaymentMethodDataAcssDebitOptions? AcssDebit { get; set; }
        public virtual PaymentIntentPaymentMethodDataAffirmOptions? Affirm { get; set; }
        public virtual PaymentIntentPaymentMethodDataAfterpayClearpayOptions? AfterpayClearpay { get; set; }
        public virtual PaymentIntentPaymentMethodDataAlipayOptions? Alipay { get; set; }
        public virtual string? AllowRedisplay { get; set; }
        public virtual PaymentIntentPaymentMethodDataAlmaOptions? Alma { get; set; }
        public virtual PaymentIntentPaymentMethodDataAmazonPayOptions? AmazonPay { get; set; }
        public virtual PaymentIntentPaymentMethodDataAuBecsDebitOptions? AuBecsDebit { get; set; }
        public virtual PaymentIntentPaymentMethodDataBacsDebitOptions? BacsDebit { get; set; }
        public virtual PaymentIntentPaymentMethodDataBancontactOptions? Bancontact { get; set; }
        public virtual PaymentIntentPaymentMethodDataBillieOptions? Billie { get; set; }
        public virtual PaymentIntentPaymentMethodDataBillingDetailsOptions? BillingDetails { get; set; }
        public virtual PaymentIntentPaymentMethodDataBlikOptions? Blik { get; set; }
        public virtual PaymentIntentPaymentMethodDataBoletoOptions? Boleto { get; set; }
        public virtual PaymentIntentPaymentMethodDataCashappOptions? Cashapp { get; set; }
        public virtual PaymentIntentPaymentMethodDataCustomerBalanceOptions? CustomerBalance { get; set; }
        public virtual PaymentIntentPaymentMethodDataEpsOptions? Eps { get; set; }
        public virtual PaymentIntentPaymentMethodDataFpxOptions? Fpx { get; set; }
        public virtual PaymentIntentPaymentMethodDataGiropayOptions? Giropay { get; set; }
        public virtual PaymentIntentPaymentMethodDataGrabpayOptions? Grabpay { get; set; }
        public virtual PaymentIntentPaymentMethodDataIdealOptions? Ideal { get; set; }
        public virtual PaymentIntentPaymentMethodDataInteracPresentOptions? InteracPresent { get; set; }
        public virtual PaymentIntentPaymentMethodDataKakaoPayOptions? KakaoPay { get; set; }
        public virtual PaymentIntentPaymentMethodDataKlarnaOptions? Klarna { get; set; }
        public virtual PaymentIntentPaymentMethodDataKonbiniOptions? Konbini { get; set; }
        public virtual PaymentIntentPaymentMethodDataKrCardOptions? KrCard { get; set; }
        public virtual PaymentIntentPaymentMethodDataLinkOptions? Link { get; set; }
        public virtual Dictionary<string, string>? Metadata { get; set; }
        public virtual PaymentIntentPaymentMethodDataMobilepayOptions? Mobilepay { get; set; }
        public virtual PaymentIntentPaymentMethodDataMultibancoOptions? Multibanco { get; set; }
        public virtual PaymentIntentPaymentMethodDataNaverPayOptions? NaverPay { get; set; }
        public virtual PaymentIntentPaymentMethodDataNzBankAccountOptions? NzBankAccount { get; set; }
        public virtual PaymentIntentPaymentMethodDataOxxoOptions? Oxxo { get; set; }
        public virtual PaymentIntentPaymentMethodDataP24Options? P24 { get; set; }
        public virtual PaymentIntentPaymentMethodDataPayByBankOptions? PayByBank { get; set; }
        public virtual PaymentIntentPaymentMethodDataPaycoOptions? Payco { get; set; }
        public virtual PaymentIntentPaymentMethodDataPaynowOptions? Paynow { get; set; }
        public virtual PaymentIntentPaymentMethodDataPaypalOptions? Paypal { get; set; }
        public virtual PaymentIntentPaymentMethodDataPixOptions? Pix { get; set; }
        public virtual PaymentIntentPaymentMethodDataPromptpayOptions? Promptpay { get; set; }
        public virtual PaymentIntentPaymentMethodDataRadarOptionsOptions? RadarOptions { get; set; }
        public virtual PaymentIntentPaymentMethodDataRevolutPayOptions? RevolutPay { get; set; }
        public virtual PaymentIntentPaymentMethodDataSamsungPayOptions? SamsungPay { get; set; }
        public virtual PaymentIntentPaymentMethodDataSatispayOptions? Satispay { get; set; }
        public virtual PaymentIntentPaymentMethodDataSepaDebitOptions? SepaDebit { get; set; }
        public virtual PaymentIntentPaymentMethodDataSofortOptions? Sofort { get; set; }
        public virtual PaymentIntentPaymentMethodDataSwishOptions? Swish { get; set; }
        public virtual PaymentIntentPaymentMethodDataTwintOptions? Twint { get; set; }
        public virtual string? Type { get; set; }
        public virtual PaymentIntentPaymentMethodDataUsBankAccountOptions? UsBankAccount { get; set; }
        public virtual PaymentIntentPaymentMethodDataWechatPayOptions? WechatPay { get; set; }
        public virtual PaymentIntentPaymentMethodDataZipOptions? Zip { get; set; }
    }

    public partial class PaymentIntentPaymentMethodDataOxxoOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodDataP24Options
        : INestedOptions
    {
        public virtual string? Bank { get; set; }
    }

    public partial class PaymentIntentPaymentMethodDataPayByBankOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodDataPaycoOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodDataPaynowOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodDataPaypalOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodDataPixOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodDataPromptpayOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodDataRadarOptionsOptions
        : INestedOptions
    {
        public virtual string? Session { get; set; }
    }

    public partial class PaymentIntentPaymentMethodDataRevolutPayOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodDataSamsungPayOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodDataSatispayOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodDataSepaDebitOptions
        : INestedOptions
    {
        public virtual string? Iban { get; set; }
    }

    public partial class PaymentIntentPaymentMethodDataSofortOptions
        : INestedOptions
    {
        public virtual string? Country { get; set; }
    }

    public partial class PaymentIntentPaymentMethodDataSwishOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodDataTwintOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodDataUsBankAccountOptions
        : INestedOptions
    {
        public virtual string? AccountHolderType { get; set; }
        public virtual string? AccountNumber { get; set; }
        public virtual string? AccountType { get; set; }
        public virtual string? FinancialConnectionsAccount { get; set; }
        public virtual string? RoutingNumber { get; set; }
    }

    public partial class PaymentIntentPaymentMethodDataWechatPayOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodDataZipOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodOptions
        : StripeEntity<PaymentIntentPaymentMethodOptions>
    {
        public virtual PaymentIntentPaymentMethodOptionsAcssDebit? AcssDebit { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsAffirm? Affirm { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsAfterpayClearpay? AfterpayClearpay { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsAlipay? Alipay { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsAlma? Alma { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsAmazonPay? AmazonPay { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsAuBecsDebit? AuBecsDebit { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsBacsDebit? BacsDebit { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsBancontact? Bancontact { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsBlik? Blik { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsBoleto? Boleto { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsCard? Card { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsCardPresent? CardPresent { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsCashapp? Cashapp { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsCustomerBalance? CustomerBalance { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsEps? Eps { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsFpx? Fpx { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsGiropay? Giropay { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsGrabpay? Grabpay { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsIdeal? Ideal { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsInteracPresent? InteracPresent { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsKakaoPay? KakaoPay { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsKlarna? Klarna { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsKonbini? Konbini { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsKrCard? KrCard { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsLink? Link { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsMobilepay? Mobilepay { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsMultibanco? Multibanco { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsNaverPay? NaverPay { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsNzBankAccount? NzBankAccount { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsOxxo? Oxxo { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsP24? P24 { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsPayByBank? PayByBank { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsPayco? Payco { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsPaynow? Paynow { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsPaypal? Paypal { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsPix? Pix { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsPromptpay? Promptpay { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsRevolutPay? RevolutPay { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsSamsungPay? SamsungPay { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsSepaDebit? SepaDebit { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsSofort? Sofort { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsSwish? Swish { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsTwint? Twint { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsUsBankAccount? UsBankAccount { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsWechatPay? WechatPay { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsZip? Zip { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsAcssDebit
        : StripeEntity<PaymentIntentPaymentMethodOptionsAcssDebit>
    {
        public virtual PaymentIntentPaymentMethodOptionsAcssDebitMandateOptions? MandateOptions { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
        public virtual string? TargetDate { get; set; }
        public virtual string? VerificationMethod { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsAcssDebitMandateOptions
        : StripeEntity<PaymentIntentPaymentMethodOptionsAcssDebitMandateOptions>
    {
        public virtual string? CustomMandateUrl { get; set; }
        public virtual string? IntervalDescription { get; set; }
        public virtual string? PaymentSchedule { get; set; }
        public virtual string? TransactionType { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsAcssDebitMandateOptionsOptions
        : INestedOptions
    {
        public virtual string? CustomMandateUrl { get; set; }
        public virtual string? IntervalDescription { get; set; }
        public virtual string? PaymentSchedule { get; set; }
        public virtual string? TransactionType { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsAcssDebitOptions
        : INestedOptions
    {
        public virtual PaymentIntentPaymentMethodOptionsAcssDebitMandateOptionsOptions? MandateOptions { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
        public virtual string? TargetDate { get; set; }
        public virtual string? VerificationMethod { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsAffirm
        : StripeEntity<PaymentIntentPaymentMethodOptionsAffirm>
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual string? PreferredLocale { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsAffirmOptions
        : INestedOptions
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual string? PreferredLocale { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsAfterpayClearpay
        : StripeEntity<PaymentIntentPaymentMethodOptionsAfterpayClearpay>
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual string? Reference { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsAfterpayClearpayOptions
        : INestedOptions
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual string? Reference { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsAlipay
        : StripeEntity<PaymentIntentPaymentMethodOptionsAlipay>
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsAlipayOptions
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsAlma
        : StripeEntity<PaymentIntentPaymentMethodOptionsAlma>
    {
        public virtual string? CaptureMethod { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsAlmaOptions
        : INestedOptions
    {
        public virtual string? CaptureMethod { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsAmazonPay
        : StripeEntity<PaymentIntentPaymentMethodOptionsAmazonPay>
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsAmazonPayOptions
        : INestedOptions
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsAuBecsDebit
        : StripeEntity<PaymentIntentPaymentMethodOptionsAuBecsDebit>
    {
        public virtual string? SetupFutureUsage { get; set; }
        public virtual string? TargetDate { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsAuBecsDebitOptions
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
        public virtual string? TargetDate { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsBacsDebit
        : StripeEntity<PaymentIntentPaymentMethodOptionsBacsDebit>
    {
        public virtual PaymentIntentPaymentMethodOptionsBacsDebitMandateOptions? MandateOptions { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
        public virtual string? TargetDate { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsBacsDebitMandateOptions
        : StripeEntity<PaymentIntentPaymentMethodOptionsBacsDebitMandateOptions>
    {
        public virtual string? ReferencePrefix { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsBacsDebitMandateOptionsOptions
        : INestedOptions
    {
        public virtual string? ReferencePrefix { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsBacsDebitOptions
        : INestedOptions
    {
        public virtual PaymentIntentPaymentMethodOptionsBacsDebitMandateOptionsOptions? MandateOptions { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
        public virtual string? TargetDate { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsBancontact
        : StripeEntity<PaymentIntentPaymentMethodOptionsBancontact>
    {
        public virtual string? PreferredLanguage { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsBancontactOptions
        : INestedOptions
    {
        public virtual string? PreferredLanguage { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsBlik
        : StripeEntity<PaymentIntentPaymentMethodOptionsBlik>
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsBlikOptions
        : INestedOptions
    {
        public virtual string? Code { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsBoleto
        : StripeEntity<PaymentIntentPaymentMethodOptionsBoleto>
    {
        public virtual long ExpiresAfterDays { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsBoletoOptions
        : INestedOptions
    {
        public virtual long? ExpiresAfterDays { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsCard
        : StripeEntity<PaymentIntentPaymentMethodOptionsCard>
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsCardInstallments? Installments { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsCardMandateOptions? MandateOptions { get; set; }
        public virtual string? Network { get; set; }
        public virtual string? RequestExtendedAuthorization { get; set; }
        public virtual string? RequestIncrementalAuthorization { get; set; }
        public virtual string? RequestMulticapture { get; set; }
        public virtual string? RequestOvercapture { get; set; }
        public virtual string? RequestThreeDSecure { get; set; }
        public virtual bool RequireCvcRecollection { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
        public virtual string? StatementDescriptorSuffixKana { get; set; }
        public virtual string? StatementDescriptorSuffixKanji { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsCardInstallments
        : StripeEntity<PaymentIntentPaymentMethodOptionsCardInstallments>
    {
        public virtual List<PaymentIntentPaymentMethodOptionsCardInstallmentsPlan>? AvailablePlans { get; set; }
        public virtual bool Enabled { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsCardInstallmentsPlan? Plan { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsCardInstallmentsOptions
        : INestedOptions
    {
        public virtual bool? Enabled { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsCardInstallmentsPlanOptions? Plan { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsCardInstallmentsPlan
        : StripeEntity<PaymentIntentPaymentMethodOptionsCardInstallmentsPlan>
    {
        public virtual long? Count { get; set; }
        public virtual string? Interval { get; set; }
        public virtual string? Type { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsCardInstallmentsPlanOptions
        : INestedOptions
    {
        public virtual long? Count { get; set; }
        public virtual string? Interval { get; set; }
        public virtual string? Type { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsCardMandateOptions
        : StripeEntity<PaymentIntentPaymentMethodOptionsCardMandateOptions>
    {
        public virtual long Amount { get; set; }
        public virtual string? AmountType { get; set; }
        public virtual string? Description { get; set; }
        public virtual DateTime? EndDate { get; set; }
        public virtual string? Interval { get; set; }
        public virtual long? IntervalCount { get; set; }
        public virtual string? Reference { get; set; }
        public virtual DateTime StartDate { get; set; }
        public virtual List<string>? SupportedTypes { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsCardMandateOptionsOptions
        : INestedOptions
    {
        public virtual long? Amount { get; set; }
        public virtual string? AmountType { get; set; }
        public virtual string? Description { get; set; }
        public virtual DateTime? EndDate { get; set; }
        public virtual string? Interval { get; set; }
        public virtual long? IntervalCount { get; set; }
        public virtual string? Reference { get; set; }
        public virtual DateTime? StartDate { get; set; }
        public virtual List<string>? SupportedTypes { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsCardOptions
        : INestedOptions
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual string? CvcToken { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsCardInstallmentsOptions? Installments { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsCardMandateOptionsOptions? MandateOptions { get; set; }
        public virtual bool? Moto { get; set; }
        public virtual string? Network { get; set; }
        public virtual string? RequestExtendedAuthorization { get; set; }
        public virtual string? RequestIncrementalAuthorization { get; set; }
        public virtual string? RequestMulticapture { get; set; }
        public virtual string? RequestOvercapture { get; set; }
        public virtual string? RequestThreeDSecure { get; set; }
        public virtual bool? RequireCvcRecollection { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
        public virtual string? StatementDescriptorSuffixKana { get; set; }
        public virtual string? StatementDescriptorSuffixKanji { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsCardThreeDSecureOptions? ThreeDSecure { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsCardPresent
        : StripeEntity<PaymentIntentPaymentMethodOptionsCardPresent>
    {
        public virtual bool? RequestExtendedAuthorization { get; set; }
        public virtual bool? RequestIncrementalAuthorizationSupport { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsCardPresentRouting? Routing { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsCardPresentOptions
        : INestedOptions
    {
        public virtual bool? RequestExtendedAuthorization { get; set; }
        public virtual bool? RequestIncrementalAuthorizationSupport { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsCardPresentRoutingOptions? Routing { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsCardPresentRouting
        : StripeEntity<PaymentIntentPaymentMethodOptionsCardPresentRouting>
    {
        public virtual string? RequestedPriority { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsCardPresentRoutingOptions
        : INestedOptions
    {
        public virtual string? RequestedPriority { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsCardThreeDSecureNetworkOptionsCartesBancairesOptions
        : INestedOptions
    {
        public virtual string? CbAvalgo { get; set; }
        public virtual string? CbExemption { get; set; }
        public virtual long? CbScore { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsCardThreeDSecureNetworkOptionsOptions
        : INestedOptions
    {
        public virtual PaymentIntentPaymentMethodOptionsCardThreeDSecureNetworkOptionsCartesBancairesOptions? CartesBancaires { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsCardThreeDSecureOptions
        : INestedOptions
    {
        public virtual string? AresTransStatus { get; set; }
        public virtual string? Cryptogram { get; set; }
        public virtual string? ElectronicCommerceIndicator { get; set; }
        public virtual string? ExemptionIndicator { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsCardThreeDSecureNetworkOptionsOptions? NetworkOptions { get; set; }
        public virtual string? RequestorChallengeIndicator { get; set; }
        public virtual string? TransactionId { get; set; }
        public virtual string? Version { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsCashapp
        : StripeEntity<PaymentIntentPaymentMethodOptionsCashapp>
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsCashappOptions
        : INestedOptions
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsCustomerBalance
        : StripeEntity<PaymentIntentPaymentMethodOptionsCustomerBalance>
    {
        public virtual PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransfer? BankTransfer { get; set; }
        public virtual string? FundingType { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransfer
        : StripeEntity<PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransfer>
    {
        public virtual PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer? EuBankTransfer { get; set; }
        public virtual List<string>? RequestedAddressTypes { get; set; }
        public virtual string? Type { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer
        : StripeEntity<PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer>
    {
        public virtual string? Country { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransferOptions
        : INestedOptions
    {
        public virtual string? Country { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransferOptions
        : INestedOptions
    {
        public virtual PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransferOptions? EuBankTransfer { get; set; }
        public virtual List<string>? RequestedAddressTypes { get; set; }
        public virtual string? Type { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsCustomerBalanceOptions
        : INestedOptions
    {
        public virtual PaymentIntentPaymentMethodOptionsCustomerBalanceBankTransferOptions? BankTransfer { get; set; }
        public virtual string? FundingType { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsEps
        : StripeEntity<PaymentIntentPaymentMethodOptionsEps>
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsEpsOptions
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsFpx
        : StripeEntity<PaymentIntentPaymentMethodOptionsFpx>
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsFpxOptions
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsGiropay
        : StripeEntity<PaymentIntentPaymentMethodOptionsGiropay>
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsGiropayOptions
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsGrabpay
        : StripeEntity<PaymentIntentPaymentMethodOptionsGrabpay>
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsGrabpayOptions
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsIdeal
        : StripeEntity<PaymentIntentPaymentMethodOptionsIdeal>
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsIdealOptions
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsInteracPresent
        : StripeEntity<PaymentIntentPaymentMethodOptionsInteracPresent>
    {
    }

    public partial class PaymentIntentPaymentMethodOptionsInteracPresentOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodOptionsKakaoPay
        : StripeEntity<PaymentIntentPaymentMethodOptionsKakaoPay>
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsKakaoPayOptions
        : INestedOptions
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsKlarna
        : StripeEntity<PaymentIntentPaymentMethodOptionsKlarna>
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual string? PreferredLocale { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsKlarnaOptions
        : INestedOptions
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual string? PreferredLocale { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsKonbini
        : StripeEntity<PaymentIntentPaymentMethodOptionsKonbini>
    {
        public virtual string? ConfirmationNumber { get; set; }
        public virtual long? ExpiresAfterDays { get; set; }
        public virtual DateTime? ExpiresAt { get; set; }
        public virtual string? ProductDescription { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsKonbiniOptions
        : INestedOptions
    {
        public virtual string? ConfirmationNumber { get; set; }
        public virtual long? ExpiresAfterDays { get; set; }
        public virtual DateTime? ExpiresAt { get; set; }
        public virtual string? ProductDescription { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsKrCard
        : StripeEntity<PaymentIntentPaymentMethodOptionsKrCard>
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsKrCardOptions
        : INestedOptions
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsLink
        : StripeEntity<PaymentIntentPaymentMethodOptionsLink>
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual string? PersistentToken { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsLinkOptions
        : INestedOptions
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual string? PersistentToken { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsMobilepay
        : StripeEntity<PaymentIntentPaymentMethodOptionsMobilepay>
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsMobilepayOptions
        : INestedOptions
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsMultibanco
        : StripeEntity<PaymentIntentPaymentMethodOptionsMultibanco>
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsMultibancoOptions
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsNaverPay
        : StripeEntity<PaymentIntentPaymentMethodOptionsNaverPay>
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsNaverPayOptions
        : INestedOptions
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsNzBankAccount
        : StripeEntity<PaymentIntentPaymentMethodOptionsNzBankAccount>
    {
        public virtual string? SetupFutureUsage { get; set; }
        public virtual string? TargetDate { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsNzBankAccountOptions
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
        public virtual string? TargetDate { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsOptions
        : INestedOptions
    {
        public virtual PaymentIntentPaymentMethodOptionsAcssDebitOptions? AcssDebit { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsAffirmOptions? Affirm { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsAfterpayClearpayOptions? AfterpayClearpay { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsAlipayOptions? Alipay { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsAlmaOptions? Alma { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsAmazonPayOptions? AmazonPay { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsAuBecsDebitOptions? AuBecsDebit { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsBacsDebitOptions? BacsDebit { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsBancontactOptions? Bancontact { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsBlikOptions? Blik { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsBoletoOptions? Boleto { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsCardOptions? Card { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsCardPresentOptions? CardPresent { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsCashappOptions? Cashapp { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsCustomerBalanceOptions? CustomerBalance { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsEpsOptions? Eps { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsFpxOptions? Fpx { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsGiropayOptions? Giropay { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsGrabpayOptions? Grabpay { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsIdealOptions? Ideal { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsInteracPresentOptions? InteracPresent { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsKakaoPayOptions? KakaoPay { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsKlarnaOptions? Klarna { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsKonbiniOptions? Konbini { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsKrCardOptions? KrCard { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsLinkOptions? Link { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsMobilepayOptions? Mobilepay { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsMultibancoOptions? Multibanco { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsNaverPayOptions? NaverPay { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsNzBankAccountOptions? NzBankAccount { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsOxxoOptions? Oxxo { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsP24Options? P24 { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsPayByBankOptions? PayByBank { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsPaycoOptions? Payco { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsPaynowOptions? Paynow { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsPaypalOptions? Paypal { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsPixOptions? Pix { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsPromptpayOptions? Promptpay { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsRevolutPayOptions? RevolutPay { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsSamsungPayOptions? SamsungPay { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsSepaDebitOptions? SepaDebit { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsSofortOptions? Sofort { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsSwishOptions? Swish { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsTwintOptions? Twint { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsUsBankAccountOptions? UsBankAccount { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsWechatPayOptions? WechatPay { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsZipOptions? Zip { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsOxxo
        : StripeEntity<PaymentIntentPaymentMethodOptionsOxxo>
    {
        public virtual long ExpiresAfterDays { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsOxxoOptions
        : INestedOptions
    {
        public virtual long? ExpiresAfterDays { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsP24
        : StripeEntity<PaymentIntentPaymentMethodOptionsP24>
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsP24Options
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
        public virtual bool? TosShownAndAccepted { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsPayByBank
        : StripeEntity<PaymentIntentPaymentMethodOptionsPayByBank>
    {
    }

    public partial class PaymentIntentPaymentMethodOptionsPayByBankOptions
        : INestedOptions
    {
    }

    public partial class PaymentIntentPaymentMethodOptionsPayco
        : StripeEntity<PaymentIntentPaymentMethodOptionsPayco>
    {
        public virtual string? CaptureMethod { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsPaycoOptions
        : INestedOptions
    {
        public virtual string? CaptureMethod { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsPaynow
        : StripeEntity<PaymentIntentPaymentMethodOptionsPaynow>
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsPaynowOptions
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsPaypal
        : StripeEntity<PaymentIntentPaymentMethodOptionsPaypal>
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual string? PreferredLocale { get; set; }
        public virtual string? Reference { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsPaypalOptions
        : INestedOptions
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual string? PreferredLocale { get; set; }
        public virtual string? Reference { get; set; }
        public virtual string? RiskCorrelationId { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsPix
        : StripeEntity<PaymentIntentPaymentMethodOptionsPix>
    {
        public virtual long? ExpiresAfterSeconds { get; set; }
        public virtual DateTime? ExpiresAt { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsPixOptions
        : INestedOptions
    {
        public virtual long? ExpiresAfterSeconds { get; set; }
        public virtual DateTime? ExpiresAt { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsPromptpay
        : StripeEntity<PaymentIntentPaymentMethodOptionsPromptpay>
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsPromptpayOptions
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsRevolutPay
        : StripeEntity<PaymentIntentPaymentMethodOptionsRevolutPay>
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsRevolutPayOptions
        : INestedOptions
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsSamsungPay
        : StripeEntity<PaymentIntentPaymentMethodOptionsSamsungPay>
    {
        public virtual string? CaptureMethod { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsSamsungPayOptions
        : INestedOptions
    {
        public virtual string? CaptureMethod { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsSepaDebit
        : StripeEntity<PaymentIntentPaymentMethodOptionsSepaDebit>
    {
        public virtual PaymentIntentPaymentMethodOptionsSepaDebitMandateOptions? MandateOptions { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
        public virtual string? TargetDate { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsSepaDebitMandateOptions
        : StripeEntity<PaymentIntentPaymentMethodOptionsSepaDebitMandateOptions>
    {
        public virtual string? ReferencePrefix { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsSepaDebitMandateOptionsOptions
        : INestedOptions
    {
        public virtual string? ReferencePrefix { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsSepaDebitOptions
        : INestedOptions
    {
        public virtual PaymentIntentPaymentMethodOptionsSepaDebitMandateOptionsOptions? MandateOptions { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
        public virtual string? TargetDate { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsSofort
        : StripeEntity<PaymentIntentPaymentMethodOptionsSofort>
    {
        public virtual string? PreferredLanguage { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsSofortOptions
        : INestedOptions
    {
        public virtual string? PreferredLanguage { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsSwish
        : StripeEntity<PaymentIntentPaymentMethodOptionsSwish>
    {
        public virtual string? Reference { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsSwishOptions
        : INestedOptions
    {
        public virtual string? Reference { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsTwint
        : StripeEntity<PaymentIntentPaymentMethodOptionsTwint>
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsTwintOptions
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsUsBankAccount
        : StripeEntity<PaymentIntentPaymentMethodOptionsUsBankAccount>
    {
        public virtual PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnections? FinancialConnections { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsUsBankAccountMandateOptions? MandateOptions { get; set; }
        public virtual string? PreferredSettlementSpeed { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
        public virtual string? TargetDate { get; set; }
        public virtual string? VerificationMethod { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnections
        : StripeEntity<PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnections>
    {
        public virtual PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsFilters? Filters { get; set; }
        public virtual List<string>? Permissions { get; set; }
        public virtual List<string>? Prefetch { get; set; }
        public virtual string? ReturnUrl { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsFilters
        : StripeEntity<PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsFilters>
    {
        public virtual List<string>? AccountSubcategories { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsFiltersOptions
        : INestedOptions
    {
        public virtual List<string>? AccountSubcategories { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsOptions
        : INestedOptions
    {
        public virtual PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsFiltersOptions? Filters { get; set; }
        public virtual List<string>? Permissions { get; set; }
        public virtual List<string>? Prefetch { get; set; }
        public virtual string? ReturnUrl { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsUsBankAccountMandateOptions
        : StripeEntity<PaymentIntentPaymentMethodOptionsUsBankAccountMandateOptions>
    {
        public virtual string? CollectionMethod { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsUsBankAccountMandateOptionsOptions
        : INestedOptions
    {
        public virtual string? CollectionMethod { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsUsBankAccountNetworksOptions
        : INestedOptions
    {
        public virtual List<string>? Requested { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsUsBankAccountOptions
        : INestedOptions
    {
        public virtual PaymentIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsOptions? FinancialConnections { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsUsBankAccountMandateOptionsOptions? MandateOptions { get; set; }
        public virtual PaymentIntentPaymentMethodOptionsUsBankAccountNetworksOptions? Networks { get; set; }
        public virtual string? PreferredSettlementSpeed { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
        public virtual string? TargetDate { get; set; }
        public virtual string? VerificationMethod { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsWechatPay
        : StripeEntity<PaymentIntentPaymentMethodOptionsWechatPay>
    {
        public virtual string? AppId { get; set; }
        public virtual string? Client { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsWechatPayOptions
        : INestedOptions
    {
        public virtual string? AppId { get; set; }
        public virtual string? Client { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsZip
        : StripeEntity<PaymentIntentPaymentMethodOptionsZip>
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPaymentMethodOptionsZipOptions
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class PaymentIntentPresentmentDetails
        : StripeEntity<PaymentIntentPresentmentDetails>
    {
        public virtual long PresentmentAmount { get; set; }
        public virtual string? PresentmentCurrency { get; set; }
    }

    public partial class PaymentIntentProcessing
        : StripeEntity<PaymentIntentProcessing>
    {
        public virtual PaymentIntentProcessingCard? Card { get; set; }
        public virtual string? Type { get; set; }
    }

    public partial class PaymentIntentProcessingCard
        : StripeEntity<PaymentIntentProcessingCard>
    {
        public virtual PaymentIntentProcessingCardCustomerNotification? CustomerNotification { get; set; }
    }

    public partial class PaymentIntentProcessingCardCustomerNotification
        : StripeEntity<PaymentIntentProcessingCardCustomerNotification>
    {
        public virtual bool? ApprovalRequested { get; set; }
        public virtual DateTime? CompletesAt { get; set; }
    }

    public partial class PaymentIntentRadarOptionsOptions
        : INestedOptions
    {
        public virtual string? Session { get; set; }
    }

    public partial class PaymentIntentTransferData
        : StripeEntity<PaymentIntentTransferData>
    {
        public virtual long Amount { get; set; }
    }

    public partial class PaymentIntentTransferDataOptions
        : INestedOptions
    {
        public virtual long? Amount { get; set; }
        public virtual string? Destination { get; set; }
    }

    public partial class PaymentMethod
        : StripeEntity<PaymentMethod>, IHasId, IHasMetadata, IHasObject
    {
        public virtual string? Id { get; set; }
        public virtual string? Object { get; set; }
        public virtual PaymentMethodAcssDebit? AcssDebit { get; set; }
        public virtual PaymentMethodAffirm? Affirm { get; set; }
        public virtual PaymentMethodAfterpayClearpay? AfterpayClearpay { get; set; }
        public virtual PaymentMethodAlipay? Alipay { get; set; }
        public virtual string? AllowRedisplay { get; set; }
        public virtual PaymentMethodAlma? Alma { get; set; }
        public virtual PaymentMethodAmazonPay? AmazonPay { get; set; }
        public virtual PaymentMethodAuBecsDebit? AuBecsDebit { get; set; }
        public virtual PaymentMethodBacsDebit? BacsDebit { get; set; }
        public virtual PaymentMethodBancontact? Bancontact { get; set; }
        public virtual PaymentMethodBillie? Billie { get; set; }
        public virtual PaymentMethodBillingDetails? BillingDetails { get; set; }
        public virtual PaymentMethodBlik? Blik { get; set; }
        public virtual PaymentMethodBoleto? Boleto { get; set; }
        public virtual PaymentMethodCard? Card { get; set; }
        public virtual PaymentMethodCardPresent? CardPresent { get; set; }
        public virtual PaymentMethodCashapp? Cashapp { get; set; }
        public virtual DateTime Created { get; set; }
        public virtual PaymentMethodCustomerBalance? CustomerBalance { get; set; }
        public virtual PaymentMethodEps? Eps { get; set; }
        public virtual PaymentMethodFpx? Fpx { get; set; }
        public virtual PaymentMethodGiropay? Giropay { get; set; }
        public virtual PaymentMethodGrabpay? Grabpay { get; set; }
        public virtual PaymentMethodIdeal? Ideal { get; set; }
        public virtual PaymentMethodInteracPresent? InteracPresent { get; set; }
        public virtual PaymentMethodKakaoPay? KakaoPay { get; set; }
        public virtual PaymentMethodKlarna? Klarna { get; set; }
        public virtual PaymentMethodKonbini? Konbini { get; set; }
        public virtual PaymentMethodKrCard? KrCard { get; set; }
        public virtual PaymentMethodLink? Link { get; set; }
        public virtual bool Livemode { get; set; }
        public virtual Dictionary<string, string>? Metadata { get; set; }
        public virtual PaymentMethodMobilepay? Mobilepay { get; set; }
        public virtual PaymentMethodMultibanco? Multibanco { get; set; }
        public virtual PaymentMethodNaverPay? NaverPay { get; set; }
        public virtual PaymentMethodNzBankAccount? NzBankAccount { get; set; }
        public virtual PaymentMethodOxxo? Oxxo { get; set; }
        public virtual PaymentMethodP24? P24 { get; set; }
        public virtual PaymentMethodPayByBank? PayByBank { get; set; }
        public virtual PaymentMethodPayco? Payco { get; set; }
        public virtual PaymentMethodPaynow? Paynow { get; set; }
        public virtual PaymentMethodPaypal? Paypal { get; set; }
        public virtual PaymentMethodPix? Pix { get; set; }
        public virtual PaymentMethodPromptpay? Promptpay { get; set; }
        public virtual PaymentMethodRadarOptions? RadarOptions { get; set; }
        public virtual PaymentMethodRevolutPay? RevolutPay { get; set; }
        public virtual PaymentMethodSamsungPay? SamsungPay { get; set; }
        public virtual PaymentMethodSatispay? Satispay { get; set; }
        public virtual PaymentMethodSepaDebit? SepaDebit { get; set; }
        public virtual PaymentMethodSofort? Sofort { get; set; }
        public virtual PaymentMethodSwish? Swish { get; set; }
        public virtual PaymentMethodTwint? Twint { get; set; }
        public virtual string? Type { get; set; }
        public virtual PaymentMethodUsBankAccount? UsBankAccount { get; set; }
        public virtual PaymentMethodWechatPay? WechatPay { get; set; }
        public virtual PaymentMethodZip? Zip { get; set; }
    }

    public partial class PaymentMethodAcssDebit
        : StripeEntity<PaymentMethodAcssDebit>
    {
        public virtual string? BankName { get; set; }
        public virtual string? Fingerprint { get; set; }
        public virtual string? InstitutionNumber { get; set; }
        public virtual string? Last4 { get; set; }
        public virtual string? TransitNumber { get; set; }
    }

    public partial class PaymentMethodAffirm
        : StripeEntity<PaymentMethodAffirm>
    {
    }

    public partial class PaymentMethodAfterpayClearpay
        : StripeEntity<PaymentMethodAfterpayClearpay>
    {
    }

    public partial class PaymentMethodAlipay
        : StripeEntity<PaymentMethodAlipay>
    {
    }

    public partial class PaymentMethodAlma
        : StripeEntity<PaymentMethodAlma>
    {
    }

    public partial class PaymentMethodAmazonPay
        : StripeEntity<PaymentMethodAmazonPay>
    {
    }

    public partial class PaymentMethodAuBecsDebit
        : StripeEntity<PaymentMethodAuBecsDebit>
    {
        public virtual string? BsbNumber { get; set; }
        public virtual string? Fingerprint { get; set; }
        public virtual string? Last4 { get; set; }
    }

    public partial class PaymentMethodBacsDebit
        : StripeEntity<PaymentMethodBacsDebit>
    {
        public virtual string? Fingerprint { get; set; }
        public virtual string? Last4 { get; set; }
        public virtual string? SortCode { get; set; }
    }

    public partial class PaymentMethodBancontact
        : StripeEntity<PaymentMethodBancontact>
    {
    }

    public partial class PaymentMethodBillie
        : StripeEntity<PaymentMethodBillie>
    {
    }

    public partial class PaymentMethodBillingDetails
        : StripeEntity<PaymentMethodBillingDetails>
    {
        public virtual Address? Address { get; set; }
        public virtual string? Email { get; set; }
        public virtual string? Name { get; set; }
        public virtual string? Phone { get; set; }
    }

    public partial class PaymentMethodBlik
        : StripeEntity<PaymentMethodBlik>
    {
    }

    public partial class PaymentMethodBoleto
        : StripeEntity<PaymentMethodBoleto>
    {
        public virtual string? TaxId { get; set; }
    }

    public partial class PaymentMethodCard
        : StripeEntity<PaymentMethodCard>
    {
        public virtual string? Brand { get; set; }
        public virtual PaymentMethodCardChecks? Checks { get; set; }
        public virtual string? Country { get; set; }
        public virtual string? Description { get; set; }
        public virtual string? DisplayBrand { get; set; }
        public virtual long ExpMonth { get; set; }
        public virtual long ExpYear { get; set; }
        public virtual string? Fingerprint { get; set; }
        public virtual string? Funding { get; set; }
        public virtual PaymentMethodCardGeneratedFrom? GeneratedFrom { get; set; }
        public virtual string? Iin { get; set; }
        public virtual string? Issuer { get; set; }
        public virtual string? Last4 { get; set; }
        public virtual PaymentMethodCardNetworks? Networks { get; set; }
        public virtual string? RegulatedStatus { get; set; }
        public virtual PaymentMethodCardThreeDSecureUsage? ThreeDSecureUsage { get; set; }
        public virtual PaymentMethodCardWallet? Wallet { get; set; }
    }

    public partial class PaymentMethodCardChecks
        : StripeEntity<PaymentMethodCardChecks>
    {
        public virtual string? AddressLine1Check { get; set; }
        public virtual string? AddressPostalCodeCheck { get; set; }
        public virtual string? CvcCheck { get; set; }
    }

    public partial class PaymentMethodCardGeneratedFrom
        : StripeEntity<PaymentMethodCardGeneratedFrom>
    {
        public virtual string? Charge { get; set; }
        public virtual PaymentMethodCardGeneratedFromPaymentMethodDetails? PaymentMethodDetails { get; set; }
    }

    public partial class PaymentMethodCardGeneratedFromPaymentMethodDetails
        : StripeEntity<PaymentMethodCardGeneratedFromPaymentMethodDetails>
    {
        public virtual PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresent? CardPresent { get; set; }
        public virtual string? Type { get; set; }
    }

    public partial class PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresent
        : StripeEntity<PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresent>
    {
        public virtual long? AmountAuthorized { get; set; }
        public virtual string? Brand { get; set; }
        public virtual string? BrandProduct { get; set; }
        public virtual DateTime CaptureBefore { get; set; }
        public virtual string? CardholderName { get; set; }
        public virtual string? Country { get; set; }
        public virtual string? Description { get; set; }
        public virtual string? EmvAuthData { get; set; }
        public virtual long ExpMonth { get; set; }
        public virtual long ExpYear { get; set; }
        public virtual string? Fingerprint { get; set; }
        public virtual string? Funding { get; set; }
        public virtual string? GeneratedCard { get; set; }
        public virtual string? Iin { get; set; }
        public virtual bool IncrementalAuthorizationSupported { get; set; }
        public virtual string? Issuer { get; set; }
        public virtual string? Last4 { get; set; }
        public virtual string? Network { get; set; }
        public virtual string? NetworkTransactionId { get; set; }
        public virtual PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresentOffline? Offline { get; set; }
        public virtual bool OvercaptureSupported { get; set; }
        public virtual List<string>? PreferredLocales { get; set; }
        public virtual string? ReadMethod { get; set; }
        public virtual PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresentReceipt? Receipt { get; set; }
        public virtual PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresentWallet? Wallet { get; set; }
    }

    public partial class PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresentOffline
        : StripeEntity<PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresentOffline>
    {
        public virtual DateTime? StoredAt { get; set; }
        public virtual string? Type { get; set; }
    }

    public partial class PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresentReceipt
        : StripeEntity<PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresentReceipt>
    {
        public virtual string? AccountType { get; set; }
        public virtual string? ApplicationCryptogram { get; set; }
        public virtual string? ApplicationPreferredName { get; set; }
        public virtual string? AuthorizationCode { get; set; }
        public virtual string? AuthorizationResponseCode { get; set; }
        public virtual string? CardholderVerificationMethod { get; set; }
        public virtual string? DedicatedFileName { get; set; }
        public virtual string? TerminalVerificationResults { get; set; }
        public virtual string? TransactionStatusInformation { get; set; }
    }

    public partial class PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresentWallet
        : StripeEntity<PaymentMethodCardGeneratedFromPaymentMethodDetailsCardPresentWallet>
    {
        public virtual string? Type { get; set; }
    }

    public partial class PaymentMethodCardNetworks
        : StripeEntity<PaymentMethodCardNetworks>
    {
        public virtual List<string>? Available { get; set; }
        public virtual string? Preferred { get; set; }
    }

    public partial class PaymentMethodCardPresent
        : StripeEntity<PaymentMethodCardPresent>
    {
        public virtual string? Brand { get; set; }
        public virtual string? BrandProduct { get; set; }
        public virtual string? CardholderName { get; set; }
        public virtual string? Country { get; set; }
        public virtual string? Description { get; set; }
        public virtual long ExpMonth { get; set; }
        public virtual long ExpYear { get; set; }
        public virtual string? Fingerprint { get; set; }
        public virtual string? Funding { get; set; }
        public virtual string? Iin { get; set; }
        public virtual string? Issuer { get; set; }
        public virtual string? Last4 { get; set; }
        public virtual PaymentMethodCardPresentNetworks? Networks { get; set; }
        public virtual PaymentMethodCardPresentOffline? Offline { get; set; }
        public virtual List<string>? PreferredLocales { get; set; }
        public virtual string? ReadMethod { get; set; }
        public virtual PaymentMethodCardPresentWallet? Wallet { get; set; }
    }

    public partial class PaymentMethodCardPresentNetworks
        : StripeEntity<PaymentMethodCardPresentNetworks>
    {
        public virtual List<string>? Available { get; set; }
        public virtual string? Preferred { get; set; }
    }

    public partial class PaymentMethodCardPresentOffline
        : StripeEntity<PaymentMethodCardPresentOffline>
    {
        public virtual DateTime? StoredAt { get; set; }
        public virtual string? Type { get; set; }
    }

    public partial class PaymentMethodCardPresentWallet
        : StripeEntity<PaymentMethodCardPresentWallet>
    {
        public virtual string? Type { get; set; }
    }

    public partial class PaymentMethodCardThreeDSecureUsage
        : StripeEntity<PaymentMethodCardThreeDSecureUsage>
    {
        public virtual bool Supported { get; set; }
    }

    public partial class PaymentMethodCardWallet
        : StripeEntity<PaymentMethodCardWallet>
    {
        public virtual PaymentMethodCardWalletAmexExpressCheckout? AmexExpressCheckout { get; set; }
        public virtual PaymentMethodCardWalletApplePay? ApplePay { get; set; }
        public virtual string? DynamicLast4 { get; set; }
        public virtual PaymentMethodCardWalletGooglePay? GooglePay { get; set; }
        public virtual PaymentMethodCardWalletLink? Link { get; set; }
        public virtual PaymentMethodCardWalletMasterpass? Masterpass { get; set; }
        public virtual PaymentMethodCardWalletSamsungPay? SamsungPay { get; set; }
        public virtual string? Type { get; set; }
        public virtual PaymentMethodCardWalletVisaCheckout? VisaCheckout { get; set; }
    }

    public partial class PaymentMethodCardWalletAmexExpressCheckout
        : StripeEntity<PaymentMethodCardWalletAmexExpressCheckout>
    {
    }

    public partial class PaymentMethodCardWalletApplePay
        : StripeEntity<PaymentMethodCardWalletApplePay>
    {
    }

    public partial class PaymentMethodCardWalletGooglePay
        : StripeEntity<PaymentMethodCardWalletGooglePay>
    {
    }

    public partial class PaymentMethodCardWalletLink
        : StripeEntity<PaymentMethodCardWalletLink>
    {
    }

    public partial class PaymentMethodCardWalletMasterpass
        : StripeEntity<PaymentMethodCardWalletMasterpass>
    {
        public virtual Address? BillingAddress { get; set; }
        public virtual string? Email { get; set; }
        public virtual string? Name { get; set; }
        public virtual Address? ShippingAddress { get; set; }
    }

    public partial class PaymentMethodCardWalletSamsungPay
        : StripeEntity<PaymentMethodCardWalletSamsungPay>
    {
    }

    public partial class PaymentMethodCardWalletVisaCheckout
        : StripeEntity<PaymentMethodCardWalletVisaCheckout>
    {
        public virtual Address? BillingAddress { get; set; }
        public virtual string? Email { get; set; }
        public virtual string? Name { get; set; }
        public virtual Address? ShippingAddress { get; set; }
    }

    public partial class PaymentMethodCashapp
        : StripeEntity<PaymentMethodCashapp>
    {
        public virtual string? BuyerId { get; set; }
        public virtual string? Cashtag { get; set; }
    }

    public partial class PaymentMethodCustomerBalance
        : StripeEntity<PaymentMethodCustomerBalance>
    {
    }

    public partial class PaymentMethodEps
        : StripeEntity<PaymentMethodEps>
    {
        public virtual string? Bank { get; set; }
    }

    public partial class PaymentMethodFpx
        : StripeEntity<PaymentMethodFpx>
    {
        public virtual string? AccountHolderType { get; set; }
        public virtual string? Bank { get; set; }
    }

    public partial class PaymentMethodGiropay
        : StripeEntity<PaymentMethodGiropay>
    {
    }

    public partial class PaymentMethodGrabpay
        : StripeEntity<PaymentMethodGrabpay>
    {
    }

    public partial class PaymentMethodIdeal
        : StripeEntity<PaymentMethodIdeal>
    {
        public virtual string? Bank { get; set; }
        public virtual string? Bic { get; set; }
    }

    public partial class PaymentMethodInteracPresent
        : StripeEntity<PaymentMethodInteracPresent>
    {
        public virtual string? Brand { get; set; }
        public virtual string? CardholderName { get; set; }
        public virtual string? Country { get; set; }
        public virtual string? Description { get; set; }
        public virtual long ExpMonth { get; set; }
        public virtual long ExpYear { get; set; }
        public virtual string? Fingerprint { get; set; }
        public virtual string? Funding { get; set; }
        public virtual string? Iin { get; set; }
        public virtual string? Issuer { get; set; }
        public virtual string? Last4 { get; set; }
        public virtual PaymentMethodInteracPresentNetworks? Networks { get; set; }
        public virtual List<string>? PreferredLocales { get; set; }
        public virtual string? ReadMethod { get; set; }
    }

    public partial class PaymentMethodInteracPresentNetworks
        : StripeEntity<PaymentMethodInteracPresentNetworks>
    {
        public virtual List<string>? Available { get; set; }
        public virtual string? Preferred { get; set; }
    }

    public partial class PaymentMethodKakaoPay
        : StripeEntity<PaymentMethodKakaoPay>
    {
    }

    public partial class PaymentMethodKlarna
        : StripeEntity<PaymentMethodKlarna>
    {
        public virtual PaymentMethodKlarnaDob? Dob { get; set; }
    }

    public partial class PaymentMethodKlarnaDob
        : StripeEntity<PaymentMethodKlarnaDob>
    {
        public virtual long? Day { get; set; }
        public virtual long? Month { get; set; }
        public virtual long? Year { get; set; }
    }

    public partial class PaymentMethodKonbini
        : StripeEntity<PaymentMethodKonbini>
    {
    }

    public partial class PaymentMethodKrCard
        : StripeEntity<PaymentMethodKrCard>
    {
        public virtual string? Brand { get; set; }
        public virtual string? Last4 { get; set; }
    }

    public partial class PaymentMethodLink
        : StripeEntity<PaymentMethodLink>
    {
        public virtual string? Email { get; set; }
        public virtual string? PersistentToken { get; set; }
    }

    public partial class PaymentMethodMobilepay
        : StripeEntity<PaymentMethodMobilepay>
    {
    }

    public partial class PaymentMethodMultibanco
        : StripeEntity<PaymentMethodMultibanco>
    {
    }

    public partial class PaymentMethodNaverPay
        : StripeEntity<PaymentMethodNaverPay>
    {
        public virtual string? BuyerId { get; set; }
        public virtual string? Funding { get; set; }
    }

    public partial class PaymentMethodNzBankAccount
        : StripeEntity<PaymentMethodNzBankAccount>
    {
        public virtual string? AccountHolderName { get; set; }
        public virtual string? BankCode { get; set; }
        public virtual string? BankName { get; set; }
        public virtual string? BranchCode { get; set; }
        public virtual string? Last4 { get; set; }
        public virtual string? Suffix { get; set; }
    }

    public partial class PaymentMethodOxxo
        : StripeEntity<PaymentMethodOxxo>
    {
    }

    public partial class PaymentMethodP24
        : StripeEntity<PaymentMethodP24>
    {
        public virtual string? Bank { get; set; }
    }

    public partial class PaymentMethodPayByBank
        : StripeEntity<PaymentMethodPayByBank>
    {
    }

    public partial class PaymentMethodPayco
        : StripeEntity<PaymentMethodPayco>
    {
    }

    public partial class PaymentMethodPaynow
        : StripeEntity<PaymentMethodPaynow>
    {
    }

    public partial class PaymentMethodPaypal
        : StripeEntity<PaymentMethodPaypal>
    {
        public virtual string? Country { get; set; }
        public virtual string? PayerEmail { get; set; }
        public virtual string? PayerId { get; set; }
    }

    public partial class PaymentMethodPix
        : StripeEntity<PaymentMethodPix>
    {
    }

    public partial class PaymentMethodPromptpay
        : StripeEntity<PaymentMethodPromptpay>
    {
    }

    public partial class PaymentMethodRadarOptions
        : StripeEntity<PaymentMethodRadarOptions>
    {
        public virtual string? Session { get; set; }
    }

    public partial class PaymentMethodRevolutPay
        : StripeEntity<PaymentMethodRevolutPay>
    {
    }

    public partial class PaymentMethodSamsungPay
        : StripeEntity<PaymentMethodSamsungPay>
    {
    }

    public partial class PaymentMethodSatispay
        : StripeEntity<PaymentMethodSatispay>
    {
    }

    public partial class PaymentMethodSepaDebit
        : StripeEntity<PaymentMethodSepaDebit>
    {
        public virtual string? BankCode { get; set; }
        public virtual string? BranchCode { get; set; }
        public virtual string? Country { get; set; }
        public virtual string? Fingerprint { get; set; }
        public virtual PaymentMethodSepaDebitGeneratedFrom? GeneratedFrom { get; set; }
        public virtual string? Last4 { get; set; }
    }

    public partial class PaymentMethodSepaDebitGeneratedFrom
        : StripeEntity<PaymentMethodSepaDebitGeneratedFrom>
    {
    }

    public partial class PaymentMethodSofort
        : StripeEntity<PaymentMethodSofort>
    {
        public virtual string? Country { get; set; }
    }

    public partial class PaymentMethodSwish
        : StripeEntity<PaymentMethodSwish>
    {
    }

    public partial class PaymentMethodTwint
        : StripeEntity<PaymentMethodTwint>
    {
    }

    public partial class PaymentMethodUsBankAccount
        : StripeEntity<PaymentMethodUsBankAccount>
    {
        public virtual string? AccountHolderType { get; set; }
        public virtual string? AccountType { get; set; }
        public virtual string? BankName { get; set; }
        public virtual string? FinancialConnectionsAccount { get; set; }
        public virtual string? Fingerprint { get; set; }
        public virtual string? Last4 { get; set; }
        public virtual PaymentMethodUsBankAccountNetworks? Networks { get; set; }
        public virtual string? RoutingNumber { get; set; }
        public virtual PaymentMethodUsBankAccountStatusDetails? StatusDetails { get; set; }
    }

    public partial class PaymentMethodUsBankAccountNetworks
        : StripeEntity<PaymentMethodUsBankAccountNetworks>
    {
        public virtual string? Preferred { get; set; }
        public virtual List<string>? Supported { get; set; }
    }

    public partial class PaymentMethodUsBankAccountStatusDetails
        : StripeEntity<PaymentMethodUsBankAccountStatusDetails>
    {
        public virtual PaymentMethodUsBankAccountStatusDetailsBlocked? Blocked { get; set; }
    }

    public partial class PaymentMethodUsBankAccountStatusDetailsBlocked
        : StripeEntity<PaymentMethodUsBankAccountStatusDetailsBlocked>
    {
        public virtual string? NetworkCode { get; set; }
        public virtual string? Reason { get; set; }
    }

    public partial class PaymentMethodWechatPay
        : StripeEntity<PaymentMethodWechatPay>
    {
    }

    public partial class PaymentMethodZip
        : StripeEntity<PaymentMethodZip>
    {
    }

    public partial class Price
        : StripeEntity<Price>, IHasId, IHasMetadata, IHasObject
    {
        public virtual string? Id { get; set; }
        public virtual string? Object { get; set; }
        public virtual bool Active { get; set; }
        public virtual string? BillingScheme { get; set; }
        public virtual DateTime Created { get; set; }
        public virtual string? Currency { get; set; }
        public virtual Dictionary<string, PriceCurrencyOptions>? CurrencyOptions { get; set; }
        public virtual PriceCustomUnitAmount? CustomUnitAmount { get; set; }
        public virtual bool Livemode { get; set; }
        public virtual string? LookupKey { get; set; }
        public virtual Dictionary<string, string>? Metadata { get; set; }
        public virtual string? Nickname { get; set; }
        public virtual PriceRecurring? Recurring { get; set; }
        public virtual string? TaxBehavior { get; set; }
        public virtual List<PriceTier>? Tiers { get; set; }
        public virtual string? TiersMode { get; set; }
        public virtual PriceTransformQuantity? TransformQuantity { get; set; }
        public virtual string? Type { get; set; }
        public virtual long? UnitAmount { get; set; }
        public virtual decimal? UnitAmountDecimal { get; set; }
    }

    public partial class PriceCurrencyOptions
        : StripeEntity<PriceCurrencyOptions>
    {
        public virtual PriceCurrencyOptionsCustomUnitAmount? CustomUnitAmount { get; set; }
        public virtual string? TaxBehavior { get; set; }
        public virtual List<PriceCurrencyOptionsTier>? Tiers { get; set; }
        public virtual long? UnitAmount { get; set; }
        public virtual decimal? UnitAmountDecimal { get; set; }
    }

    public partial class PriceCurrencyOptionsCustomUnitAmount
        : StripeEntity<PriceCurrencyOptionsCustomUnitAmount>
    {
        public virtual long? Maximum { get; set; }
        public virtual long? Minimum { get; set; }
        public virtual long? Preset { get; set; }
    }

    public partial class PriceCurrencyOptionsTier
        : StripeEntity<PriceCurrencyOptionsTier>
    {
        public virtual long? FlatAmount { get; set; }
        public virtual decimal? FlatAmountDecimal { get; set; }
        public virtual long? UnitAmount { get; set; }
        public virtual decimal? UnitAmountDecimal { get; set; }
        public virtual long? UpTo { get; set; }
    }

    public partial class PriceCustomUnitAmount
        : StripeEntity<PriceCustomUnitAmount>
    {
        public virtual long? Maximum { get; set; }
        public virtual long? Minimum { get; set; }
        public virtual long? Preset { get; set; }
    }

    public partial class PriceRecurring
        : StripeEntity<PriceRecurring>
    {
        public virtual string? Interval { get; set; }
        public virtual long IntervalCount { get; set; }
        public virtual string? Meter { get; set; }
        public virtual long? TrialPeriodDays { get; set; }
        public virtual string? UsageType { get; set; }
    }

    public partial class PriceTier
        : StripeEntity<PriceTier>
    {
        public virtual long? FlatAmount { get; set; }
        public virtual decimal? FlatAmountDecimal { get; set; }
        public virtual long? UnitAmount { get; set; }
        public virtual decimal? UnitAmountDecimal { get; set; }
        public virtual long? UpTo { get; set; }
    }

    public partial class PriceTransformQuantity
        : StripeEntity<PriceTransformQuantity>
    {
        public virtual long DivideBy { get; set; }
        public virtual string? Round { get; set; }
    }

    public partial class RequestOptions
    {
        public virtual string? ApiKey { get; set; }
        public virtual string? IdempotencyKey { get; set; }
        public virtual string? StripeAccount { get; set; }
        public virtual string? StripeContext { get; set; }
    }

    public partial class SetupIntent
        : StripeEntity<SetupIntent>, IHasId, IHasMetadata, IHasObject
    {
        public virtual string? Id { get; set; }
        public virtual string? Object { get; set; }
        public virtual bool AttachToSelf { get; set; }
        public virtual SetupIntentAutomaticPaymentMethods? AutomaticPaymentMethods { get; set; }
        public virtual string? CancellationReason { get; set; }
        public virtual string? ClientSecret { get; set; }
        public virtual DateTime Created { get; set; }
        public virtual string? Description { get; set; }
        public virtual List<string>? FlowDirections { get; set; }
        public virtual StripeError? LastSetupError { get; set; }
        public virtual bool Livemode { get; set; }
        public virtual Dictionary<string, string>? Metadata { get; set; }
        public virtual SetupIntentNextAction? NextAction { get; set; }
        public virtual SetupIntentPaymentMethodConfigurationDetails? PaymentMethodConfigurationDetails { get; set; }
        public virtual SetupIntentPaymentMethodOptions? PaymentMethodOptions { get; set; }
        public virtual List<string>? PaymentMethodTypes { get; set; }
        public virtual string? Status { get; set; }
        public virtual string? Usage { get; set; }
    }

    public partial class SetupIntentAutomaticPaymentMethods
        : StripeEntity<SetupIntentAutomaticPaymentMethods>
    {
        public virtual string? AllowRedirects { get; set; }
        public virtual bool? Enabled { get; set; }
    }

    public partial class SetupIntentNextAction
        : StripeEntity<SetupIntentNextAction>
    {
        public virtual SetupIntentNextActionCashappHandleRedirectOrDisplayQrCode? CashappHandleRedirectOrDisplayQrCode { get; set; }
        public virtual SetupIntentNextActionRedirectToUrl? RedirectToUrl { get; set; }
        public virtual string? Type { get; set; }
        public virtual SetupIntentNextActionUseStripeSdk? UseStripeSdk { get; set; }
        public virtual SetupIntentNextActionVerifyWithMicrodeposits? VerifyWithMicrodeposits { get; set; }
    }

    public partial class SetupIntentNextActionCashappHandleRedirectOrDisplayQrCode
        : StripeEntity<SetupIntentNextActionCashappHandleRedirectOrDisplayQrCode>
    {
        public virtual string? HostedInstructionsUrl { get; set; }
        public virtual string? MobileAuthUrl { get; set; }
        public virtual SetupIntentNextActionCashappHandleRedirectOrDisplayQrCodeQrCode? QrCode { get; set; }
    }

    public partial class SetupIntentNextActionCashappHandleRedirectOrDisplayQrCodeQrCode
        : StripeEntity<SetupIntentNextActionCashappHandleRedirectOrDisplayQrCodeQrCode>
    {
        public virtual DateTime ExpiresAt { get; set; }
        public virtual string? ImageUrlPng { get; set; }
        public virtual string? ImageUrlSvg { get; set; }
    }

    public partial class SetupIntentNextActionRedirectToUrl
        : StripeEntity<SetupIntentNextActionRedirectToUrl>
    {
        public virtual string? ReturnUrl { get; set; }
        public virtual string? Url { get; set; }
    }

    public partial class SetupIntentNextActionUseStripeSdk
        : StripeEntity<SetupIntentNextActionUseStripeSdk>
    {
    }

    public partial class SetupIntentNextActionVerifyWithMicrodeposits
        : StripeEntity<SetupIntentNextActionVerifyWithMicrodeposits>
    {
        public virtual DateTime ArrivalDate { get; set; }
        public virtual string? HostedVerificationUrl { get; set; }
        public virtual string? MicrodepositType { get; set; }
    }

    public partial class SetupIntentPaymentMethodConfigurationDetails
        : StripeEntity<SetupIntentPaymentMethodConfigurationDetails>, IHasId
    {
        public virtual string? Id { get; set; }
        public virtual string? Parent { get; set; }
    }

    public partial class SetupIntentPaymentMethodOptions
        : StripeEntity<SetupIntentPaymentMethodOptions>
    {
        public virtual SetupIntentPaymentMethodOptionsAcssDebit? AcssDebit { get; set; }
        public virtual SetupIntentPaymentMethodOptionsAmazonPay? AmazonPay { get; set; }
        public virtual SetupIntentPaymentMethodOptionsBacsDebit? BacsDebit { get; set; }
        public virtual SetupIntentPaymentMethodOptionsCard? Card { get; set; }
        public virtual SetupIntentPaymentMethodOptionsCardPresent? CardPresent { get; set; }
        public virtual SetupIntentPaymentMethodOptionsLink? Link { get; set; }
        public virtual SetupIntentPaymentMethodOptionsPaypal? Paypal { get; set; }
        public virtual SetupIntentPaymentMethodOptionsSepaDebit? SepaDebit { get; set; }
        public virtual SetupIntentPaymentMethodOptionsUsBankAccount? UsBankAccount { get; set; }
    }

    public partial class SetupIntentPaymentMethodOptionsAcssDebit
        : StripeEntity<SetupIntentPaymentMethodOptionsAcssDebit>
    {
        public virtual string? Currency { get; set; }
        public virtual SetupIntentPaymentMethodOptionsAcssDebitMandateOptions? MandateOptions { get; set; }
        public virtual string? VerificationMethod { get; set; }
    }

    public partial class SetupIntentPaymentMethodOptionsAcssDebitMandateOptions
        : StripeEntity<SetupIntentPaymentMethodOptionsAcssDebitMandateOptions>
    {
        public virtual string? CustomMandateUrl { get; set; }
        public virtual List<string>? DefaultFor { get; set; }
        public virtual string? IntervalDescription { get; set; }
        public virtual string? PaymentSchedule { get; set; }
        public virtual string? TransactionType { get; set; }
    }

    public partial class SetupIntentPaymentMethodOptionsAmazonPay
        : StripeEntity<SetupIntentPaymentMethodOptionsAmazonPay>
    {
    }

    public partial class SetupIntentPaymentMethodOptionsBacsDebit
        : StripeEntity<SetupIntentPaymentMethodOptionsBacsDebit>
    {
        public virtual SetupIntentPaymentMethodOptionsBacsDebitMandateOptions? MandateOptions { get; set; }
    }

    public partial class SetupIntentPaymentMethodOptionsBacsDebitMandateOptions
        : StripeEntity<SetupIntentPaymentMethodOptionsBacsDebitMandateOptions>
    {
        public virtual string? ReferencePrefix { get; set; }
    }

    public partial class SetupIntentPaymentMethodOptionsCard
        : StripeEntity<SetupIntentPaymentMethodOptionsCard>
    {
        public virtual SetupIntentPaymentMethodOptionsCardMandateOptions? MandateOptions { get; set; }
        public virtual string? Network { get; set; }
        public virtual string? RequestThreeDSecure { get; set; }
    }

    public partial class SetupIntentPaymentMethodOptionsCardMandateOptions
        : StripeEntity<SetupIntentPaymentMethodOptionsCardMandateOptions>
    {
        public virtual long Amount { get; set; }
        public virtual string? AmountType { get; set; }
        public virtual string? Currency { get; set; }
        public virtual string? Description { get; set; }
        public virtual DateTime? EndDate { get; set; }
        public virtual string? Interval { get; set; }
        public virtual long? IntervalCount { get; set; }
        public virtual string? Reference { get; set; }
        public virtual DateTime StartDate { get; set; }
        public virtual List<string>? SupportedTypes { get; set; }
    }

    public partial class SetupIntentPaymentMethodOptionsCardPresent
        : StripeEntity<SetupIntentPaymentMethodOptionsCardPresent>
    {
    }

    public partial class SetupIntentPaymentMethodOptionsLink
        : StripeEntity<SetupIntentPaymentMethodOptionsLink>
    {
        public virtual string? PersistentToken { get; set; }
    }

    public partial class SetupIntentPaymentMethodOptionsPaypal
        : StripeEntity<SetupIntentPaymentMethodOptionsPaypal>
    {
        public virtual string? BillingAgreementId { get; set; }
    }

    public partial class SetupIntentPaymentMethodOptionsSepaDebit
        : StripeEntity<SetupIntentPaymentMethodOptionsSepaDebit>
    {
        public virtual SetupIntentPaymentMethodOptionsSepaDebitMandateOptions? MandateOptions { get; set; }
    }

    public partial class SetupIntentPaymentMethodOptionsSepaDebitMandateOptions
        : StripeEntity<SetupIntentPaymentMethodOptionsSepaDebitMandateOptions>
    {
        public virtual string? ReferencePrefix { get; set; }
    }

    public partial class SetupIntentPaymentMethodOptionsUsBankAccount
        : StripeEntity<SetupIntentPaymentMethodOptionsUsBankAccount>
    {
        public virtual SetupIntentPaymentMethodOptionsUsBankAccountFinancialConnections? FinancialConnections { get; set; }
        public virtual SetupIntentPaymentMethodOptionsUsBankAccountMandateOptions? MandateOptions { get; set; }
        public virtual string? VerificationMethod { get; set; }
    }

    public partial class SetupIntentPaymentMethodOptionsUsBankAccountFinancialConnections
        : StripeEntity<SetupIntentPaymentMethodOptionsUsBankAccountFinancialConnections>
    {
        public virtual SetupIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsFilters? Filters { get; set; }
        public virtual List<string>? Permissions { get; set; }
        public virtual List<string>? Prefetch { get; set; }
        public virtual string? ReturnUrl { get; set; }
    }

    public partial class SetupIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsFilters
        : StripeEntity<SetupIntentPaymentMethodOptionsUsBankAccountFinancialConnectionsFilters>
    {
        public virtual List<string>? AccountSubcategories { get; set; }
    }

    public partial class SetupIntentPaymentMethodOptionsUsBankAccountMandateOptions
        : StripeEntity<SetupIntentPaymentMethodOptionsUsBankAccountMandateOptions>
    {
        public virtual string? CollectionMethod { get; set; }
    }

    public partial class Shipping
        : StripeEntity<Shipping>
    {
        public virtual Address? Address { get; set; }
        public virtual string? Carrier { get; set; }
        public virtual string? Name { get; set; }
        public virtual string? Phone { get; set; }
        public virtual string? TrackingNumber { get; set; }
    }

    public partial class ShippingOptions
        : INestedOptions
    {
        public virtual AddressOptions? Address { get; set; }
        public virtual string? Name { get; set; }
        public virtual string? Phone { get; set; }
    }

    public partial class StripeEntity
        : IStripeEntity
    {
    }

    public partial class StripeEntity<T>
        : StripeEntity
    {
    }

    public partial class StripeError
        : StripeEntity<StripeError>
    {
        public virtual string? Charge { get; set; }
        public virtual string? Code { get; set; }
        public virtual string? DeclineCode { get; set; }
        public virtual string? DocUrl { get; set; }
        public virtual string? Message { get; set; }
        public virtual string? Param { get; set; }
        public virtual PaymentIntent? PaymentIntent { get; set; }
        public virtual PaymentMethod? PaymentMethod { get; set; }
        public virtual string? PaymentMethodType { get; set; }
        public virtual string? RequestLogUrl { get; set; }
        public virtual SetupIntent? SetupIntent { get; set; }
        public virtual IPaymentSource? Source { get; set; }
        public virtual string? Type { get; set; }
        public virtual string? Error { get; set; }
        public virtual string? ErrorDescription { get; set; }
    }

    public partial class StripeList<T>
        : StripeEntity<StripeList<T>>, IHasObject
    {
    }

    public partial class TaxRate
        : StripeEntity<TaxRate>, IHasId, IHasMetadata, IHasObject
    {
        public virtual string? Id { get; set; }
        public virtual string? Object { get; set; }
        public virtual bool Active { get; set; }
        public virtual string? Country { get; set; }
        public virtual DateTime Created { get; set; }
        public virtual string? Description { get; set; }
        public virtual string? DisplayName { get; set; }
        public virtual decimal? EffectivePercentage { get; set; }
        public virtual TaxRateFlatAmount? FlatAmount { get; set; }
        public virtual bool Inclusive { get; set; }
        public virtual string? Jurisdiction { get; set; }
        public virtual string? JurisdictionLevel { get; set; }
        public virtual bool Livemode { get; set; }
        public virtual Dictionary<string, string>? Metadata { get; set; }
        public virtual decimal Percentage { get; set; }
        public virtual string? RateType { get; set; }
        public virtual string? State { get; set; }
        public virtual string? TaxType { get; set; }
    }

    public partial class TaxRateFlatAmount
        : StripeEntity<TaxRateFlatAmount>
    {
        public virtual long Amount { get; set; }
        public virtual string? Currency { get; set; }
    }

}

namespace Stripe.Checkout
{
    public partial class Session
        : StripeEntity<Session>, IHasId, IHasMetadata, IHasObject
    {
        public virtual string? Id { get; set; }
        public virtual string? Object { get; set; }
        public virtual SessionAdaptivePricing? AdaptivePricing { get; set; }
        public virtual SessionAfterExpiration? AfterExpiration { get; set; }
        public virtual bool? AllowPromotionCodes { get; set; }
        public virtual long? AmountSubtotal { get; set; }
        public virtual long? AmountTotal { get; set; }
        public virtual SessionAutomaticTax? AutomaticTax { get; set; }
        public virtual string? BillingAddressCollection { get; set; }
        public virtual string? CancelUrl { get; set; }
        public virtual string? ClientReferenceId { get; set; }
        public virtual string? ClientSecret { get; set; }
        public virtual SessionCollectedInformation? CollectedInformation { get; set; }
        public virtual SessionConsent? Consent { get; set; }
        public virtual SessionConsentCollection? ConsentCollection { get; set; }
        public virtual DateTime Created { get; set; }
        public virtual string? Currency { get; set; }
        public virtual SessionCurrencyConversion? CurrencyConversion { get; set; }
        public virtual List<SessionCustomField>? CustomFields { get; set; }
        public virtual SessionCustomText? CustomText { get; set; }
        public virtual string? CustomerCreation { get; set; }
        public virtual SessionCustomerDetails? CustomerDetails { get; set; }
        public virtual string? CustomerEmail { get; set; }
        public virtual List<SessionDiscount>? Discounts { get; set; }
        public virtual DateTime ExpiresAt { get; set; }
        public virtual SessionInvoiceCreation? InvoiceCreation { get; set; }
        public virtual StripeList<LineItem>? LineItems { get; set; }
        public virtual bool Livemode { get; set; }
        public virtual string? Locale { get; set; }
        public virtual Dictionary<string, string>? Metadata { get; set; }
        public virtual string? Mode { get; set; }
        public virtual List<SessionOptionalItem>? OptionalItems { get; set; }
        public virtual string? PaymentMethodCollection { get; set; }
        public virtual SessionPaymentMethodConfigurationDetails? PaymentMethodConfigurationDetails { get; set; }
        public virtual SessionPaymentMethodOptions? PaymentMethodOptions { get; set; }
        public virtual List<string>? PaymentMethodTypes { get; set; }
        public virtual string? PaymentStatus { get; set; }
        public virtual SessionPermissions? Permissions { get; set; }
        public virtual SessionPhoneNumberCollection? PhoneNumberCollection { get; set; }
        public virtual SessionPresentmentDetails? PresentmentDetails { get; set; }
        public virtual string? RecoveredFrom { get; set; }
        public virtual string? RedirectOnCompletion { get; set; }
        public virtual string? ReturnUrl { get; set; }
        public virtual SessionSavedPaymentMethodOptions? SavedPaymentMethodOptions { get; set; }
        public virtual SessionShippingAddressCollection? ShippingAddressCollection { get; set; }
        public virtual SessionShippingCost? ShippingCost { get; set; }
        public virtual List<SessionShippingOption>? ShippingOptions { get; set; }
        public virtual string? Status { get; set; }
        public virtual string? SubmitType { get; set; }
        public virtual string? SuccessUrl { get; set; }
        public virtual SessionTaxIdCollection? TaxIdCollection { get; set; }
        public virtual SessionTotalDetails? TotalDetails { get; set; }
        public virtual string? UiMode { get; set; }
        public virtual string? Url { get; set; }
    }

    public partial class SessionAdaptivePricing
        : StripeEntity<SessionAdaptivePricing>
    {
        public virtual bool Enabled { get; set; }
    }

    public partial class SessionAdaptivePricingOptions
        : INestedOptions
    {
        public virtual bool? Enabled { get; set; }
    }

    public partial class SessionAfterExpiration
        : StripeEntity<SessionAfterExpiration>
    {
        public virtual SessionAfterExpirationRecovery? Recovery { get; set; }
    }

    public partial class SessionAfterExpirationOptions
        : INestedOptions
    {
        public virtual SessionAfterExpirationRecoveryOptions? Recovery { get; set; }
    }

    public partial class SessionAfterExpirationRecovery
        : StripeEntity<SessionAfterExpirationRecovery>
    {
        public virtual bool AllowPromotionCodes { get; set; }
        public virtual bool Enabled { get; set; }
        public virtual DateTime? ExpiresAt { get; set; }
        public virtual string? Url { get; set; }
    }

    public partial class SessionAfterExpirationRecoveryOptions
        : INestedOptions
    {
        public virtual bool? AllowPromotionCodes { get; set; }
        public virtual bool? Enabled { get; set; }
    }

    public partial class SessionAutomaticTax
        : StripeEntity<SessionAutomaticTax>
    {
        public virtual bool Enabled { get; set; }
        public virtual SessionAutomaticTaxLiability? Liability { get; set; }
        public virtual string? Status { get; set; }
    }

    public partial class SessionAutomaticTaxLiability
        : StripeEntity<SessionAutomaticTaxLiability>
    {
        public virtual string? Type { get; set; }
    }

    public partial class SessionAutomaticTaxLiabilityOptions
        : INestedOptions
    {
        public virtual string? Account { get; set; }
        public virtual string? Type { get; set; }
    }

    public partial class SessionAutomaticTaxOptions
        : INestedOptions
    {
        public virtual bool? Enabled { get; set; }
        public virtual SessionAutomaticTaxLiabilityOptions? Liability { get; set; }
    }

    public partial class SessionCollectedInformation
        : StripeEntity<SessionCollectedInformation>
    {
        public virtual SessionCollectedInformationShippingDetails? ShippingDetails { get; set; }
    }

    public partial class SessionCollectedInformationShippingDetails
        : StripeEntity<SessionCollectedInformationShippingDetails>
    {
        public virtual Address? Address { get; set; }
        public virtual string? Name { get; set; }
    }

    public partial class SessionConsent
        : StripeEntity<SessionConsent>
    {
        public virtual string? Promotions { get; set; }
        public virtual string? TermsOfService { get; set; }
    }

    public partial class SessionConsentCollection
        : StripeEntity<SessionConsentCollection>
    {
        public virtual SessionConsentCollectionPaymentMethodReuseAgreement? PaymentMethodReuseAgreement { get; set; }
        public virtual string? Promotions { get; set; }
        public virtual string? TermsOfService { get; set; }
    }

    public partial class SessionConsentCollectionOptions
        : INestedOptions
    {
        public virtual SessionConsentCollectionPaymentMethodReuseAgreementOptions? PaymentMethodReuseAgreement { get; set; }
        public virtual string? Promotions { get; set; }
        public virtual string? TermsOfService { get; set; }
    }

    public partial class SessionConsentCollectionPaymentMethodReuseAgreement
        : StripeEntity<SessionConsentCollectionPaymentMethodReuseAgreement>
    {
        public virtual string? Position { get; set; }
    }

    public partial class SessionConsentCollectionPaymentMethodReuseAgreementOptions
        : INestedOptions
    {
        public virtual string? Position { get; set; }
    }

    public partial class SessionCreateOptions
        : BaseOptions, IHasMetadata
    {
        public virtual SessionAdaptivePricingOptions? AdaptivePricing { get; set; }
        public virtual SessionAfterExpirationOptions? AfterExpiration { get; set; }
        public virtual bool? AllowPromotionCodes { get; set; }
        public virtual SessionAutomaticTaxOptions? AutomaticTax { get; set; }
        public virtual string? BillingAddressCollection { get; set; }
        public virtual string? CancelUrl { get; set; }
        public virtual string? ClientReferenceId { get; set; }
        public virtual SessionConsentCollectionOptions? ConsentCollection { get; set; }
        public virtual string? Currency { get; set; }
        public virtual List<SessionCustomFieldOptions>? CustomFields { get; set; }
        public virtual SessionCustomTextOptions? CustomText { get; set; }
        public virtual string? Customer { get; set; }
        public virtual string? CustomerCreation { get; set; }
        public virtual string? CustomerEmail { get; set; }
        public virtual SessionCustomerUpdateOptions? CustomerUpdate { get; set; }
        public virtual List<SessionDiscountOptions>? Discounts { get; set; }
        public virtual DateTime? ExpiresAt { get; set; }
        public virtual SessionInvoiceCreationOptions? InvoiceCreation { get; set; }
        public virtual List<SessionLineItemOptions>? LineItems { get; set; }
        public virtual string? Locale { get; set; }
        public virtual Dictionary<string, string>? Metadata { get; set; }
        public virtual string? Mode { get; set; }
        public virtual List<SessionOptionalItemOptions>? OptionalItems { get; set; }
        public virtual SessionPaymentIntentDataOptions? PaymentIntentData { get; set; }
        public virtual string? PaymentMethodCollection { get; set; }
        public virtual string? PaymentMethodConfiguration { get; set; }
        public virtual SessionPaymentMethodDataOptions? PaymentMethodData { get; set; }
        public virtual SessionPaymentMethodOptionsOptions? PaymentMethodOptions { get; set; }
        public virtual List<string>? PaymentMethodTypes { get; set; }
        public virtual SessionPermissionsOptions? Permissions { get; set; }
        public virtual SessionPhoneNumberCollectionOptions? PhoneNumberCollection { get; set; }
        public virtual string? RedirectOnCompletion { get; set; }
        public virtual string? ReturnUrl { get; set; }
        public virtual SessionSavedPaymentMethodOptionsOptions? SavedPaymentMethodOptions { get; set; }
        public virtual SessionSetupIntentDataOptions? SetupIntentData { get; set; }
        public virtual SessionShippingAddressCollectionOptions? ShippingAddressCollection { get; set; }
        public virtual List<SessionShippingOptionOptions>? ShippingOptions { get; set; }
        public virtual string? SubmitType { get; set; }
        public virtual SessionSubscriptionDataOptions? SubscriptionData { get; set; }
        public virtual string? SuccessUrl { get; set; }
        public virtual SessionTaxIdCollectionOptions? TaxIdCollection { get; set; }
        public virtual string? UiMode { get; set; }
    }

    public partial class SessionCurrencyConversion
        : StripeEntity<SessionCurrencyConversion>
    {
        public virtual long AmountSubtotal { get; set; }
        public virtual long AmountTotal { get; set; }
        public virtual decimal FxRate { get; set; }
        public virtual string? SourceCurrency { get; set; }
    }

    public partial class SessionCustomerDetails
        : StripeEntity<SessionCustomerDetails>
    {
        public virtual Address? Address { get; set; }
        public virtual string? Email { get; set; }
        public virtual string? Name { get; set; }
        public virtual string? Phone { get; set; }
        public virtual string? TaxExempt { get; set; }
        public virtual List<SessionCustomerDetailsTaxId>? TaxIds { get; set; }
    }

    public partial class SessionCustomerDetailsTaxId
        : StripeEntity<SessionCustomerDetailsTaxId>
    {
        public virtual string? Type { get; set; }
        public virtual string? Value { get; set; }
    }

    public partial class SessionCustomerUpdateOptions
        : INestedOptions
    {
        public virtual string? Address { get; set; }
        public virtual string? Name { get; set; }
        public virtual string? Shipping { get; set; }
    }

    public partial class SessionCustomField
        : StripeEntity<SessionCustomField>
    {
        public virtual SessionCustomFieldDropdown? Dropdown { get; set; }
        public virtual string? Key { get; set; }
        public virtual SessionCustomFieldLabel? Label { get; set; }
        public virtual SessionCustomFieldNumeric? Numeric { get; set; }
        public virtual bool Optional { get; set; }
        public virtual SessionCustomFieldText? Text { get; set; }
        public virtual string? Type { get; set; }
    }

    public partial class SessionCustomFieldDropdown
        : StripeEntity<SessionCustomFieldDropdown>
    {
        public virtual string? DefaultValue { get; set; }
        public virtual List<SessionCustomFieldDropdownOption>? Options { get; set; }
        public virtual string? Value { get; set; }
    }

    public partial class SessionCustomFieldDropdownOption
        : StripeEntity<SessionCustomFieldDropdownOption>
    {
        public virtual string? Label { get; set; }
        public virtual string? Value { get; set; }
    }

    public partial class SessionCustomFieldDropdownOptionOptions
        : INestedOptions
    {
        public virtual string? Label { get; set; }
        public virtual string? Value { get; set; }
    }

    public partial class SessionCustomFieldDropdownOptions
        : INestedOptions
    {
        public virtual string? DefaultValue { get; set; }
        public virtual List<SessionCustomFieldDropdownOptionOptions>? Options { get; set; }
    }

    public partial class SessionCustomFieldLabel
        : StripeEntity<SessionCustomFieldLabel>
    {
        public virtual string? Custom { get; set; }
        public virtual string? Type { get; set; }
    }

    public partial class SessionCustomFieldLabelOptions
        : INestedOptions
    {
        public virtual string? Custom { get; set; }
        public virtual string? Type { get; set; }
    }

    public partial class SessionCustomFieldNumeric
        : StripeEntity<SessionCustomFieldNumeric>
    {
        public virtual string? DefaultValue { get; set; }
        public virtual long? MaximumLength { get; set; }
        public virtual long? MinimumLength { get; set; }
        public virtual string? Value { get; set; }
    }

    public partial class SessionCustomFieldNumericOptions
        : INestedOptions
    {
        public virtual string? DefaultValue { get; set; }
        public virtual long? MaximumLength { get; set; }
        public virtual long? MinimumLength { get; set; }
    }

    public partial class SessionCustomFieldOptions
        : INestedOptions
    {
        public virtual SessionCustomFieldDropdownOptions? Dropdown { get; set; }
        public virtual string? Key { get; set; }
        public virtual SessionCustomFieldLabelOptions? Label { get; set; }
        public virtual SessionCustomFieldNumericOptions? Numeric { get; set; }
        public virtual bool? Optional { get; set; }
        public virtual SessionCustomFieldTextOptions? Text { get; set; }
        public virtual string? Type { get; set; }
    }

    public partial class SessionCustomFieldText
        : StripeEntity<SessionCustomFieldText>
    {
        public virtual string? DefaultValue { get; set; }
        public virtual long? MaximumLength { get; set; }
        public virtual long? MinimumLength { get; set; }
        public virtual string? Value { get; set; }
    }

    public partial class SessionCustomFieldTextOptions
        : INestedOptions
    {
        public virtual string? DefaultValue { get; set; }
        public virtual long? MaximumLength { get; set; }
        public virtual long? MinimumLength { get; set; }
    }

    public partial class SessionCustomText
        : StripeEntity<SessionCustomText>
    {
        public virtual SessionCustomTextAfterSubmit? AfterSubmit { get; set; }
        public virtual SessionCustomTextShippingAddress? ShippingAddress { get; set; }
        public virtual SessionCustomTextSubmit? Submit { get; set; }
        public virtual SessionCustomTextTermsOfServiceAcceptance? TermsOfServiceAcceptance { get; set; }
    }

    public partial class SessionCustomTextAfterSubmit
        : StripeEntity<SessionCustomTextAfterSubmit>
    {
        public virtual string? Message { get; set; }
    }

    public partial class SessionCustomTextAfterSubmitOptions
        : INestedOptions
    {
        public virtual string? Message { get; set; }
    }

    public partial class SessionCustomTextOptions
        : INestedOptions
    {
        public virtual SessionCustomTextAfterSubmitOptions? AfterSubmit { get; set; }
        public virtual SessionCustomTextShippingAddressOptions? ShippingAddress { get; set; }
        public virtual SessionCustomTextSubmitOptions? Submit { get; set; }
        public virtual SessionCustomTextTermsOfServiceAcceptanceOptions? TermsOfServiceAcceptance { get; set; }
    }

    public partial class SessionCustomTextShippingAddress
        : StripeEntity<SessionCustomTextShippingAddress>
    {
        public virtual string? Message { get; set; }
    }

    public partial class SessionCustomTextShippingAddressOptions
        : INestedOptions
    {
        public virtual string? Message { get; set; }
    }

    public partial class SessionCustomTextSubmit
        : StripeEntity<SessionCustomTextSubmit>
    {
        public virtual string? Message { get; set; }
    }

    public partial class SessionCustomTextSubmitOptions
        : INestedOptions
    {
        public virtual string? Message { get; set; }
    }

    public partial class SessionCustomTextTermsOfServiceAcceptance
        : StripeEntity<SessionCustomTextTermsOfServiceAcceptance>
    {
        public virtual string? Message { get; set; }
    }

    public partial class SessionCustomTextTermsOfServiceAcceptanceOptions
        : INestedOptions
    {
        public virtual string? Message { get; set; }
    }

    public partial class SessionDiscount
        : StripeEntity<SessionDiscount>
    {
    }

    public partial class SessionDiscountOptions
        : INestedOptions
    {
        public virtual string? Coupon { get; set; }
        public virtual string? PromotionCode { get; set; }
    }

    public partial class SessionInvoiceCreation
        : StripeEntity<SessionInvoiceCreation>
    {
        public virtual bool Enabled { get; set; }
        public virtual SessionInvoiceCreationInvoiceData? InvoiceData { get; set; }
    }

    public partial class SessionInvoiceCreationInvoiceData
        : StripeEntity<SessionInvoiceCreationInvoiceData>, IHasMetadata
    {
        public virtual List<SessionInvoiceCreationInvoiceDataCustomField>? CustomFields { get; set; }
        public virtual string? Description { get; set; }
        public virtual string? Footer { get; set; }
        public virtual SessionInvoiceCreationInvoiceDataIssuer? Issuer { get; set; }
        public virtual Dictionary<string, string>? Metadata { get; set; }
        public virtual SessionInvoiceCreationInvoiceDataRenderingOptions? RenderingOptions { get; set; }
    }

    public partial class SessionInvoiceCreationInvoiceDataCustomField
        : StripeEntity<SessionInvoiceCreationInvoiceDataCustomField>
    {
        public virtual string? Name { get; set; }
        public virtual string? Value { get; set; }
    }

    public partial class SessionInvoiceCreationInvoiceDataCustomFieldOptions
        : INestedOptions
    {
        public virtual string? Name { get; set; }
        public virtual string? Value { get; set; }
    }

    public partial class SessionInvoiceCreationInvoiceDataIssuer
        : StripeEntity<SessionInvoiceCreationInvoiceDataIssuer>
    {
        public virtual string? Type { get; set; }
    }

    public partial class SessionInvoiceCreationInvoiceDataIssuerOptions
        : INestedOptions
    {
        public virtual string? Account { get; set; }
        public virtual string? Type { get; set; }
    }

    public partial class SessionInvoiceCreationInvoiceDataOptions
        : INestedOptions, IHasMetadata
    {
        public virtual List<string>? AccountTaxIds { get; set; }
        public virtual List<SessionInvoiceCreationInvoiceDataCustomFieldOptions>? CustomFields { get; set; }
        public virtual string? Description { get; set; }
        public virtual string? Footer { get; set; }
        public virtual SessionInvoiceCreationInvoiceDataIssuerOptions? Issuer { get; set; }
        public virtual Dictionary<string, string>? Metadata { get; set; }
        public virtual SessionInvoiceCreationInvoiceDataRenderingOptionsOptions? RenderingOptions { get; set; }
    }

    public partial class SessionInvoiceCreationInvoiceDataRenderingOptions
        : StripeEntity<SessionInvoiceCreationInvoiceDataRenderingOptions>
    {
        public virtual string? AmountTaxDisplay { get; set; }
    }

    public partial class SessionInvoiceCreationInvoiceDataRenderingOptionsOptions
        : INestedOptions
    {
        public virtual string? AmountTaxDisplay { get; set; }
    }

    public partial class SessionInvoiceCreationOptions
        : INestedOptions
    {
        public virtual bool? Enabled { get; set; }
        public virtual SessionInvoiceCreationInvoiceDataOptions? InvoiceData { get; set; }
    }

    public partial class SessionLineItemAdjustableQuantityOptions
        : INestedOptions
    {
        public virtual bool? Enabled { get; set; }
        public virtual long? Maximum { get; set; }
        public virtual long? Minimum { get; set; }
    }

    public partial class SessionLineItemOptions
        : INestedOptions
    {
        public virtual SessionLineItemAdjustableQuantityOptions? AdjustableQuantity { get; set; }
        public virtual List<string>? DynamicTaxRates { get; set; }
        public virtual string? Price { get; set; }
        public virtual SessionLineItemPriceDataOptions? PriceData { get; set; }
        public virtual long? Quantity { get; set; }
        public virtual List<string>? TaxRates { get; set; }
    }

    public partial class SessionLineItemPriceDataOptions
        : INestedOptions
    {
        public virtual string? Currency { get; set; }
        public virtual string? Product { get; set; }
        public virtual SessionLineItemPriceDataProductDataOptions? ProductData { get; set; }
        public virtual SessionLineItemPriceDataRecurringOptions? Recurring { get; set; }
        public virtual string? TaxBehavior { get; set; }
        public virtual long? UnitAmount { get; set; }
        public virtual decimal? UnitAmountDecimal { get; set; }
    }

    public partial class SessionLineItemPriceDataProductDataOptions
        : INestedOptions, IHasMetadata
    {
        public virtual string? Description { get; set; }
        public virtual List<string>? Images { get; set; }
        public virtual Dictionary<string, string>? Metadata { get; set; }
        public virtual string? Name { get; set; }
        public virtual string? TaxCode { get; set; }
    }

    public partial class SessionLineItemPriceDataRecurringOptions
        : INestedOptions
    {
        public virtual string? Interval { get; set; }
        public virtual long? IntervalCount { get; set; }
    }

    public partial class SessionOptionalItem
        : StripeEntity<SessionOptionalItem>
    {
        public virtual SessionOptionalItemAdjustableQuantity? AdjustableQuantity { get; set; }
        public virtual string? Price { get; set; }
        public virtual long Quantity { get; set; }
    }

    public partial class SessionOptionalItemAdjustableQuantity
        : StripeEntity<SessionOptionalItemAdjustableQuantity>
    {
        public virtual bool Enabled { get; set; }
        public virtual long? Maximum { get; set; }
        public virtual long? Minimum { get; set; }
    }

    public partial class SessionOptionalItemAdjustableQuantityOptions
        : INestedOptions
    {
        public virtual bool? Enabled { get; set; }
        public virtual long? Maximum { get; set; }
        public virtual long? Minimum { get; set; }
    }

    public partial class SessionOptionalItemOptions
        : INestedOptions
    {
        public virtual SessionOptionalItemAdjustableQuantityOptions? AdjustableQuantity { get; set; }
        public virtual string? Price { get; set; }
        public virtual long? Quantity { get; set; }
    }

    public partial class SessionPaymentIntentDataOptions
        : INestedOptions, IHasMetadata
    {
        public virtual long? ApplicationFeeAmount { get; set; }
        public virtual string? CaptureMethod { get; set; }
        public virtual string? Description { get; set; }
        public virtual Dictionary<string, string>? Metadata { get; set; }
        public virtual string? OnBehalfOf { get; set; }
        public virtual string? ReceiptEmail { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
        public virtual ChargeShippingOptions? Shipping { get; set; }
        public virtual string? StatementDescriptor { get; set; }
        public virtual string? StatementDescriptorSuffix { get; set; }
        public virtual SessionPaymentIntentDataTransferDataOptions? TransferData { get; set; }
        public virtual string? TransferGroup { get; set; }
    }

    public partial class SessionPaymentIntentDataTransferDataOptions
        : INestedOptions
    {
        public virtual long? Amount { get; set; }
        public virtual string? Destination { get; set; }
    }

    public partial class SessionPaymentMethodConfigurationDetails
        : StripeEntity<SessionPaymentMethodConfigurationDetails>, IHasId
    {
        public virtual string? Id { get; set; }
        public virtual string? Parent { get; set; }
    }

    public partial class SessionPaymentMethodDataOptions
        : INestedOptions
    {
        public virtual string? AllowRedisplay { get; set; }
    }

    public partial class SessionPaymentMethodOptions
        : StripeEntity<SessionPaymentMethodOptions>
    {
        public virtual SessionPaymentMethodOptionsAcssDebit? AcssDebit { get; set; }
        public virtual SessionPaymentMethodOptionsAffirm? Affirm { get; set; }
        public virtual SessionPaymentMethodOptionsAfterpayClearpay? AfterpayClearpay { get; set; }
        public virtual SessionPaymentMethodOptionsAlipay? Alipay { get; set; }
        public virtual SessionPaymentMethodOptionsAmazonPay? AmazonPay { get; set; }
        public virtual SessionPaymentMethodOptionsAuBecsDebit? AuBecsDebit { get; set; }
        public virtual SessionPaymentMethodOptionsBacsDebit? BacsDebit { get; set; }
        public virtual SessionPaymentMethodOptionsBancontact? Bancontact { get; set; }
        public virtual SessionPaymentMethodOptionsBoleto? Boleto { get; set; }
        public virtual SessionPaymentMethodOptionsCard? Card { get; set; }
        public virtual SessionPaymentMethodOptionsCashapp? Cashapp { get; set; }
        public virtual SessionPaymentMethodOptionsCustomerBalance? CustomerBalance { get; set; }
        public virtual SessionPaymentMethodOptionsEps? Eps { get; set; }
        public virtual SessionPaymentMethodOptionsFpx? Fpx { get; set; }
        public virtual SessionPaymentMethodOptionsGiropay? Giropay { get; set; }
        public virtual SessionPaymentMethodOptionsGrabpay? Grabpay { get; set; }
        public virtual SessionPaymentMethodOptionsIdeal? Ideal { get; set; }
        public virtual SessionPaymentMethodOptionsKakaoPay? KakaoPay { get; set; }
        public virtual SessionPaymentMethodOptionsKlarna? Klarna { get; set; }
        public virtual SessionPaymentMethodOptionsKonbini? Konbini { get; set; }
        public virtual SessionPaymentMethodOptionsKrCard? KrCard { get; set; }
        public virtual SessionPaymentMethodOptionsLink? Link { get; set; }
        public virtual SessionPaymentMethodOptionsMobilepay? Mobilepay { get; set; }
        public virtual SessionPaymentMethodOptionsMultibanco? Multibanco { get; set; }
        public virtual SessionPaymentMethodOptionsNaverPay? NaverPay { get; set; }
        public virtual SessionPaymentMethodOptionsOxxo? Oxxo { get; set; }
        public virtual SessionPaymentMethodOptionsP24? P24 { get; set; }
        public virtual SessionPaymentMethodOptionsPayco? Payco { get; set; }
        public virtual SessionPaymentMethodOptionsPaynow? Paynow { get; set; }
        public virtual SessionPaymentMethodOptionsPaypal? Paypal { get; set; }
        public virtual SessionPaymentMethodOptionsPix? Pix { get; set; }
        public virtual SessionPaymentMethodOptionsRevolutPay? RevolutPay { get; set; }
        public virtual SessionPaymentMethodOptionsSamsungPay? SamsungPay { get; set; }
        public virtual SessionPaymentMethodOptionsSepaDebit? SepaDebit { get; set; }
        public virtual SessionPaymentMethodOptionsSofort? Sofort { get; set; }
        public virtual SessionPaymentMethodOptionsSwish? Swish { get; set; }
        public virtual SessionPaymentMethodOptionsUsBankAccount? UsBankAccount { get; set; }
    }

    public partial class SessionPaymentMethodOptionsAcssDebit
        : StripeEntity<SessionPaymentMethodOptionsAcssDebit>
    {
        public virtual string? Currency { get; set; }
        public virtual SessionPaymentMethodOptionsAcssDebitMandateOptions? MandateOptions { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
        public virtual string? TargetDate { get; set; }
        public virtual string? VerificationMethod { get; set; }
    }

    public partial class SessionPaymentMethodOptionsAcssDebitMandateOptions
        : StripeEntity<SessionPaymentMethodOptionsAcssDebitMandateOptions>
    {
        public virtual string? CustomMandateUrl { get; set; }
        public virtual List<string>? DefaultFor { get; set; }
        public virtual string? IntervalDescription { get; set; }
        public virtual string? PaymentSchedule { get; set; }
        public virtual string? TransactionType { get; set; }
    }

    public partial class SessionPaymentMethodOptionsAcssDebitMandateOptionsOptions
        : INestedOptions
    {
        public virtual string? CustomMandateUrl { get; set; }
        public virtual List<string>? DefaultFor { get; set; }
        public virtual string? IntervalDescription { get; set; }
        public virtual string? PaymentSchedule { get; set; }
        public virtual string? TransactionType { get; set; }
    }

    public partial class SessionPaymentMethodOptionsAcssDebitOptions
        : INestedOptions
    {
        public virtual string? Currency { get; set; }
        public virtual SessionPaymentMethodOptionsAcssDebitMandateOptionsOptions? MandateOptions { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
        public virtual string? TargetDate { get; set; }
        public virtual string? VerificationMethod { get; set; }
    }

    public partial class SessionPaymentMethodOptionsAffirm
        : StripeEntity<SessionPaymentMethodOptionsAffirm>
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsAffirmOptions
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsAfterpayClearpay
        : StripeEntity<SessionPaymentMethodOptionsAfterpayClearpay>
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsAfterpayClearpayOptions
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsAlipay
        : StripeEntity<SessionPaymentMethodOptionsAlipay>
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsAlipayOptions
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsAmazonPay
        : StripeEntity<SessionPaymentMethodOptionsAmazonPay>
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsAmazonPayOptions
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsAuBecsDebit
        : StripeEntity<SessionPaymentMethodOptionsAuBecsDebit>
    {
        public virtual string? SetupFutureUsage { get; set; }
        public virtual string? TargetDate { get; set; }
    }

    public partial class SessionPaymentMethodOptionsAuBecsDebitOptions
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
        public virtual string? TargetDate { get; set; }
    }

    public partial class SessionPaymentMethodOptionsBacsDebit
        : StripeEntity<SessionPaymentMethodOptionsBacsDebit>
    {
        public virtual SessionPaymentMethodOptionsBacsDebitMandateOptions? MandateOptions { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
        public virtual string? TargetDate { get; set; }
    }

    public partial class SessionPaymentMethodOptionsBacsDebitMandateOptions
        : StripeEntity<SessionPaymentMethodOptionsBacsDebitMandateOptions>
    {
        public virtual string? ReferencePrefix { get; set; }
    }

    public partial class SessionPaymentMethodOptionsBacsDebitMandateOptionsOptions
        : INestedOptions
    {
        public virtual string? ReferencePrefix { get; set; }
    }

    public partial class SessionPaymentMethodOptionsBacsDebitOptions
        : INestedOptions
    {
        public virtual SessionPaymentMethodOptionsBacsDebitMandateOptionsOptions? MandateOptions { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
        public virtual string? TargetDate { get; set; }
    }

    public partial class SessionPaymentMethodOptionsBancontact
        : StripeEntity<SessionPaymentMethodOptionsBancontact>
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsBancontactOptions
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsBoleto
        : StripeEntity<SessionPaymentMethodOptionsBoleto>
    {
        public virtual long ExpiresAfterDays { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsBoletoOptions
        : INestedOptions
    {
        public virtual long? ExpiresAfterDays { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsCard
        : StripeEntity<SessionPaymentMethodOptionsCard>
    {
        public virtual SessionPaymentMethodOptionsCardInstallments? Installments { get; set; }
        public virtual string? RequestExtendedAuthorization { get; set; }
        public virtual string? RequestIncrementalAuthorization { get; set; }
        public virtual string? RequestMulticapture { get; set; }
        public virtual string? RequestOvercapture { get; set; }
        public virtual string? RequestThreeDSecure { get; set; }
        public virtual SessionPaymentMethodOptionsCardRestrictions? Restrictions { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
        public virtual string? StatementDescriptorSuffixKana { get; set; }
        public virtual string? StatementDescriptorSuffixKanji { get; set; }
    }

    public partial class SessionPaymentMethodOptionsCardInstallments
        : StripeEntity<SessionPaymentMethodOptionsCardInstallments>
    {
        public virtual bool Enabled { get; set; }
    }

    public partial class SessionPaymentMethodOptionsCardInstallmentsOptions
        : INestedOptions
    {
        public virtual bool? Enabled { get; set; }
    }

    public partial class SessionPaymentMethodOptionsCardOptions
        : INestedOptions
    {
        public virtual SessionPaymentMethodOptionsCardInstallmentsOptions? Installments { get; set; }
        public virtual string? RequestExtendedAuthorization { get; set; }
        public virtual string? RequestIncrementalAuthorization { get; set; }
        public virtual string? RequestMulticapture { get; set; }
        public virtual string? RequestOvercapture { get; set; }
        public virtual string? RequestThreeDSecure { get; set; }
        public virtual SessionPaymentMethodOptionsCardRestrictionsOptions? Restrictions { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
        public virtual string? StatementDescriptorSuffixKana { get; set; }
        public virtual string? StatementDescriptorSuffixKanji { get; set; }
    }

    public partial class SessionPaymentMethodOptionsCardRestrictions
        : StripeEntity<SessionPaymentMethodOptionsCardRestrictions>
    {
        public virtual List<string>? BrandsBlocked { get; set; }
    }

    public partial class SessionPaymentMethodOptionsCardRestrictionsOptions
        : INestedOptions
    {
        public virtual List<string>? BrandsBlocked { get; set; }
    }

    public partial class SessionPaymentMethodOptionsCashapp
        : StripeEntity<SessionPaymentMethodOptionsCashapp>
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsCashappOptions
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsCustomerBalance
        : StripeEntity<SessionPaymentMethodOptionsCustomerBalance>
    {
        public virtual SessionPaymentMethodOptionsCustomerBalanceBankTransfer? BankTransfer { get; set; }
        public virtual string? FundingType { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsCustomerBalanceBankTransfer
        : StripeEntity<SessionPaymentMethodOptionsCustomerBalanceBankTransfer>
    {
        public virtual SessionPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer? EuBankTransfer { get; set; }
        public virtual List<string>? RequestedAddressTypes { get; set; }
        public virtual string? Type { get; set; }
    }

    public partial class SessionPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer
        : StripeEntity<SessionPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransfer>
    {
        public virtual string? Country { get; set; }
    }

    public partial class SessionPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransferOptions
        : INestedOptions
    {
        public virtual string? Country { get; set; }
    }

    public partial class SessionPaymentMethodOptionsCustomerBalanceBankTransferOptions
        : INestedOptions
    {
        public virtual SessionPaymentMethodOptionsCustomerBalanceBankTransferEuBankTransferOptions? EuBankTransfer { get; set; }
        public virtual List<string>? RequestedAddressTypes { get; set; }
        public virtual string? Type { get; set; }
    }

    public partial class SessionPaymentMethodOptionsCustomerBalanceOptions
        : INestedOptions
    {
        public virtual SessionPaymentMethodOptionsCustomerBalanceBankTransferOptions? BankTransfer { get; set; }
        public virtual string? FundingType { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsEps
        : StripeEntity<SessionPaymentMethodOptionsEps>
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsEpsOptions
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsFpx
        : StripeEntity<SessionPaymentMethodOptionsFpx>
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsFpxOptions
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsGiropay
        : StripeEntity<SessionPaymentMethodOptionsGiropay>
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsGiropayOptions
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsGrabpay
        : StripeEntity<SessionPaymentMethodOptionsGrabpay>
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsGrabpayOptions
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsIdeal
        : StripeEntity<SessionPaymentMethodOptionsIdeal>
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsIdealOptions
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsKakaoPay
        : StripeEntity<SessionPaymentMethodOptionsKakaoPay>
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsKakaoPayOptions
        : INestedOptions
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsKlarna
        : StripeEntity<SessionPaymentMethodOptionsKlarna>
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsKlarnaOptions
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsKonbini
        : StripeEntity<SessionPaymentMethodOptionsKonbini>
    {
        public virtual long? ExpiresAfterDays { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsKonbiniOptions
        : INestedOptions
    {
        public virtual long? ExpiresAfterDays { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsKrCard
        : StripeEntity<SessionPaymentMethodOptionsKrCard>
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsKrCardOptions
        : INestedOptions
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsLink
        : StripeEntity<SessionPaymentMethodOptionsLink>
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsLinkOptions
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsMobilepay
        : StripeEntity<SessionPaymentMethodOptionsMobilepay>
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsMobilepayOptions
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsMultibanco
        : StripeEntity<SessionPaymentMethodOptionsMultibanco>
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsMultibancoOptions
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsNaverPay
        : StripeEntity<SessionPaymentMethodOptionsNaverPay>
    {
        public virtual string? CaptureMethod { get; set; }
    }

    public partial class SessionPaymentMethodOptionsNaverPayOptions
        : INestedOptions
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsOptions
        : INestedOptions
    {
        public virtual SessionPaymentMethodOptionsAcssDebitOptions? AcssDebit { get; set; }
        public virtual SessionPaymentMethodOptionsAffirmOptions? Affirm { get; set; }
        public virtual SessionPaymentMethodOptionsAfterpayClearpayOptions? AfterpayClearpay { get; set; }
        public virtual SessionPaymentMethodOptionsAlipayOptions? Alipay { get; set; }
        public virtual SessionPaymentMethodOptionsAmazonPayOptions? AmazonPay { get; set; }
        public virtual SessionPaymentMethodOptionsAuBecsDebitOptions? AuBecsDebit { get; set; }
        public virtual SessionPaymentMethodOptionsBacsDebitOptions? BacsDebit { get; set; }
        public virtual SessionPaymentMethodOptionsBancontactOptions? Bancontact { get; set; }
        public virtual SessionPaymentMethodOptionsBoletoOptions? Boleto { get; set; }
        public virtual SessionPaymentMethodOptionsCardOptions? Card { get; set; }
        public virtual SessionPaymentMethodOptionsCashappOptions? Cashapp { get; set; }
        public virtual SessionPaymentMethodOptionsCustomerBalanceOptions? CustomerBalance { get; set; }
        public virtual SessionPaymentMethodOptionsEpsOptions? Eps { get; set; }
        public virtual SessionPaymentMethodOptionsFpxOptions? Fpx { get; set; }
        public virtual SessionPaymentMethodOptionsGiropayOptions? Giropay { get; set; }
        public virtual SessionPaymentMethodOptionsGrabpayOptions? Grabpay { get; set; }
        public virtual SessionPaymentMethodOptionsIdealOptions? Ideal { get; set; }
        public virtual SessionPaymentMethodOptionsKakaoPayOptions? KakaoPay { get; set; }
        public virtual SessionPaymentMethodOptionsKlarnaOptions? Klarna { get; set; }
        public virtual SessionPaymentMethodOptionsKonbiniOptions? Konbini { get; set; }
        public virtual SessionPaymentMethodOptionsKrCardOptions? KrCard { get; set; }
        public virtual SessionPaymentMethodOptionsLinkOptions? Link { get; set; }
        public virtual SessionPaymentMethodOptionsMobilepayOptions? Mobilepay { get; set; }
        public virtual SessionPaymentMethodOptionsMultibancoOptions? Multibanco { get; set; }
        public virtual SessionPaymentMethodOptionsNaverPayOptions? NaverPay { get; set; }
        public virtual SessionPaymentMethodOptionsOxxoOptions? Oxxo { get; set; }
        public virtual SessionPaymentMethodOptionsP24Options? P24 { get; set; }
        public virtual SessionPaymentMethodOptionsPayByBankOptions? PayByBank { get; set; }
        public virtual SessionPaymentMethodOptionsPaycoOptions? Payco { get; set; }
        public virtual SessionPaymentMethodOptionsPaynowOptions? Paynow { get; set; }
        public virtual SessionPaymentMethodOptionsPaypalOptions? Paypal { get; set; }
        public virtual SessionPaymentMethodOptionsPixOptions? Pix { get; set; }
        public virtual SessionPaymentMethodOptionsRevolutPayOptions? RevolutPay { get; set; }
        public virtual SessionPaymentMethodOptionsSamsungPayOptions? SamsungPay { get; set; }
        public virtual SessionPaymentMethodOptionsSepaDebitOptions? SepaDebit { get; set; }
        public virtual SessionPaymentMethodOptionsSofortOptions? Sofort { get; set; }
        public virtual SessionPaymentMethodOptionsSwishOptions? Swish { get; set; }
        public virtual SessionPaymentMethodOptionsUsBankAccountOptions? UsBankAccount { get; set; }
        public virtual SessionPaymentMethodOptionsWechatPayOptions? WechatPay { get; set; }
    }

    public partial class SessionPaymentMethodOptionsOxxo
        : StripeEntity<SessionPaymentMethodOptionsOxxo>
    {
        public virtual long ExpiresAfterDays { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsOxxoOptions
        : INestedOptions
    {
        public virtual long? ExpiresAfterDays { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsP24
        : StripeEntity<SessionPaymentMethodOptionsP24>
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsP24Options
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
        public virtual bool? TosShownAndAccepted { get; set; }
    }

    public partial class SessionPaymentMethodOptionsPayByBankOptions
        : INestedOptions
    {
    }

    public partial class SessionPaymentMethodOptionsPayco
        : StripeEntity<SessionPaymentMethodOptionsPayco>
    {
        public virtual string? CaptureMethod { get; set; }
    }

    public partial class SessionPaymentMethodOptionsPaycoOptions
        : INestedOptions
    {
        public virtual string? CaptureMethod { get; set; }
    }

    public partial class SessionPaymentMethodOptionsPaynow
        : StripeEntity<SessionPaymentMethodOptionsPaynow>
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsPaynowOptions
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsPaypal
        : StripeEntity<SessionPaymentMethodOptionsPaypal>
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual string? PreferredLocale { get; set; }
        public virtual string? Reference { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsPaypalOptions
        : INestedOptions
    {
        public virtual string? CaptureMethod { get; set; }
        public virtual string? PreferredLocale { get; set; }
        public virtual string? Reference { get; set; }
        public virtual string? RiskCorrelationId { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsPix
        : StripeEntity<SessionPaymentMethodOptionsPix>
    {
        public virtual long? ExpiresAfterSeconds { get; set; }
    }

    public partial class SessionPaymentMethodOptionsPixOptions
        : INestedOptions
    {
        public virtual long? ExpiresAfterSeconds { get; set; }
    }

    public partial class SessionPaymentMethodOptionsRevolutPay
        : StripeEntity<SessionPaymentMethodOptionsRevolutPay>
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsRevolutPayOptions
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsSamsungPay
        : StripeEntity<SessionPaymentMethodOptionsSamsungPay>
    {
        public virtual string? CaptureMethod { get; set; }
    }

    public partial class SessionPaymentMethodOptionsSamsungPayOptions
        : INestedOptions
    {
        public virtual string? CaptureMethod { get; set; }
    }

    public partial class SessionPaymentMethodOptionsSepaDebit
        : StripeEntity<SessionPaymentMethodOptionsSepaDebit>
    {
        public virtual SessionPaymentMethodOptionsSepaDebitMandateOptions? MandateOptions { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
        public virtual string? TargetDate { get; set; }
    }

    public partial class SessionPaymentMethodOptionsSepaDebitMandateOptions
        : StripeEntity<SessionPaymentMethodOptionsSepaDebitMandateOptions>
    {
        public virtual string? ReferencePrefix { get; set; }
    }

    public partial class SessionPaymentMethodOptionsSepaDebitMandateOptionsOptions
        : INestedOptions
    {
        public virtual string? ReferencePrefix { get; set; }
    }

    public partial class SessionPaymentMethodOptionsSepaDebitOptions
        : INestedOptions
    {
        public virtual SessionPaymentMethodOptionsSepaDebitMandateOptionsOptions? MandateOptions { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
        public virtual string? TargetDate { get; set; }
    }

    public partial class SessionPaymentMethodOptionsSofort
        : StripeEntity<SessionPaymentMethodOptionsSofort>
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsSofortOptions
        : INestedOptions
    {
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPaymentMethodOptionsSwish
        : StripeEntity<SessionPaymentMethodOptionsSwish>
    {
        public virtual string? Reference { get; set; }
    }

    public partial class SessionPaymentMethodOptionsSwishOptions
        : INestedOptions
    {
        public virtual string? Reference { get; set; }
    }

    public partial class SessionPaymentMethodOptionsUsBankAccount
        : StripeEntity<SessionPaymentMethodOptionsUsBankAccount>
    {
        public virtual SessionPaymentMethodOptionsUsBankAccountFinancialConnections? FinancialConnections { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
        public virtual string? TargetDate { get; set; }
        public virtual string? VerificationMethod { get; set; }
    }

    public partial class SessionPaymentMethodOptionsUsBankAccountFinancialConnections
        : StripeEntity<SessionPaymentMethodOptionsUsBankAccountFinancialConnections>
    {
        public virtual SessionPaymentMethodOptionsUsBankAccountFinancialConnectionsFilters? Filters { get; set; }
        public virtual List<string>? Permissions { get; set; }
        public virtual List<string>? Prefetch { get; set; }
        public virtual string? ReturnUrl { get; set; }
    }

    public partial class SessionPaymentMethodOptionsUsBankAccountFinancialConnectionsFilters
        : StripeEntity<SessionPaymentMethodOptionsUsBankAccountFinancialConnectionsFilters>
    {
        public virtual List<string>? AccountSubcategories { get; set; }
    }

    public partial class SessionPaymentMethodOptionsUsBankAccountFinancialConnectionsOptions
        : INestedOptions
    {
        public virtual List<string>? Permissions { get; set; }
        public virtual List<string>? Prefetch { get; set; }
    }

    public partial class SessionPaymentMethodOptionsUsBankAccountOptions
        : INestedOptions
    {
        public virtual SessionPaymentMethodOptionsUsBankAccountFinancialConnectionsOptions? FinancialConnections { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
        public virtual string? TargetDate { get; set; }
        public virtual string? VerificationMethod { get; set; }
    }

    public partial class SessionPaymentMethodOptionsWechatPayOptions
        : INestedOptions
    {
        public virtual string? AppId { get; set; }
        public virtual string? Client { get; set; }
        public virtual string? SetupFutureUsage { get; set; }
    }

    public partial class SessionPermissions
        : StripeEntity<SessionPermissions>
    {
        public virtual string? UpdateShippingDetails { get; set; }
    }

    public partial class SessionPermissionsOptions
        : INestedOptions
    {
        public virtual string? UpdateShippingDetails { get; set; }
    }

    public partial class SessionPhoneNumberCollection
        : StripeEntity<SessionPhoneNumberCollection>
    {
        public virtual bool Enabled { get; set; }
    }

    public partial class SessionPhoneNumberCollectionOptions
        : INestedOptions
    {
        public virtual bool? Enabled { get; set; }
    }

    public partial class SessionPresentmentDetails
        : StripeEntity<SessionPresentmentDetails>
    {
        public virtual long PresentmentAmount { get; set; }
        public virtual string? PresentmentCurrency { get; set; }
    }

    public partial class SessionSavedPaymentMethodOptions
        : StripeEntity<SessionSavedPaymentMethodOptions>
    {
        public virtual List<string>? AllowRedisplayFilters { get; set; }
        public virtual string? PaymentMethodRemove { get; set; }
        public virtual string? PaymentMethodSave { get; set; }
    }

    public partial class SessionSavedPaymentMethodOptionsOptions
        : INestedOptions
    {
        public virtual List<string>? AllowRedisplayFilters { get; set; }
        public virtual string? PaymentMethodSave { get; set; }
    }

    public partial class SessionSetupIntentDataOptions
        : INestedOptions, IHasMetadata
    {
        public virtual string? Description { get; set; }
        public virtual Dictionary<string, string>? Metadata { get; set; }
        public virtual string? OnBehalfOf { get; set; }
    }

    public partial class SessionShippingAddressCollection
        : StripeEntity<SessionShippingAddressCollection>
    {
        public virtual List<string>? AllowedCountries { get; set; }
    }

    public partial class SessionShippingAddressCollectionOptions
        : INestedOptions
    {
        public virtual List<string>? AllowedCountries { get; set; }
    }

    public partial class SessionShippingCost
        : StripeEntity<SessionShippingCost>
    {
        public virtual long AmountSubtotal { get; set; }
        public virtual long AmountTax { get; set; }
        public virtual long AmountTotal { get; set; }
        public virtual List<SessionShippingCostTax>? Taxes { get; set; }
    }

    public partial class SessionShippingCostTax
        : StripeEntity<SessionShippingCostTax>
    {
        public virtual long Amount { get; set; }
        public virtual TaxRate? Rate { get; set; }
        public virtual string? TaxabilityReason { get; set; }
        public virtual long? TaxableAmount { get; set; }
    }

    public partial class SessionShippingOption
        : StripeEntity<SessionShippingOption>
    {
        public virtual long ShippingAmount { get; set; }
    }

    public partial class SessionShippingOptionOptions
        : INestedOptions
    {
        public virtual string? ShippingRate { get; set; }
        public virtual SessionShippingOptionShippingRateDataOptions? ShippingRateData { get; set; }
    }

    public partial class SessionShippingOptionShippingRateDataDeliveryEstimateMaximumOptions
        : INestedOptions
    {
        public virtual string? Unit { get; set; }
        public virtual long? Value { get; set; }
    }

    public partial class SessionShippingOptionShippingRateDataDeliveryEstimateMinimumOptions
        : INestedOptions
    {
        public virtual string? Unit { get; set; }
        public virtual long? Value { get; set; }
    }

    public partial class SessionShippingOptionShippingRateDataDeliveryEstimateOptions
        : INestedOptions
    {
        public virtual SessionShippingOptionShippingRateDataDeliveryEstimateMaximumOptions? Maximum { get; set; }
        public virtual SessionShippingOptionShippingRateDataDeliveryEstimateMinimumOptions? Minimum { get; set; }
    }

    public partial class SessionShippingOptionShippingRateDataFixedAmountCurrencyOptionsOptions
        : INestedOptions
    {
        public virtual long? Amount { get; set; }
        public virtual string? TaxBehavior { get; set; }
    }

    public partial class SessionShippingOptionShippingRateDataFixedAmountOptions
        : INestedOptions
    {
        public virtual long? Amount { get; set; }
        public virtual string? Currency { get; set; }
        public virtual Dictionary<string, SessionShippingOptionShippingRateDataFixedAmountCurrencyOptionsOptions>? CurrencyOptions { get; set; }
    }

    public partial class SessionShippingOptionShippingRateDataOptions
        : INestedOptions, IHasMetadata
    {
        public virtual SessionShippingOptionShippingRateDataDeliveryEstimateOptions? DeliveryEstimate { get; set; }
        public virtual string? DisplayName { get; set; }
        public virtual SessionShippingOptionShippingRateDataFixedAmountOptions? FixedAmount { get; set; }
        public virtual Dictionary<string, string>? Metadata { get; set; }
        public virtual string? TaxBehavior { get; set; }
        public virtual string? TaxCode { get; set; }
        public virtual string? Type { get; set; }
    }

    public partial class SessionSubscriptionDataInvoiceSettingsIssuerOptions
        : INestedOptions
    {
        public virtual string? Account { get; set; }
        public virtual string? Type { get; set; }
    }

    public partial class SessionSubscriptionDataInvoiceSettingsOptions
        : INestedOptions
    {
        public virtual SessionSubscriptionDataInvoiceSettingsIssuerOptions? Issuer { get; set; }
    }

    public partial class SessionSubscriptionDataOptions
        : INestedOptions, IHasMetadata
    {
        public virtual decimal? ApplicationFeePercent { get; set; }
        public virtual DateTime? BillingCycleAnchor { get; set; }
        public virtual List<string>? DefaultTaxRates { get; set; }
        public virtual string? Description { get; set; }
        public virtual SessionSubscriptionDataInvoiceSettingsOptions? InvoiceSettings { get; set; }
        public virtual Dictionary<string, string>? Metadata { get; set; }
        public virtual string? OnBehalfOf { get; set; }
        public virtual string? ProrationBehavior { get; set; }
        public virtual SessionSubscriptionDataTransferDataOptions? TransferData { get; set; }
        public virtual DateTime? TrialEnd { get; set; }
        public virtual long? TrialPeriodDays { get; set; }
        public virtual SessionSubscriptionDataTrialSettingsOptions? TrialSettings { get; set; }
    }

    public partial class SessionSubscriptionDataTransferDataOptions
        : INestedOptions
    {
        public virtual decimal? AmountPercent { get; set; }
        public virtual string? Destination { get; set; }
    }

    public partial class SessionSubscriptionDataTrialSettingsEndBehaviorOptions
        : INestedOptions
    {
        public virtual string? MissingPaymentMethod { get; set; }
    }

    public partial class SessionSubscriptionDataTrialSettingsOptions
        : INestedOptions
    {
        public virtual SessionSubscriptionDataTrialSettingsEndBehaviorOptions? EndBehavior { get; set; }
    }

    public partial class SessionTaxIdCollection
        : StripeEntity<SessionTaxIdCollection>
    {
        public virtual bool Enabled { get; set; }
        public virtual string? Required { get; set; }
    }

    public partial class SessionTaxIdCollectionOptions
        : INestedOptions
    {
        public virtual bool? Enabled { get; set; }
        public virtual string? Required { get; set; }
    }

    public partial class SessionTotalDetails
        : StripeEntity<SessionTotalDetails>
    {
        public virtual long AmountDiscount { get; set; }
        public virtual long? AmountShipping { get; set; }
        public virtual long AmountTax { get; set; }
        public virtual SessionTotalDetailsBreakdown? Breakdown { get; set; }
    }

    public partial class SessionTotalDetailsBreakdown
        : StripeEntity<SessionTotalDetailsBreakdown>
    {
        public virtual List<SessionTotalDetailsBreakdownDiscount>? Discounts { get; set; }
        public virtual List<SessionTotalDetailsBreakdownTax>? Taxes { get; set; }
    }

    public partial class SessionTotalDetailsBreakdownDiscount
        : StripeEntity<SessionTotalDetailsBreakdownDiscount>
    {
        public virtual long Amount { get; set; }
        public virtual Discount? Discount { get; set; }
    }

    public partial class SessionTotalDetailsBreakdownTax
        : StripeEntity<SessionTotalDetailsBreakdownTax>
    {
        public virtual long Amount { get; set; }
        public virtual TaxRate? Rate { get; set; }
        public virtual string? TaxabilityReason { get; set; }
        public virtual long? TaxableAmount { get; set; }
    }

}

namespace StripeIntegration.Enums
{
    public partial class CustomPaymentIntentData
    {
        public virtual PaymentIntent PaymentIntent { get; set; }
    }

    public partial class CustomSessionData
    {
        public virtual Session Session { get; set; }
        public virtual List<LineItem> LineItems { get; set; } = [];
        public virtual PaymentIntent? PaymentIntent { get; set; }
    }

    public partial class StripeCustomCheckoutData
    {
        public virtual CustomSessionData CustomSessionData { get; set; }
        public virtual CustomPaymentIntentData CustomPaymentIntentData { get; set; }
    }

}

C# GroupedBookingQuery DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .other suffix or ?format=other

HTTP + OTHER

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

GET /bookings/grouped HTTP/1.1 
Host: testapi.bokamera.se 
Accept: text/jsonl
HTTP/1.1 200 OK
Content-Type: text/jsonl
Content-Length: length

{"Offset":0,"Total":0,"Results":[{"Bookings":[{"Id":0,"Status":"Booked","StatusId":0,"StatusName":"String","StatusInfo":{"Id":0,"Name":"String","Description":"String","Icon":"String","Color":"String"},"SendEmailReminder":false,"SendSmsReminder":false,"SendSmsConfirmation":false,"SendEmailConfirmation":false,"LastTimeToUnBook":"0001-01-01T00:00:00","CustomFields":[{"Id":0,"Name":"String","Description":"String","Width":0,"DataType":"String","DefaultValue":"String","IsMandatory":false,"MandatoryErrorMessage":"String","MaxLength":0,"MultipleLineText":false,"RegEx":"String","RegExErrorMessage":"String","Values":[{"Value":"String"}]}],"CustomFieldValues":[{"Id":0,"Column":"String","Name":"String","Description":"String","Value":"String","DataType":"String"}],"BookedResourceTypes":[{"Id":0,"Name":"String","Resources":[{"Id":0,"Name":"String","Color":"String","Email":"String","MobilePhone":"String","AccessGroup":"String","EmailNotification":false,"SMSNotification":false,"EmailReminder":false,"SMSReminder":false}]}],"Company":{"Name":"String","Category":"String","Street1":"String","Street2":"String","ZipCode":"String","City":"String","CountryId":"String","Longitude":"String","Latitude":"String","Phone":"String","Email":"String","HomePage":"String","SitePath":"String","IsFavorite":false,"PaymentProviderId":0},"Customer":{"Firstname":"String","Lastname":"String","Email":"String","Phone":"String","FacebookUserName":"String","ImageUrl":"String","PersonalIdentityNumber":"String","CorporateIdentityNumber":"String","InvoiceAddress1":"String","InvoiceAddress2":"String","InvoiceCity":"String","InvoicePostalCode":"String","InvoiceCountryCode":"String"},"Quantities":[{"Id":0,"Quantity":0,"Price":0,"PriceBeforeRebate":0,"CurrencyId":"String","PriceSign":"String","Category":"String","VAT":0,"PriceText":"String","OccupiesSpot":false}],"Service":{"Id":0,"Name":"String","Description":"String","LengthInMinutes":0,"MaxNumberOfSpotsPerBooking":0,"MinNumberOfSpotsPerBooking":0,"GroupBooking":{"Active":false,"Min":0,"Max":0},"MultipleResource":{"Active":false,"Min":0,"Max":0},"IsGroupBooking":false,"IsPaymentEnabled":false},"InvoiceAddress":{"UserId":"00000000-0000-0000-0000-000000000000","CorporateIdentityNumber":"String","InvoiceAddress1":"String","InvoiceAddress2":"String","InvoiceCity":"String","InvoicePostalCode":"String","InvoiceCountryCode":"String"},"PaymentExpiration":"0001-01-01T00:00:00","Log":[{"Id":0,"BookingId":0,"EventTypeId":0,"EventType":{"Id":0,"Name":"String","Description":"String"},"Comments":"String","UserName":"String"}],"PaymentLog":[{"Id":0,"BookingId":0,"PaymentReferenceId":"String","OrderItemReferenceId":"String","PaymentProviderId":0,"Amount":0,"VAT":0,"AmountCredited":0,"CurrencyId":"String","CurrencyInfo":{"Id":"String","Name":"String","CurrencySign":"String"},"Comments":"String"}],"CheckoutLog":[{"BookingId":0,"PurchaseId":0,"ExpirationTime":"0001-01-01T00:00:00","Snippet":"String","Status":"String","Message":"String"}],"ExternalReference":[{"ReferenceType":"String","ReferenceTypeId":0,"ExternalData":"String","CreatedBy":"String"}],"ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}},"LengthInMinutes":0,"BookedBy":"String","BookedComments":"String","UnbookedComments":"String","CommentsToCustomer":"String","UnbookedOn":"0001-01-01T00:00:00","CancellationCode":"String","RatingCode":"String"}]}],"Meta":{"String":"String"},"ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}}}