api/docs/swagger.json
2025-10-26 19:54:51 +03:00

984 lines
No EOL
33 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"swagger": "2.0",
"info": {
"title": "Merch Parser",
"contact": {},
"version": "2.0.0-alpha"
},
"basePath": "/api/v2",
"paths": {
"/merch": {
"post": {
"security": [
{
"BearerAuth": []
}
],
"description": "Добавить новый мерч",
"consumes": [
"application/json"
],
"tags": [
"Merch"
],
"summary": "Добавить новый мерч",
"parameters": [
{
"description": "новый мерч",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/merch.MerchDTO"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse400"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse500"
}
}
}
}
},
"/merch/": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Получить все записи мерча",
"tags": [
"Merch"
],
"summary": "Получить все записи мерча",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/merch.ListResponse"
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse400"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse500"
}
}
}
},
"put": {
"security": [
{
"BearerAuth": []
}
],
"description": "Обновить информацию про мерч по его uuid в json-е",
"tags": [
"Merch"
],
"summary": "Обновить информацию про мерч",
"parameters": [
{
"description": "merch_uuid",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/merch.UpdateMerchDTO"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse400"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse500"
}
}
}
}
},
"/merch/images/{uuid}": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Получить картинки по merch_uuid и query параметрам",
"tags": [
"Merch images"
],
"summary": "Получить картинки по merch_uuid и query параметрам",
"parameters": [
{
"type": "string",
"description": "merch_uuid",
"name": "uuid",
"in": "path",
"required": true
},
{
"type": "string",
"description": "image type",
"name": "type",
"in": "query",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/merch.ImageLink"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse400"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse500"
}
}
}
},
"post": {
"security": [
{
"BearerAuth": []
}
],
"description": "Загрузить картинку по merch_uuid. В ответ будут выданы ссылки на созданные картинки.",
"consumes": [
"multipart/form-data"
],
"produces": [
"application/json"
],
"tags": [
"Merch images"
],
"summary": "Загрузить картинку по merch_uuid",
"parameters": [
{
"type": "string",
"description": "Merch UUID",
"name": "uuid",
"in": "path",
"required": true
},
{
"type": "file",
"description": "Image file",
"name": "file",
"in": "formData",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/imageStorage.UploadMerchImageResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse400"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse500"
}
}
}
},
"delete": {
"security": [
{
"BearerAuth": []
}
],
"description": "Удалить (безвозвратно) картинки по merch_uuid",
"tags": [
"Merch images"
],
"summary": "Удалить (безвозвратно) картинки по merch_uuid",
"parameters": [
{
"type": "string",
"description": "merch_uuid",
"name": "uuid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse400"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse500"
}
}
}
}
},
"/merch/{uuid}": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Получить всю информацию про мерч по его uuid",
"tags": [
"Merch"
],
"summary": "Получить всю информацию про мерч",
"parameters": [
{
"type": "string",
"description": "merch_uuid",
"name": "uuid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/merch.MerchDTO"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse400"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse500"
}
}
}
},
"delete": {
"security": [
{
"BearerAuth": []
}
],
"description": "Пометить мерч как удаленный по его uuid",
"tags": [
"Merch"
],
"summary": "Пометить мерч как удаленный",
"parameters": [
{
"type": "string",
"description": "merch_uuid",
"name": "uuid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/merch.MerchDTO"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse400"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse500"
}
}
}
}
},
"/prices": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Получить цены мерча за период",
"tags": [
"Merch"
],
"summary": "Получить цены мерча за период",
"parameters": [
{
"type": "string",
"description": "period in days",
"name": "days",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/merch.PricesResponse"
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse400"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse500"
}
}
}
}
},
"/prices/{uuid}": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Получить перепады цен мерча за период по его merch_uuid",
"tags": [
"Merch"
],
"summary": "Получить перепады цен мерча за период по его merch_uuid",
"parameters": [
{
"type": "string",
"description": "merch_uuid",
"name": "uuid",
"in": "path",
"required": true
},
{
"type": "string",
"description": "period in days",
"name": "days",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/merch.PricesResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse400"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse500"
}
}
}
}
},
"/user": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Получает информацию о пользователе по его uuid из токена",
"tags": [
"Users"
],
"summary": "Получить информацию о пользователе",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/user.Info"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse400"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse401"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse500"
}
}
}
},
"put": {
"security": [
{
"BearerAuth": []
}
],
"description": "Обновить информацию о пользователе по его uuid из токена",
"consumes": [
"application/json"
],
"tags": [
"Users"
],
"summary": "Обновить информацию о пользователе",
"parameters": [
{
"description": "изменения",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/user.Update"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse400"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse401"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse500"
}
}
}
},
"post": {
"description": "Регистрация нового пользователя",
"consumes": [
"application/json"
],
"tags": [
"Users"
],
"summary": "Регистрация нового пользователя",
"parameters": [
{
"description": "новый пользователь",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/user.Register"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse400"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse500"
}
}
}
},
"delete": {
"security": [
{
"BearerAuth": []
}
],
"description": "Помечает пользователя как удаленного по его uuid из токена",
"tags": [
"Users"
],
"summary": "Удалить пользователя",
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse400"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse401"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse500"
}
}
}
}
},
"/user/auth/current-session": {
"get": {
"security": [
{
"BearerAuth": []
}
],
"description": "Возвращает информацию о текущей сессии пользователя",
"tags": [
"Users"
],
"summary": "Возвращает информацию о текущей сессии пользователя",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/shared.CurrentSession"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse400"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse401"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse500"
}
}
}
}
},
"/user/auth/login": {
"post": {
"description": "Логин",
"consumes": [
"application/json"
],
"tags": [
"Users - auth"
],
"summary": "Логин",
"parameters": [
{
"description": "логин",
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/user.Login"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/user.LoginResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse400"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse500"
}
}
}
}
},
"/user/auth/logout": {
"post": {
"description": "Логаут. Для логаута надо передать refresh token, он будет инвалидирован.",
"tags": [
"Users - auth"
],
"summary": "Логаут",
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse400"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse500"
}
}
}
}
},
"/user/auth/refresh": {
"post": {
"description": "Принимает рефреш токен в http only куки",
"tags": [
"Users - auth"
],
"summary": "Обновление аксесс токена по рефреш токену.",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/user.LoginResponse"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse400"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/responses.ErrorResponse500"
}
}
}
}
}
},
"definitions": {
"imageStorage.UploadMerchImageResponse": {
"type": "object",
"properties": {
"fullImage": {
"type": "string"
},
"thumbnail": {
"type": "string"
}
}
},
"merch.ImageLink": {
"type": "object",
"properties": {
"etag": {
"type": "string"
},
"link": {
"type": "string"
}
}
},
"merch.ListResponse": {
"type": "object",
"properties": {
"merch_uuid": {
"type": "string"
},
"name": {
"type": "string"
}
}
},
"merch.MandarakeDTO": {
"type": "object",
"properties": {
"link": {
"type": "string"
}
}
},
"merch.MerchDTO": {
"type": "object",
"properties": {
"merch_uuid": {
"type": "string"
},
"name": {
"type": "string"
},
"origin_mandarake": {
"$ref": "#/definitions/merch.MandarakeDTO"
},
"origin_surugaya": {
"$ref": "#/definitions/merch.SurugayaDTO"
}
}
},
"merch.OriginWithPrices": {
"type": "object",
"properties": {
"origin": {
"type": "integer"
},
"prices": {
"type": "array",
"items": {
"$ref": "#/definitions/merch.PriceEntry"
}
}
}
},
"merch.PriceEntry": {
"type": "object",
"properties": {
"created_at": {
"type": "integer"
},
"value": {
"type": "integer"
}
}
},
"merch.PricesResponse": {
"type": "object",
"properties": {
"merch_uuid": {
"type": "string"
},
"name": {
"type": "string"
},
"origins": {
"type": "array",
"items": {
"$ref": "#/definitions/merch.OriginWithPrices"
}
}
}
},
"merch.SurugayaDTO": {
"type": "object",
"properties": {
"link": {
"type": "string"
}
}
},
"merch.UpdateMerchDTO": {
"type": "object",
"properties": {
"link": {
"type": "string"
},
"merch_uuid": {
"type": "string"
},
"name": {
"type": "string"
},
"origin": {
"type": "string"
}
}
},
"responses.ErrorResponse400": {
"type": "object",
"properties": {
"error": {
"type": "string",
"example": "Bad Request"
}
}
},
"responses.ErrorResponse401": {
"type": "object",
"properties": {
"error": {
"type": "string",
"example": "Unauthorized"
}
}
},
"responses.ErrorResponse500": {
"type": "object",
"properties": {
"error": {
"type": "string",
"example": "Internal Server Error"
}
}
},
"shared.CurrentSession": {
"type": "object",
"properties": {
"expires": {
"type": "string"
},
"uuid": {
"type": "string"
}
}
},
"user.Info": {
"type": "object",
"properties": {
"created_at": {
"type": "string"
},
"email": {
"type": "string"
},
"username": {
"type": "string"
}
}
},
"user.Login": {
"type": "object",
"properties": {
"email": {
"type": "string"
},
"password": {
"type": "string"
}
}
},
"user.LoginResponse": {
"type": "object",
"properties": {
"access_token": {
"type": "string"
}
}
},
"user.Register": {
"type": "object",
"properties": {
"email": {
"type": "string"
},
"password": {
"type": "string"
},
"username": {
"type": "string"
}
}
},
"user.Update": {
"type": "object",
"properties": {
"email": {
"type": "string"
},
"username": {
"type": "string"
}
}
}
},
"securityDefinitions": {
"BearerAuth": {
"description": "Введите \"Bearer {your_token}\" для аутентификации",
"type": "apiKey",
"name": "Authorization",
"in": "header"
}
}
}