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.
import 'package:servicestack/servicestack.dart';

enum DiscountAgreementStatusEnum
{
    Draft,
    Staged,
    Published,
    Archived,
    Discarded,
}

enum ApplicationScopeEnum
{
    Any,
    SubscriptionCustomer,
    NonSubscriptionCustomerInvoiceRecipient,
}

enum PeriodKindEnum
{
    FixedTime,
    AlignedToBindingPeriod,
    AlignedToSubscriptionBillingPeriod,
}

enum UnitEnum
{
    Day,
    Month,
    Year,
}

// @DataContract(Name="TimeLengthDto")
class TimeLengthDto implements IConvertible
{
    // @DataMember(Name="unit", IsRequired=true)
    UnitEnum? unit;

    // @DataMember(Name="value", EmitDefaultValue=false)
    int? value;

    TimeLengthDto({this.unit,this.value});
    TimeLengthDto.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        unit = JsonConverters.fromJson(json['Unit'],'UnitEnum',context!);
        value = json['Value'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'unit': JsonConverters.toJson(unit,'UnitEnum',context!),
        'value': value
    };

    getTypeName() => "TimeLengthDto";
    TypeContext? context = _ctx;
}

// @DataContract(Name="DiscountPeriodDto")
class DiscountPeriodDto implements IConvertible
{
    // @DataMember(Name="periodKind", IsRequired=true)
    PeriodKindEnum? periodKind;

    // @DataMember(Name="length")
    TimeLengthDto? length;

    // @DataMember(Name="periodIterationCount")
    int? periodIterationCount;

    DiscountPeriodDto({this.periodKind,this.length,this.periodIterationCount});
    DiscountPeriodDto.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        periodKind = JsonConverters.fromJson(json['PeriodKind'],'PeriodKindEnum',context!);
        length = JsonConverters.fromJson(json['Length'],'TimeLengthDto',context!);
        periodIterationCount = json['PeriodIterationCount'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'periodKind': JsonConverters.toJson(periodKind,'PeriodKindEnum',context!),
        'length': JsonConverters.toJson(length,'TimeLengthDto',context!),
        'periodIterationCount': periodIterationCount
    };

    getTypeName() => "DiscountPeriodDto";
    TypeContext? context = _ctx;
}

// @DataContract(Name="DiscountPackageDto")
class DiscountPackageDto implements IConvertible
{
    // @DataMember(Name="id", IsRequired=true)
    String? id;

    // @DataMember(Name="name", IsRequired=true)
    String? name;

    DiscountPackageDto({this.id,this.name});
    DiscountPackageDto.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        id = json['Id'];
        name = json['Name'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'id': id,
        'name': name
    };

    getTypeName() => "DiscountPackageDto";
    TypeContext? context = _ctx;
}

// @DataContract(Name="DiscountAgreementCustomerResultDto")
class DiscountAgreementCustomerResultDto implements IConvertible
{
    // @DataMember(Name="customerId", IsRequired=true)
    String? customerId;

    DiscountAgreementCustomerResultDto({this.customerId});
    DiscountAgreementCustomerResultDto.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        customerId = json['CustomerId'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'customerId': customerId
    };

    getTypeName() => "DiscountAgreementCustomerResultDto";
    TypeContext? context = _ctx;
}

// @DataContract(Name="DiscountAgreementCustomerGroupResultDto")
class DiscountAgreementCustomerGroupResultDto implements IConvertible
{
    // @DataMember(Name="intervalStart", EmitDefaultValue=false)
    int? intervalStart;

    // @DataMember(Name="intervalEnd", EmitDefaultValue=false)
    int? intervalEnd;

    DiscountAgreementCustomerGroupResultDto({this.intervalStart,this.intervalEnd});
    DiscountAgreementCustomerGroupResultDto.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        intervalStart = json['IntervalStart'];
        intervalEnd = json['IntervalEnd'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'intervalStart': intervalStart,
        'intervalEnd': intervalEnd
    };

    getTypeName() => "DiscountAgreementCustomerGroupResultDto";
    TypeContext? context = _ctx;
}

