Область ответственности сервиса - предоставление пользователю функционала корзины и кошелька.
version:1.0.0
tags:
- name:account
description:аккаунт
- name:currency
description:доступные валюты
- name:cart
description:корзина
- name:wallet
description:кошелёк
- name:history
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'
/accounts:
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'
/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'
/history:
get:
tags:
- history
summary:Получение лога событий связанных с аккаунтом