mirror of
https://github.com/EvolutionAPI/evolution-api.git
synced 2025-12-27 07:37:44 -06:00
chore: Simplified payloads and endpoints
This commit is contained in:
300
src/validate/chat.schema.ts
Normal file
300
src/validate/chat.schema.ts
Normal file
@@ -0,0 +1,300 @@
|
||||
import { JSONSchema7, JSONSchema7Definition } from 'json-schema';
|
||||
import { v4 } from 'uuid';
|
||||
|
||||
import { isNotEmpty } from './validate.schema';
|
||||
|
||||
const numberDefinition: JSONSchema7Definition = {
|
||||
type: 'string',
|
||||
description: 'Invalid format',
|
||||
};
|
||||
|
||||
export const whatsappNumberSchema: JSONSchema7 = {
|
||||
$id: v4(),
|
||||
type: 'object',
|
||||
properties: {
|
||||
numbers: {
|
||||
type: 'array',
|
||||
minItems: 1,
|
||||
uniqueItems: true,
|
||||
items: {
|
||||
type: 'string',
|
||||
description: '"numbers" must be an array of numeric strings',
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
export const readMessageSchema: JSONSchema7 = {
|
||||
$id: v4(),
|
||||
type: 'object',
|
||||
properties: {
|
||||
read_messages: {
|
||||
type: 'array',
|
||||
minItems: 1,
|
||||
uniqueItems: true,
|
||||
items: {
|
||||
properties: {
|
||||
id: { type: 'string' },
|
||||
fromMe: { type: 'boolean', enum: [true, false] },
|
||||
remoteJid: { type: 'string' },
|
||||
},
|
||||
required: ['id', 'fromMe', 'remoteJid'],
|
||||
...isNotEmpty('id', 'remoteJid'),
|
||||
},
|
||||
},
|
||||
},
|
||||
required: ['read_messages'],
|
||||
};
|
||||
|
||||
export const archiveChatSchema: JSONSchema7 = {
|
||||
$id: v4(),
|
||||
type: 'object',
|
||||
properties: {
|
||||
chat: { type: 'string' },
|
||||
lastMessage: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
key: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
id: { type: 'string' },
|
||||
remoteJid: { type: 'string' },
|
||||
fromMe: { type: 'boolean', enum: [true, false] },
|
||||
},
|
||||
required: ['id', 'fromMe', 'remoteJid'],
|
||||
...isNotEmpty('id', 'remoteJid'),
|
||||
},
|
||||
messageTimestamp: { type: 'integer', minLength: 1 },
|
||||
},
|
||||
required: ['key'],
|
||||
...isNotEmpty('messageTimestamp'),
|
||||
},
|
||||
archive: { type: 'boolean', enum: [true, false] },
|
||||
},
|
||||
required: ['archive'],
|
||||
};
|
||||
|
||||
export const markChatUnreadSchema: JSONSchema7 = {
|
||||
$id: v4(),
|
||||
type: 'object',
|
||||
properties: {
|
||||
chat: { type: 'string' },
|
||||
lastMessage: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
key: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
id: { type: 'string' },
|
||||
remoteJid: { type: 'string' },
|
||||
fromMe: { type: 'boolean', enum: [true, false] },
|
||||
},
|
||||
required: ['id', 'fromMe', 'remoteJid'],
|
||||
...isNotEmpty('id', 'remoteJid'),
|
||||
},
|
||||
messageTimestamp: { type: 'integer', minLength: 1 },
|
||||
},
|
||||
required: ['key'],
|
||||
...isNotEmpty('messageTimestamp'),
|
||||
},
|
||||
},
|
||||
required: ['lastMessage'],
|
||||
};
|
||||
|
||||
export const deleteMessageSchema: JSONSchema7 = {
|
||||
$id: v4(),
|
||||
type: 'object',
|
||||
properties: {
|
||||
id: { type: 'string' },
|
||||
fromMe: { type: 'boolean', enum: [true, false] },
|
||||
remoteJid: { type: 'string' },
|
||||
participant: { type: 'string' },
|
||||
},
|
||||
required: ['id', 'fromMe', 'remoteJid'],
|
||||
...isNotEmpty('id', 'remoteJid', 'participant'),
|
||||
};
|
||||
|
||||
export const profilePictureSchema: JSONSchema7 = {
|
||||
$id: v4(),
|
||||
type: 'object',
|
||||
properties: {
|
||||
number: { type: 'string' },
|
||||
picture: { type: 'string' },
|
||||
},
|
||||
};
|
||||
|
||||
export const updateMessageSchema: JSONSchema7 = {
|
||||
$id: v4(),
|
||||
type: 'object',
|
||||
properties: {
|
||||
number: { type: 'string' },
|
||||
text: { type: 'string' },
|
||||
key: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
id: { type: 'string' },
|
||||
remoteJid: { type: 'string' },
|
||||
fromMe: { type: 'boolean', enum: [true, false] },
|
||||
},
|
||||
required: ['id', 'fromMe', 'remoteJid'],
|
||||
...isNotEmpty('id', 'remoteJid'),
|
||||
},
|
||||
},
|
||||
...isNotEmpty('number', 'text', 'key'),
|
||||
};
|
||||
|
||||
export const presenceSchema: JSONSchema7 = {
|
||||
$id: v4(),
|
||||
type: 'object',
|
||||
properties: {
|
||||
number: { ...numberDefinition },
|
||||
delay: { type: 'number' },
|
||||
presence: {
|
||||
type: 'string',
|
||||
enum: ['unavailable', 'available', 'composing', 'recording', 'paused'],
|
||||
},
|
||||
},
|
||||
required: ['number', 'presence', 'delay'],
|
||||
};
|
||||
|
||||
export const blockUserSchema: JSONSchema7 = {
|
||||
$id: v4(),
|
||||
type: 'object',
|
||||
properties: {
|
||||
number: { type: 'string' },
|
||||
status: { type: 'string', enum: ['block', 'unblock'] },
|
||||
},
|
||||
required: ['number', 'status'],
|
||||
...isNotEmpty('number', 'status'),
|
||||
};
|
||||
|
||||
export const contactValidateSchema: JSONSchema7 = {
|
||||
$id: v4(),
|
||||
type: 'object',
|
||||
properties: {
|
||||
where: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
_id: { type: 'string', minLength: 1 },
|
||||
pushName: { type: 'string', minLength: 1 },
|
||||
id: { type: 'string', minLength: 1 },
|
||||
},
|
||||
...isNotEmpty('_id', 'id', 'pushName'),
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
export const messageValidateSchema: JSONSchema7 = {
|
||||
$id: v4(),
|
||||
type: 'object',
|
||||
properties: {
|
||||
where: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
_id: { type: 'string', minLength: 1 },
|
||||
key: {
|
||||
type: 'object',
|
||||
if: {
|
||||
propertyNames: {
|
||||
enum: ['fromMe', 'remoteJid', 'id'],
|
||||
},
|
||||
},
|
||||
then: {
|
||||
properties: {
|
||||
remoteJid: {
|
||||
type: 'string',
|
||||
minLength: 1,
|
||||
description: 'The property cannot be empty',
|
||||
},
|
||||
id: {
|
||||
type: 'string',
|
||||
minLength: 1,
|
||||
description: 'The property cannot be empty',
|
||||
},
|
||||
fromMe: { type: 'boolean', enum: [true, false] },
|
||||
},
|
||||
},
|
||||
},
|
||||
message: { type: 'object' },
|
||||
},
|
||||
...isNotEmpty('_id'),
|
||||
},
|
||||
limit: { type: 'integer' },
|
||||
},
|
||||
};
|
||||
|
||||
export const messageUpSchema: JSONSchema7 = {
|
||||
$id: v4(),
|
||||
type: 'object',
|
||||
properties: {
|
||||
where: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
_id: { type: 'string' },
|
||||
remoteJid: { type: 'string' },
|
||||
id: { type: 'string' },
|
||||
fromMe: { type: 'boolean', enum: [true, false] },
|
||||
participant: { type: 'string' },
|
||||
status: {
|
||||
type: 'string',
|
||||
enum: ['ERROR', 'PENDING', 'SERVER_ACK', 'DELIVERY_ACK', 'READ', 'PLAYED'],
|
||||
},
|
||||
},
|
||||
...isNotEmpty('_id', 'remoteJid', 'id', 'status'),
|
||||
},
|
||||
limit: { type: 'integer' },
|
||||
},
|
||||
};
|
||||
|
||||
export const privacySettingsSchema: JSONSchema7 = {
|
||||
$id: v4(),
|
||||
type: 'object',
|
||||
properties: {
|
||||
readreceipts: { type: 'string', enum: ['all', 'none'] },
|
||||
profile: {
|
||||
type: 'string',
|
||||
enum: ['all', 'contacts', 'contact_blacklist', 'none'],
|
||||
},
|
||||
status: {
|
||||
type: 'string',
|
||||
enum: ['all', 'contacts', 'contact_blacklist', 'none'],
|
||||
},
|
||||
online: { type: 'string', enum: ['all', 'match_last_seen'] },
|
||||
last: { type: 'string', enum: ['all', 'contacts', 'contact_blacklist', 'none'] },
|
||||
groupadd: {
|
||||
type: 'string',
|
||||
enum: ['all', 'contacts', 'contact_blacklist', 'none'],
|
||||
},
|
||||
},
|
||||
required: ['readreceipts', 'profile', 'status', 'online', 'last', 'groupadd'],
|
||||
...isNotEmpty('readreceipts', 'profile', 'status', 'online', 'last', 'groupadd'),
|
||||
};
|
||||
|
||||
export const profileNameSchema: JSONSchema7 = {
|
||||
$id: v4(),
|
||||
type: 'object',
|
||||
properties: {
|
||||
name: { type: 'string' },
|
||||
},
|
||||
...isNotEmpty('name'),
|
||||
};
|
||||
|
||||
export const profileStatusSchema: JSONSchema7 = {
|
||||
$id: v4(),
|
||||
type: 'object',
|
||||
properties: {
|
||||
status: { type: 'string' },
|
||||
},
|
||||
...isNotEmpty('status'),
|
||||
};
|
||||
|
||||
export const profileSchema: JSONSchema7 = {
|
||||
type: 'object',
|
||||
properties: {
|
||||
wuid: { type: 'string' },
|
||||
name: { type: 'string' },
|
||||
picture: { type: 'string' },
|
||||
status: { type: 'string' },
|
||||
isBusiness: { type: 'boolean' },
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user