enum DiscountTypeEnum
{
    FlatPrice,
    Percentage,
}

// @DataContract(Name="PricingTierDiscountResultDto")
class PricingTierDiscountResultDto implements IConvertible
{
    // @DataMember(Name="discountType", IsRequired=true)
    DiscountTypeEnum? discountType;

    // @DataMember(Name="id", IsRequired=true)
    String? id;

    // @DataMember(Name="index", EmitDefaultValue=false)
    int? index;

    // @DataMember(Name="unitPriceDiscount", EmitDefaultValue=false)
    double? unitPriceDiscount;

    // @DataMember(Name="flatPriceDiscount", EmitDefaultValue=false)
    double? flatPriceDiscount;

    PricingTierDiscountResultDto({this.discountType,this.id,this.index,this.unitPriceDiscount,this.flatPriceDiscount});
    PricingTierDiscountResultDto.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        discountType = JsonConverters.fromJson(json['DiscountType'],'DiscountTypeEnum',context!);
        id = json['Id'];
        index = json['Index'];
        unitPriceDiscount = JsonConverters.toDouble(json['UnitPriceDiscount']);
        flatPriceDiscount = JsonConverters.toDouble(json['FlatPriceDiscount']);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'discountType': JsonConverters.toJson(discountType,'DiscountTypeEnum',context!),
        'id': id,
        'index': index,
        'unitPriceDiscount': unitPriceDiscount,
        'flatPriceDiscount': flatPriceDiscount
    };

    getTypeName() => "PricingTierDiscountResultDto";
    TypeContext? context = _ctx;
}

// @DataContract(Name="ProductPricingDiscountResultDto")
class ProductPricingDiscountResultDto implements IConvertible
{
    // @DataMember(Name="discountType", IsRequired=true)
    DiscountTypeEnum? discountType;

    // @DataMember(Name="id", IsRequired=true)
    String? id;

    // @DataMember(Name="productId", IsRequired=true)
    String? productId;

    // @DataMember(Name="unitPriceDiscount", EmitDefaultValue=false)
    double? unitPriceDiscount;

    // @DataMember(Name="tierPricingDiscounts", EmitDefaultValue=false)
    List<PricingTierDiscountResultDto>? tierPricingDiscounts = [];

    ProductPricingDiscountResultDto({this.discountType,this.id,this.productId,this.unitPriceDiscount,this.tierPricingDiscounts});
    ProductPricingDiscountResultDto.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        discountType = JsonConverters.fromJson(json['DiscountType'],'DiscountTypeEnum',context!);
        id = json['Id'];
        productId = json['ProductId'];
        unitPriceDiscount = JsonConverters.toDouble(json['UnitPriceDiscount']);
        tierPricingDiscounts = JsonConverters.fromJson(json['TierPricingDiscounts'],'List<PricingTierDiscountResultDto>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'discountType': JsonConverters.toJson(discountType,'DiscountTypeEnum',context!),
        'id': id,
        'productId': productId,
        'unitPriceDiscount': unitPriceDiscount,
        'tierPricingDiscounts': JsonConverters.toJson(tierPricingDiscounts,'List<PricingTierDiscountResultDto>',context!)
    };

    getTypeName() => "ProductPricingDiscountResultDto";
    TypeContext? context = _ctx;
}

// @DataContract(Name="ProductGroupDiscountResultDto")
class ProductGroupDiscountResultDto implements IConvertible
{
    // @DataMember(Name="id", IsRequired=true)
    String? id;

    // @DataMember(Name="productGroupId", IsRequired=true)
    String? productGroupId;

    // @DataMember(Name="productPricingDiscounts", EmitDefaultValue=false)
    List<ProductPricingDiscountResultDto>? productPricingDiscounts = [];

    ProductGroupDiscountResultDto({this.id,this.productGroupId,this.productPricingDiscounts});
    ProductGroupDiscountResultDto.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        id = json['Id'];
        productGroupId = json['ProductGroupId'];
        productPricingDiscounts = JsonConverters.fromJson(json['ProductPricingDiscounts'],'List<ProductPricingDiscountResultDto>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'id': id,
        'productGroupId': productGroupId,
        'productPricingDiscounts': JsonConverters.toJson(productPricingDiscounts,'List<ProductPricingDiscountResultDto>',context!)
    };

