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 .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.

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

<CreateVossDiscountAgreement xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/BokaMera.API.ServiceModel.Dtos">
  <ChargePlanDiscounts xmlns:d2p1="http://schemas.datacontract.org/2004/07/BokaMera.VossIntegration.ApiTools.Model">
    <d2p1:CreateChargePlanDiscountRequestDto i:nil="true" />
  </ChargePlanDiscounts>
  <Description>String</Description>
  <DiscountPeriod xmlns:d2p1="http://schemas.datacontract.org/2004/07/BokaMera.VossIntegration.ApiTools.Model" i:nil="true" />
  <Name>String</Name>
  <ValidFrom>0001-01-01T00:00:00</ValidFrom>
  <ValidTo>0001-01-01T00:00:00</ValidTo>
</CreateVossDiscountAgreement>
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length

<DiscountAgreementResult xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/BokaMera.VossIntegration.ApiTools.Model">
  <applicationScope>Any</applicationScope>
  <chargePlanDiscounts>
    <ChargePlanDiscountResultDto i:nil="true" />
  </chargePlanDiscounts>
  <customerGroups>
    <DiscountAgreementCustomerGroupResultDto i:nil="true" />
  </customerGroups>
  <customers>
    <DiscountAgreementCustomerResultDto i:nil="true" />
  </customers>
  <description>String</description>
  <externalId>String</externalId>
  <id>00000000-0000-0000-0000-000000000000</id>
  <name>String</name>
  <package i:nil="true" />
  <sourceVersionId>00000000-0000-0000-0000-000000000000</sourceVersionId>
  <status>Draft</status>
  <validFrom>0001-01-01T00:00:00</validFrom>
  <validTo>0001-01-01T00:00:00</validTo>
  <versionId>00000000-0000-0000-0000-000000000000</versionId>
</DiscountAgreementResult>