basePath: /
definitions:
  api_v1.CreateIdentityProviderRequest:
    properties:
      config:
        $ref: '#/definitions/api_v1.IdentityProviderConfig'
      identifierFilter:
        type: string
      name:
        type: string
      type:
        $ref: '#/definitions/api_v1.IdentityProviderType'
    type: object
  api_v1.CreateMemoRequest:
    properties:
      content:
        type: string
      createdTs:
        type: integer
      relationList:
        items:
          $ref: '#/definitions/api_v1.UpsertMemoRelationRequest'
        type: array
      resourceIdList:
        description: Related fields
        items:
          type: integer
        type: array
      visibility:
        allOf:
        - $ref: '#/definitions/api_v1.Visibility'
        description: Domain specific fields
    type: object
  api_v1.CreateResourceRequest:
    properties:
      externalLink:
        type: string
      filename:
        type: string
      type:
        type: string
    type: object
  api_v1.CreateStorageRequest:
    properties:
      config:
        $ref: '#/definitions/api_v1.StorageConfig'
      name:
        type: string
      type:
        $ref: '#/definitions/api_v1.StorageType'
    type: object
  api_v1.CreateUserRequest:
    properties:
      email:
        type: string
      nickname:
        type: string
      password:
        type: string
      role:
        $ref: '#/definitions/api_v1.Role'
      username:
        type: string
    type: object
  api_v1.CustomizedProfile:
    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
    type: object
  api_v1.DeleteTagRequest:
    properties:
      name:
        type: string
    type: object
  api_v1.FieldMapping:
    properties:
      displayName:
        type: string
      email:
        type: string
      identifier:
        type: string
    type: object
  api_v1.IdentityProvider:
    properties:
      config:
        $ref: '#/definitions/api_v1.IdentityProviderConfig'
      id:
        type: integer
      identifierFilter:
        type: string
      name:
        type: string
      type:
        $ref: '#/definitions/api_v1.IdentityProviderType'
    type: object
  api_v1.IdentityProviderConfig:
    properties:
      oauth2Config:
        $ref: '#/definitions/api_v1.IdentityProviderOAuth2Config'
    type: object
  api_v1.IdentityProviderOAuth2Config:
    properties:
      authUrl:
        type: string
      clientId:
        type: string
      clientSecret:
        type: string
      fieldMapping:
        $ref: '#/definitions/api_v1.FieldMapping'
      scopes:
        items:
          type: string
        type: array
      tokenUrl:
        type: string
      userInfoUrl:
        type: string
    type: object
  api_v1.IdentityProviderType:
    enum:
    - OAUTH2
    type: string
    x-enum-varnames:
    - IdentityProviderOAuth2Type
  api_v1.MemoRelationType:
    enum:
    - REFERENCE
    - COMMENT
    type: string
    x-enum-varnames:
    - MemoRelationReference
    - MemoRelationComment
  api_v1.PatchMemoRequest:
    properties:
      content:
        description: Domain specific fields
        type: string
      createdTs:
        description: Standard fields
        type: integer
      relationList:
        items:
          $ref: '#/definitions/api_v1.UpsertMemoRelationRequest'
        type: array
      resourceIdList:
        description: Related fields
        items:
          type: integer
        type: array
      rowStatus:
        $ref: '#/definitions/api_v1.RowStatus'
      updatedTs:
        type: integer
      visibility:
        $ref: '#/definitions/api_v1.Visibility'
    type: object
  api_v1.Role:
    enum:
    - HOST
    - ADMIN
    - USER
    type: string
    x-enum-varnames:
    - RoleHost
    - RoleAdmin
    - RoleUser
  api_v1.RowStatus:
    enum:
    - NORMAL
    - ARCHIVED
    type: string
    x-enum-varnames:
    - Normal
    - Archived
  api_v1.SSOSignIn:
    properties:
      code:
        type: string
      identityProviderId:
        type: integer
      redirectUri:
        type: string
    type: object
  api_v1.SignIn:
    properties:
      password:
        type: string
      remember:
        type: boolean
      username:
        type: string
    type: object
  api_v1.SignUp:
    properties:
      password:
        type: string
      username:
        type: string
    type: object
  api_v1.StorageConfig:
    properties:
      s3Config:
        $ref: '#/definitions/api_v1.StorageS3Config'
    type: object
  api_v1.StorageS3Config:
    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
    type: object
  api_v1.StorageType:
    enum:
    - S3
    type: string
    x-enum-varnames:
    - StorageS3
  api_v1.SystemSetting:
    properties:
      description:
        type: string
      name:
        $ref: '#/definitions/api_v1.SystemSettingName'
      value:
        description: Value is a JSON string with basic value.
        type: string
    type: object
  api_v1.SystemSettingName:
    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
    type: string
    x-enum-varnames:
    - SystemSettingServerIDName
    - SystemSettingSecretSessionName
    - SystemSettingDisablePublicMemosName
    - SystemSettingMaxUploadSizeMiBName
    - SystemSettingCustomizedProfileName
    - SystemSettingStorageServiceIDName
    - SystemSettingLocalStoragePathName
    - SystemSettingTelegramBotTokenName
    - SystemSettingMemoDisplayWithUpdatedTsName
  api_v1.SystemStatus:
    properties:
      additionalScript:
        description: Additional script.
        type: string
      additionalStyle:
        description: Additional style.
        type: string
      allowSignUp:
        description: |-
          System settings
          Allow sign up.
        type: boolean
      customizedProfile:
        allOf:
        - $ref: '#/definitions/api_v1.CustomizedProfile'
        description: Customized server profile, including server name and external
          url.
      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
    type: object
  api_v1.UpdateIdentityProviderRequest:
    properties:
      config:
        $ref: '#/definitions/api_v1.IdentityProviderConfig'
      identifierFilter:
        type: string
      name:
        type: string
      type:
        $ref: '#/definitions/api_v1.IdentityProviderType'
    type: object
  api_v1.UpdateResourceRequest:
    properties:
      filename:
        type: string
    type: object
  api_v1.UpdateStorageRequest:
    properties:
      config:
        $ref: '#/definitions/api_v1.StorageConfig'
      name:
        type: string
      type:
        $ref: '#/definitions/api_v1.StorageType'
    type: object
  api_v1.UpdateUserRequest:
    properties:
      avatarUrl:
        type: string
      email:
        type: string
      nickname:
        type: string
      password:
        type: string
      rowStatus:
        $ref: '#/definitions/api_v1.RowStatus'
      username:
        type: string
    type: object
  api_v1.UpsertMemoOrganizerRequest:
    properties:
      pinned:
        type: boolean
    type: object
  api_v1.UpsertMemoRelationRequest:
    properties:
      relatedMemoId:
        type: integer
      type:
        $ref: '#/definitions/api_v1.MemoRelationType'
    type: object
  api_v1.UpsertSystemSettingRequest:
    properties:
      description:
        type: string
      name:
        $ref: '#/definitions/api_v1.SystemSettingName'
      value:
        type: string
    type: object
  api_v1.UpsertTagRequest:
    properties:
      name:
        type: string
    type: object
  api_v1.User:
    properties:
      avatarUrl:
        type: string
      createdTs:
        type: integer
      email:
        type: string
      id:
        type: integer
      nickname:
        type: string
      role:
        $ref: '#/definitions/api_v1.Role'
      rowStatus:
        allOf:
        - $ref: '#/definitions/api_v1.RowStatus'
        description: Standard fields
      updatedTs:
        type: integer
      username:
        description: Domain specific fields
        type: string
    type: object
  api_v1.Visibility:
    enum:
    - PUBLIC
    - PROTECTED
    - PRIVATE
    type: string
    x-enum-varnames:
    - Public
    - Protected
    - Private
  github_com_usememos_memos_api_v1.CreateIdentityProviderRequest:
    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'
    type: object
  github_com_usememos_memos_api_v1.CreateMemoRequest:
    properties:
      content:
        type: string
      createdTs:
        type: integer
      relationList:
        items:
          $ref: '#/definitions/github_com_usememos_memos_api_v1.UpsertMemoRelationRequest'
        type: array
      resourceIdList:
        description: Related fields
        items:
          type: integer
        type: array
      visibility:
        allOf:
        - $ref: '#/definitions/github_com_usememos_memos_api_v1.Visibility'
        description: Domain specific fields
    type: object
  github_com_usememos_memos_api_v1.CreateResourceRequest:
    properties:
      externalLink:
        type: string
      filename:
        type: string
      type:
        type: string
    type: object
  github_com_usememos_memos_api_v1.CreateStorageRequest:
    properties:
      config:
        $ref: '#/definitions/github_com_usememos_memos_api_v1.StorageConfig'
      name:
        type: string
      type:
        $ref: '#/definitions/github_com_usememos_memos_api_v1.StorageType'
    type: object
  github_com_usememos_memos_api_v1.CreateUserRequest:
    properties:
      email:
        type: string
      nickname:
        type: string
      password:
        type: string
      role:
        $ref: '#/definitions/github_com_usememos_memos_api_v1.Role'
      username:
        type: string
    type: object
  github_com_usememos_memos_api_v1.CustomizedProfile:
    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
    type: object
  github_com_usememos_memos_api_v1.DeleteTagRequest:
    properties:
      name:
        type: string
    type: object
  github_com_usememos_memos_api_v1.FieldMapping:
    properties:
      displayName:
        type: string
      email:
        type: string
      identifier:
        type: string
    type: object
  github_com_usememos_memos_api_v1.IdentityProvider:
    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'
    type: object
  github_com_usememos_memos_api_v1.IdentityProviderConfig:
    properties:
      oauth2Config:
        $ref: '#/definitions/github_com_usememos_memos_api_v1.IdentityProviderOAuth2Config'
    type: object
  github_com_usememos_memos_api_v1.IdentityProviderOAuth2Config:
    properties:
      authUrl:
        type: string
      clientId:
        type: string
      clientSecret:
        type: string
      fieldMapping:
        $ref: '#/definitions/github_com_usememos_memos_api_v1.FieldMapping'
      scopes:
        items:
          type: string
        type: array
      tokenUrl:
        type: string
      userInfoUrl:
        type: string
    type: object
  github_com_usememos_memos_api_v1.IdentityProviderType:
    enum:
    - OAUTH2
    type: string
    x-enum-varnames:
    - IdentityProviderOAuth2Type
  github_com_usememos_memos_api_v1.MemoRelationType:
    enum:
    - REFERENCE
    - COMMENT
    type: string
    x-enum-varnames:
    - MemoRelationReference
    - MemoRelationComment
  github_com_usememos_memos_api_v1.PatchMemoRequest:
    properties:
      content:
        description: Domain specific fields
        type: string
      createdTs:
        description: Standard fields
        type: integer
      relationList:
        items:
          $ref: '#/definitions/github_com_usememos_memos_api_v1.UpsertMemoRelationRequest'
        type: array
      resourceIdList:
        description: Related fields
        items:
          type: integer
        type: array
      rowStatus:
        $ref: '#/definitions/github_com_usememos_memos_api_v1.RowStatus'
      updatedTs:
        type: integer
      visibility:
        $ref: '#/definitions/github_com_usememos_memos_api_v1.Visibility'
    type: object
  github_com_usememos_memos_api_v1.Role:
    enum:
    - HOST
    - ADMIN
    - USER
    type: string
    x-enum-varnames:
    - RoleHost
    - RoleAdmin
    - RoleUser
  github_com_usememos_memos_api_v1.RowStatus:
    enum:
    - NORMAL
    - ARCHIVED
    type: string
    x-enum-varnames:
    - Normal
    - Archived
  github_com_usememos_memos_api_v1.SSOSignIn:
    properties:
      code:
        type: string
      identityProviderId:
        type: integer
      redirectUri:
        type: string
    type: object
  github_com_usememos_memos_api_v1.SignIn:
    properties:
      password:
        type: string
      remember:
        type: boolean
      username:
        type: string
    type: object
  github_com_usememos_memos_api_v1.SignUp:
    properties:
      password:
        type: string
      username:
        type: string
    type: object
  github_com_usememos_memos_api_v1.StorageConfig:
    properties:
      s3Config:
        $ref: '#/definitions/github_com_usememos_memos_api_v1.StorageS3Config'
    type: object
  github_com_usememos_memos_api_v1.StorageS3Config:
    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
    type: object
  github_com_usememos_memos_api_v1.StorageType:
    enum:
    - S3
    type: string
    x-enum-varnames:
    - StorageS3
  github_com_usememos_memos_api_v1.SystemSetting:
    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
    type: object
  github_com_usememos_memos_api_v1.SystemSettingName:
    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
    type: string
    x-enum-varnames:
    - SystemSettingServerIDName
    - SystemSettingSecretSessionName
    - SystemSettingDisablePublicMemosName
    - SystemSettingMaxUploadSizeMiBName
    - SystemSettingCustomizedProfileName
    - SystemSettingStorageServiceIDName
    - SystemSettingLocalStoragePathName
    - SystemSettingTelegramBotTokenName
    - SystemSettingMemoDisplayWithUpdatedTsName
  github_com_usememos_memos_api_v1.SystemStatus:
    properties:
      additionalScript:
        description: Additional script.
        type: string
      additionalStyle:
        description: Additional style.
        type: string
      allowSignUp:
        description: |-
          System settings
          Allow sign up.
        type: boolean
      customizedProfile:
        allOf:
        - $ref: '#/definitions/github_com_usememos_memos_api_v1.CustomizedProfile'
        description: Customized server profile, including server name and external
          url.
      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
    type: object
  github_com_usememos_memos_api_v1.UpdateIdentityProviderRequest:
    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'
    type: object
  github_com_usememos_memos_api_v1.UpdateResourceRequest:
    properties:
      filename:
        type: string
    type: object
  github_com_usememos_memos_api_v1.UpdateStorageRequest:
    properties:
      config:
        $ref: '#/definitions/github_com_usememos_memos_api_v1.StorageConfig'
      name:
        type: string
      type:
        $ref: '#/definitions/github_com_usememos_memos_api_v1.StorageType'
    type: object
  github_com_usememos_memos_api_v1.UpdateUserRequest:
    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
    type: object
  github_com_usememos_memos_api_v1.UpsertMemoOrganizerRequest:
    properties:
      pinned:
        type: boolean
    type: object
  github_com_usememos_memos_api_v1.UpsertMemoRelationRequest:
    properties:
      relatedMemoId:
        type: integer
      type:
        $ref: '#/definitions/github_com_usememos_memos_api_v1.MemoRelationType'
    type: object
  github_com_usememos_memos_api_v1.UpsertSystemSettingRequest:
    properties:
      description:
        type: string
      name:
        $ref: '#/definitions/github_com_usememos_memos_api_v1.SystemSettingName'
      value:
        type: string
    type: object
  github_com_usememos_memos_api_v1.UpsertTagRequest:
    properties:
      name:
        type: string
    type: object
  github_com_usememos_memos_api_v1.User:
    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:
        allOf:
        - $ref: '#/definitions/github_com_usememos_memos_api_v1.RowStatus'
        description: Standard fields
      updatedTs:
        type: integer
      username:
        description: Domain specific fields
        type: string
    type: object
  github_com_usememos_memos_api_v1.Visibility:
    enum:
    - PUBLIC
    - PROTECTED
    - PRIVATE
    type: string
    x-enum-varnames:
    - Public
    - Protected
    - Private
  profile.Profile:
    properties:
      mode:
        description: Mode can be "prod" or "dev" or "demo"
        type: string
      version:
        description: Version is the current version of server
        type: string
    type: object
  store.FieldMapping:
    properties:
      displayName:
        type: string
      email:
        type: string
      identifier:
        type: string
    type: object
  store.IdentityProvider:
    properties:
      config:
        $ref: '#/definitions/store.IdentityProviderConfig'
      id:
        type: integer
      identifierFilter:
        type: string
      name:
        type: string
      type:
        $ref: '#/definitions/store.IdentityProviderType'
    type: object
  store.IdentityProviderConfig:
    properties:
      oauth2Config:
        $ref: '#/definitions/store.IdentityProviderOAuth2Config'
    type: object
  store.IdentityProviderOAuth2Config:
    properties:
      authUrl:
        type: string
      clientId:
        type: string
      clientSecret:
        type: string
      fieldMapping:
        $ref: '#/definitions/store.FieldMapping'
      scopes:
        items:
          type: string
        type: array
      tokenUrl:
        type: string
      userInfoUrl:
        type: string
    type: object
  store.IdentityProviderType:
    enum:
    - OAUTH2
    type: string
    x-enum-varnames:
    - IdentityProviderOAuth2Type
  store.Memo:
    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:
        allOf:
        - $ref: '#/definitions/store.RowStatus'
        description: Standard fields
      updatedTs:
        type: integer
      visibility:
        $ref: '#/definitions/store.Visibility'
    type: object
  store.MemoRelation:
    properties:
      memoID:
        type: integer
      relatedMemoID:
        type: integer
      type:
        $ref: '#/definitions/store.MemoRelationType'
    type: object
  store.MemoRelationType:
    enum:
    - REFERENCE
    - COMMENT
    type: string
    x-enum-varnames:
    - MemoRelationReference
    - MemoRelationComment
  store.Resource:
    properties:
      blob:
        items:
          type: integer
        type: array
      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
    type: object
  store.Role:
    enum:
    - HOST
    - ADMIN
    - USER
    type: string
    x-enum-varnames:
    - RoleHost
    - RoleAdmin
    - RoleUser
  store.RowStatus:
    enum:
    - NORMAL
    - ARCHIVED
    type: string
    x-enum-varnames:
    - Normal
    - Archived
  store.Storage:
    properties:
      config:
        type: string
      id:
        type: integer
      name:
        type: string
      type:
        type: string
    type: object
  store.User:
    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:
        allOf:
        - $ref: '#/definitions/store.RowStatus'
        description: Standard fields
      updatedTs:
        type: integer
      username:
        description: Domain specific fields
        type: string
    type: object
  store.Visibility:
    enum:
    - PUBLIC
    - PROTECTED
    - PRIVATE
    type: string
    x-enum-varnames:
    - Public
    - Protected
    - Private
