BokaMera.API.Host

<back to all web services

EndAllLicenses

Requires Authentication
Requires any of the roles:bookingsupplier-administrator-write, superadmin
The following routes are available for this service:
POST/licenses/company/deleteEnd all licensesEnd all licenses on the company for the logged in user.
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 LicenseItemsResponse:
    id: int = 0
    name: Optional[str] = None
    allowed_items: int = 0


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BaseModel:
    pass


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

    # @Required()
    currency_sign: Optional[str] = None

    # @Required()
    active: bool = False

    modified_date: Optional[datetime.datetime] = None
    # @Required()
    id: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Country(BaseModel):
    # @References(typeof(Currency))
    currency_id: Optional[str] = None

    currency_info: Optional[Currency] = None
    # @Required()
    name: Optional[str] = None

    culture: Optional[str] = None
    time_zone: Optional[str] = None
    modified_date: Optional[datetime.datetime] = None
    # @Required()
    id: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class LicensePriceResponse:
    license_type_id: int = 0
    country_id: Optional[str] = None
    price: int = 0
    country: Optional[Country] = None
    license_plan_id: int = 0


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class LicenseTypeQueryResponse:
    # @ApiMember(Description="The license type id")
    id: int = 0
    """
    The license type id
    """


    # @ApiMember(Description="The license type name")
    name: Optional[str] = None
    """
    The license type name
    """


    # @ApiMember(Description="The license type description")
    description: Optional[str] = None
    """
    The license type description
    """


    # @ApiMember(Description="If the license type is not a standard license but instead an extra license option. An example would be sending newsletter license.")
    is_extra_license_option: bool = False
    """
    If the license type is not a standard license but instead an extra license option. An example would be sending newsletter license.
    """


    # @ApiMember(Description="The period of notice for the license in days.")
    period_of_notice_days: int = 0
    """
    The period of notice for the license in days.
    """


    # @ApiMember(Description="The license items for the license type")
    items: List[LicenseItemsResponse] = field(default_factory=list)
    """
    The license items for the license type
    """


    # @ApiMember(Description="The license prices in each country for the license type")
    prices: List[LicensePriceResponse] = field(default_factory=list)
    """
    The license prices in each country for the license type
    """


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ProductGroupResponse:
    id: Optional[str] = None
    name: Optional[str] = None
    tier_id: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class TierResponse:
    id: Optional[str] = None
    name: Optional[str] = None
    product_groups: List[ProductGroupResponse] = field(default_factory=list)


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class VossSubscriptionResponse:
    subscription_billing_period_start_date: datetime.datetime = datetime.datetime(1, 1, 1)
    subscription_billing_period_end_date: datetime.datetime = datetime.datetime(1, 1, 1)
    binding_period_end_date: Optional[datetime.datetime] = None
    tier: Optional[TierResponse] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CompanyLicenseQueryResponse:
    id: int = 0
    type_id: int = 0
    type: Optional[LicenseTypeQueryResponse] = None
    valid_from: datetime.datetime = datetime.datetime(1, 1, 1)
    valid_to: datetime.datetime = datetime.datetime(1, 1, 1)
    voss_subscription_id: Optional[str] = None
    voss_subscription: Optional[VossSubscriptionResponse] = None
    meta_data: Optional[str] = None
    active: bool = False
    license_status: Optional[str] = None
    canceled: bool = False
    license_plan_id: Optional[int] = None
    updated: datetime.datetime = datetime.datetime(1, 1, 1)
    created: datetime.datetime = datetime.datetime(1, 1, 1)


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Questionnaire:
    question: Optional[str] = None
    value: Optional[str] = None


# @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 EndAllLicenses(ICompany):
    # @ApiMember(Description="The company id, if empty will use the company id for the user you are logged in with.")
    company_id: Optional[str] = None
    """
    The company id, if empty will use the company id for the user you are logged in with.
    """


    # @ApiMember(Description="If true, all licenses and the booking system are terminated today. If false (default), the licenses stay active and are billed until the end of the current billing period, and each license's ValidTo is set to that date.")
    deactivate: bool = False
    """
    If true, all licenses and the booking system are terminated today. If false (default), the licenses stay active and are billed until the end of the current billing period, and each license's ValidTo is set to that date.
    """


    # @ApiMember(Description="Questionaire with answers from customer why ending license.")
    questionnaire: List[Questionnaire] = field(default_factory=list)
    """
    Questionaire with answers from customer why ending license.
    """

Python EndAllLicenses DTOs

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

HTTP + CSV

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

POST /licenses/company/delete HTTP/1.1 
Host: testapi.bokamera.se 
Accept: text/csv
Content-Type: text/csv
Content-Length: length

{"CompanyId":"00000000-0000-0000-0000-000000000000","Deactivate":false,"Questionnaire":[{"Question":"String","Value":"String"}]}
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Length: length

{"Id":0,"TypeId":0,"Type":{"Id":0,"Name":"String","Description":"String","IsExtraLicenseOption":false,"PeriodOfNoticeDays":0,"Items":[{"Id":0,"Name":"String","AllowedItems":0}],"Prices":[{"LicenseTypeId":0,"CountryId":"String","Price":0,"Country":{"CurrencyId":"String","CurrencyInfo":{"Name":"String","CurrencySign":"String","Active":false,"ModifiedDate":"0001-01-01T00:00:00.0000000+00:00","Id":"String"},"Name":"String","Culture":"String","TimeZone":"String","ModifiedDate":"0001-01-01T00:00:00.0000000+00:00","Id":"String"},"LicensePlanId":0}]},"VossSubscriptionId":"00000000-0000-0000-0000-000000000000","VossSubscription":{"BindingPeriodEndDate":"0001-01-01T00:00:00","Tier":{"Name":"String","ProductGroups":[{"Name":"String"}]}},"MetaData":"String","Active":false,"LicenseStatus":"String","Canceled":false,"LicensePlanId":0}