""" Options: Date: 2024-09-16 18:52:47 Version: 8.12 Tip: To override a DTO option, remove "#" prefix before updating BaseUrl: https://taxfiling.pwc.de #GlobalNamespace: #AddServiceStackTypes: True #AddResponseStatus: False #AddImplicitVersion: #AddDescriptionAsComments: True IncludeTypes: SearchProductsAsync.* #ExcludeTypes: #DefaultImports: datetime,decimal,marshmallow.fields:*,servicestack:*,typing:*,dataclasses:dataclass/field,dataclasses_json:dataclass_json/LetterCase/Undefined/config,enum:Enum/IntEnum #DataClass: #DataClassJson: """ import datetime import decimal from marshmallow.fields import * from servicestack import * from typing import * from dataclasses import dataclass, field from dataclasses_json import dataclass_json, LetterCase, Undefined, config from enum import Enum, IntEnum class IPaginate: skip: Optional[int] = None take: Optional[int] = None # @Api(Description="The number of query results to skip.") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class PaginationBase(IPaginate): """ The number of query results to skip. """ # @ApiMember(Description="The number of query results to skip.") skip: Optional[int] = None """ The number of query results to skip. """ # @ApiMember(Description="The number of query results to include.") take: Optional[int] = None """ The number of query results to include. """ # @Api(Description="Specifies a service to search for products.") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class SearchProductsBase(PaginationBase, IReturn[ProductQueryResponse], IGet): """ Specifies a service to search for products. """ # @ApiMember(Description="The unique identifier of the account associated with the product.") product_id: Optional[int] = None """ The unique identifier of the account associated with the product. """ # @ApiMember(Description="The unique identifier of the account associated with the product.") account_id: Optional[int] = None """ The unique identifier of the account associated with the product. """ # @ApiMember(Description="The name of the product.") name: Optional[str] = None """ The name of the product. """ # @ApiMember(Description="Search by using the name of the product that starts with the specified value.") name_starts_with: Optional[str] = None """ 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 ends with the specified value.") name_ends_with: Optional[str] = None """ 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 contains the specified value.") name_contains: Optional[str] = None """ Search by using the name of the product that contains the specified value. """ # @ApiMember(Description="The version of the product.") version: Optional[str] = None """ The version of the product. """ # @ApiMember(Description="Search by using the version of the product that starts with the specified value.") version_starts_with: Optional[str] = None """ 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 ends with the specified value.") version_ends_with: Optional[str] = None """ 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 contains the specified value.") version_contains: Optional[str] = None """ Search by using the version of the product that contains the specified value. """ # @ApiMember(Description="The description of the product.") description: Optional[str] = None """ The description of the product. """ # @ApiMember(Description="Search by using the description of the product that starts with the specified value.") description_starts_with: Optional[str] = None """ 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 ends with the specified value.") description_ends_with: Optional[str] = None """ 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 contains the specified value.") description_contains: Optional[str] = None """ Search by using the description of the product that contains the specified value. """ # @ApiMember(Description="Should the related orders of the account be included in the retrieved products?") include_orders: Optional[bool] = None """ Should the related orders of the account be included in the retrieved products? """ # @ApiMember(Description="Specifies the number of orders to skip per product. Applicable only when 'IncludeOrders' is true. ") skip_orders: Optional[int] = None """ Specifies the number of orders to skip 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. ") take_orders: Optional[int] = None """ Specifies the number of orders to include per product. Applicable only when 'IncludeOrders' is true. """ # @ApiMember(Description="The number of query results to skip.") skip: Optional[int] = None """ The number of query results to skip. """ # @ApiMember(Description="The number of query results to include.") take: Optional[int] = None """ The number of query results to include. """ @staticmethod def response_type(): return ProductQueryResponse # @Api(Description="Represents a product.") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Product(IHasName): """ Represents a product. """ # @ApiMember(Description="The unique identifier of the product.", IsRequired=true) id: int = 0 """ The unique identifier of the product. """ # @ApiMember(Description="The position of this instance in a collection of 'Product' instances", IsRequired=true) index: int = 0 """ The position of this instance in a collection of 'Product' instances """ # @ApiMember(Description="The name of the product.", IsRequired=true) # @Validate(Validator="NotEmpty") name: Optional[str] = None """ The name of the product. """ # @ApiMember(Description="The version of the product.", IsRequired=true) # @Validate(Validator="NotEmpty") version: Optional[str] = None """ The version of the product. """ # @ApiMember(Description="The version of the product.") description: Optional[str] = None """ The version of the product. """ # @ApiMember(Description="Tags associated with the product.") tags: Optional[List[str]] = None """ Tags associated with the product. """ class IHasName: """ Specifies that a data type should have a 'Name' property. """ name: Optional[str] = None """ The 'Name' property. """ # @Api(Description="Represents a query response that contains a structured error information and encapsulates products.") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ProductQueryResponse(QueryResponse[Product]): """ Represents a query response that contains a structured error information and encapsulates products. """ # @ApiMember(Description="The dictionary of orders associated with each found product.") orders_map: Optional[Dict[int, List[Order]]] = None """ The dictionary of orders associated with each found product. """ offset: int = 0 total: int = 0 results: Optional[List[Product]] = None meta: Optional[Dict[str, str]] = None response_status: Optional[ResponseStatus] = None # @Route("/async/products/search", "GET") # @Api(Description="Represents a service to search for product data in an asynchronous operation.") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class SearchProductsAsync(SearchProductsBase, IReturn[ProductQueryResponse]): """ Represents a service to search for product data in an asynchronous operation. """ # @ApiMember(Description="The unique identifier of the account associated with the product.") product_id: Optional[int] = None """ The unique identifier of the account associated with the product. """ # @ApiMember(Description="The unique identifier of the account associated with the product.") account_id: Optional[int] = None """ The unique identifier of the account associated with the product. """ # @ApiMember(Description="The name of the product.") name: Optional[str] = None """ The name of the product. """ # @ApiMember(Description="Search by using the name of the product that starts with the specified value.") name_starts_with: Optional[str] = None """ 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 ends with the specified value.") name_ends_with: Optional[str] = None """ 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 contains the specified value.") name_contains: Optional[str] = None """ Search by using the name of the product that contains the specified value. """ # @ApiMember(Description="The version of the product.") version: Optional[str] = None """ The version of the product. """ # @ApiMember(Description="Search by using the version of the product that starts with the specified value.") version_starts_with: Optional[str] = None """ 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 ends with the specified value.") version_ends_with: Optional[str] = None """ 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 contains the specified value.") version_contains: Optional[str] = None """ Search by using the version of the product that contains the specified value. """ # @ApiMember(Description="The description of the product.") description: Optional[str] = None """ The description of the product. """ # @ApiMember(Description="Search by using the description of the product that starts with the specified value.") description_starts_with: Optional[str] = None """ 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 ends with the specified value.") description_ends_with: Optional[str] = None """ 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 contains the specified value.") description_contains: Optional[str] = None """ Search by using the description of the product that contains the specified value. """ # @ApiMember(Description="Should the related orders of the account be included in the retrieved products?") include_orders: Optional[bool] = None """ Should the related orders of the account be included in the retrieved products? """ # @ApiMember(Description="Specifies the number of orders to skip per product. Applicable only when 'IncludeOrders' is true. ") skip_orders: Optional[int] = None """ Specifies the number of orders to skip 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. ") take_orders: Optional[int] = None """ Specifies the number of orders to include per product. Applicable only when 'IncludeOrders' is true. """ # @ApiMember(Description="The number of query results to skip.") skip: Optional[int] = None """ The number of query results to skip. """ # @ApiMember(Description="The number of query results to include.") take: Optional[int] = None """ The number of query results to include. """