/* Options: Date: 2026-04-04 06:48:07 SwiftVersion: 6.0 Version: 8.52 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://pfapi.pstpf.com.au/api //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True //MakePropertiesOptional: True IncludeTypes: GetPagedContactsInRole.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: False //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/contacts/paged/{RoleId}") public class GetPagedContactsInRole : PagedModel, IReturn { public typealias Return = GetSlimContactsResponse /** * Get contacts connected to the current licensee in the specified role */ // @ApiMember(Description="Get contacts connected to the current licensee in the specified role", Name="RoleId") public var roleId:String? /** * Get contacts of the specified type */ // @ApiMember(Description="Get contacts of the specified type", Name="ContactTypes") public var contactTypes:[String]? /** * Contact statuses to search for, i.e. Real and/or Virtual */ // @ApiMember(DataType="List", Description="Contact statuses to search for, i.e. Real and/or Virtual", IsRequired=true, Name="Statuses") public var statuses:[String] = [] /** * Text to filter contacts on. searches for a contact with matches to the string. */ // @ApiMember(DataType="string", Description="Text to filter contacts on. searches for a contact with matches to the string.", Name="SearchText") public var searchText:String? /** * If you want just bare-bones contact info set this to false, if not specified it defaults to true. */ // @ApiMember(DataType="bool?", Description="If you want just bare-bones contact info set this to false, if not specified it defaults to true.", Name="IncludeDetails") public var includeDetails:Bool? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case roleId case contactTypes case statuses case searchText case includeDetails } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) roleId = try container.decodeIfPresent(String.self, forKey: .roleId) contactTypes = try container.decodeIfPresent([String].self, forKey: .contactTypes) ?? [] statuses = try container.decodeIfPresent([String].self, forKey: .statuses) ?? [] searchText = try container.decodeIfPresent(String.self, forKey: .searchText) includeDetails = try container.decodeIfPresent(Bool.self, forKey: .includeDetails) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if roleId != nil { try container.encode(roleId, forKey: .roleId) } if contactTypes != nil { try container.encode(contactTypes, forKey: .contactTypes) } if statuses.count > 0 { try container.encode(statuses, forKey: .statuses) } if searchText != nil { try container.encode(searchText, forKey: .searchText) } if includeDetails != nil { try container.encode(includeDetails, forKey: .includeDetails) } } } // @ApiResponse(Description="Contacts connected to contact by criteria, returning minimal number of columns, and response status") public class GetSlimContactsResponse : Codable { public var contacts:[ContactSummaryModel]? public var totalContacts:Int? public var responseStatus:ResponseStatus? required public init(){} } public enum SortOrder : String, Codable { case Ascending case Descending } public class PagedModel : Codable { /** * Page Number to retrieve */ // @ApiMember(DataType="int", Description="Page Number to retrieve", Name="PageNumber") public var pageNumber:Int? /** * Number of records to retrieve */ // @ApiMember(DataType="int", Description="Number of records to retrieve", Name="PageSize") public var pageSize:Int? /** * Index of field to sort results by */ // @ApiMember(DataType="int", Description="Index of field to sort results by", Name="SortIndex") public var sortIndex:Int? /** * Sort Order - Ascending or Descending */ // @ApiMember(DataType="int", Description="Sort Order - Ascending or Descending", Name="SortOrder") public var sortOrder:SortOrder? required public init(){} } public class ContactSummaryModel : Codable { /** * Contact linked to the profile */ // @ApiMember(DataType="Guid", Description="Contact linked to the profile", Name="ContactId") public var contactId:String? /** * Full name of the contact linked to the profile */ // @ApiMember(DataType="string", Description="Full name of the contact linked to the profile", Name="ContactFullName") public var contactFullName:String? /** * Email Address of the contact linked to the profile */ // @ApiMember(DataType="string", Description="Email Address of the contact linked to the profile", Name="EmailAddress") public var emailAddress:String? /** * Mobile Number of the contact linked to the profile */ // @ApiMember(DataType="string", Description="Mobile Number of the contact linked to the profile", Name="MobileNumber") public var mobileNumber:String? /** * Primary Phone Number of the contact linked to the profile */ // @ApiMember(DataType="string", Description="Primary Phone Number of the contact linked to the profile", Name="PhoneNumber") public var phoneNumber:String? /** * Type of contact (person, organisation etc.) linked to the profile */ // @ApiMember(DataType="string", Description="Type of contact (person, organisation etc.) linked to the profile", Name="ContactTypeId") public var contactTypeId:String? /** * Profile photo of contact linked to the profile */ // @ApiMember(DataType="string", Description="Profile photo of contact linked to the profile", Name="ProfilePhotoUrl") public var profilePhotoUrl:String? /** * Thumbnail photo of contact linked to the profile */ // @ApiMember(DataType="string", Description="Thumbnail photo of contact linked to the profile", Name="ProfilePhotoThumbnailUrl") public var profilePhotoThumbnailUrl:String? /** * Profile description */ // @ApiMember(DataType="string", Description="Profile description", Name="Description") public var Description:String? /** * Employment Industry */ // @ApiMember(DataType="string", Description="Employment Industry", Name="EmploymentIndustry") public var employmentIndustry:String? /** * Employment Role */ // @ApiMember(DataType="string", Description="Employment Role", Name="EmploymentRole") public var employmentRole:String? /** * Areas of Work */ // @ApiMember(DataType="string", Description="Areas of Work", Name="EmploymentGeographicArea") public var employmentGeographicArea:String? /** * Timezone Name */ // @ApiMember(DataType="string", Description="Timezone Name", Name="TimezoneName", ParameterType="query") public var timezoneName:String? /** * The primary address of the contact */ // @ApiMember(DataType="string", Description="The primary address of the contact", Name="PrimaryAddress", ParameterType="query") public var primaryAddress:String? /** * Have all connections to the contact been removed? */ // @ApiMember(DataType="bool", Description="Have all connections to the contact been removed?", Name="IsRemovedContact") public var isRemovedContact:Bool? required public init(){} }