""" Options: Date: 2026-05-10 18:22:02 Version: 10.05 Tip: To override a DTO option, remove "#" prefix before updating BaseUrl: https://api.bokamera.se #GlobalNamespace: #AddServiceStackTypes: True #AddResponseStatus: False #AddImplicitVersion: #AddDescriptionAsComments: True IncludeTypes: CreateRebateCode.* #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 Object = TypeVar('Object') @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class InvoiceAddressToHandle(IInvoiceAddress): 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 PaymentLogResponse: id: int = 0 amount: Optional[float] = None amount_credited: Optional[float] = None currency_id: Optional[str] = None comments: Optional[str] = None created: datetime.datetime = datetime.datetime(1, 1, 1) updated: datetime.datetime = datetime.datetime(1, 1, 1) @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 class IInvoiceAddress: 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 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 sort_order: int = 0 updated_date: datetime.datetime = datetime.datetime(1, 1, 1) created_date: datetime.datetime = datetime.datetime(1, 1, 1) duration: int = 0 services: List[ArticleServiceRelation] = field(default_factory=list) service_ids: List[int] = field(default_factory=list) price_sign: Optional[str] = None vat: Optional[Decimal] = None valid_days: int = 0 send_notification: bool = False notification_email: Optional[str] = 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: List[DaysOfWeekResponse] = field(default_factory=list) services: List[RebateCodeServiceResponse] = field(default_factory=list) article: Optional[ArticleResponse] = None transactions: List[RebateCodeTransactionQueryResponse] = field(default_factory=list) remaining_amount: Optional[float] = None remaining_usage: Optional[int] = None customers: List[RebateCodeCustomerResponse] = field(default_factory=list) 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 payment_log: List[PaymentLogResponse] = field(default_factory=list) # @Route("/rebatecodes", "POST") # @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401) # @ValidateRequest(Validator="IsAuthenticated") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CreateRebateCode(IReturn[RebateCodeResponse]): # @ApiMember(Description="") company_id: Optional[str] = None """ """ # @ApiMember(Description="The default value is 9999") max_number_of_uses: Optional[int] = None """ The default value is 9999 """ # @ApiMember(Description="The default value is 1") max_number_of_uses_per_customer: Optional[int] = None """ The default value is 1 """ # @ApiMember(Description="", IsRequired=true) valid_from: datetime.datetime = datetime.datetime(1, 1, 1) """ """ # @ApiMember(Description="", IsRequired=true) 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: Optional[datetime.timedelta] = None """ 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: Optional[datetime.timedelta] = None """ If the price is only valid for a specific time span during a time of day enter the FromTime and ToTime parameters. """ # @ApiMember(Description="1 - Percent, 2 - Сurrency, 3 - PunchTicket, 4 - ValueCard, 5 - GiftCard", IsRequired=true) rebate_code_type_id: int = 0 """ 1 - Percent, 2 - Сurrency, 3 - PunchTicket, 4 - ValueCard, 5 - GiftCard """ # @ApiMember(Description="If it's connected to an Article, add the Article Id here.") article_id: Optional[int] = None """ If it's connected to an Article, add the Article Id here. """ # @ApiMember(Description="", IsRequired=true) rebate_code_value: int = 0 """ """ # @ApiMember(Description="If AutoGenerateRebateCodeSign=false - more than four letters, unique among active codes") rebate_code_sign: Optional[str] = None """ If AutoGenerateRebateCodeSign=false - more than four letters, unique among active codes """ # @ApiMember(Description="AutoGenerateRebateCodeSign=true - random generate code") auto_generate_rebate_code_sign: bool = False """ AutoGenerateRebateCodeSign=true - random generate code """ # @ApiMember(Description="") personal_note: Optional[str] = None """ """ # @ApiMember(Description="") days_of_week: List[int] = field(default_factory=list) """ """ # @ApiMember(Description="") services: List[int] = field(default_factory=list) """ """ # @ApiMember(Description="") customers: List[str] = field(default_factory=list) """ """ # @ApiMember(Description="The price") price_vat: Optional[Decimal] = None """ The price """ # @ApiMember(Description="The price VAT in percent") vat: Optional[Decimal] = None """ The price VAT in percent """ # @ApiMember(Description="The price currency") currency_id: Optional[str] = None """ The price currency """ # @ApiMember(Description="Promo code receiver information") promo_code_receiver: Optional[PromoCodeReceiver] = None """ Promo code receiver information """ # @ApiMember(Description="If you wish to save some invoice address information for the rebate code, you can do so here. This is optional.") invoice_address: Optional[InvoiceAddressToHandle] = None """ If you wish to save some invoice address information for the rebate code, you can do so here. This is optional. """ # @ApiMember(Description="Determines if the rebate code is active on creation or if it should await payment. If you set this to true, make sure to mark the code as payed when you receive the payment, by using the MarkRebateCodeAsPayed endpoint. The default value is false.") paid: Optional[bool] = None """ Determines if the rebate code is active on creation or if it should await payment. If you set this to true, make sure to mark the code as payed when you receive the payment, by using the MarkRebateCodeAsPayed endpoint. The default value is false. """