BokaMera.API.Host

<back to all web services

CreateArticleRebateCode

The following routes are available for this service:
POST/rebatecodes/fromarticleCreate RebateCode.Create RebateCode.
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


@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 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 BaseModel:
    pass


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ArticleServiceRelation(BaseModel):
    # @Required()
    company_id: Optional[str] = None

    id: int = 0
    # @Required()
    service_id: int = 0

    # @Required()
    article_id: int = 0


@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 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 RebateCodeCompanyResponse:
    site_path: Optional[str] = None
    payment_provider_id: Optional[int] = 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


@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


# @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CreateArticleRebateCode(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
    """

Python CreateArticleRebateCode DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + JSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /rebatecodes/fromarticle HTTP/1.1 
Host: api.bokamera.se 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	CompanyId: 00000000-0000-0000-0000-000000000000,
	ArticleId: 0,
	Customer: 
	{
		CustomerId: 00000000-0000-0000-0000-000000000000,
		Firstname: String,
		Lastname: String,
		Email: String,
		Phone: String,
		SubscribedToNewsletter: False
	},
	InvoiceAddress: 
	{
		CorporateIdentityNumber: String,
		InvoiceAddress1: String,
		InvoiceAddress2: String,
		InvoiceCity: String,
		InvoicePostalCode: String,
		InvoiceCountryCode: String
	},
	Receiver: 
	{
		CustomerId: 00000000-0000-0000-0000-000000000000,
		Firstname: String,
		Lastname: String,
		Email: String,
		ReceiverMessage: String
	}
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	Id: 0,
	CompanyId: 00000000-0000-0000-0000-000000000000,
	FromTime: PT0S,
	ToTime: PT0S,
	CreatedBy: String,
	UpdatedBy: String,
	PersonalNote: String,
	RebateCodeSign: String,
	RebateCodeValue: 0,
	RebateCodeTypeId: 0,
	Name: String,
	RebateCodeStatusId: 0,
	StatusName: String,
	MaxNumberOfUses: 0,
	MaxNumberOfUsesPerCustomer: 0,
	NumberOfUsesUsed: 0,
	DaysOfWeek: 
	[
		{
			Id: 0,
			DayOfWeek: String,
			DayOfWeekTranslation: String,
			DayOfWeekActive: False,
			DayOfWeekSortOrder: 0
		}
	],
	Services: 
	[
		{
			Id: 0,
			Name: String,
			Description: String,
			Active: False
		}
	],
	Article: 
	{
		Id: 0,
		Name: String,
		ArticleTypeId: 0,
		Description: String,
		ImageUrl: String,
		Active: False,
		Amount: 0,
		Price: 0,
		CurrencyId: String,
		Services: 
		[
			{
				Id: 0,
				ServiceId: 0,
				ArticleId: 0
			}
		],
		ServiceIds: 
		[
			0
		],
		PriceSign: String,
		VAT: 0
	},
	Transactions: 
	[
		{
			Id: 0,
			Note: String,
			RebateCodeId: 0,
			RebateCodeSign: String,
			RebateCodeTypeId: 0,
			RebateCodeTypeName: String,
			Amount: 0,
			Usage: String,
			BookingId: 0,
			Service: 
			{
				Id: 0,
				Name: String,
				Description: String,
				Active: False
			},
			Customer: 
			{
				Firstname: String,
				Lastname: String,
				Email: String,
				Phone: String,
				ImageUrl: String
			},
			PriceSign: String
		}
	],
	RemainingAmount: 0,
	RemainingUsage: 0,
	Customers: 
	[
		{
			Firstname: String,
			Lastname: String,
			Email: String,
			Phone: String,
			ImageUrl: String
		}
	],
	ResponseStatus: 
	{
		ErrorCode: String,
		Message: String,
		StackTrace: String,
		Errors: 
		[
			{
				ErrorCode: String,
				FieldName: String,
				Message: String,
				Meta: 
				{
					String: String
				}
			}
		],
		Meta: 
		{
			String: String
		}
	},
	PaymentReceived: False,
	RebateCodeCurrencySign: String,
	ActiveByStatus: False,
	PriceSign: String,
	RebateCodeTypeName: String,
	Company: 
	{
		SitePath: String,
		PaymentProviderId: 0
	}
}