Requires the role: | superadmin |
GET | /superadmin/incentives/ | Query incentives |
---|
import java.math.*
import java.util.*
import net.servicestack.client.*
import com.google.gson.annotations.*
import com.google.gson.reflect.*
@ValidateRequest(Validator="IsAuthenticated")
@ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
open class AdminIncentivesQuery : QueryDb<Incentive, QueryResponse<AdminIncentiveQueryResponse>>()
{
var Id:Int? = null
var CompanyId:UUID? = null
var ValidFrom:Date? = null
var ValidTo:Date? = null
var ActionId:Int? = null
var Active:Boolean? = null
var IncludeCriteria:Boolean? = null
var IncludeCompanies:Boolean? = null
var IncludeAction:Boolean? = null
}
open class QueryDb<From, Into> : QueryBase()
{
}
@DataContract
open class QueryBase
{
/**
* Skip over a given number of elements in a sequence and then return the remainder. Use this when you need paging.<br/><br/><strong>Example:</strong><br/><code>?skip=10&orderBy=Id</code>
*/
@DataMember(Order=1)
var Skip:Int? = null
/**
* Return a given number of elements in a sequence and then skip over the remainder. Use this when you need paging.<br/><br/><strong>Example:</strong><br/><code>?take=20</code>
*/
@DataMember(Order=2)
var Take:Int? = null
/**
* Comma separated list of fields to order by. Prefix the field name with a minus if you wan't to invert the sort for that field.<br/><br/><strong>Example:</strong><br/><code>?orderBy=Id,-Age,FirstName</code>
*/
@DataMember(Order=3)
var OrderBy:String? = null
/**
* Comma separated list of fields to order by in descending order. Prefix the field name with a minus if you wan't to invert the sort for that field.<br/><br/><strong>Example:</strong><br/><code>?orderByDesc=Id,-Age,FirstName</code>
*/
@DataMember(Order=4)
var OrderByDesc:String? = null
/**
* Include any of the aggregates <code>AVG, COUNT, FIRST, LAST, MAX, MIN, SUM</code> in your result set. The results will be returned in the meta field.<br/><br/><strong>Example:</strong><br/><code>?include=COUNT(*) as Total</code><br/><br/>or multiple fields with<br/><code>?include=Count(*) Total, Min(Age), AVG(Age) AverageAge</code><br/></br>or unique with<br/><code>?include=COUNT(DISTINCT LivingStatus) as UniqueStatus</code>
*/
@DataMember(Order=5)
var Include:String? = null
@DataMember(Order=6)
var Fields:String? = null
@DataMember(Order=7)
var Meta:HashMap<String,String> = HashMap<String,String>()
}
open class Incentive : BaseModel()
{
var Id:Int? = null
var Heading:String? = null
var StorageUrl:String? = null
var SuccessButtonText:String? = null
var Active:Boolean? = null
var ActionId:Int? = null
var Frequency:IncentiveRecurrenceFrequency? = null
var RecurrenceInterval:Long? = null
var InitialDelayInSeconds:Int? = null
var MaxDisplayCount:Int? = null
var ValidFrom:Date? = null
var ValidTo:Date? = null
var CreatedDate:Date? = null
var ModifiedDate:Date? = null
var AppliesToAllCompanies:Boolean? = null
var Payload:String? = null
var InitialDeferredDays:Int? = null
var Companies:ArrayList<IncentiveCompanyRelation> = ArrayList<IncentiveCompanyRelation>()
var Criteria:ArrayList<IncentiveCriteria> = ArrayList<IncentiveCriteria>()
@Ignore()
var Action:IncentiveAction? = null
}
open class BaseModel
{
}
enum class IncentiveRecurrenceFrequency(val value:Int)
{
OneTime(1),
Weekly(2),
Monthly(3),
}
open class IncentiveCompanyRelation : BaseModel()
{
var Id:Long? = null
var CompanyId:UUID? = null
var IncentiveId:Int? = null
var CreatedDate:Date? = null
}
open class IncentiveCriteria : BaseModel()
{
var Id:Int? = null
var IncentiveId:Int? = null
var CriteriaType:CriteriaType? = null
var Value:String? = null
var InvertCondition:Boolean? = null
var CreatedDate:Date? = null
}
enum class CriteriaType
{
LicenseAvailability,
SmsActivation,
EAccountingActivation,
CodeLockActivation,
SocialActivation,
OnlinePaymentActivation,
FollowUpMessageActivation,
RatingActivation,
}
open class IncentiveAction : BaseModel()
{
var Id:Int? = null
var Description:String? = null
var ActionType:IncentiveActionType? = null
var Page:String? = null
var Segment:String? = null
var Element:String? = null
var LicenseTypeId:Int? = null
}
enum class IncentiveActionType(val value:Int)
{
Upgrade(1),
AddOn(2),
Information(3),
}
@DataContract
open class QueryResponse<AccessKeyTypeResponse>
{
@DataMember(Order=1)
var Offset:Int? = null
@DataMember(Order=2)
var Total:Int? = null
@DataMember(Order=3)
var Results:ArrayList<AccessKeyTypeResponse> = ArrayList<AccessKeyTypeResponse>()
@DataMember(Order=4)
var Meta:HashMap<String,String> = HashMap<String,String>()
@DataMember(Order=5)
var ResponseStatus:ResponseStatus? = null
}
open class AccessKeyTypeResponse
{
var Id:Int? = null
var KeyType:String? = null
var Description:String? = null
}
Kotlin AdminIncentivesQuery DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
GET /superadmin/incentives/ HTTP/1.1 Host: api.bookmore.com Accept: text/jsv
HTTP/1.1 200 OK Content-Type: text/jsv Content-Length: length { Offset: 0, Total: 0, Results: [ { Offset: 0, Total: 0, Results: [ { 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, Action: { Id: 0, Description: String, 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: [ { 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 }, MonthlyPayment: True, LicenseTypeId: 0, CountryId: String, Price: 0, ModifiedDate: 0001-01-01T00:00:00.0000000+00:00 } ] } }, 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, Payload: String, Body: String, InitialDeferredDays: 0, Active: False, Criteria: [ { CriteriaType: LicenseAvailability, Value: String, InvertCondition: False } ] } ], Meta: { String: String }, ResponseStatus: { ErrorCode: String, Message: String, StackTrace: String, Errors: [ { ErrorCode: String, FieldName: String, Message: String, Meta: { String: String } } ], Meta: { String: String } } } ], Meta: { String: String }, ResponseStatus: { ErrorCode: String, Message: String, StackTrace: String, Errors: [ { ErrorCode: String, FieldName: String, Message: String, Meta: { String: String } } ], Meta: { String: String } } }