generated from PenaSide/GolangTemplate
1092 lines
34 KiB
YAML
1092 lines
34 KiB
YAML
openapi: 3.0.1
|
||
info:
|
||
title: Customer - сервис для управления клиентами
|
||
description: |-
|
||
Область ответственности сервиса - предоставление пользователю функционала корзины и кошелька.
|
||
version: 1.0.0
|
||
|
||
tags:
|
||
- name: account
|
||
description: аккаунт
|
||
- name: currency
|
||
description: доступные валюты
|
||
- name: cart
|
||
description: корзина
|
||
- name: wallet
|
||
description: кошелёк
|
||
- name: history
|
||
description: история
|
||
- name: statistic
|
||
description: статистика
|
||
|
||
paths:
|
||
/account:
|
||
get:
|
||
tags:
|
||
- account
|
||
summary: Получение текущего аккаунта юзера
|
||
description: Используется при заходе юзера в систему. Айдишник юзера получает из токена, который передаётся в заголовке authorization
|
||
operationId: getAccount
|
||
security:
|
||
- Bearer: []
|
||
responses:
|
||
"200":
|
||
description: успешное получение
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Account"
|
||
"401":
|
||
description: Неавторизован
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Error"
|
||
"404":
|
||
description: Такого пользователя нет
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Error"
|
||
post:
|
||
tags:
|
||
- account
|
||
summary: Создать новый аккаунт
|
||
description: Создаёт новый аккаунт для юзера, если такого ещё не было
|
||
operationId: addAccount
|
||
security:
|
||
- Bearer: []
|
||
responses:
|
||
"200":
|
||
description: успешное создание аккаунта
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Account"
|
||
"401":
|
||
description: Неавторизован
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Error"
|
||
patch:
|
||
tags:
|
||
- account
|
||
summary: Отредактировать аккаунт
|
||
description: Изменяет имя и название организации пользователя
|
||
operationId: changeAccount
|
||
security:
|
||
- Bearer: []
|
||
requestBody:
|
||
description: Модель имени
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Name"
|
||
responses:
|
||
"200":
|
||
description: успешное создание аккаунта
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Account"
|
||
"401":
|
||
description: Неавторизован
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Error"
|
||
delete:
|
||
tags:
|
||
- account
|
||
summary: удалить собственный аккаунт
|
||
description: помечает аккаунт удалённым
|
||
operationId: deleteAccount
|
||
security:
|
||
- Bearer: []
|
||
responses:
|
||
"200":
|
||
description: успешное удаление аккаунта
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Account"
|
||
"401":
|
||
description: Неавторизован
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Error"
|
||
|
||
/getList:
|
||
get:
|
||
tags:
|
||
- account
|
||
summary: списко аккаунтов с пагинацией
|
||
description: получает список аккаунтов на указанной странице + общее количество аккаунтов
|
||
operationId: paginationAccounts
|
||
parameters:
|
||
- name: page
|
||
in: query
|
||
description: Номер страницы, начиная с 1
|
||
required: false
|
||
explode: false
|
||
schema:
|
||
type: integer
|
||
default: 1
|
||
- name: limit
|
||
in: query
|
||
description: размер страницы
|
||
required: false
|
||
explode: false
|
||
schema:
|
||
type: integer
|
||
default: 100
|
||
responses:
|
||
"200":
|
||
description: успешное получение страницы аккаунтов
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
totalPages:
|
||
type: integer
|
||
example: 11
|
||
accounts:
|
||
type: array
|
||
items:
|
||
$ref: "#/components/schemas/Account"
|
||
|
||
/account/{userId}:
|
||
get:
|
||
tags:
|
||
- account
|
||
summary: Получить аккаунт по ID пользователя системы единой авторизации
|
||
description: Метод необходимый в основном только менеджерам, для получения данных о клиенте
|
||
security:
|
||
- Bearer: []
|
||
operationId: getDirectAccount
|
||
parameters:
|
||
- name: userId
|
||
in: path
|
||
description: ID аккаунта
|
||
required: true
|
||
schema:
|
||
type: string
|
||
responses:
|
||
"200":
|
||
description: Успешное получение аккаунта
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Account"
|
||
"401":
|
||
description: Неавторизован
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Error"
|
||
"404":
|
||
description: Нет такого пользователя
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Error"
|
||
patch:
|
||
tags:
|
||
- account
|
||
summary: Выставление статуса верификации
|
||
description: Используется сервисом верификации для выставления статуса верификации, является ли юзер НКО, Юр Лицом или Физ Лицом
|
||
operationId: setAccountVerificationStatus
|
||
security:
|
||
- Bearer: []
|
||
parameters:
|
||
- name: userId
|
||
in: path
|
||
description: ID аккаунта
|
||
required: true
|
||
schema:
|
||
type: string
|
||
requestBody:
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
status:
|
||
$ref: "#/components/schemas/AccountStatus"
|
||
responses:
|
||
"200":
|
||
description: Успешное выставление статуса
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Account"
|
||
"404":
|
||
description: Нет такого пользователя
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Error"
|
||
delete:
|
||
tags:
|
||
- account
|
||
summary: Удалить аккаунт по айди
|
||
description: Метод необходимый в основном только менеджерам, для удаления клиента
|
||
operationId: deleteDirectAccount
|
||
security:
|
||
- Bearer: []
|
||
parameters:
|
||
- name: userId
|
||
in: path
|
||
description: ID аккаунта
|
||
required: true
|
||
schema:
|
||
type: string
|
||
responses:
|
||
"200":
|
||
description: Успешное удаление аккаунта
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Account"
|
||
"401":
|
||
description: Неавторизован
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Error"
|
||
"404":
|
||
description: Нет такого пользователя
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Error"
|
||
|
||
/currencies:
|
||
get:
|
||
tags:
|
||
- currency
|
||
summary: получить список одобренных валют
|
||
operationId: getCurrencies
|
||
responses:
|
||
"200":
|
||
description: успешное получение списка валют
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: array
|
||
example:
|
||
- "RUB"
|
||
- "USD"
|
||
- "CAD"
|
||
items:
|
||
type: string
|
||
put:
|
||
tags:
|
||
- currency
|
||
summary: обновляет список одобренных валют
|
||
operationId: updateCurrencies
|
||
security:
|
||
- Bearer: []
|
||
requestBody:
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: array
|
||
example:
|
||
- "RUB"
|
||
- "USD"
|
||
- "CAD"
|
||
items:
|
||
type: string
|
||
responses:
|
||
"200":
|
||
description: успешное обновление списка валют
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: array
|
||
example:
|
||
- "RUB"
|
||
- "USD"
|
||
- "CAD"
|
||
items:
|
||
type: string
|
||
"401":
|
||
description: Uanuthorized
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Error"
|
||
|
||
/cart:
|
||
patch:
|
||
tags:
|
||
- cart
|
||
summary: Добавляем в корзину тариф
|
||
description: Необходимо проверить, что такой тариф существует
|
||
operationId: add2cart
|
||
security:
|
||
- Bearer: []
|
||
parameters:
|
||
- name: id
|
||
in: query
|
||
required: true
|
||
schema:
|
||
type: string
|
||
example: "807f1f77bcf81cd799439011"
|
||
responses:
|
||
"200":
|
||
description: Добавлено в корзину
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Account"
|
||
"401":
|
||
description: Неавторизован
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Error"
|
||
"404":
|
||
description: Не найден такой тариф
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Error"
|
||
delete:
|
||
tags:
|
||
- cart
|
||
summary: Удаляем из корзины тариф
|
||
operationId: removeFromCart
|
||
security:
|
||
- Bearer: []
|
||
parameters:
|
||
- name: id
|
||
in: query
|
||
required: true
|
||
schema:
|
||
type: string
|
||
example: "807f1f77bcf81cd799439011"
|
||
responses:
|
||
"200":
|
||
description: Удалено из корзины
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Account"
|
||
"401":
|
||
description: Неавторизован
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Error"
|
||
"404":
|
||
description: Не найден такой тариф
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Error"
|
||
|
||
/cart/pay:
|
||
post:
|
||
tags:
|
||
- cart
|
||
summary: оплатить козину
|
||
operationId: payCart
|
||
security:
|
||
- Bearer: []
|
||
description: Запрос на проведение оплаты корзины
|
||
responses:
|
||
"200":
|
||
description: успешная оплата корзины
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Account"
|
||
"401":
|
||
description: Неавторизован
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Error"
|
||
"406":
|
||
description: корзина пустая
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Error"
|
||
|
||
/wallet:
|
||
patch:
|
||
tags:
|
||
- wallet
|
||
summary: Изменить валюту кошелька
|
||
operationId: changeCurrency
|
||
description: >-
|
||
При запросе необходимо:
|
||
|
||
- Отвалидировать, что такая валюта одобрена
|
||
|
||
- Получить данные из сервиса cbrf (выдам задачу на него чуть позднее)
|
||
|
||
- Перевести валюту кошелька в новую валюту. Кошелёк нарочно целочисленный, чтобы не было претензий к точности с плавающей точкой, поэтому, например долларовый счёт считается в центах
|
||
|
||
security:
|
||
- Bearer: []
|
||
requestBody:
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
required: [currency]
|
||
properties:
|
||
currency:
|
||
type: string
|
||
example: "USD"
|
||
responses:
|
||
"200":
|
||
description: Успешная смена валюты кошелька
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Account"
|
||
"401":
|
||
description: Неавторизован
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Error"
|
||
"400":
|
||
description: Такая валюта не одобрена
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Error"
|
||
"404":
|
||
description: Пользователь не найден
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Error"
|
||
post:
|
||
tags:
|
||
- wallet
|
||
summary: Запрос на получение ссылки на оплату
|
||
operationId: requestMoney
|
||
security:
|
||
- Bearer: []
|
||
description: >-
|
||
- Формируем запрос к сервису оплаты, с необходимыми постбэками
|
||
|
||
- Получаем ответ от сервиса оплаты с ссылкой на оплату, которую надо передать пользователю
|
||
requestBody:
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
required: [type, currency, amount]
|
||
properties:
|
||
type:
|
||
$ref: "#/components/schemas/PaymentType"
|
||
currency:
|
||
type: string
|
||
description: "ISO-4217 формат"
|
||
example: "RUB"
|
||
amount:
|
||
type: integer
|
||
example: 15020
|
||
bankCard:
|
||
$ref: "#/components/schemas/BankCard"
|
||
phoneNumber:
|
||
type: string
|
||
example: "79000000000"
|
||
login:
|
||
type: string
|
||
example: "login_test"
|
||
returnUrl:
|
||
type: string
|
||
example: "https://site.ru/cart"
|
||
responses:
|
||
"200":
|
||
description: Успешный запрос денег
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
link:
|
||
type: string
|
||
example: "https://google.ru"
|
||
"500":
|
||
description: Сервис оплаты вернул ошибку
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Error"
|
||
|
||
/wallet/rspay:
|
||
post:
|
||
summary: Обработка запроса RSPay
|
||
security:
|
||
- Bearer: [ ]
|
||
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
money:
|
||
type: number
|
||
format: float
|
||
example: 1000.0
|
||
responses:
|
||
'200':
|
||
description: Успех
|
||
'500':
|
||
description: Внутренняя ошибка сервера
|
||
'403':
|
||
description: Запрещено
|
||
content:
|
||
application/json:
|
||
example:
|
||
message: not allowed for non organizations
|
||
|
||
/history:
|
||
get:
|
||
tags:
|
||
- history
|
||
summary: Получение лога событий связанных с аккаунтом
|
||
operationId: getHistory
|
||
security:
|
||
- Bearer: [ ]
|
||
parameters:
|
||
- name: page
|
||
in: query
|
||
description: Номер страницы, начиная с 1
|
||
required: false
|
||
explode: false
|
||
schema:
|
||
type: integer
|
||
default: 1
|
||
- name: limit
|
||
in: query
|
||
description: Размер страницы
|
||
required: false
|
||
explode: false
|
||
schema:
|
||
type: integer
|
||
default: 100
|
||
- name: type
|
||
in: query
|
||
description: Тип события
|
||
required: false
|
||
explode: false
|
||
schema:
|
||
type: string
|
||
- name: accountID
|
||
in: query
|
||
description: Идентификатор аккаунта. Если не указан, будет использоваться идентификатор из токена.
|
||
required: false
|
||
explode: false
|
||
schema:
|
||
type: string
|
||
responses:
|
||
"200":
|
||
description: Успешное получение событий
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
totalPages:
|
||
type: integer
|
||
example: 11
|
||
records:
|
||
type: array
|
||
items:
|
||
$ref: "#/components/schemas/History"
|
||
"401":
|
||
description: Неавторизован
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Error"
|
||
|
||
/recent:
|
||
get:
|
||
tags:
|
||
- history
|
||
summary: Получение недавних тарифов
|
||
operationId: getRecentTariffs
|
||
description: Возвращает список уникальных тарифов из истории. Айди аккаунта получается из заголовка.
|
||
security:
|
||
- Bearer: []
|
||
responses:
|
||
'200':
|
||
description: Успешный запрос
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: array
|
||
items:
|
||
$ref: "#/components/schemas/TariffID"
|
||
'400':
|
||
description: Неверный запрос
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Error"
|
||
'404':
|
||
description: Тарифы не найдены
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Error"
|
||
'500':
|
||
description: Внутренняя ошибка сервера
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Error"
|
||
requestBody:
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
required: [id]
|
||
properties:
|
||
id:
|
||
type: string
|
||
example: "807f1f77bcf81cd799439011"
|
||
/sendReport:
|
||
post:
|
||
tags:
|
||
- history
|
||
summary: отправить акт проделанных работ на почту
|
||
operationId: sendReport
|
||
security:
|
||
- Bearer: []
|
||
description: Запрос на отправку акта проделанных работ
|
||
requestBody:
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
required: [id]
|
||
properties:
|
||
id:
|
||
type: string
|
||
example: "807f1f77bcf81cd799439011"
|
||
responses:
|
||
"200":
|
||
description: успешная отправка
|
||
"401":
|
||
description: Неавторизован
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Error"
|
||
|
||
/history/ltv:
|
||
post:
|
||
tags:
|
||
- history
|
||
summary: Расчет среднего времени жизни платящего клиента (LTV)
|
||
operationId: calculateLTV
|
||
security:
|
||
- Bearer: [ ]
|
||
requestBody:
|
||
description: Период для расчета LTV
|
||
required: true
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
from:
|
||
type: integer
|
||
format: int64
|
||
description: Начальная дата в формате Unix timestamp. Если 0, устанавливает начало истории.
|
||
to:
|
||
type: integer
|
||
format: int64
|
||
description: Конечная дата в формате Unix timestamp. Если 0, устанавливает текущее время.
|
||
required:
|
||
- from
|
||
- to
|
||
responses:
|
||
'200':
|
||
description: Успешный расчет LTV
|
||
content:
|
||
application/json:
|
||
schema:
|
||
type: object
|
||
properties:
|
||
ltv:
|
||
type: integer
|
||
format: int64
|
||
description: Среднее количество дней между первым и последним платежом
|
||
'400':
|
||
description: Неверный запрос, если from больше, чем to
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/Error'
|
||
'401':
|
||
description: Неавторизован
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Error"
|
||
'500':
|
||
description: Внутренняя ошибка сервера
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Error"
|
||
|
||
/quizlogo/stat:
|
||
post:
|
||
tags:
|
||
- statistic
|
||
summary: статистика пользователей, перешедших по логотипу в опросах
|
||
operationId: quizLogoStat
|
||
security:
|
||
- Bearer: [ ]
|
||
requestBody:
|
||
content:
|
||
'application/json':
|
||
schema:
|
||
type: object
|
||
properties:
|
||
to:
|
||
description: таймштамп времени, до которого выбирать статистику. если 0 или не передано - этого ограничения нет. верхняя граница времени
|
||
type: integer
|
||
from:
|
||
description: таймштамп времени, после которого выбирать статистику. если 0 или не передано - этого ограничения нет. нижняя граница времени
|
||
type: integer
|
||
page:
|
||
description: страница выборки
|
||
type: integer
|
||
limit:
|
||
description: лимит выборки
|
||
type: integer
|
||
responses:
|
||
'200':
|
||
description: Успешный ответ с данными статистики
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/QuizLogoStat'
|
||
'500':
|
||
description: Внутренняя ошибка сервера
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Error"
|
||
|
||
/promocode/ltv:
|
||
post:
|
||
tags:
|
||
- statistic
|
||
summary: статистика по промокодам в разрезе регистраций и оплат
|
||
operationId: promocodeLTV
|
||
security:
|
||
- Bearer: [ ]
|
||
requestBody:
|
||
required: true
|
||
content:
|
||
'application/json':
|
||
schema:
|
||
type: object
|
||
properties:
|
||
to:
|
||
description: таймштамп времени, до которого выбирать статистику
|
||
type: integer
|
||
from:
|
||
description: таймштамп времени, после которого выбирать статистику
|
||
type: integer
|
||
required:
|
||
- from
|
||
- to
|
||
responses:
|
||
'200':
|
||
description: Успешный ответ с данными статистики
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: '#/components/schemas/PromoLtvStat'
|
||
'500':
|
||
description: Внутренняя ошибка сервера
|
||
content:
|
||
application/json:
|
||
schema:
|
||
$ref: "#/components/schemas/Error"
|
||
/account/pipe:
|
||
get:
|
||
tags:
|
||
- account
|
||
summary: Получение изменений аккаунта через SSE
|
||
operationId: accountPipe
|
||
parameters:
|
||
- name: Authorization
|
||
in: query
|
||
description: токен пользователя
|
||
required: true
|
||
responses:
|
||
'200':
|
||
description: Успешный ответ
|
||
content:
|
||
text/event-stream:
|
||
schema:
|
||
$ref: '#/components/schemas/Account'
|
||
|
||
|
||
components:
|
||
schemas:
|
||
Account:
|
||
type: object
|
||
required:
|
||
[_id, userId, cart, wallet, name, status, deleted, createdAt, updatedAt]
|
||
properties:
|
||
_id:
|
||
type: string
|
||
example: "807f1f77bcf81cd799439011"
|
||
userId:
|
||
type: string
|
||
example: "807f1f77bcf81cd799439011"
|
||
name:
|
||
$ref: "#/components/schemas/Name"
|
||
cart:
|
||
type: array
|
||
items:
|
||
type: string
|
||
example:
|
||
- "807f1f77bcf81cd799439011"
|
||
- "807f1f77bcf81cd799439012"
|
||
wallet:
|
||
$ref: "#/components/schemas/Wallet"
|
||
status:
|
||
$ref: "#/components/schemas/AccountStatus"
|
||
isDeleted:
|
||
type: boolean
|
||
example: false
|
||
createdAt:
|
||
type: string
|
||
format: "date-time"
|
||
updatedAt:
|
||
type: string
|
||
format: "date-time"
|
||
deletedAt:
|
||
type: string
|
||
format: "date-time"
|
||
|
||
Name:
|
||
type: object
|
||
properties:
|
||
firstname:
|
||
type: string
|
||
example: Иван
|
||
secondname:
|
||
type: string
|
||
example: Иванов
|
||
middlename:
|
||
type: string
|
||
example: Иванович
|
||
orgname:
|
||
type: string
|
||
example: ООО \"Моя Оборона\"
|
||
|
||
BankCard:
|
||
type: object
|
||
required: [number, expiryYear, expiryMonth]
|
||
properties:
|
||
number:
|
||
type: string
|
||
example: "RUB"
|
||
description: Номер карты
|
||
expiryYear:
|
||
type: string
|
||
example: "2021"
|
||
description: Год истечения срока карты (YYYY)
|
||
expiryMonth:
|
||
type: string
|
||
example: "05"
|
||
description: Месяц истечения срока карты (MM)
|
||
csc:
|
||
type: string
|
||
example: "05"
|
||
description: Код CVC2 или CVV2, 3 или 4 символа, печатается на обратной стороне карты
|
||
cardholder:
|
||
type: string
|
||
description: Имя владельца карты
|
||
example: "IVAN IVANOV"
|
||
|
||
Wallet:
|
||
type: object
|
||
required: [currency, cash, money, purchasesAmount, spent]
|
||
properties:
|
||
currency:
|
||
description: Текущий курс валюты
|
||
type: string
|
||
example: "RUB"
|
||
cash:
|
||
description: Сумма money переведённая на текущий курс
|
||
type: integer
|
||
format: int64
|
||
example: 10701
|
||
purchasesAmount:
|
||
type: integer
|
||
format: int64
|
||
description: Общая сумма денег, которые внёс пользователь
|
||
spent:
|
||
type: integer
|
||
format: int64
|
||
description: Общая сумма потраченных денег за всё время существования аккаунта
|
||
money:
|
||
type: integer
|
||
format: int64
|
||
description: >-
|
||
Деньги на счету в копейках. Чтобы при перессчётах не
|
||
возникало денег изниоткуда. фиксируемся к одной валюте,
|
||
она будет внутренней, никому её не покажем
|
||
example: 10701
|
||
|
||
History:
|
||
type: object
|
||
required:
|
||
[id, userId, type, deleted, createdAt, updatedAt, comment, subject]
|
||
properties:
|
||
id:
|
||
type: string
|
||
example: "807f1f77bcf81cd799439011"
|
||
userId:
|
||
type: string
|
||
example: "807f1f77bcf81cd799439011"
|
||
type:
|
||
type: string
|
||
example: "customer.tariffEnded"
|
||
isDeleted:
|
||
type: boolean
|
||
example: false
|
||
createdAt:
|
||
type: string
|
||
format: "date-time"
|
||
updatedAt:
|
||
type: string
|
||
format: "date-time"
|
||
deletedAt:
|
||
type: string
|
||
format: "date-time"
|
||
comment:
|
||
type: string
|
||
example: "я это сделал потому что 42"
|
||
rawDetails:
|
||
type: string
|
||
description: >-
|
||
Я пока не могу предположить, какие будут фильтры по
|
||
истории, поэтому предлагаю в это
|
||
поле просто класть строку с json.
|
||
Ибо для каждого типа записи она своя.
|
||
example: '{"tariffs":["807f1f77bcf81cd799439011","807f1f77bcf81cd799439011"]}'
|
||
|
||
PaymentType:
|
||
type: string
|
||
enum:
|
||
[
|
||
"bankCard",
|
||
"tinkoffBank",
|
||
"qiwi",
|
||
"sberbank",
|
||
"yoomoney",
|
||
"mobile",
|
||
"installments",
|
||
"cash",
|
||
"sbp",
|
||
"b2bSberbank",
|
||
"alfabank",
|
||
]
|
||
|
||
TariffID:
|
||
type: object
|
||
properties:
|
||
ID:
|
||
type: string
|
||
example: "807f1f77bcf81cd799439011"
|
||
|
||
|
||
AccountStatus:
|
||
type: string
|
||
enum: ["no", "nko", "org"]
|
||
|
||
Error:
|
||
type: object
|
||
required: [code, message]
|
||
properties:
|
||
statusCode:
|
||
type: integer
|
||
format: int64
|
||
example: 404
|
||
message:
|
||
type: string
|
||
example: user not found
|
||
QuizLogoStat:
|
||
type: array
|
||
items:
|
||
# count:
|
||
# type: integer
|
||
# description: Общее количество
|
||
type: object
|
||
properties:
|
||
id:
|
||
type: string
|
||
description: user id
|
||
money:
|
||
type: integer
|
||
description: Количество денег
|
||
regs:
|
||
type: integer
|
||
description: Количество регистраций
|
||
quizes:
|
||
type: array
|
||
items:
|
||
type: object
|
||
properties:
|
||
quiz:
|
||
type: string
|
||
description: qid quiz
|
||
regs:
|
||
type: integer
|
||
description: Количество регистраций
|
||
money:
|
||
type: integer
|
||
description: Количество денег
|
||
PromoLtvStat:
|
||
type: object
|
||
properties:
|
||
stats:
|
||
type: object
|
||
description: мапа ключ id промо, знчение количество регистраций и количество денег
|
||
additionalProperties:
|
||
type: object
|
||
properties:
|
||
regs:
|
||
type: integer
|
||
description: количество регистраций
|
||
money:
|
||
type: integer
|
||
description: количество денег
|
||
|
||
securitySchemes:
|
||
Bearer: # arbitrary name for the security scheme
|
||
type: http
|
||
scheme: bearer
|
||
bearerFormat: JWT
|
||
description: >-
|
||
Enter the token with the `Bearer: ` prefix, e.g. "Bearer abcde12345".
|