    getTypeName() => "ProductGroupDiscountResultDto";
    TypeContext? context = _ctx;
}

// @DataContract(Name="ChargePlanDiscountResultDto")
class ChargePlanDiscountResultDto implements IConvertible
{
    // @DataMember(Name="id", IsRequired=true)
    String? id;

    // @DataMember(Name="chargePlanId", IsRequired=true)
    String? chargePlanId;

    // @DataMember(Name="productGroupDiscounts", EmitDefaultValue=false)
    List<ProductGroupDiscountResultDto>? productGroupDiscounts = [];

    ChargePlanDiscountResultDto({this.id,this.chargePlanId,this.productGroupDiscounts});
    ChargePlanDiscountResultDto.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        id = json['Id'];
        chargePlanId = json['ChargePlanId'];
        productGroupDiscounts = JsonConverters.fromJson(json['ProductGroupDiscounts'],'List<ProductGroupDiscountResultDto>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'id': id,
        'chargePlanId': chargePlanId,
        'productGroupDiscounts': JsonConverters.toJson(productGroupDiscounts,'List<ProductGroupDiscountResultDto>',context!)
    };

    getTypeName() => "ChargePlanDiscountResultDto";
    TypeContext? context = _ctx;
}

// @DataContract(Name="DiscountAgreementResult")
class DiscountAgreementResult implements IConvertible
{
    // @DataMember(Name="status", IsRequired=true)
    DiscountAgreementStatusEnum? status;

    // @DataMember(Name="applicationScope", IsRequired=true)
    ApplicationScopeEnum? applicationScope;

    // @DataMember(Name="id", IsRequired=true)
    String? id;

    // @DataMember(Name="versionId", IsRequired=true)
    String? versionId;

    // @DataMember(Name="sourceVersionId")
    String? sourceVersionId;

    // @DataMember(Name="externalId")
    String? externalId;

    // @DataMember(Name="name", IsRequired=true)
    String? name;

    // @DataMember(Name="description")
    String? description;

    // @DataMember(Name="validFrom", IsRequired=true)
    DateTime? validFrom;

    // @DataMember(Name="validTo")
    DateTime? validTo;

    // @DataMember(Name="discountPeriod", EmitDefaultValue=false)
    DiscountPeriodDto? discountPeriod;

    // @DataMember(Name="package", IsRequired=true)
    DiscountPackageDto? package;

    // @DataMember(Name="customers", EmitDefaultValue=false)
    List<DiscountAgreementCustomerResultDto>? customers = [];

    // @DataMember(Name="customerGroups", EmitDefaultValue=false)
    List<DiscountAgreementCustomerGroupResultDto>? customerGroups = [];

    // @DataMember(Name="chargePlanDiscounts", EmitDefaultValue=false)
    List<ChargePlanDiscountResultDto>? chargePlanDiscounts = [];

