mirror of
https://github.com/EvolutionAPI/evolution-api.git
synced 2025-12-12 11:29:38 -06:00
Removed chatbot integrations: Chatwoot, Typebot, OpenAI, Dify, Flowise, and EvoAI. Only N8N integration remains active. Changes include: - Deleted all integration directories and files (controllers, services, DTOs, validators, routers) - Updated chatbot.controller.ts to only emit to N8N - Updated chatbot.router.ts and chatbot.schema.ts to export only N8N - Removed OpenAI dependency from N8nService (removed audio transcription) - Updated server.module.ts to remove all chatbot service instantiations - Cleaned monitor.service.ts and channel.service.ts from chatbot references - Removed chatbot properties from DTOs and validation schemas - Removed LocalChatwoot type and TYPEBOT events from wa.types - Cleaned PostgreSQL Prisma schema: removed 12 models and 2 enums - Removed chatbot relations from Instance model - Removed Chatwoot fields from Message model N8N remains as the only supported chatbot integration.
395 lines
14 KiB
Plaintext
395 lines
14 KiB
Plaintext
// This is your Prisma schema file,
|
|
// learn more about it in the docs: https://pris.ly/d/prisma-schema
|
|
|
|
// Looking for ways to speed up your queries, or scale easily with your serverless or edge functions?
|
|
// Try Prisma Accelerate: https://pris.ly/cli/accelerate-init
|
|
|
|
generator client {
|
|
provider = "prisma-client-js"
|
|
}
|
|
|
|
datasource db {
|
|
provider = "postgresql"
|
|
url = env("DATABASE_CONNECTION_URI")
|
|
}
|
|
|
|
enum InstanceConnectionStatus {
|
|
open
|
|
close
|
|
connecting
|
|
}
|
|
|
|
enum DeviceMessage {
|
|
ios
|
|
android
|
|
web
|
|
unknown
|
|
desktop
|
|
}
|
|
|
|
enum SessionStatus {
|
|
opened
|
|
closed
|
|
paused
|
|
}
|
|
|
|
enum TriggerType {
|
|
all
|
|
keyword
|
|
none
|
|
advanced
|
|
}
|
|
|
|
enum TriggerOperator {
|
|
contains
|
|
equals
|
|
startsWith
|
|
endsWith
|
|
regex
|
|
}
|
|
|
|
model Instance {
|
|
id String @id @default(cuid())
|
|
name String @unique @db.VarChar(255)
|
|
connectionStatus InstanceConnectionStatus @default(open)
|
|
ownerJid String? @db.VarChar(100)
|
|
profileName String? @db.VarChar(100)
|
|
profilePicUrl String? @db.VarChar(500)
|
|
integration String? @db.VarChar(100)
|
|
number String? @db.VarChar(100)
|
|
businessId String? @db.VarChar(100)
|
|
token String? @db.VarChar(255)
|
|
clientName String? @db.VarChar(100)
|
|
disconnectionReasonCode Int? @db.Integer
|
|
disconnectionObject Json? @db.JsonB
|
|
disconnectionAt DateTime? @db.Timestamp
|
|
createdAt DateTime? @default(now()) @db.Timestamp
|
|
updatedAt DateTime? @updatedAt @db.Timestamp
|
|
Chat Chat[]
|
|
Contact Contact[]
|
|
Message Message[]
|
|
Webhook Webhook?
|
|
Label Label[]
|
|
Proxy Proxy?
|
|
Setting Setting?
|
|
Rabbitmq Rabbitmq?
|
|
Nats Nats?
|
|
Sqs Sqs?
|
|
Kafka Kafka?
|
|
Websocket Websocket?
|
|
Session Session?
|
|
MessageUpdate MessageUpdate[]
|
|
Media Media[]
|
|
Template Template[]
|
|
IntegrationSession IntegrationSession[]
|
|
Pusher Pusher?
|
|
N8n N8n[]
|
|
N8nSetting N8nSetting[]
|
|
}
|
|
|
|
model Session {
|
|
id String @id @default(cuid())
|
|
sessionId String @unique
|
|
creds String? @db.Text
|
|
createdAt DateTime @default(now()) @db.Timestamp
|
|
Instance Instance @relation(fields: [sessionId], references: [id], onDelete: Cascade)
|
|
}
|
|
|
|
model Chat {
|
|
id String @id @default(cuid())
|
|
remoteJid String @db.VarChar(100)
|
|
name String? @db.VarChar(100)
|
|
labels Json? @db.JsonB
|
|
createdAt DateTime? @default(now()) @db.Timestamp
|
|
updatedAt DateTime? @updatedAt @db.Timestamp
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String
|
|
unreadMessages Int @default(0)
|
|
|
|
@@index([instanceId])
|
|
@@index([remoteJid])
|
|
}
|
|
|
|
model Contact {
|
|
id String @id @default(cuid())
|
|
remoteJid String @db.VarChar(100)
|
|
pushName String? @db.VarChar(100)
|
|
profilePicUrl String? @db.VarChar(500)
|
|
createdAt DateTime? @default(now()) @db.Timestamp
|
|
updatedAt DateTime? @updatedAt @db.Timestamp
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String
|
|
|
|
@@unique([remoteJid, instanceId])
|
|
@@index([remoteJid])
|
|
@@index([instanceId])
|
|
}
|
|
|
|
model Message {
|
|
id String @id @default(cuid())
|
|
key Json @db.JsonB
|
|
pushName String? @db.VarChar(100)
|
|
participant String? @db.VarChar(100)
|
|
messageType String @db.VarChar(100)
|
|
message Json @db.JsonB
|
|
contextInfo Json? @db.JsonB
|
|
source DeviceMessage
|
|
messageTimestamp Int @db.Integer
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String
|
|
MessageUpdate MessageUpdate[]
|
|
Media Media?
|
|
webhookUrl String? @db.VarChar(500)
|
|
status String? @db.VarChar(30)
|
|
|
|
sessionId String?
|
|
session IntegrationSession? @relation(fields: [sessionId], references: [id])
|
|
|
|
@@index([instanceId])
|
|
}
|
|
|
|
model MessageUpdate {
|
|
id String @id @default(cuid())
|
|
keyId String @db.VarChar(100)
|
|
remoteJid String @db.VarChar(100)
|
|
fromMe Boolean @db.Boolean
|
|
participant String? @db.VarChar(100)
|
|
pollUpdates Json? @db.JsonB
|
|
status String @db.VarChar(30)
|
|
Message Message @relation(fields: [messageId], references: [id], onDelete: Cascade)
|
|
messageId String
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String
|
|
|
|
@@index([instanceId])
|
|
@@index([messageId])
|
|
}
|
|
|
|
model Webhook {
|
|
id String @id @default(cuid())
|
|
url String @db.VarChar(500)
|
|
headers Json? @db.JsonB
|
|
enabled Boolean? @default(true) @db.Boolean
|
|
events Json? @db.JsonB
|
|
webhookByEvents Boolean? @default(false) @db.Boolean
|
|
webhookBase64 Boolean? @default(false) @db.Boolean
|
|
createdAt DateTime? @default(now()) @db.Timestamp
|
|
updatedAt DateTime @updatedAt @db.Timestamp
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String @unique
|
|
|
|
@@index([instanceId])
|
|
}
|
|
|
|
model Label {
|
|
id String @id @default(cuid())
|
|
labelId String? @db.VarChar(100)
|
|
name String @db.VarChar(100)
|
|
color String @db.VarChar(100)
|
|
predefinedId String? @db.VarChar(100)
|
|
createdAt DateTime? @default(now()) @db.Timestamp
|
|
updatedAt DateTime @updatedAt @db.Timestamp
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String
|
|
|
|
@@unique([labelId, instanceId])
|
|
}
|
|
|
|
model Proxy {
|
|
id String @id @default(cuid())
|
|
enabled Boolean @default(false) @db.Boolean
|
|
host String @db.VarChar(100)
|
|
port String @db.VarChar(100)
|
|
protocol String @db.VarChar(100)
|
|
username String @db.VarChar(100)
|
|
password String @db.VarChar(100)
|
|
createdAt DateTime? @default(now()) @db.Timestamp
|
|
updatedAt DateTime @updatedAt @db.Timestamp
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String @unique
|
|
}
|
|
|
|
model Setting {
|
|
id String @id @default(cuid())
|
|
rejectCall Boolean @default(false) @db.Boolean
|
|
msgCall String? @db.VarChar(100)
|
|
groupsIgnore Boolean @default(false) @db.Boolean
|
|
alwaysOnline Boolean @default(false) @db.Boolean
|
|
readMessages Boolean @default(false) @db.Boolean
|
|
readStatus Boolean @default(false) @db.Boolean
|
|
syncFullHistory Boolean @default(false) @db.Boolean
|
|
wavoipToken String? @db.VarChar(100)
|
|
createdAt DateTime? @default(now()) @db.Timestamp
|
|
updatedAt DateTime @updatedAt @db.Timestamp
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String @unique
|
|
|
|
@@index([instanceId])
|
|
}
|
|
|
|
model Rabbitmq {
|
|
id String @id @default(cuid())
|
|
enabled Boolean @default(false) @db.Boolean
|
|
events Json @db.JsonB
|
|
createdAt DateTime? @default(now()) @db.Timestamp
|
|
updatedAt DateTime @updatedAt @db.Timestamp
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String @unique
|
|
}
|
|
|
|
model Nats {
|
|
id String @id @default(cuid())
|
|
enabled Boolean @default(false) @db.Boolean
|
|
events Json @db.JsonB
|
|
createdAt DateTime? @default(now()) @db.Timestamp
|
|
updatedAt DateTime @updatedAt @db.Timestamp
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String @unique
|
|
}
|
|
|
|
model Sqs {
|
|
id String @id @default(cuid())
|
|
enabled Boolean @default(false) @db.Boolean
|
|
events Json @db.JsonB
|
|
createdAt DateTime? @default(now()) @db.Timestamp
|
|
updatedAt DateTime @updatedAt @db.Timestamp
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String @unique
|
|
}
|
|
|
|
model Kafka {
|
|
id String @id @default(cuid())
|
|
enabled Boolean @default(false) @db.Boolean
|
|
events Json @db.JsonB
|
|
createdAt DateTime? @default(now()) @db.Timestamp
|
|
updatedAt DateTime @updatedAt @db.Timestamp
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String @unique
|
|
}
|
|
|
|
model Websocket {
|
|
id String @id @default(cuid())
|
|
enabled Boolean @default(false) @db.Boolean
|
|
events Json @db.JsonB
|
|
createdAt DateTime? @default(now()) @db.Timestamp
|
|
updatedAt DateTime @updatedAt @db.Timestamp
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String @unique
|
|
}
|
|
|
|
model Pusher {
|
|
id String @id @default(cuid())
|
|
enabled Boolean @default(false) @db.Boolean
|
|
appId String @db.VarChar(100)
|
|
key String @db.VarChar(100)
|
|
secret String @db.VarChar(100)
|
|
cluster String @db.VarChar(100)
|
|
useTLS Boolean @default(false) @db.Boolean
|
|
events Json @db.JsonB
|
|
createdAt DateTime? @default(now()) @db.Timestamp
|
|
updatedAt DateTime @updatedAt @db.Timestamp
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String @unique
|
|
}
|
|
|
|
model Media {
|
|
id String @id @default(cuid())
|
|
fileName String @db.VarChar(500)
|
|
type String @db.VarChar(100)
|
|
mimetype String @db.VarChar(100)
|
|
createdAt DateTime? @default(now()) @db.Date
|
|
Message Message @relation(fields: [messageId], references: [id], onDelete: Cascade)
|
|
messageId String @unique
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String
|
|
}
|
|
|
|
model IntegrationSession {
|
|
id String @id @default(cuid())
|
|
sessionId String @db.VarChar(255)
|
|
remoteJid String @db.VarChar(100)
|
|
pushName String?
|
|
status SessionStatus
|
|
awaitUser Boolean @default(false) @db.Boolean
|
|
context Json?
|
|
type String? @db.VarChar(100)
|
|
createdAt DateTime? @default(now()) @db.Timestamp
|
|
updatedAt DateTime @updatedAt @db.Timestamp
|
|
Message Message[]
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String
|
|
parameters Json? @db.JsonB
|
|
|
|
botId String?
|
|
}
|
|
|
|
model Template {
|
|
id String @id @default(cuid())
|
|
templateId String @unique @db.VarChar(255)
|
|
name String @unique @db.VarChar(255)
|
|
template Json @db.JsonB
|
|
webhookUrl String? @db.VarChar(500)
|
|
createdAt DateTime? @default(now()) @db.Timestamp
|
|
updatedAt DateTime @updatedAt @db.Timestamp
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String
|
|
}
|
|
|
|
model IsOnWhatsapp {
|
|
id String @id @default(cuid())
|
|
remoteJid String @unique @db.VarChar(100)
|
|
jidOptions String
|
|
lid String? @db.VarChar(100)
|
|
createdAt DateTime @default(now()) @db.Timestamp
|
|
updatedAt DateTime @updatedAt @db.Timestamp
|
|
}
|
|
|
|
model N8n {
|
|
id String @id @default(cuid())
|
|
enabled Boolean @default(true) @db.Boolean
|
|
description String? @db.VarChar(255)
|
|
webhookUrl String? @db.VarChar(255)
|
|
basicAuthUser String? @db.VarChar(255)
|
|
basicAuthPass String? @db.VarChar(255)
|
|
expire Int? @default(0) @db.Integer
|
|
keywordFinish String? @db.VarChar(100)
|
|
delayMessage Int? @db.Integer
|
|
unknownMessage String? @db.VarChar(100)
|
|
listeningFromMe Boolean? @default(false) @db.Boolean
|
|
stopBotFromMe Boolean? @default(false) @db.Boolean
|
|
keepOpen Boolean? @default(false) @db.Boolean
|
|
debounceTime Int? @db.Integer
|
|
ignoreJids Json?
|
|
splitMessages Boolean? @default(false) @db.Boolean
|
|
timePerChar Int? @default(50) @db.Integer
|
|
triggerType TriggerType?
|
|
triggerOperator TriggerOperator?
|
|
triggerValue String?
|
|
createdAt DateTime? @default(now()) @db.Timestamp
|
|
updatedAt DateTime @updatedAt @db.Timestamp
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String
|
|
N8nSetting N8nSetting[]
|
|
}
|
|
|
|
model N8nSetting {
|
|
id String @id @default(cuid())
|
|
expire Int? @default(0) @db.Integer
|
|
keywordFinish String? @db.VarChar(100)
|
|
delayMessage Int? @db.Integer
|
|
unknownMessage String? @db.VarChar(100)
|
|
listeningFromMe Boolean? @default(false) @db.Boolean
|
|
stopBotFromMe Boolean? @default(false) @db.Boolean
|
|
keepOpen Boolean? @default(false) @db.Boolean
|
|
debounceTime Int? @db.Integer
|
|
ignoreJids Json?
|
|
splitMessages Boolean? @default(false) @db.Boolean
|
|
timePerChar Int? @default(50) @db.Integer
|
|
createdAt DateTime? @default(now()) @db.Timestamp
|
|
updatedAt DateTime @updatedAt @db.Timestamp
|
|
Fallback N8n? @relation(fields: [n8nIdFallback], references: [id])
|
|
n8nIdFallback String? @db.VarChar(100)
|
|
Instance Instance @relation(fields: [instanceId], references: [id], onDelete: Cascade)
|
|
instanceId String @unique
|
|
}
|