BokaMera.API.Host

<back to all web services

CompanyIncentiveQuery

Requires Authentication
Requires any of the roles:bookingsupplier-administrator-write, bookingsupplier-administrator-read, superadmin
The following routes are available for this service:
GET/companies/{CompanyId}/incentivesIt gets either incentives which are not read or engaged by the current company/administrator.
import 'package:servicestack/servicestack.dart';

enum IncentiveActionType
{
    Upgrade,
    AddOn,
    Information,
}

class LicenseItemsResponse implements IConvertible
{
    int? Id;
    String? Name;
    int? AllowedItems;

    LicenseItemsResponse({this.Id,this.Name,this.AllowedItems});
    LicenseItemsResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

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

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'Name': Name,
        'AllowedItems': AllowedItems
    };

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

class BaseModel implements IConvertible
{
    BaseModel();
    BaseModel.fromJson(Map<String, dynamic> json) : super();
    fromMap(Map<String, dynamic> json) {
        return this;
    }

    Map<String, dynamic> toJson() => {};
    getTypeName() => "BaseModel";
    TypeContext? context = _ctx;
}

class Currency extends BaseModel implements IConvertible
{
    // @Required()
    String? Name;

    // @Required()
    String? CurrencySign;

    // @Required()
    bool? Active;

    DateTime? ModifiedDate;
    // @Required()
    String? Id;

    Currency({this.Name,this.CurrencySign,this.Active,this.ModifiedDate,this.Id});
    Currency.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Name = json['Name'];
        CurrencySign = json['CurrencySign'];
        Active = json['Active'];
        ModifiedDate = JsonConverters.fromJson(json['ModifiedDate'],'DateTime',context!);
        Id = json['Id'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Name': Name,
        'CurrencySign': CurrencySign,
        'Active': Active,
        'ModifiedDate': JsonConverters.toJson(ModifiedDate,'DateTime',context!),
        'Id': Id
    });

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

class Country extends BaseModel implements IConvertible
{
    // @References(typeof(Currency))
    String? CurrencyId;

    Currency? CurrencyInfo;
    // @Required()
    String? Name;

    String? Culture;
    String? TimeZone;
    DateTime? ModifiedDate;
    // @Required()
    String? Id;

    Country({this.CurrencyId,this.CurrencyInfo,this.Name,this.Culture,this.TimeZone,this.ModifiedDate,this.Id});
    Country.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        CurrencyId = json['CurrencyId'];
        CurrencyInfo = JsonConverters.fromJson(json['CurrencyInfo'],'Currency',context!);
        Name = json['Name'];
        Culture = json['Culture'];
        TimeZone = json['TimeZone'];
        ModifiedDate = JsonConverters.fromJson(json['ModifiedDate'],'DateTime',context!);
        Id = json['Id'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'CurrencyId': CurrencyId,
        'CurrencyInfo': JsonConverters.toJson(CurrencyInfo,'Currency',context!),
        'Name': Name,
        'Culture': Culture,
        'TimeZone': TimeZone,
        'ModifiedDate': JsonConverters.toJson(ModifiedDate,'DateTime',context!),
        'Id': Id
    });

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

class LicensePrice extends BaseModel implements IConvertible
{
    // @Ignore()
    Country? Country;

    // @Ignore()
    bool? MonthlyPayment;

    // @Required()
    int? LicenseTypeId;

    // @Required()
    String? CountryId;

    // @Required()
    int? Price;

    DateTime? ModifiedDate;

    LicensePrice({this.Country,this.MonthlyPayment,this.LicenseTypeId,this.CountryId,this.Price,this.ModifiedDate});
    LicensePrice.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        Country = JsonConverters.fromJson(json['Country'],'Country',context!);
        MonthlyPayment = json['MonthlyPayment'];
        LicenseTypeId = json['LicenseTypeId'];
        CountryId = json['CountryId'];
        Price = json['Price'];
        ModifiedDate = JsonConverters.fromJson(json['ModifiedDate'],'DateTime',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'Country': JsonConverters.toJson(Country,'Country',context!),
        'MonthlyPayment': MonthlyPayment,
        'LicenseTypeId': LicenseTypeId,
        'CountryId': CountryId,
        'Price': Price,
        'ModifiedDate': JsonConverters.toJson(ModifiedDate,'DateTime',context!)
    });

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

class LicenseTypeQueryResponse implements IConvertible
{
    /**
    * The license type id
    */
    // @ApiMember(Description="The license type id")
    int? Id;

    /**
    * The license type name
    */
    // @ApiMember(Description="The license type name")
    String? Name;

    /**
    * The license type description
    */
    // @ApiMember(Description="The license type description")
    String? Description;

    /**
    * If the license type is not a standard license but instead an extra license option. An example would be sending new letter license.
    */
    // @ApiMember(Description="If the license type is not a standard license but instead an extra license option. An example would be sending new letter license.")
    bool? IsExtraLicenseOption;

    /**
    * The period of notice for the license in days.
    */
    // @ApiMember(Description="The period of notice for the license in days.")
    int? PeriodOfNoticeDays;