    DiscountAgreementResult({this.status,this.applicationScope,this.id,this.versionId,this.sourceVersionId,this.externalId,this.name,this.description,this.validFrom,this.validTo,this.discountPeriod,this.package,this.customers,this.customerGroups,this.chargePlanDiscounts});
    DiscountAgreementResult.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        status = JsonConverters.fromJson(json['DiscountAgreementStatus'],'DiscountAgreementStatusEnum',context!);
        applicationScope = JsonConverters.fromJson(json['ApplicationScope'],'ApplicationScopeEnum',context!);
        id = json['Id'];
        versionId = json['VersionId'];
        sourceVersionId = json['SourceVersionId'];
        externalId = json['ExternalId'];
        name = json['Name'];
        description = json['Description'];
        validFrom = JsonConverters.fromJson(json['ValidFrom'],'DateTime',context!);
        validTo = JsonConverters.fromJson(json['ValidTo'],'DateTime',context!);
        discountPeriod = JsonConverters.fromJson(json['DiscountPeriod'],'DiscountPeriodDto',context!);
        package = JsonConverters.fromJson(json['Package'],'DiscountPackageDto',context!);
        customers = JsonConverters.fromJson(json['Customers'],'List<DiscountAgreementCustomerResultDto>',context!);
        customerGroups = JsonConverters.fromJson(json['CustomerGroups'],'List<DiscountAgreementCustomerGroupResultDto>',context!);
        chargePlanDiscounts = JsonConverters.fromJson(json['ChargePlanDiscounts'],'List<ChargePlanDiscountResultDto>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'status': JsonConverters.toJson(status,'DiscountAgreementStatusEnum',context!),
        'applicationScope': JsonConverters.toJson(applicationScope,'ApplicationScopeEnum',context!),
        'id': id,
        'versionId': versionId,
        'sourceVersionId': sourceVersionId,
        'externalId': externalId,
        'name': name,
        'description': description,
        'validFrom': JsonConverters.toJson(validFrom,'DateTime',context!),
        'validTo': JsonConverters.toJson(validTo,'DateTime',context!),
        'discountPeriod': JsonConverters.toJson(discountPeriod,'DiscountPeriodDto',context!),
        'package': JsonConverters.toJson(package,'DiscountPackageDto',context!),
        'customers': JsonConverters.toJson(customers,'List<DiscountAgreementCustomerResultDto>',context!),
        'customerGroups': JsonConverters.toJson(customerGroups,'List<DiscountAgreementCustomerGroupResultDto>',context!),
        'chargePlanDiscounts': JsonConverters.toJson(chargePlanDiscounts,'List<ChargePlanDiscountResultDto>',context!)
    };

    getTypeName() => "DiscountAgreementResult";
    TypeContext? context = _ctx;
}

// @DataContract(Name="CreatePricingTierDiscountRequestDto")
class CreatePricingTierDiscountRequestDto implements IConvertible
{
    // @DataMember(Name="discountType", IsRequired=true)
    DiscountTypeEnum? discountType;

    // @DataMember(Name="index", IsRequired=true)
    int? index;

    // @DataMember(Name="unitPriceDiscount", EmitDefaultValue=false)
    double? unitPriceDiscount;

    // @DataMember(Name="flatPriceDiscount", EmitDefaultValue=false)
    double? flatPriceDiscount;

    CreatePricingTierDiscountRequestDto({this.discountType,this.index,this.unitPriceDiscount,this.flatPriceDiscount});
    CreatePricingTierDiscountRequestDto.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        discountType = JsonConverters.fromJson(json['DiscountType'],'DiscountTypeEnum',context!);
        index = json['Index'];
        unitPriceDiscount = JsonConverters.toDouble(json['UnitPriceDiscount']);
        flatPriceDiscount = JsonConverters.toDouble(json['FlatPriceDiscount']);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'discountType': JsonConverters.toJson(discountType,'DiscountTypeEnum',context!),
        'index': index,
        'unitPriceDiscount': unitPriceDiscount,
        'flatPriceDiscount': flatPriceDiscount
    };

    getTypeName() => "CreatePricingTierDiscountRequestDto";
    TypeContext? context = _ctx;
}

// @DataContract(Name="ProductPricingDiscountRequestDto")
class ProductPricingDiscountRequestDto implements IConvertible
{
    // @DataMember(Name="discountType", IsRequired=true)
    DiscountTypeEnum? discountType;

    // @DataMember(Name="productId", IsRequired=true)
    String? productId;

    // @DataMember(Name="unitPriceDiscount", EmitDefaultValue=false)
    double? unitPriceDiscount;

    // @DataMember(Name="tierPricingDiscounts", EmitDefaultValue=false)
    List<CreatePricingTierDiscountRequestDto>? tierPricingDiscounts = [];

