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
import 'package:servicestack/servicestack.dart';

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

// @flags()
class LicenseFeature
{
    static const LicenseFeature None = const LicenseFeature._(0);
    static const LicenseFeature Free = const LicenseFeature._(0);
    static const LicenseFeature Premium = const LicenseFeature._(1);
    static const LicenseFeature Text = const LicenseFeature._(2);
    static const LicenseFeature Client = const LicenseFeature._(4);
    static const LicenseFeature Common = const LicenseFeature._(8);
    static const LicenseFeature Redis = const LicenseFeature._(16);
    static const LicenseFeature RedisSku = const LicenseFeature._(18);
    static const LicenseFeature OrmLite = const LicenseFeature._(32);
    static const LicenseFeature OrmLiteSku = const LicenseFeature._(34);
    static const LicenseFeature ServiceStack = const LicenseFeature._(64);
    static const LicenseFeature Server = const LicenseFeature._(128);
    static const LicenseFeature Razor = const LicenseFeature._(256);
    static const LicenseFeature Admin = const LicenseFeature._(512);
    static const LicenseFeature Aws = const LicenseFeature._(1024);
    static const LicenseFeature AwsSku = const LicenseFeature._(1026);
    static const LicenseFeature All = const LicenseFeature._(2047);

    final int _value;
    const LicenseFeature._(this._value);
    int get value => _value;
    static List<LicenseFeature> get values => const [None,Free,Premium,Text,Client,Common,Redis,RedisSku,OrmLite,OrmLiteSku,ServiceStack,Server,Razor,Admin,Aws,AwsSku,All];
}

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

class Sku implements IConvertible
{
    int? id;
    int? productId;
    SkuType? type;
    LicenseFeature? feature;
    String? code;
    String? name;
    String? notes;
    // @ignore()
    int? minQty;

    int? maxQty;
    int? price;
    String? plan;
    int? discountOff;
    String? discountLabelOff;
    int? actualPrice;
    bool? isPlan;
    bool? isRenewal;
    int? subscriptionDurationDays;
    int? expiryDurationDays;
    int? trialPeriodDays;
    int? supportQty;
    int? coresQty;
    DateTime? createdDate;
    DateTime? modifiedDate;
    LicenseType? licenseType;
    bool? active;

    Sku({this.id,this.productId,this.type,this.feature,this.code,this.name,this.notes,this.minQty,this.maxQty,this.price,this.plan,this.discountOff,this.discountLabelOff,this.actualPrice,this.isPlan,this.isRenewal,this.subscriptionDurationDays,this.expiryDurationDays,this.trialPeriodDays,this.supportQty,this.coresQty,this.createdDate,this.modifiedDate,this.licenseType,this.active});
    Sku.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        id = json['id'];
        productId = json['productId'];
        type = JsonConverters.fromJson(json['type'],'SkuType',context!);
        feature = JsonConverters.fromJson(json['feature'],'LicenseFeature',context!);
        code = json['code'];
        name = json['name'];
        notes = json['notes'];
        minQty = json['minQty'];
        maxQty = json['maxQty'];
        price = json['price'];
        plan = json['plan'];
        discountOff = json['discountOff'];
        discountLabelOff = json['discountLabelOff'];
        actualPrice = json['actualPrice'];
        isPlan = json['isPlan'];
        isRenewal = json['isRenewal'];
        subscriptionDurationDays = json['subscriptionDurationDays'];
        expiryDurationDays = json['expiryDurationDays'];
        trialPeriodDays = json['trialPeriodDays'];
        supportQty = json['supportQty'];
        coresQty = json['coresQty'];
        createdDate = JsonConverters.fromJson(json['createdDate'],'DateTime',context!);
        modifiedDate = JsonConverters.fromJson(json['modifiedDate'],'DateTime',context!);
        licenseType = JsonConverters.fromJson(json['licenseType'],'LicenseType',context!);
        active = json['active'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'id': id,
        'productId': productId,
        'type': JsonConverters.toJson(type,'SkuType',context!),
        'feature': JsonConverters.toJson(feature,'LicenseFeature',context!),
        'code': code,
        'name': name,
        'notes': notes,
        'minQty': minQty,
        'maxQty': maxQty,
        'price': price,
        'plan': plan,
        'discountOff': discountOff,
        'discountLabelOff': discountLabelOff,
        'actualPrice': actualPrice,
        'isPlan': isPlan,
        'isRenewal': isRenewal,
        'subscriptionDurationDays': subscriptionDurationDays,
        'expiryDurationDays': expiryDurationDays,
        'trialPeriodDays': trialPeriodDays,
        'supportQty': supportQty,
        'coresQty': coresQty,
        'createdDate': JsonConverters.toJson(createdDate,'DateTime',context!),
        'modifiedDate': JsonConverters.toJson(modifiedDate,'DateTime',context!),
        'licenseType': JsonConverters.toJson(licenseType,'LicenseType',context!),
        'active': active
    };

    getTypeName() => "Sku";
    TypeContext? context = _ctx;
}

class QuoteResponse implements IConvertible
{
    int? skuId;
    String? code;
    int? customerId;
    bool? modifyingExistingSubscription;
    bool? changingSubscriptions;
    bool? switchingLicensingModels;
    bool? replacesExistingQuantity;
    int? existingSubscriptionQuantity;
    int? newSubscriptionQuantity;
    String? unusedAmount;
    bool? manualProrating;
    int? unusedDays;
    int? quantity;
    int? minQuantity;
    int? maxQuantity;
    String? subtotal;
    String? discountDescription;
    String? discountReceived;
    String? discount;
    String? total;
    String? expiryDate;
    String? renewalDate;
    bool? isReferrer;
    ResponseStatus? responseStatus;

