1291 lines
40 KiB
JSON
1291 lines
40 KiB
JSON
{
|
|
"swagger": "2.0",
|
|
"info": {
|
|
"description": "This is a template for building APIs with Go, Chi, and Swagger.",
|
|
"title": "LK API Template",
|
|
"termsOfService": "http://swagger.io/terms/",
|
|
"contact": {
|
|
"name": "API Support",
|
|
"url": "http://www.swagger.io/support",
|
|
"email": "[email protected]"
|
|
},
|
|
"license": {
|
|
"name": "Apache 2.0",
|
|
"url": "http://www.apache.org/licenses/LICENSE-2.0.html"
|
|
}
|
|
},
|
|
"basePath": "/v1",
|
|
"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"
|
|
}
|
|
}
|
|
} |