externalDocs:
  description: Find out more about Memos.
  url: https://usememos.com/
info:
  contact:
    name: API Support
    url: https://github.com/orgs/usememos/discussions
  description: A privacy-first, lightweight note-taking service.
  license:
    name: MIT License
    url: https://github.com/usememos/memos/blob/main/LICENSE
  title: memos API
  version: "1.0"
paths:
  /api/v1/auth/signin:
    post:
      consumes:
      - application/json
      parameters:
      - description: Sign-in object
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/github_com_usememos_memos_api_v1.SignIn'
      produces:
      - application/json
      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
      summary: Sign-in to memos.
      tags:
      - auth
  /api/v1/auth/signin/sso:
    post:
      consumes:
      - application/json
      parameters:
      - description: SSO sign-in object
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/github_com_usememos_memos_api_v1.SSOSignIn'
      produces:
      - application/json
      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
      summary: Sign-in to memos using SSO.
      tags:
      - auth
  /api/v1/auth/signout:
    post:
      produces:
      - application/json
      responses:
        "200":
          description: Sign-out success
          schema:
            type: boolean
      summary: Sign-out from memos.
      tags:
      - auth
  /api/v1/auth/signup:
    post:
      consumes:
      - application/json
      parameters:
      - description: Sign-up object
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/github_com_usememos_memos_api_v1.SignUp'
      produces:
      - application/json
      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
      summary: Sign-up to memos.
      tags:
      - auth
  /api/v1/idp:
    get:
      description: '*clientSecret is only available for host user'
      produces:
      - application/json
      responses:
        "200":
          description: List of available identity providers
          schema:
            items:
              $ref: '#/definitions/api_v1.IdentityProvider'
            type: array
        "500":
          description: Failed to find identity provider list | Failed to find user
      summary: Get a list of identity providers
      tags:
      - idp
    post:
      consumes:
      - application/json
      parameters:
      - description: Identity provider information
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/api_v1.CreateIdentityProviderRequest'
      produces:
      - application/json
      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
      summary: Create Identity Provider
      tags:
      - idp
  /api/v1/idp/{idpId}:
    delete:
      consumes:
      - application/json
      parameters:
      - description: Identity Provider ID
        in: path
        name: idpId
        required: true
        type: integer
      produces:
      - application/json
      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
      summary: Delete an identity provider by ID
      tags:
      - idp
    get:
      consumes:
      - application/json
      parameters:
      - description: Identity provider ID
        in: path
        name: idpId
        required: true
        type: integer
      produces:
      - application/json
      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
      summary: Get an identity provider by ID
      tags:
      - idp
    patch:
      consumes:
      - application/json
      parameters:
      - description: Identity Provider ID
        in: path
        name: idpId
        required: true
        type: integer
      - description: Patched identity provider information
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/api_v1.UpdateIdentityProviderRequest'
      produces:
      - application/json
      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
      summary: Update an identity provider by ID
      tags:
      - idp
  /api/v1/memo:
    get:
      parameters:
      - description: Creator ID
        in: query
        name: creatorId
        type: integer
      - description: Creator username
        in: query
        name: creatorUsername
        type: string
      - description: Row status
        enum:
        - NORMAL
        - ARCHIVED
        in: query
        name: rowStatus
        type: string
      - description: Pinned
        in: query
        name: pinned
        type: boolean
      - description: 'Search for tag. Do not append #'
        in: query
        name: tag
        type: string
      - description: Search for content
        in: query
        name: content
        type: string
      - description: Limit
        in: query
        name: limit
        type: integer
      - description: Offset
        in: query
        name: offset
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: Memo list
          schema:
            items:
              $ref: '#/definitions/store.Memo'
            type: array
        "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
      summary: Get a list of memos matching optional filters
      tags:
      - memo
    post:
      consumes:
      - application/json
      description: |-
        Visibility can be PUBLIC, PROTECTED or PRIVATE
        *You should omit fields to use their default values
      parameters:
      - description: Request object.
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/github_com_usememos_memos_api_v1.CreateMemoRequest'
      produces:
      - application/json
      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
      summary: Create a memo
      tags:
      - memo
  /api/v1/memo/{memoId}:
    delete:
      parameters:
      - description: Memo ID to delete
        in: path
        name: memoId
        required: true
        type: integer
      produces:
      - application/json
      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'
      summary: Delete memo by ID
      tags:
      - memo
    get:
      parameters:
      - description: Memo ID
        in: path
        name: memoId
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: Memo list
          schema:
            items:
              $ref: '#/definitions/store.Memo'
            type: array
        "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'
      summary: Get memo by ID
      tags:
      - memo
    patch:
      consumes:
      - application/json
      description: |-
        Visibility can be PUBLIC, PROTECTED or PRIVATE
        *You should omit fields to use their default values
      parameters:
      - description: ID of memo to update
        in: path
        name: memoId
        required: true
        type: integer
      - description: Patched object.
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/github_com_usememos_memos_api_v1.PatchMemoRequest'
      produces:
      - application/json
      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
      summary: Update a memo
      tags:
      - memo
  /api/v1/memo/{memoId}/organizer:
    post:
      consumes:
      - application/json
      parameters:
      - description: ID of memo to organize
        in: path
        name: memoId
        required: true
        type: integer
      - description: Memo organizer object
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/github_com_usememos_memos_api_v1.UpsertMemoOrganizerRequest'
      produces:
      - application/json
      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'
      summary: Organize memo (pin/unpin)
      tags:
      - memo-organizer
  /api/v1/memo/{memoId}/relation:
    get:
      consumes:
      - application/json
      parameters:
      - description: ID of memo to find relations
        in: path
        name: memoId
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: Memo relation information list
          schema:
            items:
              $ref: '#/definitions/store.MemoRelation'
            type: array
        "400":
          description: 'ID is not a number: %s'
        "500":
          description: Failed to list memo relations
      summary: Get a list of Memo Relations
      tags:
      - memo-relation
    post:
      consumes:
      - application/json
      description: Create a relation between two memos
      parameters:
      - description: ID of memo to relate
        in: path
        name: memoId
        required: true
        type: integer
      - description: Memo relation object
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/github_com_usememos_memos_api_v1.UpsertMemoRelationRequest'
      produces:
      - application/json
      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
      summary: Create Memo Relation
      tags:
      - memo-relation
  /api/v1/memo/{memoId}/relation/{relatedMemoId}/type/{relationType}:
    delete:
      consumes:
      - application/json
      description: Removes a relation between two memos
      parameters:
      - description: ID of memo to find relations
        in: path
        name: memoId
        required: true
        type: integer
      - description: ID of memo to remove relation to
        in: path
        name: relatedMemoId
        required: true
        type: integer
      - description: Type of relation to remove
        enum:
        - REFERENCE
        - COMMENT
        in: path
        name: relationType
        required: true
        type: string
      produces:
      - application/json
      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
      summary: Delete a Memo Relation
      tags:
      - memo-relation
  /api/v1/memo/all:
    get:
      description: |-
        This should also list protected memos if the user is logged in
        Authentication is optional
      parameters:
      - description: Limit
        in: query
        name: limit
        type: integer
      - description: Offset
        in: query
        name: offset
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: Memo list
          schema:
            items:
              $ref: '#/definitions/store.Memo'
            type: array
        "500":
          description: Failed to get memo display with updated ts setting value |
            Failed to fetch all memo list | Failed to compose memo response
      summary: Get a list of public memos matching optional filters
      tags:
      - memo
  /api/v1/memo/stats:
    get:
      description: Used to generate the heatmap
      parameters:
      - description: Creator ID
        in: query
        name: creatorId
        type: integer
      - description: Creator username
        in: query
        name: creatorUsername
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: Memo createdTs list
          schema:
            items:
              type: integer
            type: array
        "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
      summary: Get memo stats by creator ID or username
      tags:
      - memo
  /api/v1/ping:
    get:
      produces:
      - application/json
      responses:
        "200":
          description: If succeed to ping the system
          schema:
            type: boolean
      summary: Ping the system
      tags:
      - system
  /api/v1/resource:
    get:
      parameters:
      - description: Limit
        in: query
        name: limit
        type: integer
      - description: Offset
        in: query
        name: offset
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: Resource list
          schema:
            items:
              $ref: '#/definitions/store.Resource'
            type: array
        "401":
          description: Missing user in session
        "500":
          description: Failed to fetch resource list
      summary: Get a list of resources
      tags:
      - resource
    post:
      consumes:
      - application/json
      parameters:
      - description: Request object.
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/api_v1.CreateResourceRequest'
      produces:
      - application/json
      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
      summary: Create resource
      tags:
      - resource
  /api/v1/resource/{resourceId}:
    delete:
      parameters:
      - description: Resource ID
        in: path
        name: resourceId
        required: true
        type: integer
      produces:
      - application/json
      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
      summary: Delete a resource
      tags:
      - resource
    patch:
      parameters:
      - description: Resource ID
        in: path
        name: resourceId
        required: true
        type: integer
      - description: Patch resource request
        in: body
        name: patch
        required: true
        schema:
          $ref: '#/definitions/api_v1.UpdateResourceRequest'
      produces:
      - application/json
      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
      summary: Update a resource
      tags:
      - resource
  /api/v1/resource/blob:
    post:
      consumes:
      - multipart/form-data
      parameters:
      - description: File to upload
        in: formData
        name: file
        required: true
        type: file
      produces:
      - application/json
      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
      summary: Upload resource
      tags:
      - resource
  /api/v1/status:
    get:
      produces:
      - application/json
      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
      summary: Get system GetSystemStatus
      tags:
      - system
  /api/v1/storage:
    get:
      produces:
      - application/json
      responses:
        "200":
          description: List of storages
          schema:
            items:
              $ref: '#/definitions/store.Storage'
            type: array
        "401":
          description: Missing user in session | Unauthorized
        "500":
          description: Failed to find user | Failed to convert storage
      summary: Get a list of storages
      tags:
      - storage
    post:
      consumes:
      - application/json
      parameters:
      - description: Request object.
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/github_com_usememos_memos_api_v1.CreateStorageRequest'
      produces:
      - application/json
      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
      summary: Create storage
      tags:
      - storage
  /api/v1/storage/{storageId}:
    delete:
      parameters:
      - description: Storage ID
        in: path
        name: storageId
        required: true
        type: integer
      produces:
      - application/json
      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
      summary: Delete a storage
      tags:
      - storage
    patch:
      parameters:
      - description: Storage ID
        in: path
        name: storageId
        required: true
        type: integer
      - description: Patch request
        in: body
        name: patch
        required: true
        schema:
          $ref: '#/definitions/github_com_usememos_memos_api_v1.UpdateStorageRequest'
      produces:
      - application/json
      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
      summary: Update a storage
      tags:
      - storage
  /api/v1/system/setting:
    get:
      produces:
      - application/json
      responses:
        "200":
          description: System setting list
          schema:
            items:
              $ref: '#/definitions/api_v1.SystemSetting'
            type: array
        "401":
          description: Missing user in session | Unauthorized
        "500":
          description: Failed to find user | Failed to find system setting list
      summary: Get a list of system settings
      tags:
      - system-setting
    post:
      consumes:
      - application/json
      parameters:
      - description: Request object.
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/api_v1.UpsertSystemSettingRequest'
      produces:
      - application/json
      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
      summary: Create system setting
      tags:
      - system-setting
  /api/v1/system/vacuum:
    post:
      produces:
      - application/json
      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
      summary: Vacuum the database
      tags:
      - system
  /api/v1/tag:
    get:
      produces:
      - application/json
      responses:
        "200":
          description: Tag list
          schema:
            items:
              type: string
            type: array
        "400":
          description: Missing user id to find tag
        "500":
          description: Failed to find tag list
      summary: Get a list of tags
      tags:
      - tag
    post:
      consumes:
      - application/json
      parameters:
      - description: Request object.
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/github_com_usememos_memos_api_v1.UpsertTagRequest'
      produces:
      - application/json
      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
      summary: Create a tag
      tags:
      - tag
  /api/v1/tag/delete:
    post:
      consumes:
      - application/json
      parameters:
      - description: Request object.
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/github_com_usememos_memos_api_v1.DeleteTagRequest'
      produces:
      - application/json
      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'
      summary: Delete a tag
      tags:
      - tag
  /api/v1/tag/suggestion:
    get:
      produces:
      - application/json
      responses:
        "200":
          description: Tag list
          schema:
            items:
              type: string
            type: array
        "400":
          description: Missing user session
        "500":
          description: Failed to find memo list | Failed to find tag list
      summary: Get a list of tags suggested from other memos contents
      tags:
      - tag
  /api/v1/user:
    get:
      produces:
      - application/json
      responses:
        "200":
          description: User list
          schema:
            items:
              $ref: '#/definitions/store.User'
            type: array
        "500":
          description: Failed to fetch user list
      summary: Get a list of users
      tags:
      - user
    post:
      consumes:
      - application/json
      parameters:
      - description: Request object
        in: body
        name: body
        required: true
        schema:
          $ref: '#/definitions/api_v1.CreateUserRequest'
      produces:
      - application/json
      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
      summary: Create a user
      tags:
      - user
  /api/v1/user/{id}:
    delete:
      parameters:
      - description: User ID
        in: path
        name: id
        required: true
        type: string
      produces:
      - application/json
      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
      summary: Delete a user
      tags:
      - user
    get:
      parameters:
      - description: User ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      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
      summary: Get user by id
      tags:
      - user
    patch:
      parameters:
      - description: User ID
        in: path
        name: id
        required: true
        type: string
      - description: Patch request
        in: body
        name: patch
        required: true
        schema:
          $ref: '#/definitions/api_v1.UpdateUserRequest'
      produces:
      - application/json
      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
      summary: Update a user
      tags:
      - user
  /api/v1/user/me:
    get:
      produces:
      - application/json
      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
      summary: Get current user
      tags:
      - user
  /api/v1/user/name/{username}:
    get:
      parameters:
      - description: Username
        in: path
        name: username
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: Requested user
          schema:
            $ref: '#/definitions/store.User'
        "404":
          description: User not found
        "500":
          description: Failed to find user
      summary: Get user by username
      tags:
      - user
  /o/get/GetImage:
    get:
      parameters:
      - description: Image url
        in: query
        name: url
        required: true
        type: string
      produces:
      - GetImage/*
      responses:
        "200":
          description: Image
        "400":
          description: 'Missing GetImage url | Wrong url | Failed to get GetImage
            url: %s'
        "500":
          description: Failed to write GetImage blob
      summary: Get GetImage from URL
      tags:
      - image-url
swagger: "2.0"
