| Requires any of the roles: | bookingsupplier-administrator-write, superadmin |
| POST | /voss/discountAgreements | Create discount agreement | Create 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 .other suffix or ?format=other
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: text/jsonl
Content-Type: text/jsonl
Content-Length: length
{"Name":"String","ChargePlanDiscounts":[{}],"Description":"String","ValidTo":"0001-01-01T00:00:00"}
HTTP/1.1 200 OK
Content-Type: text/jsonl
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":[{}]}