{ "swagger": "2.0", "info": { "title": "聚玩社区服务", "description": "处理帖子、评论、点赞等社区互动。ID 字段(int64)以 string 传输", "version": "1.0" }, "schemes": [ "http", "https" ], "consumes": [ "application/json" ], "produces": [ "application/json" ], "paths": { "/api/v1/comments/{id}/like": { "delete": { "summary": "取消点赞评论", "operationId": "UnlikeComment", "responses": { "200": { "description": "A successful response.", "schema": { "$ref": "#/definitions/EmptyResp" } } }, "parameters": [ { "name": "id", "in": "path", "required": true, "type": "string" }, { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/PathId" } } ], "tags": [ "community" ] }, "post": { "summary": "点赞评论", "operationId": "LikeComment", "responses": { "200": { "description": "A successful response.", "schema": { "$ref": "#/definitions/EmptyResp" } } }, "parameters": [ { "name": "id", "in": "path", "required": true, "type": "string" }, { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/PathId" } } ], "tags": [ "community" ] } }, "/api/v1/posts": { "get": { "summary": "获取帖子列表", "operationId": "ListPosts", "responses": { "200": { "description": "A successful response.", "schema": { "$ref": "#/definitions/PostListResp" } } }, "parameters": [ { "name": "offset", "in": "query", "required": true, "type": "integer", "format": "int64", "default": "0" }, { "name": "limit", "in": "query", "required": true, "type": "integer", "format": "int64", "default": "20" }, { "name": "tags", "in": "query", "required": false, "type": "string" }, { "name": "sortBy", "in": "query", "required": false, "type": "string" } ], "tags": [ "community" ], "consumes": [ "multipart/form-data" ] }, "post": { "summary": "发布帖子", "operationId": "CreatePost", "responses": { "200": { "description": "A successful response.", "schema": { "$ref": "#/definitions/Post" } } }, "parameters": [ { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/CreatePostReq" } } ], "tags": [ "community" ] } }, "/api/v1/posts/{id}": { "get": { "summary": "获取帖子详情", "operationId": "GetPost", "responses": { "200": { "description": "A successful response.", "schema": { "$ref": "#/definitions/Post" } } }, "parameters": [ { "name": "id", "in": "path", "required": true, "type": "string" } ], "tags": [ "community" ] } }, "/api/v1/posts/{id}/comments": { "get": { "summary": "获取帖子评论", "operationId": "ListComments", "responses": { "200": { "description": "A successful response.", "schema": { "$ref": "#/definitions/CommentListResp" } } }, "parameters": [ { "name": "id", "in": "path", "required": true, "type": "string" }, { "name": "id", "in": "query", "required": true, "type": "integer", "format": "int64" }, { "name": "offset", "in": "query", "required": true, "type": "integer", "format": "int64", "default": "0" }, { "name": "limit", "in": "query", "required": true, "type": "integer", "format": "int64", "default": "20" } ], "tags": [ "community" ] }, "post": { "summary": "发表评论", "operationId": "CreateComment", "responses": { "200": { "description": "A successful response.", "schema": { "$ref": "#/definitions/Comment" } } }, "parameters": [ { "name": "id", "in": "path", "required": true, "type": "string" }, { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/CreateCommentReq" } } ], "tags": [ "community" ] } }, "/api/v1/posts/{id}/like": { "delete": { "summary": "取消点赞帖子", "operationId": "UnlikePost", "responses": { "200": { "description": "A successful response.", "schema": { "$ref": "#/definitions/EmptyResp" } } }, "parameters": [ { "name": "id", "in": "path", "required": true, "type": "string" }, { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/PathId" } } ], "tags": [ "community" ] }, "post": { "summary": "点赞帖子", "operationId": "LikePost", "responses": { "200": { "description": "A successful response.", "schema": { "$ref": "#/definitions/EmptyResp" } } }, "parameters": [ { "name": "id", "in": "path", "required": true, "type": "string" }, { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/PathId" } } ], "tags": [ "community" ] } }, "/api/v1/posts/{id}/pin": { "delete": { "summary": "取消置顶", "operationId": "UnpinPost", "responses": { "200": { "description": "A successful response.", "schema": { "$ref": "#/definitions/EmptyResp" } } }, "parameters": [ { "name": "id", "in": "path", "required": true, "type": "string" }, { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/PathId" } } ], "tags": [ "community" ] }, "post": { "summary": "置顶帖子", "operationId": "PinPost", "responses": { "200": { "description": "A successful response.", "schema": { "$ref": "#/definitions/EmptyResp" } } }, "parameters": [ { "name": "id", "in": "path", "required": true, "type": "string" }, { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/PathId" } } ], "tags": [ "community" ] } }, "/api/v1/users/{id}/posts": { "get": { "summary": "获取用户帖子", "operationId": "ListUserPosts", "responses": { "200": { "description": "A successful response.", "schema": { "$ref": "#/definitions/PostListResp" } } }, "parameters": [ { "name": "id", "in": "path", "required": true, "type": "string" }, { "name": "id", "in": "query", "required": true, "type": "integer", "format": "int64" }, { "name": "offset", "in": "query", "required": true, "type": "integer", "format": "int64", "default": "0" }, { "name": "limit", "in": "query", "required": true, "type": "integer", "format": "int64", "default": "20" } ], "tags": [ "community" ] } } }, "definitions": { "Comment": { "type": "object", "properties": { "id": { "type": "integer", "format": "int64" }, "content": { "type": "string" }, "author": { "$ref": "#/definitions/UserProfile" }, "likeCount": { "type": "integer", "format": "int64" }, "liked": { "type": "boolean", "format": "boolean" }, "createdAt": { "type": "string" } }, "title": "Comment", "required": [ "id", "content", "author", "likeCount", "liked", "createdAt" ] }, "CommentListResp": { "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/definitions/Comment" } }, "meta": { "$ref": "#/definitions/PageMeta" } }, "title": "CommentListResp", "required": [ "items", "meta" ] }, "CreateCommentReq": { "type": "object", "properties": { "postId": { "type": "integer", "format": "int64" }, "content": { "type": "string" } }, "title": "CreateCommentReq", "required": [ "-", "content" ] }, "CreatePostReq": { "type": "object", "properties": { "title": { "type": "string" }, "content": { "type": "string" }, "images": { "type": "array", "items": { "type": "string" } }, "tags": { "type": "array", "items": { "type": "string" } }, "linkedOrderId": { "type": "string" } }, "title": "CreatePostReq", "required": [ "title", "content", "images", "tags" ] }, "EmptyResp": { "type": "object", "title": "EmptyResp" }, "ListCommentsReq": { "type": "object", "properties": { "offset": { "type": "integer", "format": "int64", "default": "0" }, "limit": { "type": "integer", "format": "int64", "default": "20" } }, "title": "ListCommentsReq" }, "PageMeta": { "type": "object", "properties": { "total": { "type": "integer", "format": "int64" }, "offset": { "type": "integer", "format": "int64" }, "limit": { "type": "integer", "format": "int64" } }, "title": "PageMeta", "required": [ "total", "offset", "limit" ] }, "PageReq": { "type": "object", "properties": { "offset": { "type": "integer", "format": "int64", "default": "0" }, "limit": { "type": "integer", "format": "int64", "default": "20" } }, "title": "PageReq", "required": [ "offset", "limit" ] }, "PathId": { "type": "object", "title": "PathId" }, "Post": { "type": "object", "properties": { "id": { "type": "integer", "format": "int64" }, "title": { "type": "string" }, "content": { "type": "string" }, "images": { "type": "array", "items": { "type": "string" } }, "tags": { "type": "array", "items": { "type": "string" } }, "linkedOrderId": { "type": "integer", "format": "int64" }, "pinned": { "type": "boolean", "format": "boolean" }, "likeCount": { "type": "integer", "format": "int64" }, "commentCount": { "type": "integer", "format": "int64" }, "liked": { "type": "boolean", "format": "boolean" }, "author": { "$ref": "#/definitions/UserProfile" }, "createdAt": { "type": "string" } }, "title": "Post", "required": [ "id", "title", "content", "images", "tags", "pinned", "likeCount", "commentCount", "liked", "author", "createdAt" ] }, "PostListReq": { "type": "object", "properties": { "offset": { "type": "integer", "format": "int64", "default": "0" }, "limit": { "type": "integer", "format": "int64", "default": "20" }, "tags": { "type": "string" }, "sortBy": { "type": "string" } }, "title": "PostListReq" }, "PostListResp": { "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/definitions/Post" } }, "meta": { "$ref": "#/definitions/PageMeta" } }, "title": "PostListResp", "required": [ "items", "meta" ] }, "SimpleUser": { "type": "object", "properties": { "id": { "type": "string" }, "nickname": { "type": "string" }, "avatar": { "type": "string" } }, "title": "SimpleUser", "required": [ "id", "nickname", "avatar" ] }, "UserProfile": { "type": "object", "properties": { "id": { "type": "string" }, "username": { "type": "string" }, "nickname": { "type": "string" }, "avatar": { "type": "string" }, "role": { "type": "string", "description": " consumer, player, owner, admin" }, "verifiedRoles": { "type": "array", "items": { "type": "string" } }, "verificationStatus": { "type": "object" }, "phone": { "type": "string" }, "bio": { "type": "string" }, "createdAt": { "type": "string" } }, "title": "UserProfile", "required": [ "id", "username", "nickname", "avatar", "role", "verifiedRoles", "verificationStatus", "createdAt" ] } }, "securityDefinitions": { "apiKey": { "type": "apiKey", "description": "Enter JWT Bearer token **_only_**", "name": "Authorization", "in": "header" } } }