GET | /services/{ServiceId}/availabletimes | Get availabletimes for the service | Get availabletimes for the service and it's connected schedules |
---|
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 AvailableTimesQuery implements IInterval, IConvertible
{
/**
* Company to show services for
*/
// @ApiMember(Description="Company to show services for", ParameterType="query")
String? CompanyId;
/**
* Service id
*/
// @ApiMember(Description="Service id", IsRequired=true, ParameterType="path")
int? ServiceId;
/**
* From what datetime to show available times
*/
// @ApiMember(DataType="dateTime", Description="From what datetime to show available times", IsRequired=true, ParameterType="query")
DateTime? From;
/**
* To what datetime to show available times
*/
// @ApiMember(DataType="dateTime", Description="To what datetime to show available times", IsRequired=true, ParameterType="query")
DateTime? To;
/**
* Here you can select one of the resource in each resourcetype 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 resourcetype 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 resourcetype). Default is 1.
*/
// @ApiMember(Description="Here you select number of resources to book (in each resourcetype). Default is 1.", ParameterType="query")
int? NumberOfResources;
/**
* 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;
/**
* Both start and time time should be inside test interval. Default is false which means only start time needs to be inside.
*/
// @ApiMember(DataType="bool", Description="Both start and time time should be inside test interval. Default is false which means only start time needs to be inside.", ParameterType="query")
bool? InsideSearchInterval;
/**
* 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;
ResponseStatus? ResponseStatus;
AvailableTimesQuery({this.CompanyId,this.ServiceId,this.From,this.To,this.Resources,this.NumberOfResources,this.ShowPerResource,this.InsideSearchInterval,this.Duration,this.ResponseStatus});
AvailableTimesQuery.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'];
ShowPerResource = json['ShowPerResource'];
InsideSearchInterval = json['InsideSearchInterval'];
Duration = json['Duration'];
ResponseStatus = JsonConverters.fromJson(json['ResponseStatus'],'ResponseStatus',context!);
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,
'ShowPerResource': ShowPerResource,
'InsideSearchInterval': InsideSearchInterval,
'Duration': Duration,
'ResponseStatus': JsonConverters.toJson(ResponseStatus,'ResponseStatus',context!)
};
getTypeName() => "AvailableTimesQuery";
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()),
'AvailableTimesQuery': TypeInfo(TypeOf.Class, create:() => AvailableTimesQuery()),
'List<AvailableTimesResourceTypeResource>': TypeInfo(TypeOf.Class, create:() => <AvailableTimesResourceTypeResource>[]),
});
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.
GET /services/{ServiceId}/availabletimes HTTP/1.1 Host: api.bokamera.se Accept: text/jsv
HTTP/1.1 200 OK Content-Type: text/jsv Content-Length: length { ServiceId: 0, TimesFreeTextSingle: String, TimesFreeTextMultiple: String, Times: [ { Free: 0, FreeSpots: 0 } ] }