BokaMera.API.Host

<back to all web services

GetVossPackage

The following routes are available for this service:
GET/voss/packagesget voss package
import java.math.*
import java.util.*
import java.io.InputStream
import net.servicestack.client.*
import com.google.gson.annotations.*
import com.google.gson.reflect.*


@ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
open class GetVossPackage
{
    /**
    * The package id; if not passed the configured BokaMera package will be used.
    */
    @ApiMember(Description="The package id; if not passed the configured BokaMera package will be used.")
    open var PackageId:UUID? = null
}

@DataContract(Name="PackageResult")
open class PackageResult
{
    @DataMember(Name="status", IsRequired=true)
    @SerializedName("status")
    open var PackageStatus:PackageStatusEnum? = null

    @DataMember(Name="id", IsRequired=true)
    @SerializedName("id")
    open var Id:UUID? = null

    @DataMember(Name="versionId", IsRequired=true)
    @SerializedName("versionId")
    open var VersionId:UUID? = null

    @DataMember(Name="sourceVersionId")
    @SerializedName("sourceVersionId")
    open var SourceVersionId:UUID? = null

    @DataMember(Name="name", IsRequired=true)
    @SerializedName("name")
    open var Name:String? = null

    @DataMember(Name="externalId")
    @SerializedName("externalId")
    open var ExternalId:String? = null

    @DataMember(Name="tiers", IsRequired=true)
    @SerializedName("tiers")
    open var Tiers:ArrayList<PackageTierDto> = ArrayList<PackageTierDto>()

    @DataMember(Name="plans", IsRequired=true)
    @SerializedName("plans")
    open var Plans:ArrayList<PackagePlanDto> = ArrayList<PackagePlanDto>()

    @DataMember(Name="chargePlans", IsRequired=true)
    @SerializedName("chargePlans")
    open var ChargePlans:ArrayList<PackageChargePlanDto> = ArrayList<PackageChargePlanDto>()

    @DataMember(Name="salesChannels", IsRequired=true)
    @SerializedName("salesChannels")
    open var SalesChannels:ArrayList<PackageSalesChannelDto> = ArrayList<PackageSalesChannelDto>()

    @DataMember(Name="targetGroups", IsRequired=true)
    @SerializedName("targetGroups")
    open var TargetGroups:ArrayList<PackageTargetGroupDto> = ArrayList<PackageTargetGroupDto>()

    @DataMember(Name="scheduledChanges", IsRequired=true)
    @SerializedName("scheduledChanges")
    open var ScheduledChanges:ArrayList<PackageScheduledChangeResult> = ArrayList<PackageScheduledChangeResult>()
}

enum class PackageStatusEnum
{
    Draft,
    Staged,
    Published,
    Archived,
    Discarded,
}

@DataContract(Name="PackageTierDto")
open class PackageTierDto
{
    @DataMember(Name="id", IsRequired=true)
    @SerializedName("id")
    open var Id:UUID? = null

    @DataMember(Name="name", IsRequired=true)
    @SerializedName("name")
    open var Name:String? = null

    @DataMember(Name="externalId")
    @SerializedName("externalId")
    open var ExternalId:String? = null

    @DataMember(Name="productGroups", EmitDefaultValue=false)
    @SerializedName("productGroups")
    open var ProductGroups:ArrayList<PackageProductGroupDto> = ArrayList<PackageProductGroupDto>()
}

@DataContract(Name="PackageProductGroupDto")
open class PackageProductGroupDto
{
    @DataMember(Name="productGroupType", IsRequired=true)
    @SerializedName("productGroupType")
    open var ProductGroupType:ProductGroupTypeEnum? = null

    @DataMember(Name="id", IsRequired=true)
    @SerializedName("id")
    open var Id:UUID? = null

    @DataMember(Name="name", IsRequired=true)
    @SerializedName("name")
    open var Name:String? = null

    @DataMember(Name="externalId")
    @SerializedName("externalId")
    open var ExternalId:String? = null

