| Requires any of the roles: | Agent, Administrator |
| GET | /v1/Conversation/{TableName}/{FieldName}/{RecordId} |
|---|
import 'package:servicestack/servicestack.dart';
import 'dart:typed_data';
class ConversationHeader implements IConvertible
{
String? ConversationHeaderId;
String? TableName;
String? FieldName;
int? RecordId;
bool? AgentHasRead;
bool? AdminHasRead;
ConversationHeader({this.ConversationHeaderId,this.TableName,this.FieldName,this.RecordId,this.AgentHasRead,this.AdminHasRead});
ConversationHeader.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
ConversationHeaderId = json['ConversationHeaderId'];
TableName = json['TableName'];
FieldName = json['FieldName'];
RecordId = json['RecordId'];
AgentHasRead = json['AgentHasRead'];
AdminHasRead = json['AdminHasRead'];
return this;
}
Map<String, dynamic> toJson() => {
'ConversationHeaderId': ConversationHeaderId,
'TableName': TableName,
'FieldName': FieldName,
'RecordId': RecordId,
'AgentHasRead': AgentHasRead,
'AdminHasRead': AdminHasRead
};
getTypeName() => "ConversationHeader";
TypeContext? context = _ctx;
}
class ConversationDetail implements IConvertible
{
String? ConversationDetailId;
String? ConversationHeaderId;
String? Comment;
DateTime? DateCreated;
String? CreatedBy;
String? CreatedByName;
String? AttachmentId;
bool? IsAdminComment;
bool? IsDeletedComment;
ConversationDetail({this.ConversationDetailId,this.ConversationHeaderId,this.Comment,this.DateCreated,this.CreatedBy,this.CreatedByName,this.AttachmentId,this.IsAdminComment,this.IsDeletedComment});
ConversationDetail.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
ConversationDetailId = json['ConversationDetailId'];
ConversationHeaderId = json['ConversationHeaderId'];
Comment = json['Comment'];
DateCreated = JsonConverters.fromJson(json['DateCreated'],'DateTime',context!);
CreatedBy = json['CreatedBy'];
CreatedByName = json['CreatedByName'];
AttachmentId = json['AttachmentId'];
IsAdminComment = json['IsAdminComment'];
IsDeletedComment = json['IsDeletedComment'];
return this;
}
Map<String, dynamic> toJson() => {
'ConversationDetailId': ConversationDetailId,
'ConversationHeaderId': ConversationHeaderId,
'Comment': Comment,
'DateCreated': JsonConverters.toJson(DateCreated,'DateTime',context!),
'CreatedBy': CreatedBy,
'CreatedByName': CreatedByName,
'AttachmentId': AttachmentId,
'IsAdminComment': IsAdminComment,
'IsDeletedComment': IsDeletedComment
};
getTypeName() => "ConversationDetail";
TypeContext? context = _ctx;
}
class Conversation extends ConversationHeader implements IConvertible
{
List<ConversationDetail>? Details = [];
Conversation({this.Details});
Conversation.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
super.fromMap(json);
Details = JsonConverters.fromJson(json['Details'],'List<ConversationDetail>',context!);
return this;
}
Map<String, dynamic> toJson() => super.toJson()..addAll({
'Details': JsonConverters.toJson(Details,'List<ConversationDetail>',context!)
});
getTypeName() => "Conversation";
TypeContext? context = _ctx;
}
class ConversationResponse implements IConvertible
{
ResponseStatus? ResponseStatus;
Conversation? Conversation;
ConversationResponse({this.ResponseStatus,this.Conversation});
ConversationResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
ResponseStatus = JsonConverters.fromJson(json['ResponseStatus'],'ResponseStatus',context!);
Conversation = JsonConverters.fromJson(json['Conversation'],'Conversation',context!);
return this;
}
Map<String, dynamic> toJson() => {
'ResponseStatus': JsonConverters.toJson(ResponseStatus,'ResponseStatus',context!),
'Conversation': JsonConverters.toJson(Conversation,'Conversation',context!)
};
getTypeName() => "ConversationResponse";
TypeContext? context = _ctx;
}
class ConversationRequest implements IConvertible
{
String? TableName;
String? FieldName;
int? RecordId;
bool? ReadFlag;
ConversationRequest({this.TableName,this.FieldName,this.RecordId,this.ReadFlag});
ConversationRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
TableName = json['TableName'];
FieldName = json['FieldName'];
RecordId = json['RecordId'];
ReadFlag = json['ReadFlag'];
return this;
}
Map<String, dynamic> toJson() => {
'TableName': TableName,
'FieldName': FieldName,
'RecordId': RecordId,
'ReadFlag': ReadFlag
};
getTypeName() => "ConversationRequest";
TypeContext? context = _ctx;
}
TypeContext _ctx = TypeContext(library: 'api.dev.dynamics.trendsic.com', types: <String, TypeInfo> {
'ConversationHeader': TypeInfo(TypeOf.Class, create:() => ConversationHeader()),
'ConversationDetail': TypeInfo(TypeOf.Class, create:() => ConversationDetail()),
'Conversation': TypeInfo(TypeOf.Class, create:() => Conversation()),
'List<ConversationDetail>': TypeInfo(TypeOf.Class, create:() => <ConversationDetail>[]),
'ConversationResponse': TypeInfo(TypeOf.Class, create:() => ConversationResponse()),
'ConversationRequest': TypeInfo(TypeOf.Class, create:() => ConversationRequest()),
});
To override the Content-type in your clients, use the HTTP Accept Header, append the .csv suffix or ?format=csv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
GET /v1/Conversation/{TableName}/{FieldName}/{RecordId} HTTP/1.1
Host: api.dev.dynamics.trendsic.com
Accept: text/csv
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Length: length
{"ResponseStatus":{"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}},"Conversation":{"Details":[{"ConversationDetailId":"00000000000000000000000000000000","ConversationHeaderId":"00000000000000000000000000000000","Comment":"String","DateCreated":"0001-01-01T00:00:00.0000000+00:00","CreatedBy":"00000000000000000000000000000000","CreatedByName":"String","AttachmentId":"00000000000000000000000000000000","IsAdminComment":false,"IsDeletedComment":false}],"ConversationHeaderId":"00000000000000000000000000000000","TableName":"String","FieldName":"String","RecordId":0,"AgentHasRead":false,"AdminHasRead":false}}