// Package docs Code generated by swaggo/swag. DO NOT EDIT package docs import "github.com/swaggo/swag" const docTemplate = `{ "schemes": {{ marshal .Schemes }}, "swagger": "2.0", "info": { "description": "{{escape .Description}}", "title": "{{.Title}}", "termsOfService": "http://swagger.io/terms/", "contact": { "name": "API Support", "url": "http://www.swagger.io/support", "email": "support@swagger.io" }, "license": { "name": "Apache 2.0", "url": "http://www.apache.org/licenses/LICENSE-2.0.html" }, "version": "{{.Version}}" }, "host": "{{.Host}}", "basePath": "{{.BasePath}}", "paths": { "/admin/users": { "get": { "security": [ { "ApiKeyAuth": [] } ], "description": "Fetches all users", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "admin" ], "summary": "Fetches all users", "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/store.User" } }, "400": { "description": "Bad Request", "schema": {} }, "404": { "description": "Not Found", "schema": {} }, "500": { "description": "Internal Server Error", "schema": {} } } } }, "/authentication/forgot-password": { "post": { "description": "Forgot Password", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "authentication" ], "summary": "Forgot Password", "parameters": [ { "description": "User Credentials", "name": "payload", "in": "body", "required": true, "schema": { "$ref": "#/definitions/main.ForgotPasswordPayload" } } ], "responses": { "201": { "description": "Token Created", "schema": { "type": "string" } }, "400": { "description": "Bad Request", "schema": {} }, "401": { "description": "Unauthorized", "schema": {} }, "500": { "description": "Internal Server Error", "schema": {} } } } }, "/authentication/refresh": { "post": { "description": "Refresh a token for the user", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "authentication" ], "summary": "Refresh a token", "parameters": [ { "type": "string", "description": "Refresh Token", "name": "Authorization", "in": "header", "required": true } ], "responses": { "201": { "description": "Token Created", "schema": { "type": "string" } }, "400": { "description": "Bad Request", "schema": {} }, "401": { "description": "Unauthorized", "schema": {} }, "500": { "description": "Internal Server Error", "schema": {} } } } }, "/authentication/register": { "post": { "description": "Register a new User", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "authentication" ], "summary": "Register a new User", "parameters": [ { "description": "User Credentials", "name": "payload", "in": "body", "required": true, "schema": { "$ref": "#/definitions/main.RegisterUserPayload" } } ], "responses": { "201": { "description": "User Registered", "schema": { "$ref": "#/definitions/main.UserWithToken" } }, "400": { "description": "User payload error", "schema": {} }, "500": { "description": "Internal Server Error", "schema": {} } } } }, "/authentication/token": { "post": { "description": "Create a new token for the user", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "authentication" ], "summary": "Create a new token", "parameters": [ { "description": "User Credentials", "name": "payload", "in": "body", "required": true, "schema": { "$ref": "#/definitions/main.CredentialsPayload" } } ], "responses": { "201": { "description": "Token Created", "schema": { "type": "string" } }, "400": { "description": "Bad Request", "schema": {} }, "401": { "description": "Unauthorized", "schema": {} }, "500": { "description": "Internal Server Error", "schema": {} } } } }, "/health": { "get": { "description": "Health Check", "tags": [ "ops" ], "summary": "Health Check", "responses": { "204": { "description": "ok", "schema": { "type": "string" } }, "500": { "description": "Internal Server Error", "schema": {} } } } }, "/posts": { "post": { "security": [ { "ApiKeyAuth": [] } ], "description": "Creates a new Post", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "posts" ], "summary": "Creates a new Post", "parameters": [ { "description": "Post Payload", "name": "in", "in": "body", "required": true, "schema": { "$ref": "#/definitions/main.CreatePostPayload" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/store.Post" } }, "400": { "description": "Bad Request", "schema": {} }, "404": { "description": "Not Found", "schema": {} }, "500": { "description": "Internal Server Error", "schema": {} } } } }, "/posts/{id}": { "get": { "security": [ { "ApiKeyAuth": [] } ], "description": "Fetches a Post by ID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "posts" ], "summary": "Fetches a Post", "parameters": [ { "type": "integer", "description": "Post ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/store.Post" } }, "400": { "description": "Bad Request", "schema": {} }, "404": { "description": "Not Found", "schema": {} }, "500": { "description": "Internal Server Error", "schema": {} } } }, "delete": { "security": [ { "ApiKeyAuth": [] } ], "description": "Deletse a Post by ID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "posts" ], "summary": "Deletes a Post", "parameters": [ { "type": "integer", "description": "Post ID", "name": "id", "in": "path", "required": true } ], "responses": { "204": { "description": "No Content", "schema": { "type": "string" } }, "404": { "description": "Not Found", "schema": {} }, "500": { "description": "Internal Server Error", "schema": {} } } }, "patch": { "security": [ { "ApiKeyAuth": [] } ], "description": "Update a Post by ID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "posts" ], "summary": "Update a Post", "parameters": [ { "type": "integer", "description": "Post ID", "name": "id", "in": "path", "required": true }, { "description": "Post Payload", "name": "in", "in": "body", "required": true, "schema": { "$ref": "#/definitions/main.UpdatePostPayload" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/store.Post" } }, "400": { "description": "Bad Request", "schema": {} }, "404": { "description": "Not Found", "schema": {} }, "500": { "description": "Internal Server Error", "schema": {} } } } }, "/posts/{id}/comments": { "post": { "security": [ { "ApiKeyAuth": [] } ], "description": "Creates a new Comment", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "comments" ], "summary": "Creates a new Comment", "parameters": [ { "type": "integer", "description": "Post ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/store.Comment" } }, "400": { "description": "Bad Request", "schema": {} }, "404": { "description": "Not Found", "schema": {} }, "500": { "description": "Internal Server Error", "schema": {} } } } }, "/users/activate/{token}": { "put": { "security": [ { "ApiKeyAuth": [] } ], "description": "Activate/Register a user by invitation token", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "users" ], "summary": "Activate/Register a user", "parameters": [ { "type": "string", "description": "Invitation Token", "name": "token", "in": "path", "required": true } ], "responses": { "204": { "description": "User activated", "schema": { "type": "string" } }, "404": { "description": "User not found", "schema": {} }, "500": { "description": "Internal Server Error", "schema": {} } } } }, "/users/feed": { "get": { "security": [ { "ApiKeyAuth": [] } ], "description": "Fetches the user feed", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "feed" ], "summary": "Fetches the user feed", "parameters": [ { "type": "integer", "description": "Limit", "name": "limit", "in": "query" }, { "type": "integer", "description": "Offset", "name": "offset", "in": "query" }, { "type": "string", "description": "Sort", "name": "sort", "in": "query" }, { "type": "string", "description": "Tags", "name": "tags", "in": "query" }, { "type": "string", "description": "Search", "name": "search", "in": "query" }, { "type": "string", "description": "Since", "name": "since", "in": "query" }, { "type": "string", "description": "Until", "name": "until", "in": "query" } ], "responses": { "200": { "description": "OK", "schema": { "type": "array", "items": { "$ref": "#/definitions/store.PostWithMetadata" } } }, "400": { "description": "Bad Request", "schema": {} }, "500": { "description": "Internal Server Error", "schema": {} } } } }, "/users/reset-password/{token}": { "put": { "security": [ { "ApiKeyAuth": [] } ], "description": "Reset user password with verification", "consumes": [ "application/json" ], "tags": [ "users" ], "summary": "Reset user password", "parameters": [ { "description": "Reset Password", "name": "payload", "in": "body", "required": true, "schema": { "$ref": "#/definitions/main.resetPasswordPayload" } }, { "type": "string", "description": "Reset Password Token", "name": "token", "in": "path", "required": true } ], "responses": { "204": { "description": "Password reset successfully", "schema": { "type": "string" } }, "400": { "description": "Invalid request", "schema": {} }, "401": { "description": "Unauthorized", "schema": {} }, "500": { "description": "Internal server error", "schema": {} } } } }, "/users/{id}": { "get": { "security": [ { "ApiKeyAuth": [] } ], "description": "Fetches a user Profile by ID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "users" ], "summary": "Fetches a user Profile", "parameters": [ { "type": "integer", "description": "User ID", "name": "id", "in": "path", "required": true } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/store.User" } }, "400": { "description": "Bad Request", "schema": {} }, "404": { "description": "Not Found", "schema": {} }, "500": { "description": "Internal Server Error", "schema": {} } } }, "patch": { "security": [ { "ApiKeyAuth": [] } ], "description": "Update a user Profile by ID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "users" ], "summary": "Update a user Profile", "parameters": [ { "type": "integer", "description": "User ID", "name": "id", "in": "path", "required": true }, { "description": "User Profile", "name": "payload", "in": "body", "required": true, "schema": { "$ref": "#/definitions/main.updateUserPayload" } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/store.User" } }, "400": { "description": "Bad Request", "schema": {} }, "404": { "description": "Not Found", "schema": {} }, "500": { "description": "Internal Server Error", "schema": {} } } } }, "/users/{id}/follow": { "put": { "description": "Follows a user by ID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "users" ], "summary": "Follows a user", "parameters": [ { "type": "integer", "description": "User ID", "name": "id", "in": "path", "required": true } ], "responses": { "204": { "description": "User followed", "schema": { "type": "string" } }, "400": { "description": "User not found", "schema": {} } } } }, "/users/{id}/password": { "patch": { "security": [ { "ApiKeyAuth": [] } ], "description": "Update user password with verification\nPassword must:\n- Be at least 8 characters long\n- Contain at least one uppercase letter\n- Contain at least one lowercase letter\n- Contain at least one number\n- Contain at least one special character\n- Be different from the current password", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "users" ], "summary": "Update user password", "parameters": [ { "type": "integer", "description": "User ID", "name": "id", "in": "path", "required": true }, { "description": "Password Update", "name": "payload", "in": "body", "required": true, "schema": { "$ref": "#/definitions/main.updateUserPasswordPayload" } } ], "responses": { "204": { "description": "Password updated successfully", "schema": { "type": "string" } }, "400": { "description": "Invalid request", "schema": {} }, "401": { "description": "Unauthorized", "schema": {} }, "404": { "description": "User not found", "schema": {} }, "500": { "description": "Internal server error", "schema": {} } } } }, "/users/{id}/unfollow": { "put": { "description": "Unfollows a user by ID", "consumes": [ "application/json" ], "produces": [ "application/json" ], "tags": [ "users" ], "summary": "Unfollows a user", "parameters": [ { "type": "integer", "description": "User ID", "name": "id", "in": "path", "required": true } ], "responses": { "204": { "description": "User unfollowed", "schema": { "type": "string" } }, "400": { "description": "User payload error", "schema": {} }, "404": { "description": "User not found", "schema": {} } } } } }, "definitions": { "main.CreatePostPayload": { "type": "object", "required": [ "content", "title" ], "properties": { "content": { "type": "string", "maxLength": 1000 }, "tags": { "type": "array", "items": { "type": "string" } }, "title": { "type": "string", "maxLength": 100 } } }, "main.CredentialsPayload": { "type": "object", "required": [ "email", "password" ], "properties": { "email": { "type": "string", "maxLength": 255 }, "password": { "type": "string", "maxLength": 72, "minLength": 3 } } }, "main.ForgotPasswordPayload": { "type": "object", "required": [ "email" ], "properties": { "email": { "type": "string", "maxLength": 255 } } }, "main.RegisterUserPayload": { "type": "object", "required": [ "email", "first_name", "last_name", "password", "username" ], "properties": { "email": { "type": "string", "maxLength": 255 }, "first_name": { "type": "string", "maxLength": 100 }, "last_name": { "type": "string", "maxLength": 100 }, "password": { "type": "string" }, "username": { "type": "string", "maxLength": 100 } } }, "main.UpdatePostPayload": { "type": "object", "properties": { "content": { "type": "string", "maxLength": 1000 }, "title": { "type": "string", "maxLength": 100 } } }, "main.UserWithToken": { "type": "object", "properties": { "created_at": { "type": "string" }, "email": { "type": "string" }, "first_name": { "type": "string" }, "id": { "type": "integer" }, "is_active": { "type": "boolean" }, "last_name": { "type": "string" }, "role": { "$ref": "#/definitions/store.Role" }, "role_id": { "type": "integer" }, "token": { "type": "string" }, "updated_at": { "type": "string" }, "username": { "type": "string" } } }, "main.resetPasswordPayload": { "type": "object", "required": [ "new_password", "new_password_confirmation" ], "properties": { "new_password": { "type": "string" }, "new_password_confirmation": { "type": "string" } } }, "main.updateUserPasswordPayload": { "type": "object", "required": [ "current_password", "new_password" ], "properties": { "current_password": { "type": "string" }, "new_password": { "type": "string" } } }, "main.updateUserPayload": { "type": "object", "properties": { "email": { "type": "string", "maxLength": 255 }, "first_name": { "type": "string", "maxLength": 100 }, "last_name": { "type": "string", "maxLength": 100 }, "username": { "type": "string", "maxLength": 100 } } }, "store.Comment": { "type": "object", "properties": { "content": { "type": "string" }, "created_at": { "type": "string" }, "id": { "type": "integer" }, "post_id": { "type": "integer" }, "updated_at": { "type": "string" }, "user": { "$ref": "#/definitions/store.User" }, "user_id": { "type": "integer" } } }, "store.Post": { "type": "object", "properties": { "comments": { "type": "array", "items": { "$ref": "#/definitions/store.Comment" } }, "content": { "type": "string" }, "created_at": { "type": "string" }, "id": { "type": "integer" }, "tags": { "type": "array", "items": { "type": "string" } }, "title": { "type": "string" }, "updated_at": { "type": "string" }, "user": { "$ref": "#/definitions/store.User" }, "user_id": { "type": "integer" }, "version": { "type": "integer" } } }, "store.PostWithMetadata": { "type": "object", "properties": { "comment_count": { "type": "integer" }, "comments": { "type": "array", "items": { "$ref": "#/definitions/store.Comment" } }, "content": { "type": "string" }, "created_at": { "type": "string" }, "id": { "type": "integer" }, "tags": { "type": "array", "items": { "type": "string" } }, "title": { "type": "string" }, "updated_at": { "type": "string" }, "user": { "$ref": "#/definitions/store.User" }, "user_id": { "type": "integer" }, "version": { "type": "integer" } } }, "store.Role": { "type": "object", "properties": { "description": { "type": "string" }, "id": { "type": "integer" }, "level": { "type": "integer" }, "name": { "type": "string" } } }, "store.User": { "type": "object", "properties": { "created_at": { "type": "string" }, "email": { "type": "string" }, "first_name": { "type": "string" }, "id": { "type": "integer" }, "is_active": { "type": "boolean" }, "last_name": { "type": "string" }, "role": { "$ref": "#/definitions/store.Role" }, "role_id": { "type": "integer" }, "updated_at": { "type": "string" }, "username": { "type": "string" } } } }, "securityDefinitions": { "ApiKeyAuth": { "type": "apiKey", "name": "Authorization", "in": "header" } } }` // SwaggerInfo holds exported Swagger Info so clients can modify it var SwaggerInfo = &swag.Spec{ Version: "", Host: "", BasePath: "/v1", Schemes: []string{}, Title: "LK API Template", Description: "This is a template for building APIs with Go, Chi, and Swagger.", InfoInstanceName: "swagger", SwaggerTemplate: docTemplate, LeftDelim: "{{", RightDelim: "}}", } func init() { swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo) }