/* Options: Date: 2025-09-08 01:43:20 Version: 8.81 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://account.servicestack.net //GlobalNamespace: //MakePropertiesOptional: False //AddServiceStackTypes: True //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True IncludeTypes: QueryCustomers.* //ExcludeTypes: //DefaultImports: */ export interface IReturn { createResponse(): T; } export interface IAddress { addressLine1: string; addressLine2: string; addressCity: string; addressZip: string; addressState: string; addressCountry: string; } // @DataContract export class QueryBase { // @DataMember(Order=1) public skip?: number; // @DataMember(Order=2) public take?: number; // @DataMember(Order=3) public orderBy?: string; // @DataMember(Order=4) public orderByDesc?: string; // @DataMember(Order=5) public include?: string; // @DataMember(Order=6) public fields?: string; // @DataMember(Order=7) public meta?: { [index:string]: string; }; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class QueryDb extends QueryBase { public constructor(init?: Partial>) { super(init); (Object as any).assign(this, init); } } // @DataContract export class ResponseError { // @DataMember(Order=1) public errorCode: string; // @DataMember(Order=2) public fieldName: string; // @DataMember(Order=3) public message: string; // @DataMember(Order=4) public meta?: { [index:string]: string; }; public constructor(init?: Partial) { (Object as any).assign(this, init); } } // @DataContract export class ResponseStatus { // @DataMember(Order=1) public errorCode: string; // @DataMember(Order=2) public message?: string; // @DataMember(Order=3) public stackTrace?: string; // @DataMember(Order=4) public errors?: ResponseError[]; // @DataMember(Order=5) public meta?: { [index:string]: string; }; public constructor(init?: Partial) { (Object as any).assign(this, init); } } // @DataContract export class QueryResponse { // @DataMember(Order=1) public offset: number; // @DataMember(Order=2) public total: number; // @DataMember(Order=3) public results: T[] = []; // @DataMember(Order=4) public meta?: { [index:string]: string; }; // @DataMember(Order=5) public responseStatus?: ResponseStatus; public constructor(init?: Partial>) { (Object as any).assign(this, init); } } export class Order implements IAddress { public id: number; public customerId: number; public productName: string; public firstName: string; public lastName: string; public email: string; public company: string; public phoneNumber: string; public addressLine1: string; public addressLine2: string; public addressCity: string; public addressZip: string; public addressState: string; public addressCountry: string; public agreeTerms: boolean; public notes: string; public last4: string; public subTotal: number; public couponId: string; public discount: number; public tax: number; public total: number; public itemQuantity: number; public authorizedQuantity?: number; public subscriptionId?: number; public licenseRef: string; public paymentId?: number; public emailId?: number; public paid: boolean; public createdDate: string; public modifiedDate: string; public modifiedBy: string; public cancelledDate?: string; public cancelledReason: string; public ipAddress: string; public orderDetails: OrderDetail[]; public constructor(init?: Partial) { (Object as any).assign(this, init); } } export class Subscription { public id: number; public customerId: number; public email: string; public skuId: number; public skuName: string; public skuType: SkuType; public code: string; public quantity: number; public supportQuantity: number; public total: number; public isPlan: boolean; public isRenewal: boolean; public subscriptionDurationDays: number; public renewalDate?: string; public licenseRef: string; public licenseName: string; public licenseAddress: string; public licenseType: LicenseType; public expiryDate: string; public licenseKey: LicenseKey; public licenseKeyText: string; public createdDate: string; public modifiedDate: string; public cancelledDate?: string; public stripeSubscriptionId: string; public emailId?: number; public emailRenewalId?: number; public emailExpiredId?: number; public renewalSubscriptionId?: number; public externalRef: string; public notes: string; public error: string; public constructor(init?: Partial) { (Object as any).assign(this, init); } } // @Route("/Customer") // @Route("/Customer/{Id}") export class Customer implements IAddress { public id: number; public email: string; public displayName: string; public firstName: string; public lastName: string; public company: string; public phoneNumber: string; public addressLine1: string; public addressLine2: string; public addressCity: string; public addressZip: string; public addressState: string; public addressCountry: string; public stripeCustomerId: string; public stripeCouponId: string; public plan: string; public createdDate: string; public isReferrer: boolean; public orders: Order[]; public subscriptions: Subscription[]; public constructor(init?: Partial) { (Object as any).assign(this, init); } public getTypeName() { return 'Customer'; } public getMethod() { return 'POST'; } public createResponse() {} } // @Route("/query/customers") // @ValidateRequest(Validator="IsAdmin") // @AutoQueryViewer(DefaultFields="Id,Name,Email,DisplayName,FirstName,LastName,Company,CreatedDate,Plan,IsReferrer", DefaultSearchField="Email", DefaultSearchType="Contains", IconUrl="material-icons:person", Title="Customers") export class QueryCustomers extends QueryDb implements IReturn> { public constructor(init?: Partial) { super(init); (Object as any).assign(this, init); } public getTypeName() { return 'QueryCustomers'; } public getMethod() { return 'GET'; } public createResponse() { return new QueryResponse(); } }