/* Options: Date: 2024-12-21 17:12:01 SwiftVersion: 5.0 Version: 8.12 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://taxfiling.pwc.de //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True IncludeTypes: RetrieveProductAsync.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack /** * Represents a service request to retrieve a product in an asynchronous operation. */ // @Route("/async/products/{Id}", "GET") // @Api(Description="Represents a service request to retrieve a product in an asynchronous operation.") public class RetrieveProductAsync : RetrieveProductBase, IReturn { public typealias Return = ProductResponse /** * The unique identifier of the product. */ // @ApiMember(Description="The unique identifier of the product.", Name="Id") public var id:Int /** * Should the related orders of the account be included in the retrieved product? */ // @ApiMember(Description="Should the related orders of the account be included in the retrieved product?") public var includeOrders:Bool? /** * Specifies the number of orders to skip. Applicable only when 'IncludeOrders' is true. */ // @ApiMember(Description="Specifies the number of orders to skip. Applicable only when 'IncludeOrders' is true. ") public var skipOrders:Int? /** * Specifies the number of orders to include. Applicable only when 'IncludeOrders' is true. */ // @ApiMember(Description="Specifies the number of orders to include. Applicable only when 'IncludeOrders' is true. ") public var takeOrders:Int? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case id case includeOrders case skipOrders case takeOrders } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) id = try container.decodeIfPresent(Int.self, forKey: .id) includeOrders = try container.decodeIfPresent(Bool.self, forKey: .includeOrders) skipOrders = try container.decodeIfPresent(Int.self, forKey: .skipOrders) takeOrders = try container.decodeIfPresent(Int.self, forKey: .takeOrders) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if id != nil { try container.encode(id, forKey: .id) } 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) } } } /** * Represents a service response that encapsulates product data. */ // @Api(Description="Represents a service response that encapsulates product data.") public class ProductResponse : ServiceResponseBase { /** * The product data of the response. */ // @ApiMember(Description="The product data of the response.") public var product:Product /** * The list of orders associated with the encapsulated product. */ // @ApiMember(Description="The list of orders associated with the encapsulated product.") public var orders:[Order] = [] /** * Data structure that holds error information from a service operation. */ // @ApiMember(Description="Data structure that holds error information from a service operation.") public var responseStatus:ResponseStatus required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case product case orders case responseStatus } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) product = try container.decodeIfPresent(Product.self, forKey: .product) orders = try container.decodeIfPresent([Order].self, forKey: .orders) ?? [] 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 product != nil { try container.encode(product, forKey: .product) } if orders.count > 0 { try container.encode(orders, forKey: .orders) } if responseStatus != nil { try container.encode(responseStatus, forKey: .responseStatus) } } } /** * Specifies a service request to retrieve a product. */ // @Api(Description="Specifies a service request to retrieve a product.") public class RetrieveProductBase : IGet, Codable { /** * The unique identifier of the product. */ // @ApiMember(Description="The unique identifier of the product.", Name="Id") public var id:Int /** * Should the related orders of the account be included in the retrieved product? */ // @ApiMember(Description="Should the related orders of the account be included in the retrieved product?") public var includeOrders:Bool? /** * Specifies the number of orders to skip. Applicable only when 'IncludeOrders' is true. */ // @ApiMember(Description="Specifies the number of orders to skip. Applicable only when 'IncludeOrders' is true. ") public var skipOrders:Int? /** * Specifies the number of orders to include. Applicable only when 'IncludeOrders' is true. */ // @ApiMember(Description="Specifies the number of orders to include. Applicable only when 'IncludeOrders' is true. ") public var takeOrders:Int? required public init(){} } /** * 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(){} } /** * Represents a commission to consume services. */ // @Api(Description="Represents a commission to consume services.") public class Order : IHasName, Codable { /** * The unique identifier of the order. */ // @ApiMember(Description="The unique identifier of the order.", IsRequired=true) public var id:Int /** * The unique identifier of the product, for which the order is made. */ // @ApiMember(Description="The unique identifier of the product, for which the order is made.", IsRequired=true) public var productId:Int /** * The unique identifier of the user account, who placed the order. */ // @ApiMember(Description="The unique identifier of the user account, who placed the order.", IsRequired=true) public var accountId:Int /** * A name to identify the order. */ // @ApiMember(Description="A name to identify the order.", IsRequired=true) // @Validate(Validator="NotEmpty") public var name:String /** * The name of the service, for which the order was made. */ // @ApiMember(Description="The name of the service, for which the order was made.") public var serviceName:String /** * The time stamp at which the order was initiated. */ // @ApiMember(Description="The time stamp at which the order was initiated.") public var requestTimestamp:Date? /** * The time stamp at which the order was completed. */ // @ApiMember(Description="The time stamp at which the order was completed.") public var responseTimestamp:Date? /** * The URI from which the order was initiated. */ // @ApiMember(Description="The URI from which the order was initiated.") public var requestUri:String /** * The HTTP method of the order request. */ // @ApiMember(Description="The HTTP method of the order request.") public var requestHttpMethod:String /** * The duration of the order request. */ // @ApiMember(Description="The duration of the order request.") @TimeSpan public var requestDuration:TimeInterval? /** * The HTTP status code of the order request. */ // @ApiMember(Description="The HTTP status code of the order request.") public var responseStatusCode:HttpStatusCode /** * The IP address of client, who placed the order. */ // @ApiMember(Description="The IP address of client, who placed the order.") public var clientIPAddress:String /** * The unit of measurement for the order. */ // @ApiMember(Description="The unit of measurement for the order.") public var unitOfMeasurement:String /** * The type of process, for which the order is charged. */ // @ApiMember(Description="The type of process, for which the order is charged.") public var processType:String /** * The type of data, for which the order is charged. */ // @ApiMember(Description="The type of data, for which the order is charged.") public var dataType:String /** * The name of the data, for which the order is charged. */ // @ApiMember(Description="The name of the data, for which the order is charged.") public var dataName:String /** * The date of creation of the order. */ // @ApiMember(Description="The date of creation of the order.") public var creationDate:Date /** * The final date to retain the order in the records. After this date, the order is expunged from the records. */ // @ApiMember(Description="The final date to retain the order in the records. After this date, the order is expunged from the records.") public var expiryDate:Date? /** * Indicates whether the order is simulated for test purposes. True if the order is simulated for test purposes; otherwise it is a false order for production purposes. */ // @ApiMember(Description="Indicates whether the order is simulated for test purposes. True if the order is simulated for test purposes; otherwise it is a false order for production purposes.") public var isTest:Bool required public init(){} } /** * Specifies a base service response class that contains a structured error information. */ // @Api(Description="Specifies a base service response class that contains a structured error information.") public class ServiceResponseBase : Codable { /** * Data structure that holds error information from a service operation. */ // @ApiMember(Description="Data structure that holds error information from a service operation.") public var responseStatus:ResponseStatus required public init(){} } /** * Specifies that a data type should have a 'Name' property. */ public protocol IHasName { /** * The 'Name' property. */ var name:String { get set } } public enum HttpStatusCode : Int, Codable { case Continue = 100 case SwitchingProtocols = 101 case Processing = 102 case EarlyHints = 103 case OK = 200 case Created = 201 case Accepted = 202 case NonAuthoritativeInformation = 203 case NoContent = 204 case ResetContent = 205 case PartialContent = 206 case MultiStatus = 207 case AlreadyReported = 208 case IMUsed = 226 case MultipleChoices = 300 case Ambiguous = 300 case MovedPermanently = 301 case Moved = 301 case Found = 302 case Redirect = 302 case SeeOther = 303 case RedirectMethod = 303 case NotModified = 304 case UseProxy = 305 case Unused = 306 case TemporaryRedirect = 307 case RedirectKeepVerb = 307 case PermanentRedirect = 308 case BadRequest = 400 case Unauthorized = 401 case PaymentRequired = 402 case Forbidden = 403 case NotFound = 404 case MethodNotAllowed = 405 case NotAcceptable = 406 case ProxyAuthenticationRequired = 407 case RequestTimeout = 408 case Conflict = 409 case Gone = 410 case LengthRequired = 411 case PreconditionFailed = 412 case RequestEntityTooLarge = 413 case RequestUriTooLong = 414 case UnsupportedMediaType = 415 case RequestedRangeNotSatisfiable = 416 case ExpectationFailed = 417 case MisdirectedRequest = 421 case UnprocessableEntity = 422 case UnprocessableContent = 422 case Locked = 423 case FailedDependency = 424 case UpgradeRequired = 426 case PreconditionRequired = 428 case TooManyRequests = 429 case RequestHeaderFieldsTooLarge = 431 case UnavailableForLegalReasons = 451 case InternalServerError = 500 case NotImplemented = 501 case BadGateway = 502 case ServiceUnavailable = 503 case GatewayTimeout = 504 case HttpVersionNotSupported = 505 case VariantAlsoNegotiates = 506 case InsufficientStorage = 507 case LoopDetected = 508 case NotExtended = 510 case NetworkAuthenticationRequired = 511 }