ServiceStack Home (Live)

<back to all web services

Buy

The following routes are available for this service:
All Verbs/buy/{Id}
GET/Buy/{Id}
All Verbs/buy/{Id}/{Quantity}
GET/Buy

export enum SkuType
{
    Product = 'Product',
    PerDev = 'PerDev',
    PerCore = 'PerCore',
    Site = 'Site',
    Support = 'Support',
    Training = 'Training',
    Register = 'Register',
    Payment = 'Payment',
}

// @Flags()
export 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,
}

export enum LicenseType
{
    Free = 'Free',
    FreeIndividual = 'FreeIndividual',
    FreeOpenSource = 'FreeOpenSource',
    Indie = 'Indie',
    Business = 'Business',
    Enterprise = 'Enterprise',
    TextIndie = 'TextIndie',
    TextBusiness = 'TextBusiness',
    OrmLiteIndie = 'OrmLiteIndie',
    OrmLiteBusiness = 'OrmLiteBusiness',
    RedisIndie = 'RedisIndie',
    RedisBusiness = 'RedisBusiness',
    AwsIndie = 'AwsIndie',
    AwsBusiness = 'AwsBusiness',
    Trial = 'Trial',
    Site = 'Site',
    TextSite = 'TextSite',
    RedisSite = 'RedisSite',
    OrmLiteSite = 'OrmLiteSite',
}

export class Sku
{
    public id: number;
    public productId: number;
    public type: SkuType;
    public feature: LicenseFeature;
    public code: string;
    public name: string;
    public notes: string;
    // @Ignore()
    public minQty?: number;

    public maxQty?: number;
    public price: number;
    public plan: string;
    public discountOff: number;
    public discountLabelOff: string;
    public actualPrice: number;
    public isPlan: boolean;
    public isRenewal: boolean;
    public subscriptionDurationDays?: number;
    public expiryDurationDays?: number;
    public trialPeriodDays?: number;
    public supportQty: number;
    public coresQty?: number;
    public createdDate: string;
    public modifiedDate: string;
    public licenseType: LicenseType;
    public active: boolean;

    public constructor(init?: Partial<Sku>) { (Object as any).assign(this, init); }
}

export class QuoteResponse
{
    public skuId: number;
    public code: string;
    public customerId?: number;
    public modifyingExistingSubscription: boolean;
    public changingSubscriptions: boolean;
    public switchingLicensingModels: boolean;
    public replacesExistingQuantity: boolean;
    public existingSubscriptionQuantity?: number;
    public newSubscriptionQuantity?: number;
    public unusedAmount: string;
    public manualProrating: boolean;
    public unusedDays: number;
    public quantity: number;
    public minQuantity: number;
    public maxQuantity?: number;
    public subtotal: string;
    public discountDescription: string;
    public discountReceived: string;
    public discount: string;
    public total: string;
    public expiryDate: string;
    public renewalDate: string;
    public isReferrer: boolean;
    public responseStatus: ResponseStatus;

    public constructor(init?: Partial<QuoteResponse>) { (Object as any).assign(this, init); }
}

export class BuyResponse
{
    public coupon: string;
    public renewalRef: string;
    public upgradeRef: string;
    public sku: Sku;
    public quote: QuoteResponse;
    public responseStatus: ResponseStatus;

    public constructor(init?: Partial<BuyResponse>) { (Object as any).assign(this, init); }
}

export class Buy implements IGet
{
    public id: string;
    public coupon: string;
    public quantity?: number;
    public renewalRef: string;
    public upgradeRef: string;

    public constructor(init?: Partial<Buy>) { (Object as any).assign(this, init); }
}

TypeScript Buy DTOs

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

HTTP + JSON

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /buy/{Id} HTTP/1.1 
Host: account.servicestack.net 
Accept: application/json
Content-Type: application/json
Content-Length: length

{"id":"String","coupon":"String","quantity":0,"renewalRef":"String","upgradeRef":"String"}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: length

{"coupon":"String","renewalRef":"String","upgradeRef":"String","sku":{"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":"\/Date(-62135596800000-0000)\/","modifiedDate":"\/Date(-62135596800000-0000)\/","licenseType":"Free","active":false},"quote":{"skuId":0,"code":"String","customerId":0,"modifyingExistingSubscription":false,"changingSubscriptions":false,"switchingLicensingModels":false,"replacesExistingQuantity":false,"existingSubscriptionQuantity":0,"newSubscriptionQuantity":0,"unusedAmount":"String","manualProrating":false,"unusedDays":0,"quantity":0,"minQuantity":0,"maxQuantity":0,"subtotal":"String","discountDescription":"String","discountReceived":"String","discount":"String","total":"String","expiryDate":"String","renewalDate":"String","isReferrer":false,"responseStatus":{"errorCode":"String","message":"String","stackTrace":"String","errors":[{"errorCode":"String","fieldName":"String","message":"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"}}}