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

HTTP + 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: 
	[
		{
			
		}
	]
}