BokaMera.API.Host

<back to all web services

NextFreeTimeQuery

The following routes are available for this service:
GET/services/{ServiceId}/nextfreetimeGet the next available time for the serviceGet 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>[]),
});

Dart NextFreeTimeQuery DTOs

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

HTTP + XML

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: application/xml
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length

<AvailableTimesResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/BokaMera.API.ServiceModel.Dtos">
  <CompanyId>00000000-0000-0000-0000-000000000000</CompanyId>
  <ServiceId>0</ServiceId>
  <Times>
    <AvailableTimesSum>
      <ExceptionTexts i:nil="true" />
      <Free>0</Free>
      <FreeSpots>0</FreeSpots>
      <From>0001-01-01T00:00:00</From>
      <To>0001-01-01T00:00:00</To>
    </AvailableTimesSum>
  </Times>
  <TimesFreeTextMultiple>String</TimesFreeTextMultiple>
  <TimesFreeTextSingle>String</TimesFreeTextSingle>
</AvailableTimesResponse>