{ "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/uc.api.content.halo.run/v1alpha1/attachments": { "post": { "description": "Create attachment for the given post.", "operationId": "CreateAttachmentForPost", "parameters": [ { "description": "Wait for permalink.", "in": "query", "name": "waitForPermalink", "schema": { "type": "boolean" } } ], "requestBody": { "content": { "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PostAttachmentRequest" } } } }, "responses": { "default": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/Attachment" } } }, "description": "default response" } }, "tags": [ "AttachmentV1alpha1Uc" ] } }, "/apis/uc.api.content.halo.run/v1alpha1/posts": { "get": { "description": "List posts owned by the current user.", "operationId": "ListMyPosts", "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": "Label selector. e.g.: hidden!\u003dtrue", "in": "query", "name": "labelSelector", "schema": { "type": "array", "items": { "type": "string" } } }, { "description": "Field selector. e.g.: metadata.name\u003d\u003dhalo", "in": "query", "name": "fieldSelector", "schema": { "type": "array", "items": { "type": "string" } } }, { "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": "Posts filtered by publish phase.", "in": "query", "name": "publishPhase", "schema": { "type": "string", "enum": [ "DRAFT", "PENDING_APPROVAL", "PUBLISHED", "FAILED" ] } }, { "description": "Posts filtered by keyword.", "in": "query", "name": "keyword", "schema": { "type": "string" } }, { "description": "Posts filtered by category including sub-categories.", "in": "query", "name": "categoryWithChildren", "schema": { "type": "string" } } ], "responses": { "default": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/ListedPostList" } } }, "description": "default response" } }, "tags": [ "PostV1alpha1Uc" ] }, "post": { "description": "Create my post. If you want to create a post with content, please set\n annotation: \"content.halo.run/content-json\" into annotations and refer\n to Content for corresponding data type.\n", "operationId": "CreateMyPost", "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/Post" } } } }, "responses": { "default": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/Post" } } }, "description": "default response" } }, "tags": [ "PostV1alpha1Uc" ] } }, "/apis/uc.api.content.halo.run/v1alpha1/posts/{name}": { "get": { "description": "Get post that belongs to the current user.", "operationId": "GetMyPost", "parameters": [ { "description": "Post name", "in": "path", "name": "name", "required": true, "schema": { "type": "string" } } ], "responses": { "default": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/Post" } } }, "description": "default response" } }, "tags": [ "PostV1alpha1Uc" ] }, "put": { "description": "Update my post.", "operationId": "UpdateMyPost", "parameters": [ { "description": "Post name", "in": "path", "name": "name", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/Post" } } } }, "responses": { "default": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/Post" } } }, "description": "default response" } }, "tags": [ "PostV1alpha1Uc" ] } }, "/apis/uc.api.content.halo.run/v1alpha1/posts/{name}/draft": { "get": { "description": "Get my post draft.", "operationId": "GetMyPostDraft", "parameters": [ { "description": "Post name", "in": "path", "name": "name", "required": true, "schema": { "type": "string" } }, { "description": "Should include patched content and raw or not.", "in": "query", "name": "patched", "schema": { "type": "boolean" } } ], "responses": { "default": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/Snapshot" } } }, "description": "default response" } }, "tags": [ "PostV1alpha1Uc" ] }, "put": { "description": "Update draft of my post. Please make sure set annotation:\n\"content.halo.run/content-json\" into annotations and refer to\nContent for corresponding data type.\n", "operationId": "UpdateMyPostDraft", "parameters": [ { "description": "Post name", "in": "path", "name": "name", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/Snapshot" } } } }, "responses": { "default": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/Snapshot" } } }, "description": "default response" } }, "tags": [ "PostV1alpha1Uc" ] } }, "/apis/uc.api.content.halo.run/v1alpha1/posts/{name}/publish": { "put": { "description": "Publish my post.", "operationId": "PublishMyPost", "parameters": [ { "description": "Post name", "in": "path", "name": "name", "required": true, "schema": { "type": "string" } } ], "responses": { "default": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/Post" } } }, "description": "default response" } }, "tags": [ "PostV1alpha1Uc" ] } }, "/apis/uc.api.content.halo.run/v1alpha1/posts/{name}/unpublish": { "put": { "description": "Unpublish my post.", "operationId": "UnpublishMyPost", "parameters": [ { "description": "Post name", "in": "path", "name": "name", "required": true, "schema": { "type": "string" } } ], "responses": { "default": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/Post" } } }, "description": "default response" } }, "tags": [ "PostV1alpha1Uc" ] } }, "/apis/uc.api.content.halo.run/v1alpha1/snapshots/{name}": { "get": { "description": "Get snapshot for one post.", "operationId": "GetSnapshotForPost", "parameters": [ { "description": "Snapshot name.", "in": "path", "name": "name", "required": true, "schema": { "type": "string" } }, { "description": "Post name.", "in": "query", "name": "postName", "required": true, "schema": { "type": "string" } }, { "description": "Should include patched content and raw or not.", "in": "query", "name": "patched", "schema": { "type": "boolean" } } ], "responses": { "default": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/Snapshot" } } }, "description": "default response" } }, "tags": [ "SnapshotV1alpha1Uc" ] } }, "/apis/uc.api.security.halo.run/v1alpha1/authentications/two-factor/settings": { "get": { "description": "Get Two-factor authentication settings.", "operationId": "GetTwoFactorAuthenticationSettings", "responses": { "default": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/TwoFactorAuthSettings" } } }, "description": "default response" } }, "tags": [ "TwoFactorAuthV1alpha1Uc" ] } }, "/apis/uc.api.security.halo.run/v1alpha1/authentications/two-factor/settings/disabled": { "put": { "description": "Disable Two-factor authentication", "operationId": "DisableTwoFactor", "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/PasswordRequest" } } } }, "responses": { "default": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/TwoFactorAuthSettings" } } }, "description": "default response" } }, "tags": [ "TwoFactorAuthV1alpha1Uc" ] } }, "/apis/uc.api.security.halo.run/v1alpha1/authentications/two-factor/settings/enabled": { "put": { "description": "Enable Two-factor authentication", "operationId": "EnableTwoFactor", "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/PasswordRequest" } } } }, "responses": { "default": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/TwoFactorAuthSettings" } } }, "description": "default response" } }, "tags": [ "TwoFactorAuthV1alpha1Uc" ] } }, "/apis/uc.api.security.halo.run/v1alpha1/authentications/two-factor/totp": { "post": { "description": "Configure a TOTP", "operationId": "ConfigurerTotp", "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/TotpRequest" } } } }, "responses": { "default": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/TwoFactorAuthSettings" } } }, "description": "default response" } }, "tags": [ "TwoFactorAuthV1alpha1Uc" ] } }, "/apis/uc.api.security.halo.run/v1alpha1/authentications/two-factor/totp/-": { "delete": { "operationId": "DeleteTotp", "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/PasswordRequest" } } } }, "responses": { "default": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/TwoFactorAuthSettings" } } }, "description": "default response" } }, "tags": [ "TwoFactorAuthV1alpha1Uc" ] } }, "/apis/uc.api.security.halo.run/v1alpha1/authentications/two-factor/totp/auth-link": { "get": { "description": "Get TOTP auth link, including secret", "operationId": "GetTotpAuthLink", "responses": { "default": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/TotpAuthLinkResponse" } } }, "description": "default response" } }, "tags": [ "TwoFactorAuthV1alpha1Uc" ] } }, "/apis/uc.api.security.halo.run/v1alpha1/personalaccesstokens": { "get": { "description": "Obtain PAT list.", "operationId": "ObtainPats", "responses": { "default": { "content": { "*/*": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PersonalAccessToken" } } } }, "description": "default response" } }, "tags": [ "PersonalAccessTokenV1alpha1Uc" ] }, "post": { "description": "Generate a PAT.", "operationId": "GeneratePat", "requestBody": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/PersonalAccessToken" } } }, "required": true }, "responses": { "default": { "content": { "*/*": { "schema": { "$ref": "#/components/schemas/PersonalAccessToken" } } }, "description": "default response" } }, "tags": [ "PersonalAccessTokenV1alpha1Uc" ] } }, "/apis/uc.api.security.halo.run/v1alpha1/personalaccesstokens/{name}": { "delete": { "description": "Delete a PAT", "operationId": "DeletePat", "parameters": [ { "in": "path", "name": "name", "required": true, "schema": { "type": "string" } } ], "responses": {}, "tags": [ "PersonalAccessTokenV1alpha1Uc" ] }, "get": { "description": "Obtain a PAT.", "operationId": "ObtainPat", "parameters": [ { "in": "path", "name": "name", "required": true, "schema": { "type": "string" } } ], "responses": {}, "tags": [ "PersonalAccessTokenV1alpha1Uc" ] } }, "/apis/uc.api.security.halo.run/v1alpha1/personalaccesstokens/{name}/actions/restoration": { "put": { "description": "Restore a PAT.", "operationId": "RestorePat", "parameters": [ { "in": "path", "name": "name", "required": true, "schema": { "type": "string" } } ], "responses": {}, "tags": [ "PersonalAccessTokenV1alpha1Uc" ] } }, "/apis/uc.api.security.halo.run/v1alpha1/personalaccesstokens/{name}/actions/revocation": { "put": { "description": "Revoke a PAT", "operationId": "RevokePat", "parameters": [ { "in": "path", "name": "name", "required": true, "schema": { "type": "string" } } ], "responses": {}, "tags": [ "PersonalAccessTokenV1alpha1Uc" ] } } }, "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" } } }, "Attachment": { "required": [ "apiVersion", "kind", "metadata", "spec" ], "type": "object", "properties": { "apiVersion": { "type": "string" }, "kind": { "type": "string" }, "metadata": { "$ref": "#/components/schemas/Metadata" }, "spec": { "$ref": "#/components/schemas/AttachmentSpec" }, "status": { "$ref": "#/components/schemas/AttachmentStatus" } } }, "AttachmentSpec": { "type": "object", "properties": { "displayName": { "type": "string", "description": "Display name of attachment" }, "groupName": { "type": "string", "description": "Group name" }, "mediaType": { "type": "string", "description": "Media type of attachment" }, "ownerName": { "type": "string", "description": "Name of User who uploads the attachment" }, "policyName": { "type": "string", "description": "Policy name" }, "size": { "minimum": 0, "type": "integer", "description": "Size of attachment. Unit is Byte", "format": "int64" }, "tags": { "uniqueItems": true, "type": "array", "description": "Tags of attachment", "items": { "type": "string", "description": "Tag name" } } } }, "AttachmentStatus": { "type": "object", "properties": { "permalink": { "type": "string", "description": "Permalink of attachment.\nIf it is in local storage, the public URL will be set.\nIf it is in s3 storage, the Object URL will be set.\n" } } }, "Category": { "required": [ "apiVersion", "kind", "metadata", "spec" ], "type": "object", "properties": { "apiVersion": { "type": "string" }, "kind": { "type": "string" }, "metadata": { "$ref": "#/components/schemas/Metadata" }, "spec": { "$ref": "#/components/schemas/CategorySpec" }, "status": { "$ref": "#/components/schemas/CategoryStatus" } } }, "CategorySpec": { "required": [ "displayName", "priority", "slug" ], "type": "object", "properties": { "children": { "type": "array", "items": { "type": "string" } }, "cover": { "type": "string" }, "description": { "type": "string" }, "displayName": { "minLength": 1, "type": "string" }, "postTemplate": { "maxLength": 255, "type": "string" }, "preventParentPostCascadeQuery": { "type": "boolean" }, "priority": { "type": "integer", "format": "int32", "default": 0 }, "slug": { "minLength": 1, "type": "string" }, "template": { "maxLength": 255, "type": "string" } } }, "CategoryStatus": { "type": "object", "properties": { "permalink": { "type": "string" }, "postCount": { "type": "integer", "format": "int32" }, "visiblePostCount": { "type": "integer", "format": "int32" } } }, "Condition": { "required": [ "lastTransitionTime", "status", "type" ], "type": "object", "properties": { "lastTransitionTime": { "type": "string", "format": "date-time" }, "message": { "maxLength": 32768, "type": "string" }, "reason": { "maxLength": 1024, "pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$", "type": "string" }, "status": { "type": "string", "enum": [ "TRUE", "FALSE", "UNKNOWN" ] }, "type": { "maxLength": 316, "pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$", "type": "string" } } }, "Contributor": { "type": "object", "properties": { "avatar": { "type": "string" }, "displayName": { "type": "string" }, "name": { "type": "string" } } }, "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" } } }, "Excerpt": { "required": [ "autoGenerate" ], "type": "object", "properties": { "autoGenerate": { "type": "boolean", "default": true }, "raw": { "type": "string" } } }, "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" } ] } }, "ListedPost": { "required": [ "categories", "contributors", "owner", "post", "stats", "tags" ], "type": "object", "properties": { "categories": { "type": "array", "items": { "$ref": "#/components/schemas/Category" } }, "contributors": { "type": "array", "items": { "$ref": "#/components/schemas/Contributor" } }, "owner": { "$ref": "#/components/schemas/Contributor" }, "post": { "$ref": "#/components/schemas/Post" }, "stats": { "$ref": "#/components/schemas/Stats" }, "tags": { "type": "array", "items": { "$ref": "#/components/schemas/Tag" } } }, "description": "A chunk of items." }, "ListedPostList": { "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/ListedPost" } }, "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" } } }, "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" } } }, "PasswordRequest": { "required": [ "password" ], "type": "object", "properties": { "password": { "type": "string" } } }, "PatSpec": { "required": [ "name", "tokenId", "username" ], "type": "object", "properties": { "description": { "type": "string" }, "expiresAt": { "type": "string", "format": "date-time" }, "lastUsed": { "type": "string", "format": "date-time" }, "name": { "type": "string" }, "revoked": { "type": "boolean" }, "revokesAt": { "type": "string", "format": "date-time" }, "roles": { "type": "array", "items": { "type": "string" } }, "scopes": { "type": "array", "items": { "type": "string" } }, "tokenId": { "type": "string" }, "username": { "type": "string" } } }, "PersonalAccessToken": { "required": [ "apiVersion", "kind", "metadata" ], "type": "object", "properties": { "apiVersion": { "type": "string" }, "kind": { "type": "string" }, "metadata": { "$ref": "#/components/schemas/Metadata" }, "spec": { "$ref": "#/components/schemas/PatSpec" } } }, "Post": { "required": [ "apiVersion", "kind", "metadata", "spec" ], "type": "object", "properties": { "apiVersion": { "type": "string" }, "kind": { "type": "string" }, "metadata": { "$ref": "#/components/schemas/Metadata" }, "spec": { "$ref": "#/components/schemas/PostSpec" }, "status": { "$ref": "#/components/schemas/PostStatus" } } }, "PostAttachmentRequest": { "required": [ "file" ], "type": "object", "properties": { "file": { "type": "string", "format": "binary" }, "postName": { "type": "string", "description": "Post name." }, "singlePageName": { "type": "string", "description": "Single page name." } } }, "PostSpec": { "required": [ "allowComment", "deleted", "excerpt", "pinned", "priority", "publish", "slug", "title", "visible" ], "type": "object", "properties": { "allowComment": { "type": "boolean", "default": true }, "baseSnapshot": { "type": "string" }, "categories": { "type": "array", "items": { "type": "string" } }, "cover": { "type": "string" }, "deleted": { "type": "boolean", "default": false }, "excerpt": { "$ref": "#/components/schemas/Excerpt" }, "headSnapshot": { "type": "string" }, "htmlMetas": { "type": "array", "items": { "type": "object", "additionalProperties": { "type": "string" } } }, "owner": { "type": "string" }, "pinned": { "type": "boolean", "default": false }, "priority": { "type": "integer", "format": "int32", "default": 0 }, "publish": { "type": "boolean", "default": false }, "publishTime": { "type": "string", "format": "date-time" }, "releaseSnapshot": { "type": "string" }, "slug": { "minLength": 1, "type": "string" }, "tags": { "type": "array", "items": { "type": "string" } }, "template": { "type": "string" }, "title": { "minLength": 1, "type": "string" }, "visible": { "type": "string", "default": "PUBLIC", "enum": [ "PUBLIC", "INTERNAL", "PRIVATE" ] } } }, "PostStatus": { "required": [ "phase" ], "type": "object", "properties": { "commentsCount": { "type": "integer", "format": "int32" }, "conditions": { "type": "array", "properties": { "empty": { "type": "boolean" } }, "items": { "$ref": "#/components/schemas/Condition" } }, "contributors": { "type": "array", "items": { "type": "string" } }, "excerpt": { "type": "string" }, "inProgress": { "type": "boolean" }, "lastModifyTime": { "type": "string", "format": "date-time" }, "observedVersion": { "type": "integer", "format": "int64" }, "permalink": { "type": "string" }, "phase": { "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" }, "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" } } }, "SnapShotSpec": { "required": [ "owner", "rawType", "subjectRef" ], "type": "object", "properties": { "contentPatch": { "type": "string" }, "contributors": { "uniqueItems": true, "type": "array", "items": { "type": "string" } }, "lastModifyTime": { "type": "string", "format": "date-time" }, "owner": { "minLength": 1, "type": "string" }, "parentSnapshotName": { "type": "string" }, "rawPatch": { "type": "string" }, "rawType": { "maxLength": 50, "minLength": 1, "type": "string" }, "subjectRef": { "$ref": "#/components/schemas/Ref" } } }, "Snapshot": { "required": [ "apiVersion", "kind", "metadata", "spec" ], "type": "object", "properties": { "apiVersion": { "type": "string" }, "kind": { "type": "string" }, "metadata": { "$ref": "#/components/schemas/Metadata" }, "spec": { "$ref": "#/components/schemas/SnapShotSpec" } } }, "Stats": { "type": "object", "properties": { "approvedComment": { "type": "integer", "format": "int32" }, "totalComment": { "type": "integer", "format": "int32" }, "upvote": { "type": "integer", "format": "int32" }, "visit": { "type": "integer", "format": "int32" } } }, "Tag": { "required": [ "apiVersion", "kind", "metadata", "spec" ], "type": "object", "properties": { "apiVersion": { "type": "string" }, "kind": { "type": "string" }, "metadata": { "$ref": "#/components/schemas/Metadata" }, "spec": { "$ref": "#/components/schemas/TagSpec" }, "status": { "$ref": "#/components/schemas/TagStatus" } } }, "TagSpec": { "required": [ "displayName", "slug" ], "type": "object", "properties": { "color": { "pattern": "^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$", "type": "string" }, "cover": { "type": "string" }, "displayName": { "minLength": 1, "type": "string" }, "slug": { "minLength": 1, "type": "string" } } }, "TagStatus": { "type": "object", "properties": { "observedVersion": { "type": "integer", "format": "int64" }, "permalink": { "type": "string" }, "postCount": { "type": "integer", "format": "int32" }, "visiblePostCount": { "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" } } }, "TotpAuthLinkResponse": { "type": "object", "properties": { "authLink": { "type": "string", "format": "uri" }, "rawSecret": { "type": "string" } } }, "TotpRequest": { "required": [ "code", "password", "secret" ], "type": "object", "properties": { "code": { "type": "string" }, "password": { "type": "string" }, "secret": { "type": "string" } } }, "TwoFactorAuthSettings": { "type": "object", "properties": { "available": { "type": "boolean" }, "emailVerified": { "type": "boolean" }, "enabled": { "type": "boolean" }, "totpConfigured": { "type": "boolean" } } } }, "securitySchemes": { "basicAuth": { "scheme": "basic", "type": "http" }, "bearerAuth": { "bearerFormat": "JWT", "scheme": "bearer", "type": "http" } } } }