Requires any of the roles: | bookingsupplier-administrator-write, superadmin |
POST | /services/prices/ | Create a price | Create a new price on the service |
---|
import 'package:servicestack/servicestack.dart';
class DayOfWeekDto implements IConvertible
{
int? DayOfWeekId;
int? DotNetDayOfWeekId;
String? DayOfWeek;
DayOfWeekDto({this.DayOfWeekId,this.DotNetDayOfWeekId,this.DayOfWeek});
DayOfWeekDto.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
DayOfWeekId = json['DayOfWeekId'];
DotNetDayOfWeekId = json['DotNetDayOfWeekId'];
DayOfWeek = json['DayOfWeek'];
return this;
}
Map<String, dynamic> toJson() => {
'DayOfWeekId': DayOfWeekId,
'DotNetDayOfWeekId': DotNetDayOfWeekId,
'DayOfWeek': DayOfWeek
};
getTypeName() => "DayOfWeekDto";
TypeContext? context = _ctx;
}
class GroupBookingSettings implements IConvertible
{
bool? Active;
int? Min;
int? Max;
GroupBookingSettings({this.Active,this.Min,this.Max});
GroupBookingSettings.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
Active = json['Active'];
Min = json['Min'];
Max = json['Max'];
return this;
}
Map<String, dynamic> toJson() => {
'Active': Active,
'Min': Min,
'Max': Max
};
getTypeName() => "GroupBookingSettings";
TypeContext? context = _ctx;
}
class MultipleResourceSettings implements IConvertible
{
bool? Active;
int? Min;
int? Max;
MultipleResourceSettings({this.Active,this.Min,this.Max});
MultipleResourceSettings.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
Active = json['Active'];
Min = json['Min'];
Max = json['Max'];
return this;
}
Map<String, dynamic> toJson() => {
'Active': Active,
'Min': Min,
'Max': Max
};
getTypeName() => "MultipleResourceSettings";
TypeContext? context = _ctx;
}
class ServiceInfoResponse implements IConvertible
{
int? Id;
String? Name;
String? Description;
Uri? ImageUrl;
int? LengthInMinutes;
int? MaxNumberOfSpotsPerBooking;
int? MinNumberOfSpotsPerBooking;
GroupBookingSettings? GroupBooking;
MultipleResourceSettings? MultipleResource;
bool? IsGroupBooking;
bool? IsPaymentEnabled;
ServiceInfoResponse({this.Id,this.Name,this.Description,this.ImageUrl,this.LengthInMinutes,this.MaxNumberOfSpotsPerBooking,this.MinNumberOfSpotsPerBooking,this.GroupBooking,this.MultipleResource,this.IsGroupBooking,this.IsPaymentEnabled});
ServiceInfoResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
Id = json['Id'];
Name = json['Name'];
Description = json['Description'];
ImageUrl = JsonConverters.fromJson(json['ImageUrl'],'Uri',context!);
LengthInMinutes = json['LengthInMinutes'];
MaxNumberOfSpotsPerBooking = json['MaxNumberOfSpotsPerBooking'];
MinNumberOfSpotsPerBooking = json['MinNumberOfSpotsPerBooking'];
GroupBooking = JsonConverters.fromJson(json['GroupBooking'],'GroupBookingSettings',context!);
MultipleResource = JsonConverters.fromJson(json['MultipleResource'],'MultipleResourceSettings',context!);
IsGroupBooking = json['IsGroupBooking'];
IsPaymentEnabled = json['IsPaymentEnabled'];
return this;
}
Map<String, dynamic> toJson() => {
'Id': Id,
'Name': Name,
'Description': Description,
'ImageUrl': JsonConverters.toJson(ImageUrl,'Uri',context!),
'LengthInMinutes': LengthInMinutes,
'MaxNumberOfSpotsPerBooking': MaxNumberOfSpotsPerBooking,
'MinNumberOfSpotsPerBooking': MinNumberOfSpotsPerBooking,
'GroupBooking': JsonConverters.toJson(GroupBooking,'GroupBookingSettings',context!),
'MultipleResource': JsonConverters.toJson(MultipleResource,'MultipleResourceSettings',context!),
'IsGroupBooking': IsGroupBooking,
'IsPaymentEnabled': IsPaymentEnabled
};
getTypeName() => "ServiceInfoResponse";
TypeContext? context = _ctx;
}
class ServicePriceResponse implements IConvertible
{
/**
* The company id
*/
// @ApiMember(Description="The company id")
String? CompanyId;
/**
* The price id
*/
// @ApiMember(Description="The price id")
int? Id;
/**
* The service id
*/
// @ApiMember(Description="The service id")
int? ServiceId;
/**
* The price
*/
// @ApiMember(Description="The price")
double? Price;
/**
* The price calculation type id, 1 = Normal, price is for the service total duration, 2 = Price is per minute, 3 = Price is per hour, 4= Price is per day
*/
// @ApiMember(Description="The price calculation type id, 1 = Normal, price is for the service total duration, 2 = Price is per minute, 3 = Price is per hour, 4= Price is per day")
int? CalculationTypeId;
/**
* The price currency
*/
// @ApiMember(Description="The price currency")
String? CurrencyId;
/**
* The price sign
*/
// @ApiMember(Description="The price sign")
String? PriceSign;
/**
* The price VAT in percent
*/
// @ApiMember(Description="The price VAT in percent")
double? VAT;
/**
* The price category if price has a category
*/
// @ApiMember(Description="The price category if price has a category")
String? Category;
/**
* The price text to display
*/
// @ApiMember(Description="The price text to display")
String? PriceText;
/**
* The valid from date for the price.
*/
// @ApiMember(Description="The valid from date for the price.")
DateTime? From;
/**
* The valid to date for the price.
*/
// @ApiMember(Description="The valid to date for the price.")
DateTime? To;
/**
* If the price is only valid for specific days in week add a comma separated list of which days this day price belongs to, 1 = Monday .. 7 = Sunday. All old days connected will be removed on update.
*/
// @ApiMember(Description="If the price is only valid for specific days in week add a comma separated list of which days this day price belongs to, 1 = Monday .. 7 = Sunday. All old days connected will be removed on update.")
List<DayOfWeekDto>? DaysOfWeek;
/**
* If the price is only valid for specific days in week add a comma separated list of which days this day price belongs to, 1 = Monday .. 7 = Sunday. All old days connected will be removed on update.
*/
// @ApiMember(Description="If the price is only valid for specific days in week add a comma separated list of which days this day price belongs to, 1 = Monday .. 7 = Sunday. All old days connected will be removed on update.")
Duration? FromTime;
/**
* If the price is only valid for a specific time span during a time of day enter the FromTime and ToTime parameters.
*/
// @ApiMember(Description="If the price is only valid for a specific time span during a time of day enter the FromTime and ToTime parameters.")
Duration? ToTime;
ServiceInfoResponse? Service;
/**
* If the price is only valid for a specific time span
*/
// @ApiMember(Description="If the price is only valid for a specific time span")
bool? IsTimeSpecific;
/**
* If the price is only valid for specific days of week
*/
// @ApiMember(Description="If the price is only valid for specific days of week")
bool? IsDaysOfWeekSpecific;
ServicePriceResponse({this.CompanyId,this.Id,this.ServiceId,this.Price,this.CalculationTypeId,this.CurrencyId,this.PriceSign,this.VAT,this.Category,this.PriceText,this.From,this.To,this.DaysOfWeek,this.FromTime,this.ToTime,this.Service,this.IsTimeSpecific,this.IsDaysOfWeekSpecific});
ServicePriceResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
CompanyId = json['CompanyId'];
Id = json['Id'];
ServiceId = json['ServiceId'];
Price = JsonConverters.toDouble(json['Price']);
CalculationTypeId = json['CalculationTypeId'];
CurrencyId = json['CurrencyId'];
PriceSign = json['PriceSign'];
VAT = JsonConverters.toDouble(json['VAT']);
Category = json['Category'];
PriceText = json['PriceText'];
From = JsonConverters.fromJson(json['From'],'DateTime',context!);
To = JsonConverters.fromJson(json['To'],'DateTime',context!);
DaysOfWeek = JsonConverters.fromJson(json['DaysOfWeek'],'List<DayOfWeekDto>',context!);
FromTime = JsonConverters.fromJson(json['FromTime'],'Duration',context!);
ToTime = JsonConverters.fromJson(json['ToTime'],'Duration',context!);
Service = JsonConverters.fromJson(json['Service'],'ServiceInfoResponse',context!);
IsTimeSpecific = json['IsTimeSpecific'];
IsDaysOfWeekSpecific = json['IsDaysOfWeekSpecific'];
return this;
}
Map<String, dynamic> toJson() => {
'CompanyId': CompanyId,
'Id': Id,
'ServiceId': ServiceId,
'Price': Price,
'CalculationTypeId': CalculationTypeId,
'CurrencyId': CurrencyId,
'PriceSign': PriceSign,
'VAT': VAT,
'Category': Category,
'PriceText': PriceText,
'From': JsonConverters.toJson(From,'DateTime',context!),
'To': JsonConverters.toJson(To,'DateTime',context!),
'DaysOfWeek': JsonConverters.toJson(DaysOfWeek,'List<DayOfWeekDto>',context!),
'FromTime': JsonConverters.toJson(FromTime,'Duration',context!),
'ToTime': JsonConverters.toJson(ToTime,'Duration',context!),
'Service': JsonConverters.toJson(Service,'ServiceInfoResponse',context!),
'IsTimeSpecific': IsTimeSpecific,
'IsDaysOfWeekSpecific': IsDaysOfWeekSpecific
};
getTypeName() => "ServicePriceResponse";
TypeContext? context = _ctx;
}
// @ValidateRequest(Validator="IsAuthenticated")
class CreateServicePrice implements ICompany, IConvertible
{
/**
* The company id, if empty will use the company id for the user you are logged in with.
*/
// @ApiMember(Description="The company id, if empty will use the company id for the user you are logged in with.")
String? CompanyId;
/**
* The service id
*/
// @ApiMember(Description="The service id", IsRequired=true)
int? ServiceId;
/**
* The price
*/
// @ApiMember(Description="The price", IsRequired=true)
double? Price;
/**
* The price currency
*/
// @ApiMember(Description="The price currency", IsRequired=true)
String? CurrencyId;
/**
* The price calculation type id, 1 = Normal, price is for the service total duration, 2 = Price is per minute, 3 = Price is per hour, 4= Price is per day
*/
// @ApiMember(Description="The price calculation type id, 1 = Normal, price is for the service total duration, 2 = Price is per minute, 3 = Price is per hour, 4= Price is per day", IsRequired=true)
int? CalculationTypeId;
/**
* The price VAT in percent
*/
// @ApiMember(Description="The price VAT in percent", IsRequired=true)
double? VAT;
/**
* The price category if price has a category
*/
// @ApiMember(Description="The price category if price has a category")
String? Category;
/**
* The valid from date for the price.
*/
// @ApiMember(Description="The valid from date for the price.")
DateTime? From;
/**
* The valid to date for the price.
*/
// @ApiMember(Description="The valid to date for the price.")
DateTime? To;
/**
* If the price is only valid for specific days in week add a comma separated list of which days this day price belongs to, 1 = Monday .. 7 = Sunday. All old days connected will be removed on update.
*/
// @ApiMember(Description="If the price is only valid for specific days in week add a comma separated list of which days this day price belongs to, 1 = Monday .. 7 = Sunday. All old days connected will be removed on update.")
List<int>? DaysOfWeek;
/**
* If the price is only valid for specific days in week add a comma separated list of which days this day price belongs to, 1 = Monday .. 7 = Sunday. All old days connected will be removed on update.
*/
// @ApiMember(Description="If the price is only valid for specific days in week add a comma separated list of which days this day price belongs to, 1 = Monday .. 7 = Sunday. All old days connected will be removed on update.")
Duration? FromTime;
/**
* If the price is only valid for a specific time span during a time of day enter the FromTime and ToTime parameters.
*/
// @ApiMember(Description="If the price is only valid for a specific time span during a time of day enter the FromTime and ToTime parameters.")
Duration? ToTime;
CreateServicePrice({this.CompanyId,this.ServiceId,this.Price,this.CurrencyId,this.CalculationTypeId,this.VAT,this.Category,this.From,this.To,this.DaysOfWeek,this.FromTime,this.ToTime});
CreateServicePrice.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
CompanyId = json['CompanyId'];
ServiceId = json['ServiceId'];
Price = JsonConverters.toDouble(json['Price']);
CurrencyId = json['CurrencyId'];
CalculationTypeId = json['CalculationTypeId'];
VAT = JsonConverters.toDouble(json['VAT']);
Category = json['Category'];
From = JsonConverters.fromJson(json['From'],'DateTime',context!);
To = JsonConverters.fromJson(json['To'],'DateTime',context!);
DaysOfWeek = JsonConverters.fromJson(json['DaysOfWeek'],'List<int>',context!);
FromTime = JsonConverters.fromJson(json['FromTime'],'Duration',context!);
ToTime = JsonConverters.fromJson(json['ToTime'],'Duration',context!);
return this;
}
Map<String, dynamic> toJson() => {
'CompanyId': CompanyId,
'ServiceId': ServiceId,
'Price': Price,
'CurrencyId': CurrencyId,
'CalculationTypeId': CalculationTypeId,
'VAT': VAT,
'Category': Category,
'From': JsonConverters.toJson(From,'DateTime',context!),
'To': JsonConverters.toJson(To,'DateTime',context!),
'DaysOfWeek': JsonConverters.toJson(DaysOfWeek,'List<int>',context!),
'FromTime': JsonConverters.toJson(FromTime,'Duration',context!),
'ToTime': JsonConverters.toJson(ToTime,'Duration',context!)
};
getTypeName() => "CreateServicePrice";
TypeContext? context = _ctx;
}
TypeContext _ctx = TypeContext(library: 'api.bokamera.se', types: <String, TypeInfo> {
'DayOfWeekDto': TypeInfo(TypeOf.Class, create:() => DayOfWeekDto()),
'GroupBookingSettings': TypeInfo(TypeOf.Class, create:() => GroupBookingSettings()),
'MultipleResourceSettings': TypeInfo(TypeOf.Class, create:() => MultipleResourceSettings()),
'ServiceInfoResponse': TypeInfo(TypeOf.Class, create:() => ServiceInfoResponse()),
'Uri': TypeInfo(TypeOf.Class, create:() => Uri()),
'ServicePriceResponse': TypeInfo(TypeOf.Class, create:() => ServicePriceResponse()),
'List<DayOfWeekDto>': TypeInfo(TypeOf.Class, create:() => <DayOfWeekDto>[]),
'CreateServicePrice': TypeInfo(TypeOf.Class, create:() => CreateServicePrice()),
});
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 /services/prices/ HTTP/1.1
Host: api.bokamera.se
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
CompanyId: 00000000-0000-0000-0000-000000000000,
ServiceId: 0,
Price: 0,
CurrencyId: String,
CalculationTypeId: 0,
VAT: 0,
Category: String,
DaysOfWeek:
[
0
],
FromTime: PT0S,
ToTime: PT0S
}
HTTP/1.1 200 OK Content-Type: text/jsv Content-Length: length { Id: 0, ServiceId: 0, Price: 0, CalculationTypeId: 0, CurrencyId: String, PriceSign: String, VAT: 0, Category: String, PriceText: String, DaysOfWeek: [ { DayOfWeekId: 0, DotNetDayOfWeekId: 0, DayOfWeek: String } ], FromTime: PT0S, ToTime: PT0S, Service: { Id: 0, Name: String, Description: String, LengthInMinutes: 0, MaxNumberOfSpotsPerBooking: 0, MinNumberOfSpotsPerBooking: 0, GroupBooking: { Active: False, Min: 0, Max: 0 }, MultipleResource: { Active: False, Min: 0, Max: 0 }, IsGroupBooking: False, IsPaymentEnabled: False }, IsTimeSpecific: False, IsDaysOfWeekSpecific: False }