    ProductPricingDiscountRequestDto({this.discountType,this.productId,this.unitPriceDiscount,this.tierPricingDiscounts});
    ProductPricingDiscountRequestDto.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        discountType = JsonConverters.fromJson(json['DiscountType'],'DiscountTypeEnum',context!);
        productId = json['ProductId'];
        unitPriceDiscount = JsonConverters.toDouble(json['UnitPriceDiscount']);
        tierPricingDiscounts = JsonConverters.fromJson(json['TierPricingDiscounts'],'List<CreatePricingTierDiscountRequestDto>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'discountType': JsonConverters.toJson(discountType,'DiscountTypeEnum',context!),
        'productId': productId,
        'unitPriceDiscount': unitPriceDiscount,
        'tierPricingDiscounts': JsonConverters.toJson(tierPricingDiscounts,'List<CreatePricingTierDiscountRequestDto>',context!)
    };

    getTypeName() => "ProductPricingDiscountRequestDto";
    TypeContext? context = _ctx;
}

// @DataContract(Name="CreateProductGroupDiscountRequestDto")
class CreateProductGroupDiscountRequestDto implements IConvertible
{
    // @DataMember(Name="productGroupId", IsRequired=true)
    String? productGroupId;

    // @DataMember(Name="productPricingDiscounts", EmitDefaultValue=false)
    List<ProductPricingDiscountRequestDto>? productPricingDiscounts = [];

    CreateProductGroupDiscountRequestDto({this.productGroupId,this.productPricingDiscounts});
    CreateProductGroupDiscountRequestDto.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        productGroupId = json['ProductGroupId'];
        productPricingDiscounts = JsonConverters.fromJson(json['ProductPricingDiscounts'],'List<ProductPricingDiscountRequestDto>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'productGroupId': productGroupId,
        'productPricingDiscounts': JsonConverters.toJson(productPricingDiscounts,'List<ProductPricingDiscountRequestDto>',context!)
    };

    getTypeName() => "CreateProductGroupDiscountRequestDto";
    TypeContext? context = _ctx;
}

// @DataContract(Name="CreateChargePlanDiscountRequestDto")
class CreateChargePlanDiscountRequestDto implements IConvertible
{
    // @DataMember(Name="chargePlanId", IsRequired=true)
    String? chargePlanId;

    // @DataMember(Name="productGroupDiscounts", EmitDefaultValue=false)
    List<CreateProductGroupDiscountRequestDto>? productGroupDiscounts = [];

    CreateChargePlanDiscountRequestDto({this.chargePlanId,this.productGroupDiscounts});
    CreateChargePlanDiscountRequestDto.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        chargePlanId = json['ChargePlanId'];
        productGroupDiscounts = JsonConverters.fromJson(json['ProductGroupDiscounts'],'List<CreateProductGroupDiscountRequestDto>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'chargePlanId': chargePlanId,
        'productGroupDiscounts': JsonConverters.toJson(productGroupDiscounts,'List<CreateProductGroupDiscountRequestDto>',context!)
    };

    getTypeName() => "CreateChargePlanDiscountRequestDto";
    TypeContext? context = _ctx;
}

// @DataContract(Name="DiscountAgreementTimeLengthRequestDto")
class DiscountAgreementTimeLengthRequestDto implements IConvertible
{
    // @DataMember(Name="unit", IsRequired=true)
    UnitEnum? unit;

    // @DataMember(Name="value", IsRequired=true)
    int? value;

    DiscountAgreementTimeLengthRequestDto({this.unit,this.value});
    DiscountAgreementTimeLengthRequestDto.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        unit = JsonConverters.fromJson(json['Unit'],'UnitEnum',context!);
        value = json['Value'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'unit': JsonConverters.toJson(unit,'UnitEnum',context!),
        'value': value
    };

    getTypeName() => "DiscountAgreementTimeLengthRequestDto";
    TypeContext? context = _ctx;
}

// @DataContract(Name="CreateDiscountPeriodRequestDto")
class CreateDiscountPeriodRequestDto implements IConvertible
{
    // @DataMember(Name="periodKind", IsRequired=true)
    PeriodKindEnum? periodKind;

    // @DataMember(Name="length", EmitDefaultValue=false)
    DiscountAgreementTimeLengthRequestDto? length;

    // @DataMember(Name="periodIterationCount")
    int? periodIterationCount;

