Required role: | Admin |
All Verbs | /query/customers |
---|
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization;
using ServiceStack;
using ServiceStack.DataAnnotations;
using MyApp.ServiceInterface;
using MyApp.ServiceModel;
namespace MyApp.ServiceInterface
{
[ValidateRequest("IsAdmin")]
[AutoQueryViewer(DefaultFields="Id,Name,Email,DisplayName,FirstName,LastName,Company,CreatedDate,Plan,IsReferrer", DefaultSearchField="Email", DefaultSearchType="Contains", IconUrl="material-icons:person", Title="Customers")]
public partial class QueryCustomers
: QueryDb<Customer>
{
}
}
namespace MyApp.ServiceModel
{
public partial class Customer
: IAddress
{
public virtual int Id { get; set; }
public virtual string Email { get; set; }
public virtual string DisplayName { get; set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
public virtual string Company { get; set; }
public virtual string PhoneNumber { get; set; }
public virtual string AddressLine1 { get; set; }
public virtual string AddressLine2 { get; set; }
public virtual string AddressCity { get; set; }
public virtual string AddressZip { get; set; }
public virtual string AddressState { get; set; }
public virtual string AddressCountry { get; set; }
public virtual string StripeCustomerId { get; set; }
public virtual string StripeCouponId { get; set; }
public virtual string Plan { get; set; }
public virtual DateTime CreatedDate { get; set; }
public virtual bool IsReferrer { get; set; }
public virtual List<Order> Orders { get; set; }
public virtual List<Subscription> Subscriptions { get; set; }
}
public partial class Order
: IAddress
{
public virtual int Id { get; set; }
public virtual int CustomerId { get; set; }
public virtual string ProductName { get; set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
public virtual string Email { get; set; }
public virtual string Company { get; set; }
public virtual string PhoneNumber { get; set; }
public virtual string AddressLine1 { get; set; }
public virtual string AddressLine2 { get; set; }
public virtual string AddressCity { get; set; }
public virtual string AddressZip { get; set; }
public virtual string AddressState { get; set; }
public virtual string AddressCountry { get; set; }
public virtual bool AgreeTerms { get; set; }
public virtual string Notes { get; set; }
public virtual string Last4 { get; set; }
public virtual int SubTotal { get; set; }
public virtual string CouponId { get; set; }
public virtual int Discount { get; set; }
public virtual int Tax { get; set; }
public virtual int Total { get; set; }
public virtual int ItemQuantity { get; set; }
public virtual int? AuthorizedQuantity { get; set; }
public virtual int? SubscriptionId { get; set; }
public virtual string LicenseRef { get; set; }
public virtual int? PaymentId { get; set; }
public virtual int? EmailId { get; set; }
public virtual bool Paid { get; set; }
public virtual DateTime CreatedDate { get; set; }
public virtual DateTime ModifiedDate { get; set; }
public virtual string ModifiedBy { get; set; }
public virtual DateTime? CancelledDate { get; set; }
public virtual string CancelledReason { get; set; }
public virtual string IpAddress { get; set; }
public virtual List<OrderDetail> OrderDetails { get; set; }
}
public partial class OrderDetail
{
public virtual int Id { get; set; }
public virtual int OrderId { get; set; }
public virtual int SkuId { get; set; }
public virtual SkuType SkuType { get; set; }
public virtual int Price { get; set; }
public virtual string Description { get; set; }
public virtual int Quantity { get; set; }
public virtual int Total { get; set; }
}
public enum SkuType
{
Product,
PerDev,
PerCore,
Site,
Support,
Training,
Register,
Payment,
}
public partial class Subscription
{
public virtual int Id { get; set; }
public virtual int CustomerId { get; set; }
public virtual string Email { get; set; }
public virtual int SkuId { get; set; }
public virtual string SkuName { get; set; }
public virtual SkuType SkuType { get; set; }
public virtual string Code { get; set; }
public virtual int Quantity { get; set; }
public virtual int SupportQuantity { get; set; }
public virtual int Total { get; set; }
public virtual bool IsPlan { get; set; }
public virtual bool IsRenewal { get; set; }
public virtual int SubscriptionDurationDays { get; set; }
public virtual DateTime? RenewalDate { get; set; }
public virtual string LicenseRef { get; set; }
public virtual string LicenseName { get; set; }
public virtual string LicenseAddress { get; set; }
public virtual LicenseType LicenseType { get; set; }
public virtual DateTime ExpiryDate { get; set; }
public virtual LicenseKey LicenseKey { get; set; }
public virtual string LicenseKeyText { get; set; }
public virtual DateTime CreatedDate { get; set; }
public virtual DateTime ModifiedDate { get; set; }
public virtual DateTime? CancelledDate { get; set; }
public virtual string StripeSubscriptionId { get; set; }
public virtual int? EmailId { get; set; }
public virtual int? EmailRenewalId { get; set; }
public virtual int? EmailExpiredId { get; set; }
public virtual int? RenewalSubscriptionId { get; set; }
public virtual string ExternalRef { get; set; }
public virtual string Notes { get; set; }
public virtual string Error { get; set; }
}
}
namespace ServiceStack
{
public partial class LicenseKey
{
public virtual string Ref { get; set; }
public virtual string Name { get; set; }
public virtual LicenseType Type { get; set; }
public virtual long Meta { get; set; }
public virtual string Hash { get; set; }
public virtual string Halg { get; set; }
public virtual DateTime Expiry { get; set; }
}
public enum LicenseType
{
Free,
FreeIndividual,
FreeOpenSource,
Indie,
Business,
Enterprise,
TextIndie,
TextBusiness,
OrmLiteIndie,
OrmLiteBusiness,
RedisIndie,
RedisBusiness,
AwsIndie,
AwsBusiness,
Trial,
Site,
TextSite,
RedisSite,
OrmLiteSite,
}
[DataContract]
public partial class QueryBase
{
[DataMember(Order=1)]
public virtual int? Skip { get; set; }
[DataMember(Order=2)]
public virtual int? Take { get; set; }
[DataMember(Order=3)]
public virtual string OrderBy { get; set; }
[DataMember(Order=4)]
public virtual string OrderByDesc { get; set; }
[DataMember(Order=5)]
public virtual string Include { get; set; }
[DataMember(Order=6)]
public virtual string Fields { get; set; }
[DataMember(Order=7)]
public virtual Dictionary<string, string> Meta { get; set; }
}
public partial class QueryDb<T>
: QueryBase
{
}
[DataContract]
public partial class QueryResponse<T>
{
[DataMember(Order=1)]
public virtual int Offset { get; set; }
[DataMember(Order=2)]
public virtual int Total { get; set; }
[DataMember(Order=3)]
public virtual List<Customer> Results { get; set; } = [];
[DataMember(Order=4)]
public virtual Dictionary<string, string> Meta { get; set; }
[DataMember(Order=5)]
public virtual ResponseStatus ResponseStatus { get; set; }
}
}
To override the Content-type in your clients, use the HTTP Accept Header, append the .json suffix or ?format=json
To embed the response in a jsonp callback, append ?callback=myCallback
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /query/customers HTTP/1.1
Host: account.servicestack.net
Accept: application/json
Content-Type: application/json
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: application/json Content-Length: length {"offset":0,"total":0,"results":[{"id":0,"email":"String","displayName":"String","firstName":"String","lastName":"String","company":"String","phoneNumber":"String","addressLine1":"String","addressLine2":"String","addressCity":"String","addressZip":"String","addressState":"String","addressCountry":"String","stripeCustomerId":"String","stripeCouponId":"String","plan":"String","createdDate":"\/Date(-62135596800000-0000)\/","isReferrer":false,"orders":[{"id":0,"customerId":0,"productName":"String","firstName":"String","lastName":"String","email":"String","company":"String","phoneNumber":"String","addressLine1":"String","addressLine2":"String","addressCity":"String","addressZip":"String","addressState":"String","addressCountry":"String","agreeTerms":false,"notes":"String","last4":"String","subTotal":0,"couponId":"String","discount":0,"tax":0,"total":0,"itemQuantity":0,"authorizedQuantity":0,"subscriptionId":0,"licenseRef":"String","paymentId":0,"emailId":0,"paid":false,"createdDate":"\/Date(-62135596800000-0000)\/","modifiedDate":"\/Date(-62135596800000-0000)\/","modifiedBy":"String","cancelledDate":"\/Date(-62135596800000-0000)\/","cancelledReason":"String","ipAddress":"String","orderDetails":[{"id":0,"orderId":0,"skuId":0,"skuType":"Product","price":0,"description":"String","quantity":0,"total":0}]}],"subscriptions":[{"id":0,"customerId":0,"email":"String","skuId":0,"skuName":"String","skuType":"Product","code":"String","quantity":0,"supportQuantity":0,"total":0,"isPlan":false,"isRenewal":false,"subscriptionDurationDays":0,"renewalDate":"\/Date(-62135596800000-0000)\/","licenseRef":"String","licenseName":"String","licenseAddress":"String","licenseType":"Free","expiryDate":"\/Date(-62135596800000-0000)\/","licenseKey":{"ref":"String","name":"String","type":"Free","meta":0,"hash":"String","halg":"String","expiry":"\/Date(-62135596800000-0000)\/"},"licenseKeyText":"String","createdDate":"\/Date(-62135596800000-0000)\/","modifiedDate":"\/Date(-62135596800000-0000)\/","cancelledDate":"\/Date(-62135596800000-0000)\/","stripeSubscriptionId":"String","emailId":0,"emailRenewalId":0,"emailExpiredId":0,"renewalSubscriptionId":0,"externalRef":"String","notes":"String","error":"String"}]}],"meta":{"String":"String"},"responseStatus":{"errorCode":"String","message":"String","stackTrace":"String","errors":[{"errorCode":"String","fieldName":"String","message":"String","meta":{"String":"String"}}],"meta":{"String":"String"}}}