BokaMera.API.Host

<back to all web services

AddFavorite

Requires Authentication
The following routes are available for this service:
POST/users/favoriteAdd an company as favorite to the logged in userAdd an company as favorite to the logged in user.
namespace BokaMera.API.ServiceModel.Dtos

open System
open System.Collections
open System.Collections.Generic
open System.Runtime.Serialization
open ServiceStack
open ServiceStack.DataAnnotations

    type CodeLockSystemType =
        | Sample = 0
        | RcoM5 = 1
        | AxemaVaka = 2
        | VanderbiltOmnis = 3
        | ParakeyParakey = 4
        | AmidoDax = 5
        | TelkeyTelkey = 6
        | TechSolutionsSiedle = 7
        | Accessy = 8
        | Zesec = 9
        | Enabla = 10

    [<AllowNullLiteral>]
    type CompanyBookingSettings() = 
        member val EnableMobileApp:Boolean = new Boolean() with get,set
        member val BookingReceiptMessage:String = null with get,set
        member val ShowFreeTimesLeft:Boolean = new Boolean() with get,set
        member val EnableShowBookedTimes:Boolean = new Boolean() with get,set
        member val BookingAgreement:String = null with get,set
        ///<summary>
        ///The settings for how to display week number. 1 = ShowWeekNumberFromDate, 2 = ShowWeekNumberToDate, 3 = ShowWeekNumberFromToDate, 4 = DontShowWeekNumber  
        ///</summary>
        [<ApiMember(DataType="int", Description="The settings for how to display week number. 1 = ShowWeekNumberFromDate, 2 = ShowWeekNumberToDate, 3 = ShowWeekNumberFromToDate, 4 = DontShowWeekNumber  ")>]
        member val WeekNumberSetting:Int32 = new Int32() with get,set

        member val ShowBookedTimes:Boolean = new Boolean() with get,set
        ///<summary>
        ///The payment provider id. 1 = Payson Checkout 1.0, 2= Payson Checkout 2.0 ... To get the full payment provider for the company call GET /payment/settings
        ///</summary>
        [<ApiMember(Description="The payment provider id. 1 = Payson Checkout 1.0, 2= Payson Checkout 2.0 ... To get the full payment provider for the company call GET /payment/settings")>]
        member val PaymentProviderId:Int32 = new Int32() with get,set

        ///<summary>
        ///If it's only allowed for existing customers to book
        ///</summary>
        [<ApiMember(DataType="boolean", Description="If it's only allowed for existing customers to book")>]
        member val BookOnlyOnExistingCustomers:Boolean = new Boolean() with get,set

        ///<summary>
        ///If payment is enabled
        ///</summary>
        [<ApiMember(DataType="boolean", Description="If payment is enabled")>]
        member val PaymentEnabled:Boolean = new Boolean() with get,set

    [<AllowNullLiteral>]
    type CompanySystemSettings() = 
        ///<summary>
        ///If the booking is active or not
        ///</summary>
        [<ApiMember(DataType="bool", Description="If the booking is active or not")>]
        member val Active:Boolean = new Boolean() with get,set

        ///<summary>
        ///If the booking is not active, what message to show to the customers
        ///</summary>
        [<ApiMember(DataType="string", Description="If the booking is not active, what message to show to the customers")>]
        member val InactiveMessage:String = null with get,set

        ///<summary>
        ///If the company should be visible in search results on hompage
        ///</summary>
        [<ApiMember(DataType="bool", Description="If the company should be visible in search results on hompage")>]
        member val Searchable:Boolean = new Boolean() with get,set

        ///<summary>
        ///If you have a google analytics account and want to track your customers behaviors.
        ///</summary>
        [<ApiMember(DataType="string", Description="If you have a google analytics account and want to track your customers behaviors.")>]
        member val GATrackingId:String = null with get,set

        ///<summary>
        ///If you have a google Ads Conversion Id account and want to track your customers behaviors.
        ///</summary>
        [<ApiMember(DataType="string", Description="If you have a google Ads Conversion Id account and want to track your customers behaviors.")>]
        member val GoogleAdsConversionId:String = null with get,set

        ///<summary>
        ///If you have a LinkedIn account and want to track your customers behaviors.
        ///</summary>
        [<ApiMember(DataType="string", Description="If you have a LinkedIn account and want to track your customers behaviors.")>]
        member val LinkedinTagId:String = null with get,set

        ///<summary>
        ///If you have a Google Ads Conversion Label and want to track your customers behaviors.
        ///</summary>
        [<ApiMember(DataType="string", Description="If you have a Google Ads Conversion Label and want to track your customers behaviors.")>]
        member val GoogleAdsConversionLabel:String = null with get,set

        ///<summary>
        ///If you have a google tag manager account and want to track your customers behaviors.
        ///</summary>
        [<ApiMember(DataType="string", Description="If you have a google tag manager account and want to track your customers behaviors.")>]
        member val GTMTrackingId:String = null with get,set

        ///<summary>
        ///If you have a facebook account and want to track your customers behaviors.
        ///</summary>
        [<ApiMember(DataType="string", Description="If you have a facebook account and want to track your customers behaviors.")>]
        member val FacebookPixelId:String = null with get,set

        ///<summary>
        ///If you want your customers to be albe to change language on your homepage
        ///</summary>
        [<ApiMember(DataType="bool", Description="If you want your customers to be albe to change language on your homepage")>]
        member val MultiLanguage:Boolean = new Boolean() with get,set

        ///<summary>
        ///If the company should be visible on the marketplace
        ///</summary>
        [<ApiMember(DataType="bool", Description="If the company should be visible on the marketplace")>]
        member val ShowOnMarketplace:Boolean = new Boolean() with get,set

        ///<summary>
        ///If you want your own written text on your homepage to be translated using google analytics when a user changes language
        ///</summary>
        [<ApiMember(DataType="bool", Description="If you want your own written text on your homepage to be translated using google analytics when a user changes language")>]
        member val EnableAPITranslation:Boolean = new Boolean() with get,set

        ///<summary>
        ///What is the standard language your homepage information is written in. Select from the different countries, ie. SE,NO,EN
        ///</summary>
        [<ApiMember(DataType="string", Description="What is the standard language your homepage information is written in. Select from the different countries, ie. SE,NO,EN")>]
        member val DefaultLanguage:String = null with get,set

    [<AllowNullLiteral>]
    type CompanyWidgetSettings() = 
        ///<summary>
        ///The service layouts id.
        ///</summary>
        [<ApiMember(Description="The service layouts id.")>]
        member val ServiceLayoutId:Int32 = new Int32() with get,set

        ///<summary>
        ///The time layouts id.
        ///</summary>
        [<ApiMember(Description="The time layouts id.")>]
        member val TimeLayoutId:Int32 = new Int32() with get,set

        ///<summary>
        ///The booking layouts id.
        ///</summary>
        [<ApiMember(Description="The booking layouts id.")>]
        member val BookingLayoutId:Int32 = new Int32() with get,set

        ///<summary>
        ///The primary color of the booking widget.
        ///</summary>
        [<ApiMember(Description="The primary color of the booking widget.")>]
        member val PrimaryColor:String = null with get,set

        ///<summary>
        ///If you should show the service image in the booking widget.
        ///</summary>
        [<ApiMember(Description="If you should show the service image in the booking widget.")>]
        member val ShowServiceImage:Boolean = new Boolean() with get,set

        ///<summary>
        ///If you should show the rebate code field in the booking widget.
        ///</summary>
        [<ApiMember(Description="If you should show the rebate code field in the booking widget.")>]
        member val ShowRebateCodeField:Boolean = new Boolean() with get,set

        ///<summary>
        ///If you should show the next available time in the booking widget.
        ///</summary>
        [<ApiMember(Description="If you should show the next available time in the booking widget.")>]
        member val ShowNextAvailableTime:Boolean = new Boolean() with get,set

        ///<summary>
        ///If you should show the end time in the booking widget.
        ///</summary>
        [<ApiMember(Description="If you should show the end time in the booking widget.")>]
        member val ShowEndTime:Boolean = new Boolean() with get,set

        ///<summary>
        ///What text to show on booked time slots. Default text is Booked
        ///</summary>
        [<ApiMember(Description="What text to show on booked time slots. Default text is Booked")>]
        member val BookedTimeSlotText:String = null with get,set

        ///<summary>
        ///If the widget should be displayed in dark theme
        ///</summary>
        [<ApiMember(Description="If the widget should be displayed in dark theme")>]
        member val DarkTheme:Boolean = new Boolean() with get,set

    [<AllowNullLiteral>]
    type HomepageSettingsResponse() = 
        ///<summary>
        ///The text for homepage heading
        ///</summary>
        [<ApiMember(Description="The text for homepage heading")>]
        member val HomepageHeading:String = null with get,set

        ///<summary>
        ///The text for homepage startpage heading
        ///</summary>
        [<ApiMember(Description="The text for homepage startpage heading")>]
        member val WelcomePageHeading:String = null with get,set

        ///<summary>
        ///The text for homepage startpage body
        ///</summary>
        [<ApiMember(Description="The text for homepage startpage body")>]
        member val WelcomePageBody:String = null with get,set

        ///<summary>
        ///The text for homepage about us page heading
        ///</summary>
        [<ApiMember(Description="The text for homepage about us page heading")>]
        member val AboutUsPageHeading:String = null with get,set

        ///<summary>
        ///The text for homepage about us page body
        ///</summary>
        [<ApiMember(Description="The text for homepage about us page body")>]
        member val AboutUsPageBody:String = null with get,set

        ///<summary>
        ///The startpage image url
        ///</summary>
        [<ApiMember(Description="The startpage image url")>]
        member val ImageUrl:Uri = null with get,set

        ///<summary>
        ///The cover image url
        ///</summary>
        [<ApiMember(Description="The cover image url")>]
        member val CoverImage:Uri = null with get,set

        ///<summary>
        ///Show rating on the page
        ///</summary>
        [<ApiMember(Description="Show rating on the page")>]
        member val ShowRating:Boolean = new Boolean() with get,set

        ///<summary>
        ///The template for the homepage
        ///</summary>
        [<ApiMember(Description="The template for the homepage")>]
        member val HomePageTemplateId:Int32 = new Int32() with get,set

        ///<summary>
        ///The hero section style for the homepage
        ///</summary>
        [<ApiMember(Description="The hero section style for the homepage")>]
        member val HeroSectionStyleId:Int32 = new Int32() with get,set

        ///<summary>
        ///Enable the BokaMera Homepage
        ///</summary>
        [<ApiMember(Description="Enable the BokaMera Homepage")>]
        member val EnableHomepage:Boolean = new Boolean() with get,set

    [<AllowNullLiteral>]
    type CompanyRatingSummary() = 
        ///<summary>
        ///The average rating score
        ///</summary>
        [<ApiMember(Description="The average rating score")>]
        member val AverageScore:Double = new Double() with get,set

        ///<summary>
        ///The number of ratings of score 1
        ///</summary>
        [<ApiMember(Description="The number of ratings of score 1")>]
        member val RatingScore1Count:Int32 = new Int32() with get,set

        ///<summary>
        ///The number of ratings of score 2
        ///</summary>
        [<ApiMember(Description="The number of ratings of score 2")>]
        member val RatingScore2Count:Int32 = new Int32() with get,set

        ///<summary>
        ///The number of ratings of score 3
        ///</summary>
        [<ApiMember(Description="The number of ratings of score 3")>]
        member val RatingScore3Count:Int32 = new Int32() with get,set

        ///<summary>
        ///The number of ratings of score 4
        ///</summary>
        [<ApiMember(Description="The number of ratings of score 4")>]
        member val RaingScore4Count:Int32 = new Int32() with get,set

        ///<summary>
        ///The number of ratings of score 5
        ///</summary>
        [<ApiMember(Description="The number of ratings of score 5")>]
        member val RatingScore5Count:Int32 = new Int32() with get,set

        ///<summary>
        ///The number of ratings
        ///</summary>
        [<ApiMember(Description="The number of ratings")>]
        member val Count:Int32 = new Int32() with get,set

    [<AllowNullLiteral>]
    type RatingReviewResponse() = 
        ///<summary>
        ///The title for the review
        ///</summary>
        [<ApiMember(Description="The title for the review")>]
        member val Title:String = null with get,set

        ///<summary>
        ///The description for the review
        ///</summary>
        [<ApiMember(Description="The description for the review")>]
        member val Description:String = null with get,set

        ///<summary>
        ///The rating score
        ///</summary>
        [<ApiMember(Description="The rating score")>]
        member val RatingScore:Int32 = new Int32() with get,set

        ///<summary>
        ///The review author
        ///</summary>
        [<ApiMember(Description="The review author")>]
        member val Author:String = null with get,set

        ///<summary>
        ///The created date
        ///</summary>
        [<ApiMember(Description="The created date")>]
        member val Created:DateTime = new DateTime() with get,set

        ///<summary>
        ///The review answer from the company
        ///</summary>
        [<ApiMember(Description="The review answer from the company")>]
        member val ReviewAnswer:String = null with get,set

    [<AllowNullLiteral>]
    type CustomFieldValueResponse() = 
        member val Value:String = null with get,set

    [<AllowNullLiteral>]
    type CustomFieldConfigData() = 
        ///<summary>
        ///Custom field id
        ///</summary>
        [<ApiMember(Description="Custom field id")>]
        member val Id:Int32 = new Int32() with get,set

        ///<summary>
        ///Configuration name. Example: 'Number of persons'.
        ///</summary>
        [<ApiMember(Description="Configuration name. Example: 'Number of persons'.")>]
        member val Name:String = null with get,set

        ///<summary>
        ///Custom field description. Example: 'For how many persons is this booking?'
        ///</summary>
        [<ApiMember(Description="Custom field description. Example: 'For how many persons is this booking?'")>]
        member val Description:String = null with get,set

        ///<summary>
        ///Field width. Example: 20 for 20px
        ///</summary>
        [<ApiMember(Description="Field width. Example: 20 for 20px")>]
        member val Width:Nullable<Int32> = new Nullable<Int32>() with get,set

        ///<summary>
        ///Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'
        ///</summary>
        [<ApiMember(Description="Data field of custom field. Valid values are: TextBox, ... Example: 'TextBox'")>]
        member val DataType:String = null with get,set

        ///<summary>
        ///Default value of the field. Example: '3'
        ///</summary>
        [<ApiMember(Description="Default value of the field. Example: '3'")>]
        member val DefaultValue:String = null with get,set

        ///<summary>
        ///Determines if the field is required to have a value or not
        ///</summary>
        [<ApiMember(Description="Determines if the field is required to have a value or not")>]
        member val IsMandatory:Boolean = new Boolean() with get,set

        ///<summary>
        ///Error message shown to the user if the field data is required but not entered
        ///</summary>
        [<ApiMember(Description="Error message shown to the user if the field data is required but not entered")>]
        member val MandatoryErrorMessage:String = null with get,set

        ///<summary>
        ///Max lenght of the field
        ///</summary>
        [<ApiMember(Description="Max lenght of the field")>]
        member val MaxLength:Int32 = new Int32() with get,set

        ///<summary>
        ///If the field should have multiple lines
        ///</summary>
        [<ApiMember(Description="If the field should have multiple lines")>]
        member val MultipleLineText:Boolean = new Boolean() with get,set

        ///<summary>
        ///Regular expression used for validation of the field
        ///</summary>
        [<ApiMember(Description="Regular expression used for validation of the field")>]
        member val RegEx:String = null with get,set

        ///<summary>
        ///Error message shown if the regular expression validation failed
        ///</summary>
        [<ApiMember(Description="Error message shown if the regular expression validation failed")>]
        member val RegExErrorMessage:String = null with get,set

        ///<summary>
        ///The values to select from if Datatype is DropDown for this custom field
        ///</summary>
        [<ApiMember(Description="The values to select from if Datatype is DropDown for this custom field")>]
        member val Values:ResizeArray<CustomFieldValueResponse> = new ResizeArray<CustomFieldValueResponse>() with get,set

    [<AllowNullLiteral>]
    type CompanyQueryResponse() = 
        member val Id:Guid = new Guid() with get,set
        member val Name:String = null with get,set
        ///<summary>
        ///The organisation number will only be visible if your owner to the company
        ///</summary>
        [<ApiMember(DataType="string", Description="The organisation number will only be visible if your owner to the company")>]
        member val OrganisationNumber:String = null with get,set

        ///<summary>
        ///What type of company. If it's used for personal use or as a company.
        ///</summary>
        [<ApiMember(DataType="int", Description="What type of company. If it's used for personal use or as a company.")>]
        member val TypeId:Nullable<Int32> = new Nullable<Int32>() with get,set

        member val Details:String = null with get,set
        member val CategoryId:Int32 = new Int32() with get,set
        member val Category:String = null with get,set
        member val LogoType:Uri = null with get,set
        member val CoverImage:Uri = null with get,set
        member val Street1:String = null with get,set
        member val Street2:String = null with get,set
        member val ZipCode:String = null with get,set
        member val City:String = null with get,set
        member val CountryId:String = null with get,set
        member val Longitude:String = null with get,set
        member val Latitude:String = null with get,set
        member val Distance:Nullable<Double> = new Nullable<Double>() with get,set
        member val Phone:String = null with get,set
        member val Email:String = null with get,set
        member val Homepage:String = null with get,set
        member val SitePath:String = null with get,set
        member val Active:Boolean = new Boolean() with get,set
        member val CodeLockSystem:Nullable<CodeLockSystemType> = new Nullable<CodeLockSystemType>() with get,set
        member val IsFreeAccount:Boolean = new Boolean() with get,set
        ///<summary>
        ///Will show when the company was updated, note it will only be shown if your logged in as admin for the company.
        ///</summary>
        [<ApiMember(DataType="datetime", Description="Will show when the company was updated, note it will only be shown if your logged in as admin for the company.")>]
        member val Updated:Nullable<DateTime> = new Nullable<DateTime>() with get,set

        ///<summary>
        ///Will show when the company was created, note it will only be shown if your logged in as admin for the company.
        ///</summary>
        [<ApiMember(DataType="datetime", Description="Will show when the company was created, note it will only be shown if your logged in as admin for the company.")>]
        member val Created:Nullable<DateTime> = new Nullable<DateTime>() with get,set

        member val StatusId:Int32 = new Int32() with get,set
        ///<summary>
        ///If the company is marked as favourite for the logged in user
        ///</summary>
        [<ApiMember(DataType="boolean", Description="If the company is marked as favourite for the logged in user")>]
        member val IsFavorite:Boolean = new Boolean() with get,set

        member val BookingAgreements:String = null with get,set
        member val BookingSettings:CompanyBookingSettings = null with get,set
        member val SystemSettings:CompanySystemSettings = null with get,set
        member val WidgetSettings:CompanyWidgetSettings = null with get,set
        member val HomepageSettings:HomepageSettingsResponse = null with get,set
        member val RatingSummary:CompanyRatingSummary = null with get,set
        member val Reviews:ResizeArray<RatingReviewResponse> = new ResizeArray<RatingReviewResponse>() with get,set
        member val CustomerCustomFields:ResizeArray<CustomFieldConfigData> = new ResizeArray<CustomFieldConfigData>() with get,set
        member val ResponseStatus:ResponseStatus = null with get,set

    [<AllowNullLiteral>]
    type UserFavorites() = 
        member val CompanyId:Guid = new Guid() with get,set
        member val Company:CompanyQueryResponse = null with get,set

    [<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")>]
    [<AllowNullLiteral>]
    type AddFavorite() = 
        ///<summary>
        ///Id of the company
        ///</summary>
        [<ApiMember(Description="Id of the company", IsRequired=true, ParameterType="path")>]
        member val CompanyId:Guid = new Guid() with get,set

F# AddFavorite DTOs

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

HTTP + JSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /users/favorite HTTP/1.1 
Host: testapi.bokamera.se 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	Company: 
	{
		Name: String,
		OrganisationNumber: String,
		TypeId: 0,
		Details: String,
		CategoryId: 0,
		Category: String,
		Street1: String,
		Street2: String,
		ZipCode: String,
		City: String,
		CountryId: String,
		Longitude: String,
		Latitude: String,
		Distance: 0,
		Phone: String,
		Email: String,
		Homepage: String,
		SitePath: String,
		Active: False,
		CodeLockSystem: Sample,
		IsFreeAccount: False,
		Updated: "0001-01-01T00:00:00",
		Created: "0001-01-01T00:00:00",
		StatusId: 0,
		IsFavorite: False,
		BookingAgreements: String,
		BookingSettings: 
		{
			EnableMobileApp: False,
			BookingReceiptMessage: String,
			ShowFreeTimesLeft: False,
			EnableShowBookedTimes: False,
			BookingAgreement: String,
			WeekNumberSetting: 0,
			ShowBookedTimes: False,
			PaymentProviderId: 0,
			BookOnlyOnExistingCustomers: False,
			PaymentEnabled: False
		},
		SystemSettings: 
		{
			Active: False,
			InactiveMessage: String,
			Searchable: False,
			GATrackingId: String,
			GoogleAdsConversionId: String,
			LinkedinTagId: String,
			GoogleAdsConversionLabel: String,
			GTMTrackingId: String,
			FacebookPixelId: String,
			MultiLanguage: False,
			ShowOnMarketplace: False,
			EnableAPITranslation: False,
			DefaultLanguage: String
		},
		WidgetSettings: 
		{
			ServiceLayoutId: 0,
			TimeLayoutId: 0,
			BookingLayoutId: 0,
			PrimaryColor: String,
			ShowServiceImage: False,
			ShowRebateCodeField: False,
			ShowNextAvailableTime: False,
			ShowEndTime: False,
			BookedTimeSlotText: String,
			DarkTheme: False
		},
		HomepageSettings: 
		{
			HomepageHeading: String,
			WelcomePageHeading: String,
			WelcomePageBody: String,
			AboutUsPageHeading: String,
			AboutUsPageBody: String,
			ShowRating: False,
			HomePageTemplateId: 0,
			HeroSectionStyleId: 0,
			EnableHomepage: False
		},
		RatingSummary: 
		{
			AverageScore: 0,
			RatingScore1Count: 0,
			RatingScore2Count: 0,
			RatingScore3Count: 0,
			RaingScore4Count: 0,
			RatingScore5Count: 0,
			Count: 0
		},
		Reviews: 
		[
			{
				Title: String,
				Description: String,
				RatingScore: 0,
				Author: String,
				ReviewAnswer: String
			}
		],
		CustomerCustomFields: 
		[
			{
				"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"
					}
				]
			}
		],
		ResponseStatus: 
		{
			ErrorCode: String,
			Message: String,
			StackTrace: String,
			Errors: 
			[
				{
					ErrorCode: String,
					FieldName: String,
					Message: String,
					Meta: 
					{
						String: String
					}
				}
			],
			Meta: 
			{
				String: String
			}
		}
	}
}