| POST | /v1/links | ||
|---|---|---|---|
| POST | /v1/complete-link-creation-requests |
import 'package:servicestack/servicestack.dart';
// @DataContract
class PostLinkCreationRequestBase implements IConvertible
{
// @DataMember(Name="url")
// @ApiMember(IsRequired=true)
String? url;
// @DataMember(Name="domain")
String? domain;
// @DataMember(Name="parameterKeyValues")
Map<String,String?>? parameterKeyValues;
PostLinkCreationRequestBase({this.url,this.domain,this.parameterKeyValues});
PostLinkCreationRequestBase.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
url = json['url'];
domain = json['domain'];
parameterKeyValues = JsonConverters.toStringMap(json['parameterKeyValues']);
return this;
}
Map<String, dynamic> toJson() => {
'url': url,
'domain': domain,
'parameterKeyValues': parameterKeyValues
};
getTypeName() => "PostLinkCreationRequestBase";
TypeContext? context = _ctx;
}
// @DataContract
class ProductMetadata extends ProductMetadata implements IConvertible
{
ProductMetadata();
ProductMetadata.fromJson(Map<String, dynamic> json) : super.fromJson(json);
fromMap(Map<String, dynamic> json) {
super.fromMap(json);
return this;
}
Map<String, dynamic> toJson() => super.toJson();
getTypeName() => "ProductMetadata";
TypeContext? context = _ctx;
}
// @DataContract
class PostLinkCreationResponse implements IConvertible
{
// @DataMember(Name="success")
bool? success;
// @DataMember(Name="linkResult")
String? linkResult;
// @DataMember(Name="destinations")
List<ProductMetadata>? destinations;
// @DataMember(Name="responseStatus")
ResponseStatus? responseStatus;
PostLinkCreationResponse({this.success,this.linkResult,this.destinations,this.responseStatus});
PostLinkCreationResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
success = json['success'];
linkResult = json['linkResult'];
destinations = JsonConverters.fromJson(json['destinations'],'List<ProductMetadata>',context!);
responseStatus = JsonConverters.fromJson(json['responseStatus'],'ResponseStatus',context!);
return this;
}
Map<String, dynamic> toJson() => {
'success': success,
'linkResult': linkResult,
'destinations': JsonConverters.toJson(destinations,'List<ProductMetadata>',context!),
'responseStatus': JsonConverters.toJson(responseStatus,'ResponseStatus',context!)
};
getTypeName() => "PostLinkCreationResponse";
TypeContext? context = _ctx;
}
class PostLinkCreationRequest extends PostLinkCreationRequestBase implements IConvertible
{
// @DataMember(Name="code")
String? code;
PostLinkCreationRequest({this.code});
PostLinkCreationRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
super.fromMap(json);
code = json['code'];
return this;
}
Map<String, dynamic> toJson() => super.toJson()..addAll({
'code': code
});
getTypeName() => "PostLinkCreationRequest";
TypeContext? context = _ctx;
}
// @DataContract
abstract class ProductMetadata
{
// @DataMember(Name="title")
String? title;
// @DataMember(Name="author")
String? author;
// @DataMember(Name="url")
Uri? url;
// @DataMember(Name="description")
String? description;
// @DataMember(Name="retailer")
String? retailer;
// @DataMember(Name="productImages")
Map<String,Uri?>? productImages;
ProductMetadata({this.title,this.author,this.url,this.description,this.retailer,this.productImages});
ProductMetadata.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
title = json['title'];
author = json['author'];
url = JsonConverters.fromJson(json['url'],'Uri',context!);
description = json['description'];
retailer = json['retailer'];
productImages = JsonConverters.fromJson(json['productImages'],'Map<String,Uri?>',context!);
return this;
}
Map<String, dynamic> toJson() => {
'title': title,
'author': author,
'url': JsonConverters.toJson(url,'Uri',context!),
'description': description,
'retailer': retailer,
'productImages': JsonConverters.toJson(productImages,'Map<String,Uri?>',context!)
};
getTypeName() => "ProductMetadata";
TypeContext? context = _ctx;
}
TypeContext _ctx = TypeContext(library: 'api.booklinker.com', types: <String, TypeInfo> {
'PostLinkCreationRequestBase': TypeInfo(TypeOf.Class, create:() => PostLinkCreationRequestBase()),
'ProductMetadata': TypeInfo(TypeOf.Class, create:() => ProductMetadata()),
'PostLinkCreationResponse': TypeInfo(TypeOf.Class, create:() => PostLinkCreationResponse()),
'List<ProductMetadata>': TypeInfo(TypeOf.Class, create:() => <ProductMetadata>[]),
'PostLinkCreationRequest': TypeInfo(TypeOf.Class, create:() => PostLinkCreationRequest()),
'Uri': TypeInfo(TypeOf.Class, create:() => Uri()),
'Map<String,Uri?>': TypeInfo(TypeOf.Class, create:() => Map<String,Uri?>()),
});
Dart PostLinkCreationRequest 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
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /v1/links HTTP/1.1
Host: api.booklinker.com
Accept: application/json
Content-Type: application/json
Content-Length: length
{"code":"String","url":"String","domain":"String","parameterKeyValues":{"String":"String"}}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: length
{"success":false,"linkResult":"String","responseStatus":{"errorCode":"String","message":"String","stackTrace":"String","errors":[{"errorCode":"String","fieldName":"String","message":"String","meta":{"String":"String"}}],"meta":{"String":"String"}}}