ServiceStack Home (Live)

<back to all web services

QueryProducts

Admin
Requires Authentication
Required role:Admin
Imports System
Imports System.IO
Imports System.Collections
Imports System.Collections.Generic
Imports System.Runtime.Serialization
Imports ServiceStack
Imports ServiceStack.DataAnnotations
Imports MyApp.ServiceInterface
Imports MyApp.ServiceModel

Namespace Global

    Namespace MyApp.ServiceInterface

        <ValidateRequest(Validator:="IsAdmin")>
        Public Partial Class QueryProducts
            Inherits QueryDb(Of Product)
        End Class
    End Namespace

    Namespace MyApp.ServiceModel

        Public Partial Class Customer
            Implements IAddress
            Public Overridable Property Id As Integer
            Public Overridable Property Email As String
            Public Overridable Property DisplayName As String
            Public Overridable Property FirstName As String
            Public Overridable Property LastName As String
            Public Overridable Property Company As String
            Public Overridable Property PhoneNumber As String
            Public Overridable Property AddressLine1 As String Implements IAddress.AddressLine1
            Public Overridable Property AddressLine2 As String Implements IAddress.AddressLine2
            Public Overridable Property AddressCity As String Implements IAddress.AddressCity
            Public Overridable Property AddressZip As String Implements IAddress.AddressZip
            Public Overridable Property AddressState As String Implements IAddress.AddressState
            Public Overridable Property AddressCountry As String Implements IAddress.AddressCountry
            Public Overridable Property StripeCustomerId As String
            Public Overridable Property StripeCouponId As String
            Public Overridable Property Plan As String
            Public Overridable Property CreatedDate As Date
            Public Overridable Property IsReferrer As Boolean
            Public Overridable Property Orders As List(Of Order)
            Public Overridable Property Subscriptions As List(Of Subscription)
        End Class

        Public Partial Class Order
            Implements IAddress
            Public Overridable Property Id As Integer
            Public Overridable Property CustomerId As Integer
            Public Overridable Property ProductName As String
            Public Overridable Property FirstName As String
            Public Overridable Property LastName As String
            Public Overridable Property Email As String
            Public Overridable Property Company As String
            Public Overridable Property PhoneNumber As String
            Public Overridable Property AddressLine1 As String Implements IAddress.AddressLine1
            Public Overridable Property AddressLine2 As String Implements IAddress.AddressLine2
            Public Overridable Property AddressCity As String Implements IAddress.AddressCity
            Public Overridable Property AddressZip As String Implements IAddress.AddressZip
            Public Overridable Property AddressState As String Implements IAddress.AddressState
            Public Overridable Property AddressCountry As String Implements IAddress.AddressCountry
            Public Overridable Property AgreeTerms As Boolean
            Public Overridable Property Notes As String
            Public Overridable Property Last4 As String
            Public Overridable Property SubTotal As Integer
            Public Overridable Property CouponId As String
            Public Overridable Property Discount As Integer
            Public Overridable Property Tax As Integer
            Public Overridable Property Total As Integer
            Public Overridable Property ItemQuantity As Integer
            Public Overridable Property AuthorizedQuantity As Integer?
            Public Overridable Property SubscriptionId As Integer?
            Public Overridable Property LicenseRef As String
            Public Overridable Property PaymentId As Integer?
            Public Overridable Property EmailId As Integer?
            Public Overridable Property Paid As Boolean
            Public Overridable Property CreatedDate As Date
            Public Overridable Property ModifiedDate As Date
            Public Overridable Property ModifiedBy As String
            Public Overridable Property CancelledDate As Date?
            Public Overridable Property CancelledReason As String
            Public Overridable Property IpAddress As String
            Public Overridable Property OrderDetails As List(Of OrderDetail)
        End Class

        Public Partial Class OrderDetail
            Public Overridable Property Id As Integer
            Public Overridable Property OrderId As Integer
            Public Overridable Property SkuId As Integer
            Public Overridable Property SkuType As SkuType
            Public Overridable Property Price As Integer
            Public Overridable Property Description As String
            Public Overridable Property Quantity As Integer
            Public Overridable Property Total As Integer
        End Class

        Public Partial Class Product
            Public Overridable Property Id As Integer
            Public Overridable Property Name As String
            Public Overridable Property CreatedDate As Date
            Public Overridable Property ModifiedDate As Date
            Public Overridable Property Skus As List(Of Sku)
            Public Overridable Property Active As Boolean
        End Class

        Public Partial Class Sku
            Public Overridable Property Id As Integer
            Public Overridable Property ProductId As Integer
            Public Overridable Property Type As SkuType
            Public Overridable Property Feature As LicenseFeature
            Public Overridable Property Code As String
            Public Overridable Property Name As String
            Public Overridable Property Notes As String
            <Ignore>
            Public Overridable Property MinQty As Integer?

            Public Overridable Property MaxQty As Integer?
            Public Overridable Property Price As Integer
            Public Overridable Property Plan As String
            Public Overridable Property DiscountOff As Integer
            Public Overridable Property DiscountLabelOff As String
            Public Overridable Property ActualPrice As Integer
            Public Overridable Property IsPlan As Boolean
            Public Overridable Property IsRenewal As Boolean
            Public Overridable Property SubscriptionDurationDays As Integer?
            Public Overridable Property ExpiryDurationDays As Integer?
            Public Overridable Property TrialPeriodDays As Integer?
            Public Overridable Property SupportQty As Integer
            Public Overridable Property CoresQty As Integer?
            Public Overridable Property CreatedDate As Date
            Public Overridable Property ModifiedDate As Date
            Public Overridable Property LicenseType As LicenseType
            Public Overridable Property Active As Boolean
        End Class

        Public Enum SkuType
            Product
            PerDev
            PerCore
            Site
            Support
            Training
            Register
            Payment
        End Enum

        Public Partial Class Subscription
            Public Overridable Property Id As Integer
            Public Overridable Property CustomerId As Integer
            Public Overridable Property Email As String
            Public Overridable Property SkuId As Integer
            Public Overridable Property SkuName As String
            Public Overridable Property SkuType As SkuType
            Public Overridable Property Code As String
            Public Overridable Property Quantity As Integer
            Public Overridable Property SupportQuantity As Integer
            Public Overridable Property Total As Integer
            Public Overridable Property IsPlan As Boolean
            Public Overridable Property IsRenewal As Boolean
            Public Overridable Property SubscriptionDurationDays As Integer
            Public Overridable Property RenewalDate As Date?
            Public Overridable Property LicenseRef As String
            Public Overridable Property LicenseName As String
            Public Overridable Property LicenseAddress As String
            Public Overridable Property LicenseType As LicenseType
            Public Overridable Property ExpiryDate As Date
            Public Overridable Property LicenseKey As LicenseKey
            Public Overridable Property LicenseKeyText As String
            Public Overridable Property CreatedDate As Date
            Public Overridable Property ModifiedDate As Date
            Public Overridable Property CancelledDate As Date?
            Public Overridable Property StripeSubscriptionId As String
            Public Overridable Property EmailId As Integer?
            Public Overridable Property EmailRenewalId As Integer?
            Public Overridable Property EmailExpiredId As Integer?
            Public Overridable Property RenewalSubscriptionId As Integer?
            Public Overridable Property ExternalRef As String
            Public Overridable Property Notes As String
            Public Overridable Property [Error] As String
        End Class
    End Namespace

    Namespace ServiceStack

        <Flags>
        Public Enum LicenseFeature
            None = 0
            Free = 0
            Premium = 1
            Text = 2
            Client = 4
            Common = 8
            Redis = 16
            RedisSku = 18
            OrmLite = 32
            OrmLiteSku = 34
            ServiceStack = 64
            Server = 128
            Razor = 256
            Admin = 512
            Aws = 1024
            AwsSku = 1026
            All = 2047
        End Enum

        Public Partial Class LicenseKey
            Public Overridable Property Ref As String
            Public Overridable Property Name As String
            Public Overridable Property Type As LicenseType
            Public Overridable Property Meta As Long
            Public Overridable Property Hash As String
            Public Overridable Property Halg As String
            Public Overridable Property Expiry As Date
        End Class

        Public Enum LicenseType
            Free
            FreeIndividual
            FreeOpenSource
            Indie
            Business
            Enterprise
            TextIndie
            TextBusiness
            OrmLiteIndie
            OrmLiteBusiness
            RedisIndie
            RedisBusiness
            AwsIndie
            AwsBusiness
            Trial
            Site
            TextSite
            RedisSite
            OrmLiteSite
        End Enum

        <DataContract>
        Public Partial Class QueryBase
            <DataMember(Order:=1)>
            Public Overridable Property Skip As Integer?

            <DataMember(Order:=2)>
            Public Overridable Property Take As Integer?

            <DataMember(Order:=3)>
            Public Overridable Property OrderBy As String

            <DataMember(Order:=4)>
            Public Overridable Property OrderByDesc As String

            <DataMember(Order:=5)>
            Public Overridable Property Include As String

            <DataMember(Order:=6)>
            Public Overridable Property Fields As String

            <DataMember(Order:=7)>
            Public Overridable Property Meta As Dictionary(Of String, String)
        End Class

        Public Partial Class QueryDb(Of T)
            Inherits QueryBase
        End Class

        <DataContract>
        Public Partial Class QueryResponse(Of T)
            <DataMember(Order:=1)>
            Public Overridable Property Offset As Integer

            <DataMember(Order:=2)>
            Public Overridable Property Total As Integer

            <DataMember(Order:=3)>
            Public Overridable Property Results As List(Of Customer) = New List(Of Customer)

            <DataMember(Order:=4)>
            Public Overridable Property Meta As Dictionary(Of String, String)

            <DataMember(Order:=5)>
            Public Overridable Property ResponseStatus As ResponseStatus
        End Class
    End Namespace