    @DataMember(Name="tags", EmitDefaultValue=false)
    @SerializedName("tags")
    open var Tags:ArrayList<ProductGroupTagDto> = ArrayList<ProductGroupTagDto>()

    @DataMember(Name="products", EmitDefaultValue=false)
    @SerializedName("products")
    open var Products:ArrayList<PackageProductDto> = ArrayList<PackageProductDto>()
}

enum class ProductGroupTypeEnum
{
    Optional,
    Included,
}

@DataContract(Name="ProductGroupTagDto")
open class ProductGroupTagDto
{
    @DataMember(Name="type", IsRequired=true)
    @SerializedName("type")
    open var Type:TypeEnum? = null

    @DataMember(Name="tag", IsRequired=true)
    @SerializedName("tag")
    open var Tag:String? = null
}

enum class TypeEnum
{
    AtSubscriptionBillingPeriodEnd,
    AtBindingPeriodEnd,
}

@DataContract(Name="PackageProductDto")
open class PackageProductDto
{
    @DataMember(Name="type", IsRequired=true)
    @SerializedName("type")
    open var ProductType:ProductTypeEnum? = null

    @DataMember(Name="status", IsRequired=true)
    @SerializedName("status")
    open var Status:StatusEnum? = null

    @DataMember(Name="id", IsRequired=true)
    @SerializedName("id")
    open var Id:UUID? = null

    @DataMember(Name="name", IsRequired=true)
    @SerializedName("name")
    open var Name:String? = null

    @DataMember(Name="externalId")
    @SerializedName("externalId")
    open var ExternalId:String? = null

    @DataMember(Name="articleNumber")
    @SerializedName("articleNumber")
    open var ArticleNumber:String? = null
}

enum class ProductTypeEnum
{
    Main,
    Addon,
    License,
    Usage,
}

enum class StatusEnum
{
    Active,
    Terminated,
}

@DataContract(Name="PackagePlanDto")
open class PackagePlanDto
{
    @DataMember(Name="id", IsRequired=true)
    @SerializedName("id")
    open var Id:UUID? = null

    @DataMember(Name="name", IsRequired=true)
    @SerializedName("name")
    open var Name:String? = null

    @DataMember(Name="externalId")
    @SerializedName("externalId")
    open var ExternalId:String? = null

    @DataMember(Name="bindingPeriodCycle", IsRequired=true)
    @SerializedName("bindingPeriodCycle")
    open var BindingPeriodCycle:BindingPeriodCycleDto? = null

    @DataMember(Name="subscriptionBillingPeriodCycle", IsRequired=true)
    @SerializedName("subscriptionBillingPeriodCycle")
    open var SubscriptionBillingPeriodCycle:BillingPeriodCycleDto? = null

    @DataMember(Name="usageBillingPeriodCycle", IsRequired=true)
    @SerializedName("usageBillingPeriodCycle")
    open var UsageBillingPeriodCycle:BillingPeriodCycleDto? = null
}

@DataContract(Name="BindingPeriodCycleDto")
open class BindingPeriodCycleDto
{
    @DataMember(Name="periodEndAction", IsRequired=true)
    @SerializedName("periodEndAction")
    open var PeriodEndAction:PeriodEndActionEnum? = null

    @DataMember(Name="length", IsRequired=true)
    @SerializedName("length")
    open var Length:TimeLengthDto? = null
}

enum class PeriodEndActionEnum
{
    Renew,
    Terminate,
}

@DataContract(Name="TimeLengthDto")
open class TimeLengthDto
{
    @DataMember(Name="unit", IsRequired=true)
    @SerializedName("unit")
    open var Unit:UnitEnum? = null

    @DataMember(Name="value", EmitDefaultValue=false)
    @SerializedName("value")
    open var Value:Int? = null
}

enum class UnitEnum
{
    Day,
    Month,
    Year,
}

