Adds automatically background refresh of all external links if they are belongs to the current blob (S3) storage. The feature is disabled by default in order to keep backward compatibility. The background go-routine spawns once during startup and periodically signs and updates external links if that links belongs to current S3 storage. The original idea was to sign external links on-demand, however, with current architecture it will require duplicated code in plenty of places. If do it, the changes will be quite invasive and in the end pointless: I believe, the architecture will be eventually updated to give more scalable way for pluggable storage. For example - Upload/Download interface without hard dependency on external link. There are stubs already, but I don't feel confident enough to change significant part of the application architecture.
2345 lines
61 KiB
YAML
2345 lines
61 KiB
YAML
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
|
|
externalUrl:
|
|
description: ExternalURL is the external url of server. e.g. https://usermemos.com
|
|
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
|
|
region:
|
|
type: string
|
|
secretKey:
|
|
type: string
|
|
urlPrefix:
|
|
type: string
|
|
urlSuffix:
|
|
type: string
|
|
presign:
|
|
type: boolean
|
|
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
|
|
- allow-signup
|
|
- disable-password-login
|
|
- disable-public-memos
|
|
- max-upload-size-mib
|
|
- additional-style
|
|
- additional-script
|
|
- customized-profile
|
|
- storage-service-id
|
|
- local-storage-path
|
|
- telegram-bot-token
|
|
- memo-display-with-updated-ts
|
|
- instance-url
|
|
type: string
|
|
x-enum-varnames:
|
|
- SystemSettingServerIDName
|
|
- SystemSettingSecretSessionName
|
|
- SystemSettingAllowSignUpName
|
|
- SystemSettingDisablePasswordLoginName
|
|
- SystemSettingDisablePublicMemosName
|
|
- SystemSettingMaxUploadSizeMiBName
|
|
- SystemSettingAdditionalStyleName
|
|
- SystemSettingAdditionalScriptName
|
|
- SystemSettingCustomizedProfileName
|
|
- SystemSettingStorageServiceIDName
|
|
- SystemSettingLocalStoragePathName
|
|
- SystemSettingTelegramBotTokenName
|
|
- SystemSettingMemoDisplayWithUpdatedTsName
|
|
- SystemSettingInstanceURLName
|
|
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
|
|
externalUrl:
|
|
description: ExternalURL is the external url of server. e.g. https://usermemos.com
|
|
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
|
|
region:
|
|
type: string
|
|
secretKey:
|
|
type: string
|
|
urlPrefix:
|
|
type: string
|
|
urlSuffix:
|
|
type: string
|
|
presign:
|
|
type: boolean
|
|
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
|
|
- allow-signup
|
|
- disable-password-login
|
|
- disable-public-memos
|
|
- max-upload-size-mib
|
|
- additional-style
|
|
- additional-script
|
|
- customized-profile
|
|
- storage-service-id
|
|
- local-storage-path
|
|
- telegram-bot-token
|
|
- memo-display-with-updated-ts
|
|
- instance-url
|
|
type: string
|
|
x-enum-varnames:
|
|
- SystemSettingServerIDName
|
|
- SystemSettingSecretSessionName
|
|
- SystemSettingAllowSignUpName
|
|
- SystemSettingDisablePasswordLoginName
|
|
- SystemSettingDisablePublicMemosName
|
|
- SystemSettingMaxUploadSizeMiBName
|
|
- SystemSettingAdditionalStyleName
|
|
- SystemSettingAdditionalScriptName
|
|
- SystemSettingCustomizedProfileName
|
|
- SystemSettingStorageServiceIDName
|
|
- SystemSettingLocalStoragePathName
|
|
- SystemSettingTelegramBotTokenName
|
|
- SystemSettingMemoDisplayWithUpdatedTsName
|
|
- SystemSettingInstanceURLName
|
|
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
|
|
pinned:
|
|
description: Composed fields
|
|
type: boolean
|
|
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
|
|
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.SystemSetting:
|
|
properties:
|
|
description:
|
|
type: string
|
|
name:
|
|
type: string
|
|
value:
|
|
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/github_com_usememos_memos_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/github_com_usememos_memos_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/github_com_usememos_memos_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/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/github_com_usememos_memos_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/github_com_usememos_memos_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/github_com_usememos_memos_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:
|
|
"200":
|
|
description: Created system setting
|
|
schema:
|
|
$ref: '#/definitions/store.SystemSetting'
|
|
"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/github_com_usememos_memos_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/github_com_usememos_memos_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
|
|
/explore/rss.xml:
|
|
get:
|
|
produces:
|
|
- text/xml
|
|
responses:
|
|
"200":
|
|
description: RSS
|
|
"500":
|
|
description: Failed to get system customized profile | Failed to find memo
|
|
list | Failed to generate rss
|
|
summary: Get RSS
|
|
tags:
|
|
- rss
|
|
/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
|
|
/u/{id}/rss.xml:
|
|
get:
|
|
parameters:
|
|
- description: User ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: integer
|
|
produces:
|
|
- text/xml
|
|
responses:
|
|
"200":
|
|
description: RSS
|
|
"400":
|
|
description: User id is not a number
|
|
"500":
|
|
description: Failed to get system customized profile | Failed to find memo
|
|
list | Failed to generate rss
|
|
summary: Get RSS for a user
|
|
tags:
|
|
- rss
|
|
swagger: "2.0"
|