| 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 .xml suffix or ?format=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>