@DataContract(Name="BillingPeriodCycleDto")
open class BillingPeriodCycleDto
{
    @DataMember(Name="length", IsRequired=true)
    @SerializedName("length")
    open var Length:TimeLengthDto? = null

    @DataMember(Name="invoiceDateOffset", IsRequired=true)
    @SerializedName("invoiceDateOffset")
    open var InvoiceDateOffset:PeriodDateOffsetDto? = null

    @DataMember(Name="renewalDateOffset", IsRequired=true)
    @SerializedName("renewalDateOffset")
    open var RenewalDateOffset:PeriodDateOffsetDto? = null
}

@DataContract(Name="PeriodDateOffsetDto")
open class PeriodDateOffsetDto
{
    @DataMember(Name="periodAnchor", IsRequired=true)
    @SerializedName("periodAnchor")
    open var PeriodAnchor:PeriodAnchorEnum? = null

    @DataMember(Name="length", IsRequired=true)
    @SerializedName("length")
    open var Length:TimeLengthDto? = null

    @DataMember(Name="valueAnchor")
    @SerializedName("valueAnchor")
    open var ValueAnchor:Int? = null
}

enum class PeriodAnchorEnum
{
    PeriodCreated,
    PeriodStart,
    PeriodEnd,
}

@DataContract(Name="PackageChargePlanDto")
open class PackageChargePlanDto
{
    @DataMember(Name="id", IsRequired=true)
    @SerializedName("id")
    open var Id:UUID? = null

    @DataMember(Name="tierId", IsRequired=true)
    @SerializedName("tierId")
    open var TierId:UUID? = null

    @DataMember(Name="planId", IsRequired=true)
    @SerializedName("planId")
    open var PlanId:UUID? = null

    @DataMember(Name="productGroupPricings", IsRequired=true)
    @SerializedName("productGroupPricings")
    open var ProductGroupPricings:ArrayList<ProductGroupPricingDto> = ArrayList<ProductGroupPricingDto>()
}

@DataContract(Name="ProductGroupPricingDto")
open class ProductGroupPricingDto
{
    @DataMember(Name="productGroupId", IsRequired=true)
    @SerializedName("productGroupId")
    open var ProductGroupId:UUID? = null

    @DataMember(Name="articleNumber", IsRequired=true)
    @SerializedName("articleNumber")
    open var ArticleNumber:String? = null

    @DataMember(Name="price", EmitDefaultValue=false)
    @SerializedName("price")
    open var Price:Double? = null

    @DataMember(Name="productPricings", EmitDefaultValue=false)
    @SerializedName("productPricings")
    open var ProductPricings:ArrayList<ProductPricingDto> = ArrayList<ProductPricingDto>()
}

@DataContract(Name="ProductPricingDto")
open class ProductPricingDto
{
    @DataMember(Name="pricingScheme", IsRequired=true)
    @SerializedName("pricingScheme")
    open var PricingScheme:PricingSchemeEnum? = null

    @DataMember(Name="productId", IsRequired=true)
    @SerializedName("productId")
    open var ProductId:UUID? = null

    @DataMember(Name="includedQuantity")
    @SerializedName("includedQuantity")
    open var IncludedQuantity:Int? = null

    @DataMember(Name="maxQuantity")
    @SerializedName("maxQuantity")
    open var MaxQuantity:Int? = null

    @DataMember(Name="unitPrice")
    @SerializedName("unitPrice")
    open var UnitPrice:Double? = null

    @DataMember(Name="tierPricing", EmitDefaultValue=false)
    @SerializedName("tierPricing")
    open var TierPricing:ArrayList<ProductTierPricingDto> = ArrayList<ProductTierPricingDto>()

    @DataMember(Name="articleNumber")
    @SerializedName("articleNumber")
    open var ArticleNumber:String? = null
}

enum class PricingSchemeEnum
{
    UnitPricing,
    TierPricing,
}

@DataContract(Name="ProductTierPricingDto")
open class ProductTierPricingDto
{
    @DataMember(Name="index", EmitDefaultValue=false)
    @SerializedName("index")
    open var Index:Int? = null

