Trendsic Platform Service

<back to all web services

ChatRequest

Requires Authentication
Requires any of the roles:Agent, Administrator, Agent, Administrator, Agent, Administrator
The following routes are available for this service:
PUT,OPTIONS/v1/Chat/{ChatId}
GET,POST,OPTIONS/v1/Chat
import 'package:servicestack/servicestack.dart';
import 'dart:typed_data';

class ChatMember implements IConvertible
{
    String? ChatMemberId;
    String? ChatId;
    String? UserId;
    bool? IsActive;
    bool? IsArchived;
    String? LastChatMessageId;
    String? ChatMemberName;

    ChatMember({this.ChatMemberId,this.ChatId,this.UserId,this.IsActive,this.IsArchived,this.LastChatMessageId,this.ChatMemberName});
    ChatMember.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ChatMemberId = json['ChatMemberId'];
        ChatId = json['ChatId'];
        UserId = json['UserId'];
        IsActive = json['IsActive'];
        IsArchived = json['IsArchived'];
        LastChatMessageId = json['LastChatMessageId'];
        ChatMemberName = json['ChatMemberName'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ChatMemberId': ChatMemberId,
        'ChatId': ChatId,
        'UserId': UserId,
        'IsActive': IsActive,
        'IsArchived': IsArchived,
        'LastChatMessageId': LastChatMessageId,
        'ChatMemberName': ChatMemberName
    };

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

class Chat implements IConvertible
{
    String? ChatId;
    String? ChatName;
    String? CreatedBy;
    DateTime? DateCreated;
    List<ChatMember>? ChatMembers = [];
    bool? IsArchived;
    int? MemberCount;
    int? MessageCount;
    int? UnreadCount;
    String? CreatedByName;

    Chat({this.ChatId,this.ChatName,this.CreatedBy,this.DateCreated,this.ChatMembers,this.IsArchived,this.MemberCount,this.MessageCount,this.UnreadCount,this.CreatedByName});
    Chat.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ChatId = json['ChatId'];
        ChatName = json['ChatName'];
        CreatedBy = json['CreatedBy'];
        DateCreated = JsonConverters.fromJson(json['DateCreated'],'DateTime',context!);
        ChatMembers = JsonConverters.fromJson(json['ChatMembers'],'List<ChatMember>',context!);
        IsArchived = json['IsArchived'];
        MemberCount = json['MemberCount'];
        MessageCount = json['MessageCount'];
        UnreadCount = json['UnreadCount'];
        CreatedByName = json['CreatedByName'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ChatId': ChatId,
        'ChatName': ChatName,
        'CreatedBy': CreatedBy,
        'DateCreated': JsonConverters.toJson(DateCreated,'DateTime',context!),
        'ChatMembers': JsonConverters.toJson(ChatMembers,'List<ChatMember>',context!),
        'IsArchived': IsArchived,
        'MemberCount': MemberCount,
        'MessageCount': MessageCount,
        'UnreadCount': UnreadCount,
        'CreatedByName': CreatedByName
    };

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

class ChatResponse implements IConvertible
{
    ResponseStatus? ResponseStatus;
    List<Chat>? Chat = [];

    ChatResponse({this.ResponseStatus,this.Chat});
    ChatResponse.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ResponseStatus = JsonConverters.fromJson(json['ResponseStatus'],'ResponseStatus',context!);
        Chat = JsonConverters.fromJson(json['Chat'],'List<Chat>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ResponseStatus': JsonConverters.toJson(ResponseStatus,'ResponseStatus',context!),
        'Chat': JsonConverters.toJson(Chat,'List<Chat>',context!)
    };

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

class ChatRequest implements IConvertible
{
    String? ChatId;
    Chat? Chat;

    ChatRequest({this.ChatId,this.Chat});
    ChatRequest.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ChatId = json['ChatId'];
        Chat = JsonConverters.fromJson(json['Chat'],'Chat',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ChatId': ChatId,
        'Chat': JsonConverters.toJson(Chat,'Chat',context!)
    };

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

TypeContext _ctx = TypeContext(library: 'api.dev.dynamics.trendsic.com', types: <String, TypeInfo> {
    'ChatMember': TypeInfo(TypeOf.Class, create:() => ChatMember()),
    'Chat': TypeInfo(TypeOf.Class, create:() => Chat()),
    'List<ChatMember>': TypeInfo(TypeOf.Class, create:() => <ChatMember>[]),
    'ChatResponse': TypeInfo(TypeOf.Class, create:() => ChatResponse()),
    'List<Chat>': TypeInfo(TypeOf.Class, create:() => <Chat>[]),
    'ChatRequest': TypeInfo(TypeOf.Class, create:() => ChatRequest()),
});

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

POST /v1/Chat HTTP/1.1 
Host: api.dev.dynamics.trendsic.com 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	ChatId: 00000000000000000000000000000000,
	Chat: 
	{
		ChatId: 00000000000000000000000000000000,
		ChatName: String,
		CreatedBy: 00000000000000000000000000000000,
		DateCreated: 0001-01-01,
		ChatMembers: 
		[
			{
				ChatMemberId: 00000000000000000000000000000000,
				ChatId: 00000000000000000000000000000000,
				UserId: 00000000000000000000000000000000,
				IsActive: False,
				IsArchived: False,
				LastChatMessageId: 00000000000000000000000000000000,
				ChatMemberName: String
			}
		],
		IsArchived: False,
		MemberCount: 0,
		MessageCount: 0,
		UnreadCount: 0,
		CreatedByName: String
	}
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	ResponseStatus: 
	{
		ErrorCode: String,
		Message: String,
		StackTrace: String,
		Errors: 
		[
			{
				ErrorCode: String,
				FieldName: String,
				Message: String,
				Meta: 
				{
					String: String
				}
			}
		],
		Meta: 
		{
			String: String
		}
	},
	Chat: 
	[
		{
			ChatId: 00000000000000000000000000000000,
			ChatName: String,
			CreatedBy: 00000000000000000000000000000000,
			DateCreated: 0001-01-01,
			ChatMembers: 
			[
				{
					ChatMemberId: 00000000000000000000000000000000,
					ChatId: 00000000000000000000000000000000,
					UserId: 00000000000000000000000000000000,
					IsActive: False,
					IsArchived: False,
					LastChatMessageId: 00000000000000000000000000000000,
					ChatMemberName: String
				}
			],
			IsArchived: False,
			MemberCount: 0,
			MessageCount: 0,
			UnreadCount: 0,
			CreatedByName: String
		}
	]
}