""" Options: Date: 2025-07-27 13:06:25 Version: 8.23 Tip: To override a DTO option, remove "#" prefix before updating BaseUrl: https://api.bokamera.se #GlobalNamespace: #AddServiceStackTypes: True #AddResponseStatus: False #AddImplicitVersion: #AddDescriptionAsComments: True IncludeTypes: CreateArticleRebateCode.* #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 ICompany: company_id: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CustomerToHandle: customer_id: Optional[str] = None firstname: Optional[str] = None lastname: Optional[str] = None email: Optional[str] = None phone: Optional[str] = None subscribed_to_newsletter: bool = False @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class InvoiceAddressToHandle: corporate_identity_number: Optional[str] = None invoice_address1: Optional[str] = None invoice_address2: Optional[str] = None invoice_city: Optional[str] = None invoice_postal_code: Optional[str] = None invoice_country_code: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class PromoCodeReceiver: customer_id: Optional[str] = None firstname: Optional[str] = None lastname: Optional[str] = None email: Optional[str] = None receiver_message: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class RebateCodeServiceResponse: id: int = 0 name: Optional[str] = None description: Optional[str] = None active: bool = False @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class RebateCodeCustomerResponse: id: Optional[str] = None firstname: Optional[str] = None lastname: Optional[str] = None email: Optional[str] = None phone: Optional[str] = None image_url: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class RebateCodeTransactionQueryResponse: id: int = 0 company_id: Optional[str] = None note: Optional[str] = None rebate_code_id: int = 0 rebate_code_sign: Optional[str] = None rebate_code_type_id: Optional[int] = None rebate_code_type_name: Optional[str] = None amount: float = 0.0 usage: Optional[str] = None booking_id: Optional[int] = None updated_date: datetime.datetime = datetime.datetime(1, 1, 1) created_date: datetime.datetime = datetime.datetime(1, 1, 1) service: Optional[RebateCodeServiceResponse] = None customer: Optional[RebateCodeCustomerResponse] = None price_sign: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class DaysOfWeekResponse: id: int = 0 day_of_week: Optional[str] = None day_of_week_translation: Optional[str] = None day_of_week_active: Optional[bool] = None day_of_week_sort_order: Optional[int] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class RebateCodeCompanyResponse: site_path: Optional[str] = None payment_provider_id: Optional[int] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ArticleResponse: company_id: Optional[str] = None id: int = 0 name: Optional[str] = None article_type_id: int = 0 description: Optional[str] = None image_url: Optional[str] = None active: bool = False amount: int = 0 price: float = 0.0 currency_id: Optional[str] = None updated_date: datetime.datetime = datetime.datetime(1, 1, 1) created_date: datetime.datetime = datetime.datetime(1, 1, 1) services: Optional[List[ArticleServiceRelation]] = None service_ids: Optional[List[int]] = None price_sign: Optional[str] = None vat: Optional[Decimal] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class RebateCodeResponse: id: int = 0 company_id: Optional[str] = None valid_from: datetime.datetime = datetime.datetime(1, 1, 1) valid_to: datetime.datetime = datetime.datetime(1, 1, 1) # @ApiMember(Description="If the price is only valid for specific days in week add a comma separated list of which days this day price belongs to, 1 = Monday .. 7 = Sunday. All old days connected will be removed on update.") from_time: datetime.timedelta = datetime.timedelta() """ If the price is only valid for specific days in week add a comma separated list of which days this day price belongs to, 1 = Monday .. 7 = Sunday. All old days connected will be removed on update. """ # @ApiMember(Description="If the price is only valid for a specific time span during a time of day enter the FromTime and ToTime parameters.") to_time: datetime.timedelta = datetime.timedelta() """ If the price is only valid for a specific time span during a time of day enter the FromTime and ToTime parameters. """ created_by: Optional[str] = None created: datetime.datetime = datetime.datetime(1, 1, 1) updated_by: Optional[str] = None updated: datetime.datetime = datetime.datetime(1, 1, 1) personal_note: Optional[str] = None rebate_code_sign: Optional[str] = None rebate_code_value: int = 0 rebate_code_type_id: int = 0 name: Optional[str] = None rebate_code_status_id: int = 0 status_name: Optional[str] = None max_number_of_uses: int = 0 max_number_of_uses_per_customer: int = 0 number_of_uses_used: int = 0 days_of_week: Optional[List[DaysOfWeekResponse]] = None services: Optional[List[RebateCodeServiceResponse]] = None article: Optional[ArticleResponse] = None transactions: Optional[List[RebateCodeTransactionQueryResponse]] = None remaining_amount: Optional[float] = None remaining_usage: Optional[int] = None customers: Optional[List[RebateCodeCustomerResponse]] = None response_status: Optional[ResponseStatus] = None payment_received: bool = False rebate_code_currency_sign: Optional[str] = None active_by_status: bool = False price_sign: Optional[str] = None rebate_code_type_name: Optional[str] = None company: Optional[RebateCodeCompanyResponse] = None # @Route("/rebatecodes/fromarticle", "POST") # @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CreateArticleRebateCode(IReturn[RebateCodeResponse], ICompany): # @ApiMember(Description="") company_id: Optional[str] = None """ """ # @ApiMember(Description="Article ID for the rebate code", IsRequired=true) article_id: int = 0 """ Article ID for the rebate code """ # @ApiMember(Description="Customer information") customer: Optional[CustomerToHandle] = None """ Customer information """ # @ApiMember(Description="If you want to book with customer information instead of the Customer Id send the customer information here. Note: If customer profile already exists with the same email the information will not be changed, instead the provided information will be added as BookingsComments if it differs from the ordinairy profile. ") invoice_address: Optional[InvoiceAddressToHandle] = None """ If you want to book with customer information instead of the Customer Id send the customer information here. Note: If customer profile already exists with the same email the information will not be changed, instead the provided information will be added as BookingsComments if it differs from the ordinairy profile. """ # @ApiMember(Description="Promo code Receiver information") receiver: Optional[PromoCodeReceiver] = None """ Promo code Receiver information """