{ "openapi": "3.0.1", "info": { "title": "Halo", "version": "2.17.0-SNAPSHOT" }, "servers": [ { "url": "http://localhost:8091", "description": "Generated server url" } ], "security": [ { "basicAuth": [], "bearerAuth": [] } ], "paths": { "/apis/api.halo.run/v1alpha1/comments": { "get": { "description": "List comments.", "operationId": "ListComments", "parameters": [ { "description": "Page number. Default is 0.", "in": "query", "name": "page", "schema": { "type": "integer", "format": "int32" } }, { "description": "Size number. Default is 0.", "in": "query", "name": "size", "schema": { "type": "integer", "format": "int32" } }, { "description": "Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.", "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string" } } }, { "description": "The comment subject group.", "in": "query", "name": "group", "schema": { "type": "string" } }, { "description": "The comment subject version.", "in": "query", "name": "version", "required": true, "schema": { "type": "string" } }, { "description": "The comment subject kind.", "in": "query", "name": "kind", "required": true, "schema": { "type": "string" } }, { "description": "The comment subject name.", "in": "query", "name": "name", "required": true, "schema": { "type": "string" } }, { "description": "Whether to include replies. Default is false.", "in": "query", "name": "withReplies", "schema": { "type": "boolean" } }, { "description": "Reply size of the comment, default is 10, only works when withReplies is true.", "in": "query", "name": "replySize", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "default": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/CommentWithReplyVoList" } } }, "description": "default response" } }, "tags": [ "CommentV1alpha1Public" ] }, "post": { "description": "Create a comment.", "operationId": "CreateComment", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CommentRequest" } } }, "required": true }, "responses": { "default": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/Comment" } } }, "description": "default response" } }, "tags": [ "CommentV1alpha1Public" ] } }, "/apis/api.halo.run/v1alpha1/comments/{name}": { "get": { "description": "Get a comment.", "operationId": "GetComment", "parameters": [ { "in": "path", "name": "name", "required": true, "schema": { "type": "string" } } ], "responses": { "default": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/CommentVoList" } } }, "description": "default response" } }, "tags": [ "CommentV1alpha1Public" ] } }, "/apis/api.halo.run/v1alpha1/comments/{name}/reply": { "get": { "description": "List comment replies.", "operationId": "ListCommentReplies", "parameters": [ { "in": "path", "name": "name", "required": true, "schema": { "type": "string" } }, { "description": "Page number. Default is 0.", "in": "query", "name": "page", "schema": { "type": "integer", "format": "int32" } }, { "description": "Size number. Default is 0.", "in": "query", "name": "size", "schema": { "type": "integer", "format": "int32" } } ], "responses": { "default": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ReplyVoList" } } }, "description": "default response" } }, "tags": [ "CommentV1alpha1Public" ] }, "post": { "description": "Create a reply.", "operationId": "CreateReply", "parameters": [ { "in": "path", "name": "name", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReplyRequest" } } }, "required": true }, "responses": { "default": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/Reply" } } }, "description": "default response" } }, "tags": [ "CommentV1alpha1Public" ] } }, "/apis/api.halo.run/v1alpha1/indices/-/search": { "post": { "description": "Search indices.", "operationId": "IndicesSearch", "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/SearchOption" } } }, "description": "Please note that the \"filterPublished\", \"filterExposed\" and \"filterRecycled\" fields are ignored in this endpoint." }, "responses": { "default": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/SearchResult" } } }, "description": "default response" } }, "tags": [ "IndexV1alpha1Public" ] } }, "/apis/api.halo.run/v1alpha1/indices/post": { "get": { "deprecated": true, "description": "Search posts with fuzzy query. This method is deprecated, please use POST /indices/-/search instead.", "operationId": "SearchPost", "parameters": [ { "description": "Keyword to search", "in": "query", "name": "keyword", "required": true, "schema": { "type": "string" } }, { "description": "Limit of search results", "in": "query", "name": "limit", "schema": { "type": "integer", "format": "int32" } }, { "description": "Highlight pre tag", "in": "query", "name": "highlightPreTag", "schema": { "type": "string" } }, { "description": "Highlight post tag", "in": "query", "name": "highlightPostTag", "schema": { "type": "string" } } ], "responses": { "default": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/SearchResult" } } }, "description": "default response" } }, "tags": [ "IndexV1alpha1Public" ] } }, "/apis/api.halo.run/v1alpha1/menus/-": { "get": { "description": "Gets primary menu.", "operationId": "queryPrimaryMenu", "responses": { "default": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/MenuVo" } } }, "description": "default response" } }, "tags": [ "MenuV1alpha1Public" ] } }, "/apis/api.halo.run/v1alpha1/menus/{name}": { "get": { "description": "Gets menu by name.", "operationId": "queryMenuByName", "parameters": [ { "description": "Menu name", "in": "path", "name": "name", "required": true, "schema": { "type": "string" } } ], "responses": { "default": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/MenuVo" } } }, "description": "default response" } }, "tags": [ "MenuV1alpha1Public" ] } }, "/apis/api.halo.run/v1alpha1/stats/-": { "get": { "description": "Gets site stats", "operationId": "queryStats", "responses": { "default": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/SiteStatsVo" } } }, "description": "default response" } }, "tags": [ "SystemV1alpha1Public" ] } }, "/apis/api.halo.run/v1alpha1/trackers/counter": { "post": { "description": "Count an extension resource visits.", "operationId": "count", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CounterRequest" } } }, "required": true }, "responses": { "default": { "content": {}, "description": "default response" } }, "tags": [ "MetricsV1alpha1Public" ] } }, "/apis/api.halo.run/v1alpha1/trackers/downvote": { "post": { "description": "Downvote an extension resource.", "operationId": "downvote", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VoteRequest" } } }, "required": true }, "responses": { "default": { "content": {}, "description": "default response" } }, "tags": [ "MetricsV1alpha1Public" ] } }, "/apis/api.halo.run/v1alpha1/trackers/upvote": { "post": { "description": "Upvote an extension resource.", "operationId": "upvote", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VoteRequest" } } }, "required": true }, "responses": { "default": { "content": {}, "description": "default response" } }, "tags": [ "MetricsV1alpha1Public" ] } }, "/apis/api.halo.run/v1alpha1/users/-/send-password-reset-email": { "post": { "description": "Send password reset email when forgot password", "operationId": "SendPasswordResetEmail", "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/PasswordResetEmailRequest" } } }, "required": true }, "responses": { "204 NO_CONTENT": { "content": {}, "description": "default response" } }, "tags": [ "UserV1alpha1Public" ] } }, "/apis/api.halo.run/v1alpha1/users/-/send-register-verify-email": { "post": { "description": "Send registration verification email, which can be called when mustVerifyEmailOnRegistration in user settings is true", "operationId": "SendRegisterVerifyEmail", "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/RegisterVerifyEmailRequest" } } }, "required": true }, "responses": { "204 NO_CONTENT": { "content": {}, "description": "default response" } }, "tags": [ "UserV1alpha1Public" ] } }, "/apis/api.halo.run/v1alpha1/users/-/signup": { "post": { "description": "Sign up a new user", "operationId": "SignUp", "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/SignUpRequest" } } }, "required": true }, "responses": { "default": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/User" } } }, "description": "default response" } }, "tags": [ "UserV1alpha1Public" ] } }, "/apis/api.halo.run/v1alpha1/users/{name}/reset-password": { "put": { "description": "Reset password by token", "operationId": "ResetPasswordByToken", "parameters": [ { "description": "The name of the user", "in": "path", "name": "name", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ResetPasswordRequest" } } }, "required": true }, "responses": { "204 NO_CONTENT": { "content": {}, "description": "default response" } }, "tags": [ "UserV1alpha1Public" ] } } }, "components": { "schemas": { "AddOperation": { "required": [ "op", "path", "value" ], "type": "object", "properties": { "op": { "type": "string", "enum": [ "add" ] }, "path": { "pattern": "^(/[^/~]*(~[01][^/~]*)*)*$", "type": "string", "description": "A JSON Pointer path pointing to the location to move/copy from.", "example": "/a/b/c" }, "value": { "description": "Value can be any JSON value" } } }, "Comment": { "required": [ "apiVersion", "kind", "metadata", "spec" ], "type": "object", "properties": { "apiVersion": { "type": "string" }, "kind": { "type": "string" }, "metadata": { "$ref": "#/components/schemas/Metadata" }, "spec": { "$ref": "#/components/schemas/CommentSpec" }, "status": { "$ref": "#/components/schemas/CommentStatus" } } }, "CommentEmailOwner": { "type": "object", "properties": { "avatar": { "type": "string" }, "displayName": { "type": "string" }, "email": { "type": "string" }, "website": { "type": "string" } } }, "CommentOwner": { "required": [ "kind", "name" ], "type": "object", "properties": { "annotations": { "type": "object", "additionalProperties": { "type": "string" } }, "displayName": { "type": "string" }, "kind": { "minLength": 1, "type": "string" }, "name": { "maxLength": 64, "type": "string" } } }, "CommentRequest": { "required": [ "content", "raw", "subjectRef" ], "type": "object", "properties": { "allowNotification": { "type": "boolean", "default": false }, "content": { "minLength": 1, "type": "string" }, "owner": { "$ref": "#/components/schemas/CommentEmailOwner" }, "raw": { "minLength": 1, "type": "string" }, "subjectRef": { "$ref": "#/components/schemas/Ref" } } }, "CommentSpec": { "required": [ "allowNotification", "approved", "content", "hidden", "owner", "priority", "raw", "subjectRef", "top" ], "type": "object", "properties": { "allowNotification": { "type": "boolean", "default": true }, "approved": { "type": "boolean", "default": false }, "approvedTime": { "type": "string", "format": "date-time" }, "content": { "minLength": 1, "type": "string" }, "creationTime": { "type": "string", "format": "date-time" }, "hidden": { "type": "boolean", "default": false }, "ipAddress": { "type": "string" }, "lastReadTime": { "type": "string", "format": "date-time" }, "owner": { "$ref": "#/components/schemas/CommentOwner" }, "priority": { "type": "integer", "format": "int32", "default": 0 }, "raw": { "minLength": 1, "type": "string" }, "subjectRef": { "$ref": "#/components/schemas/Ref" }, "top": { "type": "boolean", "default": false }, "userAgent": { "type": "string" } } }, "CommentStatsVo": { "type": "object", "properties": { "upvote": { "type": "integer", "format": "int32" } } }, "CommentStatus": { "type": "object", "properties": { "hasNewReply": { "type": "boolean" }, "lastReplyTime": { "type": "string", "format": "date-time" }, "observedVersion": { "type": "integer", "format": "int64" }, "replyCount": { "type": "integer", "format": "int32" }, "unreadReplyCount": { "type": "integer", "format": "int32" }, "visibleReplyCount": { "type": "integer", "format": "int32" } } }, "CommentVo": { "required": [ "metadata", "owner", "spec", "stats" ], "type": "object", "properties": { "metadata": { "$ref": "#/components/schemas/Metadata" }, "owner": { "$ref": "#/components/schemas/OwnerInfo" }, "spec": { "$ref": "#/components/schemas/CommentSpec" }, "stats": { "$ref": "#/components/schemas/CommentStatsVo" }, "status": { "$ref": "#/components/schemas/CommentStatus" } }, "description": "A chunk of items." }, "CommentVoList": { "required": [ "first", "hasNext", "hasPrevious", "items", "last", "page", "size", "total", "totalPages" ], "type": "object", "properties": { "first": { "type": "boolean", "description": "Indicates whether current page is the first page." }, "hasNext": { "type": "boolean", "description": "Indicates whether current page has previous page." }, "hasPrevious": { "type": "boolean", "description": "Indicates whether current page has previous page." }, "items": { "type": "array", "description": "A chunk of items.", "items": { "$ref": "#/components/schemas/CommentVo" } }, "last": { "type": "boolean", "description": "Indicates whether current page is the last page." }, "page": { "type": "integer", "description": "Page number, starts from 1. If not set or equal to 0, it means no pagination.", "format": "int32" }, "size": { "type": "integer", "description": "Size of each page. If not set or equal to 0, it means no pagination.", "format": "int32" }, "total": { "type": "integer", "description": "Total elements.", "format": "int64" }, "totalPages": { "type": "integer", "description": "Indicates total pages.", "format": "int64" } } }, "CommentWithReplyVo": { "required": [ "metadata", "owner", "spec", "stats" ], "type": "object", "properties": { "metadata": { "$ref": "#/components/schemas/Metadata" }, "owner": { "$ref": "#/components/schemas/OwnerInfo" }, "replies": { "$ref": "#/components/schemas/ListResultReplyVo" }, "spec": { "$ref": "#/components/schemas/CommentSpec" }, "stats": { "$ref": "#/components/schemas/CommentStatsVo" }, "status": { "$ref": "#/components/schemas/CommentStatus" } }, "description": "A chunk of items." }, "CommentWithReplyVoList": { "required": [ "first", "hasNext", "hasPrevious", "items", "last", "page", "size", "total", "totalPages" ], "type": "object", "properties": { "first": { "type": "boolean", "description": "Indicates whether current page is the first page." }, "hasNext": { "type": "boolean", "description": "Indicates whether current page has previous page." }, "hasPrevious": { "type": "boolean", "description": "Indicates whether current page has previous page." }, "items": { "type": "array", "description": "A chunk of items.", "items": { "$ref": "#/components/schemas/CommentWithReplyVo" } }, "last": { "type": "boolean", "description": "Indicates whether current page is the last page." }, "page": { "type": "integer", "description": "Page number, starts from 1. If not set or equal to 0, it means no pagination.", "format": "int32" }, "size": { "type": "integer", "description": "Size of each page. If not set or equal to 0, it means no pagination.", "format": "int32" }, "total": { "type": "integer", "description": "Total elements.", "format": "int64" }, "totalPages": { "type": "integer", "description": "Indicates total pages.", "format": "int64" } } }, "CopyOperation": { "required": [ "op", "from", "path" ], "type": "object", "properties": { "from": { "pattern": "^(/[^/~]*(~[01][^/~]*)*)*$", "type": "string", "description": "A JSON Pointer path pointing to the location to move/copy from.", "example": "/a/b/c" }, "op": { "type": "string", "enum": [ "copy" ] }, "path": { "pattern": "^(/[^/~]*(~[01][^/~]*)*)*$", "type": "string", "description": "A JSON Pointer path pointing to the location to move/copy from.", "example": "/a/b/c" } } }, "CounterRequest": { "type": "object", "properties": { "group": { "type": "string" }, "hostname": { "type": "string" }, "language": { "type": "string" }, "name": { "type": "string" }, "plural": { "type": "string" }, "referrer": { "type": "string" }, "screen": { "type": "string" } } }, "HaloDocument": { "required": [ "content", "id", "metadataName", "ownerName", "permalink", "title", "type" ], "type": "object", "properties": { "annotations": { "type": "object", "additionalProperties": { "type": "string" } }, "categories": { "type": "array", "items": { "type": "string" } }, "content": { "type": "string" }, "creationTimestamp": { "type": "string", "format": "date-time" }, "description": { "type": "string" }, "exposed": { "type": "boolean" }, "id": { "type": "string" }, "metadataName": { "type": "string" }, "ownerName": { "type": "string" }, "permalink": { "type": "string" }, "published": { "type": "boolean" }, "recycled": { "type": "boolean" }, "tags": { "type": "array", "items": { "type": "string" } }, "title": { "type": "string" }, "type": { "type": "string" }, "updateTimestamp": { "type": "string", "format": "date-time" } } }, "JsonPatch": { "minItems": 1, "uniqueItems": true, "type": "array", "description": "JSON schema for JSONPatch operations", "items": { "oneOf": [ { "$ref": "#/components/schemas/AddOperation" }, { "$ref": "#/components/schemas/ReplaceOperation" }, { "$ref": "#/components/schemas/TestOperation" }, { "$ref": "#/components/schemas/RemoveOperation" }, { "$ref": "#/components/schemas/MoveOperation" }, { "$ref": "#/components/schemas/CopyOperation" } ] } }, "ListResultReplyVo": { "required": [ "first", "hasNext", "hasPrevious", "items", "last", "page", "size", "total", "totalPages" ], "type": "object", "properties": { "first": { "type": "boolean", "description": "Indicates whether current page is the first page." }, "hasNext": { "type": "boolean", "description": "Indicates whether current page has previous page." }, "hasPrevious": { "type": "boolean", "description": "Indicates whether current page has previous page." }, "items": { "type": "array", "description": "A chunk of items.", "items": { "$ref": "#/components/schemas/ReplyVo" } }, "last": { "type": "boolean", "description": "Indicates whether current page is the last page." }, "page": { "type": "integer", "description": "Page number, starts from 1. If not set or equal to 0, it means no pagination.", "format": "int32" }, "size": { "type": "integer", "description": "Size of each page. If not set or equal to 0, it means no pagination.", "format": "int32" }, "total": { "type": "integer", "description": "Total elements.", "format": "int64" }, "totalPages": { "type": "integer", "description": "Indicates total pages.", "format": "int64" } } }, "LoginHistory": { "required": [ "loginAt", "sourceIp", "successful", "userAgent" ], "type": "object", "properties": { "loginAt": { "type": "string", "format": "date-time" }, "reason": { "type": "string" }, "sourceIp": { "type": "string" }, "successful": { "type": "boolean" }, "userAgent": { "type": "string" } } }, "MenuItemSpec": { "type": "object", "properties": { "children": { "uniqueItems": true, "type": "array", "description": "Children of this menu item", "items": { "type": "string", "description": "The name of menu item child" } }, "displayName": { "type": "string", "description": "The display name of menu item." }, "href": { "type": "string", "description": "The href of this menu item." }, "priority": { "type": "integer", "description": "The priority is for ordering.", "format": "int32" }, "target": { "type": "string", "description": "The \u003ca\u003e target attribute of this menu item.", "enum": [ "_blank", "_self", "_parent", "_top" ] }, "targetRef": { "$ref": "#/components/schemas/Ref" } } }, "MenuItemStatus": { "type": "object", "properties": { "displayName": { "type": "string", "description": "Calculated Display name of menu item." }, "href": { "type": "string", "description": "Calculated href of manu item." } } }, "MenuItemVo": { "required": [ "metadata" ], "type": "object", "properties": { "displayName": { "type": "string" }, "metadata": { "$ref": "#/components/schemas/Metadata" }, "parentName": { "type": "string" }, "spec": { "$ref": "#/components/schemas/MenuItemSpec" }, "status": { "$ref": "#/components/schemas/MenuItemStatus" } } }, "MenuSpec": { "required": [ "displayName" ], "type": "object", "properties": { "displayName": { "type": "string", "description": "The display name of the menu." }, "menuItems": { "uniqueItems": true, "type": "array", "description": "Names of menu children below this menu.", "items": { "type": "string", "description": "Names of menu children below this menu." } } } }, "MenuVo": { "required": [ "metadata" ], "type": "object", "properties": { "menuItems": { "type": "array", "items": { "$ref": "#/components/schemas/MenuItemVo" } }, "metadata": { "$ref": "#/components/schemas/Metadata" }, "spec": { "$ref": "#/components/schemas/MenuSpec" } } }, "Metadata": { "required": [ "name" ], "type": "object", "properties": { "annotations": { "type": "object", "additionalProperties": { "type": "string" } }, "creationTimestamp": { "type": "string", "format": "date-time", "nullable": true }, "deletionTimestamp": { "type": "string", "format": "date-time", "nullable": true }, "finalizers": { "uniqueItems": true, "type": "array", "nullable": true, "items": { "type": "string", "nullable": true } }, "generateName": { "type": "string", "description": "The name field will be generated automatically according to the given generateName field" }, "labels": { "type": "object", "additionalProperties": { "type": "string" } }, "name": { "type": "string", "description": "Metadata name" }, "version": { "type": "integer", "format": "int64", "nullable": true } } }, "MoveOperation": { "required": [ "op", "from", "path" ], "type": "object", "properties": { "from": { "pattern": "^(/[^/~]*(~[01][^/~]*)*)*$", "type": "string", "description": "A JSON Pointer path pointing to the location to move/copy from.", "example": "/a/b/c" }, "op": { "type": "string", "enum": [ "move" ] }, "path": { "pattern": "^(/[^/~]*(~[01][^/~]*)*)*$", "type": "string", "description": "A JSON Pointer path pointing to the location to move/copy from.", "example": "/a/b/c" } } }, "OwnerInfo": { "type": "object", "properties": { "avatar": { "type": "string" }, "displayName": { "type": "string" }, "email": { "type": "string" }, "kind": { "type": "string" }, "name": { "type": "string" } } }, "PasswordResetEmailRequest": { "required": [ "email", "username" ], "type": "object", "properties": { "email": { "type": "string" }, "username": { "type": "string" } } }, "Ref": { "required": [ "name" ], "type": "object", "properties": { "group": { "type": "string", "description": "Extension group" }, "kind": { "type": "string", "description": "Extension kind" }, "name": { "type": "string", "description": "Extension name. This field is mandatory" }, "version": { "type": "string", "description": "Extension version" } }, "description": "Extension reference object. The name is mandatory" }, "RegisterVerifyEmailRequest": { "required": [ "email" ], "type": "object", "properties": { "email": { "type": "string" } } }, "RemoveOperation": { "required": [ "op", "path" ], "type": "object", "properties": { "op": { "type": "string", "enum": [ "remove" ] }, "path": { "pattern": "^(/[^/~]*(~[01][^/~]*)*)*$", "type": "string", "description": "A JSON Pointer path pointing to the location to move/copy from.", "example": "/a/b/c" } } }, "ReplaceOperation": { "required": [ "op", "path", "value" ], "type": "object", "properties": { "op": { "type": "string", "enum": [ "replace" ] }, "path": { "pattern": "^(/[^/~]*(~[01][^/~]*)*)*$", "type": "string", "description": "A JSON Pointer path pointing to the location to move/copy from.", "example": "/a/b/c" }, "value": { "description": "Value can be any JSON value" } } }, "Reply": { "required": [ "apiVersion", "kind", "metadata", "spec", "status" ], "type": "object", "properties": { "apiVersion": { "type": "string" }, "kind": { "type": "string" }, "metadata": { "$ref": "#/components/schemas/Metadata" }, "spec": { "$ref": "#/components/schemas/ReplySpec" }, "status": { "$ref": "#/components/schemas/ReplyStatus" } } }, "ReplyRequest": { "required": [ "content", "raw" ], "type": "object", "properties": { "allowNotification": { "type": "boolean", "default": false }, "content": { "minLength": 1, "type": "string" }, "owner": { "$ref": "#/components/schemas/CommentEmailOwner" }, "quoteReply": { "type": "string" }, "raw": { "minLength": 1, "type": "string" } } }, "ReplySpec": { "required": [ "allowNotification", "approved", "commentName", "content", "hidden", "owner", "priority", "raw", "top" ], "type": "object", "properties": { "allowNotification": { "type": "boolean", "default": true }, "approved": { "type": "boolean", "default": false }, "approvedTime": { "type": "string", "format": "date-time" }, "commentName": { "minLength": 1, "type": "string" }, "content": { "minLength": 1, "type": "string" }, "creationTime": { "type": "string", "format": "date-time" }, "hidden": { "type": "boolean", "default": false }, "ipAddress": { "type": "string" }, "owner": { "$ref": "#/components/schemas/CommentOwner" }, "priority": { "type": "integer", "format": "int32", "default": 0 }, "quoteReply": { "type": "string" }, "raw": { "minLength": 1, "type": "string" }, "top": { "type": "boolean", "default": false }, "userAgent": { "type": "string" } } }, "ReplyStatus": { "type": "object", "properties": { "observedVersion": { "type": "integer", "format": "int64" } } }, "ReplyVo": { "required": [ "metadata", "owner", "spec", "stats" ], "type": "object", "properties": { "metadata": { "$ref": "#/components/schemas/Metadata" }, "owner": { "$ref": "#/components/schemas/OwnerInfo" }, "spec": { "$ref": "#/components/schemas/ReplySpec" }, "stats": { "$ref": "#/components/schemas/CommentStatsVo" } }, "description": "A chunk of items." }, "ReplyVoList": { "required": [ "first", "hasNext", "hasPrevious", "items", "last", "page", "size", "total", "totalPages" ], "type": "object", "properties": { "first": { "type": "boolean", "description": "Indicates whether current page is the first page." }, "hasNext": { "type": "boolean", "description": "Indicates whether current page has previous page." }, "hasPrevious": { "type": "boolean", "description": "Indicates whether current page has previous page." }, "items": { "type": "array", "description": "A chunk of items.", "items": { "$ref": "#/components/schemas/ReplyVo" } }, "last": { "type": "boolean", "description": "Indicates whether current page is the last page." }, "page": { "type": "integer", "description": "Page number, starts from 1. If not set or equal to 0, it means no pagination.", "format": "int32" }, "size": { "type": "integer", "description": "Size of each page. If not set or equal to 0, it means no pagination.", "format": "int32" }, "total": { "type": "integer", "description": "Total elements.", "format": "int64" }, "totalPages": { "type": "integer", "description": "Indicates total pages.", "format": "int64" } } }, "ResetPasswordRequest": { "required": [ "newPassword", "token" ], "type": "object", "properties": { "newPassword": { "minLength": 6, "type": "string" }, "token": { "type": "string" } } }, "SearchOption": { "required": [ "keyword" ], "type": "object", "properties": { "annotations": { "type": "object", "additionalProperties": { "type": "string" } }, "filterExposed": { "type": "boolean" }, "filterPublished": { "type": "boolean" }, "filterRecycled": { "type": "boolean" }, "highlightPostTag": { "type": "string" }, "highlightPreTag": { "type": "string" }, "includeCategoryNames": { "type": "array", "items": { "type": "string" } }, "includeOwnerNames": { "type": "array", "items": { "type": "string" } }, "includeTagNames": { "type": "array", "items": { "type": "string" } }, "includeTypes": { "type": "array", "items": { "type": "string" } }, "keyword": { "type": "string" }, "limit": { "maximum": 1000, "minimum": 1, "type": "integer", "format": "int32" } } }, "SearchResult": { "type": "object", "properties": { "hits": { "type": "array", "items": { "$ref": "#/components/schemas/HaloDocument" } }, "keyword": { "type": "string" }, "limit": { "type": "integer", "format": "int32" }, "processingTimeMillis": { "type": "integer", "format": "int64" }, "total": { "type": "integer", "format": "int64" } } }, "SignUpRequest": { "required": [ "password", "user" ], "type": "object", "properties": { "password": { "minLength": 6, "type": "string" }, "user": { "$ref": "#/components/schemas/User" }, "verifyCode": { "maxLength": 6, "minLength": 6, "type": "string" } } }, "SiteStatsVo": { "type": "object", "properties": { "category": { "type": "integer", "format": "int32" }, "comment": { "type": "integer", "format": "int32" }, "post": { "type": "integer", "format": "int32" }, "upvote": { "type": "integer", "format": "int32" }, "visit": { "type": "integer", "format": "int32" } } }, "TestOperation": { "required": [ "op", "path", "value" ], "type": "object", "properties": { "op": { "type": "string", "enum": [ "test" ] }, "path": { "pattern": "^(/[^/~]*(~[01][^/~]*)*)*$", "type": "string", "description": "A JSON Pointer path pointing to the location to move/copy from.", "example": "/a/b/c" }, "value": { "description": "Value can be any JSON value" } } }, "User": { "required": [ "apiVersion", "kind", "metadata", "spec" ], "type": "object", "properties": { "apiVersion": { "type": "string" }, "kind": { "type": "string" }, "metadata": { "$ref": "#/components/schemas/Metadata" }, "spec": { "$ref": "#/components/schemas/UserSpec" }, "status": { "$ref": "#/components/schemas/UserStatus" } } }, "UserSpec": { "required": [ "displayName", "email" ], "type": "object", "properties": { "avatar": { "type": "string" }, "bio": { "type": "string" }, "disabled": { "type": "boolean" }, "displayName": { "type": "string" }, "email": { "type": "string" }, "emailVerified": { "type": "boolean" }, "loginHistoryLimit": { "type": "integer", "format": "int32" }, "password": { "type": "string" }, "phone": { "type": "string" }, "registeredAt": { "type": "string", "format": "date-time" }, "totpEncryptedSecret": { "type": "string" }, "twoFactorAuthEnabled": { "type": "boolean" } } }, "UserStatus": { "type": "object", "properties": { "lastLoginAt": { "type": "string", "format": "date-time" }, "loginHistories": { "type": "array", "items": { "$ref": "#/components/schemas/LoginHistory" } }, "permalink": { "type": "string" } } }, "VoteRequest": { "type": "object", "properties": { "group": { "type": "string" }, "name": { "type": "string" }, "plural": { "type": "string" } } } }, "securitySchemes": { "basicAuth": { "scheme": "basic", "type": "http" }, "bearerAuth": { "bearerFormat": "JWT", "scheme": "bearer", "type": "http" } } } }