Required role: | Admin |
import java.math.*
import java.util.*
import java.io.InputStream
import net.servicestack.client.*
import com.google.gson.annotations.*
import com.google.gson.reflect.*
@ValidateRequest(Validator="IsAdmin")
open class QueryProducts : QueryDb<Product>()
{
}
open class QueryDb<T> : QueryBase()
{
}
@DataContract
open class QueryBase
{
@DataMember(Order=1)
open var skip:Int? = null
@DataMember(Order=2)
open var take:Int? = null
@DataMember(Order=3)
open var orderBy:String? = null
@DataMember(Order=4)
open var orderByDesc:String? = null
@DataMember(Order=5)
open var include:String? = null
@DataMember(Order=6)
open var fields:String? = null
@DataMember(Order=7)
open var meta:HashMap<String,String>? = null
}
open class Product
{
open var id:Int? = null
open var name:String? = null
open var createdDate:Date? = null
open var modifiedDate:Date? = null
open var skus:ArrayList<Sku>? = null
open var active:Boolean? = null
}
open class Sku
{
open var id:Int? = null
open var productId:Int? = null
@SerializedName("type") open var Type:SkuType? = null
open var feature:LicenseFeature? = null
open var code:String? = null
open var name:String? = null
open var notes:String? = null
@Ignore()
open var minQty:Int? = null
open var maxQty:Int? = null
open var price:Int? = null
open var plan:String? = null
open var discountOff:Int? = null
open var discountLabelOff:String? = null
open var actualPrice:Int? = null
open var isPlan:Boolean? = null
open var isRenewal:Boolean? = null
open var subscriptionDurationDays:Int? = null
open var expiryDurationDays:Int? = null
open var trialPeriodDays:Int? = null
open var supportQty:Int? = null
open var coresQty:Int? = null
open var createdDate:Date? = null
open var modifiedDate:Date? = null
open var licenseType:LicenseType? = null
open var active:Boolean? = null
}
enum class SkuType
{
Product,
PerDev,
PerCore,
Site,
Support,
Training,
Register,
Payment,
}
@Flags()
enum class LicenseFeature(val value:Int)
{
@SerializedName("0") None(0),
@SerializedName("0") Free(0),
@SerializedName("1") Premium(1),
@SerializedName("2") Text(2),
@SerializedName("4") Client(4),
@SerializedName("8") Common(8),
@SerializedName("16") Redis(16),
@SerializedName("18") RedisSku(18),
@SerializedName("32") OrmLite(32),
@SerializedName("34") OrmLiteSku(34),
@SerializedName("64") ServiceStack(64),
@SerializedName("128") Server(128),
@SerializedName("256") Razor(256),
@SerializedName("512") Admin(512),
@SerializedName("1024") Aws(1024),
@SerializedName("1026") AwsSku(1026),
@SerializedName("2047") All(2047),
}
enum class LicenseType
{
Free,
FreeIndividual,
FreeOpenSource,
Indie,
Business,
Enterprise,
TextIndie,
TextBusiness,
OrmLiteIndie,
OrmLiteBusiness,
RedisIndie,
RedisBusiness,
AwsIndie,
AwsBusiness,
Trial,
Site,
TextSite,
RedisSite,
OrmLiteSite,
}
@DataContract
open class QueryResponse<T>
{
@DataMember(Order=1)
open var offset:Int? = null
@DataMember(Order=2)
open var total:Int? = null
@DataMember(Order=3)
open var results:ArrayList<Customer> = ArrayList<Customer>()
@DataMember(Order=4)
open var meta:HashMap<String,String>? = null
@DataMember(Order=5)
open var responseStatus:ResponseStatus? = null
}
open class Customer : IAddress
{
open var id:Int? = null
open var email:String? = null
open var displayName:String? = null
open var firstName:String? = null
open var lastName:String? = null
open var company:String? = null
open var phoneNumber:String? = null
override var addressLine1:String? = null
override var addressLine2:String? = null
override var addressCity:String? = null
override var addressZip:String? = null
override var addressState:String? = null
override var addressCountry:String? = null
open var stripeCustomerId:String? = null
open var stripeCouponId:String? = null
open var plan:String? = null
open var createdDate:Date? = null
open var isReferrer:Boolean? = null
open var orders:ArrayList<Order>? = null
open var subscriptions:ArrayList<Subscription>? = null
}
open class Order : IAddress
{
open var id:Int? = null
open var customerId:Int? = null
open var productName:String? = null
open var firstName:String? = null
open var lastName:String? = null
open var email:String? = null
open var company:String? = null
open var phoneNumber:String? = null
override var addressLine1:String? = null
override var addressLine2:String? = null
override var addressCity:String? = null
override var addressZip:String? = null
override var addressState:String? = null
override var addressCountry:String? = null
open var agreeTerms:Boolean? = null
open var notes:String? = null
open var last4:String? = null
open var subTotal:Int? = null
open var couponId:String? = null
open var discount:Int? = null
open var tax:Int? = null
open var total:Int? = null
open var itemQuantity:Int? = null
open var authorizedQuantity:Int? = null
open var subscriptionId:Int? = null
open var licenseRef:String? = null
open var paymentId:Int? = null
open var emailId:Int? = null
open var paid:Boolean? = null
open var createdDate:Date? = null
open var modifiedDate:Date? = null
open var modifiedBy:String? = null
open var cancelledDate:Date? = null
open var cancelledReason:String? = null
open var ipAddress:String? = null
open var orderDetails:ArrayList<OrderDetail>? = null
}
open class OrderDetail
{
open var id:Int? = null
open var orderId:Int? = null
open var skuId:Int? = null
open var skuType:SkuType? = null
open var price:Int? = null
open var description:String? = null
open var quantity:Int? = null
open var total:Int? = null
}
open class Subscription
{
open var id:Int? = null
open var customerId:Int? = null
open var email:String? = null
open var skuId:Int? = null
open var skuName:String? = null
open var skuType:SkuType? = null
open var code:String? = null
open var quantity:Int? = null
open var supportQuantity:Int? = null
open var total:Int? = null
open var isPlan:Boolean? = null
open var isRenewal:Boolean? = null
open var subscriptionDurationDays:Int? = null
open var renewalDate:Date? = null
open var licenseRef:String? = null
open var licenseName:String? = null
open var licenseAddress:String? = null
open var licenseType:LicenseType? = null
open var expiryDate:Date? = null
open var licenseKey:LicenseKey? = null
open var licenseKeyText:String? = null
open var createdDate:Date? = null
open var modifiedDate:Date? = null
open var cancelledDate:Date? = null
open var stripeSubscriptionId:String? = null
open var emailId:Int? = null
open var emailRenewalId:Int? = null
open var emailExpiredId:Int? = null
open var renewalSubscriptionId:Int? = null
open var externalRef:String? = null
open var notes:String? = null
open var error:String? = null
}
open class LicenseKey
{
open var ref:String? = null
open var name:String? = null
@SerializedName("type") open var Type:LicenseType? = null
open var meta:Long? = null
open var hash:String? = null
open var halg:String? = null
open var expiry:Date? = null
}
To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /xml/reply/QueryProducts HTTP/1.1
Host: account.servicestack.net
Accept: application/xml
Content-Type: application/xml
Content-Length: length
<QueryProducts xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/MyApp.ServiceInterface">
<Skip xmlns="http://schemas.servicestack.net/types">0</Skip>
<Take xmlns="http://schemas.servicestack.net/types">0</Take>
<OrderBy xmlns="http://schemas.servicestack.net/types">String</OrderBy>
<OrderByDesc xmlns="http://schemas.servicestack.net/types">String</OrderByDesc>
<Include xmlns="http://schemas.servicestack.net/types">String</Include>
<Fields xmlns="http://schemas.servicestack.net/types">String</Fields>
<Meta xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns="http://schemas.servicestack.net/types">
<d2p1:KeyValueOfstringstring>
<d2p1:Key>String</d2p1:Key>
<d2p1:Value>String</d2p1:Value>
</d2p1:KeyValueOfstringstring>
</Meta>
</QueryProducts>
HTTP/1.1 200 OK Content-Type: application/xml Content-Length: length <QueryResponseOfProducttlJ4_P31p xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.servicestack.net/types"> <Offset>0</Offset> <Total>0</Total> <Results xmlns:d2p1="http://schemas.datacontract.org/2004/07/MyApp.ServiceModel"> <d2p1:Product> <d2p1:Active>false</d2p1:Active> <d2p1:CreatedDate>0001-01-01T00:00:00</d2p1:CreatedDate> <d2p1:Id>0</d2p1:Id> <d2p1:ModifiedDate>0001-01-01T00:00:00</d2p1:ModifiedDate> <d2p1:Name>String</d2p1:Name> <d2p1:Skus> <d2p1:Sku> <d2p1:Active>false</d2p1:Active> <d2p1:Code>String</d2p1:Code> <d2p1:CoresQty>0</d2p1:CoresQty> <d2p1:CreatedDate>0001-01-01T00:00:00</d2p1:CreatedDate> <d2p1:DiscountLabelOff>String</d2p1:DiscountLabelOff> <d2p1:DiscountOff>0</d2p1:DiscountOff> <d2p1:ExpiryDurationDays>0</d2p1:ExpiryDurationDays> <d2p1:Feature>None</d2p1:Feature> <d2p1:Id>0</d2p1:Id> <d2p1:IsPlan>false</d2p1:IsPlan> <d2p1:IsRenewal>false</d2p1:IsRenewal> <d2p1:LicenseType>Free</d2p1:LicenseType> <d2p1:MaxQty>0</d2p1:MaxQty> <d2p1:ModifiedDate>0001-01-01T00:00:00</d2p1:ModifiedDate> <d2p1:Name>String</d2p1:Name> <d2p1:Notes>String</d2p1:Notes> <d2p1:Plan>String</d2p1:Plan> <d2p1:Price>0</d2p1:Price> <d2p1:ProductId>0</d2p1:ProductId> <d2p1:SubscriptionDurationDays>0</d2p1:SubscriptionDurationDays> <d2p1:SupportQty>0</d2p1:SupportQty> <d2p1:TrialPeriodDays>0</d2p1:TrialPeriodDays> <d2p1:Type>Product</d2p1:Type> </d2p1:Sku> </d2p1:Skus> </d2p1:Product> </Results> <Meta xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> <d2p1:KeyValueOfstringstring> <d2p1:Key>String</d2p1:Key> <d2p1:Value>String</d2p1:Value> </d2p1:KeyValueOfstringstring> </Meta> <ResponseStatus> <ErrorCode>String</ErrorCode> <Message>String</Message> <StackTrace>String</StackTrace> <Errors> <ResponseError> <ErrorCode>String</ErrorCode> <FieldName>String</FieldName> <Message>String</Message> <Meta xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> <d5p1:KeyValueOfstringstring> <d5p1:Key>String</d5p1:Key> <d5p1:Value>String</d5p1:Value> </d5p1:KeyValueOfstringstring> </Meta> </ResponseError> </Errors> <Meta xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> <d3p1:KeyValueOfstringstring> <d3p1:Key>String</d3p1:Key> <d3p1:Value>String</d3p1:Value> </d3p1:KeyValueOfstringstring> </Meta> </ResponseStatus> </QueryResponseOfProducttlJ4_P31p>