app | ||
dal | ||
jwt_adapter | ||
k8s | ||
middleware | ||
model | ||
ops | ||
service | ||
test | ||
tools | ||
version | ||
.gitignore | ||
Dockerfile | ||
go.mod | ||
go.sum | ||
main.go | ||
Makefile | ||
README.md |
Heruvym
/create - метод для создания тикета. пример запроса
POST https://staging.blacbroc.com/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 https://staging.blacbroc.com/support/send
Тело запроса {"message":"test ticket message","TicketID":"c2fekjcobibtq7akknog", "lang":"ru","files": ["idoffile"]}
Ответ null
/getTickets - метод для получения тикетов с пагинацией
пример запроса POST https://staging.blacbroc.com/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 https://staging.blacbroc.com/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 https://staging.blacbroc.com/support/pick
Тело запроса: {"ticket":"c2fekjcobibtq7akknog"}
Ответ: null
/delegate - передача тикета другому сотруднику
пример запроса POST https://staging.blacbroc.com/support/delegate
Тело запроса: {"ticket":"c2fekjcobibtq7akknog","answerer":"c2fekjcobibtq7akknog"}
Ответ: null
/vote - метод для оценки полезности ответа
пример запроса POST https://staging.blacbroc.com/support/delegate
Тело запроса: {"ticket":"c2fekjcobibtq7akknog","rate":5}
Ответ: null
/close - метод для закрытия тикета
пример запроса POST https://staging.blacbroc.com/support/close
Тело запроса: {"ticket":"c2fekjcobibtq7akknog"}
Ответ: null