BokaMera.API.Host

<back to all web services

AddResourceToBooking

Requires Authentication
Requires any of the roles:bookingsupplier-administrator-write, superadmin
The following routes are available for this service:
POST/bookings/{Id}/resourceAdd a resource to a bookingUpdates an existing booking with a new resource tharet must be avaialable (not booked or occupied).

export enum BookingStatusEnum
{
    Booked = 1,
    Unbooked = 2,
    Reserved = 3,
    Canceled = 4,
    AwaitingPayment = 5,
    AwaitingPaymentNoTimeLimit = 6,
    Payed = 7,
    AwaitingPaymentRequestFromAdmin = 8,
    AwaitingPaymentFromProvider = 9,
    Invoiced = 10,
}

export class BookingStatusQueryResponse
{
    public Id: number;
    public Name: string;
    public Description: string;
    public Icon: string;
    public Color: string;

    public constructor(init?: Partial<BookingStatusQueryResponse>) { (Object as any).assign(this, init); }
}

export class CustomFieldValueResponse
{
    public Value: string;

    public constructor(init?: Partial<CustomFieldValueResponse>) { (Object as any).assign(this, init); }
}

export class CustomFieldConfigData
{
    /** @description Custom field id */
    // @ApiMember(Description="Custom field id")
    public Id: number;

    /** @description Configuration name. Example: 'Number of persons'. */
    // @ApiMember(Description="Configuration name. Example: 'Number of persons'.")
    public Name: string;

    /** @description Custom field description. Example: 'For how many persons is this booking?' */
    // @ApiMember(Description="Custom field description. Example: 'For how many persons is this booking?'")
    public Description: string;

    /** @description Field width. Example: 20 for 20px */
    // @ApiMember(Description="Field width. Example: 20 for 20px")
    public Width?: number;

    /** @description Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox' */
    // @ApiMember(Description="Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'")
    public DataType: string;

    /** @description Default value of the field. Example: '3' */
    // @ApiMember(Description="Default value of the field. Example: '3'")
    public DefaultValue: string;

    /** @description Determines if the field is required to have a value or not */
    // @ApiMember(Description="Determines if the field is required to have a value or not")
    public IsMandatory: boolean;

    /** @description Error message shown to the user if the field data is required but not entered */
    // @ApiMember(Description="Error message shown to the user if the field data is required but not entered")
    public MandatoryErrorMessage: string;

    /** @description Max lenght of the field */
    // @ApiMember(Description="Max lenght of the field")
    public MaxLength: number;

    /** @description If the field should have multiple lines */
    // @ApiMember(Description="If the field should have multiple lines")
    public MultipleLineText: boolean;

    /** @description Regular expression used for validation of the field */
    // @ApiMember(Description="Regular expression used for validation of the field")
    public RegEx: string;

    /** @description Error message shown if the regular expression validation failed */
    // @ApiMember(Description="Error message shown if the regular expression validation failed")
    public RegExErrorMessage: string;

    /** @description The values to select from if Datatype is DropDown for this custom field */
    // @ApiMember(Description="The values to select from if Datatype is DropDown for this custom field")
    public Values: CustomFieldValueResponse[];

    public constructor(init?: Partial<CustomFieldConfigData>) { (Object as any).assign(this, init); }
}

export class CustomFieldDataResponse
{
    public Id: number;
    public Column: string;
    public Name: string;
    public Description: string;
    public Value: string;
    /** @description Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox' */
    // @ApiMember(Description="Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'")
    public DataType: string;

    public constructor(init?: Partial<CustomFieldDataResponse>) { (Object as any).assign(this, init); }
}

export class BookedResource
{
    public Id: number;
    public Name: string;
    public Color: string;
    public ImageUrl: string;
    public Email: string;
    public MobilePhone: string;
    public AccessGroup: string;
    public EmailNotification: boolean;
    public SMSNotification: boolean;
    public EmailReminder: boolean;
    public SMSReminder: boolean;

    public constructor(init?: Partial<BookedResource>) { (Object as any).assign(this, init); }
}

export class BookedResourceType
{
    /** @description The resource type id */
    // @ApiMember(Description="The resource type id")
    public Id: number;

    /** @description The resource type name */
    // @ApiMember(Description="The resource type name")
    public Name: string;

    /** @description The resources inside resource type */
    // @ApiMember(Description="The resources inside resource type")
    public Resources: BookedResource[];

    public constructor(init?: Partial<BookedResourceType>) { (Object as any).assign(this, init); }
}

export class BookedCompany
{
    public Id: string;
    public Name: string;
    public LogoType: string;
    public Category: string;
    public Street1: string;
    public Street2: string;
    public ZipCode: string;
    public City: string;
    public CountryId: string;
    public Longitude: string;
    public Latitude: string;
    public Phone: string;
    public Email: string;
    public HomePage: string;
    public SitePath: string;
    public IsFavorite: boolean;
    public PaymentProviderId?: number;

