BokaMera.API.Host

<back to all web services

CreateVossDiscountAgreement

Requires Authentication
Requires any of the roles:bookingsupplier-administrator-write, superadmin
The following routes are available for this service:
POST/voss/discountAgreementsCreate discount agreementCreate discount agreement in VOSS System.
import Foundation
import ServiceStack

// @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
// @ValidateRequest(Validator="IsAuthenticated")
public class CreateVossDiscountAgreement : Codable
{
    /**
    * Discount agreement name
    */
    // @ApiMember(Description="Discount agreement name", IsRequired=true)
    public var name:String

    /**
    * Discount agreement name
    */
    // @ApiMember(Description="Discount agreement name", IsRequired=true)
    public var chargePlanDiscounts:[CreateChargePlanDiscountRequestDto] = []

    public var Description:String
    /**
    * Discount agreement name
    */
    // @ApiMember(Description="Discount agreement name", IsRequired=true)
    public var validFrom:Date

    /**
    * Discount agreement name
    */
    // @ApiMember(Description="Discount agreement name")
    public var validTo:Date?

    /**
    * Discount agreement name
    */
    // @ApiMember(Description="Discount agreement name")
    public var discountPeriod:CreateDiscountPeriodRequestDto

    required public init(){}
}

// @DataContract(Name="CreateChargePlanDiscountRequestDto")
public class CreateChargePlanDiscountRequestDto : Codable
{
    // @DataMember(Name="chargePlanId", IsRequired=true)
    public var chargePlanId:String

    // @DataMember(Name="productGroupDiscounts", EmitDefaultValue=false)
    public var productGroupDiscounts:[CreateProductGroupDiscountRequestDto] = []

    required public init(){}
}

// @DataContract(Name="CreateProductGroupDiscountRequestDto")
public class CreateProductGroupDiscountRequestDto : Codable
{
    // @DataMember(Name="productGroupId", IsRequired=true)
    public var productGroupId:String

    // @DataMember(Name="productPricingDiscounts", EmitDefaultValue=false)
    public var productPricingDiscounts:[ProductPricingDiscountRequestDto] = []

    required public init(){}
}

// @DataContract(Name="ProductPricingDiscountRequestDto")
public class ProductPricingDiscountRequestDto : Codable
{
    // @DataMember(Name="discountType", IsRequired=true)
    public var discountType:DiscountTypeEnum

    // @DataMember(Name="productId", IsRequired=true)
    public var productId:String

    // @DataMember(Name="unitPriceDiscount", EmitDefaultValue=false)
    public var unitPriceDiscount:Double

    // @DataMember(Name="tierPricingDiscounts", EmitDefaultValue=false)
    public var tierPricingDiscounts:[CreatePricingTierDiscountRequestDto] = []

    required public init(){}
}

public enum DiscountTypeEnum : String, Codable
{
    case FlatPrice
    case Percentage
}

// @DataContract(Name="CreatePricingTierDiscountRequestDto")
public class CreatePricingTierDiscountRequestDto : Codable
{
    // @DataMember(Name="discountType", IsRequired=true)
    public var discountType:DiscountTypeEnum

    // @DataMember(Name="index", IsRequired=true)
    public var index:Int

    // @DataMember(Name="unitPriceDiscount", EmitDefaultValue=false)
    public var unitPriceDiscount:Double

    // @DataMember(Name="flatPriceDiscount", EmitDefaultValue=false)
    public var flatPriceDiscount:Double

    required public init(){}
}

// @DataContract(Name="CreateDiscountPeriodRequestDto")
public class CreateDiscountPeriodRequestDto : Codable
{
    // @DataMember(Name="periodKind", IsRequired=true)
    public var periodKind:PeriodKindEnum

    // @DataMember(Name="length", EmitDefaultValue=false)
    public var length:DiscountAgreementTimeLengthRequestDto

    // @DataMember(Name="periodIterationCount")
    public var periodIterationCount:Int?

    required public init(){}
}

public enum PeriodKindEnum : String, Codable
{
    case FixedTime
    case AlignedToBindingPeriod
    case AlignedToSubscriptionBillingPeriod
}

// @DataContract(Name="DiscountAgreementTimeLengthRequestDto")
public class DiscountAgreementTimeLengthRequestDto : Codable
{
    // @DataMember(Name="unit", IsRequired=true)
    public var unit:UnitEnum

    // @DataMember(Name="value", IsRequired=true)
    public var value:Int

    required public init(){}
}

public enum UnitEnum : String, Codable
{
    case Day
    case Month
    case Year
}

// @DataContract(Name="DiscountAgreementResult")
public class DiscountAgreementResult : Codable
{
    // @DataMember(Name="status", IsRequired=true)
    public var status:DiscountAgreementStatusEnum

    // @DataMember(Name="applicationScope", IsRequired=true)
    public var applicationScope:ApplicationScopeEnum

    // @DataMember(Name="id", IsRequired=true)
    public var id:String

    // @DataMember(Name="versionId", IsRequired=true)
    public var versionId:String

    // @DataMember(Name="sourceVersionId")
    public var sourceVersionId:String?

    // @DataMember(Name="externalId")
    public var externalId:String

    // @DataMember(Name="name", IsRequired=true)
    public var name:String

    // @DataMember(Name="description")
    public var description:String

    // @DataMember(Name="validFrom", IsRequired=true)
    public var validFrom:Date

    // @DataMember(Name="validTo")
    public var validTo:Date?

    // @DataMember(Name="discountPeriod", EmitDefaultValue=false)
    public var discountPeriod:DiscountPeriodDto

