BokaMera.API.Host

<back to all web services

GetVossPackage

The following routes are available for this service:
GET/voss/packagesget voss package
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization;
using ServiceStack;
using ServiceStack.DataAnnotations;
using BokaMera.API.ServiceModel.Dtos;
using BokaMera.VossIntegration.ApiTools.Model;
using BokaMera.VossIntegration.ApiTools.Enums;

namespace BokaMera.API.ServiceModel.Dtos
{
    [ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)]
    public partial class GetVossPackage
    {
        ///<summary>
        ///The package id; if not passed the configured BokaMera package will be used.
        ///</summary>
        [ApiMember(Description="The package id; if not passed the configured BokaMera package will be used.")]
        public virtual Guid? PackageId { get; set; }
    }

}

namespace BokaMera.VossIntegration.ApiTools.Enums
{
    public enum PackageStatusEnum
    {
        Draft,
        Staged,
        Published,
        Archived,
        Discarded,
    }

    public enum ProductGroupTypeEnum
    {
        Optional,
        Included,
    }

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

}

namespace BokaMera.VossIntegration.ApiTools.Model
{
    [DataContract(Name="BillingPeriodCycleDto")]
    public partial class BillingPeriodCycleDto
    {
        [DataMember(Name="length", IsRequired=true)]
        public virtual TimeLengthDto Length { get; set; }

        [DataMember(Name="invoiceDateOffset", IsRequired=true)]
        public virtual PeriodDateOffsetDto InvoiceDateOffset { get; set; }

        [DataMember(Name="renewalDateOffset", IsRequired=true)]
        public virtual PeriodDateOffsetDto RenewalDateOffset { get; set; }
    }

    [DataContract(Name="BindingPeriodCycleDto")]
    public partial class BindingPeriodCycleDto
    {
        [DataMember(Name="periodEndAction", IsRequired=true)]
        public virtual PeriodEndActionEnum PeriodEndAction { get; set; }

        [DataMember(Name="length", IsRequired=true)]
        public virtual TimeLengthDto Length { get; set; }
        public enum PeriodEndActionEnum
        {
            Renew,
            Terminate,
        }

    }

    [DataContract(Name="PackageChargePlanDto")]
    public partial class PackageChargePlanDto
    {
        [DataMember(Name="id", IsRequired=true)]
        public virtual Guid Id { get; set; }

        [DataMember(Name="tierId", IsRequired=true)]
        public virtual Guid TierId { get; set; }

        [DataMember(Name="planId", IsRequired=true)]
        public virtual Guid PlanId { get; set; }

        [DataMember(Name="productGroupPricings", IsRequired=true)]
        public virtual List<ProductGroupPricingDto> ProductGroupPricings { get; set; } = [];
    }

    [DataContract(Name="PackagePlanDto")]
    public partial class PackagePlanDto
    {
        [DataMember(Name="id", IsRequired=true)]
        public virtual Guid Id { get; set; }

        [DataMember(Name="name", IsRequired=true)]
        public virtual string Name { get; set; }

        [DataMember(Name="externalId")]
        public virtual string ExternalId { get; set; }

        [DataMember(Name="bindingPeriodCycle", IsRequired=true)]
        public virtual BindingPeriodCycleDto BindingPeriodCycle { get; set; }

        [DataMember(Name="subscriptionBillingPeriodCycle", IsRequired=true)]
        public virtual BillingPeriodCycleDto SubscriptionBillingPeriodCycle { get; set; }

        [DataMember(Name="usageBillingPeriodCycle", IsRequired=true)]
        public virtual BillingPeriodCycleDto UsageBillingPeriodCycle { get; set; }
    }

    [DataContract(Name="PackageProductDto")]
    public partial class PackageProductDto
    {
        [DataMember(Name="type", IsRequired=true)]
        public virtual ProductTypeEnum ProductType { get; set; }

        [DataMember(Name="status", IsRequired=true)]
        public virtual StatusEnum Status { get; set; }

        [DataMember(Name="id", IsRequired=true)]
        public virtual Guid Id { get; set; }

        [DataMember(Name="name", IsRequired=true)]
        public virtual string Name { get; set; }

        [DataMember(Name="externalId")]
        public virtual string ExternalId { get; set; }

        [DataMember(Name="articleNumber")]
        public virtual string ArticleNumber { get; set; }
        public enum StatusEnum
        {
            Active,
            Terminated,
        }

    }

    [DataContract(Name="PackageProductGroupDto")]
    public partial class PackageProductGroupDto
    {
        [DataMember(Name="productGroupType", IsRequired=true)]
        public virtual ProductGroupTypeEnum ProductGroupType { get; set; }