    /**
    * The license items for the license type
    */
    // @ApiMember(Description="The license items for the license type")
    List<LicenseItemsResponse>? Items;

    /**
    * The license prices in each country for the license type
    */
    // @ApiMember(Description="The license prices in each country for the license type")
    List<LicensePrice>? Prices;

    LicenseTypeQueryResponse({this.Id,this.Name,this.Description,this.IsExtraLicenseOption,this.PeriodOfNoticeDays,this.Items,this.Prices});
    LicenseTypeQueryResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        Name = json['Name'];
        Description = json['Description'];
        IsExtraLicenseOption = json['IsExtraLicenseOption'];
        PeriodOfNoticeDays = json['PeriodOfNoticeDays'];
        Items = JsonConverters.fromJson(json['Items'],'List<LicenseItemsResponse>',context!);
        Prices = JsonConverters.fromJson(json['Prices'],'List<LicensePrice>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'Name': Name,
        'Description': Description,
        'IsExtraLicenseOption': IsExtraLicenseOption,
        'PeriodOfNoticeDays': PeriodOfNoticeDays,
        'Items': JsonConverters.toJson(Items,'List<LicenseItemsResponse>',context!),
        'Prices': JsonConverters.toJson(Prices,'List<LicensePrice>',context!)
    };

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

class IncentiveActionResponse implements IConvertible
{
    int? Id;
    String? Description;
    IncentiveActionType? ActionType;
    String? Page;
    String? Segment;
    String? Element;
    int? LicenseTypeId;
    LicenseTypeQueryResponse? SuggestedLicenseToUpgrade;

    IncentiveActionResponse({this.Id,this.Description,this.ActionType,this.Page,this.Segment,this.Element,this.LicenseTypeId,this.SuggestedLicenseToUpgrade});
    IncentiveActionResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        Description = json['Description'];
        ActionType = JsonConverters.fromJson(json['ActionType'],'IncentiveActionType',context!);
        Page = json['Page'];
        Segment = json['Segment'];
        Element = json['Element'];
        LicenseTypeId = json['LicenseTypeId'];
        SuggestedLicenseToUpgrade = JsonConverters.fromJson(json['SuggestedLicenseToUpgrade'],'LicenseTypeQueryResponse',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'Description': Description,
        'ActionType': JsonConverters.toJson(ActionType,'IncentiveActionType',context!),
        'Page': Page,
        'Segment': Segment,
        'Element': Element,
        'LicenseTypeId': LicenseTypeId,
        'SuggestedLicenseToUpgrade': JsonConverters.toJson(SuggestedLicenseToUpgrade,'LicenseTypeQueryResponse',context!)
    };

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

enum IncentiveRecurrenceFrequency
{
    OneTime,
    Weekly,
    Monthly,
}

enum CriteriaType
{
    LicenseAvailability,
    SmsActivation,
    eAccountingActivation,
    CodeLockActivation,
    SocialActivation,
    OnlinePaymentActivation,
    FollowUpMessageActivation,
    RatingActivation,
}

class IncentiveCriteriaDto implements IConvertible
{
    CriteriaType? CriteriaType;
    String? Value;
    bool? InvertCondition;

    IncentiveCriteriaDto({this.CriteriaType,this.Value,this.InvertCondition});
    IncentiveCriteriaDto.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        CriteriaType = JsonConverters.fromJson(json['CriteriaType'],'CriteriaType',context!);
        Value = json['Value'];
        InvertCondition = json['InvertCondition'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'CriteriaType': JsonConverters.toJson(CriteriaType,'CriteriaType',context!),
        'Value': Value,
        'InvertCondition': InvertCondition
    };

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

class CompanyIncentiveResponse implements IConvertible
{
    int? Id;
    String? Heading;
    String? StorageUrl;
    String? SuccessButtonText;
    int? ActionId;
    int? InitialDelayInSeconds;
    int? MaxDisplayCount;
    DateTime? ValidFrom;
    DateTime? ValidTo;
    IncentiveActionResponse? Action;
    String? Payload;
    // @ApiMember()
    String? Body;

    // @ApiMember(IsRequired=true)
    IncentiveRecurrenceFrequency? Frequency;

    // @ApiMember(IsRequired=true)
    int? InitialDeferredDays;

    // @ApiMember()
    int? RecurrenceInterval;

    // @ApiMember()
    bool? Active;

    List<String>? CompanyIds;
    List<IncentiveCriteriaDto>? Criteria;