    // @DataMember(Name="package", IsRequired=true)
    public var package:DiscountPackageDto

    // @DataMember(Name="customers", EmitDefaultValue=false)
    public var customers:[DiscountAgreementCustomerResultDto] = []

    // @DataMember(Name="customerGroups", EmitDefaultValue=false)
    public var customerGroups:[DiscountAgreementCustomerGroupResultDto] = []

    // @DataMember(Name="chargePlanDiscounts", EmitDefaultValue=false)
    public var chargePlanDiscounts:[ChargePlanDiscountResultDto] = []

    required public init(){}
}

public enum DiscountAgreementStatusEnum : String, Codable
{
    case Draft
    case Staged
    case Published
    case Archived
    case Discarded
}

public enum ApplicationScopeEnum : String, Codable
{
    case Any
    case SubscriptionCustomer
    case NonSubscriptionCustomerInvoiceRecipient
}

// @DataContract(Name="DiscountPeriodDto")
public class DiscountPeriodDto : Codable
{
    // @DataMember(Name="periodKind", IsRequired=true)
    public var periodKind:PeriodKindEnum

    // @DataMember(Name="length")
    public var length:TimeLengthDto

    // @DataMember(Name="periodIterationCount")
    public var periodIterationCount:Int?

    required public init(){}
}

// @DataContract(Name="TimeLengthDto")
public class TimeLengthDto : Codable
{
    // @DataMember(Name="unit", IsRequired=true)
    public var unit:UnitEnum

    // @DataMember(Name="value", EmitDefaultValue=false)
    public var value:Int

    required public init(){}
}

// @DataContract(Name="DiscountPackageDto")
public class DiscountPackageDto : Codable
{
    // @DataMember(Name="id", IsRequired=true)
    public var id:String

    // @DataMember(Name="name", IsRequired=true)
    public var name:String

    required public init(){}
}

// @DataContract(Name="DiscountAgreementCustomerResultDto")
public class DiscountAgreementCustomerResultDto : Codable
{
    // @DataMember(Name="customerId", IsRequired=true)
    public var customerId:String

    required public init(){}
}

// @DataContract(Name="DiscountAgreementCustomerGroupResultDto")
public class DiscountAgreementCustomerGroupResultDto : Codable
{
    // @DataMember(Name="intervalStart", EmitDefaultValue=false)
    public var intervalStart:Int

    // @DataMember(Name="intervalEnd", EmitDefaultValue=false)
    public var intervalEnd:Int

    required public init(){}
}

// @DataContract(Name="ChargePlanDiscountResultDto")
public class ChargePlanDiscountResultDto : Codable
{
    // @DataMember(Name="id", IsRequired=true)
    public var id:String

    // @DataMember(Name="chargePlanId", IsRequired=true)
    public var chargePlanId:String

    // @DataMember(Name="productGroupDiscounts", EmitDefaultValue=false)
    public var productGroupDiscounts:[ProductGroupDiscountResultDto] = []

    required public init(){}
}

// @DataContract(Name="ProductGroupDiscountResultDto")
public class ProductGroupDiscountResultDto : Codable
{
    // @DataMember(Name="id", IsRequired=true)
    public var id:String

    // @DataMember(Name="productGroupId", IsRequired=true)
    public var productGroupId:String

    // @DataMember(Name="productPricingDiscounts", EmitDefaultValue=false)
    public var productPricingDiscounts:[ProductPricingDiscountResultDto] = []

    required public init(){}
}

// @DataContract(Name="ProductPricingDiscountResultDto")
public class ProductPricingDiscountResultDto : Codable
{
    // @DataMember(Name="discountType", IsRequired=true)
    public var discountType:DiscountTypeEnum

    // @DataMember(Name="id", IsRequired=true)
    public var id:String

    // @DataMember(Name="productId", IsRequired=true)
    public var productId:String

    // @DataMember(Name="unitPriceDiscount", EmitDefaultValue=false)
    public var unitPriceDiscount:Double

    // @DataMember(Name="tierPricingDiscounts", EmitDefaultValue=false)
    public var tierPricingDiscounts:[PricingTierDiscountResultDto] = []

    required public init(){}
}

// @DataContract(Name="PricingTierDiscountResultDto")
public class PricingTierDiscountResultDto : Codable
{
    // @DataMember(Name="discountType", IsRequired=true)
    public var discountType:DiscountTypeEnum

    // @DataMember(Name="id", IsRequired=true)
    public var id:String

    // @DataMember(Name="index", EmitDefaultValue=false)
    public var index:Int

    // @DataMember(Name="unitPriceDiscount", EmitDefaultValue=false)
    public var unitPriceDiscount:Double

    // @DataMember(Name="flatPriceDiscount", EmitDefaultValue=false)
    public var flatPriceDiscount:Double

    required public init(){}
}


Swift CreateVossDiscountAgreement DTOs

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

To embed the response in a jsonp callback, append ?callback=myCallback

HTTP + JSON

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

POST /voss/discountAgreements HTTP/1.1 
Host: api.bokamera.se 
Accept: application/json
Content-Type: application/json
Content-Length: length

{"Name":"String","ChargePlanDiscounts":[{}],"Description":"String","ValidTo":"0001-01-01T00:00:00"}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: length

{"status":"Draft","applicationScope":"Any","sourceVersionId":"00000000-0000-0000-0000-000000000000","externalId":"String","name":"String","description":"String","validTo":"0001-01-01T00:00:00","customers":[{}],"customerGroups":[{}],"chargePlanDiscounts":[{}]}