    CreateDiscountPeriodRequestDto({this.periodKind,this.length,this.periodIterationCount});
    CreateDiscountPeriodRequestDto.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        periodKind = JsonConverters.fromJson(json['PeriodKind'],'PeriodKindEnum',context!);
        length = JsonConverters.fromJson(json['Length'],'DiscountAgreementTimeLengthRequestDto',context!);
        periodIterationCount = json['PeriodIterationCount'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'periodKind': JsonConverters.toJson(periodKind,'PeriodKindEnum',context!),
        'length': JsonConverters.toJson(length,'DiscountAgreementTimeLengthRequestDto',context!),
        'periodIterationCount': periodIterationCount
    };

    getTypeName() => "CreateDiscountPeriodRequestDto";
    TypeContext? context = _ctx;
}

// @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
// @ValidateRequest(Validator="IsAuthenticated")
class CreateVossDiscountAgreement implements IConvertible
{
    /**
    * Discount agreement name
    */
    // @ApiMember(Description="Discount agreement name", IsRequired=true)
    String? Name;

    /**
    * Discount agreement name
    */
    // @ApiMember(Description="Discount agreement name", IsRequired=true)
    List<CreateChargePlanDiscountRequestDto>? ChargePlanDiscounts = [];

    String? Description;
    /**
    * Discount agreement name
    */
    // @ApiMember(Description="Discount agreement name", IsRequired=true)
    DateTime? ValidFrom;

    /**
    * Discount agreement name
    */
    // @ApiMember(Description="Discount agreement name")
    DateTime? ValidTo;

    /**
    * Discount agreement name
    */
    // @ApiMember(Description="Discount agreement name")
    CreateDiscountPeriodRequestDto? DiscountPeriod;

    CreateVossDiscountAgreement({this.Name,this.ChargePlanDiscounts,this.Description,this.ValidFrom,this.ValidTo,this.DiscountPeriod});
    CreateVossDiscountAgreement.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Name = json['Name'];
        ChargePlanDiscounts = JsonConverters.fromJson(json['ChargePlanDiscounts'],'List<CreateChargePlanDiscountRequestDto>',context!);
        Description = json['Description'];
        ValidFrom = JsonConverters.fromJson(json['ValidFrom'],'DateTime',context!);
        ValidTo = JsonConverters.fromJson(json['ValidTo'],'DateTime',context!);
        DiscountPeriod = JsonConverters.fromJson(json['DiscountPeriod'],'CreateDiscountPeriodRequestDto',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Name': Name,
        'ChargePlanDiscounts': JsonConverters.toJson(ChargePlanDiscounts,'List<CreateChargePlanDiscountRequestDto>',context!),
        'Description': Description,
        'ValidFrom': JsonConverters.toJson(ValidFrom,'DateTime',context!),
        'ValidTo': JsonConverters.toJson(ValidTo,'DateTime',context!),
        'DiscountPeriod': JsonConverters.toJson(DiscountPeriod,'CreateDiscountPeriodRequestDto',context!)
    };

    getTypeName() => "CreateVossDiscountAgreement";
    TypeContext? context = _ctx;
}

