POST | /rebatecodes/fromarticle | Create 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
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 } }