heruvym/openapi.yaml

462 lines
13 KiB
YAML
Raw Normal View History

openapi: 3.0.0
servers:
- url: http://localhost:8000/support
info:
description: ''
version: 1.0.0
title: Heruvym
paths:
/create:
post:
summary: Метод для создания тикета
security:
- bearer_in_cookie: []
responses:
'200':
description: Default response
content:
application/json:
schema:
type: object
properties:
Ticket:
type: string
example: c2fekjcobibtq7akknog
Sess:
type: string
example: fasdjklj2lz
'400':
$ref: "#/components/responses/BadRequest"
'401':
$ref: "#/components/responses/Unauthorized"
'500':
$ref: "#/components/responses/ErrorOccurred"
requestBody:
content:
application/json:
schema:
type: object
required:
- Title
- Message
properties:
Title:
type: string
example: test ticket title
Message:
type: string
example: test ticket message
/subscribe:
get:
summary: SSE метод для подписывания на изменения по всем тикетам доступным пользователю
security:
- bearer_in_query: []
responses:
'200':
description: Default response
headers:
Content-Type:
schema:
type: string
example: "text/event-stream"
enum:
- "text/event-stream"
Cache-Control:
schema:
type: string
example: "no-cache"
enum:
- "no-cache"
Connection:
schema:
type: string
example: "keep-alive"
enum:
- "keep-alive"
content:
application/json:
schema:
$ref: "#/components/schemas/Ticket"
'400':
$ref: "#/components/responses/BadRequest"
'401':
$ref: "#/components/responses/Unauthorized"
'424':
$ref: "#/components/responses/FailedDependency"
/ticket:
get:
summary: SSE метод для подписки на сообщения из одного тикета
security:
- bearer_in_query: []
responses:
'200':
description: Default response
headers:
Content-Type:
schema:
type: string
example: "text/event-stream"
enum:
- "text/event-stream"
Cache-Control:
schema:
type: string
example: "no-cache"
enum:
- "no-cache"
Connection:
schema:
type: string
example: "keep-alive"
enum:
- "keep-alive"
content:
application/json:
schema:
$ref: '#/components/schemas/Message'
'400':
$ref: "#/components/responses/BadRequest"
'401':
$ref: "#/components/responses/Unauthorized"
'424':
$ref: "#/components/responses/FailedDependency"
/send:
post:
summary: Метод для отправки сообщения в тикет
security:
- bearer_in_cookie: []
requestBody:
content:
application/json:
schema:
type: object
required:
- message
- TicketID
- lang
properties:
message:
type: string
example: "test ticket message"
TicketID:
type: string
example: "c2fekjcobibtq7akknog"
lang:
type: string
example: "ru"
files:
type: array
items:
type: string
example: "idoffile"
responses:
'200':
description: Default response
'400':
$ref: "#/components/responses/BadRequest"
'401':
$ref: "#/components/responses/Unauthorized"
'500':
$ref: "#/components/responses/ErrorOccurred"
/getTickets:
post:
summary: Метод для получения тикетов с пагинацией
security:
- bearer_in_cookie: []
requestBody:
content:
application/json:
schema:
type: object
properties:
amt:
type: integer
example: 10
description: Количество тикетов на странице
page:
type: integer
example: 1
description: Страница
srch:
type: string
example: "test"
description: Поисковый запрос
status:
type: string
example: "open"
description: Статус тикета
responses:
'200':
description: Default response
content:
application/json:
schema:
type: object
properties:
Data:
type: array
items:
$ref: "#/components/schemas/Ticket"
Count:
type: integer
example: 10
description: Количество найденных тикетов по поисковому запросу
'204':
description: No content
'400':
$ref: "#/components/responses/BadRequest"
'401':
$ref: "#/components/responses/Unauthorized"
'500':
$ref: "#/components/responses/ErrorOccurred"
/getMessages:
post:
summary: Метод для получения сообщений тикета с пагинацией
security:
- bearer_in_cookie: [ ]
requestBody:
content:
application/json:
schema:
type: object
properties:
amt:
type: integer
example: 10
page:
type: integer
example: 1
srch:
type: string
example: "test"
ticket:
type: string
example: "c2fekjcobibtq7akknog"
responses:
'200':
description: Default response
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/Message"
'204':
description: No content
'400':
$ref: "#/components/responses/BadRequest"
'401':
$ref: "#/components/responses/Unauthorized"
/pick:
post:
summary: Подхватывание сотрудником диалога
security:
- bearer_in_cookie: []
requestBody:
content:
application/json:
schema:
type: object
properties:
ticket:
type: string
example: "c2fekjcobibtq7akknog"
responses:
'200':
description: Default response
'400':
$ref: "#/components/responses/BadRequest"
'401':
$ref: "#/components/responses/Unauthorized"
/delegate:
post:
summary: Передача тикета другому сотруднику
security:
- bearer_in_cookie: []
requestBody:
content:
application/json:
schema:
type: object
properties:
ticket:
type: string
example: "c2fekjcobibtq7akknog"
answerer:
type: string
example: "c2fekjcobibtq7akknog"
responses:
'200':
description: Default response
'400':
$ref: "#/components/responses/BadRequest"
'401':
$ref: "#/components/responses/Unauthorized"
/vote:
post:
summary: Метод для оценки полезности ответа
security:
- bearer_in_cookie: []
requestBody:
content:
application/json:
schema:
type: object
properties:
ticket:
type: string
example: "c2fekjcobibtq7akknog"
rate:
type: string
example: "5"
responses:
'200':
description: Default response
'400':
$ref: "#/components/responses/BadRequest"
'401':
$ref: "#/components/responses/Unauthorized"
/close:
post:
summary: Метод для закрытия тикета
security:
- bearer_in_cookie: [ ]
requestBody:
content:
application/json:
schema:
type: object
properties:
ticket:
type: string
example: "c2fekjcobibtq7akknog"
responses:
'200':
description: Default response
content:
application/json:
schema:
type: object
properties:
Ticket:
type: string
example: c2fekjcobibtq7akknog
'400':
$ref: "#/components/responses/BadRequest"
'401':
$ref: "#/components/responses/Unauthorized"
components:
securitySchemes:
bearer_in_cookie:
type: apiKey
name: Authorization
in: cookie
description: "Cookie Bearer JWT авторизация. Пример: 'Bearer gvrektljh23nklje'"
bearer_in_query:
type: apiKey
name: Authorization
in: query
description: "Query Bearer JWT авторизация. Пример: 'gvrektljh23nklje'"
responses:
ErrorOccurred:
description: Error occurred
content:
text/plain:
schema:
type: string
example: "SomeErrorOccurred"
BadRequest:
description: Bad request
content:
text/plain:
schema:
type: string
example: "No title"
MethodNotAllowed:
description: Method not allowed
content:
text/plain:
schema:
type: string
example: "No session"
Unauthorized:
description: Unauthorized
FailedDependency:
description: "Failed dependency"
content:
text/plain:
schema:
type: string
example: "flushing is not allowed"
schemas:
Ticket:
type: object
properties:
ID:
type: string
example: "f34512sdaf234"
UserID:
type: string
example: "fw4ej5oi12mlfasd"
SessionID:
type: string
example: "fajsdlkgj34589w0"
AnswererID:
type: string
example: "ajrtopjnmklzweptik2"
State:
type: string
example: "open"
enum:
- "open"
- "closed"
- "answer"
- "wait"
TopMessage:
$ref: "#/components/schemas/Message"
Title:
type: string
example: "Test title"
CreatedAt:
type: string
format: date-time
example: "2017-07-21T17:32:28Z"
UpdatedAt:
type: string
format: date-time
example: "2017-07-21T17:32:28Z"
Rate:
type: integer
example: 1
Message:
type: object
properties:
ID:
type: string
example: "ZXC43n5klnzxlkcnfv34"
TicketID:
type: string
example: "jSDwerkljm23mios9"
UserID:
type: string
example: "flZmvlertjk6o453mlyhrty"
SessionID:
type: string
example: "ASpZp3245dllASgmkldrjJI"
Files:
type: array
items:
type: string
example: "iddoffile"
Shown:
type: object
additionalProperties:
type: integer
CreatedAt:
type: string
format: date-time
example: "2017-07-21T17:32:28Z"
security:
- bearer_in_cookie: []
- bearer_in_query: []