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