    public constructor(init?: Partial<BookedCompany>) { (Object as any).assign(this, init); }
}

export class BookedCustomer
{
    public Id: string;
    public Firstname: string;
    public Lastname: string;
    public Email: string;
    public Phone: string;
    public FacebookUserName: string;
    public ImageUrl: string;
    public CorporateIdentityNumber: string;
    public InvoiceAddress1: string;
    public InvoiceAddress2: string;
    public InvoiceCity: string;
    public InvoicePostalCode: string;
    public InvoiceCountryCode: string;

    public constructor(init?: Partial<BookedCustomer>) { (Object as any).assign(this, init); }
}

export class BookedQuantity
{
    /** @description The quantity Id */
    // @ApiMember(Description="The quantity Id")
    public Id: number;

    /** @description The quantity for booked on this price category */
    // @ApiMember(Description="The quantity for booked on this price category")
    public Quantity: number;

    /** @description The price */
    // @ApiMember(Description="The price")
    public Price?: number;

    /** @description The price bofore rebate codes */
    // @ApiMember(Description="The price bofore rebate codes")
    public PriceBeforeRebate?: number;

    /** @description The price currency */
    // @ApiMember(Description="The price currency")
    public CurrencyId: string;

    /** @description The price sign */
    // @ApiMember(Description="The price sign")
    public PriceSign: string;

    /** @description The price category */
    // @ApiMember(Description="The price category")
    public Category: string;

    /** @description The price VAT in percent */
    // @ApiMember(Description="The price VAT in percent")
    public VAT?: number;

    /** @description The price text to display */
    // @ApiMember(Description="The price text to display")
    public PriceText: string;

    /** @description If the quantity you add should occupy a spot. Default is true. If no it will only be a row that includes price information. */
    // @ApiMember(Description="If the quantity you add should occupy a spot. Default is true. If no it will only be a row that includes price information.")
    public OccupiesSpot: boolean;

    public constructor(init?: Partial<BookedQuantity>) { (Object as any).assign(this, init); }
}

export class GroupBookingSettings
{
    public Active: boolean;
    public Min: number;
    public Max: number;

    public constructor(init?: Partial<GroupBookingSettings>) { (Object as any).assign(this, init); }
}

export class MultipleResourceSettings
{
    public Active: boolean;
    public Min: number;
    public Max: number;

    public constructor(init?: Partial<MultipleResourceSettings>) { (Object as any).assign(this, init); }
}

export class ServiceInfoResponse
{
    public Id: number;
    public Name: string;
    public Description: string;
    public ImageUrl: string;
    public LengthInMinutes?: number;
    public MaxNumberOfSpotsPerBooking: number;
    public MinNumberOfSpotsPerBooking: number;
    public GroupBooking: GroupBookingSettings;
    public MultipleResource: MultipleResourceSettings;
    public IsGroupBooking: boolean;
    public IsPaymentEnabled: boolean;

    public constructor(init?: Partial<ServiceInfoResponse>) { (Object as any).assign(this, init); }
}

export class BookingLogEventTypeResponse
{
    /** @description The event type id */
    // @ApiMember(Description="The event type id")
    public Id: number;

    /** @description The event type name */
    // @ApiMember(Description="The event type name")
    public Name: string;

    /** @description The event type description */
    // @ApiMember(Description="The event type description")
    public Description: string;

    public constructor(init?: Partial<BookingLogEventTypeResponse>) { (Object as any).assign(this, init); }
}

export class BookingLogQueryResponse
{
    /** @description The booking log id */
    // @ApiMember(Description="The booking log id")
    public Id: number;

    /** @description The booking id */
    // @ApiMember(Description="The booking id")
    public BookingId: number;

    /** @description The type of event */
    // @ApiMember(Description="The type of event")
    public EventTypeId: number;

    /** @description The type of event */
    // @ApiMember(Description="The type of event")
    public EventType: BookingLogEventTypeResponse;

    /** @description Comments that could be added to the event log item */
    // @ApiMember(Description="Comments that could be added to the event log item")
    public Comments: string;

    /** @description The user created the event */
    // @ApiMember(Description="The user created the event")
    public UserName: string;

    /** @description Then date when the event occured */
    // @ApiMember(Description="Then date when the event occured")
    public Created: string;

    public constructor(init?: Partial<BookingLogQueryResponse>) { (Object as any).assign(this, init); }
}

export class CurrencyInfoResponse
{
    /** @description The currency id */
    // @ApiMember(Description="The currency id")
    public Id: string;

    /** @description The currency id */
    // @ApiMember(Description="The currency id")
    public Name: string;

    /** @description The currency id */
    // @ApiMember(Description="The currency id")
    public CurrencySign: string;

