BokaMera.API.Host

<back to all web services

CreateIncentive

Requires Authentication
Requires the role:superadmin
The following routes are available for this service:
POST/superadmin/incentivesAdd a new incentive

export enum IncentiveActionType
{
    Upgrade = 1,
    AddOn = 2,
    Information = 3,
}

export class LicenseItemsResponse
{
    public Id: number;
    public Name: string;
    public AllowedItems: number;

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

export class BaseModel
{

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

export class Currency extends BaseModel
{
    // @Required()
    public Name: string;

    // @Required()
    public CurrencySign: string;

    // @Required()
    public Active: boolean;

    public ModifiedDate?: string;
    // @Required()
    public Id: string;

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

export class Country extends BaseModel
{
    // @References("typeof(BokaMera.API.ServiceModel.Db.Currency)")
    public CurrencyId: string;

    public CurrencyInfo: Currency;
    // @Required()
    public Name: string;

    public Culture: string;
    public TimeZone: string;
    public ModifiedDate?: string;
    // @Required()
    public Id: string;

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

export class LicensePriceResponse
{
    public LicenseTypeId: number;
    public CountryId: string;
    public Price: number;
    public Country: Country;
    public LicensePlanId: number;

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

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

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

    /** @description The license type description */
    // @ApiMember(Description="The license type description")
    public 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.")
    public IsExtraLicenseOption: boolean;

    /** @description The period of notice for the license in days. */
    // @ApiMember(Description="The period of notice for the license in days.")
    public PeriodOfNoticeDays: number;

    /** @description The license items for the license type */
    // @ApiMember(Description="The license items for the license type")
    public Items: LicenseItemsResponse[];

    /** @description The license prices in each country for the license type */
    // @ApiMember(Description="The license prices in each country for the license type")
    public Prices: LicensePriceResponse[];

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

export class IncentiveActionResponse
{
    public Id: number;
    public ActionType: IncentiveActionType;
    public Page: string;
    public Segment: string;
    public Element: string;
    public LicenseTypeId?: number;
    public SuggestedLicenseToUpgrade: LicenseTypeQueryResponse;

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

export class CompanyIncentiveResponse
{
    public Id: number;
    public Heading: string;
    public StorageUrl: string;
    public SuccessButtonText: string;
    public ActionId: number;
    public InitialDelayInSeconds: number;
    public MaxDisplayCount?: number;
    public ValidFrom: string;
    public ValidTo: string;
    public Action: IncentiveActionResponse;
    public Payload: string;

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

export enum IncentiveRecurrenceFrequency
{
    OneTime = 1,
    Weekly = 2,
    Monthly = 3,
}

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

export class IncentiveCriteria extends BaseModel
{
    public Id: number;
    public IncentiveId: number;
    public CriteriaType: CriteriaType;
    public Value: string;
    public InvertCondition: boolean;
    public CreatedDate: string;

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

export class AdminIncentiveQueryResponse extends CompanyIncentiveResponse
{
    public Frequency: IncentiveRecurrenceFrequency;
    public RecurrenceInterval: number;
    public CreatedDate: string;
    public ModifiedDate: string;
    public CompanyIds: string[];
    public Criteria: IncentiveCriteria[];
    public ApplyToAllCompanies: boolean;

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

export class IncentiveCriteriaDto
{
    public CriteriaType: CriteriaType;
    public Value: string;
    public InvertCondition: boolean;

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

// @ValidateRequest(Validator="IsAuthenticated")
// @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
export class CreateIncentive
{
    // @ApiMember(IsRequired=true)
    public Heading: string;

    // @ApiMember()
    public StorageUrl: string;

    // @ApiMember()
    public Body: string;

    // @ApiMember(IsRequired=true)
    public SuccessButtonText: string;

    // @ApiMember(IsRequired=true)
    public ActionId: number;

    // @ApiMember(IsRequired=true)
    public Frequency: IncentiveRecurrenceFrequency;

    // @ApiMember()
    public RecurrenceInterval: number;

    // @ApiMember(IsRequired=true)
    public InitialDelayInSeconds: number;

    // @ApiMember(IsRequired=true)
    public MaxDisplayCount: number;

    // @ApiMember(IsRequired=true)
    public ValidFrom: string;

    // @ApiMember(IsRequired=true)
    public ValidTo: string;

    // @ApiMember()
    public Active: boolean;

    // @ApiMember()
    public Payload: string;

    public CompanyIds: string[];
    public Criteria: IncentiveCriteriaDto[];

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

TypeScript CreateIncentive 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 /superadmin/incentives HTTP/1.1 
Host: testapi.bokamera.se 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	Heading: String,
	StorageUrl: String,
	Body: String,
	SuccessButtonText: String,
	ActionId: 0,
	Frequency: OneTime,
	RecurrenceInterval: 0,
	InitialDelayInSeconds: 0,
	MaxDisplayCount: 0,
	ValidFrom: 0001-01-01T00:00:00.0000000+00:00,
	ValidTo: 0001-01-01T00:00:00.0000000+00:00,
	Active: False,
	Payload: String,
	CompanyIds: 
	[
		00000000-0000-0000-0000-000000000000
	],
	Criteria: 
	[
		{
			CriteriaType: LicenseAvailability,
			Value: String,
			InvertCondition: False
		}
	]
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	Frequency: OneTime,
	RecurrenceInterval: 0,
	CreatedDate: 0001-01-01T00:00:00.0000000+00:00,
	ModifiedDate: 0001-01-01T00:00:00.0000000+00:00,
	CompanyIds: 
	[
		00000000-0000-0000-0000-000000000000
	],
	Criteria: 
	[
		{
			Id: 0,
			IncentiveId: 0,
			CriteriaType: LicenseAvailability,
			Value: String,
			InvertCondition: False,
			CreatedDate: 0001-01-01T00:00:00.0000000+00:00
		}
	],
	ApplyToAllCompanies: False,
	Id: 0,
	Heading: String,
	StorageUrl: String,
	SuccessButtonText: String,
	ActionId: 0,
	InitialDelayInSeconds: 0,
	MaxDisplayCount: 0,
	ValidFrom: 0001-01-01T00:00:00.0000000+00:00,
	ValidTo: 0001-01-01T00:00:00.0000000+00:00,
	Action: 
	{
		Id: 0,
		ActionType: Upgrade,
		Page: String,
		Segment: String,
		Element: String,
		LicenseTypeId: 0,
		SuggestedLicenseToUpgrade: 
		{
			Id: 0,
			Name: String,
			Description: String,
			IsExtraLicenseOption: False,
			PeriodOfNoticeDays: 0,
			Items: 
			[
				{
					Id: 0,
					Name: String,
					AllowedItems: 0
				}
			],
			Prices: 
			[
				{
					LicenseTypeId: 0,
					CountryId: String,
					Price: 0,
					Country: 
					{
						CurrencyId: String,
						CurrencyInfo: 
						{
							Name: String,
							CurrencySign: String,
							Active: False,
							ModifiedDate: 0001-01-01T00:00:00.0000000+00:00,
							Id: String
						},
						Name: String,
						Culture: String,
						TimeZone: String,
						ModifiedDate: 0001-01-01T00:00:00.0000000+00:00,
						Id: String
					},
					LicensePlanId: 0
				}
			]
		}
	},
	Payload: String
}