app | ||
dal | ||
deployments/staging | ||
jwt_adapter | ||
k8s | ||
middleware | ||
model | ||
ops | ||
router | ||
service | ||
test | ||
tools | ||
version | ||
.gitignore | ||
.gitlab-ci.yml | ||
compose.test.yml | ||
compose.yml | ||
Dockerfile | ||
DockerfileStaging | ||
go.mod | ||
go.sum | ||
main.go | ||
Makefile | ||
openapi.yaml | ||
prod.crt | ||
prod.key | ||
README.md | ||
server.crt | ||
server.key |
Heruvym
/create - метод для создания тикета. пример запроса
POST http://localhost:8000/support/create
Тело запроса
{
"Title":"test ticket title",
"Message":"test ticket message"
}
тело ответа
{
"Ticket":"c2fekjcobibtq7akknog"
}
/subscribe - sse метод для подписывания на изменения по всех тикетах доступных пользователю.
тело ответа
Ticket: {
ID string `bson:"_id"`
UserID string `bson:"UserID"`
SessionID string `bson:"SessionID"`
AnswererID string `bson:"AnswererID"`
State string `bson:"State"`
TopMessage: {
ID string `bson:"_id" json:"id"`
TicketID string `bson:"TicketID" json:"ticket_id"`
UserID string `bson:"UserID" json:"user_id"`
SessionID string `bson:"SessionID" json:"session_id"`
Message string `bson:"Message" json:"message"`
Files []string `bson:"Files" json:"files"`
Shown map[string]int `bson:"Shown" json:"shown"`
CreatedAt time.Time `bson:"CreatedAt" json:"created_at"`
}
Title string `bson:"Title"`
CreatedAt time.Time `bson:"CreatedAt"`
UpdatedAt time.Time `bson:"UpdatedAt"`
Rate int `bson:"Rate"`
}
/ticket - sse метод для подписки на сообщения из одного тикета.
тело ответа
{
ID string `bson:"_id" json:"id"`
TicketID string `bson:"TicketID" json:"ticket_id"`
UserID string `bson:"UserID" json:"user_id"`
SessionID string `bson:"SessionID" json:"session_id"`
Message string `bson:"Message" json:"message"`
Files []string `bson:"Files" json:"files"`
Shown map[string]int `bson:"Shown" json:"shown"`
CreatedAt time.Time `bson:"CreatedAt" json:"created_at"`
}
/send - метод для отправки сообщения в тикета
пример запроса POST http://localhost:8000/support/send
Тело запроса
{
"message":"test ticket message",
"TicketID":"c2fekjcobibtq7akknog",
"lang":"ru",
"files": ["idoffile"]
}
Ответ null
/getTickets - метод для получения тикетов с пагинацией
пример запроса POST http://localhost:8000/support/getTickets
Тело запроса:
{
"amt":10,
"page":1,
"srch":"test",
"status":"open"
}
Ответ:
[{
ID string `bson:"_id"`
UserID string `bson:"UserID"`
SessionID string `bson:"SessionID"`
AnswererID string `bson:"AnswererID"`
State string `bson:"State"`
TopMessage: {
ID string `bson:"_id" json:"id"`
TicketID string `bson:"TicketID" json:"ticket_id"`
UserID string `bson:"UserID" json:"user_id"`
SessionID string `bson:"SessionID" json:"session_id"`
Message string `bson:"Message" json:"message"`
Files []string `bson:"Files" json:"files"`
Shown map[string]int `bson:"Shown" json:"shown"`
CreatedAt time.Time `bson:"CreatedAt" json:"created_at"`
}
Title string `bson:"Title"`
CreatedAt time.Time `bson:"CreatedAt"`
UpdatedAt time.Time `bson:"UpdatedAt"`
Rate int `bson:"Rate"`
}]
/getMessages - метод для получения сообщений конкретного тикета с пагинацией
пример запроса POST http://localhost:8000/support/getMessages
Тело запроса:
{
"amt":10,
"page":1,
"srch":"test",
"ticket":"c2fekjcobibtq7akknog"
}
Ответ:
[{
ID string `bson:"_id" json:"id"`
TicketID string `bson:"TicketID" json:"ticket_id"`
UserID string `bson:"UserID" json:"user_id"`
SessionID string `bson:"SessionID" json:"session_id"`
Message string `bson:"Message" json:"message"`
Files []string `bson:"Files" json:"files"`
Shown map[string]int `bson:"Shown" json:"shown"`
CreatedAt time.Time `bson:"CreatedAt" json:"created_at"`
}]
/pick - подхватывание сотрудником диалога
пример запроса POST http://localhost:8000/support/pick
Тело запроса:
{"ticket":"c2fekjcobibtq7akknog"}
Ответ: null
/delegate - передача тикета другому сотруднику
пример запроса POST http://localhost:8000/support/delegate
Тело запроса:
{
"ticket":"c2fekjcobibtq7akknog",
"answerer":"c2fekjcobibtq7akknog"
}
Ответ: null
/vote - метод для оценки полезности ответа
пример запроса POST http://localhost:8000/support/delegate
Тело запроса:
{
"ticket":"c2fekjcobibtq7akknog",
"rate":5
}
Ответ: null
/close - метод для закрытия тикета
пример запроса POST http://localhost:8000/support/close
Тело запроса:
{
"ticket":"c2fekjcobibtq7akknog"
}
Ответ: null
/support/sendFiles - метод для отправки файлов