|
|
import { Integration } from '@api/types/wa.types'; |
|
|
import { JSONSchema7 } from 'json-schema'; |
|
|
import { v4 } from 'uuid'; |
|
|
|
|
|
const isNotEmpty = (...propertyNames: string[]): JSONSchema7 => { |
|
|
const properties = {}; |
|
|
propertyNames.forEach( |
|
|
(property) => |
|
|
(properties[property] = { |
|
|
minLength: 1, |
|
|
description: `The "${property}" cannot be empty`, |
|
|
}), |
|
|
); |
|
|
return { |
|
|
if: { |
|
|
propertyNames: { |
|
|
enum: [...propertyNames], |
|
|
}, |
|
|
}, |
|
|
then: { properties }, |
|
|
}; |
|
|
}; |
|
|
|
|
|
export const instanceSchema: JSONSchema7 = { |
|
|
$id: v4(), |
|
|
type: 'object', |
|
|
properties: { |
|
|
|
|
|
instanceName: { type: 'string' }, |
|
|
token: { type: 'string' }, |
|
|
number: { type: 'string', pattern: '^\\d+[\\.@\\w-]+' }, |
|
|
businessId: { type: 'string' }, |
|
|
qrcode: { type: 'boolean' }, |
|
|
Integration: { |
|
|
type: 'string', |
|
|
enum: Object.values(Integration), |
|
|
}, |
|
|
|
|
|
rejectCall: { type: 'boolean' }, |
|
|
msgCall: { type: 'string' }, |
|
|
groupsIgnore: { type: 'boolean' }, |
|
|
alwaysOnline: { type: 'boolean' }, |
|
|
readMessages: { type: 'boolean' }, |
|
|
readStatus: { type: 'boolean' }, |
|
|
syncFullHistory: { type: 'boolean' }, |
|
|
wavoipToken: { type: 'string' }, |
|
|
|
|
|
proxyHost: { type: 'string' }, |
|
|
proxyPort: { type: 'string' }, |
|
|
proxyProtocol: { type: 'string' }, |
|
|
proxyUsername: { type: 'string' }, |
|
|
proxyPassword: { type: 'string' }, |
|
|
|
|
|
webhookUrl: { type: 'string' }, |
|
|
webhookByEvents: { type: 'boolean' }, |
|
|
webhookBase64: { type: 'boolean' }, |
|
|
webhookEvents: { |
|
|
type: 'array', |
|
|
minItems: 0, |
|
|
items: { |
|
|
type: 'string', |
|
|
enum: [ |
|
|
'APPLICATION_STARTUP', |
|
|
'QRCODE_UPDATED', |
|
|
'MESSAGES_SET', |
|
|
'MESSAGES_UPSERT', |
|
|
'MESSAGES_EDITED', |
|
|
'MESSAGES_UPDATE', |
|
|
'MESSAGES_DELETE', |
|
|
'SEND_MESSAGE', |
|
|
'SEND_MESSAGE_UPDATE', |
|
|
'CONTACTS_SET', |
|
|
'CONTACTS_UPSERT', |
|
|
'CONTACTS_UPDATE', |
|
|
'PRESENCE_UPDATE', |
|
|
'CHATS_SET', |
|
|
'CHATS_UPSERT', |
|
|
'CHATS_UPDATE', |
|
|
'CHATS_DELETE', |
|
|
'GROUPS_UPSERT', |
|
|
'GROUP_UPDATE', |
|
|
'GROUP_PARTICIPANTS_UPDATE', |
|
|
'CONNECTION_UPDATE', |
|
|
'LABELS_EDIT', |
|
|
'LABELS_ASSOCIATION', |
|
|
'CALL', |
|
|
'TYPEBOT_START', |
|
|
'TYPEBOT_CHANGE_STATUS', |
|
|
], |
|
|
}, |
|
|
}, |
|
|
|
|
|
rabbitmqEnabled: { type: 'boolean' }, |
|
|
rabbitmqEvents: { |
|
|
type: 'array', |
|
|
minItems: 0, |
|
|
items: { |
|
|
type: 'string', |
|
|
enum: [ |
|
|
'APPLICATION_STARTUP', |
|
|
'QRCODE_UPDATED', |
|
|
'MESSAGES_SET', |
|
|
'MESSAGES_UPSERT', |
|
|
'MESSAGES_EDITED', |
|
|
'MESSAGES_UPDATE', |
|
|
'MESSAGES_DELETE', |
|
|
'SEND_MESSAGE', |
|
|
'SEND_MESSAGE_UPDATE', |
|
|
'CONTACTS_SET', |
|
|
'CONTACTS_UPSERT', |
|
|
'CONTACTS_UPDATE', |
|
|
'PRESENCE_UPDATE', |
|
|
'CHATS_SET', |
|
|
'CHATS_UPSERT', |
|
|
'CHATS_UPDATE', |
|
|
'CHATS_DELETE', |
|
|
'GROUPS_UPSERT', |
|
|
'GROUP_UPDATE', |
|
|
'GROUP_PARTICIPANTS_UPDATE', |
|
|
'CONNECTION_UPDATE', |
|
|
'LABELS_EDIT', |
|
|
'LABELS_ASSOCIATION', |
|
|
'CALL', |
|
|
'TYPEBOT_START', |
|
|
'TYPEBOT_CHANGE_STATUS', |
|
|
], |
|
|
}, |
|
|
}, |
|
|
|
|
|
natsEnabled: { type: 'boolean' }, |
|
|
natsEvents: { |
|
|
type: 'array', |
|
|
minItems: 0, |
|
|
items: { |
|
|
type: 'string', |
|
|
enum: [ |
|
|
'APPLICATION_STARTUP', |
|
|
'QRCODE_UPDATED', |
|
|
'MESSAGES_SET', |
|
|
'MESSAGES_UPSERT', |
|
|
'MESSAGES_EDITED', |
|
|
'MESSAGES_UPDATE', |
|
|
'MESSAGES_DELETE', |
|
|
'SEND_MESSAGE', |
|
|
'SEND_MESSAGE_UPDATE', |
|
|
'CONTACTS_SET', |
|
|
'CONTACTS_UPSERT', |
|
|
'CONTACTS_UPDATE', |
|
|
'PRESENCE_UPDATE', |
|
|
'CHATS_SET', |
|
|
'CHATS_UPSERT', |
|
|
'CHATS_UPDATE', |
|
|
'CHATS_DELETE', |
|
|
'GROUPS_UPSERT', |
|
|
'GROUP_UPDATE', |
|
|
'GROUP_PARTICIPANTS_UPDATE', |
|
|
'CONNECTION_UPDATE', |
|
|
'LABELS_EDIT', |
|
|
'LABELS_ASSOCIATION', |
|
|
'CALL', |
|
|
'TYPEBOT_START', |
|
|
'TYPEBOT_CHANGE_STATUS', |
|
|
], |
|
|
}, |
|
|
}, |
|
|
|
|
|
sqsEnabled: { type: 'boolean' }, |
|
|
sqsEvents: { |
|
|
type: 'array', |
|
|
minItems: 0, |
|
|
items: { |
|
|
type: 'string', |
|
|
enum: [ |
|
|
'APPLICATION_STARTUP', |
|
|
'QRCODE_UPDATED', |
|
|
'MESSAGES_SET', |
|
|
'MESSAGES_UPSERT', |
|
|
'MESSAGES_EDITED', |
|
|
'MESSAGES_UPDATE', |
|
|
'MESSAGES_DELETE', |
|
|
'SEND_MESSAGE', |
|
|
'SEND_MESSAGE_UPDATE', |
|
|
'CONTACTS_SET', |
|
|
'CONTACTS_UPSERT', |
|
|
'CONTACTS_UPDATE', |
|
|
'PRESENCE_UPDATE', |
|
|
'CHATS_SET', |
|
|
'CHATS_UPSERT', |
|
|
'CHATS_UPDATE', |
|
|
'CHATS_DELETE', |
|
|
'GROUPS_UPSERT', |
|
|
'GROUP_UPDATE', |
|
|
'GROUP_PARTICIPANTS_UPDATE', |
|
|
'CONNECTION_UPDATE', |
|
|
'LABELS_EDIT', |
|
|
'LABELS_ASSOCIATION', |
|
|
'CALL', |
|
|
'TYPEBOT_START', |
|
|
'TYPEBOT_CHANGE_STATUS', |
|
|
], |
|
|
}, |
|
|
}, |
|
|
|
|
|
chatwootAccountId: { type: 'string' }, |
|
|
chatwootToken: { type: 'string' }, |
|
|
chatwootUrl: { type: 'string' }, |
|
|
chatwootSignMsg: { type: 'boolean' }, |
|
|
chatwootReopenConversation: { type: 'boolean' }, |
|
|
chatwootConversationPending: { type: 'boolean' }, |
|
|
chatwootImportContacts: { type: 'boolean' }, |
|
|
chatwootNameInbox: { type: 'string' }, |
|
|
chatwootMergeBrazilContacts: { type: 'boolean' }, |
|
|
chatwootImportMessages: { type: 'boolean' }, |
|
|
chatwootDaysLimitImportMessages: { type: 'number' }, |
|
|
}, |
|
|
...isNotEmpty('instanceName'), |
|
|
}; |
|
|
|
|
|
export const presenceOnlySchema: JSONSchema7 = { |
|
|
$id: v4(), |
|
|
type: 'object', |
|
|
properties: { |
|
|
presence: { |
|
|
type: 'string', |
|
|
enum: ['unavailable', 'available', 'composing', 'recording', 'paused'], |
|
|
}, |
|
|
}, |
|
|
required: ['presence'], |
|
|
}; |
|
|
|