BokaMera.API.Host

<back to all web services

CreateRebateCode

Requires Authentication
Requires any of the roles:bookingsupplier-administrator-write, superadmin
The following routes are available for this service:
POST/rebatecodesCreate RebateCode.Create RebateCode.
namespace BokaMera.API.ServiceModel.Db

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

    [<AllowNullLiteral>]
    type DaysOfWeekResponse() = 
        member val Id:Int32 = new Int32() with get,set
        member val DayOfWeek:String = null with get,set
        member val DayOfWeekTranslation:String = null with get,set
        member val DayOfWeekActive:Nullable<Boolean> = new Nullable<Boolean>() with get,set
        member val DayOfWeekSortOrder:Nullable<Int16> = new Nullable<Int16>() with get,set

    [<AllowNullLiteral>]
    type RebateCodeServiceResponse() = 
        member val Id:Int32 = new Int32() with get,set
        member val Name:String = null with get,set
        member val Description:String = null with get,set
        member val Active:Boolean = new Boolean() with get,set

    [<AllowNullLiteral>]
    type BaseModel() = 
        class end

    [<AllowNullLiteral>]
    type ArticleServiceRelation() = 
        inherit BaseModel()
        [<Required>]
        member val CompanyId:Guid = new Guid() with get,set

        member val Id:Int32 = new Int32() with get,set
        [<Required>]
        member val ServiceId:Int32 = new Int32() with get,set

        [<Required>]
        member val ArticleId:Int32 = new Int32() with get,set

    [<AllowNullLiteral>]
    type ArticleResponse() = 
        member val CompanyId:Guid = new Guid() with get,set
        member val Id:Int32 = new Int32() with get,set
        member val Name:String = null with get,set
        member val ArticleTypeId:Int32 = new Int32() with get,set
        member val Description:String = null with get,set
        member val ImageUrl:String = null with get,set
        member val Active:Boolean = new Boolean() with get,set
        member val Amount:Int32 = new Int32() with get,set
        member val Price:Double = new Double() with get,set
        member val CurrencyId:String = null with get,set
        member val SortOrder:Int32 = new Int32() with get,set
        member val UpdatedDate:DateTime = new DateTime() with get,set
        member val CreatedDate:DateTime = new DateTime() with get,set
        member val Duration:Int32 = new Int32() with get,set
        member val Services:ResizeArray<ArticleServiceRelation> = null with get,set
        member val ServiceIds:ResizeArray<Int32> = null with get,set
        member val PriceSign:String = null with get,set
        member val VAT:Nullable<Decimal> = new Nullable<Decimal>() with get,set
        member val ValidDays:Int32 = new Int32() with get,set
        member val SendNotification:Boolean = new Boolean() with get,set
        member val NotificationEmail:String = null with get,set

    [<AllowNullLiteral>]
    type RebateCodeCustomerResponse() = 
        member val Id:Guid = new Guid() with get,set
        member val Firstname:String = null with get,set
        member val Lastname:String = null with get,set
        member val Email:String = null with get,set
        member val Phone:String = null with get,set
        member val ImageUrl:String = null with get,set

    [<AllowNullLiteral>]
    type RebateCodeTransactionQueryResponse() = 
        member val Id:Int32 = new Int32() with get,set
        member val CompanyId:Guid = new Guid() with get,set
        member val Note:String = null with get,set
        member val RebateCodeId:Int32 = new Int32() with get,set
        member val RebateCodeSign:String = null with get,set
        member val RebateCodeTypeId:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val RebateCodeTypeName:String = null with get,set
        member val Amount:Double = new Double() with get,set
        member val Usage:String = null with get,set
        member val BookingId:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val UpdatedDate:DateTime = new DateTime() with get,set
        member val CreatedDate:DateTime = new DateTime() with get,set
        member val Service:RebateCodeServiceResponse = null with get,set
        member val Customer:RebateCodeCustomerResponse = null with get,set
        member val PriceSign:String = null with get,set

    [<AllowNullLiteral>]
    type RebateCodeCompanyResponse() = 
        member val SitePath:String = null with get,set
        member val PaymentProviderId:Nullable<Int32> = new Nullable<Int32>() with get,set

    [<AllowNullLiteral>]
    type PaymentLogResponse() = 
        member val Id:Int32 = new Int32() with get,set
        member val Amount:Nullable<Double> = new Nullable<Double>() with get,set
        member val AmountCredited:Nullable<Double> = new Nullable<Double>() with get,set
        member val CurrencyId:String = null with get,set
        member val Comments:String = null with get,set
        member val Created:DateTime = new DateTime() with get,set
        member val Updated:DateTime = new DateTime() with get,set

    [<AllowNullLiteral>]
    type RebateCodeResponse() = 
        member val Id:Int32 = new Int32() with get,set
        member val CompanyId:Nullable<Guid> = new Nullable<Guid>() with get,set
        member val ValidFrom:DateTime = new DateTime() with get,set
        member val ValidTo:DateTime = new DateTime() with get,set
        ///<summary>
        ///If the price is only valid for specific days in week add a comma separated list of which days this day price belongs to, 1 = Monday .. 7 = Sunday. All old days connected will be removed on update.
        ///</summary>
        [<ApiMember(Description="If the price is only valid for specific days in week add a comma separated list of which days this day price belongs to, 1 = Monday .. 7 = Sunday. All old days connected will be removed on update.")>]
        member val FromTime:TimeSpan = new TimeSpan() with get,set

        ///<summary>
        ///If the price is only valid for a specific time span during a time of day enter the FromTime and ToTime parameters.
        ///</summary>
        [<ApiMember(Description="If the price is only valid for a specific time span during a time of day enter the FromTime and ToTime parameters.")>]
        member val ToTime:TimeSpan = new TimeSpan() with get,set

        member val CreatedBy:String = null with get,set
        member val Created:DateTime = new DateTime() with get,set
        member val UpdatedBy:String = null with get,set
        member val Updated:DateTime = new DateTime() with get,set
        member val PersonalNote:String = null with get,set
        member val RebateCodeSign:String = null with get,set
        member val RebateCodeValue:Int32 = new Int32() with get,set
        member val RebateCodeTypeId:Int32 = new Int32() with get,set
        member val Name:String = null with get,set
        member val RebateCodeStatusId:Int32 = new Int32() with get,set
        member val StatusName:String = null with get,set
        member val MaxNumberOfUses:Int32 = new Int32() with get,set
        member val MaxNumberOfUsesPerCustomer:Int32 = new Int32() with get,set
        member val NumberOfUsesUsed:Int32 = new Int32() with get,set
        member val DaysOfWeek:ResizeArray<DaysOfWeekResponse> = null with get,set
        member val Services:ResizeArray<RebateCodeServiceResponse> = null with get,set
        member val Article:ArticleResponse = null with get,set
        member val Transactions:ResizeArray<RebateCodeTransactionQueryResponse> = null with get,set
        member val RemainingAmount:Nullable<Double> = new Nullable<Double>() with get,set
        member val RemainingUsage:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val Customers:ResizeArray<RebateCodeCustomerResponse> = null with get,set
        member val ResponseStatus:ResponseStatus = null with get,set
        member val PaymentReceived:Boolean = new Boolean() with get,set
        member val RebateCodeCurrencySign:String = null with get,set
        member val ActiveByStatus:Boolean = new Boolean() with get,set
        member val PriceSign:String = null with get,set
        member val RebateCodeTypeName:String = null with get,set
        member val Company:RebateCodeCompanyResponse = null with get,set
        member val PaymentLog:ResizeArray<PaymentLogResponse> = null with get,set

    [<AllowNullLiteral>]
    type PromoCodeReceiver() = 
        member val CustomerId:Nullable<Guid> = new Nullable<Guid>() with get,set
        member val Firstname:String = null with get,set
        member val Lastname:String = null with get,set
        member val Email:String = null with get,set
        member val ReceiverMessage:String = null with get,set

    [<AllowNullLiteral>]
    type InvoiceAddressToHandle() = 
        member val CorporateIdentityNumber:String = null with get,set
        member val InvoiceAddress1:String = null with get,set
        member val InvoiceAddress2:String = null with get,set
        member val InvoiceCity:String = null with get,set
        member val InvoicePostalCode:String = null with get,set
        member val InvoiceCountryCode:String = null with get,set

    [<ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)>]
    [<ValidateRequest(Validator="IsAuthenticated")>]
    [<AllowNullLiteral>]
    type CreateRebateCode() = 
        ///<summary>
        ///
        ///</summary>
        [<ApiMember(Description="")>]
        member val CompanyId:Nullable<Guid> = new Nullable<Guid>() with get,set

        ///<summary>
        ///The default value is 9999
        ///</summary>
        [<ApiMember(Description="The default value is 9999")>]
        member val MaxNumberOfUses:Nullable<Int32> = new Nullable<Int32>() with get,set

        ///<summary>
        ///The default value is 1
        ///</summary>
        [<ApiMember(Description="The default value is 1")>]
        member val MaxNumberOfUsesPerCustomer:Nullable<Int32> = new Nullable<Int32>() with get,set

        ///<summary>
        ///
        ///</summary>
        [<ApiMember(Description="", IsRequired=true)>]
        member val ValidFrom:DateTime = new DateTime() with get,set

        ///<summary>
        ///
        ///</summary>
        [<ApiMember(Description="", IsRequired=true)>]
        member val ValidTo:DateTime = new DateTime() with get,set

        ///<summary>
        ///If the price is only valid for specific days in week add a comma separated list of which days this day price belongs to, 1 = Monday .. 7 = Sunday. All old days connected will be removed on update.
        ///</summary>
        [<ApiMember(Description="If the price is only valid for specific days in week add a comma separated list of which days this day price belongs to, 1 = Monday .. 7 = Sunday. All old days connected will be removed on update.")>]
        member val FromTime:Nullable<TimeSpan> = new Nullable<TimeSpan>() with get,set

        ///<summary>
        ///If the price is only valid for a specific time span during a time of day enter the FromTime and ToTime parameters.
        ///</summary>
        [<ApiMember(Description="If the price is only valid for a specific time span during a time of day enter the FromTime and ToTime parameters.")>]
        member val ToTime:Nullable<TimeSpan> = new Nullable<TimeSpan>() with get,set

        ///<summary>
        ///1 - Percent, 2 - Сurrency, 3 - PunchTicket, 4 - ValueCard, 5 - GiftCard
        ///</summary>
        [<ApiMember(Description="1 - Percent, 2 - Сurrency, 3 - PunchTicket, 4 - ValueCard, 5 - GiftCard", IsRequired=true)>]
        member val RebateCodeTypeId:Int32 = new Int32() with get,set

        ///<summary>
        ///If it's connected to an Article, add the Article Id here.
        ///</summary>
        [<ApiMember(Description="If it's connected to an Article, add the Article Id here.")>]
        member val ArticleId:Nullable<Int32> = new Nullable<Int32>() with get,set

        ///<summary>
        ///
        ///</summary>
        [<ApiMember(Description="", IsRequired=true)>]
        member val RebateCodeValue:Int32 = new Int32() with get,set

        ///<summary>
        ///If AutoGenerateRebateCodeSign=false - more than four letters, unique among active codes
        ///</summary>
        [<ApiMember(Description="If AutoGenerateRebateCodeSign=false - more than four letters, unique among active codes")>]
        member val RebateCodeSign:String = null with get,set

        ///<summary>
        ///AutoGenerateRebateCodeSign=true - random generate code
        ///</summary>
        [<ApiMember(Description="AutoGenerateRebateCodeSign=true - random generate code")>]
        member val AutoGenerateRebateCodeSign:Boolean = new Boolean() with get,set

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

        ///<summary>
        ///
        ///</summary>
        [<ApiMember(Description="")>]
        member val DaysOfWeek:ResizeArray<Int32> = null with get,set

        ///<summary>
        ///
        ///</summary>
        [<ApiMember(Description="")>]
        member val Services:ResizeArray<Int32> = null with get,set

        ///<summary>
        ///
        ///</summary>
        [<ApiMember(Description="")>]
        member val Customers:ResizeArray<Guid> = null with get,set

        ///<summary>
        ///The price
        ///</summary>
        [<ApiMember(Description="The price")>]
        member val PriceVat:Nullable<Decimal> = new Nullable<Decimal>() with get,set

        ///<summary>
        ///The price VAT in percent
        ///</summary>
        [<ApiMember(Description="The price VAT in percent")>]
        member val VAT:Nullable<Decimal> = new Nullable<Decimal>() with get,set

        ///<summary>
        ///The price currency
        ///</summary>
        [<ApiMember(Description="The price currency")>]
        member val CurrencyId:String = null with get,set

        ///<summary>
        ///Promo code receiver information
        ///</summary>
        [<ApiMember(Description="Promo code receiver information")>]
        member val PromoCodeReceiver:PromoCodeReceiver = null with get,set

        ///<summary>
        ///If you wish to save some invoice address information for the rebate code, you can do so here. This is optional.
        ///</summary>
        [<ApiMember(Description="If you wish to save some invoice address information for the rebate code, you can do so here. This is optional.")>]
        member val InvoiceAddress:InvoiceAddressToHandle = null with get,set

        ///<summary>
        ///Determines if the rebate code is active on creation or if it should await payment. If you set this to true, make sure to mark the code as payed when you receive the payment, by using the MarkRebateCodeAsPayed endpoint. The default value is false.
        ///</summary>
        [<ApiMember(Description="Determines if the rebate code is active on creation or if it should await payment. If you set this to true, make sure to mark the code as payed when you receive the payment, by using the MarkRebateCodeAsPayed endpoint. The default value is false.")>]
        member val Paid:Nullable<Boolean> = new Nullable<Boolean>() with get,set

