|
import { |
|
ApiExtraModels, |
|
ApiHideProperty, |
|
ApiProperty, |
|
getSchemaPath, |
|
} from '@nestjs/swagger'; |
|
import { IsNumber, IsString } from 'class-validator'; |
|
|
|
import { SessionBaseRequest, SessionQuery } from './base.dto'; |
|
import { |
|
BinaryFile, |
|
RemoteFile, |
|
VideoBinaryFile, |
|
VideoRemoteFile, |
|
VoiceBinaryFile, |
|
VoiceRemoteFile, |
|
} from './files.dto'; |
|
import { ChatIdProperty } from './properties.dto'; |
|
|
|
|
|
|
|
|
|
export class CheckNumberStatusQuery extends SessionQuery { |
|
@IsString() |
|
phone: string; |
|
} |
|
|
|
export class MessageTextQuery extends SessionQuery { |
|
@IsString() |
|
phone: string; |
|
|
|
@IsString() |
|
text: string; |
|
} |
|
|
|
export class ChatQuery extends SessionQuery { |
|
@ChatIdProperty() |
|
chatId: string; |
|
} |
|
|
|
export class GetMessageQuery extends ChatQuery { |
|
@IsNumber() |
|
limit: number; |
|
|
|
@ApiProperty({ |
|
example: true, |
|
required: false, |
|
description: 'Download media for messages', |
|
}) |
|
downloadMedia: true; |
|
} |
|
|
|
export class GetPresenceQuery extends ChatQuery {} |
|
|
|
|
|
|
|
|
|
export class ChatRequest extends SessionBaseRequest { |
|
@ChatIdProperty() |
|
chatId: string; |
|
} |
|
|
|
export class SendSeenRequest extends ChatRequest { |
|
@ApiProperty({ |
|
example: 'false_11111111111@c.us_AAAAAAAAAAAAAAAAAAAA', |
|
required: false, |
|
description: |
|
"NOWEB engine only - it's important to mark ALL messages as seen", |
|
}) |
|
messageId?: string; |
|
|
|
@ApiProperty({ |
|
example: '11111111111@c.us', |
|
required: false, |
|
description: |
|
'NOWEB engine only - the ID of the user that sent the message (undefined for individual chats)', |
|
}) |
|
participant?: string; |
|
} |
|
|
|
export class MessageRequest extends SessionBaseRequest { |
|
@ApiProperty({ |
|
example: 'false_11111111111@c.us_AAAAAAAAAAAAAAAAAAAA', |
|
}) |
|
messageId: string; |
|
} |
|
|
|
export class VCardContact { |
|
@ApiProperty({ |
|
example: |
|
'BEGIN:VCARD\nVERSION:3.0\nFN:Jane Doe\nORG:Company Name;\nTEL;type=CELL;type=VOICE;waid=911111111111:+91 11111 11111\nEND:VCARD', |
|
description: 'The vcard string', |
|
}) |
|
vcard: string; |
|
} |
|
|
|
export class Contact { |
|
@ApiProperty({ |
|
example: 'John Doe', |
|
description: 'The full name of the contact', |
|
}) |
|
fullName: string; |
|
|
|
@ApiProperty({ |
|
example: 'Company Name', |
|
description: 'The organization of the contact', |
|
required: false, |
|
}) |
|
organization: string; |
|
|
|
@ApiProperty({ |
|
example: '+91 11111 11111', |
|
description: 'The phone number of the contact', |
|
}) |
|
phoneNumber: string; |
|
|
|
@ApiProperty({ |
|
example: '911111111111', |
|
description: 'The whatsapp id of the contact. DO NOT add + or @c.us', |
|
required: false, |
|
}) |
|
whatsappId: string; |
|
|
|
vcard: string = null; |
|
} |
|
|
|
@ApiExtraModels(Contact, VCardContact) |
|
export class MessageContactVcardRequest extends ChatRequest { |
|
@ApiProperty({ |
|
type: 'array', |
|
oneOf: [ |
|
{ |
|
$ref: getSchemaPath(VCardContact), |
|
}, |
|
{ |
|
$ref: getSchemaPath(Contact), |
|
}, |
|
], |
|
}) |
|
contacts: (VCardContact | Contact)[]; |
|
} |
|
|
|
export class MessageTextRequest extends ChatRequest { |
|
text = 'Hi there!'; |
|
@ApiHideProperty() |
|
mentions?: string[]; |
|
} |
|
|
|
export class EditMessageRequest { |
|
text = 'Hello, world!'; |
|
|
|
@ApiHideProperty() |
|
mentions?: string[]; |
|
} |
|
|
|
export class MessageReplyRequest extends MessageTextRequest { |
|
text = 'Reply text'; |
|
@ApiProperty({ |
|
example: 'false_11111111111@c.us_AAAAAAAAAAAAAAAAAAAA', |
|
}) |
|
reply_to: string; |
|
} |
|
|
|
export class MessageLocationRequest extends ChatRequest { |
|
latitude: number; |
|
longitude: number; |
|
title: string; |
|
} |
|
|
|
@ApiExtraModels(BinaryFile, RemoteFile) |
|
class FileRequest extends ChatRequest { |
|
@ApiProperty({ |
|
oneOf: [ |
|
{ $ref: getSchemaPath(BinaryFile) }, |
|
{ $ref: getSchemaPath(RemoteFile) }, |
|
], |
|
}) |
|
file: BinaryFile | RemoteFile; |
|
} |
|
|
|
export class MessageImageRequest extends FileRequest { |
|
caption: string; |
|
} |
|
|
|
export class MessageFileRequest extends FileRequest { |
|
caption: string; |
|
} |
|
|
|
@ApiExtraModels(VoiceBinaryFile, VoiceRemoteFile) |
|
export class MessageVoiceRequest extends ChatRequest { |
|
@ApiProperty({ |
|
oneOf: [ |
|
{ $ref: getSchemaPath(VoiceBinaryFile) }, |
|
{ $ref: getSchemaPath(VoiceRemoteFile) }, |
|
], |
|
}) |
|
file: VoiceBinaryFile | VoiceRemoteFile; |
|
} |
|
|
|
@ApiExtraModels(VideoRemoteFile, VideoBinaryFile) |
|
export class MessageVideoRequest extends ChatRequest { |
|
@ApiProperty({ |
|
oneOf: [ |
|
{ $ref: getSchemaPath(VideoRemoteFile) }, |
|
{ $ref: getSchemaPath(VideoBinaryFile) }, |
|
], |
|
}) |
|
file: VideoRemoteFile | VideoBinaryFile; |
|
|
|
caption: string = 'Just watch at this!'; |
|
} |
|
|
|
export class MessageLinkPreviewRequest extends ChatRequest { |
|
url: string; |
|
title: string; |
|
} |
|
|
|
export class MessageReactionRequest extends MessageRequest { |
|
@ApiProperty({ |
|
description: |
|
'Emoji to react with. Send an empty string to remove the reaction', |
|
example: 'π', |
|
}) |
|
reaction: string; |
|
} |
|
|
|
export class MessageStarRequest extends MessageRequest { |
|
@ChatIdProperty() |
|
chatId: string; |
|
|
|
star: boolean; |
|
} |
|
|
|
export class WANumberExistResult { |
|
numberExists: boolean; |
|
@ApiProperty({ |
|
example: |
|
'Chat id for the phone number. Undefined if the number does not exist', |
|
}) |
|
chatId?: string; |
|
} |
|
|
|
export class MessagePoll { |
|
@ApiProperty({ |
|
example: 'How are you?', |
|
}) |
|
name: string; |
|
|
|
@ApiProperty({ |
|
example: ['Awesome!', 'Good!', 'Not bad!'], |
|
}) |
|
options: string[]; |
|
|
|
multipleAnswers = false; |
|
} |
|
|
|
export class MessagePollRequest extends ChatRequest { |
|
poll: MessagePoll; |
|
} |
|
|
|
export class MessageDestination { |
|
@ApiProperty({ |
|
description: 'Message ID', |
|
example: 'false_11111111111@c.us_AAAAAAAAAAAAAAAAAAAA', |
|
}) |
|
id: string; |
|
|
|
to: string; |
|
from: string; |
|
fromMe: boolean; |
|
} |
|
|