BokaMera.API.Host

<back to all web services

GetVossProductGroup

Requires Authentication
Requires any of the roles:bookingsupplier-administrator-write, superadmin
The following routes are available for this service:
GET/voss/productGroups/{ProductGroupId}gets voss product group
import 'package:servicestack/servicestack.dart';

enum ProductGroupTypeEnum
{
    Optional,
    Included,
}

enum ProductTypeEnum
{
    Main,
    Addon,
    License,
    Usage,
}

enum StatusEnum
{
    Active,
    Terminated,
}

// @DataContract(Name="ProductGroupProductDto")
class ProductGroupProductDto implements IConvertible
{
    // @DataMember(Name="type", IsRequired=true)
    ProductTypeEnum? type;

    // @DataMember(Name="status", IsRequired=true)
    StatusEnum? status;

    // @DataMember(Name="id", IsRequired=true)
    String? id;

    // @DataMember(Name="name", IsRequired=true)
    String? name;

    // @DataMember(Name="externalId")
    String? externalId;

    // @DataMember(Name="articleNumber", IsRequired=true)
    String? articleNumber;

    ProductGroupProductDto({this.type,this.status,this.id,this.name,this.externalId,this.articleNumber});
    ProductGroupProductDto.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        type = JsonConverters.fromJson(json['ProductType'],'ProductTypeEnum',context!);
        status = JsonConverters.fromJson(json['Status'],'StatusEnum',context!);
        id = json['Id'];
        name = json['Name'];
        externalId = json['ExternalId'];
        articleNumber = json['ArticleNumber'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'type': JsonConverters.toJson(type,'ProductTypeEnum',context!),
        'status': JsonConverters.toJson(status,'StatusEnum',context!),
        'id': id,
        'name': name,
        'externalId': externalId,
        'articleNumber': articleNumber
    };

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

enum TypeEnum
{
    AtSubscriptionBillingPeriodEnd,
    AtBindingPeriodEnd,
    Immediately,
}

// @DataContract(Name="ProductGroupTagDto")
class ProductGroupTagDto implements IConvertible
{
    // @DataMember(Name="type", IsRequired=true)
    TypeEnum? type;

    // @DataMember(Name="tag", IsRequired=true)
    String? tag;

    ProductGroupTagDto({this.type,this.tag});
    ProductGroupTagDto.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        type = JsonConverters.fromJson(json['Type'],'TypeEnum',context!);
        tag = json['Tag'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'type': JsonConverters.toJson(type,'TypeEnum',context!),
        'tag': tag
    };

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

// @DataContract(Name="ProductGroupResult")
class ProductGroupResult implements IConvertible
{
    // @DataMember(Name="productGroupType", IsRequired=true)
    ProductGroupTypeEnum? productGroupType;

    // @DataMember(Name="id", IsRequired=true)
    String? id;

    // @DataMember(Name="versionId", IsRequired=true)
    String? versionId;

    // @DataMember(Name="name", IsRequired=true)
    String? name;

    // @DataMember(Name="externalId")
    String? externalId;

    // @DataMember(Name="products", EmitDefaultValue=false)
    List<ProductGroupProductDto>? products = [];

    // @DataMember(Name="tags", EmitDefaultValue=false)
    List<ProductGroupTagDto>? tags = [];

    ProductGroupResult({this.productGroupType,this.id,this.versionId,this.name,this.externalId,this.products,this.tags});
    ProductGroupResult.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        productGroupType = JsonConverters.fromJson(json['ProductGroupType'],'ProductGroupTypeEnum',context!);
        id = json['Id'];
        versionId = json['VersionId'];
        name = json['Name'];
        externalId = json['ExternalId'];
        products = JsonConverters.fromJson(json['Products'],'List<ProductGroupProductDto>',context!);
        tags = JsonConverters.fromJson(json['Tags'],'List<ProductGroupTagDto>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'productGroupType': JsonConverters.toJson(productGroupType,'ProductGroupTypeEnum',context!),
        'id': id,
        'versionId': versionId,
        'name': name,
        'externalId': externalId,
        'products': JsonConverters.toJson(products,'List<ProductGroupProductDto>',context!),
        'tags': JsonConverters.toJson(tags,'List<ProductGroupTagDto>',context!)
    };

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

// @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
class GetVossProductGroup implements IConvertible
{
    /**
    * Passed if we have multilpe packages
    */
    // @ApiMember(Description="Passed if we have multilpe packages")
    String? PackageId;

    /**
    * Procut Group id to get
    */
    // @ApiMember(Description="Procut Group id to get", IsRequired=true)
    String? ProductGroupId;

    /**
    * Tier id required because it is used it voss url
    */
    // @ApiMember(Description="Tier id required because it is used it voss url", IsRequired=true)
    String? TierId;

    GetVossProductGroup({this.PackageId,this.ProductGroupId,this.TierId});
    GetVossProductGroup.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        PackageId = json['PackageId'];
        ProductGroupId = json['ProductGroupId'];
        TierId = json['TierId'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'PackageId': PackageId,
        'ProductGroupId': ProductGroupId,
        'TierId': TierId
    };

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

TypeContext _ctx = TypeContext(library: 'api.bokamera.se', types: <String, TypeInfo> {
    'ProductGroupTypeEnum': TypeInfo(TypeOf.Enum, enumValues:ProductGroupTypeEnum.values),
    'ProductTypeEnum': TypeInfo(TypeOf.Enum, enumValues:ProductTypeEnum.values),
    'StatusEnum': TypeInfo(TypeOf.Enum, enumValues:StatusEnum.values),
    'ProductGroupProductDto': TypeInfo(TypeOf.Class, create:() => ProductGroupProductDto()),
    'TypeEnum': TypeInfo(TypeOf.Enum, enumValues:TypeEnum.values),
    'ProductGroupTagDto': TypeInfo(TypeOf.Class, create:() => ProductGroupTagDto()),
    'ProductGroupResult': TypeInfo(TypeOf.Class, create:() => ProductGroupResult()),
    'List<ProductGroupProductDto>': TypeInfo(TypeOf.Class, create:() => <ProductGroupProductDto>[]),
    'List<ProductGroupTagDto>': TypeInfo(TypeOf.Class, create:() => <ProductGroupTagDto>[]),
    'GetVossProductGroup': TypeInfo(TypeOf.Class, create:() => GetVossProductGroup()),
});

Dart GetVossProductGroup 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.

GET /voss/productGroups/{ProductGroupId} HTTP/1.1 
Host: api.bokamera.se 
Accept: text/jsv
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	productGroupType: Optional,
	name: String,
	externalId: String,
	products: 
	[
		{
			
		}
	],
	tags: 
	[
		{
			
		}
	]
}