GET | /services/{ServiceId}/nextfreetime | Get the next available time for the service | Get the next available time for the service |
---|
import 'package:servicestack/servicestack.dart';
class ExceptionText implements IConvertible
{
String? Reason;
String? ReasonPublic;
ExceptionText({this.Reason,this.ReasonPublic});
ExceptionText.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
Reason = json['Reason'];
ReasonPublic = json['ReasonPublic'];
return this;
}
Map<String, dynamic> toJson() => {
'Reason': Reason,
'ReasonPublic': ReasonPublic
};
getTypeName() => "ExceptionText";
TypeContext? context = _ctx;
}
class AvailableTimesSum implements IAvailableTime, IConvertible
{
DateTime? From;
DateTime? To;
int? Free;
int? FreeSpots;
List<ExceptionText>? ExceptionTexts;
AvailableTimesSum({this.From,this.To,this.Free,this.FreeSpots,this.ExceptionTexts});
AvailableTimesSum.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
From = JsonConverters.fromJson(json['From'],'DateTime',context!);
To = JsonConverters.fromJson(json['To'],'DateTime',context!);
Free = json['Free'];
FreeSpots = json['FreeSpots'];
ExceptionTexts = JsonConverters.fromJson(json['ExceptionTexts'],'List<ExceptionText>',context!);
return this;
}
Map<String, dynamic> toJson() => {
'From': JsonConverters.toJson(From,'DateTime',context!),
'To': JsonConverters.toJson(To,'DateTime',context!),
'Free': Free,
'FreeSpots': FreeSpots,
'ExceptionTexts': JsonConverters.toJson(ExceptionTexts,'List<ExceptionText>',context!)
};
getTypeName() => "AvailableTimesSum";
TypeContext? context = _ctx;
}
class AvailableTimesResponse implements IConvertible
{
String? CompanyId;
int? ServiceId;
String? TimesFreeTextSingle;
String? TimesFreeTextMultiple;
List<AvailableTimesSum>? Times;
AvailableTimesResponse({this.CompanyId,this.ServiceId,this.TimesFreeTextSingle,this.TimesFreeTextMultiple,this.Times});
AvailableTimesResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
CompanyId = json['CompanyId'];
ServiceId = json['ServiceId'];
TimesFreeTextSingle = json['TimesFreeTextSingle'];
TimesFreeTextMultiple = json['TimesFreeTextMultiple'];
Times = JsonConverters.fromJson(json['Times'],'List<AvailableTimesSum>',context!);
return this;
}
Map<String, dynamic> toJson() => {
'CompanyId': CompanyId,
'ServiceId': ServiceId,
'TimesFreeTextSingle': TimesFreeTextSingle,
'TimesFreeTextMultiple': TimesFreeTextMultiple,
'Times': JsonConverters.toJson(Times,'List<AvailableTimesSum>',context!)
};
getTypeName() => "AvailableTimesResponse";
TypeContext? context = _ctx;
}
class AvailableTimesResourceTypeResource implements IConvertible
{
/**
* The resourcetype id
*/
// @ApiMember(Description="The resourcetype id")
int? ResourceTypeId;
/**
* The resource id
*/
// @ApiMember(Description="The resource id")
int? ResourceId;
AvailableTimesResourceTypeResource({this.ResourceTypeId,this.ResourceId});
AvailableTimesResourceTypeResource.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
ResourceTypeId = json['ResourceTypeId'];
ResourceId = json['ResourceId'];
return this;
}
Map<String, dynamic> toJson() => {
'ResourceTypeId': ResourceTypeId,
'ResourceId': ResourceId
};
getTypeName() => "AvailableTimesResourceTypeResource";
TypeContext? context = _ctx;
}
class NextFreeTimeQuery implements IInterval, IConvertible
{
/**
* Company to show available time for
*/
// @ApiMember(Description="Company to show available time for", ParameterType="query")
String? CompanyId;
/**
* Service id
*/
// @ApiMember(Description="Service id", IsRequired=true, ParameterType="path")
int? ServiceId;
/**
* From what datetime to search available times
*/
// @ApiMember(DataType="dateTime", Description="From what datetime to search available times", IsRequired=true, ParameterType="query")
DateTime? From;
/**
* To what datetime to show available times. Optional, if no datetime is set it will search one year
*/
// @ApiMember(DataType="dateTime", Description="To what datetime to show available times. Optional, if no datetime is set it will search one year", IsRequired=true, ParameterType="query")
DateTime? To;
/**
* Here you can select one of the resource in each resource type connected to the service, if none is selected it will show available times for all
*/
// @ApiMember(Description="Here you can select one of the resource in each resource type connected to the service, if none is selected it will show available times for all", ParameterType="query")
List<AvailableTimesResourceTypeResource>? Resources;
/**
* Here you select number of resources to book (in each resource type). Default is 1.
*/
// @ApiMember(Description="Here you select number of resources to book (in each resource type). Default is 1.", ParameterType="query")
int? NumberOfResources;
/**
* The duration you want to book. Needs to withing the service Min and Max. If not set it will use the service duration
*/
// @ApiMember(DataType="bool", Description="The duration you want to book. Needs to withing the service Min and Max. If not set it will use the service duration", ParameterType="query")
int? Duration;
/**
* If you want to include the connected resource types and resources
*/
// @ApiMember(Description="If you want to include the connected resource types and resources", ParameterType="query")
bool? ShowPerResource;
NextFreeTimeQuery({this.CompanyId,this.ServiceId,this.From,this.To,this.Resources,this.NumberOfResources,this.Duration,this.ShowPerResource});
NextFreeTimeQuery.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
CompanyId = json['CompanyId'];
ServiceId = json['ServiceId'];
From = JsonConverters.fromJson(json['From'],'DateTime',context!);
To = JsonConverters.fromJson(json['To'],'DateTime',context!);
Resources = JsonConverters.fromJson(json['Resources'],'List<AvailableTimesResourceTypeResource>',context!);
NumberOfResources = json['NumberOfResources'];
Duration = json['Duration'];
ShowPerResource = json['ShowPerResource'];
return this;
}
Map<String, dynamic> toJson() => {
'CompanyId': CompanyId,
'ServiceId': ServiceId,
'From': JsonConverters.toJson(From,'DateTime',context!),
'To': JsonConverters.toJson(To,'DateTime',context!),
'Resources': JsonConverters.toJson(Resources,'List<AvailableTimesResourceTypeResource>',context!),
'NumberOfResources': NumberOfResources,
'Duration': Duration,
'ShowPerResource': ShowPerResource
};
getTypeName() => "NextFreeTimeQuery";
TypeContext? context = _ctx;
}
TypeContext _ctx = TypeContext(library: 'api.bokamera.se', types: <String, TypeInfo> {
'ExceptionText': TypeInfo(TypeOf.Class, create:() => ExceptionText()),
'AvailableTimesSum': TypeInfo(TypeOf.Class, create:() => AvailableTimesSum()),
'List<ExceptionText>': TypeInfo(TypeOf.Class, create:() => <ExceptionText>[]),
'AvailableTimesResponse': TypeInfo(TypeOf.Class, create:() => AvailableTimesResponse()),
'List<AvailableTimesSum>': TypeInfo(TypeOf.Class, create:() => <AvailableTimesSum>[]),
'AvailableTimesResourceTypeResource': TypeInfo(TypeOf.Class, create:() => AvailableTimesResourceTypeResource()),
'NextFreeTimeQuery': TypeInfo(TypeOf.Class, create:() => NextFreeTimeQuery()),
'List<AvailableTimesResourceTypeResource>': TypeInfo(TypeOf.Class, create:() => <AvailableTimesResourceTypeResource>[]),
});
To override the Content-type in your clients, use the HTTP Accept Header, append the .csv suffix or ?format=csv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
GET /services/{ServiceId}/nextfreetime HTTP/1.1 Host: api.bokamera.se Accept: text/csv
HTTP/1.1 200 OK Content-Type: text/csv Content-Length: length {"ServiceId":0,"TimesFreeTextSingle":"String","TimesFreeTextMultiple":"String","Times":[{"Free":0,"FreeSpots":0}]}