    CompanyIncentiveResponse({this.Id,this.Heading,this.StorageUrl,this.SuccessButtonText,this.ActionId,this.InitialDelayInSeconds,this.MaxDisplayCount,this.ValidFrom,this.ValidTo,this.Action,this.Payload,this.Body,this.Frequency,this.InitialDeferredDays,this.RecurrenceInterval,this.Active,this.CompanyIds,this.Criteria});
    CompanyIncentiveResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Id = json['Id'];
        Heading = json['Heading'];
        StorageUrl = json['StorageUrl'];
        SuccessButtonText = json['SuccessButtonText'];
        ActionId = json['ActionId'];
        InitialDelayInSeconds = json['InitialDelayInSeconds'];
        MaxDisplayCount = json['MaxDisplayCount'];
        ValidFrom = JsonConverters.fromJson(json['ValidFrom'],'DateTime',context!);
        ValidTo = JsonConverters.fromJson(json['ValidTo'],'DateTime',context!);
        Action = JsonConverters.fromJson(json['Action'],'IncentiveActionResponse',context!);
        Payload = json['Payload'];
        Body = json['Body'];
        Frequency = JsonConverters.fromJson(json['Frequency'],'IncentiveRecurrenceFrequency',context!);
        InitialDeferredDays = json['InitialDeferredDays'];
        RecurrenceInterval = json['RecurrenceInterval'];
        Active = json['Active'];
        CompanyIds = JsonConverters.fromJson(json['CompanyIds'],'List<String>',context!);
        Criteria = JsonConverters.fromJson(json['Criteria'],'List<IncentiveCriteriaDto>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Id': Id,
        'Heading': Heading,
        'StorageUrl': StorageUrl,
        'SuccessButtonText': SuccessButtonText,
        'ActionId': ActionId,
        'InitialDelayInSeconds': InitialDelayInSeconds,
        'MaxDisplayCount': MaxDisplayCount,
        'ValidFrom': JsonConverters.toJson(ValidFrom,'DateTime',context!),
        'ValidTo': JsonConverters.toJson(ValidTo,'DateTime',context!),
        'Action': JsonConverters.toJson(Action,'IncentiveActionResponse',context!),
        'Payload': Payload,
        'Body': Body,
        'Frequency': JsonConverters.toJson(Frequency,'IncentiveRecurrenceFrequency',context!),
        'InitialDeferredDays': InitialDeferredDays,
        'RecurrenceInterval': RecurrenceInterval,
        'Active': Active,
        'CompanyIds': JsonConverters.toJson(CompanyIds,'List<String>',context!),
        'Criteria': JsonConverters.toJson(Criteria,'List<IncentiveCriteriaDto>',context!)
    };

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

class CompanyIncentivesQueryResponse implements IConvertible
{
    List<CompanyIncentiveResponse>? Incentives;
    String? CompanyId;

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

    fromMap(Map<String, dynamic> json) {
        Incentives = JsonConverters.fromJson(json['Incentives'],'List<CompanyIncentiveResponse>',context!);
        CompanyId = json['CompanyId'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Incentives': JsonConverters.toJson(Incentives,'List<CompanyIncentiveResponse>',context!),
        'CompanyId': CompanyId
    };

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

// @ValidateRequest(Validator="IsAuthenticated")
// @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
class CompanyIncentiveQuery 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.", IsRequired=true, ParameterType="path")
    String? CompanyId;

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

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

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

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

TypeContext _ctx = TypeContext(library: 'api.bookmore.com', types: <String, TypeInfo> {
    'IncentiveActionType': TypeInfo(TypeOf.Enum, enumValues:IncentiveActionType.values),
    'LicenseItemsResponse': TypeInfo(TypeOf.Class, create:() => LicenseItemsResponse()),
    'BaseModel': TypeInfo(TypeOf.Class, create:() => BaseModel()),
    'Currency': TypeInfo(TypeOf.Class, create:() => Currency()),
    'Country': TypeInfo(TypeOf.Class, create:() => Country()),
    'LicensePrice': TypeInfo(TypeOf.Class, create:() => LicensePrice()),
    'LicenseTypeQueryResponse': TypeInfo(TypeOf.Class, create:() => LicenseTypeQueryResponse()),
    'List<LicenseItemsResponse>': TypeInfo(TypeOf.Class, create:() => <LicenseItemsResponse>[]),
    'List<LicensePrice>': TypeInfo(TypeOf.Class, create:() => <LicensePrice>[]),
    'IncentiveActionResponse': TypeInfo(TypeOf.Class, create:() => IncentiveActionResponse()),
    'IncentiveRecurrenceFrequency': TypeInfo(TypeOf.Enum, enumValues:IncentiveRecurrenceFrequency.values),
    'CriteriaType': TypeInfo(TypeOf.Enum, enumValues:CriteriaType.values),
    'IncentiveCriteriaDto': TypeInfo(TypeOf.Class, create:() => IncentiveCriteriaDto()),
    'CompanyIncentiveResponse': TypeInfo(TypeOf.Class, create:() => CompanyIncentiveResponse()),
    'List<IncentiveCriteriaDto>': TypeInfo(TypeOf.Class, create:() => <IncentiveCriteriaDto>[]),
    'CompanyIncentivesQueryResponse': TypeInfo(TypeOf.Class, create:() => CompanyIncentivesQueryResponse()),
    'List<CompanyIncentiveResponse>': TypeInfo(TypeOf.Class, create:() => <CompanyIncentiveResponse>[]),
    'CompanyIncentiveQuery': TypeInfo(TypeOf.Class, create:() => CompanyIncentiveQuery()),
});

Dart CompanyIncentiveQuery 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 /companies/{CompanyId}/incentives HTTP/1.1 
Host: api.bookmore.com 
Accept: application/json
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: length

{}