    @DataMember(Name="unitPrice", EmitDefaultValue=false)
    @SerializedName("unitPrice")
    open var UnitPrice:Double? = null

    @DataMember(Name="flatPrice", EmitDefaultValue=false)
    @SerializedName("flatPrice")
    open var FlatPrice:Double? = null

    @DataMember(Name="repeatEvery")
    @SerializedName("repeatEvery")
    open var RepeatEvery:Int? = null

    @DataMember(Name="upperLimit")
    @SerializedName("upperLimit")
    open var UpperLimit:Int? = null
}

@DataContract(Name="PackageSalesChannelDto")
open class PackageSalesChannelDto
{
    @DataMember(Name="id", IsRequired=true)
    @SerializedName("id")
    open var Id:UUID? = null

    @DataMember(Name="name", IsRequired=true)
    @SerializedName("name")
    open var Name:String? = null

    @DataMember(Name="description")
    @SerializedName("description")
    open var Description:String? = null

    @DataMember(Name="validFrom")
    @SerializedName("validFrom")
    open var ValidFrom:Date? = null

    @DataMember(Name="validTo")
    @SerializedName("validTo")
    open var ValidTo:Date? = null
}

@DataContract(Name="PackageTargetGroupDto")
open class PackageTargetGroupDto
{
    @DataMember(Name="id", IsRequired=true)
    @SerializedName("id")
    open var Id:UUID? = null

    @DataMember(Name="name", IsRequired=true)
    @SerializedName("name")
    open var Name:String? = null

    @DataMember(Name="isDefault")
    @SerializedName("isDefault")
    open var IsDefault:Boolean? = null

    @DataMember(Name="externalId")
    @SerializedName("externalId")
    open var ExternalId:String? = null
}

@DataContract(Name="PackageScheduledChangeResult")
open class PackageScheduledChangeResult
{
    @DataMember(Name="status", IsRequired=true)
    @SerializedName("status")
    open var Status:StatusEnum? = null

    @DataMember(Name="id", IsRequired=true)
    @SerializedName("id")
    open var Id:UUID? = null

    @DataMember(Name="versionId", IsRequired=true)
    @SerializedName("versionId")
    open var VersionId:UUID? = null

    @DataMember(Name="package", EmitDefaultValue=false)
    @SerializedName("package")
    open var Package:PackageScheduledChangeResultDto? = null

    @DataMember(Name="scheduledDate", IsRequired=true)
    @SerializedName("scheduledDate")
    open var ScheduledDate:Date? = null
}

@DataContract(Name="PackageScheduledChangeResultDto")
open class PackageScheduledChangeResultDto
{
    @DataMember(Name="status")
    @SerializedName("status")
    open var Status:PackageStatusEnum? = null

    @DataMember(Name="name")
    @SerializedName("name")
    open var Name:String? = null
}

Kotlin GetVossPackage DTOs

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

HTTP + XML

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: application/xml
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length

<PackageResult xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/BokaMera.VossIntegration.ApiTools.Model">
  <chargePlans>
    <PackageChargePlanDto i:nil="true" />
  </chargePlans>
  <externalId>String</externalId>
  <id>00000000-0000-0000-0000-000000000000</id>
  <name>String</name>
  <plans>
    <PackagePlanDto i:nil="true" />
  </plans>
  <salesChannels>
    <PackageSalesChannelDto i:nil="true" />
  </salesChannels>
  <scheduledChanges>
    <PackageScheduledChangeResult i:nil="true" />
  </scheduledChanges>
  <sourceVersionId>00000000-0000-0000-0000-000000000000</sourceVersionId>
  <status>Draft</status>
  <targetGroups>
    <PackageTargetGroupDto i:nil="true" />
  </targetGroups>
  <tiers>
    <PackageTierDto i:nil="true" />
  </tiers>
  <versionId>00000000-0000-0000-0000-000000000000</versionId>
</PackageResult>