    public constructor(init?: Partial<CurrencyInfoResponse>) { (Object as any).assign(this, init); }
}

export class BookingPaymentLogQueryResponse
{
    /** @description The booking payment log id */
    // @ApiMember(Description="The booking payment log id")
    public Id: number;

    /** @description The booking id */
    // @ApiMember(Description="The booking id")
    public BookingId: number;

    /** @description The payment reference id */
    // @ApiMember(Description="The payment reference id")
    public PaymentReferenceId: string;

    /** @description The payment order item reference id */
    // @ApiMember(Description="The payment order item reference id")
    public OrderItemReferenceId: string;

    /** @description The payment reference id */
    // @ApiMember(Description="The payment reference id")
    public PaymentProviderId?: number;

    /** @description The payment amount */
    // @ApiMember(Description="The payment amount")
    public Amount: number;

    /** @description The payment VAT in percent */
    // @ApiMember(Description="The payment VAT in percent")
    public VAT: number;

    /** @description The payment amount that is credited */
    // @ApiMember(Description="The payment amount that is credited")
    public AmountCredited: number;

    /** @description The payment currency id */
    // @ApiMember(Description="The payment currency id")
    public CurrencyId: string;

    /** @description The payment currency info */
    // @ApiMember(Description="The payment currency info")
    public CurrencyInfo: CurrencyInfoResponse;

    /** @description Comments that could be added to the event log item */
    // @ApiMember(Description="Comments that could be added to the event log item")
    public Comments: string;

    /** @description The date when the payment items was created */
    // @ApiMember(Description="The date when the payment items was created")
    public Created: string;

    /** @description The date when the payment items was update */
    // @ApiMember(Description="The date when the payment items was update")
    public Updated: string;

    public constructor(init?: Partial<BookingPaymentLogQueryResponse>) { (Object as any).assign(this, init); }
}

export class BookingCheckoutQueryResponse
{
    /** @description The checkout id */
    // @ApiMember(Description="The checkout id")
    public Id: string;

    /** @description The booking id */
    // @ApiMember(Description="The booking id")
    public BookingId: number;

    /** @description The purchase id */
    // @ApiMember(Description="The purchase id")
    public PurchaseId?: number;

    /** @description The payment checkout expiration datetime */
    // @ApiMember(Description="The payment checkout expiration datetime")
    public ExpirationTime?: string;

    /** @description The payment snippet code */
    // @ApiMember(Description="The payment snippet code")
    public Snippet: string;

    /** @description The payment status */
    // @ApiMember(Description="The payment status")
    public Status: string;

    /** @description Log message */
    // @ApiMember(Description="Log message")
    public Message: string;

    /** @description When the checkout log item was created */
    // @ApiMember(Description="When the checkout log item was created")
    public Created: string;

    /** @description When the checkout log item was updated */
    // @ApiMember(Description="When the checkout log item was updated")
    public Updated: string;

    public constructor(init?: Partial<BookingCheckoutQueryResponse>) { (Object as any).assign(this, init); }
}

export class ExternalReferenceResponse
{
    public CompanyId: string;
    public Id: string;
    public OwnerId: string;
    public ReferenceType: string;
    public ExternalData: string;
    public CreatedBy: string;
    public Updated: string;
    public Created: string;

    public constructor(init?: Partial<ExternalReferenceResponse>) { (Object as any).assign(this, init); }
}

export class BookingCalendarExportStatus
{
    public CalendarId: string;
    public BookingId: number;
    public Synced?: boolean;

    public constructor(init?: Partial<BookingCalendarExportStatus>) { (Object as any).assign(this, init); }
}

export class BookingQueryResponse
{
    public Id: number;
    public CompanyId: string;
    public From: string;
    public To: string;
    public Status: BookingStatusEnum;
    public StatusId: number;
    public StatusName: string;
    public StatusInfo: BookingStatusQueryResponse;
    public SendEmailReminder: boolean;
    public SendSmsReminder: boolean;
    public SendSmsConfirmation: boolean;
    public SendEmailConfirmation: boolean;
    public LastTimeToUnBook?: string;
    public CustomFields: CustomFieldConfigData[];
    public CustomFieldValues: CustomFieldDataResponse[];
    public BookedResourceTypes: BookedResourceType[];
    public Company: BookedCompany;
    public Customer: BookedCustomer;
    public Quantities: BookedQuantity[];
    public Service: ServiceInfoResponse;
    public PaymentExpiration?: string;
    public Log: BookingLogQueryResponse[];
    public PaymentLog: BookingPaymentLogQueryResponse[];
    public CheckoutLog: BookingCheckoutQueryResponse[];
    public ExternalReference: ExternalReferenceResponse[];
    public ResponseStatus: ResponseStatus;
    public CalendarExportStatus: BookingCalendarExportStatus;
    public LengthInMinutes?: number;
    public BookedBy: string;
    public BookedComments: string;
    public UnbookedComments: string;
    public CommentsToCustomer: string;
    public CreatedDate: string;
    public UpdatedDate: string;
    public UnbookedOn?: string;
    public CancellationCode: string;
    public RatingCode: string;

