2024-03-13 18:23:46 +00:00
openapi : 3.0 .3
info :
title : QUIZ service api
description : Title
version : 1.0 .0
components :
requestBodies :
GetQuizResultsReq :
content :
'application/json' :
schema :
type : object
properties :
to :
description : таймштамп времени, до которого выбирать статистику. если 0 или не передано - этого ограничения нет. верхняя граница времени
type : integer
from :
description : таймштамп времени, после которого выбирать статистику. если 0 или не передано - этого ограничения нет. нижняя граница времени
new :
description : флаг, по которому вернутся только новые результаты, ещё не просмотренные пользователем
type : boolean
page :
description : номер страницы для пагинации
type : integer
require : true
limit :
description : размер страницы для пагинации
type : integer
require : true
QuizCreateReq :
content :
'application/json' :
schema :
type : object
properties :
fingerprinting :
description : set true for save deviceId
type : boolean
repeatable :
description : set true for allow user to repeat quiz
type : boolean
note_prevented :
description : set true for save statistic of incomplete quiz passing
type : boolean
mail_notifications :
description : set true for mail notification for each quiz passing
type : boolean
unique_answers :
description : set true for save statistics only for unique quiz passing
type : boolean
name :
description : name of quiz. max 280 length
type : string
description :
description : description of quiz
type : string
config :
description : config of quiz. serialized json for rules of quiz flow
type : string
status :
description : status of quiz. allow only '', 'draft', 'template', 'stop', 'start'
type : string
limit :
description : limit is count of max quiz passing
type : integer
due_to :
description : last time when quiz is valid. timestamp in seconds
type : integer
time_of_passing :
description : seconds to pass quiz
type : integer
pausable :
description : true if it is allowed for pause quiz
type : boolean
question_cnt :
description : count of questions
type : integer
super :
description : set true if squiz realize group functionality
type : boolean
group_id :
description : group of new quiz
type : integer
QuizGetListReq :
content :
'application/json' :
schema :
type : object
properties :
limit :
description : max items on page
type : integer
offset :
description : page number
type : integer
from :
description : start time of time period. timestamp in seconds
type : integer
to :
description : end time of time period. timestamp in seconds
type : integer
search :
description : string for fulltext search in titles of quizes
type : string
status :
description : allow only - draft, template, timeout, stop, start, offlimit
type : string
deleted :
description : get deleted quizes
type : boolean
archived :
description : get archived quizes
type : boolean
super :
description : set true if squiz realize group functionality
type : boolean
group_id :
description : group of new quiz
type : integer
QuestionCreateReq :
content :
'application/json' :
schema :
type : object
properties :
quiz_id :
description : id of quiz for what question is creating
type : integer
title :
description : title of question. max length 512
type : string
description :
description : description of question. html/text
type : string
type :
description : type of question. allow only text, select, file, variant, images, varimg, emoji, date, number, page, rating
type : string
required :
description : set true if user MUST answer this question
type : boolean
page :
description : page of question
type : integer
content :
description : json serialized of question content settings
type : string
QuestionGetListReq :
content :
'application/json' :
schema :
type : object
properties :
limit :
description : max items on page
type : integer
offset :
description : page number
type : integer
from :
description : start time of time period. timestamp in seconds
type : integer
to :
description : end time of time period. timestamp in seconds
type : integer
search :
description : string for fulltext search in titles of questions
type : string
type :
description : allow only - text, select, file, variant, images, varimg, emoji, date, number, page, rating or empty string
type : string
deleted :
description : get deleted quizes
type : boolean
required :
description : get only require questions
type : boolean
quiz_id :
description : relation to quiz
type : integer
GetQuizReq :
content :
'application/json' :
schema :
type : object
properties :
quiz_id :
type : string
description : secret string id for customer activity
limit :
type : integer
description : page size
page :
type : integer
description : page of questions
need_config :
type : boolean
description : make true if you need all quiz settings with questions page
UpdateQuestionReq :
content :
'application/json' :
schema :
type : object
properties :
id :
type : integer
description : id of question for update
required : true
title :
type : string
description : new title of question
desc :
type : string
description : new fulltext plain/html description
type :
type : string
description : new type of question
content :
type : string
description : new content of question
required :
type : boolean
description : set true if this question must be answered
page :
type : integer
description : page of question
UpdateQuizReq :
content :
'application/json' :
schema :
type : object
properties :
id :
type : integer
description : id of question for update
required : true
fp :
type : boolean
description : set true for storing fingerprints
required : true
rep :
type : boolean
description : set true for allow to repeat quiz after passing
required : true
note_prevented :
type : boolean
description : set true for store unfinished passing
required : true
mailing :
type : boolean
description : set true if we should send passing result on every passing
required : true
uniq :
type : boolean
description : set true if we allow only one user quiz passing
required : true
name :
type : string
description : new name of the quiz
desc :
type : string
description : new descriptions of the quiz
conf :
type : string
description : new config of the quiz
status :
type : string
description : new status. only draft,template,stop,start allowed
limit :
type : integer
description : max amount of quiz passing
required : true
due_to :
type : integer
description : max time of quiz passing
required : true
time_of_passing :
type : integer
description : max time to pass quiz
required : true
pausable :
type : boolean
description : allow to pause quiz to user
required : true
question_cnt :
description : count of questions
type : integer
super :
description : set true if squiz realize group functionality
type : boolean
group_id :
description : group of new quiz
type : integer
CopyQuestionReq :
content :
'application/json' :
schema :
type : object
properties :
id :
type : integer
description : id of copying question
required : true
quiz_id :
type : integer
description : quiz id for copy question to another quiz
CopyQuizReq :
content :
'application/json' :
schema :
type : object
properties :
id :
type : integer
description : id of copied quiz
required : true
GetQuizHistoryReq :
content :
'application/json' :
schema :
type : object
properties :
id :
type : integer
description : id of quiz for history
required : true
l :
type : integer
description : naumber of quiz due page
p :
type : integer
description : number of page
DeactivateReq :
content :
'application/json' :
schema :
type : object
properties :
id :
type : integer
description : id of deactivating struct
required : true
2024-03-25 16:03:04 +00:00
GetStatisticsReq :
content :
'application/json' :
schema :
type : object
properties :
to :
description : таймштамп времени, до которого выбирать статистику. если 0 или не передано - этого ограничения нет. верхняя граница времени
type : integer
from :
description : таймштамп времени, после которого выбирать статистику. если 0 или не передано - этого ограничения нет. нижняя граница времени
2024-04-03 18:58:18 +00:00
type : integer
2024-03-13 18:23:46 +00:00
responses :
GetQuizResultsResp :
description : список результатов, уместившийся на запрошенной странице
content :
'application/json' :
schema :
type : object
properties :
total_count :
description : общее количество элементов удволетворяющее фильтру. нужно для формирования логики пагинации
type : integer
results :
description : список результатов
type : array
items :
type : object
properties :
content :
description : содержимое ответа
type : string
id :
description : айдишник ответа
type : integer
new :
description : статус, был ли просмотрен ответ
type : boolean
created_at :
description : время создания этого результата
type : string
2024-03-25 16:03:04 +00:00
GetDevicesStatsResp :
description : ответ статистики по устройствам
content :
'application/json' :
schema :
type : object
properties :
device :
description : процент устройств среди респондентов
type : object
additionalProperties :
type : number
os :
description : процент операционок среди респондентов
type : object
additionalProperties :
type : number
browser :
description : процент браузеров среди респондентов
type : object
additionalProperties :
type : number
GetGeneralStatsResp :
description : ответ статистики по графикам
content :
'application/json' :
schema :
type : object
properties :
open :
description : ассоциативный массив где ключ - время, а значение - количество открытий
type : object
additionalProperties :
type : number
result :
description : ассоциативный массив, где ключ - время, а значение - количество респондентов, оставивших заявку
type : object
additionalProperties :
type : number
avtime :
description : ассоциативный массив, где ключ - время, а значение - среднее время между первым ответом и последним
type : object
additionalProperties :
type : number
conversation :
description : ассоциативный массив, где ключ - время, а значение - отношение результатов к открытиям
type : object
additionalProperties :
type : number
GetQuestionStatsResp :
description : ответ статистики по вопросам и результатам
content :
'application/json' :
schema :
type : object
properties :
funnel :
description : массив процентов прохождения по опросу
type : array
items :
type : number
results :
description : ассоциативный массив, где ключ - заголовок результата, а значение - количество респондентов, оставивших заявку
type : object
additionalProperties :
type : number
questions :
description : ассоциативный массив, где ключ - id ответа, а значение - ассоциативный массив, где ключ - ответ на вопрос, а значение - процент респондентов, давших такой ответ
type : object
additionalProperties :
type : object
additionalProperties :
type : number
GetStatisticResp :
description : ответ статистики по общему количеству создания квизов, регистрации пользователей, и полученых ответов с result=true, а указанный промежуток времени
content :
'application/json' :
schema :
type : object
properties :
registrations :
description : количество регистраций
type : number
quizes :
description : количество созданных не удаленных опросов
type : number
results :
description : количество ответов с result=true
type : number
2024-03-13 18:23:46 +00:00
QuizModel :
description : object of created quiz
content :
'application/json' :
schema :
type : object
properties :
id :
description : Id of created quiz
type : integer
qid :
description : string id for customers
type : string
deleted :
description : true if quiz deleted
type : boolean
archived :
description : true if quiz archived
type : boolean
fingerprinting :
description : set true for save deviceId
type : boolean
repeatable :
description : set true for allow user to repeat quiz
type : boolean
note_prevented :
description : set true for save statistic of incomplete quiz passing
type : boolean
mail_notifications :
description : set true for mail notification for each quiz passing
type : boolean
unique_answers :
description : set true for save statistics only for unique quiz passing
type : boolean
name :
description : name of quiz. max 280 length
type : string
description :
description : description of quiz
type : string
config :
description : config of quiz. serialized json for rules of quiz flow
type : string
status :
description : status of quiz. allow only '', 'draft', 'template', 'stop', 'start'
type : string
limit :
description : limit is count of max quiz passing
type : integer
due_to :
description : last time when quiz is valid. timestamp in seconds
type : integer
time_of_passing :
description : seconds to pass quiz
type : integer
pausable :
description : true if it is allowed for pause quiz
type : boolean
version :
description : version of quiz
type : integer
version_comment :
description : version comment to version of quiz
type : string
parent_ids :
description : array of previous versions of quiz
type : array
items :
type : integer
created_at :
description : time of creating
type : string
updated_at :
description : time of last updating
type : string
question_cnt :
description : count of questions
type : integer
passed_count :
description : count passings
type : integer
average_time :
description : average time of passing
type : integer
super :
description : set true if squiz realize group functionality
type : boolean
group_id :
description : group of new quiz
type : integer
QuizListGetResp :
description : list of quizes with all filtered quizes count
content :
'application/json' :
schema :
type : object
properties :
count :
description : count of all filtered items
type : integer
items :
description : count of all filtered items
type : array
items :
$ref : '#/components/responses/QuizModel'
QuestionModel :
description : object of created question
content :
'application/json' :
schema :
type : object
properties :
id :
description : Id of created question
type : integer
quiz_id :
description : relation to quiz
type : integer
title :
description : title of question. max 512 length
type : string
description :
description : description of question
type : string
type :
description : status of question. allow only text, select, file, variant, images, varimg, emoji, date, number, page, rating
type : string
required :
description : user must pass this question
type : boolean
deleted :
description : true if question is deleted
type : boolean
page :
description : page if question
type : integer
content :
description : serialized json of created question
type : string
version :
description : version of quiz
type : integer
parent_ids :
description : array of previous versions of quiz
type : array
items :
type : integer
created_at :
description : time of creating
type : string
updated_at :
description : time of last updating
type : string
QuestionListGetResp :
description : list of quizes with all filtered quizes count
content :
'application/json' :
schema :
type : object
properties :
count :
description : count of all filtered items
type : integer
items :
description : count of all filtered items
type : array
items :
$ref : '#/components/responses/QuizModel'
QuizGetResp :
description : short response for customer
content :
'application/json' :
schema :
type : object
properties :
cnt :
type : integer
description : count of all questions in quiz
settings :
type : object
properties :
fp :
type : boolean
description : store fingerprint if true
rep :
type : boolean
description : allow repeat after end of quiz passing
name :
type : string
description : title of quiz
cfg :
type : string
description : serialized json of quiz graph
lim :
type : integer
description : max amount of passing
due :
type : integer
description : last time of new ansvers are valid
delay :
type : integer
description : time that given to customer for pass quiz
pausable :
type : boolean
description : allow user to pause quiz passing
items :
type : array
description : array of xhort items of quiestions for quiz
items :
type : object
properties :
id :
type : integer
description : identificator of question
title :
type : string
description : title of question
desc :
type : string
description : description of question html plaintext
typ :
type : string
description : type of question such as text, select, file, variant, images, varimg, emoji, date, number, page, rating
req :
type : boolean
description : mark question as required
p :
type : integer
description : page of quiz
c :
type : string
description : config of question. such as variants for select
UpdateResp :
description : id of new version of question
content :
'application/json' :
schema :
type : object
properties :
updated :
type : integer
DeactivateResp :
description : id of deleted structure
content :
'application/json' :
schema :
type : object
properties :
deactivated :
type : integer
schemas :
2024-06-20 12:57:00 +00:00
Statistic :
type : object
properties :
Count :
type : integer
format : int64
description : Количество прошедших сессий
QuestionID :
type : integer
format : int64
description : Идентификатор вопроса
PipeLineStatsResp :
type : object
2024-07-03 13:06:19 +00:00
properties :
PipelineStatistic :
type : object
additionalProperties :
type : array
items :
$ref : '#/components/schemas/Statistic'
description : Статистика по воронкам
ContactFormStatistic :
type : object
additionalProperties :
type : integer
format : int64
description : Количество ответов на вопрос формы контактов
description : Статистика форм контакта
2024-03-13 18:23:46 +00:00
Answer :
type : object
properties :
Id :
type : integer
description : id ответа
Content :
type : string
description : контент ответа
QuestionId :
type : integer
description : id вопроса к которому ответ
QuizId :
type : integer
description : id опроса к которому ответ
Fingerprint :
type : string
description : fingerprint
Session :
type : string
description : сессия
Result :
type : boolean
description : true or false?
CreatedAt :
type : string
format : date-time
description : таймшап когда ответ создан
New :
type : boolean
description : новый ответ?
Deleted :
type : boolean
description : удален?
2024-06-11 16:02:23 +00:00
LeadTarget :
type : object
properties :
ID :
type : integer
format : int64
AccountID :
type : string
Type :
type : string
QuizID :
type : integer
format : int32
Target :
type : string
2024-07-11 09:06:24 +00:00
InviteLink :
type : string
2024-06-11 16:02:23 +00:00
Deleted :
type : boolean
CreatedAt :
type : string
2024-07-01 14:52:14 +00:00
TgAccountStatus :
type : string
enum :
- active
- inactive
- ban
TgAccount :
type : object
properties :
ID :
type : integer
format : int64
ApiID :
type : integer
format : int32
ApiHash :
type : string
PhoneNumber :
type : string
Password :
type : string
Status :
$ref : '#/components/schemas/TgAccountStatus'
Deleted :
type : boolean
CreatedAt :
type : string
format : date-time
AuthTgUserReq :
type : object
required :
- ApiID
- ApiHash
- PhoneNumber
- Password
properties :
ApiID :
type : integer
format : int32
ApiHash :
type : string
PhoneNumber :
type : string
Password :
type : string
2024-03-13 18:23:46 +00:00
paths :
/liveness :
get :
description : Check that service is running
responses :
'200' :
description : healthcheck. if it non 200, that service is not running
/readiness :
get :
description : Check that service is ready for handle requests
responses :
'200' :
description : healthcheck. if it non 200, that service is not running
/quiz/create :
post :
description : Create quiz
requestBody :
$ref : '#/components/requestBodies/QuizCreateReq'
responses :
'201' :
$ref : '#/components/responses/QuizModel'
'422' :
description : name field should have less then 280 chars
content :
'application/json' :
schema :
type : string
default : name field should have less then 280 chars
'406' :
description : not acceptable input data
content :
'application/json' :
schema :
type : string
default : status on creating must be only draft,template,stop,start or due to time must be lesser then now
'409' :
description : not logical entry
content :
'application/json' :
schema :
type : string
default : you can pause quiz only if it has deadline for passing
'500' :
description : not mentioned error
content :
'application/json' :
schema :
type : string
default : if you get any content string send it to developer
/quiz/getList :
post :
description : method for obtain page of quiz list for paginated list
requestBody :
$ref : '#/components/requestBodies/QuizGetListReq'
responses :
'200' :
$ref : '#/components/responses/QuizListGetResp'
'406' :
description : inappropriate status, allowed only '', 'stop','start','draft', 'template','timeout','offlimit'
content :
'application/json' :
schema :
type : string
default : inappropriate status
'500' :
description : not mentioned error
content :
'application/json' :
schema :
type : string
default : if you get any content string send it to developer
/question/create :
post :
description : method for creating question for quiz
requestBody :
$ref : '#/components/requestBodies/QuestionCreateReq'
responses :
'200' :
$ref : '#/components/responses/QuestionModel'
'422' :
description : not valid data
content :
'application/json' :
schema :
type : string
default : title field should have less then 512 chars
'406' :
description : not acceptable data
content :
'application/json' :
schema :
type : string
default : type must be only test,button,file,checkbox,select, none
'424' :
description : failed relation to quiz
content :
'application/json' :
schema :
type : string
default : failed relation to quiz
'500' :
description : not mentioned error
content :
'application/json' :
schema :
type : string
default : if you get any content string send it to developer
/question/getList :
post :
description : method for obtain page of question list for paginated list
requestBody :
$ref : '#/components/requestBodies/QuestionGetListReq'
responses :
'200' :
$ref : '#/components/responses/QuestionListGetResp'
'406' :
description : inappropriate type, allowed only '','test','none','file', 'button','select','checkbox'
content :
'application/json' :
schema :
type : string
default : inappropriate status
'500' :
description : not mentioned error
content :
'application/json' :
schema :
type : string
default : if you get any content string send it to developer
/quiz/get :
post :
description : method for obtaining settings of quiz and question page
requestBody :
$ref : '#/components/requestBodies/GetQuizReq'
responses :
'200' :
$ref : '#/components/responses/QuizGetResp'
'206' :
$ref : '#/components/responses/QuizGetResp'
'400' :
description : you cat get quiz only if you know it's uuid
content :
'application/json' :
schema :
type : string
default : no quiz id provided
'411' :
description : limit should not be 0 when no aettings is need
content :
'application/json' :
schema :
type : string
default : no data requested
'500' :
description : not mentioned error
content :
'application/json' :
schema :
type : string
default : if you get any content string send it to developer
'423' :
description : you can not get data for inactive quiz
content :
'application/json' :
schema :
type : string
default : quiz is inactive
'410' :
description : you can not get timeouted quiz
content :
'application/json' :
schema :
type : string
default : quiz timeouted
/question/edit :
patch :
description : method for update question. delete old question and create new with increment version
requestBody :
$ref : '#/components/requestBodies/UpdateQuestionReq'
responses :
'200' :
$ref : '#/components/responses/UpdateResp'
'424' :
description : return when no question id was send
content :
'application/json' :
schema :
type : string
default : need id of question for update
'422' :
description : too large new title
content :
'application/json' :
schema :
type : string
default : title field should have less then 512 chars
'406' :
description : inappropriate status sent
content :
'application/json' :
schema :
type : string
default : type must be only test,button,file,checkbox,select, none or empty string
'500' :
description : not mentioned error
content :
'application/json' :
schema :
type : string
default : if you get any content string send it to developer
/quiz/edit :
patch :
description : method for update quiz
requestBody :
$ref : '#/components/requestBodies/UpdateQuizReq'
responses :
'200' :
$ref : '#/components/responses/UpdateResp'
'424' :
description : return when no quiz id was send
content :
'application/json' :
schema :
type : string
default : need id of quiz for update
'422' :
description : too large new title
content :
'application/json' :
schema :
type : string
default : name field should have less then 280 chars
'406' :
description : inappropriate status sent
content :
'application/json' :
schema :
type : string
default : status on creating must be only draft,template,stop,start or due to time must be lesser then now
'409' :
description : impossible state creating
content :
'application/json' :
schema :
type : string
default : you can pause quiz only if it has deadline for passing
'500' :
description : not mentioned error
content :
'application/json' :
schema :
type : string
default : if you get any content string send it to developer
/question/copy :
post :
description : method for copy question to another quiz or to duplicate quiz
requestBody :
$ref : '#/components/requestBodies/CopyQuestionReq'
responses :
'201' :
$ref : '#/components/responses/UpdateResp'
'500' :
description : not mentioned error
content :
'application/json' :
schema :
type : string
default : if you get any content string send it to developer
'424' :
description : return when no question id was send
content :
'application/json' :
schema :
type : string
default : no id provided
/quiz/copy :
post :
description : method for copy question to another quiz or to duplicate quiz
requestBody :
$ref : '#/components/requestBodies/CopyQuizReq'
responses :
'201' :
$ref : '#/components/responses/UpdateResp'
'500' :
description : not mentioned error
content :
'application/json' :
schema :
type : string
default : if you get any content string send it to developer
'424' :
description : return when no quiz id was send
content :
'application/json' :
schema :
type : string
default : no id provided
/quiz/history :
post :
description : method for obtain page of quiz history for paginated list
requestBody :
$ref : '#/components/requestBodies/GetQuizHistoryReq'
responses :
'200' :
description : page of history quiz changes
content :
'application/json' :
schema :
type : array
items :
$ref : '#/components/responses/QuizModel'
'424' :
description : no id provided
content :
'application/json' :
schema :
type : string
default : no id provided
'500' :
description : not mentioned error
content :
'application/json' :
schema :
type : string
default : if you get any content string send it to developer
/question/history :
post :
description : method for obtain page of question history for paginated list
requestBody :
$ref : '#/components/requestBodies/GetQuizHistoryReq'
responses :
'200' :
description : page of history question changes
content :
'application/json' :
schema :
type : array
items :
$ref : '#/components/responses/QuestionModel'
'424' :
description : no id provided
content :
'application/json' :
schema :
type : string
default : no id provided
'500' :
description : not mentioned error
content :
'application/json' :
schema :
type : string
default : if you get any content string send it to developer
/quiz/delete :
delete :
description : method for mark quiz as deleted
requestBody :
$ref : '#/components/requestBodies/DeactivateReq'
responses :
'200' :
$ref : '#/components/responses/DeactivateResp'
'500' :
description : not mentioned error
content :
'application/json' :
schema :
type : string
default : if you get any content string send it to developer
'424' :
description : return when no quiz id was send
content :
'application/json' :
schema :
type : string
default : no id provided
/quiz/archive :
patch :
description : method for mark quiz as archived
requestBody :
$ref : '#/components/requestBodies/DeactivateReq'
responses :
'200' :
$ref : '#/components/responses/DeactivateResp'
'500' :
description : not mentioned error
content :
'application/json' :
schema :
type : string
default : if you get any content string send it to developer
'424' :
description : return when no quiz id was send
content :
'application/json' :
schema :
type : string
default : no id provided
/question/delete :
delete :
description : method for mark question as deleted
requestBody :
$ref : '#/components/requestBodies/DeactivateReq'
responses :
'200' :
$ref : '#/components/responses/DeactivateResp'
'500' :
description : not mentioned error
content :
'application/json' :
schema :
type : string
default : if you get any content string send it to developer
'424' :
description : return when no question id was send
content :
'application/json' :
schema :
type : string
default : no id provided
/results/getResults/{quizId}:
post :
description : получение списка результатов респондентов проходивших опрос
requestBody :
$ref : '#/components/requestBodies/GetQuizResultsReq'
responses :
'200' :
$ref : '#/components/responses/GetQuizResultsResp'
'500' :
description : not mentioned error
content :
'application/json' :
schema :
type : string
default : if you get any content string send it to developer
/results/delete/{resultId}:
delete :
description : мягкое удаление результата. не удаляет, но помечает удаленным
responses :
'200' :
description : если все хорошо,то и отправлять нечего
'500' :
description : not mentioned error
content :
'application/json' :
schema :
type : string
default : if you get any content string send it to developer
/results/seen :
patch :
description : устаревает результаты, т.е . делает их new = false
requestBody :
content :
'application/json' :
schema :
type : object
properties :
answers :
description : список айдишников результатов, которые надо устареть
type : array
items :
type : integer
responses :
'200' :
description : если все хорошо,то и отправлять нечего
'500' :
description : not mentioned error
content :
'application/json' :
schema :
type : string
default : if you get any content string send it to developer
/results/{quizID}/export:
post :
summary : экспорт результатов quiz в csv
description : экспорт результатов quiz в csv
parameters :
- in : path
name : quizID
description : id quiz, из которого нужно экспортировать результаты
required : true
schema :
type : integer
format : uint64
requestBody :
required : false
content :
application/json :
schema :
type : object
properties :
to :
type : string
format : date
description : Дата окончания диапазона времени для экспорта результатов
from :
type : string
format : date
description : Дата начала временного диапазона для экспорта результатов
new :
type : boolean
description : Экспортировать ли только новые результаты?
responses :
"200" :
description : CSV-файл, содержащий результаты теста
content :
text/csv :
schema :
type : string
format : binary
"400" :
description : Bad request. Invalid quiz ID or request body.
"500" :
description : Internal server error. Failed to export quiz results.
/result/{resultID}:
get :
summary : возвращает все ответы по resultID (answerID) в рамках сессии resultID
description : возвращает все ответы по resultID (answerID) в рамках сессии resultID
parameters :
- in : path
name : resultID
required : true
description : resultID (answerID), в рамках сессии которого нужно вернуть все ответы
schema :
type : string
responses :
'200' :
description : Successful
content :
application/json :
schema :
type : array
items :
$ref : '#/components/schemas/Answer'
'400' :
description : Invalid result ID provided
content :
application/json :
schema :
type : object
properties :
message :
type : string
2024-03-25 16:03:04 +00:00
'500' :
description : Failed to retrieve result answers
content :
application/json :
schema :
type : object
properties :
message :
type : string
/statistic/{quizID}/questions:
post :
description : метод получения статистики по конкретным вопросам
parameters :
- in : path
name : quizID
required : true
description : quizID, в рамках которого надо вернуть статистику
schema :
type : string
requestBody :
$ref : '#/components/requestBodies/GetStatisticsReq'
responses :
'200' :
$ref : '#/components/responses/GetQuestionStatsResp'
'400' :
description : Invalid request
content :
application/json :
schema :
type : object
properties :
message :
type : string
'500' :
description : Failed to retrieve result answers
content :
application/json :
schema :
type : object
properties :
message :
type : string
/statistic/{quizID}/general:
post :
description : метод получения основной статистики
parameters :
- in : path
name : quizID
required : true
description : quizID, в рамках которого надо вернуть статистику
schema :
type : string
requestBody :
$ref : '#/components/requestBodies/GetStatisticsReq'
responses :
'200' :
$ref : '#/components/responses/GetGeneralStatsResp'
'400' :
description : Invalid request
content :
application/json :
schema :
type : object
properties :
message :
type : string
'500' :
description : Failed to retrieve result answers
content :
application/json :
schema :
type : object
properties :
message :
type : string
/statistic/{quizID}/devices:
post :
description : метод получения статистики по устройствам
parameters :
- in : path
name : quizID
required : true
description : quizID, в рамках которого надо вернуть статистику
schema :
type : string
requestBody :
$ref : '#/components/requestBodies/GetStatisticsReq'
responses :
'200' :
$ref : '#/components/responses/GetDevicesStatsResp'
'400' :
description : Invalid request
content :
application/json :
schema :
type : object
properties :
message :
type : string
'500' :
description : Failed to retrieve result answers
content :
application/json :
schema :
type : object
properties :
message :
type : string
/statistic :
post :
description : метод получения общей статистики по опросам, регистрациям и ответов с result = true за указанный промежуток времени
requestBody :
$ref : '#/components/requestBodies/GetStatisticsReq'
responses :
'200' :
$ref : '#/components/responses/GetStatisticResp'
'400' :
description : Invalid request
content :
application/json :
schema :
type : object
properties :
message :
type : string
2024-03-13 18:23:46 +00:00
'500' :
description : Failed to retrieve result answers
2024-05-13 11:15:06 +00:00
content :
application/json :
schema :
type : object
properties :
message :
type : string
/quiz/template :
post :
description : метод для копирования шаблонного квиза на аккаунт пользователя
requestBody :
content :
'application/json' :
schema :
type : object
properties :
Qid :
type : string
description : qid виза который копируется
required : true
responses :
2024-05-13 11:19:54 +00:00
'200' :
2024-05-17 14:27:28 +00:00
description : возвращает id нового квиза
content :
application/json :
schema :
type : object
properties :
id :
type : number
2024-05-13 11:15:06 +00:00
'400' :
description : Invalid request
content :
application/json :
schema :
type : object
properties :
message :
type : string
'401' :
description : Unauthorized
content :
application/json :
schema :
type : object
properties :
message :
type : string
'500' :
description : Failed copy quiz
2024-06-03 14:22:48 +00:00
content :
application/json :
schema :
type : object
properties :
message :
type : string
/account/manualdone :
post :
description : метод для декремента привилегии quizManual у пользователя
requestBody :
content :
'application/json' :
schema :
type : object
properties :
id :
type : string
description : id пользователя у которого отнимается штука привилегии
required : true
responses :
'200' :
description : О К , успешно отнялась 1 штука
'400' :
description : Bad request, ошибка в теле запроса
content :
application/json :
schema :
type : object
properties :
message :
type : string
'404' :
description : Not Found, у пользователя не нашлось такой привилегии либо она кончилась и воркер до нее еще не добрался
content :
application/json :
schema :
type : object
properties :
message :
type : string
2024-06-11 16:02:23 +00:00
'500' :
description : Internal Srv Error
content :
application/json :
schema :
type : object
properties :
message :
type : string
/account/leadtarget :
post :
description : Метод для добавления целевых мест, куда будут посылаться заявки клиенту.
security :
- Bearer : [ ]
requestBody :
content :
'application/json' :
schema :
type : object
required :
- type
- quizID
- target
properties :
type :
type : string
description : Тип цели (mail, telegram, whatsapp).
enum :
- mail
- telegram
- whatsapp
quizID :
type : integer
format : int32
description : ID квиза, к которому прикреплено это правило (приоритет). Передавать как 0, если правило не прикрепляется к квизу и является общим.
target :
type : string
2024-07-11 09:06:24 +00:00
description : Адресат, куда конкретно слать (для mail - email, для telegram - ID канала, передавать не нужно канал сам создаться, для whatsapp - номер телефона, наверное).
name :
type : string
description : имя например для тг канала
2024-06-11 16:02:23 +00:00
responses :
'200' :
2024-07-11 09:06:24 +00:00
description : О К , парвило добавлено если тип mail о сразу добавляется если тг то будет добавленно в воркере если ватсап пока тодо
# content:
# application/json:
# schema:
# $ref: '#/components/schemas/LeadTarget'
2024-06-11 16:02:23 +00:00
'400' :
description : Bad request, ошибка в теле запроса
content :
application/json :
schema :
type : object
properties :
message :
type : string
'401' :
description : Unauthorized, не авторизован
content :
application/json :
schema :
type : object
properties :
message :
type : string
'500' :
description : Internal Srv Error
content :
application/json :
schema :
type : object
properties :
message :
type : string
put :
description : Метод для обновления целевого места, куда будут посылаться заявки клиенту.
security :
- Bearer : [ ]
requestBody :
content :
'application/json' :
schema :
type : object
required :
- id
- target
properties :
id :
type : integer
format : int64
description : id этой самой цели, primary key.
target :
type : string
description : Адресат, куда конкретно слать (для mail - email, для telegram - ID чата, для whatsapp - номер телефона, наверное).
responses :
'200' :
description : О К , парвило обновлено
content :
application/json :
schema :
$ref : '#/components/schemas/LeadTarget'
'400' :
description : Bad request, ошибка в теле запроса
content :
application/json :
schema :
type : object
properties :
message :
type : string
'401' :
description : Unauthorized, не авторизован
content :
application/json :
schema :
type : object
properties :
message :
type : string
'404' :
description : NotFound, такого не существует
content :
application/json :
schema :
type : object
properties :
message :
type : string
'500' :
description : Internal Srv Error
content :
application/json :
schema :
type : object
properties :
message :
type : string
/account/leadtarget/{id}:
delete :
description : удаление правила по id, primary key
security :
- Bearer : [ ]
responses :
'200' :
description : О К , парвило удалено
'400' :
description : Bad request, ошибка в теле запроса
content :
application/json :
schema :
type : object
properties :
message :
type : string
'500' :
description : Internal Srv Error
content :
application/json :
schema :
type : object
properties :
message :
type : string
/account/leadtarget/{quizID}:
get :
description : получение правила по quizID, так же стоит передавать 0 если правило не было привязано к определенному квизу, возвращает массив
security :
- Bearer : [ ]
responses :
'200' :
description : О К , парвила получены
content :
application/json :
schema :
type : array
items :
$ref : '#/components/schemas/LeadTarget'
'400' :
description : Bad request, ошибка в теле запроса
content :
application/json :
schema :
type : object
properties :
message :
type : string
'401' :
description : Unauthorized, не авторизован
content :
application/json :
schema :
type : object
properties :
message :
type : string
'404' :
description : NotFound, такого не существует
content :
application/json :
schema :
type : object
properties :
message :
type : string
2024-06-03 14:22:48 +00:00
'500' :
description : Internal Srv Error
2024-03-13 18:23:46 +00:00
content :
application/json :
schema :
type : object
properties :
message :
2024-06-24 13:17:29 +00:00
type : string
2024-06-20 12:46:14 +00:00
/statistics/:quizID/pipelines :
get :
description : получение статистики по векторам прохождения респондентами опроса с ветвлением и без, на выход отдается мапа с ключем последний вопрос и массивом точек "точек прохождения пользователем вопросов" г р у б о говоря массив с векторами как двигался респондент по возможным путям, в этом массиве question id и count прошедших сессий через него
parameters :
- name : quizID
in : path
required : true
description : id опроса
schema :
type : integer
requestBody :
2024-06-20 12:57:00 +00:00
$ref : '#/components/requestBodies/GetStatisticsReq'
2024-06-20 12:46:14 +00:00
responses :
'200' :
description : Успешное получение статистики
content :
application/json :
schema :
2024-06-20 12:57:00 +00:00
$ref : '#/components/schemas/PipeLineStatsResp'
2024-06-20 12:46:14 +00:00
'400' :
description : Bad Request
'500' :
description : Internal Server Error
2024-07-01 14:52:14 +00:00
/telegram/pool :
get :
description : возвращает все неудаленные аккаунты тг, активные, не активные и баны, тело пустое
responses :
'200' :
description : успех
content :
application/json :
schema :
type : array
items :
$ref : '#/components/schemas/TgAccount'
/telegram/create :
post :
description : метод для автторизации сервера в тг аккаунте
requestBody :
content :
application/json :
schema :
$ref : '#/components/schemas/AuthTgUserReq'
responses :
'200' :
description : возвращает подпись, которая является идентификатором текущей сессии авторизации нужно для метода отправки кода
content :
application/json :
schema :
type : object
properties :
signature :
type : string
example : b7gh83j2k4l0
'400' :
description : неверные данные запроса
'409' :
description : аккаунт уже существует и активен
'500' :
description : внутренняя ошибка сервера
/telegram/{id}:
delete :
description : метод мягкого удаления аккаунта по id primary key
parameters :
- in : path
name : id
required : true
description : id primary key
schema :
type : integer
format : int64
responses :
'200' :
description : успех
'400' :
description : неверные данные запроса
'500' :
description : внутренняя ошибка сервера
/telegram/setCode :
post :
description : метод для отправки кода авторизации, который пришел от телеграмма
requestBody :
content :
application/json :
schema :
type : object
required :
- code
- signature
properties :
code :
type : string
signature :
type : string
responses :
'200' :
description : возвращает id primary авторизованного аккаунта
content :
application/json :
schema :
type : object
properties :
id :
type : integer
format : int64
'204' :
description : state канал закрылся до того как перешел в состояние логина или отказа от логина, возможно стоит другой статус указывать или как то побороть эту беду
'400' :
description : неверные данные запроса
'403' :
description : что то пошло не так связано с тг
'500' :
2025-05-28 21:27:43 +00:00
description : внутренняя ошибка сервера
/quiz/{quizID}/auditory:
post :
description : Create quiz auditory
parameters :
- name : quizID
in : path
required : true
schema :
type : string
description : ID of the quiz
responses :
'200' :
description : Quiz auditory created successfully
content :
'application/json' :
schema :
type : object
properties :
id :
type : integer
format : int64
description : ID of created auditory
'400' :
description : Invalid quiz ID
content :
'application/json' :
schema :
type : string
default : invalid quiz id
2025-06-05 14:04:31 +00:00
'402' :
description : Payment required need gigachat privilege
content :
'application/json' :
schema :
type : string
default : payment required
2025-05-28 21:27:43 +00:00
'500' :
description : Internal server error
content :
'application/json' :
schema :
type : string
default : if you get any content string send it to developer
get :
description : Get quiz auditory
parameters :
- name : quizID
in : path
required : true
schema :
type : string
description : ID of the quiz
responses :
'200' :
description : Quiz auditory retrieved successfully
content :
'application/json' :
schema :
type : array
items :
type : object
properties :
id :
type : integer
format : int64
description : ID of auditory
quiz_id :
type : integer
format : int64
description : ID of the quiz
sex :
2025-06-06 14:13:59 +00:00
type : integer
description : Gender of the person 0 - female, 1 - male, 2 - not sex
2025-05-28 21:27:43 +00:00
age :
type : string
description : Age of the person
deleted :
type : boolean
description : Whether the auditory record is deleted
created_at :
type : integer
format : int64
description : Creation timestamp
'400' :
description : Invalid quiz ID
content :
'application/json' :
schema :
type : string
default : invalid quiz id
'404' :
description : Quiz auditory not found
content :
'application/json' :
schema :
type : string
default : quiz auditory not found
'500' :
description : Internal server error
content :
'application/json' :
schema :
type : string
default : if you get any content string send it to developer
delete :
description : Delete quiz auditory
parameters :
- name : quizID
in : path
required : true
schema :
type : string
description : ID of the quiz
responses :
'200' :
description : Quiz auditory deleted successfully
content :
'application/json' :
schema :
type : object
properties :
deleted :
type : boolean
description : True if auditory was deleted
'400' :
description : Invalid quiz ID
content :
'application/json' :
schema :
type : string
default : invalid quiz id
'404' :
description : Quiz auditory not found
content :
'application/json' :
schema :
type : string
default : quiz auditory not found
'500' :
description : Internal server error
content :
'application/json' :
schema :
type : string
default : if you get any content string send it to developer