BokaMera.API.Host

<back to all web services

GetCurrentBookingReservation

The following routes are available for this service:
GET/bookingreservations/currentGet the caller's current booking reservation hold (from cookie)Resolves the caller's active reservation hold from the bm_hold cookie so a reopened browser or a second tab can resume the same hold instead of creating a second one. Returns the full selection (including the entered personal details) when the cookie proves this browser owns the hold. 404 when there is no active hold, in which case the stale cookie is cleared.
import 'package:servicestack/servicestack.dart';

class BookingReservationResponse implements IConvertible
{
    /**
    * The opaque session key that identifies the reservation.
    */
    // @ApiMember(Description="The opaque session key that identifies the reservation.")
    String SessionKey = "";

    /**
    * The company id.
    */
    // @ApiMember(Description="The company id.")
    String CompanyId = "";

    /**
    * The reserved service id.
    */
    // @ApiMember(Description="The reserved service id.")
    int ServiceId = 0;

    /**
    * The reservation start.
    */
    // @ApiMember(Description="The reservation start.")
    DateTime From = DateTime(0);

    /**
    * The reservation end.
    */
    // @ApiMember(Description="The reservation end.")
    DateTime To = DateTime(0);

    /**
    * The BookingReservationStatus value.
    */
    // @ApiMember(Description="The BookingReservationStatus value.")
    int StatusCode = 0;

    /**
    * The BookingReservationStatus name.
    */
    // @ApiMember(Description="The BookingReservationStatus name.")
    String StatusName = "";

    /**
    * When the hold expires (company-local time).
    */
    // @ApiMember(Description="When the hold expires (company-local time).")
    DateTime ExpirationDatetime = DateTime(0);

    /**
    * The company's current time, in the same company-local frame as ExpirationDatetime. Clients compute the remaining hold as (ExpirationDatetime - ServerTime) so a countdown is correct regardless of the viewer's timezone or clock skew.
    */
    // @ApiMember(Description="The company's current time, in the same company-local frame as ExpirationDatetime. Clients compute the remaining hold as (ExpirationDatetime - ServerTime) so a countdown is correct regardless of the viewer's timezone or clock skew.")
    DateTime ServerTime = DateTime(0);

    /**
    * Number of reserved spots.
    */
    // @ApiMember(Description="Number of reserved spots.")
    int NumberOfBookedSpots = 0;

    /**
    * The computed price of the reservation, if any.
    */
    // @ApiMember(Description="The computed price of the reservation, if any.")
    double? Price;

    /**
    * The currency of the price, if any.
    */
    // @ApiMember(Description="The currency of the price, if any.")
    String CurrencyId = "";

    /**
    * Ids of the resources held by the reservation.
    */
    // @ApiMember(Description="Ids of the resources held by the reservation.")
    List<int> ResourceIds = [];

    /**
    * The full in-progress selection payload (wizard/session state) as JSON.
    */
    // @ApiMember(Description="The full in-progress selection payload (wizard/session state) as JSON.")
    String SelectionPayload = "";

    ResponseStatus ResponseStatus;

    BookingReservationResponse({this.SessionKey,this.CompanyId,this.ServiceId,this.From,this.To,this.StatusCode,this.StatusName,this.ExpirationDatetime,this.ServerTime,this.NumberOfBookedSpots,this.Price,this.CurrencyId,this.ResourceIds,this.SelectionPayload,this.ResponseStatus});
    BookingReservationResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        SessionKey = json['SessionKey'];
        CompanyId = json['CompanyId'];
        ServiceId = json['ServiceId'];
        From = JsonConverters.fromJson(json['From'],'DateTime',context!);
        To = JsonConverters.fromJson(json['To'],'DateTime',context!);
        StatusCode = json['StatusCode'];
        StatusName = json['StatusName'];
        ExpirationDatetime = JsonConverters.fromJson(json['ExpirationDatetime'],'DateTime',context!);
        ServerTime = JsonConverters.fromJson(json['ServerTime'],'DateTime',context!);
        NumberOfBookedSpots = json['NumberOfBookedSpots'];
        Price = JsonConverters.toDouble(json['Price']);
        CurrencyId = json['CurrencyId'];
        ResourceIds = JsonConverters.fromJson(json['ResourceIds'],'List<int>',context!);
        SelectionPayload = json['SelectionPayload'];
        ResponseStatus = JsonConverters.fromJson(json['ResponseStatus'],'ResponseStatus',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'SessionKey': SessionKey,
        'CompanyId': CompanyId,
        'ServiceId': ServiceId,
        'From': JsonConverters.toJson(From,'DateTime',context!),
        'To': JsonConverters.toJson(To,'DateTime',context!),
        'StatusCode': StatusCode,
        'StatusName': StatusName,
        'ExpirationDatetime': JsonConverters.toJson(ExpirationDatetime,'DateTime',context!),
        'ServerTime': JsonConverters.toJson(ServerTime,'DateTime',context!),
        'NumberOfBookedSpots': NumberOfBookedSpots,
        'Price': Price,
        'CurrencyId': CurrencyId,
        'ResourceIds': JsonConverters.toJson(ResourceIds,'List<int>',context!),
        'SelectionPayload': SelectionPayload,
        'ResponseStatus': JsonConverters.toJson(ResponseStatus,'ResponseStatus',context!)
    };

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

// @ApiResponse(Description="No active reservation hold for the caller", StatusCode=404)
class GetCurrentBookingReservation 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;

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

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

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

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

TypeContext _ctx = TypeContext(library: 'testapi.bokamera.se', types: <String, TypeInfo> {
    'BookingReservationResponse': TypeInfo(TypeOf.Class, create:() => BookingReservationResponse()),
    'GetCurrentBookingReservation': TypeInfo(TypeOf.Class, create:() => GetCurrentBookingReservation()),
});

Dart GetCurrentBookingReservation 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.

GET /bookingreservations/current HTTP/1.1 
Host: testapi.bokamera.se 
Accept: application/json
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: length

{"ServiceId":0,"StatusCode":0,"StatusName":"String","NumberOfBookedSpots":0,"Price":0,"CurrencyId":"String","ResourceIds":[0],"SelectionPayload":"String","ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}}}