F# CreateRebateCode 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 /rebatecodes HTTP/1.1 
Host: testapi.bokamera.se 
Accept: application/json
Content-Type: application/json
Content-Length: length

{"CompanyId":"00000000-0000-0000-0000-000000000000","MaxNumberOfUses":0,"MaxNumberOfUsesPerCustomer":0,"FromTime":"00:00:00","ToTime":"00:00:00","RebateCodeTypeId":0,"ArticleId":0,"RebateCodeValue":0,"RebateCodeSign":"String","AutoGenerateRebateCodeSign":false,"PersonalNote":"String","DaysOfWeek":[0],"Services":[0],"Customers":["00000000-0000-0000-0000-000000000000"],"PriceVat":0,"VAT":0,"CurrencyId":"String","PromoCodeReceiver":{"CustomerId":"00000000-0000-0000-0000-000000000000","Firstname":"String","Lastname":"String","Email":"String","ReceiverMessage":"String"},"InvoiceAddress":{"CorporateIdentityNumber":"String","InvoiceAddress1":"String","InvoiceAddress2":"String","InvoiceCity":"String","InvoicePostalCode":"String","InvoiceCountryCode":"String"},"Paid":false}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: length

{"Id":0,"CompanyId":"00000000-0000-0000-0000-000000000000","FromTime":"00:00:00","ToTime":"00:00:00","CreatedBy":"String","UpdatedBy":"String","PersonalNote":"String","RebateCodeSign":"String","RebateCodeValue":0,"RebateCodeTypeId":0,"Name":"String","RebateCodeStatusId":0,"StatusName":"String","MaxNumberOfUses":0,"MaxNumberOfUsesPerCustomer":0,"NumberOfUsesUsed":0,"DaysOfWeek":[{"Id":0,"DayOfWeek":"String","DayOfWeekTranslation":"String","DayOfWeekActive":false,"DayOfWeekSortOrder":0}],"Services":[{"Id":0,"Name":"String","Description":"String","Active":false}],"Article":{"Id":0,"Name":"String","ArticleTypeId":0,"Description":"String","ImageUrl":"String","Active":false,"Amount":0,"Price":0,"CurrencyId":"String","SortOrder":0,"Duration":0,"Services":[{"Id":0,"ServiceId":0,"ArticleId":0}],"ServiceIds":[0],"PriceSign":"String","VAT":0,"ValidDays":0,"SendNotification":false,"NotificationEmail":"String"},"Transactions":[{"Id":0,"Note":"String","RebateCodeId":0,"RebateCodeSign":"String","RebateCodeTypeId":0,"RebateCodeTypeName":"String","Amount":0,"Usage":"String","BookingId":0,"Service":{"Id":0,"Name":"String","Description":"String","Active":false},"Customer":{"Firstname":"String","Lastname":"String","Email":"String","Phone":"String","ImageUrl":"String"},"PriceSign":"String"}],"RemainingAmount":0,"RemainingUsage":0,"Customers":[{"Firstname":"String","Lastname":"String","Email":"String","Phone":"String","ImageUrl":"String"}],"ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}},"PaymentReceived":false,"RebateCodeCurrencySign":"String","ActiveByStatus":false,"PriceSign":"String","RebateCodeTypeName":"String","Company":{"SitePath":"String","PaymentProviderId":0},"PaymentLog":[{"Id":0,"Amount":0,"AmountCredited":0,"CurrencyId":"String","Comments":"String"}]}