12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033 |
- basePath: /
- definitions:
- github_com_usememos_memos_store.UserSetting:
- properties:
- key:
- type: string
- userID:
- type: integer
- value:
- type: string
- type: object
- profile.Profile:
- properties:
- driver:
- description: |-
- Driver is the database driver
- sqlite, mysql
- type: string
- dsn:
- description: DSN points to where Memos stores its own data
- type: string
- 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:
- description: |-
- Composed fields
- For those comment memos, the parent ID is the memo ID of the memo being commented.
- If the parent ID is nil, then this memo is not a comment.
- type: integer
- pinned:
- type: boolean
- relationList:
- items:
- $ref: '#/definitions/store.MemoRelation'
- type: array
- resourceIDList:
- items:
- type: integer
- type: array
- 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
- v1.CreateIdentityProviderRequest:
- properties:
- config:
- $ref: '#/definitions/v1.IdentityProviderConfig'
- identifierFilter:
- type: string
- name:
- type: string
- type:
- $ref: '#/definitions/v1.IdentityProviderType'
- type: object
- v1.CreateMemoRequest:
- properties:
- content:
- type: string
- createdTs:
- type: integer
- relationList:
- items:
- $ref: '#/definitions/v1.UpsertMemoRelationRequest'
- type: array
- resourceIdList:
- description: Related fields
- items:
- type: integer
- type: array
- visibility:
- allOf:
- - $ref: '#/definitions/v1.Visibility'
- description: Domain specific fields
- type: object
- v1.CreateResourceRequest:
- properties:
- externalLink:
- type: string
- filename:
- type: string
- type:
- type: string
- type: object
- v1.CreateStorageRequest:
- properties:
- config:
- $ref: '#/definitions/v1.StorageConfig'
- name:
- type: string
- type:
- $ref: '#/definitions/v1.StorageType'
- type: object
- v1.CreateUserRequest:
- properties:
- email:
- type: string
- nickname:
- type: string
- password:
- type: string
- role:
- $ref: '#/definitions/v1.Role'
- username:
- type: string
- type: object
- 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
- v1.DeleteTagRequest:
- properties:
- name:
- type: string
- type: object
- v1.FieldMapping:
- properties:
- displayName:
- type: string
- email:
- type: string
- identifier:
- type: string
- type: object
- v1.IdentityProvider:
- properties:
- config:
- $ref: '#/definitions/v1.IdentityProviderConfig'
- id:
- type: integer
- identifierFilter:
- type: string
- name:
- type: string
- type:
- $ref: '#/definitions/v1.IdentityProviderType'
- type: object
- v1.IdentityProviderConfig:
- properties:
- oauth2Config:
- $ref: '#/definitions/v1.IdentityProviderOAuth2Config'
- type: object
- v1.IdentityProviderOAuth2Config:
- properties:
- authUrl:
- type: string
- clientId:
- type: string
- clientSecret:
- type: string
- fieldMapping:
- $ref: '#/definitions/v1.FieldMapping'
- scopes:
- items:
- type: string
- type: array
- tokenUrl:
- type: string
- userInfoUrl:
- type: string
- type: object
- v1.IdentityProviderType:
- enum:
- - OAUTH2
- type: string
- x-enum-varnames:
- - IdentityProviderOAuth2Type
- v1.MemoRelationType:
- enum:
- - REFERENCE
- - ADDITIONAL
- type: string
- x-enum-varnames:
- - MemoRelationReference
- - MemoRelationAdditional
- v1.PatchMemoRequest:
- properties:
- content:
- description: Domain specific fields
- type: string
- createdTs:
- description: Standard fields
- type: integer
- relationList:
- items:
- $ref: '#/definitions/v1.UpsertMemoRelationRequest'
- type: array
- resourceIdList:
- description: Related fields
- items:
- type: integer
- type: array
- rowStatus:
- $ref: '#/definitions/v1.RowStatus'
- updatedTs:
- type: integer
- visibility:
- $ref: '#/definitions/v1.Visibility'
- type: object
- v1.Role:
- enum:
- - HOST
- - ADMIN
- - USER
- type: string
- x-enum-varnames:
- - RoleHost
- - RoleAdmin
- - RoleUser
- v1.RowStatus:
- enum:
- - NORMAL
- - ARCHIVED
- type: string
- x-enum-varnames:
- - Normal
- - Archived
- v1.SSOSignIn:
- properties:
- code:
- type: string
- identityProviderId:
- type: integer
- redirectUri:
- type: string
- type: object
- v1.SignIn:
- properties:
- password:
- type: string
- username:
- type: string
- type: object
- v1.SignUp:
- properties:
- password:
- type: string
- username:
- type: string
- type: object
- v1.StorageConfig:
- properties:
- s3Config:
- $ref: '#/definitions/v1.StorageS3Config'
- type: object
- 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
- type: object
- v1.StorageType:
- enum:
- - S3
- type: string
- x-enum-varnames:
- - StorageS3
- v1.SystemSetting:
- properties:
- description:
- type: string
- name:
- $ref: '#/definitions/v1.SystemSettingName'
- value:
- description: Value is a JSON string with basic value.
- type: string
- type: object
- 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
- - auto-backup-interval
- type: string
- x-enum-varnames:
- - SystemSettingServerIDName
- - SystemSettingSecretSessionName
- - SystemSettingAllowSignUpName
- - SystemSettingDisablePasswordLoginName
- - SystemSettingDisablePublicMemosName
- - SystemSettingMaxUploadSizeMiBName
- - SystemSettingAdditionalStyleName
- - SystemSettingAdditionalScriptName
- - SystemSettingCustomizedProfileName
- - SystemSettingStorageServiceIDName
- - SystemSettingLocalStoragePathName
- - SystemSettingTelegramBotTokenName
- - SystemSettingMemoDisplayWithUpdatedTsName
- - SystemSettingAutoBackupIntervalName
- v1.SystemStatus:
- properties:
- additionalScript:
- description: Additional script.
- type: string
- additionalStyle:
- description: Additional style.
- type: string
- allowSignUp:
- description: |-
- System settings
- Allow sign up.
- type: boolean
- autoBackupInterval:
- description: Auto Backup Interval.
- type: integer
- customizedProfile:
- allOf:
- - $ref: '#/definitions/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/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
- v1.UpdateIdentityProviderRequest:
- properties:
- config:
- $ref: '#/definitions/v1.IdentityProviderConfig'
- identifierFilter:
- type: string
- name:
- type: string
- type:
- $ref: '#/definitions/v1.IdentityProviderType'
- type: object
- v1.UpdateResourceRequest:
- properties:
- filename:
- type: string
- type: object
- v1.UpdateStorageRequest:
- properties:
- config:
- $ref: '#/definitions/v1.StorageConfig'
- name:
- type: string
- type:
- $ref: '#/definitions/v1.StorageType'
- type: object
- v1.UpdateUserRequest:
- properties:
- avatarUrl:
- type: string
- email:
- type: string
- nickname:
- type: string
- password:
- type: string
- rowStatus:
- $ref: '#/definitions/v1.RowStatus'
- username:
- type: string
- type: object
- v1.UpsertMemoOrganizerRequest:
- properties:
- pinned:
- type: boolean
- type: object
- v1.UpsertMemoRelationRequest:
- properties:
- relatedMemoId:
- type: integer
- type:
- $ref: '#/definitions/v1.MemoRelationType'
- type: object
- v1.UpsertSystemSettingRequest:
- properties:
- description:
- type: string
- name:
- $ref: '#/definitions/v1.SystemSettingName'
- value:
- type: string
- type: object
- v1.UpsertTagRequest:
- properties:
- name:
- type: string
- type: object
- v1.UpsertUserSettingRequest:
- properties:
- key:
- $ref: '#/definitions/v1.UserSettingKey'
- value:
- type: string
- type: object
- v1.User:
- properties:
- avatarUrl:
- type: string
- createdTs:
- type: integer
- email:
- type: string
- id:
- type: integer
- nickname:
- type: string
- role:
- $ref: '#/definitions/v1.Role'
- rowStatus:
- allOf:
- - $ref: '#/definitions/v1.RowStatus'
- description: Standard fields
- updatedTs:
- type: integer
- userSettingList:
- items:
- $ref: '#/definitions/v1.UserSetting'
- type: array
- username:
- description: Domain specific fields
- type: string
- type: object
- v1.UserSetting:
- properties:
- key:
- $ref: '#/definitions/v1.UserSettingKey'
- userId:
- type: integer
- value:
- type: string
- type: object
- v1.UserSettingKey:
- enum:
- - locale
- - appearance
- - memo-visibility
- - telegram-user-id
- type: string
- x-enum-varnames:
- - UserSettingLocaleKey
- - UserSettingAppearanceKey
- - UserSettingMemoVisibilityKey
- - UserSettingTelegramUserIDKey
- v1.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/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/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/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/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/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/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/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/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/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/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
- - ADDITIONAL
- 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/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/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/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/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/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/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/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/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/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/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/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
- /api/v1/user/setting:
- post:
- consumes:
- - application/json
- parameters:
- - description: Request object.
- in: body
- name: body
- required: true
- schema:
- $ref: '#/definitions/v1.UpsertUserSettingRequest'
- produces:
- - application/json
- responses:
- "200":
- description: Created user setting
- schema:
- $ref: '#/definitions/github_com_usememos_memos_store.UserSetting'
- "400":
- description: Malformatted post user setting upsert request | Invalid user
- setting format
- "401":
- description: Missing auth session
- "500":
- description: Failed to upsert user setting
- summary: Upsert user setting
- tags:
- - user-setting
- /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:
- - get
- /o/r/{resourceId}:
- get:
- description: '*Swagger UI may have problems displaying other file types than
- images'
- parameters:
- - description: Resource ID
- in: path
- name: resourceId
- required: true
- type: integer
- - description: Thumbnail
- in: query
- name: thumbnail
- type: integer
- produces:
- - application/octet-stream
- responses:
- "200":
- description: Requested resource
- "400":
- description: 'ID is not a number: %s | Failed to get resource visibility'
- "401":
- description: Resource visibility not match
- "404":
- description: 'Resource not found: %d'
- "500":
- description: 'Failed to find resource by ID: %v | Failed to open the local
- resource: %s | Failed to read the local resource: %s'
- summary: Stream a resource
- tags:
- - resource
- /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"
|