        [DataMember(Name="id", IsRequired=true)]
        public virtual Guid Id { get; set; }

        [DataMember(Name="name", IsRequired=true)]
        public virtual string Name { get; set; }

        [DataMember(Name="externalId")]
        public virtual string ExternalId { get; set; }

        [DataMember(Name="tags", EmitDefaultValue=false)]
        public virtual List<ProductGroupTagDto> Tags { get; set; } = [];

        [DataMember(Name="products", EmitDefaultValue=false)]
        public virtual List<PackageProductDto> Products { get; set; } = [];
    }

    [DataContract(Name="PackageResult")]
    public partial class PackageResult
    {
        [DataMember(Name="status", IsRequired=true)]
        public virtual PackageStatusEnum PackageStatus { get; set; }

        [DataMember(Name="id", IsRequired=true)]
        public virtual Guid Id { get; set; }

        [DataMember(Name="versionId", IsRequired=true)]
        public virtual Guid VersionId { get; set; }

        [DataMember(Name="sourceVersionId")]
        public virtual Guid? SourceVersionId { get; set; }

        [DataMember(Name="name", IsRequired=true)]
        public virtual string Name { get; set; }

        [DataMember(Name="externalId")]
        public virtual string ExternalId { get; set; }

        [DataMember(Name="tiers", IsRequired=true)]
        public virtual List<PackageTierDto> Tiers { get; set; } = [];

        [DataMember(Name="plans", IsRequired=true)]
        public virtual List<PackagePlanDto> Plans { get; set; } = [];

        [DataMember(Name="chargePlans", IsRequired=true)]
        public virtual List<PackageChargePlanDto> ChargePlans { get; set; } = [];

        [DataMember(Name="salesChannels", IsRequired=true)]
        public virtual List<PackageSalesChannelDto> SalesChannels { get; set; } = [];

        [DataMember(Name="targetGroups", IsRequired=true)]
        public virtual List<PackageTargetGroupDto> TargetGroups { get; set; } = [];

        [DataMember(Name="scheduledChanges", IsRequired=true)]
        public virtual List<PackageScheduledChangeResult> ScheduledChanges { get; set; } = [];
    }

    [DataContract(Name="PackageSalesChannelDto")]
    public partial class PackageSalesChannelDto
    {
        [DataMember(Name="id", IsRequired=true)]
        public virtual Guid Id { get; set; }

        [DataMember(Name="name", IsRequired=true)]
        public virtual string Name { get; set; }

        [DataMember(Name="description")]
        public virtual string Description { get; set; }

        [DataMember(Name="validFrom")]
        public virtual DateTime? ValidFrom { get; set; }

        [DataMember(Name="validTo")]
        public virtual DateTime? ValidTo { get; set; }
    }

    [DataContract(Name="PackageScheduledChangeResult")]
    public partial class PackageScheduledChangeResult
    {
        [DataMember(Name="status", IsRequired=true)]
        public virtual StatusEnum Status { get; set; }

        [DataMember(Name="id", IsRequired=true)]
        public virtual Guid Id { get; set; }

        [DataMember(Name="versionId", IsRequired=true)]
        public virtual Guid VersionId { get; set; }

        [DataMember(Name="package", EmitDefaultValue=false)]
        public virtual PackageScheduledChangeResultDto Package { get; set; }

        [DataMember(Name="scheduledDate", IsRequired=true)]
        public virtual DateTime ScheduledDate { get; set; }
        public enum StatusEnum
        {
            Active,
            Terminated,
        }

    }

    [DataContract(Name="PackageScheduledChangeResultDto")]
    public partial class PackageScheduledChangeResultDto
    {
        [DataMember(Name="status")]
        public virtual PackageStatusEnum? Status { get; set; }

        [DataMember(Name="name")]
        public virtual string Name { get; set; }
    }

    [DataContract(Name="PackageTargetGroupDto")]
    public partial class PackageTargetGroupDto
    {
        [DataMember(Name="id", IsRequired=true)]
        public virtual Guid Id { get; set; }

        [DataMember(Name="name", IsRequired=true)]
        public virtual string Name { get; set; }

        [DataMember(Name="isDefault")]
        public virtual bool IsDefault { get; set; }

        [DataMember(Name="externalId")]
        public virtual string ExternalId { get; set; }
    }

    [DataContract(Name="PackageTierDto")]
    public partial class PackageTierDto
    {
        [DataMember(Name="id", IsRequired=true)]
        public virtual Guid Id { get; set; }

        [DataMember(Name="name", IsRequired=true)]
        public virtual string Name { get; set; }

