/* Options: Date: 2024-11-29 15:37:54 SwiftVersion: 5.0 Version: 8.12 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://taxfiling.staging.pwc.de //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True IncludeTypes: SearchProductsAsync.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack /** * Represents a service to search for product data in an asynchronous operation. */ // @Route("/async/products/search", "GET") // @Api(Description="Represents a service to search for product data in an asynchronous operation.") public class SearchProductsAsync : SearchProductsBase, IReturn { public typealias Return = ProductQueryResponse /** * The unique identifier of the account associated with the product. */ // @ApiMember(Description="The unique identifier of the account associated with the product.") public var productId:Int? /** * The unique identifier of the account associated with the product. */ // @ApiMember(Description="The unique identifier of the account associated with the product.") public var accountId:Int? /** * The name of the product. */ // @ApiMember(Description="The name of the product.") public var name:String /** * Search by using the name of the product that starts with the specified value. */ // @ApiMember(Description="Search by using the name of the product that starts with the specified value.") public var nameStartsWith:String /** * Search by using the name of the product that ends with the specified value. */ // @ApiMember(Description="Search by using the name of the product that ends with the specified value.") public var nameEndsWith:String /** * Search by using the name of the product that contains the specified value. */ // @ApiMember(Description="Search by using the name of the product that contains the specified value.") public var nameContains:String /** * The version of the product. */ // @ApiMember(Description="The version of the product.") public var version:String /** * Search by using the version of the product that starts with the specified value. */ // @ApiMember(Description="Search by using the version of the product that starts with the specified value.") public var versionStartsWith:String /** * Search by using the version of the product that ends with the specified value. */ // @ApiMember(Description="Search by using the version of the product that ends with the specified value.") public var versionEndsWith:String /** * Search by using the version of the product that contains the specified value. */ // @ApiMember(Description="Search by using the version of the product that contains the specified value.") public var versionContains:String /** * The description of the product. */ // @ApiMember(Description="The description of the product.") public var Description:String /** * Search by using the description of the product that starts with the specified value. */ // @ApiMember(Description="Search by using the description of the product that starts with the specified value.") public var descriptionStartsWith:String /** * Search by using the description of the product that ends with the specified value. */ // @ApiMember(Description="Search by using the description of the product that ends with the specified value.") public var descriptionEndsWith:String /** * Search by using the description of the product that contains the specified value. */ // @ApiMember(Description="Search by using the description of the product that contains the specified value.") public var descriptionContains:String /** * Should the related orders of the account be included in the retrieved products? */ // @ApiMember(Description="Should the related orders of the account be included in the retrieved products?") public var includeOrders:Bool? /** * Specifies the number of orders to skip per product. Applicable only when 'IncludeOrders' is true. */ // @ApiMember(Description="Specifies the number of orders to skip per product. Applicable only when 'IncludeOrders' is true. ") public var skipOrders:Int? /** * Specifies the number of orders to include per product. Applicable only when 'IncludeOrders' is true. */ // @ApiMember(Description="Specifies the number of orders to include per product. Applicable only when 'IncludeOrders' is true. ") public var takeOrders:Int? /** * The number of query results to skip. */ // @ApiMember(Description="The number of query results to skip.") public var skip:Int? /** * The number of query results to include. */ // @ApiMember(Description="The number of query results to include.") public var take:Int? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case productId case accountId case name case nameStartsWith case nameEndsWith case nameContains case version case versionStartsWith case versionEndsWith case versionContains case Description case descriptionStartsWith case descriptionEndsWith case descriptionContains case includeOrders case skipOrders case takeOrders case skip case take } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) productId = try container.decodeIfPresent(Int.self, forKey: .productId) accountId = try container.decodeIfPresent(Int.self, forKey: .accountId) name = try container.decodeIfPresent(String.self, forKey: .name) nameStartsWith = try container.decodeIfPresent(String.self, forKey: .nameStartsWith) nameEndsWith = try container.decodeIfPresent(String.self, forKey: .nameEndsWith) nameContains = try container.decodeIfPresent(String.self, forKey: .nameContains) version = try container.decodeIfPresent(String.self, forKey: .version) versionStartsWith = try container.decodeIfPresent(String.self, forKey: .versionStartsWith) versionEndsWith = try container.decodeIfPresent(String.self, forKey: .versionEndsWith) versionContains = try container.decodeIfPresent(String.self, forKey: .versionContains) Description = try container.decodeIfPresent(String.self, forKey: .Description) descriptionStartsWith = try container.decodeIfPresent(String.self, forKey: .descriptionStartsWith) descriptionEndsWith = try container.decodeIfPresent(String.self, forKey: .descriptionEndsWith) descriptionContains = try container.decodeIfPresent(String.self, forKey: .descriptionContains) includeOrders = try container.decodeIfPresent(Bool.self, forKey: .includeOrders) skipOrders = try container.decodeIfPresent(Int.self, forKey: .skipOrders) takeOrders = try container.decodeIfPresent(Int.self, forKey: .takeOrders) skip = try container.decodeIfPresent(Int.self, forKey: .skip) take = try container.decodeIfPresent(Int.self, forKey: .take) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if productId != nil { try container.encode(productId, forKey: .productId) } if accountId != nil { try container.encode(accountId, forKey: .accountId) } if name != nil { try container.encode(name, forKey: .name) } if nameStartsWith != nil { try container.encode(nameStartsWith, forKey: .nameStartsWith) } if nameEndsWith != nil { try container.encode(nameEndsWith, forKey: .nameEndsWith) } if nameContains != nil { try container.encode(nameContains, forKey: .nameContains) } if version != nil { try container.encode(version, forKey: .version) } if versionStartsWith != nil { try container.encode(versionStartsWith, forKey: .versionStartsWith) } if versionEndsWith != nil { try container.encode(versionEndsWith, forKey: .versionEndsWith) } if versionContains != nil { try container.encode(versionContains, forKey: .versionContains) } if Description != nil { try container.encode(Description, forKey: .Description) } if descriptionStartsWith != nil { try container.encode(descriptionStartsWith, forKey: .descriptionStartsWith) } if descriptionEndsWith != nil { try container.encode(descriptionEndsWith, forKey: .descriptionEndsWith) } if descriptionContains != nil { try container.encode(descriptionContains, forKey: .descriptionContains) } if includeOrders != nil { try container.encode(includeOrders, forKey: .includeOrders) } if skipOrders != nil { try container.encode(skipOrders, forKey: .skipOrders) } if takeOrders != nil { try container.encode(takeOrders, forKey: .takeOrders) } if skip != nil { try container.encode(skip, forKey: .skip) } if take != nil { try container.encode(take, forKey: .take) } } } /** * Represents a query response that contains a structured error information and encapsulates products. */ // @Api(Description="Represents a query response that contains a structured error information and encapsulates products.") public class ProductQueryResponse : QueryResponse { /** * The dictionary of orders associated with each found product. */ // @ApiMember(Description="The dictionary of orders associated with each found product.") public var ordersMap:[Int:[Order]] = [:] // @DataMember(Order=1) public var offset:Int // @DataMember(Order=2) public var total:Int // @DataMember(Order=3) public var results:[Product] = [] // @DataMember(Order=4) public var meta:[String:String] = [:] // @DataMember(Order=5) public var responseStatus:ResponseStatus required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case ordersMap case offset case total case results case meta case responseStatus } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) ordersMap = try container.decodeIfPresent([Int:[Order]].self, forKey: .ordersMap) ?? [:] offset = try container.decodeIfPresent(Int.self, forKey: .offset) total = try container.decodeIfPresent(Int.self, forKey: .total) results = try container.decodeIfPresent([Product].self, forKey: .results) ?? [] meta = try container.decodeIfPresent([String:String].self, forKey: .meta) ?? [:] responseStatus = try container.decodeIfPresent(ResponseStatus.self, forKey: .responseStatus) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if ordersMap.count > 0 { try container.encode(ordersMap, forKey: .ordersMap) } if offset != nil { try container.encode(offset, forKey: .offset) } if total != nil { try container.encode(total, forKey: .total) } if results.count > 0 { try container.encode(results, forKey: .results) } if meta.count > 0 { try container.encode(meta, forKey: .meta) } if responseStatus != nil { try container.encode(responseStatus, forKey: .responseStatus) } } } public protocol IPaginate { var skip:Int? { get set } var take:Int? { get set } } /** * Specifies a service to search for products. */ // @Api(Description="Specifies a service to search for products.") public class SearchProductsBase : PaginationBase, IGet { /** * The unique identifier of the account associated with the product. */ // @ApiMember(Description="The unique identifier of the account associated with the product.") public var productId:Int? /** * The unique identifier of the account associated with the product. */ // @ApiMember(Description="The unique identifier of the account associated with the product.") public var accountId:Int? /** * The name of the product. */ // @ApiMember(Description="The name of the product.") public var name:String /** * Search by using the name of the product that starts with the specified value. */ // @ApiMember(Description="Search by using the name of the product that starts with the specified value.") public var nameStartsWith:String /** * Search by using the name of the product that ends with the specified value. */ // @ApiMember(Description="Search by using the name of the product that ends with the specified value.") public var nameEndsWith:String /** * Search by using the name of the product that contains the specified value. */ // @ApiMember(Description="Search by using the name of the product that contains the specified value.") public var nameContains:String /** * The version of the product. */ // @ApiMember(Description="The version of the product.") public var version:String /** * Search by using the version of the product that starts with the specified value. */ // @ApiMember(Description="Search by using the version of the product that starts with the specified value.") public var versionStartsWith:String /** * Search by using the version of the product that ends with the specified value. */ // @ApiMember(Description="Search by using the version of the product that ends with the specified value.") public var versionEndsWith:String /** * Search by using the version of the product that contains the specified value. */ // @ApiMember(Description="Search by using the version of the product that contains the specified value.") public var versionContains:String /** * The description of the product. */ // @ApiMember(Description="The description of the product.") public var Description:String /** * Search by using the description of the product that starts with the specified value. */ // @ApiMember(Description="Search by using the description of the product that starts with the specified value.") public var descriptionStartsWith:String /** * Search by using the description of the product that ends with the specified value. */ // @ApiMember(Description="Search by using the description of the product that ends with the specified value.") public var descriptionEndsWith:String /** * Search by using the description of the product that contains the specified value. */ // @ApiMember(Description="Search by using the description of the product that contains the specified value.") public var descriptionContains:String /** * Should the related orders of the account be included in the retrieved products? */ // @ApiMember(Description="Should the related orders of the account be included in the retrieved products?") public var includeOrders:Bool? /** * Specifies the number of orders to skip per product. Applicable only when 'IncludeOrders' is true. */ // @ApiMember(Description="Specifies the number of orders to skip per product. Applicable only when 'IncludeOrders' is true. ") public var skipOrders:Int? /** * Specifies the number of orders to include per product. Applicable only when 'IncludeOrders' is true. */ // @ApiMember(Description="Specifies the number of orders to include per product. Applicable only when 'IncludeOrders' is true. ") public var takeOrders:Int? /** * The number of query results to skip. */ // @ApiMember(Description="The number of query results to skip.") public var skip:Int? /** * The number of query results to include. */ // @ApiMember(Description="The number of query results to include.") public var take:Int? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case productId case accountId case name case nameStartsWith case nameEndsWith case nameContains case version case versionStartsWith case versionEndsWith case versionContains case Description case descriptionStartsWith case descriptionEndsWith case descriptionContains case includeOrders case skipOrders case takeOrders case skip case take } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) productId = try container.decodeIfPresent(Int.self, forKey: .productId) accountId = try container.decodeIfPresent(Int.self, forKey: .accountId) name = try container.decodeIfPresent(String.self, forKey: .name) nameStartsWith = try container.decodeIfPresent(String.self, forKey: .nameStartsWith) nameEndsWith = try container.decodeIfPresent(String.self, forKey: .nameEndsWith) nameContains = try container.decodeIfPresent(String.self, forKey: .nameContains) version = try container.decodeIfPresent(String.self, forKey: .version) versionStartsWith = try container.decodeIfPresent(String.self, forKey: .versionStartsWith) versionEndsWith = try container.decodeIfPresent(String.self, forKey: .versionEndsWith) versionContains = try container.decodeIfPresent(String.self, forKey: .versionContains) Description = try container.decodeIfPresent(String.self, forKey: .Description) descriptionStartsWith = try container.decodeIfPresent(String.self, forKey: .descriptionStartsWith) descriptionEndsWith = try container.decodeIfPresent(String.self, forKey: .descriptionEndsWith) descriptionContains = try container.decodeIfPresent(String.self, forKey: .descriptionContains) includeOrders = try container.decodeIfPresent(Bool.self, forKey: .includeOrders) skipOrders = try container.decodeIfPresent(Int.self, forKey: .skipOrders) takeOrders = try container.decodeIfPresent(Int.self, forKey: .takeOrders) skip = try container.decodeIfPresent(Int.self, forKey: .skip) take = try container.decodeIfPresent(Int.self, forKey: .take) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if productId != nil { try container.encode(productId, forKey: .productId) } if accountId != nil { try container.encode(accountId, forKey: .accountId) } if name != nil { try container.encode(name, forKey: .name) } if nameStartsWith != nil { try container.encode(nameStartsWith, forKey: .nameStartsWith) } if nameEndsWith != nil { try container.encode(nameEndsWith, forKey: .nameEndsWith) } if nameContains != nil { try container.encode(nameContains, forKey: .nameContains) } if version != nil { try container.encode(version, forKey: .version) } if versionStartsWith != nil { try container.encode(versionStartsWith, forKey: .versionStartsWith) } if versionEndsWith != nil { try container.encode(versionEndsWith, forKey: .versionEndsWith) } if versionContains != nil { try container.encode(versionContains, forKey: .versionContains) } if Description != nil { try container.encode(Description, forKey: .Description) } if descriptionStartsWith != nil { try container.encode(descriptionStartsWith, forKey: .descriptionStartsWith) } if descriptionEndsWith != nil { try container.encode(descriptionEndsWith, forKey: .descriptionEndsWith) } if descriptionContains != nil { try container.encode(descriptionContains, forKey: .descriptionContains) } if includeOrders != nil { try container.encode(includeOrders, forKey: .includeOrders) } if skipOrders != nil { try container.encode(skipOrders, forKey: .skipOrders) } if takeOrders != nil { try container.encode(takeOrders, forKey: .takeOrders) } if skip != nil { try container.encode(skip, forKey: .skip) } if take != nil { try container.encode(take, forKey: .take) } } } /** * Represents a product. */ // @Api(Description="Represents a product.") public class Product : IHasName, Codable { /** * The unique identifier of the product. */ // @ApiMember(Description="The unique identifier of the product.", IsRequired=true) public var id:Int /** * The position of this instance in a collection of 'Product' instances */ // @ApiMember(Description="The position of this instance in a collection of 'Product' instances", IsRequired=true) public var index:Int /** * The name of the product. */ // @ApiMember(Description="The name of the product.", IsRequired=true) // @Validate(Validator="NotEmpty") public var name:String /** * The version of the product. */ // @ApiMember(Description="The version of the product.", IsRequired=true) // @Validate(Validator="NotEmpty") public var version:String /** * The version of the product. */ // @ApiMember(Description="The version of the product.") public var Description:String /** * Tags associated with the product. */ // @ApiMember(Description="Tags associated with the product.") public var tags:[String] = [] required public init(){} } /** * The number of query results to skip. */ // @Api(Description="The number of query results to skip.") public class PaginationBase : IPaginate, Codable { /** * The number of query results to skip. */ // @ApiMember(Description="The number of query results to skip.") public var skip:Int? /** * The number of query results to include. */ // @ApiMember(Description="The number of query results to include.") public var take:Int? required public init(){} } /** * Specifies that a data type should have a 'Name' property. */ public protocol IHasName { /** * The 'Name' property. */ var name:String { get set } }