TypeContext _ctx = TypeContext(library: 'api.bokamera.se', types: <String, TypeInfo> {
    'DiscountAgreementStatusEnum': TypeInfo(TypeOf.Enum, enumValues:DiscountAgreementStatusEnum.values),
    'ApplicationScopeEnum': TypeInfo(TypeOf.Enum, enumValues:ApplicationScopeEnum.values),
    'PeriodKindEnum': TypeInfo(TypeOf.Enum, enumValues:PeriodKindEnum.values),
    'UnitEnum': TypeInfo(TypeOf.Enum, enumValues:UnitEnum.values),
    'TimeLengthDto': TypeInfo(TypeOf.Class, create:() => TimeLengthDto()),
    'DiscountPeriodDto': TypeInfo(TypeOf.Class, create:() => DiscountPeriodDto()),
    'DiscountPackageDto': TypeInfo(TypeOf.Class, create:() => DiscountPackageDto()),
    'DiscountAgreementCustomerResultDto': TypeInfo(TypeOf.Class, create:() => DiscountAgreementCustomerResultDto()),
    'DiscountAgreementCustomerGroupResultDto': TypeInfo(TypeOf.Class, create:() => DiscountAgreementCustomerGroupResultDto()),
    'DiscountTypeEnum': TypeInfo(TypeOf.Enum, enumValues:DiscountTypeEnum.values),
    'PricingTierDiscountResultDto': TypeInfo(TypeOf.Class, create:() => PricingTierDiscountResultDto()),
    'ProductPricingDiscountResultDto': TypeInfo(TypeOf.Class, create:() => ProductPricingDiscountResultDto()),
    'List<PricingTierDiscountResultDto>': TypeInfo(TypeOf.Class, create:() => <PricingTierDiscountResultDto>[]),
    'ProductGroupDiscountResultDto': TypeInfo(TypeOf.Class, create:() => ProductGroupDiscountResultDto()),
    'List<ProductPricingDiscountResultDto>': TypeInfo(TypeOf.Class, create:() => <ProductPricingDiscountResultDto>[]),
    'ChargePlanDiscountResultDto': TypeInfo(TypeOf.Class, create:() => ChargePlanDiscountResultDto()),
    'List<ProductGroupDiscountResultDto>': TypeInfo(TypeOf.Class, create:() => <ProductGroupDiscountResultDto>[]),
    'DiscountAgreementResult': TypeInfo(TypeOf.Class, create:() => DiscountAgreementResult()),
    'List<DiscountAgreementCustomerResultDto>': TypeInfo(TypeOf.Class, create:() => <DiscountAgreementCustomerResultDto>[]),
    'List<DiscountAgreementCustomerGroupResultDto>': TypeInfo(TypeOf.Class, create:() => <DiscountAgreementCustomerGroupResultDto>[]),
    'List<ChargePlanDiscountResultDto>': TypeInfo(TypeOf.Class, create:() => <ChargePlanDiscountResultDto>[]),
    'CreatePricingTierDiscountRequestDto': TypeInfo(TypeOf.Class, create:() => CreatePricingTierDiscountRequestDto()),
    'ProductPricingDiscountRequestDto': TypeInfo(TypeOf.Class, create:() => ProductPricingDiscountRequestDto()),
    'List<CreatePricingTierDiscountRequestDto>': TypeInfo(TypeOf.Class, create:() => <CreatePricingTierDiscountRequestDto>[]),
    'CreateProductGroupDiscountRequestDto': TypeInfo(TypeOf.Class, create:() => CreateProductGroupDiscountRequestDto()),
    'List<ProductPricingDiscountRequestDto>': TypeInfo(TypeOf.Class, create:() => <ProductPricingDiscountRequestDto>[]),
    'CreateChargePlanDiscountRequestDto': TypeInfo(TypeOf.Class, create:() => CreateChargePlanDiscountRequestDto()),
    'List<CreateProductGroupDiscountRequestDto>': TypeInfo(TypeOf.Class, create:() => <CreateProductGroupDiscountRequestDto>[]),
    'DiscountAgreementTimeLengthRequestDto': TypeInfo(TypeOf.Class, create:() => DiscountAgreementTimeLengthRequestDto()),
    'CreateDiscountPeriodRequestDto': TypeInfo(TypeOf.Class, create:() => CreateDiscountPeriodRequestDto()),
    'CreateVossDiscountAgreement': TypeInfo(TypeOf.Class, create:() => CreateVossDiscountAgreement()),
    'List<CreateChargePlanDiscountRequestDto>': TypeInfo(TypeOf.Class, create:() => <CreateChargePlanDiscountRequestDto>[]),
});

Dart CreateVossDiscountAgreement DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .json suffix or ?format=json

To embed the response in a jsonp callback, append ?callback=myCallback

HTTP + JSON

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/json
Content-Type: application/json
Content-Length: length

{"Name":"String","ChargePlanDiscounts":[{}],"Description":"String","ValidTo":"0001-01-01T00:00:00"}
HTTP/1.1 200 OK
Content-Type: application/json
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":[{}]}