| Requires any of the roles: | bookingsupplier-administrator-write, superadmin |
| POST | /voss/discountAgreements | Create discount agreement | Create discount agreement in VOSS System. |
|---|
namespace BokaMera.API.ServiceModel.Dtos
open System
open System.IO
open System.Collections
open System.Collections.Generic
open System.Runtime.Serialization
open ServiceStack
open ServiceStack.DataAnnotations
type DiscountAgreementStatusEnum =
| Draft = 0
| Staged = 1
| Published = 2
| Archived = 3
| Discarded = 4
type ApplicationScopeEnum =
| Any = 0
| SubscriptionCustomer = 1
| NonSubscriptionCustomerInvoiceRecipient = 2
type PeriodKindEnum =
| FixedTime = 0
| AlignedToBindingPeriod = 1
| AlignedToSubscriptionBillingPeriod = 2
type UnitEnum =
| Day = 0
| Month = 1
| Year = 2
[<DataContract(Name="TimeLengthDto")>]
[<AllowNullLiteral>]
type TimeLengthDto() =
[<DataMember(Name="unit", IsRequired=true)>]
member val Unit:UnitEnum = new UnitEnum() with get,set
[<DataMember(Name="value", EmitDefaultValue=false)>]
member val Value:Int32 = new Int32() with get,set
[<DataContract(Name="DiscountPeriodDto")>]
[<AllowNullLiteral>]
type DiscountPeriodDto() =
[<DataMember(Name="periodKind", IsRequired=true)>]
member val PeriodKind:PeriodKindEnum = new PeriodKindEnum() with get,set
[<DataMember(Name="length")>]
member val Length:TimeLengthDto = null with get,set
[<DataMember(Name="periodIterationCount")>]
member val PeriodIterationCount:Nullable<Int32> = new Nullable<Int32>() with get,set
[<DataContract(Name="DiscountPackageDto")>]
[<AllowNullLiteral>]
type DiscountPackageDto() =
[<DataMember(Name="id", IsRequired=true)>]
member val Id:Guid = new Guid() with get,set
[<DataMember(Name="name", IsRequired=true)>]
member val Name:String = null with get,set
[<DataContract(Name="DiscountAgreementCustomerResultDto")>]
[<AllowNullLiteral>]
type DiscountAgreementCustomerResultDto() =
[<DataMember(Name="customerId", IsRequired=true)>]
member val CustomerId:Guid = new Guid() with get,set
[<DataContract(Name="DiscountAgreementCustomerGroupResultDto")>]
[<AllowNullLiteral>]
type DiscountAgreementCustomerGroupResultDto() =
[<DataMember(Name="intervalStart", EmitDefaultValue=false)>]
member val IntervalStart:Int32 = new Int32() with get,set
[<DataMember(Name="intervalEnd", EmitDefaultValue=false)>]
member val IntervalEnd:Int32 = new Int32() with get,set
type DiscountTypeEnum =
| FlatPrice = 0
| Percentage = 1
[<DataContract(Name="PricingTierDiscountResultDto")>]
[<AllowNullLiteral>]
type PricingTierDiscountResultDto() =
[<DataMember(Name="discountType", IsRequired=true)>]
member val DiscountType:DiscountTypeEnum = new DiscountTypeEnum() with get,set
[<DataMember(Name="id", IsRequired=true)>]
member val Id:Guid = new Guid() with get,set
[<DataMember(Name="index", EmitDefaultValue=false)>]
member val Index:Int32 = new Int32() with get,set
[<DataMember(Name="unitPriceDiscount", EmitDefaultValue=false)>]
member val UnitPriceDiscount:Double = new Double() with get,set
[<DataMember(Name="flatPriceDiscount", EmitDefaultValue=false)>]
member val FlatPriceDiscount:Double = new Double() with get,set
[<DataContract(Name="ProductPricingDiscountResultDto")>]
[<AllowNullLiteral>]
type ProductPricingDiscountResultDto() =
[<DataMember(Name="discountType", IsRequired=true)>]
member val DiscountType:DiscountTypeEnum = new DiscountTypeEnum() with get,set
[<DataMember(Name="id", IsRequired=true)>]
member val Id:Guid = new Guid() with get,set
[<DataMember(Name="productId", IsRequired=true)>]
member val ProductId:Guid = new Guid() with get,set
[<DataMember(Name="unitPriceDiscount", EmitDefaultValue=false)>]
member val UnitPriceDiscount:Double = new Double() with get,set
[<DataMember(Name="tierPricingDiscounts", EmitDefaultValue=false)>]
member val TierPricingDiscounts:ResizeArray<PricingTierDiscountResultDto> = null with get,set
[<DataContract(Name="ProductGroupDiscountResultDto")>]
[<AllowNullLiteral>]
type ProductGroupDiscountResultDto() =
[<DataMember(Name="id", IsRequired=true)>]
member val Id:Guid = new Guid() with get,set
[<DataMember(Name="productGroupId", IsRequired=true)>]
member val ProductGroupId:Guid = new Guid() with get,set
[<DataMember(Name="productPricingDiscounts", EmitDefaultValue=false)>]
member val ProductPricingDiscounts:ResizeArray<ProductPricingDiscountResultDto> = null with get,set
[<DataContract(Name="ChargePlanDiscountResultDto")>]
[<AllowNullLiteral>]
type ChargePlanDiscountResultDto() =
[<DataMember(Name="id", IsRequired=true)>]
member val Id:Guid = new Guid() with get,set
[<DataMember(Name="chargePlanId", IsRequired=true)>]
member val ChargePlanId:Guid = new Guid() with get,set
[<DataMember(Name="productGroupDiscounts", EmitDefaultValue=false)>]
member val ProductGroupDiscounts:ResizeArray<ProductGroupDiscountResultDto> = null with get,set
[<DataContract(Name="DiscountAgreementResult")>]
[<AllowNullLiteral>]
type DiscountAgreementResult() =
[<DataMember(Name="status", IsRequired=true)>]
member val DiscountAgreementStatus:DiscountAgreementStatusEnum = new DiscountAgreementStatusEnum() with get,set
[<DataMember(Name="applicationScope", IsRequired=true)>]
member val ApplicationScope:ApplicationScopeEnum = new ApplicationScopeEnum() with get,set
[<DataMember(Name="id", IsRequired=true)>]
member val Id:Guid = new Guid() with get,set
[<DataMember(Name="versionId", IsRequired=true)>]
member val VersionId:Guid = new Guid() with get,set
[<DataMember(Name="sourceVersionId")>]
member val SourceVersionId:Nullable<Guid> = new Nullable<Guid>() with get,set
[<DataMember(Name="externalId")>]
member val ExternalId:String = null with get,set
[<DataMember(Name="name", IsRequired=true)>]
member val Name:String = null with get,set
[<DataMember(Name="description")>]
member val Description:String = null with get,set
[<DataMember(Name="validFrom", IsRequired=true)>]
member val ValidFrom:DateTime = new DateTime() with get,set
[<DataMember(Name="validTo")>]
member val ValidTo:Nullable<DateTime> = new Nullable<DateTime>() with get,set
[<DataMember(Name="discountPeriod", EmitDefaultValue=false)>]
member val DiscountPeriod:DiscountPeriodDto = null with get,set
[<DataMember(Name="package", IsRequired=true)>]
member val Package:DiscountPackageDto = null with get,set
[<DataMember(Name="customers", EmitDefaultValue=false)>]
member val Customers:ResizeArray<DiscountAgreementCustomerResultDto> = null with get,set
[<DataMember(Name="customerGroups", EmitDefaultValue=false)>]
member val CustomerGroups:ResizeArray<DiscountAgreementCustomerGroupResultDto> = null with get,set
[<DataMember(Name="chargePlanDiscounts", EmitDefaultValue=false)>]
member val ChargePlanDiscounts:ResizeArray<ChargePlanDiscountResultDto> = null with get,set
[<DataContract(Name="CreatePricingTierDiscountRequestDto")>]
[<AllowNullLiteral>]
type CreatePricingTierDiscountRequestDto() =
[<DataMember(Name="discountType", IsRequired=true)>]
member val DiscountType:DiscountTypeEnum = new DiscountTypeEnum() with get,set
[<DataMember(Name="index", IsRequired=true)>]
member val Index:Int32 = new Int32() with get,set
[<DataMember(Name="unitPriceDiscount", EmitDefaultValue=false)>]
member val UnitPriceDiscount:Double = new Double() with get,set
[<DataMember(Name="flatPriceDiscount", EmitDefaultValue=false)>]
member val FlatPriceDiscount:Double = new Double() with get,set
[<DataContract(Name="ProductPricingDiscountRequestDto")>]
[<AllowNullLiteral>]
type ProductPricingDiscountRequestDto() =
[<DataMember(Name="discountType", IsRequired=true)>]
member val DiscountType:DiscountTypeEnum = new DiscountTypeEnum() with get,set
[<DataMember(Name="productId", IsRequired=true)>]
member val ProductId:Guid = new Guid() with get,set
[<DataMember(Name="unitPriceDiscount", EmitDefaultValue=false)>]
member val UnitPriceDiscount:Double = new Double() with get,set
[<DataMember(Name="tierPricingDiscounts", EmitDefaultValue=false)>]
member val TierPricingDiscounts:ResizeArray<CreatePricingTierDiscountRequestDto> = null with get,set
[<DataContract(Name="CreateProductGroupDiscountRequestDto")>]
[<AllowNullLiteral>]
type CreateProductGroupDiscountRequestDto() =
[<DataMember(Name="productGroupId", IsRequired=true)>]
member val ProductGroupId:Guid = new Guid() with get,set
[<DataMember(Name="productPricingDiscounts", EmitDefaultValue=false)>]
member val ProductPricingDiscounts:ResizeArray<ProductPricingDiscountRequestDto> = null with get,set
[<DataContract(Name="CreateChargePlanDiscountRequestDto")>]
[<AllowNullLiteral>]
type CreateChargePlanDiscountRequestDto() =
[<DataMember(Name="chargePlanId", IsRequired=true)>]
member val ChargePlanId:Guid = new Guid() with get,set
[<DataMember(Name="productGroupDiscounts", EmitDefaultValue=false)>]
member val ProductGroupDiscounts:ResizeArray<CreateProductGroupDiscountRequestDto> = null with get,set
[<DataContract(Name="DiscountAgreementTimeLengthRequestDto")>]
[<AllowNullLiteral>]
type DiscountAgreementTimeLengthRequestDto() =
[<DataMember(Name="unit", IsRequired=true)>]
member val Unit:UnitEnum = new UnitEnum() with get,set
[<DataMember(Name="value", IsRequired=true)>]
member val Value:Int32 = new Int32() with get,set
[<DataContract(Name="CreateDiscountPeriodRequestDto")>]
[<AllowNullLiteral>]
type CreateDiscountPeriodRequestDto() =
[<DataMember(Name="periodKind", IsRequired=true)>]
member val PeriodKind:PeriodKindEnum = new PeriodKindEnum() with get,set
[<DataMember(Name="length", EmitDefaultValue=false)>]
member val Length:DiscountAgreementTimeLengthRequestDto = null with get,set
[<DataMember(Name="periodIterationCount")>]
member val PeriodIterationCount:Nullable<Int32> = new Nullable<Int32>() with get,set
[<ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)>]
[<ValidateRequest(Validator="IsAuthenticated")>]
[<AllowNullLiteral>]
type CreateVossDiscountAgreement() =
///<summary>
///Discount agreement name
///</summary>
[<ApiMember(Description="Discount agreement name", IsRequired=true)>]
member val Name:String = null with get,set
///<summary>
///Discount agreement name
///</summary>
[<ApiMember(Description="Discount agreement name", IsRequired=true)>]
member val ChargePlanDiscounts:ResizeArray<CreateChargePlanDiscountRequestDto> = null with get,set
member val Description:String = null with get,set
///<summary>
///Discount agreement name
///</summary>
[<ApiMember(Description="Discount agreement name", IsRequired=true)>]
member val ValidFrom:DateTime = new DateTime() with get,set
///<summary>
///Discount agreement name
///</summary>
[<ApiMember(Description="Discount agreement name")>]
member val ValidTo:Nullable<DateTime> = new Nullable<DateTime>() with get,set
///<summary>
///Discount agreement name
///</summary>
[<ApiMember(Description="Discount agreement name")>]
member val DiscountPeriod:CreateDiscountPeriodRequestDto = null with get,set
F# CreateVossDiscountAgreement DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv
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/jsv
Content-Type: text/jsv
Content-Length: length
{
Name: String,
ChargePlanDiscounts:
[
{
}
],
Description: String,
ValidTo: "0001-01-01T00:00:00"
}
HTTP/1.1 200 OK
Content-Type: text/jsv
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:
[
{
}
]
}