// Code generated by swaggo/swag. DO NOT EDIT.

package v1

import "github.com/swaggo/swag"

const docTemplate = `{
    "schemes": {{ marshal .Schemes }},
    "swagger": "2.0",
    "info": {
        "description": "{{escape .Description}}",
        "title": "{{.Title}}",
        "contact": {
            "name": "API Support",
            "url": "https://github.com/orgs/usememos/discussions"
        },
        "license": {
            "name": "MIT License",
            "url": "https://github.com/usememos/memos/blob/main/LICENSE"
        },
        "version": "{{.Version}}"
    },
    "host": "{{.Host}}",
    "basePath": "{{.BasePath}}",
    "paths": {
        "/api/v1/auth/signin": {
            "post": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "auth"
                ],
                "summary": "Sign-in to memos.",
                "parameters": [
                    {
                        "description": "Sign-in object",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/github_com_usememos_memos_api_v1.SignIn"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "User information",
                        "schema": {
                            "$ref": "#/definitions/store.User"
                        }
                    },
                    "400": {
                        "description": "Malformatted signin request"
                    },
                    "401": {
                        "description": "Password login is deactivated | Incorrect login credentials, please try again"
                    },
                    "403": {
                        "description": "User has been archived with username %s"
                    },
                    "500": {
                        "description": "Failed to find system setting | Failed to unmarshal system setting | Incorrect login credentials, please try again | Failed to generate tokens | Failed to create activity"
                    }
                }
            }
        },
        "/api/v1/auth/signin/sso": {
            "post": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "auth"
                ],
                "summary": "Sign-in to memos using SSO.",
                "parameters": [
                    {
                        "description": "SSO sign-in object",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/github_com_usememos_memos_api_v1.SSOSignIn"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "User information",
                        "schema": {
                            "$ref": "#/definitions/store.User"
                        }
                    },
                    "400": {
                        "description": "Malformatted signin request"
                    },
                    "401": {
                        "description": "Access denied, identifier does not match the filter."
                    },
                    "403": {
                        "description": "User has been archived with username {username}"
                    },
                    "404": {
                        "description": "Identity provider not found"
                    },
                    "500": {
                        "description": "Failed to find identity provider | Failed to create identity provider instance | Failed to exchange token | Failed to get user info | Failed to compile identifier filter | Incorrect login credentials, please try again | Failed to generate random password | Failed to generate password hash | Failed to create user | Failed to generate tokens | Failed to create activity"
                    }
                }
            }
        },
        "/api/v1/auth/signout": {
            "post": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "auth"
                ],
                "summary": "Sign-out from memos.",
                "responses": {
                    "200": {
                        "description": "Sign-out success",
                        "schema": {
                            "type": "boolean"
                        }
                    }
                }
            }
        },
        "/api/v1/auth/signup": {
            "post": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "auth"
                ],
                "summary": "Sign-up to memos.",
                "parameters": [
                    {
                        "description": "Sign-up object",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/github_com_usememos_memos_api_v1.SignUp"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "User information",
                        "schema": {
                            "$ref": "#/definitions/store.User"
                        }
                    },
                    "400": {
                        "description": "Malformatted signup request | Failed to find users"
                    },
                    "401": {
                        "description": "signup is disabled"
                    },
                    "403": {
                        "description": "Forbidden"
                    },
                    "404": {
                        "description": "Not found"
                    },
                    "500": {
                        "description": "Failed to find system setting | Failed to unmarshal system setting allow signup | Failed to generate password hash | Failed to create user | Failed to generate tokens | Failed to create activity"
                    }
                }
            }
        },
        "/api/v1/idp": {
            "get": {
                "description": "*clientSecret is only available for host user",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "idp"
                ],
                "summary": "Get a list of identity providers",
                "responses": {
                    "200": {
                        "description": "List of available identity providers",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/api_v1.IdentityProvider"
                            }
                        }
                    },
                    "500": {
                        "description": "Failed to find identity provider list | Failed to find user"
                    }
                }
            },
            "post": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "idp"
                ],
                "summary": "Create Identity Provider",
                "parameters": [
                    {
                        "description": "Identity provider information",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/api_v1.CreateIdentityProviderRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Identity provider information",
                        "schema": {
                            "$ref": "#/definitions/store.IdentityProvider"
                        }
                    },
                    "400": {
                        "description": "Malformatted post identity provider request"
                    },
                    "401": {
                        "description": "Missing user in session | Unauthorized"
                    },
                    "500": {
                        "description": "Failed to find user | Failed to create identity provider"
                    }
                }
            }
        },
        "/api/v1/idp/{idpId}": {
            "get": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "idp"
                ],
                "summary": "Get an identity provider by ID",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Identity provider ID",
                        "name": "idpId",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Requested identity provider",
                        "schema": {
                            "$ref": "#/definitions/store.IdentityProvider"
                        }
                    },
                    "400": {
                        "description": "ID is not a number: %s"
                    },
                    "401": {
                        "description": "Missing user in session | Unauthorized"
                    },
                    "404": {
                        "description": "Identity provider not found"
                    },
                    "500": {
                        "description": "Failed to find identity provider list | Failed to find user"
                    }
                }
            },
            "delete": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "idp"
                ],
                "summary": "Delete an identity provider by ID",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Identity Provider ID",
                        "name": "idpId",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Identity Provider deleted",
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    "400": {
                        "description": "ID is not a number: %s | Malformatted patch identity provider request"
                    },
                    "401": {
                        "description": "Missing user in session | Unauthorized"
                    },
                    "500": {
                        "description": "Failed to find user | Failed to patch identity provider"
                    }
                }
            },
            "patch": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "idp"
                ],
                "summary": "Update an identity provider by ID",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Identity Provider ID",
                        "name": "idpId",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Patched identity provider information",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/api_v1.UpdateIdentityProviderRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Patched identity provider",
                        "schema": {
                            "$ref": "#/definitions/store.IdentityProvider"
                        }
                    },
                    "400": {
                        "description": "ID is not a number: %s | Malformatted patch identity provider request"
                    },
                    "401": {
                        "description": "Missing user in session | Unauthorized"
                    },
                    "500": {
                        "description": "Failed to find user | Failed to patch identity provider"
                    }
                }
            }
        },
        "/api/v1/memo": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "memo"
                ],
                "summary": "Get a list of memos matching optional filters",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Creator ID",
                        "name": "creatorId",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Creator username",
                        "name": "creatorUsername",
                        "in": "query"
                    },
                    {
                        "enum": [
                            "NORMAL",
                            "ARCHIVED"
                        ],
                        "type": "string",
                        "description": "Row status",
                        "name": "rowStatus",
                        "in": "query"
                    },
                    {
                        "type": "boolean",
                        "description": "Pinned",
                        "name": "pinned",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Search for tag. Do not append #",
                        "name": "tag",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Search for content",
                        "name": "content",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Limit",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Offset",
                        "name": "offset",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Memo list",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/store.Memo"
                            }
                        }
                    },
                    "400": {
                        "description": "Missing user to find memo"
                    },
                    "500": {
                        "description": "Failed to get memo display with updated ts setting value | Failed to fetch memo list | Failed to compose memo response"
                    }
                }
            },
            "post": {
                "description": "Visibility can be PUBLIC, PROTECTED or PRIVATE\n*You should omit fields to use their default values",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "memo"
                ],
                "summary": "Create a memo",
                "parameters": [
                    {
                        "description": "Request object.",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/github_com_usememos_memos_api_v1.CreateMemoRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Stored memo",
                        "schema": {
                            "$ref": "#/definitions/store.Memo"
                        }
                    },
                    "400": {
                        "description": "Malformatted post memo request | Content size overflow, up to 1MB"
                    },
                    "401": {
                        "description": "Missing user in session"
                    },
                    "404": {
                        "description": "User not found | Memo not found: %d"
                    },
                    "500": {
                        "description": "Failed to find user setting | Failed to unmarshal user setting value | Failed to find system setting | Failed to unmarshal system setting | Failed to find user | Failed to create memo | Failed to create activity | Failed to upsert memo resource | Failed to upsert memo relation | Failed to compose memo | Failed to compose memo response"
                    }
                }
            }
        },
        "/api/v1/memo/all": {
            "get": {
                "description": "This should also list protected memos if the user is logged in\nAuthentication is optional",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "memo"
                ],
                "summary": "Get a list of public memos matching optional filters",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Limit",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Offset",
                        "name": "offset",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Memo list",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/store.Memo"
                            }
                        }
                    },
                    "500": {
                        "description": "Failed to get memo display with updated ts setting value | Failed to fetch all memo list | Failed to compose memo response"
                    }
                }
            }
        },
        "/api/v1/memo/stats": {
            "get": {
                "description": "Used to generate the heatmap",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "memo"
                ],
                "summary": "Get memo stats by creator ID or username",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Creator ID",
                        "name": "creatorId",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Creator username",
                        "name": "creatorUsername",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Memo createdTs list",
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "integer"
                            }
                        }
                    },
                    "400": {
                        "description": "Missing user id to find memo"
                    },
                    "500": {
                        "description": "Failed to get memo display with updated ts setting value | Failed to find memo list | Failed to compose memo response"
                    }
                }
            }
        },
        "/api/v1/memo/{memoId}": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "memo"
                ],
                "summary": "Get memo by ID",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Memo ID",
                        "name": "memoId",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Memo list",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/store.Memo"
                            }
                        }
                    },
                    "400": {
                        "description": "ID is not a number: %s"
                    },
                    "401": {
                        "description": "Missing user in session"
                    },
                    "403": {
                        "description": "this memo is private only | this memo is protected, missing user in session"
                    },
                    "404": {
                        "description": "Memo not found: %d"
                    },
                    "500": {
                        "description": "Failed to find memo by ID: %v | Failed to compose memo response"
                    }
                }
            },
            "delete": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "memo"
                ],
                "summary": "Delete memo by ID",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Memo ID to delete",
                        "name": "memoId",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Memo deleted",
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    "400": {
                        "description": "ID is not a number: %s"
                    },
                    "401": {
                        "description": "Missing user in session | Unauthorized"
                    },
                    "404": {
                        "description": "Memo not found: %d"
                    },
                    "500": {
                        "description": "Failed to find memo | Failed to delete memo ID: %v"
                    }
                }
            },
            "patch": {
                "description": "Visibility can be PUBLIC, PROTECTED or PRIVATE\n*You should omit fields to use their default values",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "memo"
                ],
                "summary": "Update a memo",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "ID of memo to update",
                        "name": "memoId",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Patched object.",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/github_com_usememos_memos_api_v1.PatchMemoRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Stored memo",
                        "schema": {
                            "$ref": "#/definitions/store.Memo"
                        }
                    },
                    "400": {
                        "description": "ID is not a number: %s | Malformatted patch memo request | Content size overflow, up to 1MB"
                    },
                    "401": {
                        "description": "Missing user in session | Unauthorized"
                    },
                    "404": {
                        "description": "Memo not found: %d"
                    },
                    "500": {
                        "description": "Failed to find memo | Failed to patch memo | Failed to upsert memo resource | Failed to delete memo resource | Failed to compose memo response"
                    }
                }
            }
        },
        "/api/v1/memo/{memoId}/organizer": {
            "post": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "memo-organizer"
                ],
                "summary": "Organize memo (pin/unpin)",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "ID of memo to organize",
                        "name": "memoId",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Memo organizer object",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/github_com_usememos_memos_api_v1.UpsertMemoOrganizerRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Memo information",
                        "schema": {
                            "$ref": "#/definitions/store.Memo"
                        }
                    },
                    "400": {
                        "description": "ID is not a number: %s | Malformatted post memo organizer request"
                    },
                    "401": {
                        "description": "Missing user in session | Unauthorized"
                    },
                    "404": {
                        "description": "Memo not found: %v"
                    },
                    "500": {
                        "description": "Failed to find memo | Failed to upsert memo organizer | Failed to find memo by ID: %v | Failed to compose memo response"
                    }
                }
            }
        },
        "/api/v1/memo/{memoId}/relation": {
            "get": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "memo-relation"
                ],
                "summary": "Get a list of Memo Relations",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "ID of memo to find relations",
                        "name": "memoId",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Memo relation information list",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/store.MemoRelation"
                            }
                        }
                    },
                    "400": {
                        "description": "ID is not a number: %s"
                    },
                    "500": {
                        "description": "Failed to list memo relations"
                    }
                }
            },
            "post": {
                "description": "Create a relation between two memos",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "memo-relation"
                ],
                "summary": "Create Memo Relation",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "ID of memo to relate",
                        "name": "memoId",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Memo relation object",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/github_com_usememos_memos_api_v1.UpsertMemoRelationRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Memo relation information",
                        "schema": {
                            "$ref": "#/definitions/store.MemoRelation"
                        }
                    },
                    "400": {
                        "description": "ID is not a number: %s | Malformatted post memo relation request"
                    },
                    "500": {
                        "description": "Failed to upsert memo relation"
                    }
                }
            }
        },
        "/api/v1/memo/{memoId}/relation/{relatedMemoId}/type/{relationType}": {
            "delete": {
                "description": "Removes a relation between two memos",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "memo-relation"
                ],
                "summary": "Delete a Memo Relation",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "ID of memo to find relations",
                        "name": "memoId",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "ID of memo to remove relation to",
                        "name": "relatedMemoId",
                        "in": "path",
                        "required": true
                    },
                    {
                        "enum": [
                            "REFERENCE",
                            "COMMENT"
                        ],
                        "type": "string",
                        "description": "Type of relation to remove",
                        "name": "relationType",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Memo relation deleted",
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    "400": {
                        "description": "Memo ID is not a number: %s | Related memo ID is not a number: %s"
                    },
                    "500": {
                        "description": "Failed to delete memo relation"
                    }
                }
            }
        },
        "/api/v1/ping": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "system"
                ],
                "summary": "Ping the system",
                "responses": {
                    "200": {
                        "description": "If succeed to ping the system",
                        "schema": {
                            "type": "boolean"
                        }
                    }
                }
            }
        },
        "/api/v1/resource": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "resource"
                ],
                "summary": "Get a list of resources",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Limit",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Offset",
                        "name": "offset",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Resource list",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/store.Resource"
                            }
                        }
                    },
                    "401": {
                        "description": "Missing user in session"
                    },
                    "500": {
                        "description": "Failed to fetch resource list"
                    }
                }
            },
            "post": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "resource"
                ],
                "summary": "Create resource",
                "parameters": [
                    {
                        "description": "Request object.",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/api_v1.CreateResourceRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Created resource",
                        "schema": {
                            "$ref": "#/definitions/store.Resource"
                        }
                    },
                    "400": {
                        "description": "Malformatted post resource request | Invalid external link | Invalid external link scheme | Failed to request %s | Failed to read %s | Failed to read mime from %s"
                    },
                    "401": {
                        "description": "Missing user in session"
                    },
                    "500": {
                        "description": "Failed to save resource | Failed to create resource | Failed to create activity"
                    }
                }
            }
        },
        "/api/v1/resource/blob": {
            "post": {
                "consumes": [
                    "multipart/form-data"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "resource"
                ],
                "summary": "Upload resource",
                "parameters": [
                    {
                        "type": "file",
                        "description": "File to upload",
                        "name": "file",
                        "in": "formData",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Created resource",
                        "schema": {
                            "$ref": "#/definitions/store.Resource"
                        }
                    },
                    "400": {
                        "description": "Upload file not found | File size exceeds allowed limit of %d MiB | Failed to parse upload data"
                    },
                    "401": {
                        "description": "Missing user in session"
                    },
                    "500": {
                        "description": "Failed to get uploading file | Failed to open file | Failed to save resource | Failed to create resource | Failed to create activity"
                    }
                }
            }
        },
        "/api/v1/resource/{resourceId}": {
            "delete": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "resource"
                ],
                "summary": "Delete a resource",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Resource ID",
                        "name": "resourceId",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Resource deleted",
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    "400": {
                        "description": "ID is not a number: %s"
                    },
                    "401": {
                        "description": "Missing user in session"
                    },
                    "404": {
                        "description": "Resource not found: %d"
                    },
                    "500": {
                        "description": "Failed to find resource | Failed to delete resource"
                    }
                }
            },
            "patch": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "resource"
                ],
                "summary": "Update a resource",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Resource ID",
                        "name": "resourceId",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Patch resource request",
                        "name": "patch",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/api_v1.UpdateResourceRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Updated resource",
                        "schema": {
                            "$ref": "#/definitions/store.Resource"
                        }
                    },
                    "400": {
                        "description": "ID is not a number: %s | Malformatted patch resource request"
                    },
                    "401": {
                        "description": "Missing user in session | Unauthorized"
                    },
                    "404": {
                        "description": "Resource not found: %d"
                    },
                    "500": {
                        "description": "Failed to find resource | Failed to patch resource"
                    }
                }
            }
        },
        "/api/v1/status": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "system"
                ],
                "summary": "Get system GetSystemStatus",
                "responses": {
                    "200": {
                        "description": "System GetSystemStatus",
                        "schema": {
                            "$ref": "#/definitions/api_v1.SystemStatus"
                        }
                    },
                    "401": {
                        "description": "Missing user in session | Unauthorized"
                    },
                    "500": {
                        "description": "Failed to find host user | Failed to find system setting list | Failed to unmarshal system setting customized profile value"
                    }
                }
            }
        },
        "/api/v1/storage": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "storage"
                ],
                "summary": "Get a list of storages",
                "responses": {
                    "200": {
                        "description": "List of storages",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/store.Storage"
                            }
                        }
                    },
                    "401": {
                        "description": "Missing user in session | Unauthorized"
                    },
                    "500": {
                        "description": "Failed to find user | Failed to convert storage"
                    }
                }
            },
            "post": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "storage"
                ],
                "summary": "Create storage",
                "parameters": [
                    {
                        "description": "Request object.",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/github_com_usememos_memos_api_v1.CreateStorageRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Created storage",
                        "schema": {
                            "$ref": "#/definitions/store.Storage"
                        }
                    },
                    "400": {
                        "description": "Malformatted post storage request"
                    },
                    "401": {
                        "description": "Missing user in session"
                    },
                    "500": {
                        "description": "Failed to find user | Failed to create storage | Failed to convert storage"
                    }
                }
            }
        },
        "/api/v1/storage/{storageId}": {
            "delete": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "storage"
                ],
                "summary": "Delete a storage",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Storage ID",
                        "name": "storageId",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Storage deleted",
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    "400": {
                        "description": "ID is not a number: %s | Storage service %d is using"
                    },
                    "401": {
                        "description": "Missing user in session | Unauthorized"
                    },
                    "500": {
                        "description": "Failed to find user | Failed to find storage | Failed to unmarshal storage service id | Failed to delete storage"
                    }
                }
            },
            "patch": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "storage"
                ],
                "summary": "Update a storage",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Storage ID",
                        "name": "storageId",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Patch request",
                        "name": "patch",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/github_com_usememos_memos_api_v1.UpdateStorageRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Updated resource",
                        "schema": {
                            "$ref": "#/definitions/store.Storage"
                        }
                    },
                    "400": {
                        "description": "ID is not a number: %s | Malformatted patch storage request | Malformatted post storage request"
                    },
                    "401": {
                        "description": "Missing user in session | Unauthorized"
                    },
                    "500": {
                        "description": "Failed to find user | Failed to patch storage | Failed to convert storage"
                    }
                }
            }
        },
        "/api/v1/system/setting": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "system-setting"
                ],
                "summary": "Get a list of system settings",
                "responses": {
                    "200": {
                        "description": "System setting list",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/api_v1.SystemSetting"
                            }
                        }
                    },
                    "401": {
                        "description": "Missing user in session | Unauthorized"
                    },
                    "500": {
                        "description": "Failed to find user | Failed to find system setting list"
                    }
                }
            },
            "post": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "system-setting"
                ],
                "summary": "Create system setting",
                "parameters": [
                    {
                        "description": "Request object.",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/api_v1.UpsertSystemSettingRequest"
                        }
                    }
                ],
                "responses": {
                    "400": {
                        "description": "Malformatted post system setting request | invalid system setting"
                    },
                    "401": {
                        "description": "Missing user in session | Unauthorized"
                    },
                    "403": {
                        "description": "Cannot disable passwords if no SSO identity provider is configured."
                    },
                    "500": {
                        "description": "Failed to find user | Failed to upsert system setting"
                    }
                }
            }
        },
        "/api/v1/system/vacuum": {
            "post": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "system"
                ],
                "summary": "Vacuum the database",
                "responses": {
                    "200": {
                        "description": "Database vacuumed",
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    "401": {
                        "description": "Missing user in session | Unauthorized"
                    },
                    "500": {
                        "description": "Failed to find user | Failed to ExecVacuum database"
                    }
                }
            }
        },
        "/api/v1/tag": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "tag"
                ],
                "summary": "Get a list of tags",
                "responses": {
                    "200": {
                        "description": "Tag list",
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    },
                    "400": {
                        "description": "Missing user id to find tag"
                    },
                    "500": {
                        "description": "Failed to find tag list"
                    }
                }
            },
            "post": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "tag"
                ],
                "summary": "Create a tag",
                "parameters": [
                    {
                        "description": "Request object.",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/github_com_usememos_memos_api_v1.UpsertTagRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Created tag name",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "400": {
                        "description": "Malformatted post tag request | Tag name shouldn't be empty"
                    },
                    "401": {
                        "description": "Missing user in session"
                    },
                    "500": {
                        "description": "Failed to upsert tag | Failed to create activity"
                    }
                }
            }
        },
        "/api/v1/tag/delete": {
            "post": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "tag"
                ],
                "summary": "Delete a tag",
                "parameters": [
                    {
                        "description": "Request object.",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/github_com_usememos_memos_api_v1.DeleteTagRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tag deleted",
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    "400": {
                        "description": "Malformatted post tag request | Tag name shouldn't be empty"
                    },
                    "401": {
                        "description": "Missing user in session"
                    },
                    "500": {
                        "description": "Failed to delete tag name: %v"
                    }
                }
            }
        },
        "/api/v1/tag/suggestion": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "tag"
                ],
                "summary": "Get a list of tags suggested from other memos contents",
                "responses": {
                    "200": {
                        "description": "Tag list",
                        "schema": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    },
                    "400": {
                        "description": "Missing user session"
                    },
                    "500": {
                        "description": "Failed to find memo list | Failed to find tag list"
                    }
                }
            }
        },
        "/api/v1/user": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "user"
                ],
                "summary": "Get a list of users",
                "responses": {
                    "200": {
                        "description": "User list",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/store.User"
                            }
                        }
                    },
                    "500": {
                        "description": "Failed to fetch user list"
                    }
                }
            },
            "post": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "user"
                ],
                "summary": "Create a user",
                "parameters": [
                    {
                        "description": "Request object",
                        "name": "body",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/api_v1.CreateUserRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Created user",
                        "schema": {
                            "$ref": "#/definitions/store.User"
                        }
                    },
                    "400": {
                        "description": "Malformatted post user request | Invalid user create format"
                    },
                    "401": {
                        "description": "Missing auth session | Unauthorized to create user"
                    },
                    "403": {
                        "description": "Could not create host user"
                    },
                    "500": {
                        "description": "Failed to find user by id | Failed to generate password hash | Failed to create user | Failed to create activity"
                    }
                }
            }
        },
        "/api/v1/user/me": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "user"
                ],
                "summary": "Get current user",
                "responses": {
                    "200": {
                        "description": "Current user",
                        "schema": {
                            "$ref": "#/definitions/store.User"
                        }
                    },
                    "401": {
                        "description": "Missing auth session"
                    },
                    "500": {
                        "description": "Failed to find user | Failed to find userSettingList"
                    }
                }
            }
        },
        "/api/v1/user/name/{username}": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "user"
                ],
                "summary": "Get user by username",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Username",
                        "name": "username",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Requested user",
                        "schema": {
                            "$ref": "#/definitions/store.User"
                        }
                    },
                    "404": {
                        "description": "User not found"
                    },
                    "500": {
                        "description": "Failed to find user"
                    }
                }
            }
        },
        "/api/v1/user/{id}": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "user"
                ],
                "summary": "Get user by id",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "User ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Requested user",
                        "schema": {
                            "$ref": "#/definitions/store.User"
                        }
                    },
                    "400": {
                        "description": "Malformatted user id"
                    },
                    "404": {
                        "description": "User not found"
                    },
                    "500": {
                        "description": "Failed to find user"
                    }
                }
            },
            "delete": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "user"
                ],
                "summary": "Delete a user",
                "parameters": [
                    {
                        "type": "string",
                        "description": "User ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "User deleted",
                        "schema": {
                            "type": "boolean"
                        }
                    },
                    "400": {
                        "description": "ID is not a number: %s | Current session user not found with ID: %d"
                    },
                    "401": {
                        "description": "Missing user in session"
                    },
                    "403": {
                        "description": "Unauthorized to delete user"
                    },
                    "500": {
                        "description": "Failed to find user | Failed to delete user"
                    }
                }
            },
            "patch": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "user"
                ],
                "summary": "Update a user",
                "parameters": [
                    {
                        "type": "string",
                        "description": "User ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Patch request",
                        "name": "patch",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/api_v1.UpdateUserRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Updated user",
                        "schema": {
                            "$ref": "#/definitions/store.User"
                        }
                    },
                    "400": {
                        "description": "ID is not a number: %s | Current session user not found with ID: %d | Malformatted patch user request | Invalid update user request"
                    },
                    "401": {
                        "description": "Missing user in session"
                    },
                    "403": {
                        "description": "Unauthorized to update user"
                    },
                    "500": {
                        "description": "Failed to find user | Failed to generate password hash | Failed to patch user | Failed to find userSettingList"
                    }
                }
            }
        },
        "/o/get/GetImage": {
            "get": {
                "produces": [
                    "GetImage/*"
                ],
                "tags": [
                    "image-url"
                ],
                "summary": "Get GetImage from URL",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Image url",
                        "name": "url",
                        "in": "query",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Image"
                    },
                    "400": {
                        "description": "Missing GetImage url | Wrong url | Failed to get GetImage url: %s"
                    },
                    "500": {
                        "description": "Failed to write GetImage blob"
                    }
                }
            }
        }
    },
    "definitions": {
        "api_v1.CreateIdentityProviderRequest": {
            "type": "object",
            "properties": {
                "config": {
                    "$ref": "#/definitions/api_v1.IdentityProviderConfig"
                },
                "identifierFilter": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "type": {
                    "$ref": "#/definitions/api_v1.IdentityProviderType"
                }
            }
        },
        "api_v1.CreateMemoRequest": {
            "type": "object",
            "properties": {
                "content": {
                    "type": "string"
                },
                "createdTs": {
                    "type": "integer"
                },
                "relationList": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/api_v1.UpsertMemoRelationRequest"
                    }
                },
                "resourceIdList": {
                    "description": "Related fields",
                    "type": "array",
                    "items": {
                        "type": "integer"
                    }
                },
                "visibility": {
                    "description": "Domain specific fields",
                    "allOf": [
                        {
                            "$ref": "#/definitions/api_v1.Visibility"
                        }
                    ]
                }
            }
        },
        "api_v1.CreateResourceRequest": {
            "type": "object",
            "properties": {
                "externalLink": {
                    "type": "string"
                },
                "filename": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                }
            }
        },
        "api_v1.CreateStorageRequest": {
            "type": "object",
            "properties": {
                "config": {
                    "$ref": "#/definitions/api_v1.StorageConfig"
                },
                "name": {
                    "type": "string"
                },
                "type": {
                    "$ref": "#/definitions/api_v1.StorageType"
                }
            }
        },
        "api_v1.CreateUserRequest": {
            "type": "object",
            "properties": {
                "email": {
                    "type": "string"
                },
                "nickname": {
                    "type": "string"
                },
                "password": {
                    "type": "string"
                },
                "role": {
                    "$ref": "#/definitions/api_v1.Role"
                },
                "username": {
                    "type": "string"
                }
            }
        },
        "api_v1.CustomizedProfile": {
            "type": "object",
            "properties": {
                "appearance": {
                    "description": "Appearance is the server default appearance.",
                    "type": "string"
                },
                "description": {
                    "description": "Description is the server description.",
                    "type": "string"
                },
                "locale": {
                    "description": "Locale is the server default locale.",
                    "type": "string"
                },
                "logoUrl": {
                    "description": "LogoURL is the url of logo image.",
                    "type": "string"
                },
                "name": {
                    "description": "Name is the server name, default is ` + "`" + `memos` + "`" + `",
                    "type": "string"
                }
            }
        },
        "api_v1.DeleteTagRequest": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string"
                }
            }
        },
        "api_v1.FieldMapping": {
            "type": "object",
            "properties": {
                "displayName": {
                    "type": "string"
                },
                "email": {
                    "type": "string"
                },
                "identifier": {
                    "type": "string"
                }
            }
        },
        "api_v1.IdentityProvider": {
            "type": "object",
            "properties": {
                "config": {
                    "$ref": "#/definitions/api_v1.IdentityProviderConfig"
                },
                "id": {
                    "type": "integer"
                },
                "identifierFilter": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "type": {
                    "$ref": "#/definitions/api_v1.IdentityProviderType"
                }
            }
        },
        "api_v1.IdentityProviderConfig": {
            "type": "object",
            "properties": {
                "oauth2Config": {
                    "$ref": "#/definitions/api_v1.IdentityProviderOAuth2Config"
                }
            }
        },
        "api_v1.IdentityProviderOAuth2Config": {
            "type": "object",
            "properties": {
                "authUrl": {
                    "type": "string"
                },
                "clientId": {
                    "type": "string"
                },
                "clientSecret": {
                    "type": "string"
                },
                "fieldMapping": {
                    "$ref": "#/definitions/api_v1.FieldMapping"
                },
                "scopes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "tokenUrl": {
                    "type": "string"
                },
                "userInfoUrl": {
                    "type": "string"
                }
            }
        },
        "api_v1.IdentityProviderType": {
            "type": "string",
            "enum": [
                "OAUTH2"
            ],
            "x-enum-varnames": [
                "IdentityProviderOAuth2Type"
            ]
        },
        "api_v1.MemoRelationType": {
            "type": "string",
            "enum": [
                "REFERENCE",
                "COMMENT"
            ],
            "x-enum-varnames": [
                "MemoRelationReference",
                "MemoRelationComment"
            ]
        },
        "api_v1.PatchMemoRequest": {
            "type": "object",
            "properties": {
                "content": {
                    "description": "Domain specific fields",
                    "type": "string"
                },
                "createdTs": {
                    "description": "Standard fields",
                    "type": "integer"
                },
                "relationList": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/api_v1.UpsertMemoRelationRequest"
                    }
                },
                "resourceIdList": {
                    "description": "Related fields",
                    "type": "array",
                    "items": {
                        "type": "integer"
                    }
                },
                "rowStatus": {
                    "$ref": "#/definitions/api_v1.RowStatus"
                },
                "updatedTs": {
                    "type": "integer"
                },
                "visibility": {
                    "$ref": "#/definitions/api_v1.Visibility"
                }
            }
        },
        "api_v1.Role": {
            "type": "string",
            "enum": [
                "HOST",
                "ADMIN",
                "USER"
            ],
            "x-enum-varnames": [
                "RoleHost",
                "RoleAdmin",
                "RoleUser"
            ]
        },
        "api_v1.RowStatus": {
            "type": "string",
            "enum": [
                "NORMAL",
                "ARCHIVED"
            ],
            "x-enum-varnames": [
                "Normal",
                "Archived"
            ]
        },
        "api_v1.SSOSignIn": {
            "type": "object",
            "properties": {
                "code": {
                    "type": "string"
                },
                "identityProviderId": {
                    "type": "integer"
                },
                "redirectUri": {
                    "type": "string"
                }
            }
        },
        "api_v1.SignIn": {
            "type": "object",
            "properties": {
                "password": {
                    "type": "string"
                },
                "remember": {
                    "type": "boolean"
                },
                "username": {
                    "type": "string"
                }
            }
        },
        "api_v1.SignUp": {
            "type": "object",
            "properties": {
                "password": {
                    "type": "string"
                },
                "username": {
                    "type": "string"
                }
            }
        },
        "api_v1.StorageConfig": {
            "type": "object",
            "properties": {
                "s3Config": {
                    "$ref": "#/definitions/api_v1.StorageS3Config"
                }
            }
        },
        "api_v1.StorageS3Config": {
            "type": "object",
            "properties": {
                "accessKey": {
                    "type": "string"
                },
                "bucket": {
                    "type": "string"
                },
                "endPoint": {
                    "type": "string"
                },
                "path": {
                    "type": "string"
                },
                "presign": {
                    "type": "boolean"
                },
                "region": {
                    "type": "string"
                },
                "secretKey": {
                    "type": "string"
                },
                "urlPrefix": {
                    "type": "string"
                },
                "urlSuffix": {
                    "type": "string"
                }
            }
        },
        "api_v1.StorageType": {
            "type": "string",
            "enum": [
                "S3"
            ],
            "x-enum-varnames": [
                "StorageS3"
            ]
        },
        "api_v1.SystemSetting": {
            "type": "object",
            "properties": {
                "description": {
                    "type": "string"
                },
                "name": {
                    "$ref": "#/definitions/api_v1.SystemSettingName"
                },
                "value": {
                    "description": "Value is a JSON string with basic value.",
                    "type": "string"
                }
            }
        },
        "api_v1.SystemSettingName": {
            "type": "string",
            "enum": [
                "server-id",
                "secret-session",
                "disable-public-memos",
                "max-upload-size-mib",
                "customized-profile",
                "storage-service-id",
                "local-storage-path",
                "telegram-bot-token",
                "memo-display-with-updated-ts"
            ],
            "x-enum-varnames": [
                "SystemSettingServerIDName",
                "SystemSettingSecretSessionName",
                "SystemSettingDisablePublicMemosName",
                "SystemSettingMaxUploadSizeMiBName",
                "SystemSettingCustomizedProfileName",
                "SystemSettingStorageServiceIDName",
                "SystemSettingLocalStoragePathName",
                "SystemSettingTelegramBotTokenName",
                "SystemSettingMemoDisplayWithUpdatedTsName"
            ]
        },
        "api_v1.SystemStatus": {
            "type": "object",
            "properties": {
                "additionalScript": {
                    "description": "Additional script.",
                    "type": "string"
                },
                "additionalStyle": {
                    "description": "Additional style.",
                    "type": "string"
                },
                "allowSignUp": {
                    "description": "System settings\nAllow sign up.",
                    "type": "boolean"
                },
                "customizedProfile": {
                    "description": "Customized server profile, including server name and external url.",
                    "allOf": [
                        {
                            "$ref": "#/definitions/api_v1.CustomizedProfile"
                        }
                    ]
                },
                "dbSize": {
                    "type": "integer"
                },
                "disablePasswordLogin": {
                    "description": "Disable password login.",
                    "type": "boolean"
                },
                "disablePublicMemos": {
                    "description": "Disable public memos.",
                    "type": "boolean"
                },
                "host": {
                    "$ref": "#/definitions/api_v1.User"
                },
                "localStoragePath": {
                    "description": "Local storage path.",
                    "type": "string"
                },
                "maxUploadSizeMiB": {
                    "description": "Max upload size.",
                    "type": "integer"
                },
                "memoDisplayWithUpdatedTs": {
                    "description": "Memo display with updated timestamp.",
                    "type": "boolean"
                },
                "profile": {
                    "$ref": "#/definitions/profile.Profile"
                },
                "storageServiceId": {
                    "description": "Storage service ID.",
                    "type": "integer"
                }
            }
        },
        "api_v1.UpdateIdentityProviderRequest": {
            "type": "object",
            "properties": {
                "config": {
                    "$ref": "#/definitions/api_v1.IdentityProviderConfig"
                },
                "identifierFilter": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "type": {
                    "$ref": "#/definitions/api_v1.IdentityProviderType"
                }
            }
        },
        "api_v1.UpdateResourceRequest": {
            "type": "object",
            "properties": {
                "filename": {
                    "type": "string"
                }
            }
        },
        "api_v1.UpdateStorageRequest": {
            "type": "object",
            "properties": {
                "config": {
                    "$ref": "#/definitions/api_v1.StorageConfig"
                },
                "name": {
                    "type": "string"
                },
                "type": {
                    "$ref": "#/definitions/api_v1.StorageType"
                }
            }
        },
        "api_v1.UpdateUserRequest": {
            "type": "object",
            "properties": {
                "avatarUrl": {
                    "type": "string"
                },
                "email": {
                    "type": "string"
                },
                "nickname": {
                    "type": "string"
                },
                "password": {
                    "type": "string"
                },
                "rowStatus": {
                    "$ref": "#/definitions/api_v1.RowStatus"
                },
                "username": {
                    "type": "string"
                }
            }
        },
        "api_v1.UpsertMemoOrganizerRequest": {
            "type": "object",
            "properties": {
                "pinned": {
                    "type": "boolean"
                }
            }
        },
        "api_v1.UpsertMemoRelationRequest": {
            "type": "object",
            "properties": {
                "relatedMemoId": {
                    "type": "integer"
                },
                "type": {
                    "$ref": "#/definitions/api_v1.MemoRelationType"
                }
            }
        },
        "api_v1.UpsertSystemSettingRequest": {
            "type": "object",
            "properties": {
                "description": {
                    "type": "string"
                },
                "name": {
                    "$ref": "#/definitions/api_v1.SystemSettingName"
                },
                "value": {
                    "type": "string"
                }
            }
        },
        "api_v1.UpsertTagRequest": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string"
                }
            }
        },
        "api_v1.User": {
            "type": "object",
            "properties": {
                "avatarUrl": {
                    "type": "string"
                },
                "createdTs": {
                    "type": "integer"
                },
                "email": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "nickname": {
                    "type": "string"
                },
                "role": {
                    "$ref": "#/definitions/api_v1.Role"
                },
                "rowStatus": {
                    "description": "Standard fields",
                    "allOf": [
                        {
                            "$ref": "#/definitions/api_v1.RowStatus"
                        }
                    ]
                },
                "updatedTs": {
                    "type": "integer"
                },
                "username": {
                    "description": "Domain specific fields",
                    "type": "string"
                }
            }
        },
        "api_v1.Visibility": {
            "type": "string",
            "enum": [
                "PUBLIC",
                "PROTECTED",
                "PRIVATE"
            ],
            "x-enum-varnames": [
                "Public",
                "Protected",
                "Private"
            ]
        },
        "github_com_usememos_memos_api_v1.CreateIdentityProviderRequest": {
            "type": "object",
            "properties": {
                "config": {
                    "$ref": "#/definitions/github_com_usememos_memos_api_v1.IdentityProviderConfig"
                },
                "identifierFilter": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "type": {
                    "$ref": "#/definitions/github_com_usememos_memos_api_v1.IdentityProviderType"
                }
            }
        },
        "github_com_usememos_memos_api_v1.CreateMemoRequest": {
            "type": "object",
            "properties": {
                "content": {
                    "type": "string"
                },
                "createdTs": {
                    "type": "integer"
                },
                "relationList": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/github_com_usememos_memos_api_v1.UpsertMemoRelationRequest"
                    }
                },
                "resourceIdList": {
                    "description": "Related fields",
                    "type": "array",
                    "items": {
                        "type": "integer"
                    }
                },
                "visibility": {
                    "description": "Domain specific fields",
                    "allOf": [
                        {
                            "$ref": "#/definitions/github_com_usememos_memos_api_v1.Visibility"
                        }
                    ]
                }
            }
        },
        "github_com_usememos_memos_api_v1.CreateResourceRequest": {
            "type": "object",
            "properties": {
                "externalLink": {
                    "type": "string"
                },
                "filename": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                }
            }
        },
        "github_com_usememos_memos_api_v1.CreateStorageRequest": {
            "type": "object",
            "properties": {
                "config": {
                    "$ref": "#/definitions/github_com_usememos_memos_api_v1.StorageConfig"
                },
                "name": {
                    "type": "string"
                },
                "type": {
                    "$ref": "#/definitions/github_com_usememos_memos_api_v1.StorageType"
                }
            }
        },
        "github_com_usememos_memos_api_v1.CreateUserRequest": {
            "type": "object",
            "properties": {
                "email": {
                    "type": "string"
                },
                "nickname": {
                    "type": "string"
                },
                "password": {
                    "type": "string"
                },
                "role": {
                    "$ref": "#/definitions/github_com_usememos_memos_api_v1.Role"
                },
                "username": {
                    "type": "string"
                }
            }
        },
        "github_com_usememos_memos_api_v1.CustomizedProfile": {
            "type": "object",
            "properties": {
                "appearance": {
                    "description": "Appearance is the server default appearance.",
                    "type": "string"
                },
                "description": {
                    "description": "Description is the server description.",
                    "type": "string"
                },
                "locale": {
                    "description": "Locale is the server default locale.",
                    "type": "string"
                },
                "logoUrl": {
                    "description": "LogoURL is the url of logo image.",
                    "type": "string"
                },
                "name": {
                    "description": "Name is the server name, default is ` + "`" + `memos` + "`" + `",
                    "type": "string"
                }
            }
        },
        "github_com_usememos_memos_api_v1.DeleteTagRequest": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string"
                }
            }
        },
        "github_com_usememos_memos_api_v1.FieldMapping": {
            "type": "object",
            "properties": {
                "displayName": {
                    "type": "string"
                },
                "email": {
                    "type": "string"
                },
                "identifier": {
                    "type": "string"
                }
            }
        },
        "github_com_usememos_memos_api_v1.IdentityProvider": {
            "type": "object",
            "properties": {
                "config": {
                    "$ref": "#/definitions/github_com_usememos_memos_api_v1.IdentityProviderConfig"
                },
                "id": {
                    "type": "integer"
                },
                "identifierFilter": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "type": {
                    "$ref": "#/definitions/github_com_usememos_memos_api_v1.IdentityProviderType"
                }
            }
        },
        "github_com_usememos_memos_api_v1.IdentityProviderConfig": {
            "type": "object",
            "properties": {
                "oauth2Config": {
                    "$ref": "#/definitions/github_com_usememos_memos_api_v1.IdentityProviderOAuth2Config"
                }
            }
        },
        "github_com_usememos_memos_api_v1.IdentityProviderOAuth2Config": {
            "type": "object",
            "properties": {
                "authUrl": {
                    "type": "string"
                },
                "clientId": {
                    "type": "string"
                },
                "clientSecret": {
                    "type": "string"
                },
                "fieldMapping": {
                    "$ref": "#/definitions/github_com_usememos_memos_api_v1.FieldMapping"
                },
                "scopes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "tokenUrl": {
                    "type": "string"
                },
                "userInfoUrl": {
                    "type": "string"
                }
            }
        },
        "github_com_usememos_memos_api_v1.IdentityProviderType": {
            "type": "string",
            "enum": [
                "OAUTH2"
            ],
            "x-enum-varnames": [
                "IdentityProviderOAuth2Type"
            ]
        },
        "github_com_usememos_memos_api_v1.MemoRelationType": {
            "type": "string",
            "enum": [
                "REFERENCE",
                "COMMENT"
            ],
            "x-enum-varnames": [
                "MemoRelationReference",
                "MemoRelationComment"
            ]
        },
        "github_com_usememos_memos_api_v1.PatchMemoRequest": {
            "type": "object",
            "properties": {
                "content": {
                    "description": "Domain specific fields",
                    "type": "string"
                },
                "createdTs": {
                    "description": "Standard fields",
                    "type": "integer"
                },
                "relationList": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/github_com_usememos_memos_api_v1.UpsertMemoRelationRequest"
                    }
                },
                "resourceIdList": {
                    "description": "Related fields",
                    "type": "array",
                    "items": {
                        "type": "integer"
                    }
                },
                "rowStatus": {
                    "$ref": "#/definitions/github_com_usememos_memos_api_v1.RowStatus"
                },
                "updatedTs": {
                    "type": "integer"
                },
                "visibility": {
                    "$ref": "#/definitions/github_com_usememos_memos_api_v1.Visibility"
                }
            }
        },
        "github_com_usememos_memos_api_v1.Role": {
            "type": "string",
            "enum": [
                "HOST",
                "ADMIN",
                "USER"
            ],
            "x-enum-varnames": [
                "RoleHost",
                "RoleAdmin",
                "RoleUser"
            ]
        },
        "github_com_usememos_memos_api_v1.RowStatus": {
            "type": "string",
            "enum": [
                "NORMAL",
                "ARCHIVED"
            ],
            "x-enum-varnames": [
                "Normal",
                "Archived"
            ]
        },
        "github_com_usememos_memos_api_v1.SSOSignIn": {
            "type": "object",
            "properties": {
                "code": {
                    "type": "string"
                },
                "identityProviderId": {
                    "type": "integer"
                },
                "redirectUri": {
                    "type": "string"
                }
            }
        },
        "github_com_usememos_memos_api_v1.SignIn": {
            "type": "object",
            "properties": {
                "password": {
                    "type": "string"
                },
                "remember": {
                    "type": "boolean"
                },
                "username": {
                    "type": "string"
                }
            }
        },
        "github_com_usememos_memos_api_v1.SignUp": {
            "type": "object",
            "properties": {
                "password": {
                    "type": "string"
                },
                "username": {
                    "type": "string"
                }
            }
        },
        "github_com_usememos_memos_api_v1.StorageConfig": {
            "type": "object",
            "properties": {
                "s3Config": {
                    "$ref": "#/definitions/github_com_usememos_memos_api_v1.StorageS3Config"
                }
            }
        },
        "github_com_usememos_memos_api_v1.StorageS3Config": {
            "type": "object",
            "properties": {
                "accessKey": {
                    "type": "string"
                },
                "bucket": {
                    "type": "string"
                },
                "endPoint": {
                    "type": "string"
                },
                "path": {
                    "type": "string"
                },
                "presign": {
                    "type": "boolean"
                },
                "region": {
                    "type": "string"
                },
                "secretKey": {
                    "type": "string"
                },
                "urlPrefix": {
                    "type": "string"
                },
                "urlSuffix": {
                    "type": "string"
                }
            }
        },
        "github_com_usememos_memos_api_v1.StorageType": {
            "type": "string",
            "enum": [
                "S3"
            ],
            "x-enum-varnames": [
                "StorageS3"
            ]
        },
        "github_com_usememos_memos_api_v1.SystemSetting": {
            "type": "object",
            "properties": {
                "description": {
                    "type": "string"
                },
                "name": {
                    "$ref": "#/definitions/github_com_usememos_memos_api_v1.SystemSettingName"
                },
                "value": {
                    "description": "Value is a JSON string with basic value.",
                    "type": "string"
                }
            }
        },
        "github_com_usememos_memos_api_v1.SystemSettingName": {
            "type": "string",
            "enum": [
                "server-id",
                "secret-session",
                "disable-public-memos",
                "max-upload-size-mib",
                "customized-profile",
                "storage-service-id",
                "local-storage-path",
                "telegram-bot-token",
                "memo-display-with-updated-ts"
            ],
            "x-enum-varnames": [
                "SystemSettingServerIDName",
                "SystemSettingSecretSessionName",
                "SystemSettingDisablePublicMemosName",
                "SystemSettingMaxUploadSizeMiBName",
                "SystemSettingCustomizedProfileName",
                "SystemSettingStorageServiceIDName",
                "SystemSettingLocalStoragePathName",
                "SystemSettingTelegramBotTokenName",
                "SystemSettingMemoDisplayWithUpdatedTsName"
            ]
        },
        "github_com_usememos_memos_api_v1.SystemStatus": {
            "type": "object",
            "properties": {
                "additionalScript": {
                    "description": "Additional script.",
                    "type": "string"
                },
                "additionalStyle": {
                    "description": "Additional style.",
                    "type": "string"
                },
                "allowSignUp": {
                    "description": "System settings\nAllow sign up.",
                    "type": "boolean"
                },
                "customizedProfile": {
                    "description": "Customized server profile, including server name and external url.",
                    "allOf": [
                        {
                            "$ref": "#/definitions/github_com_usememos_memos_api_v1.CustomizedProfile"
                        }
                    ]
                },
                "dbSize": {
                    "type": "integer"
                },
                "disablePasswordLogin": {
                    "description": "Disable password login.",
                    "type": "boolean"
                },
                "disablePublicMemos": {
                    "description": "Disable public memos.",
                    "type": "boolean"
                },
                "host": {
                    "$ref": "#/definitions/github_com_usememos_memos_api_v1.User"
                },
                "localStoragePath": {
                    "description": "Local storage path.",
                    "type": "string"
                },
                "maxUploadSizeMiB": {
                    "description": "Max upload size.",
                    "type": "integer"
                },
                "memoDisplayWithUpdatedTs": {
                    "description": "Memo display with updated timestamp.",
                    "type": "boolean"
                },
                "profile": {
                    "$ref": "#/definitions/profile.Profile"
                },
                "storageServiceId": {
                    "description": "Storage service ID.",
                    "type": "integer"
                }
            }
        },
        "github_com_usememos_memos_api_v1.UpdateIdentityProviderRequest": {
            "type": "object",
            "properties": {
                "config": {
                    "$ref": "#/definitions/github_com_usememos_memos_api_v1.IdentityProviderConfig"
                },
                "identifierFilter": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "type": {
                    "$ref": "#/definitions/github_com_usememos_memos_api_v1.IdentityProviderType"
                }
            }
        },
        "github_com_usememos_memos_api_v1.UpdateResourceRequest": {
            "type": "object",
            "properties": {
                "filename": {
                    "type": "string"
                }
            }
        },
        "github_com_usememos_memos_api_v1.UpdateStorageRequest": {
            "type": "object",
            "properties": {
                "config": {
                    "$ref": "#/definitions/github_com_usememos_memos_api_v1.StorageConfig"
                },
                "name": {
                    "type": "string"
                },
                "type": {
                    "$ref": "#/definitions/github_com_usememos_memos_api_v1.StorageType"
                }
            }
        },
        "github_com_usememos_memos_api_v1.UpdateUserRequest": {
            "type": "object",
            "properties": {
                "avatarUrl": {
                    "type": "string"
                },
                "email": {
                    "type": "string"
                },
                "nickname": {
                    "type": "string"
                },
                "password": {
                    "type": "string"
                },
                "rowStatus": {
                    "$ref": "#/definitions/github_com_usememos_memos_api_v1.RowStatus"
                },
                "username": {
                    "type": "string"
                }
            }
        },
        "github_com_usememos_memos_api_v1.UpsertMemoOrganizerRequest": {
            "type": "object",
            "properties": {
                "pinned": {
                    "type": "boolean"
                }
            }
        },
        "github_com_usememos_memos_api_v1.UpsertMemoRelationRequest": {
            "type": "object",
            "properties": {
                "relatedMemoId": {
                    "type": "integer"
                },
                "type": {
                    "$ref": "#/definitions/github_com_usememos_memos_api_v1.MemoRelationType"
                }
            }
        },
        "github_com_usememos_memos_api_v1.UpsertSystemSettingRequest": {
            "type": "object",
            "properties": {
                "description": {
                    "type": "string"
                },
                "name": {
                    "$ref": "#/definitions/github_com_usememos_memos_api_v1.SystemSettingName"
                },
                "value": {
                    "type": "string"
                }
            }
        },
        "github_com_usememos_memos_api_v1.UpsertTagRequest": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string"
                }
            }
        },
        "github_com_usememos_memos_api_v1.User": {
            "type": "object",
            "properties": {
                "avatarUrl": {
                    "type": "string"
                },
                "createdTs": {
                    "type": "integer"
                },
                "email": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "nickname": {
                    "type": "string"
                },
                "role": {
                    "$ref": "#/definitions/github_com_usememos_memos_api_v1.Role"
                },
                "rowStatus": {
                    "description": "Standard fields",
                    "allOf": [
                        {
                            "$ref": "#/definitions/github_com_usememos_memos_api_v1.RowStatus"
                        }
                    ]
                },
                "updatedTs": {
                    "type": "integer"
                },
                "username": {
                    "description": "Domain specific fields",
                    "type": "string"
                }
            }
        },
        "github_com_usememos_memos_api_v1.Visibility": {
            "type": "string",
            "enum": [
                "PUBLIC",
                "PROTECTED",
                "PRIVATE"
            ],
            "x-enum-varnames": [
                "Public",
                "Protected",
                "Private"
            ]
        },
        "profile.Profile": {
            "type": "object",
            "properties": {
                "mode": {
                    "description": "Mode can be \"prod\" or \"dev\" or \"demo\"",
                    "type": "string"
                },
                "version": {
                    "description": "Version is the current version of server",
                    "type": "string"
                }
            }
        },
        "store.FieldMapping": {
            "type": "object",
            "properties": {
                "displayName": {
                    "type": "string"
                },
                "email": {
                    "type": "string"
                },
                "identifier": {
                    "type": "string"
                }
            }
        },
        "store.IdentityProvider": {
            "type": "object",
            "properties": {
                "config": {
                    "$ref": "#/definitions/store.IdentityProviderConfig"
                },
                "id": {
                    "type": "integer"
                },
                "identifierFilter": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "type": {
                    "$ref": "#/definitions/store.IdentityProviderType"
                }
            }
        },
        "store.IdentityProviderConfig": {
            "type": "object",
            "properties": {
                "oauth2Config": {
                    "$ref": "#/definitions/store.IdentityProviderOAuth2Config"
                }
            }
        },
        "store.IdentityProviderOAuth2Config": {
            "type": "object",
            "properties": {
                "authUrl": {
                    "type": "string"
                },
                "clientId": {
                    "type": "string"
                },
                "clientSecret": {
                    "type": "string"
                },
                "fieldMapping": {
                    "$ref": "#/definitions/store.FieldMapping"
                },
                "scopes": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "tokenUrl": {
                    "type": "string"
                },
                "userInfoUrl": {
                    "type": "string"
                }
            }
        },
        "store.IdentityProviderType": {
            "type": "string",
            "enum": [
                "OAUTH2"
            ],
            "x-enum-varnames": [
                "IdentityProviderOAuth2Type"
            ]
        },
        "store.Memo": {
            "type": "object",
            "properties": {
                "content": {
                    "description": "Domain specific fields",
                    "type": "string"
                },
                "createdTs": {
                    "type": "integer"
                },
                "creatorID": {
                    "type": "integer"
                },
                "id": {
                    "type": "integer"
                },
                "parentID": {
                    "type": "integer"
                },
                "pinned": {
                    "description": "Composed fields",
                    "type": "boolean"
                },
                "resourceName": {
                    "type": "string"
                },
                "rowStatus": {
                    "description": "Standard fields",
                    "allOf": [
                        {
                            "$ref": "#/definitions/store.RowStatus"
                        }
                    ]
                },
                "updatedTs": {
                    "type": "integer"
                },
                "visibility": {
                    "$ref": "#/definitions/store.Visibility"
                }
            }
        },
        "store.MemoRelation": {
            "type": "object",
            "properties": {
                "memoID": {
                    "type": "integer"
                },
                "relatedMemoID": {
                    "type": "integer"
                },
                "type": {
                    "$ref": "#/definitions/store.MemoRelationType"
                }
            }
        },
        "store.MemoRelationType": {
            "type": "string",
            "enum": [
                "REFERENCE",
                "COMMENT"
            ],
            "x-enum-varnames": [
                "MemoRelationReference",
                "MemoRelationComment"
            ]
        },
        "store.Resource": {
            "type": "object",
            "properties": {
                "blob": {
                    "type": "array",
                    "items": {
                        "type": "integer"
                    }
                },
                "createdTs": {
                    "type": "integer"
                },
                "creatorID": {
                    "description": "Standard fields",
                    "type": "integer"
                },
                "externalLink": {
                    "type": "string"
                },
                "filename": {
                    "description": "Domain specific fields",
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "internalPath": {
                    "type": "string"
                },
                "memoID": {
                    "type": "integer"
                },
                "resourceName": {
                    "type": "string"
                },
                "size": {
                    "type": "integer"
                },
                "type": {
                    "type": "string"
                },
                "updatedTs": {
                    "type": "integer"
                }
            }
        },
        "store.Role": {
            "type": "string",
            "enum": [
                "HOST",
                "ADMIN",
                "USER"
            ],
            "x-enum-varnames": [
                "RoleHost",
                "RoleAdmin",
                "RoleUser"
            ]
        },
        "store.RowStatus": {
            "type": "string",
            "enum": [
                "NORMAL",
                "ARCHIVED"
            ],
            "x-enum-varnames": [
                "Normal",
                "Archived"
            ]
        },
        "store.Storage": {
            "type": "object",
            "properties": {
                "config": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "name": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                }
            }
        },
        "store.User": {
            "type": "object",
            "properties": {
                "avatarURL": {
                    "type": "string"
                },
                "createdTs": {
                    "type": "integer"
                },
                "email": {
                    "type": "string"
                },
                "id": {
                    "type": "integer"
                },
                "nickname": {
                    "type": "string"
                },
                "passwordHash": {
                    "type": "string"
                },
                "role": {
                    "$ref": "#/definitions/store.Role"
                },
                "rowStatus": {
                    "description": "Standard fields",
                    "allOf": [
                        {
                            "$ref": "#/definitions/store.RowStatus"
                        }
                    ]
                },
                "updatedTs": {
                    "type": "integer"
                },
                "username": {
                    "description": "Domain specific fields",
                    "type": "string"
                }
            }
        },
        "store.Visibility": {
            "type": "string",
            "enum": [
                "PUBLIC",
                "PROTECTED",
                "PRIVATE"
            ],
            "x-enum-varnames": [
                "Public",
                "Protected",
                "Private"
            ]
        }
    },
    "externalDocs": {
        "description": "Find out more about Memos.",
        "url": "https://usememos.com/"
    }
}`

// SwaggerInfo holds exported Swagger Info so clients can modify it
var SwaggerInfo = &swag.Spec{
	Version:          "1.0",
	Host:             "",
	BasePath:         "/",
	Schemes:          []string{},
	Title:            "memos API",
	Description:      "A privacy-first, lightweight note-taking service.",
	InfoInstanceName: "swagger",
	SwaggerTemplate:  docTemplate,
	LeftDelim:        "{{",
	RightDelim:       "}}",
}

func init() {
	swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo)
}