        [DataMember(Name="externalId")]
        public virtual string ExternalId { get; set; }

        [DataMember(Name="productGroups", EmitDefaultValue=false)]
        public virtual List<PackageProductGroupDto> ProductGroups { get; set; } = [];
    }

    [DataContract(Name="PeriodDateOffsetDto")]
    public partial class PeriodDateOffsetDto
    {
        [DataMember(Name="periodAnchor", IsRequired=true)]
        public virtual PeriodAnchorEnum PeriodAnchor { get; set; }

        [DataMember(Name="length", IsRequired=true)]
        public virtual TimeLengthDto Length { get; set; }

        [DataMember(Name="valueAnchor")]
        public virtual int? ValueAnchor { get; set; }
        public enum PeriodAnchorEnum
        {
            PeriodCreated,
            PeriodStart,
            PeriodEnd,
        }

    }

    [DataContract(Name="ProductGroupPricingDto")]
    public partial class ProductGroupPricingDto
    {
        [DataMember(Name="productGroupId", IsRequired=true)]
        public virtual Guid ProductGroupId { get; set; }

        [DataMember(Name="articleNumber", IsRequired=true)]
        public virtual string ArticleNumber { get; set; }

        [DataMember(Name="price", EmitDefaultValue=false)]
        public virtual double Price { get; set; }

        [DataMember(Name="productPricings", EmitDefaultValue=false)]
        public virtual List<ProductPricingDto> ProductPricings { get; set; } = [];
    }

    [DataContract(Name="ProductGroupTagDto")]
    public partial class ProductGroupTagDto
    {
        [DataMember(Name="type", IsRequired=true)]
        public virtual TypeEnum Type { get; set; }

        [DataMember(Name="tag", IsRequired=true)]
        public virtual string Tag { get; set; }
        public enum TypeEnum
        {
            AtSubscriptionBillingPeriodEnd,
            AtBindingPeriodEnd,
        }

    }

    [DataContract(Name="ProductPricingDto")]
    public partial class ProductPricingDto
    {
        [DataMember(Name="pricingScheme", IsRequired=true)]
        public virtual PricingSchemeEnum PricingScheme { get; set; }

        [DataMember(Name="productId", IsRequired=true)]
        public virtual Guid ProductId { get; set; }

        [DataMember(Name="includedQuantity")]
        public virtual int? IncludedQuantity { get; set; }

        [DataMember(Name="maxQuantity")]
        public virtual int? MaxQuantity { get; set; }

        [DataMember(Name="unitPrice")]
        public virtual double? UnitPrice { get; set; }

        [DataMember(Name="tierPricing", EmitDefaultValue=false)]
        public virtual List<ProductTierPricingDto> TierPricing { get; set; } = [];

        [DataMember(Name="articleNumber")]
        public virtual string ArticleNumber { get; set; }
        public enum PricingSchemeEnum
        {
            UnitPricing,
            TierPricing,
        }

    }

    [DataContract(Name="ProductTierPricingDto")]
    public partial class ProductTierPricingDto
    {
        [DataMember(Name="index", EmitDefaultValue=false)]
        public virtual int Index { get; set; }

        [DataMember(Name="unitPrice", EmitDefaultValue=false)]
        public virtual double UnitPrice { get; set; }

        [DataMember(Name="flatPrice", EmitDefaultValue=false)]
        public virtual double FlatPrice { get; set; }

        [DataMember(Name="repeatEvery")]
        public virtual int? RepeatEvery { get; set; }

        [DataMember(Name="upperLimit")]
        public virtual int? UpperLimit { get; set; }
    }

    [DataContract(Name="TimeLengthDto")]
    public partial class TimeLengthDto
    {
        [DataMember(Name="unit", IsRequired=true)]
        public virtual UnitEnum Unit { get; set; }

        [DataMember(Name="value", EmitDefaultValue=false)]
        public virtual int Value { get; set; }
        public enum UnitEnum
        {
            Day,
            Month,
            Year,
        }

    }

}

C# GetVossPackage 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.

GET /voss/packages HTTP/1.1 
Host: testapi.bokamera.se 
Accept: text/jsv
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	status: Draft,
	sourceVersionId: 00000000-0000-0000-0000-000000000000,
	name: String,
	externalId: String,
	tiers: 
	[
		{
			
		}
	],
	plans: 
	[
		{
			
		}
	],
	chargePlans: 
	[
		{
			
		}
	],
	salesChannels: 
	[
		{
			
		}
	],
	targetGroups: 
	[
		{
			
		}
	],
	scheduledChanges: 
	[
		{
			
		}
	]
}