# memos API

A privacy-first, lightweight note-taking service.

## Version: 1.0

**Contact information:**  
API Support  
<https://github.com/orgs/usememos/discussions>

**License:** [MIT License](https://github.com/usememos/memos/blob/main/LICENSE)

[Find out more about Memos.](https://usememos.com/)

---

### /api/v1/auth/signin

#### POST

##### Summary

Sign-in to memos.

##### Parameters

| Name | Located in | Description    | Required | Schema                 |
| ---- | ---------- | -------------- | -------- | ---------------------- |
| body | body       | Sign-in object | Yes      | [v1.SignIn](#v1signin) |

##### Responses

| Code | Description                                                                                                                                                                    | Schema                   |
| ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------ |
| 200  | User information                                                                                                                                                               | [store.User](#storeuser) |
| 400  | Malformatted signin request                                                                                                                                                    |                          |
| 401  | Password login is deactivated \| Incorrect login credentials, please try again                                                                                                 |                          |
| 403  | User has been archived with username %s                                                                                                                                        |                          |
| 500  | Failed to find system setting \| Failed to unmarshal system setting \| Incorrect login credentials, please try again \| Failed to generate tokens \| Failed to create activity |                          |

### /api/v1/auth/signin/sso

#### POST

##### Summary

Sign-in to memos using SSO.

##### Parameters

| Name | Located in | Description        | Required | Schema                       |
| ---- | ---------- | ------------------ | -------- | ---------------------------- |
| body | body       | SSO sign-in object | Yes      | [v1.SSOSignIn](#v1ssosignin) |

##### Responses

| Code | Description                                                                                                                                                                                                                                                                                                                                                                                 | Schema                   |
| ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ |
| 200  | User information                                                                                                                                                                                                                                                                                                                                                                            | [store.User](#storeuser) |
| 400  | Malformatted signin request                                                                                                                                                                                                                                                                                                                                                                 |                          |
| 401  | Access denied, identifier does not match the filter.                                                                                                                                                                                                                                                                                                                                        |                          |
| 403  | User has been archived with username {username}                                                                                                                                                                                                                                                                                                                                             |                          |
| 404  | Identity provider not found                                                                                                                                                                                                                                                                                                                                                                 |                          |
| 500  | Failed to find identity provider \| Failed to create identity provider instance \| Failed to exchange token \| Failed to get user info \| Failed to compile identifier filter \| Incorrect login credentials, please try again \| Failed to generate random password \| Failed to generate password hash \| Failed to create user \| Failed to generate tokens \| Failed to create activity |                          |

### /api/v1/auth/signout

#### POST

##### Summary

Sign-out from memos.

##### Responses

| Code | Description      | Schema  |
| ---- | ---------------- | ------- |
| 200  | Sign-out success | boolean |

### /api/v1/auth/signup

#### POST

##### Summary

Sign-up to memos.

##### Parameters

| Name | Located in | Description    | Required | Schema                 |
| ---- | ---------- | -------------- | -------- | ---------------------- |
| body | body       | Sign-up object | Yes      | [v1.SignUp](#v1signup) |

##### Responses

| Code | Description                                                                                                                                                                                             | Schema                   |
| ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ |
| 200  | User information                                                                                                                                                                                        | [store.User](#storeuser) |
| 400  | Malformatted signup request \| Failed to find users                                                                                                                                                     |                          |
| 401  | signup is disabled                                                                                                                                                                                      |                          |
| 403  | Forbidden                                                                                                                                                                                               |                          |
| 404  | Not found                                                                                                                                                                                               |                          |
| 500  | Failed to find system setting \| Failed to unmarshal system setting allow signup \| Failed to generate password hash \| Failed to create user \| Failed to generate tokens \| Failed to create activity |                          |

---

### /api/v1/idp

#### GET

##### Summary

Get a list of identity providers

##### Description

\*clientSecret is only available for host user

##### Responses

| Code | Description                                                  | Schema                                         |
| ---- | ------------------------------------------------------------ | ---------------------------------------------- |
| 200  | List of available identity providers                         | [ [v1.IdentityProvider](#v1identityprovider) ] |
| 500  | Failed to find identity provider list \| Failed to find user |                                                |

#### POST

##### Summary

Create Identity Provider

##### Parameters

| Name | Located in | Description                   | Required | Schema                                                               |
| ---- | ---------- | ----------------------------- | -------- | -------------------------------------------------------------------- |
| body | body       | Identity provider information | Yes      | [v1.CreateIdentityProviderRequest](#v1createidentityproviderrequest) |

##### Responses

| Code | Description                                               | Schema                                           |
| ---- | --------------------------------------------------------- | ------------------------------------------------ |
| 200  | Identity provider information                             | [store.IdentityProvider](#storeidentityprovider) |
| 400  | Malformatted post identity provider request               |                                                  |
| 401  | Missing user in session \| Unauthorized                   |                                                  |
| 500  | Failed to find user \| Failed to create identity provider |                                                  |

### /api/v1/idp/{idpId}

#### DELETE

##### Summary

Delete an identity provider by ID

##### Parameters

| Name  | Located in | Description          | Required | Schema  |
| ----- | ---------- | -------------------- | -------- | ------- |
| idpId | path       | Identity Provider ID | Yes      | integer |

##### Responses

| Code | Description                                                            | Schema  |
| ---- | ---------------------------------------------------------------------- | ------- |
| 200  | Identity Provider deleted                                              | boolean |
| 400  | ID is not a number: %s \| Malformatted patch identity provider request |         |
| 401  | Missing user in session \| Unauthorized                                |         |
| 500  | Failed to find user \| Failed to patch identity provider               |         |

#### GET

##### Summary

Get an identity provider by ID

##### Parameters

| Name  | Located in | Description          | Required | Schema  |
| ----- | ---------- | -------------------- | -------- | ------- |
| idpId | path       | Identity provider ID | Yes      | integer |

##### Responses

| Code | Description                                                  | Schema                                           |
| ---- | ------------------------------------------------------------ | ------------------------------------------------ |
| 200  | Requested identity provider                                  | [store.IdentityProvider](#storeidentityprovider) |
| 400  | ID is not a number: %s                                       |                                                  |
| 401  | Missing user in session \| Unauthorized                      |                                                  |
| 404  | Identity provider not found                                  |                                                  |
| 500  | Failed to find identity provider list \| Failed to find user |                                                  |

#### PATCH

##### Summary

Update an identity provider by ID

##### Parameters

| Name  | Located in | Description                           | Required | Schema                                                               |
| ----- | ---------- | ------------------------------------- | -------- | -------------------------------------------------------------------- |
| idpId | path       | Identity Provider ID                  | Yes      | integer                                                              |
| body  | body       | Patched identity provider information | Yes      | [v1.UpdateIdentityProviderRequest](#v1updateidentityproviderrequest) |

##### Responses

| Code | Description                                                            | Schema                                           |
| ---- | ---------------------------------------------------------------------- | ------------------------------------------------ |
| 200  | Patched identity provider                                              | [store.IdentityProvider](#storeidentityprovider) |
| 400  | ID is not a number: %s \| Malformatted patch identity provider request |                                                  |
| 401  | Missing user in session \| Unauthorized                                |                                                  |
| 500  | Failed to find user \| Failed to patch identity provider               |                                                  |

---

### /api/v1/memo

#### GET

##### Summary

Get a list of memos matching optional filters

##### Parameters

| Name            | Located in | Description                     | Required | Schema  |
| --------------- | ---------- | ------------------------------- | -------- | ------- |
| creatorId       | query      | Creator ID                      | No       | integer |
| creatorUsername | query      | Creator username                | No       | string  |
| rowStatus       | query      | Row status                      | No       | string  |
| pinned          | query      | Pinned                          | No       | boolean |
| tag             | query      | Search for tag. Do not append # | No       | string  |
| content         | query      | Search for content              | No       | string  |
| limit           | query      | Limit                           | No       | integer |
| offset          | query      | Offset                          | No       | integer |

##### Responses

| Code | Description                                                                                                              | Schema                       |
| ---- | ------------------------------------------------------------------------------------------------------------------------ | ---------------------------- |
| 200  | Memo list                                                                                                                | [ [store.Memo](#storememo) ] |
| 400  | Missing user to find memo                                                                                                |                              |
| 500  | Failed to get memo display with updated ts setting value \| Failed to fetch memo list \| Failed to compose memo response |                              |

#### POST

##### Summary

Create a memo

##### Description

Visibility can be PUBLIC, PROTECTED or PRIVATE
\*You should omit fields to use their default values

##### Parameters

| Name | Located in | Description     | Required | Schema                                       |
| ---- | ---------- | --------------- | -------- | -------------------------------------------- |
| body | body       | Request object. | Yes      | [v1.CreateMemoRequest](#v1creatememorequest) |

##### Responses

| Code | Description                                                                                                                                                                                                                                                                                                                                                | Schema                   |
| ---- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ |
| 200  | Stored memo                                                                                                                                                                                                                                                                                                                                                | [store.Memo](#storememo) |
| 400  | Malformatted post memo request \| Content size overflow, up to 1MB                                                                                                                                                                                                                                                                                         |                          |
| 401  | Missing user in session                                                                                                                                                                                                                                                                                                                                    |                          |
| 404  | User not found \| Memo not found: %d                                                                                                                                                                                                                                                                                                                       |                          |
| 500  | Failed to find user setting \| Failed to unmarshal user setting value \| Failed to find system setting \| Failed to unmarshal system setting \| Failed to find user \| Failed to create memo \| Failed to create activity \| Failed to upsert memo resource \| Failed to upsert memo relation \| Failed to compose memo \| Failed to compose memo response |                          |

### /api/v1/memo/{memoId}

#### DELETE

##### Summary

Delete memo by ID

##### Parameters

| Name   | Located in | Description       | Required | Schema  |
| ------ | ---------- | ----------------- | -------- | ------- |
| memoId | path       | Memo ID to delete | Yes      | integer |

##### Responses

| Code | Description                                         | Schema  |
| ---- | --------------------------------------------------- | ------- |
| 200  | Memo deleted                                        | boolean |
| 400  | ID is not a number: %s                              |         |
| 401  | Missing user in session \| Unauthorized             |         |
| 404  | Memo not found: %d                                  |         |
| 500  | Failed to find memo \| Failed to delete memo ID: %v |         |

#### GET

##### Summary

Get memo by ID

##### Parameters

| Name   | Located in | Description | Required | Schema  |
| ------ | ---------- | ----------- | -------- | ------- |
| memoId | path       | Memo ID     | Yes      | integer |

##### Responses

| Code | Description                                                                  | Schema                       |
| ---- | ---------------------------------------------------------------------------- | ---------------------------- |
| 200  | Memo list                                                                    | [ [store.Memo](#storememo) ] |
| 400  | ID is not a number: %s                                                       |                              |
| 401  | Missing user in session                                                      |                              |
| 403  | this memo is private only \| this memo is protected, missing user in session |                              |
| 404  | Memo not found: %d                                                           |                              |
| 500  | Failed to find memo by ID: %v \| Failed to compose memo response             |                              |

#### PATCH

##### Summary

Update a memo

##### Description

Visibility can be PUBLIC, PROTECTED or PRIVATE
\*You should omit fields to use their default values

##### Parameters

| Name   | Located in | Description          | Required | Schema                                     |
| ------ | ---------- | -------------------- | -------- | ------------------------------------------ |
| memoId | path       | ID of memo to update | Yes      | integer                                    |
| body   | body       | Patched object.      | Yes      | [v1.PatchMemoRequest](#v1patchmemorequest) |

##### Responses

| Code | Description                                                                                                                                        | Schema                   |
| ---- | -------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ |
| 200  | Stored memo                                                                                                                                        | [store.Memo](#storememo) |
| 400  | ID is not a number: %s \| Malformatted patch memo request \| Content size overflow, up to 1MB                                                      |                          |
| 401  | Missing user in session \| Unauthorized                                                                                                            |                          |
| 404  | Memo not found: %d                                                                                                                                 |                          |
| 500  | Failed to find memo \| Failed to patch memo \| Failed to upsert memo resource \| Failed to delete memo resource \| Failed to compose memo response |                          |

### /api/v1/memo/all

#### GET

##### Summary

Get a list of public memos matching optional filters

##### Description

This should also list protected memos if the user is logged in
Authentication is optional

##### Parameters

| Name   | Located in | Description | Required | Schema  |
| ------ | ---------- | ----------- | -------- | ------- |
| limit  | query      | Limit       | No       | integer |
| offset | query      | Offset      | No       | integer |

##### Responses

| Code | Description                                                                                                                  | Schema                       |
| ---- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------- |
| 200  | Memo list                                                                                                                    | [ [store.Memo](#storememo) ] |
| 500  | Failed to get memo display with updated ts setting value \| Failed to fetch all memo list \| Failed to compose memo response |                              |

### /api/v1/memo/stats

#### GET

##### Summary

Get memo stats by creator ID or username

##### Description

Used to generate the heatmap

##### Parameters

| Name            | Located in | Description      | Required | Schema  |
| --------------- | ---------- | ---------------- | -------- | ------- |
| creatorId       | query      | Creator ID       | No       | integer |
| creatorUsername | query      | Creator username | No       | string  |

##### Responses

| Code | Description                                                                                                             | Schema      |
| ---- | ----------------------------------------------------------------------------------------------------------------------- | ----------- |
| 200  | Memo createdTs list                                                                                                     | [ integer ] |
| 400  | Missing user id to find memo                                                                                            |             |
| 500  | Failed to get memo display with updated ts setting value \| Failed to find memo list \| Failed to compose memo response |             |

---

### /api/v1/memo/{memoId}/organizer

#### POST

##### Summary

Organize memo (pin/unpin)

##### Parameters

| Name   | Located in | Description            | Required | Schema                                                         |
| ------ | ---------- | ---------------------- | -------- | -------------------------------------------------------------- |
| memoId | path       | ID of memo to organize | Yes      | integer                                                        |
| body   | body       | Memo organizer object  | Yes      | [v1.UpsertMemoOrganizerRequest](#v1upsertmemoorganizerrequest) |

##### Responses

| Code | Description                                                                                                                | Schema                   |
| ---- | -------------------------------------------------------------------------------------------------------------------------- | ------------------------ |
| 200  | Memo information                                                                                                           | [store.Memo](#storememo) |
| 400  | ID is not a number: %s \| Malformatted post memo organizer request                                                         |                          |
| 401  | Missing user in session \| Unauthorized                                                                                    |                          |
| 404  | Memo not found: %v                                                                                                         |                          |
| 500  | Failed to find memo \| Failed to upsert memo organizer \| Failed to find memo by ID: %v \| Failed to compose memo response |                          |

---

### /api/v1/memo/{memoId}/relation

#### GET

##### Summary

Get a list of Memo Relations

##### Parameters

| Name   | Located in | Description                  | Required | Schema  |
| ------ | ---------- | ---------------------------- | -------- | ------- |
| memoId | path       | ID of memo to find relations | Yes      | integer |

##### Responses

| Code | Description                    | Schema                                       |
| ---- | ------------------------------ | -------------------------------------------- |
| 200  | Memo relation information list | [ [store.MemoRelation](#storememorelation) ] |
| 400  | ID is not a number: %s         |                                              |
| 500  | Failed to list memo relations  |                                              |

#### POST

##### Summary

Create Memo Relation

##### Description

Create a relation between two memos

##### Parameters

| Name   | Located in | Description          | Required | Schema                                                       |
| ------ | ---------- | -------------------- | -------- | ------------------------------------------------------------ |
| memoId | path       | ID of memo to relate | Yes      | integer                                                      |
| body   | body       | Memo relation object | Yes      | [v1.UpsertMemoRelationRequest](#v1upsertmemorelationrequest) |

##### Responses

| Code | Description                                                       | Schema                                   |
| ---- | ----------------------------------------------------------------- | ---------------------------------------- |
| 200  | Memo relation information                                         | [store.MemoRelation](#storememorelation) |
| 400  | ID is not a number: %s \| Malformatted post memo relation request |                                          |
| 500  | Failed to upsert memo relation                                    |                                          |

### /api/v1/memo/{memoId}/relation/{relatedMemoId}/type/{relationType}

#### DELETE

##### Summary

Delete a Memo Relation

##### Description

Removes a relation between two memos

##### Parameters

| Name          | Located in | Description                      | Required | Schema  |
| ------------- | ---------- | -------------------------------- | -------- | ------- |
| memoId        | path       | ID of memo to find relations     | Yes      | integer |
| relatedMemoId | path       | ID of memo to remove relation to | Yes      | integer |
| relationType  | path       | Type of relation to remove       | Yes      | string  |

##### Responses

| Code | Description                                                        | Schema  |
| ---- | ------------------------------------------------------------------ | ------- |
| 200  | Memo relation deleted                                              | boolean |
| 400  | Memo ID is not a number: %s \| Related memo ID is not a number: %s |         |
| 500  | Failed to delete memo relation                                     |         |

---

### /api/v1/ping

#### GET

##### Summary

Ping the system

##### Responses

| Code | Description                   | Schema  |
| ---- | ----------------------------- | ------- |
| 200  | If succeed to ping the system | boolean |

### /api/v1/status

#### GET

##### Summary

Get system GetSystemStatus

##### Responses

| Code | Description                                                                                                                   | Schema                             |
| ---- | ----------------------------------------------------------------------------------------------------------------------------- | ---------------------------------- |
| 200  | System GetSystemStatus                                                                                                        | [v1.SystemStatus](#v1systemstatus) |
| 401  | Missing user in session \| Unauthorized                                                                                       |                                    |
| 500  | Failed to find host user \| Failed to find system setting list \| Failed to unmarshal system setting customized profile value |                                    |

### /api/v1/system/vacuum

#### POST

##### Summary

Vacuum the database

##### Responses

| Code | Description                                          | Schema  |
| ---- | ---------------------------------------------------- | ------- |
| 200  | Database vacuumed                                    | boolean |
| 401  | Missing user in session \| Unauthorized              |         |
| 500  | Failed to find user \| Failed to ExecVacuum database |         |

---

### /api/v1/resource

#### GET

##### Summary

Get a list of resources

##### Parameters

| Name   | Located in | Description | Required | Schema  |
| ------ | ---------- | ----------- | -------- | ------- |
| limit  | query      | Limit       | No       | integer |
| offset | query      | Offset      | No       | integer |

##### Responses

| Code | Description                   | Schema                               |
| ---- | ----------------------------- | ------------------------------------ |
| 200  | Resource list                 | [ [store.Resource](#storeresource) ] |
| 401  | Missing user in session       |                                      |
| 500  | Failed to fetch resource list |                                      |

#### POST

##### Summary

Create resource

##### Parameters

| Name | Located in | Description     | Required | Schema                                               |
| ---- | ---------- | --------------- | -------- | ---------------------------------------------------- |
| body | body       | Request object. | Yes      | [v1.CreateResourceRequest](#v1createresourcerequest) |

##### Responses

| Code | Description                                                                                                                                                             | Schema                           |
| ---- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- |
| 200  | Created resource                                                                                                                                                        | [store.Resource](#storeresource) |
| 400  | 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  | Missing user in session                                                                                                                                                 |                                  |
| 500  | Failed to save resource \| Failed to create resource \| Failed to create activity                                                                                       |                                  |

### /api/v1/resource/{resourceId}

#### DELETE

##### Summary

Delete a resource

##### Parameters

| Name       | Located in | Description | Required | Schema  |
| ---------- | ---------- | ----------- | -------- | ------- |
| resourceId | path       | Resource ID | Yes      | integer |

##### Responses

| Code | Description                                          | Schema  |
| ---- | ---------------------------------------------------- | ------- |
| 200  | Resource deleted                                     | boolean |
| 400  | ID is not a number: %s                               |         |
| 401  | Missing user in session                              |         |
| 404  | Resource not found: %d                               |         |
| 500  | Failed to find resource \| Failed to delete resource |         |

#### PATCH

##### Summary

Update a resource

##### Parameters

| Name       | Located in | Description            | Required | Schema                                               |
| ---------- | ---------- | ---------------------- | -------- | ---------------------------------------------------- |
| resourceId | path       | Resource ID            | Yes      | integer                                              |
| patch      | body       | Patch resource request | Yes      | [v1.UpdateResourceRequest](#v1updateresourcerequest) |

##### Responses

| Code | Description                                                   | Schema                           |
| ---- | ------------------------------------------------------------- | -------------------------------- |
| 200  | Updated resource                                              | [store.Resource](#storeresource) |
| 400  | ID is not a number: %s \| Malformatted patch resource request |                                  |
| 401  | Missing user in session \| Unauthorized                       |                                  |
| 404  | Resource not found: %d                                        |                                  |
| 500  | Failed to find resource \| Failed to patch resource           |                                  |

### /api/v1/resource/blob

#### POST

##### Summary

Upload resource

##### Parameters

| Name | Located in | Description    | Required | Schema |
| ---- | ---------- | -------------- | -------- | ------ |
| file | formData   | File to upload | Yes      | file   |

##### Responses

| Code | Description                                                                                                                              | Schema                           |
| ---- | ---------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- |
| 200  | Created resource                                                                                                                         | [store.Resource](#storeresource) |
| 400  | Upload file not found \| File size exceeds allowed limit of %d MiB \| Failed to parse upload data                                        |                                  |
| 401  | Missing user in session                                                                                                                  |                                  |
| 500  | Failed to get uploading file \| Failed to open file \| Failed to save resource \| Failed to create resource \| Failed to create activity |                                  |

### /o/r/{resourceId}

#### GET

##### Summary

Stream a resource

##### Description

\*Swagger UI may have problems displaying other file types than images

##### Parameters

| Name       | Located in | Description | Required | Schema  |
| ---------- | ---------- | ----------- | -------- | ------- |
| resourceId | path       | Resource ID | Yes      | integer |
| thumbnail  | query      | Thumbnail   | No       | integer |

##### Responses

| Code | Description                                                                                                         |
| ---- | ------------------------------------------------------------------------------------------------------------------- |
| 200  | Requested resource                                                                                                  |
| 400  | ID is not a number: %s \| Failed to get resource visibility                                                         |
| 401  | Resource visibility not match                                                                                       |
| 404  | Resource not found: %d                                                                                              |
| 500  | Failed to find resource by ID: %v \| Failed to open the local resource: %s \| Failed to read the local resource: %s |

---

### /api/v1/storage

#### GET

##### Summary

Get a list of storages

##### Responses

| Code | Description                                      | Schema                             |
| ---- | ------------------------------------------------ | ---------------------------------- |
| 200  | List of storages                                 | [ [store.Storage](#storestorage) ] |
| 401  | Missing user in session \| Unauthorized          |                                    |
| 500  | Failed to find user \| Failed to convert storage |                                    |

#### POST

##### Summary

Create storage

##### Parameters

| Name | Located in | Description     | Required | Schema                                             |
| ---- | ---------- | --------------- | -------- | -------------------------------------------------- |
| body | body       | Request object. | Yes      | [v1.CreateStorageRequest](#v1createstoragerequest) |

##### Responses

| Code | Description                                                                  | Schema                         |
| ---- | ---------------------------------------------------------------------------- | ------------------------------ |
| 200  | Created storage                                                              | [store.Storage](#storestorage) |
| 400  | Malformatted post storage request                                            |                                |
| 401  | Missing user in session                                                      |                                |
| 500  | Failed to find user \| Failed to create storage \| Failed to convert storage |                                |

### /api/v1/storage/{storageId}

#### DELETE

##### Summary

Delete a storage

##### Parameters

| Name      | Located in | Description | Required | Schema  |
| --------- | ---------- | ----------- | -------- | ------- |
| storageId | path       | Storage ID  | Yes      | integer |

##### Responses

| Code | Description                                                                                                         | Schema  |
| ---- | ------------------------------------------------------------------------------------------------------------------- | ------- |
| 200  | Storage deleted                                                                                                     | boolean |
| 400  | ID is not a number: %s \| Storage service %d is using                                                               |         |
| 401  | Missing user in session \| Unauthorized                                                                             |         |
| 500  | Failed to find user \| Failed to find storage \| Failed to unmarshal storage service id \| Failed to delete storage |         |

#### PATCH

##### Summary

Update a storage

##### Parameters

| Name      | Located in | Description   | Required | Schema                                             |
| --------- | ---------- | ------------- | -------- | -------------------------------------------------- |
| storageId | path       | Storage ID    | Yes      | integer                                            |
| patch     | body       | Patch request | Yes      | [v1.UpdateStorageRequest](#v1updatestoragerequest) |

##### Responses

| Code | Description                                                                                       | Schema                         |
| ---- | ------------------------------------------------------------------------------------------------- | ------------------------------ |
| 200  | Updated resource                                                                                  | [store.Storage](#storestorage) |
| 400  | ID is not a number: %s \| Malformatted patch storage request \| Malformatted post storage request |                                |
| 401  | Missing user in session \| Unauthorized                                                           |                                |
| 500  | Failed to find user \| Failed to patch storage \| Failed to convert storage                       |                                |

---

### /api/v1/system/setting

#### GET

##### Summary

Get a list of system settings

##### Responses

| Code | Description                                               | Schema                                   |
| ---- | --------------------------------------------------------- | ---------------------------------------- |
| 200  | System setting list                                       | [ [v1.SystemSetting](#v1systemsetting) ] |
| 401  | Missing user in session \| Unauthorized                   |                                          |
| 500  | Failed to find user \| Failed to find system setting list |                                          |

#### POST

##### Summary

Create system setting

##### Parameters

| Name | Located in | Description     | Required | Schema                                                         |
| ---- | ---------- | --------------- | -------- | -------------------------------------------------------------- |
| body | body       | Request object. | Yes      | [v1.UpsertSystemSettingRequest](#v1upsertsystemsettingrequest) |

##### Responses

| Code | Description                                                         | Schema                                     |
| ---- | ------------------------------------------------------------------- | ------------------------------------------ |
| 200  | Created system setting                                              | [store.SystemSetting](#storesystemsetting) |
| 400  | Malformatted post system setting request \| invalid system setting  |                                            |
| 401  | Missing user in session \| Unauthorized                             |                                            |
| 403  | Cannot disable passwords if no SSO identity provider is configured. |                                            |
| 500  | Failed to find user \| Failed to upsert system setting              |                                            |

---

### /api/v1/tag

#### GET

##### Summary

Get a list of tags

##### Responses

| Code | Description                 | Schema     |
| ---- | --------------------------- | ---------- |
| 200  | Tag list                    | [ string ] |
| 400  | Missing user id to find tag |            |
| 500  | Failed to find tag list     |            |

#### POST

##### Summary

Create a tag

##### Parameters

| Name | Located in | Description     | Required | Schema                                     |
| ---- | ---------- | --------------- | -------- | ------------------------------------------ |
| body | body       | Request object. | Yes      | [v1.UpsertTagRequest](#v1upserttagrequest) |

##### Responses

| Code | Description                                                  | Schema |
| ---- | ------------------------------------------------------------ | ------ |
| 200  | Created tag name                                             | string |
| 400  | Malformatted post tag request \| Tag name shouldn't be empty |        |
| 401  | Missing user in session                                      |        |
| 500  | Failed to upsert tag \| Failed to create activity            |        |

### /api/v1/tag/delete

#### POST

##### Summary

Delete a tag

##### Parameters

| Name | Located in | Description     | Required | Schema                                     |
| ---- | ---------- | --------------- | -------- | ------------------------------------------ |
| body | body       | Request object. | Yes      | [v1.DeleteTagRequest](#v1deletetagrequest) |

##### Responses

| Code | Description                                                  | Schema  |
| ---- | ------------------------------------------------------------ | ------- |
| 200  | Tag deleted                                                  | boolean |
| 400  | Malformatted post tag request \| Tag name shouldn't be empty |         |
| 401  | Missing user in session                                      |         |
| 500  | Failed to delete tag name: %v                                |         |

### /api/v1/tag/suggestion

#### GET

##### Summary

Get a list of tags suggested from other memos contents

##### Responses

| Code | Description                                         | Schema     |
| ---- | --------------------------------------------------- | ---------- |
| 200  | Tag list                                            | [ string ] |
| 400  | Missing user session                                |            |
| 500  | Failed to find memo list \| Failed to find tag list |            |

---

### /api/v1/user

#### GET

##### Summary

Get a list of users

##### Responses

| Code | Description               | Schema                       |
| ---- | ------------------------- | ---------------------------- |
| 200  | User list                 | [ [store.User](#storeuser) ] |
| 500  | Failed to fetch user list |                              |

#### POST

##### Summary

Create a user

##### Parameters

| Name | Located in | Description    | Required | Schema                                       |
| ---- | ---------- | -------------- | -------- | -------------------------------------------- |
| body | body       | Request object | Yes      | [v1.CreateUserRequest](#v1createuserrequest) |

##### Responses

| Code | Description                                                                                                         | Schema                   |
| ---- | ------------------------------------------------------------------------------------------------------------------- | ------------------------ |
| 200  | Created user                                                                                                        | [store.User](#storeuser) |
| 400  | Malformatted post user request \| Invalid user create format                                                        |                          |
| 401  | Missing auth session \| Unauthorized to create user                                                                 |                          |
| 403  | Could not create host user                                                                                          |                          |
| 500  | Failed to find user by id \| Failed to generate password hash \| Failed to create user \| Failed to create activity |                          |

### /api/v1/user/{id}

#### DELETE

##### Summary

Delete a user

##### Parameters

| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| id   | path       | User ID     | Yes      | string |

##### Responses

| Code | Description                                                          | Schema  |
| ---- | -------------------------------------------------------------------- | ------- |
| 200  | User deleted                                                         | boolean |
| 400  | ID is not a number: %s \| Current session user not found with ID: %d |         |
| 401  | Missing user in session                                              |         |
| 403  | Unauthorized to delete user                                          |         |
| 500  | Failed to find user \| Failed to delete user                         |         |

#### GET

##### Summary

Get user by id

##### Parameters

| Name | Located in | Description | Required | Schema  |
| ---- | ---------- | ----------- | -------- | ------- |
| id   | path       | User ID     | Yes      | integer |

##### Responses

| Code | Description          | Schema                   |
| ---- | -------------------- | ------------------------ |
| 200  | Requested user       | [store.User](#storeuser) |
| 400  | Malformatted user id |                          |
| 404  | User not found       |                          |
| 500  | Failed to find user  |                          |

#### PATCH

##### Summary

Update a user

##### Parameters

| Name  | Located in | Description   | Required | Schema                                       |
| ----- | ---------- | ------------- | -------- | -------------------------------------------- |
| id    | path       | User ID       | Yes      | string                                       |
| patch | body       | Patch request | Yes      | [v1.UpdateUserRequest](#v1updateuserrequest) |

##### Responses

| Code | Description                                                                                                                            | Schema                   |
| ---- | -------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ |
| 200  | Updated user                                                                                                                           | [store.User](#storeuser) |
| 400  | ID is not a number: %s \| Current session user not found with ID: %d \| Malformatted patch user request \| Invalid update user request |                          |
| 401  | Missing user in session                                                                                                                |                          |
| 403  | Unauthorized to update user                                                                                                            |                          |
| 500  | Failed to find user \| Failed to generate password hash \| Failed to patch user \| Failed to find userSettingList                      |                          |

### /api/v1/user/me

#### GET

##### Summary

Get current user

##### Responses

| Code | Description                                           | Schema                   |
| ---- | ----------------------------------------------------- | ------------------------ |
| 200  | Current user                                          | [store.User](#storeuser) |
| 401  | Missing auth session                                  |                          |
| 500  | Failed to find user \| Failed to find userSettingList |                          |

### /api/v1/user/name/{username}

#### GET

##### Summary

Get user by username

##### Parameters

| Name     | Located in | Description | Required | Schema |
| -------- | ---------- | ----------- | -------- | ------ |
| username | path       | Username    | Yes      | string |

##### Responses

| Code | Description         | Schema                   |
| ---- | ------------------- | ------------------------ |
| 200  | Requested user      | [store.User](#storeuser) |
| 404  | User not found      |                          |
| 500  | Failed to find user |                          |

---

### /api/v1/user/setting

#### POST

##### Summary

Upsert user setting

##### Parameters

| Name | Located in | Description     | Required | Schema                                                     |
| ---- | ---------- | --------------- | -------- | ---------------------------------------------------------- |
| body | body       | Request object. | Yes      | [v1.UpsertUserSettingRequest](#v1upsertusersettingrequest) |

##### Responses

| Code | Description                                                                  | Schema                                                                                     |
| ---- | ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| 200  | Created user setting                                                         | [github_com_usememos_memos_store.UserSetting](#github_com_usememos_memos_storeusersetting) |
| 400  | Malformatted post user setting upsert request \| Invalid user setting format |                                                                                            |
| 401  | Missing auth session                                                         |                                                                                            |
| 500  | Failed to upsert user setting                                                |                                                                                            |

---

### /explore/rss.xml

#### GET

##### Summary

Get RSS

##### Responses

| Code | Description                                                                                   |
| ---- | --------------------------------------------------------------------------------------------- |
| 200  | RSS                                                                                           |
| 500  | Failed to get system customized profile \| Failed to find memo list \| Failed to generate rss |

### /u/{id}/rss.xml

#### GET

##### Summary

Get RSS for a user

##### Parameters

| Name | Located in | Description | Required | Schema  |
| ---- | ---------- | ----------- | -------- | ------- |
| id   | path       | User ID     | Yes      | integer |

##### Responses

| Code | Description                                                                                   |
| ---- | --------------------------------------------------------------------------------------------- |
| 200  | RSS                                                                                           |
| 400  | User id is not a number                                                                       |
| 500  | Failed to get system customized profile \| Failed to find memo list \| Failed to generate rss |

---

### /o/get/GetImage

#### GET

##### Summary

Get GetImage from URL

##### Parameters

| Name | Located in | Description | Required | Schema |
| ---- | ---------- | ----------- | -------- | ------ |
| url  | query      | Image url   | Yes      | string |

##### Responses

| Code | Description                                                         |
| ---- | ------------------------------------------------------------------- |
| 200  | Image                                                               |
| 400  | Missing GetImage url \| Wrong url \| Failed to get GetImage url: %s |
| 500  | Failed to write GetImage blob                                       |

---

### Models

#### github_com_usememos_memos_store.UserSetting

| Name   | Type    | Description | Required |
| ------ | ------- | ----------- | -------- |
| key    | string  |             | No       |
| userID | integer |             | No       |
| value  | string  |             | No       |

#### profile.Profile

| Name    | Type   | Description                                   | Required |
| ------- | ------ | --------------------------------------------- | -------- |
| driver  | string | Driver is the database driver sqlite, mysql   | No       |
| dsn     | string | DSN points to where Memos stores its own data | No       |
| mode    | string | Mode can be "prod" or "dev" or "demo"         | No       |
| version | string | Version is the current version of server      | No       |

#### store.FieldMapping

| Name        | Type   | Description | Required |
| ----------- | ------ | ----------- | -------- |
| displayName | string |             | No       |
| email       | string |             | No       |
| identifier  | string |             | No       |

#### store.IdentityProvider

| Name             | Type                                                         | Description | Required |
| ---------------- | ------------------------------------------------------------ | ----------- | -------- |
| config           | [store.IdentityProviderConfig](#storeidentityproviderconfig) |             | No       |
| id               | integer                                                      |             | No       |
| identifierFilter | string                                                       |             | No       |
| name             | string                                                       |             | No       |
| type             | [store.IdentityProviderType](#storeidentityprovidertype)     |             | No       |

#### store.IdentityProviderConfig

| Name         | Type                                                                     | Description | Required |
| ------------ | ------------------------------------------------------------------------ | ----------- | -------- |
| oauth2Config | [store.IdentityProviderOAuth2Config](#storeidentityprovideroauth2config) |             | No       |

#### store.IdentityProviderOAuth2Config

| Name         | Type                                     | Description | Required |
| ------------ | ---------------------------------------- | ----------- | -------- |
| authUrl      | string                                   |             | No       |
| clientId     | string                                   |             | No       |
| clientSecret | string                                   |             | No       |
| fieldMapping | [store.FieldMapping](#storefieldmapping) |             | No       |
| scopes       | [ string ]                               |             | No       |
| tokenUrl     | string                                   |             | No       |
| userInfoUrl  | string                                   |             | No       |

#### store.IdentityProviderType

| Name                       | Type   | Description | Required |
| -------------------------- | ------ | ----------- | -------- |
| store.IdentityProviderType | string |             |          |

#### store.Memo

| Name           | Type                                         | Description                                                                                                                                                  | Required |
| -------------- | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- |
| content        | string                                       | Domain specific fields                                                                                                                                       | No       |
| createdTs      | integer                                      |                                                                                                                                                              | No       |
| creatorID      | integer                                      |                                                                                                                                                              | No       |
| id             | integer                                      |                                                                                                                                                              | No       |
| parentID       | integer                                      | 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. | No       |
| pinned         | boolean                                      |                                                                                                                                                              | No       |
| relationList   | [ [store.MemoRelation](#storememorelation) ] |                                                                                                                                                              | No       |
| resourceIDList | [ integer ]                                  |                                                                                                                                                              | No       |
| rowStatus      | [store.RowStatus](#storerowstatus)           | Standard fields                                                                                                                                              | No       |
| updatedTs      | integer                                      |                                                                                                                                                              | No       |
| visibility     | [store.Visibility](#storevisibility)         |                                                                                                                                                              | No       |

#### store.MemoRelation

| Name          | Type                                             | Description | Required |
| ------------- | ------------------------------------------------ | ----------- | -------- |
| memoID        | integer                                          |             | No       |
| relatedMemoID | integer                                          |             | No       |
| type          | [store.MemoRelationType](#storememorelationtype) |             | No       |

#### store.MemoRelationType

| Name                   | Type   | Description | Required |
| ---------------------- | ------ | ----------- | -------- |
| store.MemoRelationType | string |             |          |

#### store.Resource

| Name         | Type        | Description            | Required |
| ------------ | ----------- | ---------------------- | -------- |
| blob         | [ integer ] |                        | No       |
| createdTs    | integer     |                        | No       |
| creatorID    | integer     | Standard fields        | No       |
| externalLink | string      |                        | No       |
| filename     | string      | Domain specific fields | No       |
| id           | integer     |                        | No       |
| internalPath | string      |                        | No       |
| memoID       | integer     |                        | No       |
| size         | integer     |                        | No       |
| type         | string      |                        | No       |
| updatedTs    | integer     |                        | No       |

#### store.Role

| Name       | Type   | Description | Required |
| ---------- | ------ | ----------- | -------- |
| store.Role | string |             |          |

#### store.RowStatus

| Name            | Type   | Description | Required |
| --------------- | ------ | ----------- | -------- |
| store.RowStatus | string |             |          |

#### store.Storage

| Name   | Type    | Description | Required |
| ------ | ------- | ----------- | -------- |
| config | string  |             | No       |
| id     | integer |             | No       |
| name   | string  |             | No       |
| type   | string  |             | No       |

#### store.SystemSetting

| Name        | Type   | Description | Required |
| ----------- | ------ | ----------- | -------- |
| description | string |             | No       |
| name        | string |             | No       |
| value       | string |             | No       |

#### store.User

| Name         | Type                               | Description            | Required |
| ------------ | ---------------------------------- | ---------------------- | -------- |
| avatarURL    | string                             |                        | No       |
| createdTs    | integer                            |                        | No       |
| email        | string                             |                        | No       |
| id           | integer                            |                        | No       |
| nickname     | string                             |                        | No       |
| passwordHash | string                             |                        | No       |
| role         | [store.Role](#storerole)           |                        | No       |
| rowStatus    | [store.RowStatus](#storerowstatus) | Standard fields        | No       |
| updatedTs    | integer                            |                        | No       |
| username     | string                             | Domain specific fields | No       |

#### store.Visibility

| Name             | Type   | Description | Required |
| ---------------- | ------ | ----------- | -------- |
| store.Visibility | string |             |          |

#### v1.CreateIdentityProviderRequest

| Name             | Type                                                   | Description | Required |
| ---------------- | ------------------------------------------------------ | ----------- | -------- |
| config           | [v1.IdentityProviderConfig](#v1identityproviderconfig) |             | No       |
| identifierFilter | string                                                 |             | No       |
| name             | string                                                 |             | No       |
| type             | [v1.IdentityProviderType](#v1identityprovidertype)     |             | No       |

#### v1.CreateMemoRequest

| Name           | Type                                                             | Description            | Required |
| -------------- | ---------------------------------------------------------------- | ---------------------- | -------- |
| content        | string                                                           |                        | No       |
| createdTs      | integer                                                          |                        | No       |
| relationList   | [ [v1.UpsertMemoRelationRequest](#v1upsertmemorelationrequest) ] |                        | No       |
| resourceIdList | [ integer ]                                                      | Related fields         | No       |
| visibility     | [v1.Visibility](#v1visibility)                                   | Domain specific fields | No       |

#### v1.CreateResourceRequest

| Name         | Type   | Description | Required |
| ------------ | ------ | ----------- | -------- |
| externalLink | string |             | No       |
| filename     | string |             | No       |
| type         | string |             | No       |

#### v1.CreateStorageRequest

| Name   | Type                                 | Description | Required |
| ------ | ------------------------------------ | ----------- | -------- |
| config | [v1.StorageConfig](#v1storageconfig) |             | No       |
| name   | string                               |             | No       |
| type   | [v1.StorageType](#v1storagetype)     |             | No       |

#### v1.CreateUserRequest

| Name     | Type               | Description | Required |
| -------- | ------------------ | ----------- | -------- |
| email    | string             |             | No       |
| nickname | string             |             | No       |
| password | string             |             | No       |
| role     | [v1.Role](#v1role) |             | No       |
| username | string             |             | No       |

#### v1.CustomizedProfile

| Name        | Type   | Description                                                             | Required |
| ----------- | ------ | ----------------------------------------------------------------------- | -------- |
| appearance  | string | Appearance is the server default appearance.                            | No       |
| description | string | Description is the server description.                                  | No       |
| externalUrl | string | ExternalURL is the external url of server. e.g. <https://usermemos.com> | No       |
| locale      | string | Locale is the server default locale.                                    | No       |
| logoUrl     | string | LogoURL is the url of logo image.                                       | No       |
| name        | string | Name is the server name, default is `memos`                             | No       |

#### v1.DeleteTagRequest

| Name | Type   | Description | Required |
| ---- | ------ | ----------- | -------- |
| name | string |             | No       |

#### v1.FieldMapping

| Name        | Type   | Description | Required |
| ----------- | ------ | ----------- | -------- |
| displayName | string |             | No       |
| email       | string |             | No       |
| identifier  | string |             | No       |

#### v1.IdentityProvider

| Name             | Type                                                   | Description | Required |
| ---------------- | ------------------------------------------------------ | ----------- | -------- |
| config           | [v1.IdentityProviderConfig](#v1identityproviderconfig) |             | No       |
| id               | integer                                                |             | No       |
| identifierFilter | string                                                 |             | No       |
| name             | string                                                 |             | No       |
| type             | [v1.IdentityProviderType](#v1identityprovidertype)     |             | No       |

#### v1.IdentityProviderConfig

| Name         | Type                                                               | Description | Required |
| ------------ | ------------------------------------------------------------------ | ----------- | -------- |
| oauth2Config | [v1.IdentityProviderOAuth2Config](#v1identityprovideroauth2config) |             | No       |

#### v1.IdentityProviderOAuth2Config

| Name         | Type                               | Description | Required |
| ------------ | ---------------------------------- | ----------- | -------- |
| authUrl      | string                             |             | No       |
| clientId     | string                             |             | No       |
| clientSecret | string                             |             | No       |
| fieldMapping | [v1.FieldMapping](#v1fieldmapping) |             | No       |
| scopes       | [ string ]                         |             | No       |
| tokenUrl     | string                             |             | No       |
| userInfoUrl  | string                             |             | No       |

#### v1.IdentityProviderType

| Name                    | Type   | Description | Required |
| ----------------------- | ------ | ----------- | -------- |
| v1.IdentityProviderType | string |             |          |

#### v1.MemoRelationType

| Name                | Type   | Description | Required |
| ------------------- | ------ | ----------- | -------- |
| v1.MemoRelationType | string |             |          |

#### v1.PatchMemoRequest

| Name           | Type                                                             | Description            | Required |
| -------------- | ---------------------------------------------------------------- | ---------------------- | -------- |
| content        | string                                                           | Domain specific fields | No       |
| createdTs      | integer                                                          | Standard fields        | No       |
| relationList   | [ [v1.UpsertMemoRelationRequest](#v1upsertmemorelationrequest) ] |                        | No       |
| resourceIdList | [ integer ]                                                      | Related fields         | No       |
| rowStatus      | [v1.RowStatus](#v1rowstatus)                                     |                        | No       |
| updatedTs      | integer                                                          |                        | No       |
| visibility     | [v1.Visibility](#v1visibility)                                   |                        | No       |

#### v1.Role

| Name    | Type   | Description | Required |
| ------- | ------ | ----------- | -------- |
| v1.Role | string |             |          |

#### v1.RowStatus

| Name         | Type   | Description | Required |
| ------------ | ------ | ----------- | -------- |
| v1.RowStatus | string |             |          |

#### v1.SSOSignIn

| Name               | Type    | Description | Required |
| ------------------ | ------- | ----------- | -------- |
| code               | string  |             | No       |
| identityProviderId | integer |             | No       |
| redirectUri        | string  |             | No       |

#### v1.SignIn

| Name     | Type   | Description | Required |
| -------- | ------ | ----------- | -------- |
| password | string |             | No       |
| username | string |             | No       |

#### v1.SignUp

| Name     | Type   | Description | Required |
| -------- | ------ | ----------- | -------- |
| password | string |             | No       |
| username | string |             | No       |

#### v1.StorageConfig

| Name     | Type                                     | Description | Required |
| -------- | ---------------------------------------- | ----------- | -------- |
| s3Config | [v1.StorageS3Config](#v1storages3config) |             | No       |

#### v1.StorageS3Config

| Name      | Type   | Description | Required |
| --------- | ------ | ----------- | -------- |
| accessKey | string |             | No       |
| bucket    | string |             | No       |
| endPoint  | string |             | No       |
| path      | string |             | No       |
| region    | string |             | No       |
| secretKey | string |             | No       |
| urlPrefix | string |             | No       |
| urlSuffix | string |             | No       |

#### v1.StorageType

| Name           | Type   | Description | Required |
| -------------- | ------ | ----------- | -------- |
| v1.StorageType | string |             |          |

#### v1.SystemSetting

| Name        | Type                                         | Description                              | Required |
| ----------- | -------------------------------------------- | ---------------------------------------- | -------- |
| description | string                                       |                                          | No       |
| name        | [v1.SystemSettingName](#v1systemsettingname) |                                          | No       |
| value       | string                                       | Value is a JSON string with basic value. | No       |

#### v1.SystemSettingName

| Name                 | Type   | Description | Required |
| -------------------- | ------ | ----------- | -------- |
| v1.SystemSettingName | string |             |          |

#### v1.SystemStatus

| Name                     | Type                                         | Description                                                        | Required |
| ------------------------ | -------------------------------------------- | ------------------------------------------------------------------ | -------- |
| additionalScript         | string                                       | Additional script.                                                 | No       |
| additionalStyle          | string                                       | Additional style.                                                  | No       |
| allowSignUp              | boolean                                      | System settings Allow sign up.                                     | No       |
| autoBackupInterval       | integer                                      | Auto Backup Interval.                                              | No       |
| customizedProfile        | [v1.CustomizedProfile](#v1customizedprofile) | Customized server profile, including server name and external url. | No       |
| dbSize                   | integer                                      |                                                                    | No       |
| disablePasswordLogin     | boolean                                      | Disable password login.                                            | No       |
| disablePublicMemos       | boolean                                      | Disable public memos.                                              | No       |
| host                     | [v1.User](#v1user)                           |                                                                    | No       |
| localStoragePath         | string                                       | Local storage path.                                                | No       |
| maxUploadSizeMiB         | integer                                      | Max upload size.                                                   | No       |
| memoDisplayWithUpdatedTs | boolean                                      | Memo display with updated timestamp.                               | No       |
| profile                  | [profile.Profile](#profileprofile)           |                                                                    | No       |
| storageServiceId         | integer                                      | Storage service ID.                                                | No       |

#### v1.UpdateIdentityProviderRequest

| Name             | Type                                                   | Description | Required |
| ---------------- | ------------------------------------------------------ | ----------- | -------- |
| config           | [v1.IdentityProviderConfig](#v1identityproviderconfig) |             | No       |
| identifierFilter | string                                                 |             | No       |
| name             | string                                                 |             | No       |
| type             | [v1.IdentityProviderType](#v1identityprovidertype)     |             | No       |

#### v1.UpdateResourceRequest

| Name     | Type   | Description | Required |
| -------- | ------ | ----------- | -------- |
| filename | string |             | No       |

#### v1.UpdateStorageRequest

| Name   | Type                                 | Description | Required |
| ------ | ------------------------------------ | ----------- | -------- |
| config | [v1.StorageConfig](#v1storageconfig) |             | No       |
| name   | string                               |             | No       |
| type   | [v1.StorageType](#v1storagetype)     |             | No       |

#### v1.UpdateUserRequest

| Name      | Type                         | Description | Required |
| --------- | ---------------------------- | ----------- | -------- |
| avatarUrl | string                       |             | No       |
| email     | string                       |             | No       |
| nickname  | string                       |             | No       |
| password  | string                       |             | No       |
| rowStatus | [v1.RowStatus](#v1rowstatus) |             | No       |
| username  | string                       |             | No       |

#### v1.UpsertMemoOrganizerRequest

| Name   | Type    | Description | Required |
| ------ | ------- | ----------- | -------- |
| pinned | boolean |             | No       |

#### v1.UpsertMemoRelationRequest

| Name          | Type                                       | Description | Required |
| ------------- | ------------------------------------------ | ----------- | -------- |
| relatedMemoId | integer                                    |             | No       |
| type          | [v1.MemoRelationType](#v1memorelationtype) |             | No       |

#### v1.UpsertSystemSettingRequest

| Name        | Type                                         | Description | Required |
| ----------- | -------------------------------------------- | ----------- | -------- |
| description | string                                       |             | No       |
| name        | [v1.SystemSettingName](#v1systemsettingname) |             | No       |
| value       | string                                       |             | No       |

#### v1.UpsertTagRequest

| Name | Type   | Description | Required |
| ---- | ------ | ----------- | -------- |
| name | string |             | No       |

#### v1.UpsertUserSettingRequest

| Name  | Type                                   | Description | Required |
| ----- | -------------------------------------- | ----------- | -------- |
| key   | [v1.UserSettingKey](#v1usersettingkey) |             | No       |
| value | string                                 |             | No       |

#### v1.User

| Name            | Type                                 | Description            | Required |
| --------------- | ------------------------------------ | ---------------------- | -------- |
| avatarUrl       | string                               |                        | No       |
| createdTs       | integer                              |                        | No       |
| email           | string                               |                        | No       |
| id              | integer                              |                        | No       |
| nickname        | string                               |                        | No       |
| role            | [v1.Role](#v1role)                   |                        | No       |
| rowStatus       | [v1.RowStatus](#v1rowstatus)         | Standard fields        | No       |
| updatedTs       | integer                              |                        | No       |
| userSettingList | [ [v1.UserSetting](#v1usersetting) ] |                        | No       |
| username        | string                               | Domain specific fields | No       |

#### v1.UserSetting

| Name   | Type                                   | Description | Required |
| ------ | -------------------------------------- | ----------- | -------- |
| key    | [v1.UserSettingKey](#v1usersettingkey) |             | No       |
| userId | integer                                |             | No       |
| value  | string                                 |             | No       |

#### v1.UserSettingKey

| Name              | Type   | Description | Required |
| ----------------- | ------ | ----------- | -------- |
| v1.UserSettingKey | string |             |          |

#### v1.Visibility

| Name          | Type   | Description | Required |
| ------------- | ------ | ----------- | -------- |
| v1.Visibility | string |             |          |