| Requires any of the roles: | bookingsupplier-administrator-write, superadmin |
| POST | /voss/discountAgreements | Create discount agreement | Create discount agreement in VOSS System. |
|---|
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization;
using ServiceStack;
using ServiceStack.DataAnnotations;
using BokaMera.API.ServiceModel.Dtos;
using BokaMera.VossIntegration.ApiTools.Model;
using BokaMera.VossIntegration.ApiTools.Enums;
namespace BokaMera.API.ServiceModel.Dtos
{
[ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)]
[ValidateRequest("IsAuthenticated")]
public partial class CreateVossDiscountAgreement
{
///<summary>
///Discount agreement name
///</summary>
[ApiMember(Description="Discount agreement name", IsRequired=true)]
public virtual string Name { get; set; }
///<summary>
///Discount agreement name
///</summary>
[ApiMember(Description="Discount agreement name", IsRequired=true)]
public virtual List<CreateChargePlanDiscountRequestDto> ChargePlanDiscounts { get; set; } = [];
public virtual string Description { get; set; }
///<summary>
///Discount agreement name
///</summary>
[ApiMember(Description="Discount agreement name", IsRequired=true)]
public virtual DateTime ValidFrom { get; set; }
///<summary>
///Discount agreement name
///</summary>
[ApiMember(Description="Discount agreement name")]
public virtual DateTime? ValidTo { get; set; }
///<summary>
///Discount agreement name
///</summary>
[ApiMember(Description="Discount agreement name")]
public virtual CreateDiscountPeriodRequestDto DiscountPeriod { get; set; }
}
}
namespace BokaMera.VossIntegration.ApiTools.Enums
{
public enum DiscountAgreementStatusEnum
{
Draft,
Staged,
Published,
Archived,
Discarded,
}
public enum DiscountTypeEnum
{
FlatPrice,
Percentage,
}
public enum PeriodKindEnum
{
FixedTime,
AlignedToBindingPeriod,
AlignedToSubscriptionBillingPeriod,
}
}
namespace BokaMera.VossIntegration.ApiTools.Model
{
[DataContract(Name="ChargePlanDiscountResultDto")]
public partial class ChargePlanDiscountResultDto
{
[DataMember(Name="id", IsRequired=true)]
public virtual Guid Id { get; set; }
[DataMember(Name="chargePlanId", IsRequired=true)]
public virtual Guid ChargePlanId { get; set; }
[DataMember(Name="productGroupDiscounts", EmitDefaultValue=false)]
public virtual List<ProductGroupDiscountResultDto> ProductGroupDiscounts { get; set; } = [];
}
[DataContract(Name="CreateChargePlanDiscountRequestDto")]
public partial class CreateChargePlanDiscountRequestDto
{
[DataMember(Name="chargePlanId", IsRequired=true)]
public virtual Guid ChargePlanId { get; set; }
[DataMember(Name="productGroupDiscounts", EmitDefaultValue=false)]
public virtual List<CreateProductGroupDiscountRequestDto> ProductGroupDiscounts { get; set; } = [];
}
[DataContract(Name="CreateDiscountPeriodRequestDto")]
public partial class CreateDiscountPeriodRequestDto
{
[DataMember(Name="periodKind", IsRequired=true)]
public virtual PeriodKindEnum PeriodKind { get; set; }
[DataMember(Name="length", EmitDefaultValue=false)]
public virtual DiscountAgreementTimeLengthRequestDto Length { get; set; }
[DataMember(Name="periodIterationCount")]
public virtual int? PeriodIterationCount { get; set; }
}
[DataContract(Name="CreatePricingTierDiscountRequestDto")]
public partial class CreatePricingTierDiscountRequestDto
{
[DataMember(Name="discountType", IsRequired=true)]
public virtual DiscountTypeEnum DiscountType { get; set; }
[DataMember(Name="index", IsRequired=true)]
public virtual int Index { get; set; }
[DataMember(Name="unitPriceDiscount", EmitDefaultValue=false)]
public virtual double UnitPriceDiscount { get; set; }
[DataMember(Name="flatPriceDiscount", EmitDefaultValue=false)]
public virtual double FlatPriceDiscount { get; set; }
}
[DataContract(Name="CreateProductGroupDiscountRequestDto")]
public partial class CreateProductGroupDiscountRequestDto
{
[DataMember(Name="productGroupId", IsRequired=true)]
public virtual Guid ProductGroupId { get; set; }
[DataMember(Name="productPricingDiscounts", EmitDefaultValue=false)]
public virtual List<ProductPricingDiscountRequestDto> ProductPricingDiscounts { get; set; } = [];
}
[DataContract(Name="DiscountAgreementCustomerGroupResultDto")]
public partial class DiscountAgreementCustomerGroupResultDto
{
[DataMember(Name="intervalStart", EmitDefaultValue=false)]
public virtual int IntervalStart { get; set; }
[DataMember(Name="intervalEnd", EmitDefaultValue=false)]
public virtual int IntervalEnd { get; set; }
}
[DataContract(Name="DiscountAgreementCustomerResultDto")]
public partial class DiscountAgreementCustomerResultDto
{
[DataMember(Name="customerId", IsRequired=true)]
public virtual Guid CustomerId { get; set; }
}
[DataContract(Name="DiscountAgreementResult")]
public partial class DiscountAgreementResult
{
[DataMember(Name="status", IsRequired=true)]
public virtual DiscountAgreementStatusEnum DiscountAgreementStatus { get; set; }
[DataMember(Name="applicationScope", IsRequired=true)]
public virtual ApplicationScopeEnum ApplicationScope { get; set; }
[DataMember(Name="id", IsRequired=true)]
public virtual Guid Id { get; set; }
[DataMember(Name="versionId", IsRequired=true)]
public virtual Guid VersionId { get; set; }
[DataMember(Name="sourceVersionId")]
public virtual Guid? SourceVersionId { get; set; }
[DataMember(Name="externalId")]
public virtual string ExternalId { get; set; }
[DataMember(Name="name", IsRequired=true)]
public virtual string Name { get; set; }
[DataMember(Name="description")]
public virtual string Description { get; set; }
[DataMember(Name="validFrom", IsRequired=true)]
public virtual DateTime ValidFrom { get; set; }
[DataMember(Name="validTo")]
public virtual DateTime? ValidTo { get; set; }
[DataMember(Name="discountPeriod", EmitDefaultValue=false)]
public virtual DiscountPeriodDto DiscountPeriod { get; set; }
[DataMember(Name="package", IsRequired=true)]
public virtual DiscountPackageDto Package { get; set; }
[DataMember(Name="customers", EmitDefaultValue=false)]
public virtual List<DiscountAgreementCustomerResultDto> Customers { get; set; } = [];
[DataMember(Name="customerGroups", EmitDefaultValue=false)]
public virtual List<DiscountAgreementCustomerGroupResultDto> CustomerGroups { get; set; } = [];
[DataMember(Name="chargePlanDiscounts", EmitDefaultValue=false)]
public virtual List<ChargePlanDiscountResultDto> ChargePlanDiscounts { get; set; } = [];
public enum ApplicationScopeEnum
{
Any,
SubscriptionCustomer,
NonSubscriptionCustomerInvoiceRecipient,
}
}
[DataContract(Name="DiscountAgreementTimeLengthRequestDto")]
public partial class DiscountAgreementTimeLengthRequestDto
{
[DataMember(Name="unit", IsRequired=true)]
public virtual UnitEnum Unit { get; set; }
[DataMember(Name="value", IsRequired=true)]
public virtual int Value { get; set; }
public enum UnitEnum
{
Day,
Month,
Year,
}
}
[DataContract(Name="DiscountPackageDto")]
public partial class DiscountPackageDto
{
[DataMember(Name="id", IsRequired=true)]
public virtual Guid Id { get; set; }
[DataMember(Name="name", IsRequired=true)]
public virtual string Name { get; set; }
}
[DataContract(Name="DiscountPeriodDto")]
public partial class DiscountPeriodDto
{
[DataMember(Name="periodKind", IsRequired=true)]
public virtual PeriodKindEnum PeriodKind { get; set; }
[DataMember(Name="length")]
public virtual TimeLengthDto Length { get; set; }
[DataMember(Name="periodIterationCount")]
public virtual int? PeriodIterationCount { get; set; }
}
[DataContract(Name="PricingTierDiscountResultDto")]
public partial class PricingTierDiscountResultDto
{
[DataMember(Name="discountType", IsRequired=true)]
public virtual DiscountTypeEnum DiscountType { get; set; }
[DataMember(Name="id", IsRequired=true)]
public virtual Guid Id { get; set; }
[DataMember(Name="index", EmitDefaultValue=false)]
public virtual int Index { get; set; }
[DataMember(Name="unitPriceDiscount", EmitDefaultValue=false)]
public virtual double UnitPriceDiscount { get; set; }
[DataMember(Name="flatPriceDiscount", EmitDefaultValue=false)]
public virtual double FlatPriceDiscount { get; set; }
}
[DataContract(Name="ProductGroupDiscountResultDto")]
public partial class ProductGroupDiscountResultDto
{
[DataMember(Name="id", IsRequired=true)]
public virtual Guid Id { get; set; }
[DataMember(Name="productGroupId", IsRequired=true)]
public virtual Guid ProductGroupId { get; set; }
[DataMember(Name="productPricingDiscounts", EmitDefaultValue=false)]
public virtual List<ProductPricingDiscountResultDto> ProductPricingDiscounts { get; set; } = [];
}
[DataContract(Name="ProductPricingDiscountRequestDto")]
public partial class ProductPricingDiscountRequestDto
{
[DataMember(Name="discountType", IsRequired=true)]
public virtual DiscountTypeEnum DiscountType { get; set; }
[DataMember(Name="productId", IsRequired=true)]
public virtual Guid ProductId { get; set; }
[DataMember(Name="unitPriceDiscount", EmitDefaultValue=false)]
public virtual double UnitPriceDiscount { get; set; }
[DataMember(Name="tierPricingDiscounts", EmitDefaultValue=false)]
public virtual List<CreatePricingTierDiscountRequestDto> TierPricingDiscounts { get; set; } = [];
}
[DataContract(Name="ProductPricingDiscountResultDto")]
public partial class ProductPricingDiscountResultDto
{
[DataMember(Name="discountType", IsRequired=true)]
public virtual DiscountTypeEnum DiscountType { get; set; }
[DataMember(Name="id", IsRequired=true)]
public virtual Guid Id { get; set; }
[DataMember(Name="productId", IsRequired=true)]
public virtual Guid ProductId { get; set; }
[DataMember(Name="unitPriceDiscount", EmitDefaultValue=false)]
public virtual double UnitPriceDiscount { get; set; }
[DataMember(Name="tierPricingDiscounts", EmitDefaultValue=false)]
public virtual List<PricingTierDiscountResultDto> TierPricingDiscounts { get; set; } = [];
}
[DataContract(Name="TimeLengthDto")]
public partial class TimeLengthDto
{
[DataMember(Name="unit", IsRequired=true)]
public virtual UnitEnum Unit { get; set; }
[DataMember(Name="value", EmitDefaultValue=false)]
public virtual int Value { get; set; }
public enum UnitEnum
{
Day,
Month,
Year,
}
}
}
C# 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:
[
{
}
]
}