/* Options:
Date: 2025-05-08 21:55:30
Version: 8.51
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://blazor-gallery.servicestack.net

//Package: 
//AddServiceStackTypes: True
//AddResponseStatus: False
//AddImplicitVersion: 
//AddDescriptionAsComments: True
IncludeTypes: QueryChinookCustomers.*
//ExcludeTypes: 
//InitializeCollections: False
//TreatTypesAsStrings: 
//DefaultImports: java.math.*,java.util.*,java.io.InputStream,net.servicestack.client.*,com.google.gson.annotations.*,com.google.gson.reflect.*
*/

import java.math.*
import java.util.*
import java.io.InputStream
import net.servicestack.client.*
import com.google.gson.annotations.*
import com.google.gson.reflect.*


@Route(Path="/customers", Verbs="GET")
// @Route(Path="/customers/{CustomerId}", Verbs="GET")
open class QueryChinookCustomers : QueryDb<Customers>(), IReturn<QueryResponse<Customers>>, IGet
{
    open var customerId:Long? = null
    companion object { private val responseType = object : TypeToken<QueryResponse<Customers>>(){}.type }
    override fun getResponseType(): Any? = QueryChinookCustomers.responseType
}

@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<Customers>? = null

    @DataMember(Order=4)
    open var meta:HashMap<String,String>? = null

    @DataMember(Order=5)
    open var responseStatus:ResponseStatus? = null
}

open class QueryDb<T> : QueryBase()
{
}

open class Customers
{
    open var customerId:Long? = null
    @Required()
    open var firstName:String? = null

    @Required()
    open var lastName:String? = null

    open var company:String? = null
    open var address:String? = null
    open var city:String? = null
    open var state:String? = null
    open var country:String? = null
    open var postalCode:String? = null
    open var phone:String? = null
    open var fax:String? = null
    @Required()
    open var email:String? = null

    open var supportRepId:Long? = null
}

@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
}