| GET | /voss/packages | get voss package |
|---|
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')
class PackageStatusEnum(str, Enum):
DRAFT = 'Draft'
STAGED = 'Staged'
PUBLISHED = 'Published'
ARCHIVED = 'Archived'
DISCARDED = 'Discarded'
class ProductGroupTypeEnum(str, Enum):
OPTIONAL = 'Optional'
INCLUDED = 'Included'
class TypeEnum(str, Enum):
AT_SUBSCRIPTION_BILLING_PERIOD_END = 'AtSubscriptionBillingPeriodEnd'
AT_BINDING_PERIOD_END = 'AtBindingPeriodEnd'
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ProductGroupTagDto:
type: Optional[TypeEnum] = None
tag: Optional[str] = None
class ProductTypeEnum(str, Enum):
MAIN = 'Main'
ADDON = 'Addon'
LICENSE = 'License'
USAGE = 'Usage'
class StatusEnum(str, Enum):
ACTIVE = 'Active'
TERMINATED = 'Terminated'
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PackageProductDto:
product_type: Optional[ProductTypeEnum] = None
status: Optional[StatusEnum] = None
id: Optional[str] = None
name: Optional[str] = None
external_id: Optional[str] = None
article_number: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PackageProductGroupDto:
product_group_type: Optional[ProductGroupTypeEnum] = None
id: Optional[str] = None
name: Optional[str] = None
external_id: Optional[str] = None
tags: List[ProductGroupTagDto] = field(default_factory=list)
products: List[PackageProductDto] = field(default_factory=list)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PackageTierDto:
id: Optional[str] = None
name: Optional[str] = None
external_id: Optional[str] = None
product_groups: List[PackageProductGroupDto] = field(default_factory=list)
class PeriodEndActionEnum(str, Enum):
RENEW = 'Renew'
TERMINATE = 'Terminate'
class UnitEnum(str, Enum):
DAY = 'Day'
MONTH = 'Month'
YEAR = 'Year'
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class TimeLengthDto:
unit: Optional[UnitEnum] = None
value: int = 0
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BindingPeriodCycleDto:
period_end_action: Optional[PeriodEndActionEnum] = None
length: Optional[TimeLengthDto] = None
class PeriodAnchorEnum(str, Enum):
PERIOD_CREATED = 'PeriodCreated'
PERIOD_START = 'PeriodStart'
PERIOD_END = 'PeriodEnd'
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PeriodDateOffsetDto:
period_anchor: Optional[PeriodAnchorEnum] = None
length: Optional[TimeLengthDto] = None
value_anchor: Optional[int] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BillingPeriodCycleDto:
length: Optional[TimeLengthDto] = None
invoice_date_offset: Optional[PeriodDateOffsetDto] = None
renewal_date_offset: Optional[PeriodDateOffsetDto] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PackagePlanDto:
id: Optional[str] = None
name: Optional[str] = None
external_id: Optional[str] = None
binding_period_cycle: Optional[BindingPeriodCycleDto] = None
subscription_billing_period_cycle: Optional[BillingPeriodCycleDto] = None
usage_billing_period_cycle: Optional[BillingPeriodCycleDto] = None
class PricingSchemeEnum(str, Enum):
UNIT_PRICING = 'UnitPricing'
TIER_PRICING = 'TierPricing'
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ProductTierPricingDto:
index: int = 0
unit_price: float = 0.0
flat_price: float = 0.0
repeat_every: Optional[int] = None
upper_limit: Optional[int] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ProductPricingDto:
pricing_scheme: Optional[PricingSchemeEnum] = None
product_id: Optional[str] = None
included_quantity: Optional[int] = None
max_quantity: Optional[int] = None
unit_price: Optional[float] = None
tier_pricing: List[ProductTierPricingDto] = field(default_factory=list)
article_number: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ProductGroupPricingDto:
product_group_id: Optional[str] = None
article_number: Optional[str] = None
price: float = 0.0
product_pricings: List[ProductPricingDto] = field(default_factory=list)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PackageChargePlanDto:
id: Optional[str] = None
tier_id: Optional[str] = None
plan_id: Optional[str] = None
product_group_pricings: List[ProductGroupPricingDto] = field(default_factory=list)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PackageSalesChannelDto:
id: Optional[str] = None
name: Optional[str] = None
description: Optional[str] = None
valid_from: Optional[datetime.datetime] = None
valid_to: Optional[datetime.datetime] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PackageTargetGroupDto:
id: Optional[str] = None
name: Optional[str] = None
is_default: bool = False
external_id: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PackageScheduledChangeResultDto:
status: Optional[PackageStatusEnum] = None
name: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PackageScheduledChangeResult:
status: Optional[StatusEnum] = None
id: Optional[str] = None
version_id: Optional[str] = None
package: Optional[PackageScheduledChangeResultDto] = None
scheduled_date: datetime.datetime = datetime.datetime(1, 1, 1)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PackageResult:
package_status: Optional[PackageStatusEnum] = None
id: Optional[str] = None
version_id: Optional[str] = None
source_version_id: Optional[str] = None
name: Optional[str] = None
external_id: Optional[str] = None
tiers: List[PackageTierDto] = field(default_factory=list)
plans: List[PackagePlanDto] = field(default_factory=list)
charge_plans: List[PackageChargePlanDto] = field(default_factory=list)
sales_channels: List[PackageSalesChannelDto] = field(default_factory=list)
target_groups: List[PackageTargetGroupDto] = field(default_factory=list)
scheduled_changes: List[PackageScheduledChangeResult] = field(default_factory=list)
# @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class GetVossPackage:
# @ApiMember(Description="The package id; if not passed the configured BokaMera package will be used.")
package_id: Optional[str] = None
"""
The package id; if not passed the configured BokaMera package will be used.
"""
To override the Content-type in your clients, use the HTTP Accept Header, append the .other suffix or ?format=other
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
GET /voss/packages HTTP/1.1 Host: testapi.bokamera.se Accept: text/jsonl
HTTP/1.1 200 OK
Content-Type: text/jsonl
Content-Length: length
{"status":"Draft","sourceVersionId":"00000000-0000-0000-0000-000000000000","name":"String","externalId":"String","tiers":[{}],"plans":[{}],"chargePlans":[{}],"salesChannels":[{}],"targetGroups":[{}],"scheduledChanges":[{}]}