/* Options: Date: 2026-01-09 14:26:45 SwiftVersion: 6.0 Version: 8.71 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://evovoice.io //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True //MakePropertiesOptional: True IncludeTypes: GetCustomer.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: False //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack /** * Get a specific customer */ // @Route("/customers/{customerId}", "GET") // @Api(Description="Get a specific customer") public class GetCustomer : IReturn, IGet, Codable { public typealias Return = CustomerInfo /** * The ID of the customer you want to get */ // @ApiMember(Description="The ID of the customer you want to get") public var customerId:String? required public init(){} } public class CustomerInfo : EntityInfo { /** * The ID of the account associated with this customer */ // @ApiMember(Description="The ID of the account associated with this customer") public var accountId:String? /** * The parent customer ID for this customer */ // @ApiMember(Description="The parent customer ID for this customer") public var parentCustomerId:String? /** * The breadcrumb to this customer */ // @ApiMember(Description="The breadcrumb to this customer") public var breadcrumb:[CustomerBreadcrumb]? /** * The name of the account associated with this customer */ // @ApiMember(Description="The name of the account associated with this customer") public var accountName:String? /** * Is this customer staging or production? */ // @ApiMember(Description="Is this customer staging or production?") public var isStaging:Bool? /** * The name of the company */ // @ApiMember(Description="The name of the company") public var name:String? /** * The reference ID for this company */ // @ApiMember(Description="The reference ID for this company") public var referenceId:String? /** * This customer's data values */ // @ApiMember(Description="This customer's data values") public var data:Struct? /** * The list of tags for this customer */ // @ApiMember(Description="The list of tags for this customer") public var tags:[Tag]? /** * This customer's schedule */ // @ApiMember(Description="This customer's schedule") public var schedule:Schedule? /** * Integration data for this customer */ // @ApiMember(Description="Integration data for this customer") public var integrationData:EntityIntegrationData? /** * Override this customer's billing settings? Otherwise inherits from parent */ // @ApiMember(Description="Override this customer's billing settings? Otherwise inherits from parent") public var overrideBillingSettings:Bool? /** * Billing settings for this customer */ // @ApiMember(Description="Billing settings for this customer") public var billingSettings:BillingSettings? /** * Should this customer override the parent customer's app settings */ // @ApiMember(Description="Should this customer override the parent customer's app settings") public var overrideAppSettings:Bool? /** * App / Portal settings for this customer */ // @ApiMember(Description="App / Portal settings for this customer") public var appSettings:AppSettings? /** * Is international dialing enabled? This setting will only take effect if the account has international dialing settings turned on */ // @ApiMember(Description="Is international dialing enabled? This setting will only take effect if the account has international dialing settings turned on") public var enableInternationalDialing:Bool? /** * The list of country codes (in addition to the account default) which will be enabled for this customer */ // @ApiMember(Description="The list of country codes (in addition to the account default) which will be enabled for this customer") public var enabledInternationalCountryCodes:[String]? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case accountId case parentCustomerId case breadcrumb case accountName case isStaging case name case referenceId case data case tags case schedule case integrationData case overrideBillingSettings case billingSettings case overrideAppSettings case appSettings case enableInternationalDialing case enabledInternationalCountryCodes } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) accountId = try container.decodeIfPresent(String.self, forKey: .accountId) parentCustomerId = try container.decodeIfPresent(String.self, forKey: .parentCustomerId) breadcrumb = try container.decodeIfPresent([CustomerBreadcrumb].self, forKey: .breadcrumb) ?? [] accountName = try container.decodeIfPresent(String.self, forKey: .accountName) isStaging = try container.decodeIfPresent(Bool.self, forKey: .isStaging) name = try container.decodeIfPresent(String.self, forKey: .name) referenceId = try container.decodeIfPresent(String.self, forKey: .referenceId) data = try container.decodeIfPresent(Struct.self, forKey: .data) tags = try container.decodeIfPresent([Tag].self, forKey: .tags) ?? [] schedule = try container.decodeIfPresent(Schedule.self, forKey: .schedule) integrationData = try container.decodeIfPresent(EntityIntegrationData.self, forKey: .integrationData) overrideBillingSettings = try container.decodeIfPresent(Bool.self, forKey: .overrideBillingSettings) billingSettings = try container.decodeIfPresent(BillingSettings.self, forKey: .billingSettings) overrideAppSettings = try container.decodeIfPresent(Bool.self, forKey: .overrideAppSettings) appSettings = try container.decodeIfPresent(AppSettings.self, forKey: .appSettings) enableInternationalDialing = try container.decodeIfPresent(Bool.self, forKey: .enableInternationalDialing) enabledInternationalCountryCodes = try container.decodeIfPresent([String].self, forKey: .enabledInternationalCountryCodes) ?? [] } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if accountId != nil { try container.encode(accountId, forKey: .accountId) } if parentCustomerId != nil { try container.encode(parentCustomerId, forKey: .parentCustomerId) } if breadcrumb != nil { try container.encode(breadcrumb, forKey: .breadcrumb) } if accountName != nil { try container.encode(accountName, forKey: .accountName) } if isStaging != nil { try container.encode(isStaging, forKey: .isStaging) } if name != nil { try container.encode(name, forKey: .name) } if referenceId != nil { try container.encode(referenceId, forKey: .referenceId) } if data != nil { try container.encode(data, forKey: .data) } if tags != nil { try container.encode(tags, forKey: .tags) } if schedule != nil { try container.encode(schedule, forKey: .schedule) } if integrationData != nil { try container.encode(integrationData, forKey: .integrationData) } if overrideBillingSettings != nil { try container.encode(overrideBillingSettings, forKey: .overrideBillingSettings) } if billingSettings != nil { try container.encode(billingSettings, forKey: .billingSettings) } if overrideAppSettings != nil { try container.encode(overrideAppSettings, forKey: .overrideAppSettings) } if appSettings != nil { try container.encode(appSettings, forKey: .appSettings) } if enableInternationalDialing != nil { try container.encode(enableInternationalDialing, forKey: .enableInternationalDialing) } if enabledInternationalCountryCodes != nil { try container.encode(enabledInternationalCountryCodes, forKey: .enabledInternationalCountryCodes) } } } public class BillingSettings : Codable { public var base:BillingItem? public var localNumbers:BillingItem? public var tollFreeNumbers:BillingItem? public var inboundVoiceCalls:BillingItem? public var outboundVoiceCalls:BillingItem? public var inboundFaxes:BillingItem? public var outboundFaxes:BillingItem? public var inboundSmsMessages:BillingItem? public var outboundSmsMessages:BillingItem? public var aiInsights:BillingItem? public var aiLiveMinutes:BillingItem? public var aiMessages:BillingItem? public var aiTranscriptions:BillingItem? required public init(){} } public class Struct : List { required public init(){ super.init() } required public init(from decoder: Decoder) throws { try super.init(from: decoder) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) } } public class AppSettings : Codable { public var enablePhoneNumberManagement:Bool? public var enableDeviceManagement:Bool? public var enableDialer:Bool? public var enableCallHistory:Bool? public var enableAssistants:Bool? public var showFileNameInMessageCenter:Bool? public var chakraTheme:String? public var customCss:String? public var pageTitle:String? public var stringMappings:String? public var logoutUrl:String? public var portMyNumberUrl:String? required public init(){} } public class Tag : Codable { public var id:String? public var name:String? public var color:TagColors? required public init(){} } public class EntityInfo : Codable { /** * The ID of the object */ // @ApiMember(Description="The ID of the object") public var id:String? /** * The date the object was created */ // @ApiMember(Description="The date the object was created") public var dateCreated:String? /** * The date the object was last modified */ // @ApiMember(Description="The date the object was last modified") public var dateLastModified:String? /** * The user that created this object */ // @ApiMember(Description="The user that created this object") public var createdBy:String? /** * The user that last modified this object */ // @ApiMember(Description="The user that last modified this object") public var lastModifiedBy:String? required public init(){} } public class CustomerBreadcrumb : Codable { public var id:String? public var name:String? required public init(){} } public class EntityIntegrationData : List { required public init(){ super.init() } required public init(from decoder: Decoder) throws { try super.init(from: decoder) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) } } public class BillingItem : Codable { public var baseCost:Double? public var rawUnitMultiplier:Double? public var unitCost:Double? public var allowance:Int? required public init(){} } public class Value : Codable { public var boolValue:Bool? public var stringValue:String? public var numberValue:Double? public var listValue:[Struct]? public var structValue:Struct? required public init(){} } public enum TagColors : String, Codable { case Magenta case Red case Volcano case Orange case Gold case Lime case Green case Cyan case Blue case GeekBlue case Purple } public class IntegrationData : Codable { public var thirdPartyId:String? required public init(){} } public class Schedule : Codable { public var timeZoneId:String? public var inherit:Bool? public var forceClosed:Bool? public var rules:[SchedulingRule]? public var defaultState:String? required public init(){} }