End Namespace

VB.NET QueryProducts 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 /jsv/reply/QueryProducts HTTP/1.1 
Host: account.servicestack.net 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	skip: 0,
	take: 0,
	orderBy: String,
	orderByDesc: String,
	include: String,
	fields: String,
	meta: 
	{
		String: String
	}
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	offset: 0,
	total: 0,
	results: 
	[
		{
			id: 0,
			name: String,
			createdDate: 0001-01-01,
			modifiedDate: 0001-01-01,
			skus: 
			[
				{
					id: 0,
					productId: 0,
					type: Product,
					feature: 0,
					code: String,
					name: String,
					notes: String,
					maxQty: 0,
					price: 0,
					plan: String,
					discountOff: 0,
					discountLabelOff: String,
					actualPrice: 0,
					isPlan: False,
					isRenewal: False,
					subscriptionDurationDays: 0,
					expiryDurationDays: 0,
					trialPeriodDays: 0,
					supportQty: 0,
					coresQty: 0,
					createdDate: 0001-01-01,
					modifiedDate: 0001-01-01,
					licenseType: Free,
					active: False
				}
			],
			active: False
		}
	],
	meta: 
	{
		String: String
	},
	responseStatus: 
	{
		errorCode: String,
		message: String,
		stackTrace: String,
		errors: 
		[
			{
				errorCode: String,
				fieldName: String,
				message: String,
				meta: 
				{
					String: String
				}
			}
		],
		meta: 
		{
			String: String
		}
	}
}