    QuoteResponse({this.skuId,this.code,this.customerId,this.modifyingExistingSubscription,this.changingSubscriptions,this.switchingLicensingModels,this.replacesExistingQuantity,this.existingSubscriptionQuantity,this.newSubscriptionQuantity,this.unusedAmount,this.manualProrating,this.unusedDays,this.quantity,this.minQuantity,this.maxQuantity,this.subtotal,this.discountDescription,this.discountReceived,this.discount,this.total,this.expiryDate,this.renewalDate,this.isReferrer,this.responseStatus});
    QuoteResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        skuId = json['skuId'];
        code = json['code'];
        customerId = json['customerId'];
        modifyingExistingSubscription = json['modifyingExistingSubscription'];
        changingSubscriptions = json['changingSubscriptions'];
        switchingLicensingModels = json['switchingLicensingModels'];
        replacesExistingQuantity = json['replacesExistingQuantity'];
        existingSubscriptionQuantity = json['existingSubscriptionQuantity'];
        newSubscriptionQuantity = json['newSubscriptionQuantity'];
        unusedAmount = json['unusedAmount'];
        manualProrating = json['manualProrating'];
        unusedDays = json['unusedDays'];
        quantity = json['quantity'];
        minQuantity = json['minQuantity'];
        maxQuantity = json['maxQuantity'];
        subtotal = json['subtotal'];
        discountDescription = json['discountDescription'];
        discountReceived = json['discountReceived'];
        discount = json['discount'];
        total = json['total'];
        expiryDate = json['expiryDate'];
        renewalDate = json['renewalDate'];
        isReferrer = json['isReferrer'];
        responseStatus = JsonConverters.fromJson(json['responseStatus'],'ResponseStatus',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'skuId': skuId,
        'code': code,
        'customerId': customerId,
        'modifyingExistingSubscription': modifyingExistingSubscription,
        'changingSubscriptions': changingSubscriptions,
        'switchingLicensingModels': switchingLicensingModels,
        'replacesExistingQuantity': replacesExistingQuantity,
        'existingSubscriptionQuantity': existingSubscriptionQuantity,
        'newSubscriptionQuantity': newSubscriptionQuantity,
        'unusedAmount': unusedAmount,
        'manualProrating': manualProrating,
        'unusedDays': unusedDays,
        'quantity': quantity,
        'minQuantity': minQuantity,
        'maxQuantity': maxQuantity,
        'subtotal': subtotal,
        'discountDescription': discountDescription,
        'discountReceived': discountReceived,
        'discount': discount,
        'total': total,
        'expiryDate': expiryDate,
        'renewalDate': renewalDate,
        'isReferrer': isReferrer,
        'responseStatus': JsonConverters.toJson(responseStatus,'ResponseStatus',context!)
    };

    getTypeName() => "QuoteResponse";
    TypeContext? context = _ctx;
}

class BuyResponse implements IConvertible
{
    String? coupon;
    String? renewalRef;
    String? upgradeRef;
    Sku? sku;
    QuoteResponse? quote;
    ResponseStatus? responseStatus;

    BuyResponse({this.coupon,this.renewalRef,this.upgradeRef,this.sku,this.quote,this.responseStatus});
    BuyResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        coupon = json['coupon'];
        renewalRef = json['renewalRef'];
        upgradeRef = json['upgradeRef'];
        sku = JsonConverters.fromJson(json['sku'],'Sku',context!);
        quote = JsonConverters.fromJson(json['quote'],'QuoteResponse',context!);
        responseStatus = JsonConverters.fromJson(json['responseStatus'],'ResponseStatus',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'coupon': coupon,
        'renewalRef': renewalRef,
        'upgradeRef': upgradeRef,
        'sku': JsonConverters.toJson(sku,'Sku',context!),
        'quote': JsonConverters.toJson(quote,'QuoteResponse',context!),
        'responseStatus': JsonConverters.toJson(responseStatus,'ResponseStatus',context!)
    };

    getTypeName() => "BuyResponse";
    TypeContext? context = _ctx;
}

class Buy implements IGet, IConvertible
{
    String? id;
    String? coupon;
    int? quantity;
    String? renewalRef;
    String? upgradeRef;

    Buy({this.id,this.coupon,this.quantity,this.renewalRef,this.upgradeRef});
    Buy.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        id = json['id'];
        coupon = json['coupon'];
        quantity = json['quantity'];
        renewalRef = json['renewalRef'];
        upgradeRef = json['upgradeRef'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'id': id,
        'coupon': coupon,
        'quantity': quantity,
        'renewalRef': renewalRef,
        'upgradeRef': upgradeRef
    };

    getTypeName() => "Buy";
    TypeContext? context = _ctx;
}

TypeContext _ctx = TypeContext(library: 'account.servicestack.net', types: <String, TypeInfo> {
    'SkuType': TypeInfo(TypeOf.Enum, enumValues:SkuType.values),
    'LicenseFeature': TypeInfo(TypeOf.Enum, enumValues:LicenseFeature.values),
    'LicenseType': TypeInfo(TypeOf.Enum, enumValues:LicenseType.values),
    'Sku': TypeInfo(TypeOf.Class, create:() => Sku()),
    'QuoteResponse': TypeInfo(TypeOf.Class, create:() => QuoteResponse()),
    'BuyResponse': TypeInfo(TypeOf.Class, create:() => BuyResponse()),
    'Buy': TypeInfo(TypeOf.Class, create:() => Buy()),
});

Dart Buy DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .csv suffix or ?format=csv

HTTP + CSV

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: text/csv
Content-Type: text/csv
Content-Length: length

{"id":"String","coupon":"String","quantity":0,"renewalRef":"String","upgradeRef":"String"}
HTTP/1.1 200 OK
Content-Type: text/csv
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"}}}