generated from PenaSide/GolangTemplate
738 lines
20 KiB
YAML
738 lines
20 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: история
|
|||
|
paths:
|
|||
|
/account:
|
|||
|
get:
|
|||
|
tags:
|
|||
|
- account
|
|||
|
summary: Получение текущего аккаунта юзера
|
|||
|
description: используется при заходе юзера в систему. Айдишник юзера получает из токена, который передаётся в заголовке authorization
|
|||
|
operationId: getAccount
|
|||
|
responses:
|
|||
|
'200':
|
|||
|
description: успешное получение
|
|||
|
content:
|
|||
|
application/json:
|
|||
|
schema:
|
|||
|
$ref: '#/components/schemas/Account'
|
|||
|
'401':
|
|||
|
description: Неавторизован
|
|||
|
'404':
|
|||
|
description: Такого пользователя нет
|
|||
|
post:
|
|||
|
tags:
|
|||
|
- account
|
|||
|
summary: создать новый аккаунт
|
|||
|
description: создаёт новый аккаунт для юзера, если такого ещё не было
|
|||
|
operationId: addAccount
|
|||
|
responses:
|
|||
|
'201':
|
|||
|
description: успешное созание аккаунта
|
|||
|
content:
|
|||
|
application/json:
|
|||
|
schema:
|
|||
|
$ref: '#/components/schemas/Account'
|
|||
|
'401':
|
|||
|
description: Неавторизован
|
|||
|
delete:
|
|||
|
tags:
|
|||
|
- account
|
|||
|
summary: удалить собственный аккаунт
|
|||
|
description: помечает аккаунт удалённым
|
|||
|
operationId: deleteAccount
|
|||
|
responses:
|
|||
|
'200':
|
|||
|
description: успешное удаление аккаунта
|
|||
|
'401':
|
|||
|
description: Неавторизован
|
|||
|
/accounts:
|
|||
|
get:
|
|||
|
tags:
|
|||
|
- account
|
|||
|
summary: списко аккаунтов с пагинацией
|
|||
|
description: получает список аккаунтов на указанной странице + общее количество аккаунтов
|
|||
|
operationId: paginationAccounts
|
|||
|
parameters:
|
|||
|
- name: p
|
|||
|
in: query
|
|||
|
description: Номер страницы, начиная с 0
|
|||
|
required: false
|
|||
|
explode: false
|
|||
|
schema:
|
|||
|
type: integer
|
|||
|
default: 0
|
|||
|
- name: s
|
|||
|
in: query
|
|||
|
description: размер страницы
|
|||
|
required: false
|
|||
|
explode: false
|
|||
|
schema:
|
|||
|
type: integer
|
|||
|
default: 10
|
|||
|
responses:
|
|||
|
'200':
|
|||
|
description: успешное получение страницы аккаунтов
|
|||
|
content:
|
|||
|
application/json:
|
|||
|
schema:
|
|||
|
type: object
|
|||
|
properties:
|
|||
|
count:
|
|||
|
type: integer
|
|||
|
example: 11
|
|||
|
items:
|
|||
|
type: array
|
|||
|
items:
|
|||
|
$ref: "#/components/schemas/Account"
|
|||
|
'401':
|
|||
|
description: Неавторизован
|
|||
|
/account/{accountId}:
|
|||
|
get:
|
|||
|
tags:
|
|||
|
- account
|
|||
|
summary: получить аккаунт по айди
|
|||
|
description: метод необходимый в основном только менеджерам, для получения данных о клиенте
|
|||
|
operationId: getDirectAccount
|
|||
|
parameters:
|
|||
|
- name: accountId
|
|||
|
in: path
|
|||
|
description: айдишник аккаунта
|
|||
|
required: true
|
|||
|
responses:
|
|||
|
'200':
|
|||
|
description: успешное получение аккаунта
|
|||
|
content:
|
|||
|
application/json:
|
|||
|
schema:
|
|||
|
$ref: '#/components/schemas/Account'
|
|||
|
'401':
|
|||
|
description: Неавторизован
|
|||
|
'404':
|
|||
|
description: Нет такого пользователя
|
|||
|
delete:
|
|||
|
tags:
|
|||
|
- account
|
|||
|
summary: удалить аккаунт по айди
|
|||
|
description: метод необходимый в основном только менеджерам, для удаления клиента
|
|||
|
operationId: deleteDirectAccount
|
|||
|
parameters:
|
|||
|
- name: accountId
|
|||
|
in: path
|
|||
|
description: айдишник аккаунта
|
|||
|
required: true
|
|||
|
responses:
|
|||
|
'200':
|
|||
|
description: успешное удаление аккаунта
|
|||
|
'401':
|
|||
|
description: Неавторизован
|
|||
|
'404':
|
|||
|
description: Нет такого пользователя
|
|||
|
/currencies:
|
|||
|
get:
|
|||
|
tags:
|
|||
|
- currency
|
|||
|
summary: получить список одобренных валют
|
|||
|
operationId: getCurrencies
|
|||
|
responses:
|
|||
|
'200':
|
|||
|
description: успешное получение списка валют
|
|||
|
content:
|
|||
|
application/json:
|
|||
|
schema:
|
|||
|
type: array
|
|||
|
example:
|
|||
|
- "RUB"
|
|||
|
- "USD"
|
|||
|
- "CAD"
|
|||
|
items:
|
|||
|
type: string
|
|||
|
patch:
|
|||
|
tags:
|
|||
|
- currency
|
|||
|
summary: обновляет список одобренных валют
|
|||
|
operationId: updateCurrencies
|
|||
|
requestBody:
|
|||
|
content:
|
|||
|
application/json:
|
|||
|
schema:
|
|||
|
type: array
|
|||
|
example:
|
|||
|
- "RUB"
|
|||
|
- "USD"
|
|||
|
- "CAD"
|
|||
|
items:
|
|||
|
type: string
|
|||
|
responses:
|
|||
|
'401':
|
|||
|
description: Uanuthorized
|
|||
|
/cart:
|
|||
|
put:
|
|||
|
tags:
|
|||
|
- cart
|
|||
|
summary: добавляем в корзину тариф
|
|||
|
description: 'необходимо проверить, что такой тариф существует'
|
|||
|
operationId: add2cart
|
|||
|
requestBody:
|
|||
|
content:
|
|||
|
application/json:
|
|||
|
schema:
|
|||
|
type: object
|
|||
|
properties:
|
|||
|
id:
|
|||
|
type: string
|
|||
|
example: "807f1f77bcf81cd799439011"
|
|||
|
responses:
|
|||
|
'200':
|
|||
|
description: добавлено в корзину
|
|||
|
'401':
|
|||
|
description: неавторизован
|
|||
|
'404':
|
|||
|
description: не найден такой тариф
|
|||
|
delete:
|
|||
|
tags:
|
|||
|
- cart
|
|||
|
summary: удаляем из корзины тариф
|
|||
|
operationId: removeFromCart
|
|||
|
parameters:
|
|||
|
- name: id
|
|||
|
in: query
|
|||
|
required: true
|
|||
|
schema:
|
|||
|
type: string
|
|||
|
example: "807f1f77bcf81cd799439011"
|
|||
|
responses:
|
|||
|
'200':
|
|||
|
description: удалено из корзины
|
|||
|
'401':
|
|||
|
description: неавторизован
|
|||
|
'404':
|
|||
|
description: не найден такой тариф
|
|||
|
/store/inventory:
|
|||
|
get:
|
|||
|
tags:
|
|||
|
- store
|
|||
|
summary: Returns pet inventories by status
|
|||
|
description: Returns a map of status codes to quantities
|
|||
|
operationId: getInventory
|
|||
|
responses:
|
|||
|
'200':
|
|||
|
description: successful operation
|
|||
|
content:
|
|||
|
application/json:
|
|||
|
schema:
|
|||
|
type: object
|
|||
|
additionalProperties:
|
|||
|
type: integer
|
|||
|
format: int32
|
|||
|
security:
|
|||
|
- api_key: []
|
|||
|
/store/order:
|
|||
|
post:
|
|||
|
tags:
|
|||
|
- store
|
|||
|
summary: Place an order for a pet
|
|||
|
description: Place a new order in the store
|
|||
|
operationId: placeOrder
|
|||
|
requestBody:
|
|||
|
content:
|
|||
|
application/json:
|
|||
|
schema:
|
|||
|
$ref: '#/components/schemas/Order'
|
|||
|
application/xml:
|
|||
|
schema:
|
|||
|
$ref: '#/components/schemas/Order'
|
|||
|
application/x-www-form-urlencoded:
|
|||
|
schema:
|
|||
|
$ref: '#/components/schemas/Order'
|
|||
|
responses:
|
|||
|
'200':
|
|||
|
description: successful operation
|
|||
|
content:
|
|||
|
application/json:
|
|||
|
schema:
|
|||
|
$ref: '#/components/schemas/Order'
|
|||
|
'405':
|
|||
|
description: Invalid input
|
|||
|
/store/order/{orderId}:
|
|||
|
get:
|
|||
|
tags:
|
|||
|
- store
|
|||
|
summary: Find purchase order by ID
|
|||
|
description: For valid response try integer IDs with value <= 5 or > 10. Other values will generate exceptions.
|
|||
|
operationId: getOrderById
|
|||
|
parameters:
|
|||
|
- name: orderId
|
|||
|
in: path
|
|||
|
description: ID of order that needs to be fetched
|
|||
|
required: true
|
|||
|
schema:
|
|||
|
type: integer
|
|||
|
format: int64
|
|||
|
responses:
|
|||
|
'200':
|
|||
|
description: successful operation
|
|||
|
content:
|
|||
|
application/json:
|
|||
|
schema:
|
|||
|
$ref: '#/components/schemas/Order'
|
|||
|
application/xml:
|
|||
|
schema:
|
|||
|
$ref: '#/components/schemas/Order'
|
|||
|
'400':
|
|||
|
description: Invalid ID supplied
|
|||
|
'404':
|
|||
|
description: Order not found
|
|||
|
delete:
|
|||
|
tags:
|
|||
|
- store
|
|||
|
summary: Delete purchase order by ID
|
|||
|
description: For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
|
|||
|
operationId: deleteOrder
|
|||
|
parameters:
|
|||
|
- name: orderId
|
|||
|
in: path
|
|||
|
description: ID of the order that needs to be deleted
|
|||
|
required: true
|
|||
|
schema:
|
|||
|
type: integer
|
|||
|
format: int64
|
|||
|
responses:
|
|||
|
'400':
|
|||
|
description: Invalid ID supplied
|
|||
|
'404':
|
|||
|
description: Order not found
|
|||
|
/user:
|
|||
|
post:
|
|||
|
tags:
|
|||
|
- user
|
|||
|
summary: Create user
|
|||
|
description: This can only be done by the logged in user.
|
|||
|
operationId: createUser
|
|||
|
requestBody:
|
|||
|
description: Created user object
|
|||
|
content:
|
|||
|
application/json:
|
|||
|
schema:
|
|||
|
$ref: '#/components/schemas/User'
|
|||
|
application/xml:
|
|||
|
schema:
|
|||
|
$ref: '#/components/schemas/User'
|
|||
|
application/x-www-form-urlencoded:
|
|||
|
schema:
|
|||
|
$ref: '#/components/schemas/User'
|
|||
|
responses:
|
|||
|
default:
|
|||
|
description: successful operation
|
|||
|
content:
|
|||
|
application/json:
|
|||
|
schema:
|
|||
|
$ref: '#/components/schemas/User'
|
|||
|
application/xml:
|
|||
|
schema:
|
|||
|
$ref: '#/components/schemas/User'
|
|||
|
/user/createWithList:
|
|||
|
post:
|
|||
|
tags:
|
|||
|
- user
|
|||
|
summary: Creates list of users with given input array
|
|||
|
description: Creates list of users with given input array
|
|||
|
operationId: createUsersWithListInput
|
|||
|
requestBody:
|
|||
|
content:
|
|||
|
application/json:
|
|||
|
schema:
|
|||
|
type: array
|
|||
|
items:
|
|||
|
$ref: '#/components/schemas/User'
|
|||
|
responses:
|
|||
|
'200':
|
|||
|
description: Successful operation
|
|||
|
content:
|
|||
|
application/json:
|
|||
|
schema:
|
|||
|
$ref: '#/components/schemas/User'
|
|||
|
application/xml:
|
|||
|
schema:
|
|||
|
$ref: '#/components/schemas/User'
|
|||
|
default:
|
|||
|
description: successful operation
|
|||
|
/user/login:
|
|||
|
get:
|
|||
|
tags:
|
|||
|
- user
|
|||
|
summary: Logs user into the system
|
|||
|
description: ''
|
|||
|
operationId: loginUser
|
|||
|
parameters:
|
|||
|
- name: username
|
|||
|
in: query
|
|||
|
description: The user name for login
|
|||
|
required: false
|
|||
|
schema:
|
|||
|
type: string
|
|||
|
- name: password
|
|||
|
in: query
|
|||
|
description: The password for login in clear text
|
|||
|
required: false
|
|||
|
schema:
|
|||
|
type: string
|
|||
|
responses:
|
|||
|
'200':
|
|||
|
description: successful operation
|
|||
|
headers:
|
|||
|
X-Rate-Limit:
|
|||
|
description: calls per hour allowed by the user
|
|||
|
schema:
|
|||
|
type: integer
|
|||
|
format: int32
|
|||
|
X-Expires-After:
|
|||
|
description: date in UTC when token expires
|
|||
|
schema:
|
|||
|
type: string
|
|||
|
format: date-time
|
|||
|
content:
|
|||
|
application/xml:
|
|||
|
schema:
|
|||
|
type: string
|
|||
|
application/json:
|
|||
|
schema:
|
|||
|
type: string
|
|||
|
'400':
|
|||
|
description: Invalid username/password supplied
|
|||
|
/user/logout:
|
|||
|
get:
|
|||
|
tags:
|
|||
|
- user
|
|||
|
summary: Logs out current logged in user session
|
|||
|
description: ''
|
|||
|
operationId: logoutUser
|
|||
|
parameters: []
|
|||
|
responses:
|
|||
|
default:
|
|||
|
description: successful operation
|
|||
|
/user/{username}:
|
|||
|
get:
|
|||
|
tags:
|
|||
|
- user
|
|||
|
summary: Get user by user name
|
|||
|
description: ''
|
|||
|
operationId: getUserByName
|
|||
|
parameters:
|
|||
|
- name: username
|
|||
|
in: path
|
|||
|
description: 'The name that needs to be fetched. Use user1 for testing. '
|
|||
|
required: true
|
|||
|
schema:
|
|||
|
type: string
|
|||
|
responses:
|
|||
|
'200':
|
|||
|
description: successful operation
|
|||
|
content:
|
|||
|
application/json:
|
|||
|
schema:
|
|||
|
$ref: '#/components/schemas/User'
|
|||
|
application/xml:
|
|||
|
schema:
|
|||
|
$ref: '#/components/schemas/User'
|
|||
|
'400':
|
|||
|
description: Invalid username supplied
|
|||
|
'404':
|
|||
|
description: User not found
|
|||
|
put:
|
|||
|
tags:
|
|||
|
- user
|
|||
|
summary: Update user
|
|||
|
description: This can only be done by the logged in user.
|
|||
|
operationId: updateUser
|
|||
|
parameters:
|
|||
|
- name: username
|
|||
|
in: path
|
|||
|
description: name that need to be deleted
|
|||
|
required: true
|
|||
|
schema:
|
|||
|
type: string
|
|||
|
requestBody:
|
|||
|
description: Update an existent user in the store
|
|||
|
content:
|
|||
|
application/json:
|
|||
|
schema:
|
|||
|
$ref: '#/components/schemas/User'
|
|||
|
application/xml:
|
|||
|
schema:
|
|||
|
$ref: '#/components/schemas/User'
|
|||
|
application/x-www-form-urlencoded:
|
|||
|
schema:
|
|||
|
$ref: '#/components/schemas/User'
|
|||
|
responses:
|
|||
|
default:
|
|||
|
description: successful operation
|
|||
|
delete:
|
|||
|
tags:
|
|||
|
- user
|
|||
|
summary: Delete user
|
|||
|
description: This can only be done by the logged in user.
|
|||
|
operationId: deleteUser
|
|||
|
parameters:
|
|||
|
- name: username
|
|||
|
in: path
|
|||
|
description: The name that needs to be deleted
|
|||
|
required: true
|
|||
|
schema:
|
|||
|
type: string
|
|||
|
responses:
|
|||
|
'400':
|
|||
|
description: Invalid username supplied
|
|||
|
'404':
|
|||
|
description: User not found
|
|||
|
components:
|
|||
|
schemas:
|
|||
|
Account:
|
|||
|
type: object
|
|||
|
properties:
|
|||
|
_id:
|
|||
|
type: string
|
|||
|
example: "807f1f77bcf81cd799439011"
|
|||
|
userId:
|
|||
|
type: string
|
|||
|
example: "807f1f77bcf81cd799439011"
|
|||
|
cart:
|
|||
|
$ref: "#/components/schemas/Cart"
|
|||
|
wallet:
|
|||
|
$ref: "#/components/schemas/Wallet"
|
|||
|
isDeleted:
|
|||
|
type: boolean
|
|||
|
example: false
|
|||
|
Wallet:
|
|||
|
type: object
|
|||
|
properties:
|
|||
|
currency:
|
|||
|
type: string
|
|||
|
example: "RUB"
|
|||
|
cash:
|
|||
|
type: integer
|
|||
|
format: int64
|
|||
|
example: 10701
|
|||
|
Cart:
|
|||
|
type: array
|
|||
|
items:
|
|||
|
type: string
|
|||
|
example:
|
|||
|
- "807f1f77bcf81cd799439011"
|
|||
|
- "807f1f77bcf81cd799439011"
|
|||
|
- "807f1f77bcf81cd799439011"
|
|||
|
Order:
|
|||
|
type: object
|
|||
|
properties:
|
|||
|
id:
|
|||
|
type: integer
|
|||
|
format: int64
|
|||
|
example: 10
|
|||
|
petId:
|
|||
|
type: integer
|
|||
|
format: int64
|
|||
|
example: 198772
|
|||
|
quantity:
|
|||
|
type: integer
|
|||
|
format: int32
|
|||
|
example: 7
|
|||
|
shipDate:
|
|||
|
type: string
|
|||
|
format: date-time
|
|||
|
status:
|
|||
|
type: string
|
|||
|
description: Order Status
|
|||
|
example: approved
|
|||
|
enum:
|
|||
|
- placed
|
|||
|
- approved
|
|||
|
- delivered
|
|||
|
complete:
|
|||
|
type: boolean
|
|||
|
xml:
|
|||
|
name: order
|
|||
|
Customer:
|
|||
|
type: object
|
|||
|
properties:
|
|||
|
id:
|
|||
|
type: integer
|
|||
|
format: int64
|
|||
|
example: 100000
|
|||
|
username:
|
|||
|
type: string
|
|||
|
example: fehguy
|
|||
|
address:
|
|||
|
type: array
|
|||
|
xml:
|
|||
|
name: addresses
|
|||
|
wrapped: true
|
|||
|
items:
|
|||
|
$ref: '#/components/schemas/Address'
|
|||
|
xml:
|
|||
|
name: customer
|
|||
|
Address:
|
|||
|
type: object
|
|||
|
properties:
|
|||
|
street:
|
|||
|
type: string
|
|||
|
example: 437 Lytton
|
|||
|
city:
|
|||
|
type: string
|
|||
|
example: Palo Alto
|
|||
|
state:
|
|||
|
type: string
|
|||
|
example: CA
|
|||
|
zip:
|
|||
|
type: string
|
|||
|
example: '94301'
|
|||
|
xml:
|
|||
|
name: address
|
|||
|
Category:
|
|||
|
type: object
|
|||
|
properties:
|
|||
|
id:
|
|||
|
type: integer
|
|||
|
format: int64
|
|||
|
example: 1
|
|||
|
name:
|
|||
|
type: string
|
|||
|
example: Dogs
|
|||
|
xml:
|
|||
|
name: category
|
|||
|
User:
|
|||
|
type: object
|
|||
|
properties:
|
|||
|
id:
|
|||
|
type: integer
|
|||
|
format: int64
|
|||
|
example: 10
|
|||
|
username:
|
|||
|
type: string
|
|||
|
example: theUser
|
|||
|
firstName:
|
|||
|
type: string
|
|||
|
example: John
|
|||
|
lastName:
|
|||
|
type: string
|
|||
|
example: James
|
|||
|
email:
|
|||
|
type: string
|
|||
|
example: john@email.com
|
|||
|
password:
|
|||
|
type: string
|
|||
|
example: '12345'
|
|||
|
phone:
|
|||
|
type: string
|
|||
|
example: '12345'
|
|||
|
userStatus:
|
|||
|
type: integer
|
|||
|
description: User Status
|
|||
|
format: int32
|
|||
|
example: 1
|
|||
|
xml:
|
|||
|
name: user
|
|||
|
Tag:
|
|||
|
type: object
|
|||
|
properties:
|
|||
|
id:
|
|||
|
type: integer
|
|||
|
format: int64
|
|||
|
name:
|
|||
|
type: string
|
|||
|
xml:
|
|||
|
name: tag
|
|||
|
Pet:
|
|||
|
required:
|
|||
|
- name
|
|||
|
- photoUrls
|
|||
|
type: object
|
|||
|
properties:
|
|||
|
id:
|
|||
|
type: integer
|
|||
|
format: int64
|
|||
|
example: 10
|
|||
|
name:
|
|||
|
type: string
|
|||
|
example: doggie
|
|||
|
category:
|
|||
|
$ref: '#/components/schemas/Category'
|
|||
|
photoUrls:
|
|||
|
type: array
|
|||
|
xml:
|
|||
|
wrapped: true
|
|||
|
items:
|
|||
|
type: string
|
|||
|
xml:
|
|||
|
name: photoUrl
|
|||
|
tags:
|
|||
|
type: array
|
|||
|
xml:
|
|||
|
wrapped: true
|
|||
|
items:
|
|||
|
$ref: '#/components/schemas/Tag'
|
|||
|
status:
|
|||
|
type: string
|
|||
|
description: pet status in the store
|
|||
|
enum:
|
|||
|
- available
|
|||
|
- pending
|
|||
|
- sold
|
|||
|
xml:
|
|||
|
name: pet
|
|||
|
ApiResponse:
|
|||
|
type: object
|
|||
|
properties:
|
|||
|
code:
|
|||
|
type: integer
|
|||
|
format: int32
|
|||
|
type:
|
|||
|
type: string
|
|||
|
message:
|
|||
|
type: string
|
|||
|
xml:
|
|||
|
name: '##default'
|
|||
|
requestBodies:
|
|||
|
Pet:
|
|||
|
description: Pet object that needs to be added to the store
|
|||
|
content:
|
|||
|
application/json:
|
|||
|
schema:
|
|||
|
$ref: '#/components/schemas/Pet'
|
|||
|
application/xml:
|
|||
|
schema:
|
|||
|
$ref: '#/components/schemas/Pet'
|
|||
|
UserArray:
|
|||
|
description: List of user object
|
|||
|
content:
|
|||
|
application/json:
|
|||
|
schema:
|
|||
|
type: array
|
|||
|
items:
|
|||
|
$ref: '#/components/schemas/User'
|
|||
|
securitySchemes:
|
|||
|
petstore_auth:
|
|||
|
type: oauth2
|
|||
|
flows:
|
|||
|
implicit:
|
|||
|
authorizationUrl: https://petstore3.swagger.io/oauth/authorize
|
|||
|
scopes:
|
|||
|
write:pets: modify pets in your account
|
|||
|
read:pets: read your pets
|
|||
|
api_key:
|
|||
|
type: apiKey
|
|||
|
name: api_key
|
|||
|
in: header
|