/* Options: Date: 2024-11-29 15:32:39 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: RetrieveAllProductsAsync.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack /** * Represents a service request to retrieve all products in an asynchronous operation. */ // @Route("/async/products", "GET") // @Api(Description="Represents a service request to retrieve all products in an asynchronous operation.") public class RetrieveAllProductsAsync : RetrieveAllProductsBase, IReturn { public typealias Return = ProductQueryResponse /** * 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 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) 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 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 retrieve all products. */ // @Api(Description="Specifies a service to retrieve all products.") public class RetrieveAllProductsBase : PaginationBase, IGet { /** * 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 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) 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 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 } }