    public constructor(init?: Partial<BookingQueryResponse>) { (Object as any).assign(this, init); }
}

// @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
// @ApiResponse(Description="You have too low privilegies to call this service", StatusCode=403)
// @ValidateRequest(Validator="IsAuthenticated")
export class AddResourceToBooking implements ICompany
{
    /** @description 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.")
    public CompanyId?: string;

    /** @description Id of the booking */
    // @ApiMember(Description="Id of the booking", IsRequired=true, ParameterType="path")
    public Id: number;

    /** @description The resource type id */
    // @ApiMember(Description="The resource type id")
    public ResourceTypeId: number;

    /** @description The resource id */
    // @ApiMember(Description="The resource id")
    public ResourceId: number;

    public constructor(init?: Partial<AddResourceToBooking>) { (Object as any).assign(this, init); }
}

TypeScript AddResourceToBooking 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.

POST /bookings/{Id}/resource HTTP/1.1 
Host: api.bokamera.se 
Accept: application/json
Content-Type: application/json
Content-Length: length

{"CompanyId":"00000000-0000-0000-0000-000000000000","Id":0,"ResourceTypeId":0,"ResourceId":0}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: length

{"Id":0,"Status":"Booked","StatusId":0,"StatusName":"String","StatusInfo":{"Id":0,"Name":"String","Description":"String","Icon":"String","Color":"String"},"SendEmailReminder":false,"SendSmsReminder":false,"SendSmsConfirmation":false,"SendEmailConfirmation":false,"LastTimeToUnBook":"0001-01-01T00:00:00","CustomFields":[{"Id":0,"Name":"String","Description":"String","Width":0,"DataType":"String","DefaultValue":"String","IsMandatory":false,"MandatoryErrorMessage":"String","MaxLength":0,"MultipleLineText":false,"RegEx":"String","RegExErrorMessage":"String","Values":[{"Value":"String"}]}],"CustomFieldValues":[{"Id":0,"Column":"String","Name":"String","Description":"String","Value":"String","DataType":"String"}],"BookedResourceTypes":[{"Id":0,"Name":"String","Resources":[{"Id":0,"Name":"String","Color":"String","Email":"String","MobilePhone":"String","AccessGroup":"String","EmailNotification":false,"SMSNotification":false,"EmailReminder":false,"SMSReminder":false}]}],"Company":{"Name":"String","Category":"String","Street1":"String","Street2":"String","ZipCode":"String","City":"String","CountryId":"String","Longitude":"String","Latitude":"String","Phone":"String","Email":"String","HomePage":"String","SitePath":"String","IsFavorite":false,"PaymentProviderId":0},"Customer":{"Firstname":"String","Lastname":"String","Email":"String","Phone":"String","FacebookUserName":"String","ImageUrl":"String","CorporateIdentityNumber":"String","InvoiceAddress1":"String","InvoiceAddress2":"String","InvoiceCity":"String","InvoicePostalCode":"String","InvoiceCountryCode":"String"},"Quantities":[{"Id":0,"Quantity":0,"Price":0,"PriceBeforeRebate":0,"CurrencyId":"String","PriceSign":"String","Category":"String","VAT":0,"PriceText":"String","OccupiesSpot":false}],"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},"PaymentExpiration":"0001-01-01T00:00:00","Log":[{"Id":0,"BookingId":0,"EventTypeId":0,"EventType":{"Id":0,"Name":"String","Description":"String"},"Comments":"String","UserName":"String"}],"PaymentLog":[{"Id":0,"BookingId":0,"PaymentReferenceId":"String","OrderItemReferenceId":"String","PaymentProviderId":0,"Amount":0,"VAT":0,"AmountCredited":0,"CurrencyId":"String","CurrencyInfo":{"Id":"String","Name":"String","CurrencySign":"String"},"Comments":"String"}],"CheckoutLog":[{"BookingId":0,"PurchaseId":0,"ExpirationTime":"0001-01-01T00:00:00","Snippet":"String","Status":"String","Message":"String"}],"ExternalReference":[{"ReferenceType":"String","ExternalData":"String","CreatedBy":"String"}],"ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}},"CalendarExportStatus":{"CalendarId":"String","BookingId":0,"Synced":false},"LengthInMinutes":0,"BookedBy":"String","BookedComments":"String","UnbookedComments":"String","CommentsToCustomer":"String","UnbookedOn":"0001-01-01T00:00:00","CancellationCode":"String","RatingCode":"String"}