diff --git a/content/docs/api/0-27-1/aiservice/Transcribe.mdx b/content/docs/api/0-27-1/aiservice/Transcribe.mdx
new file mode 100644
index 0000000..95c6324
--- /dev/null
+++ b/content/docs/api/0-27-1/aiservice/Transcribe.mdx
@@ -0,0 +1,15 @@
+---
+title: Transcribe
+description: Transcribe transcribes an audio file using an instance AI provider.
+_openapi:
+ method: POST
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: Transcribe transcribes an audio file using an instance AI provider.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/aiservice/meta.json b/content/docs/api/0-27-1/aiservice/meta.json
new file mode 100644
index 0000000..773ba2a
--- /dev/null
+++ b/content/docs/api/0-27-1/aiservice/meta.json
@@ -0,0 +1,4 @@
+{
+ "title": "AI Service",
+ "pages": ["Transcribe"]
+}
diff --git a/content/docs/api/0-27-1/attachmentservice/BatchDeleteAttachments.mdx b/content/docs/api/0-27-1/attachmentservice/BatchDeleteAttachments.mdx
new file mode 100644
index 0000000..824fc34
--- /dev/null
+++ b/content/docs/api/0-27-1/attachmentservice/BatchDeleteAttachments.mdx
@@ -0,0 +1,15 @@
+---
+title: Batch Delete Attachments
+description: BatchDeleteAttachments deletes multiple attachments in one request.
+_openapi:
+ method: POST
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: BatchDeleteAttachments deletes multiple attachments in one request.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/attachmentservice/CreateAttachment.mdx b/content/docs/api/0-27-1/attachmentservice/CreateAttachment.mdx
new file mode 100644
index 0000000..3ef0974
--- /dev/null
+++ b/content/docs/api/0-27-1/attachmentservice/CreateAttachment.mdx
@@ -0,0 +1,15 @@
+---
+title: Create Attachment
+description: CreateAttachment creates a new attachment.
+_openapi:
+ method: POST
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: CreateAttachment creates a new attachment.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/attachmentservice/DeleteAttachment.mdx b/content/docs/api/0-27-1/attachmentservice/DeleteAttachment.mdx
new file mode 100644
index 0000000..b7a4f17
--- /dev/null
+++ b/content/docs/api/0-27-1/attachmentservice/DeleteAttachment.mdx
@@ -0,0 +1,15 @@
+---
+title: Delete Attachment
+description: DeleteAttachment deletes an attachment by name.
+_openapi:
+ method: DELETE
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: DeleteAttachment deletes an attachment by name.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/attachmentservice/GetAttachment.mdx b/content/docs/api/0-27-1/attachmentservice/GetAttachment.mdx
new file mode 100644
index 0000000..7bf257f
--- /dev/null
+++ b/content/docs/api/0-27-1/attachmentservice/GetAttachment.mdx
@@ -0,0 +1,15 @@
+---
+title: Get Attachment
+description: GetAttachment returns an attachment by name.
+_openapi:
+ method: GET
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: GetAttachment returns an attachment by name.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/attachmentservice/ListAttachments.mdx b/content/docs/api/0-27-1/attachmentservice/ListAttachments.mdx
new file mode 100644
index 0000000..d2aaebf
--- /dev/null
+++ b/content/docs/api/0-27-1/attachmentservice/ListAttachments.mdx
@@ -0,0 +1,15 @@
+---
+title: List Attachments
+description: ListAttachments lists all attachments.
+_openapi:
+ method: GET
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: ListAttachments lists all attachments.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/attachmentservice/UpdateAttachment.mdx b/content/docs/api/0-27-1/attachmentservice/UpdateAttachment.mdx
new file mode 100644
index 0000000..c7d14b4
--- /dev/null
+++ b/content/docs/api/0-27-1/attachmentservice/UpdateAttachment.mdx
@@ -0,0 +1,15 @@
+---
+title: Update Attachment
+description: UpdateAttachment updates an attachment.
+_openapi:
+ method: PATCH
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: UpdateAttachment updates an attachment.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/attachmentservice/meta.json b/content/docs/api/0-27-1/attachmentservice/meta.json
new file mode 100644
index 0000000..ab8873a
--- /dev/null
+++ b/content/docs/api/0-27-1/attachmentservice/meta.json
@@ -0,0 +1,4 @@
+{
+ "title": "Attachment Service",
+ "pages": ["BatchDeleteAttachments", "CreateAttachment", "DeleteAttachment", "GetAttachment", "ListAttachments", "UpdateAttachment"]
+}
diff --git a/content/docs/api/0-27-1/authservice/GetCurrentUser.mdx b/content/docs/api/0-27-1/authservice/GetCurrentUser.mdx
new file mode 100644
index 0000000..8ad4bf4
--- /dev/null
+++ b/content/docs/api/0-27-1/authservice/GetCurrentUser.mdx
@@ -0,0 +1,21 @@
+---
+title: Get Current User
+description: |-
+ GetCurrentUser returns the authenticated user's information.
+ Validates the access token and returns user details.
+ Similar to OIDC's /userinfo endpoint.
+_openapi:
+ method: GET
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: |-
+ GetCurrentUser returns the authenticated user's information.
+ Validates the access token and returns user details.
+ Similar to OIDC's /userinfo endpoint.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/authservice/RefreshToken.mdx b/content/docs/api/0-27-1/authservice/RefreshToken.mdx
new file mode 100644
index 0000000..0748365
--- /dev/null
+++ b/content/docs/api/0-27-1/authservice/RefreshToken.mdx
@@ -0,0 +1,21 @@
+---
+title: Refresh Token
+description: |-
+ RefreshToken exchanges a valid refresh token for a new access token.
+ The refresh token is read from the HttpOnly cookie.
+ Returns a new short-lived access token.
+_openapi:
+ method: POST
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: |-
+ RefreshToken exchanges a valid refresh token for a new access token.
+ The refresh token is read from the HttpOnly cookie.
+ Returns a new short-lived access token.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/authservice/SignIn.mdx b/content/docs/api/0-27-1/authservice/SignIn.mdx
new file mode 100644
index 0000000..fce70a2
--- /dev/null
+++ b/content/docs/api/0-27-1/authservice/SignIn.mdx
@@ -0,0 +1,21 @@
+---
+title: Sign In
+description: |-
+ SignIn authenticates a user with credentials and returns tokens.
+ On success, returns an access token and sets a refresh token cookie.
+ Supports password-based and SSO authentication methods.
+_openapi:
+ method: POST
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: |-
+ SignIn authenticates a user with credentials and returns tokens.
+ On success, returns an access token and sets a refresh token cookie.
+ Supports password-based and SSO authentication methods.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/authservice/SignOut.mdx b/content/docs/api/0-27-1/authservice/SignOut.mdx
new file mode 100644
index 0000000..196b0c1
--- /dev/null
+++ b/content/docs/api/0-27-1/authservice/SignOut.mdx
@@ -0,0 +1,19 @@
+---
+title: Sign Out
+description: |-
+ SignOut terminates the user's authentication.
+ Revokes the refresh token and clears the authentication cookie.
+_openapi:
+ method: POST
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: |-
+ SignOut terminates the user's authentication.
+ Revokes the refresh token and clears the authentication cookie.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/authservice/meta.json b/content/docs/api/0-27-1/authservice/meta.json
new file mode 100644
index 0000000..d97546f
--- /dev/null
+++ b/content/docs/api/0-27-1/authservice/meta.json
@@ -0,0 +1,4 @@
+{
+ "title": "Auth Service",
+ "pages": ["GetCurrentUser", "RefreshToken", "SignIn", "SignOut"]
+}
diff --git a/content/docs/api/0-27-1/identityproviderservice/CreateIdentityProvider.mdx b/content/docs/api/0-27-1/identityproviderservice/CreateIdentityProvider.mdx
new file mode 100644
index 0000000..a280bed
--- /dev/null
+++ b/content/docs/api/0-27-1/identityproviderservice/CreateIdentityProvider.mdx
@@ -0,0 +1,15 @@
+---
+title: Create Identity Provider
+description: CreateIdentityProvider creates an identity provider.
+_openapi:
+ method: POST
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: CreateIdentityProvider creates an identity provider.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/identityproviderservice/DeleteIdentityProvider.mdx b/content/docs/api/0-27-1/identityproviderservice/DeleteIdentityProvider.mdx
new file mode 100644
index 0000000..9945644
--- /dev/null
+++ b/content/docs/api/0-27-1/identityproviderservice/DeleteIdentityProvider.mdx
@@ -0,0 +1,15 @@
+---
+title: Delete Identity Provider
+description: DeleteIdentityProvider deletes an identity provider.
+_openapi:
+ method: DELETE
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: DeleteIdentityProvider deletes an identity provider.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/identityproviderservice/GetIdentityProvider.mdx b/content/docs/api/0-27-1/identityproviderservice/GetIdentityProvider.mdx
new file mode 100644
index 0000000..b73820a
--- /dev/null
+++ b/content/docs/api/0-27-1/identityproviderservice/GetIdentityProvider.mdx
@@ -0,0 +1,15 @@
+---
+title: Get Identity Provider
+description: GetIdentityProvider gets an identity provider.
+_openapi:
+ method: GET
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: GetIdentityProvider gets an identity provider.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/identityproviderservice/ListIdentityProviders.mdx b/content/docs/api/0-27-1/identityproviderservice/ListIdentityProviders.mdx
new file mode 100644
index 0000000..f8d1a29
--- /dev/null
+++ b/content/docs/api/0-27-1/identityproviderservice/ListIdentityProviders.mdx
@@ -0,0 +1,15 @@
+---
+title: List Identity Providers
+description: ListIdentityProviders lists identity providers.
+_openapi:
+ method: GET
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: ListIdentityProviders lists identity providers.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/identityproviderservice/UpdateIdentityProvider.mdx b/content/docs/api/0-27-1/identityproviderservice/UpdateIdentityProvider.mdx
new file mode 100644
index 0000000..9df26f3
--- /dev/null
+++ b/content/docs/api/0-27-1/identityproviderservice/UpdateIdentityProvider.mdx
@@ -0,0 +1,15 @@
+---
+title: Update Identity Provider
+description: UpdateIdentityProvider updates an identity provider.
+_openapi:
+ method: PATCH
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: UpdateIdentityProvider updates an identity provider.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/identityproviderservice/meta.json b/content/docs/api/0-27-1/identityproviderservice/meta.json
new file mode 100644
index 0000000..8d3dfb5
--- /dev/null
+++ b/content/docs/api/0-27-1/identityproviderservice/meta.json
@@ -0,0 +1,4 @@
+{
+ "title": "Identity Provider Service",
+ "pages": ["CreateIdentityProvider", "DeleteIdentityProvider", "GetIdentityProvider", "ListIdentityProviders", "UpdateIdentityProvider"]
+}
diff --git a/content/docs/api/0-27-1/index.mdx b/content/docs/api/0-27-1/index.mdx
new file mode 100644
index 0000000..d365fc8
--- /dev/null
+++ b/content/docs/api/0-27-1/index.mdx
@@ -0,0 +1,85 @@
+---
+title: API Reference
+description: Memos API Reference (0.27.x)
+---
+
+## Overview
+
+This reference matches the Memos `0.27.x` release.
+
+## Base URL
+
+The API is served at the `/api/v1` path of your Memos instance.
+
+```bash
+https://your-memos-instance.com/api/v1
+```
+
+For example, if your instance is hosted at `https://memos.example.com`, the API base URL would be:
+
+```bash
+https://memos.example.com/api/v1
+```
+
+## Authentication
+
+The Memos API uses Bearer Token authentication. You can obtain an access token by creating one in your account settings.
+
+Include the token in the `Authorization` header of your requests:
+
+```bash
+Authorization: Bearer
+```
+
+## Pagination
+
+List operations support pagination using `pageSize` and `pageToken` parameters.
+
+- `pageSize`: The maximum number of resources to return.
+- `pageToken`: A token received from a previous list response to retrieve the next page.
+
+## Filtering
+
+Some list operations support filtering via the `filter` parameter. The filter syntax follows the [Google AIP-160](https://google.aip.dev/160) standard.
+
+Example: `row_status == "NORMAL"`
+
+## Field Masks
+
+Update operations often require an `updateMask` parameter to specify which fields to update. This prevents accidental overwrites of other fields.
+
+Example: `updateMask=content,visibility`
+
+## Response Format
+
+All responses are returned in JSON format. Errors are returned with a standard status object:
+
+```json
+{
+ "code": 3,
+ "message": "Invalid argument",
+ "details": []
+}
+```
+
+## Example
+
+Here is an example of how to list memos:
+
+```bash
+curl -X GET "https://your-memos-instance.com/api/v1/memos?pageSize=10" \
+ -H "Authorization: Bearer "
+```
+
+## Services
+
+
+
+
+
+
+
+
+
+
+
diff --git a/content/docs/api/0-27-1/instanceservice/GetInstanceProfile.mdx b/content/docs/api/0-27-1/instanceservice/GetInstanceProfile.mdx
new file mode 100644
index 0000000..f2b0501
--- /dev/null
+++ b/content/docs/api/0-27-1/instanceservice/GetInstanceProfile.mdx
@@ -0,0 +1,15 @@
+---
+title: Get Instance Profile
+description: Gets the instance profile.
+_openapi:
+ method: GET
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: Gets the instance profile.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/instanceservice/GetInstanceSetting.mdx b/content/docs/api/0-27-1/instanceservice/GetInstanceSetting.mdx
new file mode 100644
index 0000000..cd6d36d
--- /dev/null
+++ b/content/docs/api/0-27-1/instanceservice/GetInstanceSetting.mdx
@@ -0,0 +1,15 @@
+---
+title: Get Instance Setting
+description: Gets an instance setting.
+_openapi:
+ method: GET
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: Gets an instance setting.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/instanceservice/UpdateInstanceSetting.mdx b/content/docs/api/0-27-1/instanceservice/UpdateInstanceSetting.mdx
new file mode 100644
index 0000000..1859988
--- /dev/null
+++ b/content/docs/api/0-27-1/instanceservice/UpdateInstanceSetting.mdx
@@ -0,0 +1,15 @@
+---
+title: Update Instance Setting
+description: Updates an instance setting.
+_openapi:
+ method: PATCH
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: Updates an instance setting.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/instanceservice/meta.json b/content/docs/api/0-27-1/instanceservice/meta.json
new file mode 100644
index 0000000..a6529bc
--- /dev/null
+++ b/content/docs/api/0-27-1/instanceservice/meta.json
@@ -0,0 +1,4 @@
+{
+ "title": "Instance Service",
+ "pages": ["GetInstanceProfile", "GetInstanceSetting", "UpdateInstanceSetting"]
+}
diff --git a/content/docs/api/0-27-1/memoservice/CreateMemo.mdx b/content/docs/api/0-27-1/memoservice/CreateMemo.mdx
new file mode 100644
index 0000000..acfe8a1
--- /dev/null
+++ b/content/docs/api/0-27-1/memoservice/CreateMemo.mdx
@@ -0,0 +1,15 @@
+---
+title: Create Memo
+description: CreateMemo creates a memo.
+_openapi:
+ method: POST
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: CreateMemo creates a memo.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/memoservice/CreateMemoComment.mdx b/content/docs/api/0-27-1/memoservice/CreateMemoComment.mdx
new file mode 100644
index 0000000..0b9fc53
--- /dev/null
+++ b/content/docs/api/0-27-1/memoservice/CreateMemoComment.mdx
@@ -0,0 +1,15 @@
+---
+title: Create Memo Comment
+description: CreateMemoComment creates a comment for a memo.
+_openapi:
+ method: POST
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: CreateMemoComment creates a comment for a memo.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/memoservice/CreateMemoShare.mdx b/content/docs/api/0-27-1/memoservice/CreateMemoShare.mdx
new file mode 100644
index 0000000..fe47ad4
--- /dev/null
+++ b/content/docs/api/0-27-1/memoservice/CreateMemoShare.mdx
@@ -0,0 +1,19 @@
+---
+title: Create Memo Share
+description: >-
+ CreateMemoShare creates a share link for a memo. Requires authentication as
+ the memo creator.
+_openapi:
+ method: POST
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: >-
+ CreateMemoShare creates a share link for a memo. Requires
+ authentication as the memo creator.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/memoservice/DeleteMemo.mdx b/content/docs/api/0-27-1/memoservice/DeleteMemo.mdx
new file mode 100644
index 0000000..aea8a47
--- /dev/null
+++ b/content/docs/api/0-27-1/memoservice/DeleteMemo.mdx
@@ -0,0 +1,15 @@
+---
+title: Delete Memo
+description: DeleteMemo deletes a memo.
+_openapi:
+ method: DELETE
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: DeleteMemo deletes a memo.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/memoservice/DeleteMemoReaction.mdx b/content/docs/api/0-27-1/memoservice/DeleteMemoReaction.mdx
new file mode 100644
index 0000000..e202d90
--- /dev/null
+++ b/content/docs/api/0-27-1/memoservice/DeleteMemoReaction.mdx
@@ -0,0 +1,15 @@
+---
+title: Delete Memo Reaction
+description: DeleteMemoReaction deletes a reaction for a memo.
+_openapi:
+ method: DELETE
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: DeleteMemoReaction deletes a reaction for a memo.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/memoservice/DeleteMemoShare.mdx b/content/docs/api/0-27-1/memoservice/DeleteMemoShare.mdx
new file mode 100644
index 0000000..ac941e6
--- /dev/null
+++ b/content/docs/api/0-27-1/memoservice/DeleteMemoShare.mdx
@@ -0,0 +1,19 @@
+---
+title: Delete Memo Share
+description: >-
+ DeleteMemoShare revokes a share link. Requires authentication as the memo
+ creator.
+_openapi:
+ method: DELETE
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: >-
+ DeleteMemoShare revokes a share link. Requires authentication as the
+ memo creator.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/memoservice/GetMemo.mdx b/content/docs/api/0-27-1/memoservice/GetMemo.mdx
new file mode 100644
index 0000000..c497a89
--- /dev/null
+++ b/content/docs/api/0-27-1/memoservice/GetMemo.mdx
@@ -0,0 +1,15 @@
+---
+title: Get Memo
+description: GetMemo gets a memo.
+_openapi:
+ method: GET
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: GetMemo gets a memo.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/memoservice/GetMemoByShare.mdx b/content/docs/api/0-27-1/memoservice/GetMemoByShare.mdx
new file mode 100644
index 0000000..4ead342
--- /dev/null
+++ b/content/docs/api/0-27-1/memoservice/GetMemoByShare.mdx
@@ -0,0 +1,20 @@
+---
+title: Get Memo By Share
+description: |-
+ GetMemoByShare resolves a share token to its memo. No authentication required.
+ Returns NOT_FOUND if the token is invalid or expired.
+_openapi:
+ method: GET
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: >-
+ GetMemoByShare resolves a share token to its memo. No authentication
+ required.
+ Returns NOT_FOUND if the token is invalid or expired.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/memoservice/ListMemoAttachments.mdx b/content/docs/api/0-27-1/memoservice/ListMemoAttachments.mdx
new file mode 100644
index 0000000..3e5b255
--- /dev/null
+++ b/content/docs/api/0-27-1/memoservice/ListMemoAttachments.mdx
@@ -0,0 +1,15 @@
+---
+title: List Memo Attachments
+description: ListMemoAttachments lists attachments for a memo.
+_openapi:
+ method: GET
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: ListMemoAttachments lists attachments for a memo.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/memoservice/ListMemoComments.mdx b/content/docs/api/0-27-1/memoservice/ListMemoComments.mdx
new file mode 100644
index 0000000..1065ef0
--- /dev/null
+++ b/content/docs/api/0-27-1/memoservice/ListMemoComments.mdx
@@ -0,0 +1,15 @@
+---
+title: List Memo Comments
+description: ListMemoComments lists comments for a memo.
+_openapi:
+ method: GET
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: ListMemoComments lists comments for a memo.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/memoservice/ListMemoReactions.mdx b/content/docs/api/0-27-1/memoservice/ListMemoReactions.mdx
new file mode 100644
index 0000000..ae967bf
--- /dev/null
+++ b/content/docs/api/0-27-1/memoservice/ListMemoReactions.mdx
@@ -0,0 +1,15 @@
+---
+title: List Memo Reactions
+description: ListMemoReactions lists reactions for a memo.
+_openapi:
+ method: GET
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: ListMemoReactions lists reactions for a memo.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/memoservice/ListMemoRelations.mdx b/content/docs/api/0-27-1/memoservice/ListMemoRelations.mdx
new file mode 100644
index 0000000..c7b59dc
--- /dev/null
+++ b/content/docs/api/0-27-1/memoservice/ListMemoRelations.mdx
@@ -0,0 +1,15 @@
+---
+title: List Memo Relations
+description: ListMemoRelations lists relations for a memo.
+_openapi:
+ method: GET
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: ListMemoRelations lists relations for a memo.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/memoservice/ListMemoShares.mdx b/content/docs/api/0-27-1/memoservice/ListMemoShares.mdx
new file mode 100644
index 0000000..e9ca30d
--- /dev/null
+++ b/content/docs/api/0-27-1/memoservice/ListMemoShares.mdx
@@ -0,0 +1,19 @@
+---
+title: List Memo Shares
+description: >-
+ ListMemoShares lists all share links for a memo. Requires authentication as
+ the memo creator.
+_openapi:
+ method: GET
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: >-
+ ListMemoShares lists all share links for a memo. Requires
+ authentication as the memo creator.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/memoservice/ListMemos.mdx b/content/docs/api/0-27-1/memoservice/ListMemos.mdx
new file mode 100644
index 0000000..accdbf6
--- /dev/null
+++ b/content/docs/api/0-27-1/memoservice/ListMemos.mdx
@@ -0,0 +1,15 @@
+---
+title: List Memos
+description: ListMemos lists memos with pagination and filter.
+_openapi:
+ method: GET
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: ListMemos lists memos with pagination and filter.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/memoservice/SetMemoAttachments.mdx b/content/docs/api/0-27-1/memoservice/SetMemoAttachments.mdx
new file mode 100644
index 0000000..940c710
--- /dev/null
+++ b/content/docs/api/0-27-1/memoservice/SetMemoAttachments.mdx
@@ -0,0 +1,15 @@
+---
+title: Set Memo Attachments
+description: SetMemoAttachments sets attachments for a memo.
+_openapi:
+ method: PATCH
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: SetMemoAttachments sets attachments for a memo.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/memoservice/SetMemoRelations.mdx b/content/docs/api/0-27-1/memoservice/SetMemoRelations.mdx
new file mode 100644
index 0000000..dc92143
--- /dev/null
+++ b/content/docs/api/0-27-1/memoservice/SetMemoRelations.mdx
@@ -0,0 +1,15 @@
+---
+title: Set Memo Relations
+description: SetMemoRelations sets relations for a memo.
+_openapi:
+ method: PATCH
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: SetMemoRelations sets relations for a memo.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/memoservice/UpdateMemo.mdx b/content/docs/api/0-27-1/memoservice/UpdateMemo.mdx
new file mode 100644
index 0000000..87be031
--- /dev/null
+++ b/content/docs/api/0-27-1/memoservice/UpdateMemo.mdx
@@ -0,0 +1,15 @@
+---
+title: Update Memo
+description: UpdateMemo updates a memo.
+_openapi:
+ method: PATCH
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: UpdateMemo updates a memo.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/memoservice/UpsertMemoReaction.mdx b/content/docs/api/0-27-1/memoservice/UpsertMemoReaction.mdx
new file mode 100644
index 0000000..b6898ea
--- /dev/null
+++ b/content/docs/api/0-27-1/memoservice/UpsertMemoReaction.mdx
@@ -0,0 +1,15 @@
+---
+title: Upsert Memo Reaction
+description: UpsertMemoReaction upserts a reaction for a memo.
+_openapi:
+ method: POST
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: UpsertMemoReaction upserts a reaction for a memo.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/memoservice/meta.json b/content/docs/api/0-27-1/memoservice/meta.json
new file mode 100644
index 0000000..a15a288
--- /dev/null
+++ b/content/docs/api/0-27-1/memoservice/meta.json
@@ -0,0 +1,23 @@
+{
+ "title": "Memo Service",
+ "pages": [
+ "CreateMemo",
+ "CreateMemoComment",
+ "CreateMemoShare",
+ "DeleteMemo",
+ "DeleteMemoReaction",
+ "DeleteMemoShare",
+ "GetMemo",
+ "GetMemoByShare",
+ "ListMemoAttachments",
+ "ListMemoComments",
+ "ListMemoReactions",
+ "ListMemoRelations",
+ "ListMemoShares",
+ "ListMemos",
+ "SetMemoAttachments",
+ "SetMemoRelations",
+ "UpdateMemo",
+ "UpsertMemoReaction"
+ ]
+}
diff --git a/content/docs/api/0-27-1/meta.json b/content/docs/api/0-27-1/meta.json
new file mode 100644
index 0000000..aa8b75c
--- /dev/null
+++ b/content/docs/api/0-27-1/meta.json
@@ -0,0 +1,14 @@
+{
+ "title": "0.27.x",
+ "pages": [
+ "index",
+ "aiservice",
+ "attachmentservice",
+ "authservice",
+ "identityproviderservice",
+ "instanceservice",
+ "memoservice",
+ "shortcutservice",
+ "userservice"
+ ]
+}
diff --git a/content/docs/api/0-27-1/shortcutservice/CreateShortcut.mdx b/content/docs/api/0-27-1/shortcutservice/CreateShortcut.mdx
new file mode 100644
index 0000000..2ae1504
--- /dev/null
+++ b/content/docs/api/0-27-1/shortcutservice/CreateShortcut.mdx
@@ -0,0 +1,15 @@
+---
+title: Create Shortcut
+description: CreateShortcut creates a new shortcut for a user.
+_openapi:
+ method: POST
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: CreateShortcut creates a new shortcut for a user.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/shortcutservice/DeleteShortcut.mdx b/content/docs/api/0-27-1/shortcutservice/DeleteShortcut.mdx
new file mode 100644
index 0000000..802c5e5
--- /dev/null
+++ b/content/docs/api/0-27-1/shortcutservice/DeleteShortcut.mdx
@@ -0,0 +1,15 @@
+---
+title: Delete Shortcut
+description: DeleteShortcut deletes a shortcut for a user.
+_openapi:
+ method: DELETE
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: DeleteShortcut deletes a shortcut for a user.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/shortcutservice/GetShortcut.mdx b/content/docs/api/0-27-1/shortcutservice/GetShortcut.mdx
new file mode 100644
index 0000000..307a034
--- /dev/null
+++ b/content/docs/api/0-27-1/shortcutservice/GetShortcut.mdx
@@ -0,0 +1,15 @@
+---
+title: Get Shortcut
+description: GetShortcut gets a shortcut by name.
+_openapi:
+ method: GET
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: GetShortcut gets a shortcut by name.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/shortcutservice/ListShortcuts.mdx b/content/docs/api/0-27-1/shortcutservice/ListShortcuts.mdx
new file mode 100644
index 0000000..a747870
--- /dev/null
+++ b/content/docs/api/0-27-1/shortcutservice/ListShortcuts.mdx
@@ -0,0 +1,15 @@
+---
+title: List Shortcuts
+description: ListShortcuts returns a list of shortcuts for a user.
+_openapi:
+ method: GET
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: ListShortcuts returns a list of shortcuts for a user.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/shortcutservice/UpdateShortcut.mdx b/content/docs/api/0-27-1/shortcutservice/UpdateShortcut.mdx
new file mode 100644
index 0000000..c159194
--- /dev/null
+++ b/content/docs/api/0-27-1/shortcutservice/UpdateShortcut.mdx
@@ -0,0 +1,15 @@
+---
+title: Update Shortcut
+description: UpdateShortcut updates a shortcut for a user.
+_openapi:
+ method: PATCH
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: UpdateShortcut updates a shortcut for a user.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/shortcutservice/meta.json b/content/docs/api/0-27-1/shortcutservice/meta.json
new file mode 100644
index 0000000..21f82b4
--- /dev/null
+++ b/content/docs/api/0-27-1/shortcutservice/meta.json
@@ -0,0 +1,4 @@
+{
+ "title": "Shortcut Service",
+ "pages": ["CreateShortcut", "DeleteShortcut", "GetShortcut", "ListShortcuts", "UpdateShortcut"]
+}
diff --git a/content/docs/api/0-27-1/userservice/BatchGetUsers.mdx b/content/docs/api/0-27-1/userservice/BatchGetUsers.mdx
new file mode 100644
index 0000000..cd96b8a
--- /dev/null
+++ b/content/docs/api/0-27-1/userservice/BatchGetUsers.mdx
@@ -0,0 +1,15 @@
+---
+title: Batch Get Users
+description: BatchGetUsers returns active users by usernames.
+_openapi:
+ method: POST
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: BatchGetUsers returns active users by usernames.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/userservice/CreatePersonalAccessToken.mdx b/content/docs/api/0-27-1/userservice/CreatePersonalAccessToken.mdx
new file mode 100644
index 0000000..46cd4be
--- /dev/null
+++ b/content/docs/api/0-27-1/userservice/CreatePersonalAccessToken.mdx
@@ -0,0 +1,20 @@
+---
+title: Create Personal Access Token
+description: |-
+ CreatePersonalAccessToken creates a new Personal Access Token for a user.
+ The token value is only returned once upon creation.
+_openapi:
+ method: POST
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: >-
+ CreatePersonalAccessToken creates a new Personal Access Token for a
+ user.
+ The token value is only returned once upon creation.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/userservice/CreateUser.mdx b/content/docs/api/0-27-1/userservice/CreateUser.mdx
new file mode 100644
index 0000000..1ce0998
--- /dev/null
+++ b/content/docs/api/0-27-1/userservice/CreateUser.mdx
@@ -0,0 +1,15 @@
+---
+title: Create User
+description: CreateUser creates a new user.
+_openapi:
+ method: POST
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: CreateUser creates a new user.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/userservice/CreateUserWebhook.mdx b/content/docs/api/0-27-1/userservice/CreateUserWebhook.mdx
new file mode 100644
index 0000000..971f2f5
--- /dev/null
+++ b/content/docs/api/0-27-1/userservice/CreateUserWebhook.mdx
@@ -0,0 +1,15 @@
+---
+title: Create User Webhook
+description: CreateUserWebhook creates a new webhook for a user.
+_openapi:
+ method: POST
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: CreateUserWebhook creates a new webhook for a user.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/userservice/DeletePersonalAccessToken.mdx b/content/docs/api/0-27-1/userservice/DeletePersonalAccessToken.mdx
new file mode 100644
index 0000000..1497a92
--- /dev/null
+++ b/content/docs/api/0-27-1/userservice/DeletePersonalAccessToken.mdx
@@ -0,0 +1,15 @@
+---
+title: Delete Personal Access Token
+description: DeletePersonalAccessToken deletes a Personal Access Token.
+_openapi:
+ method: DELETE
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: DeletePersonalAccessToken deletes a Personal Access Token.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/userservice/DeleteUser.mdx b/content/docs/api/0-27-1/userservice/DeleteUser.mdx
new file mode 100644
index 0000000..ee15338
--- /dev/null
+++ b/content/docs/api/0-27-1/userservice/DeleteUser.mdx
@@ -0,0 +1,15 @@
+---
+title: Delete User
+description: DeleteUser deletes a user.
+_openapi:
+ method: DELETE
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: DeleteUser deletes a user.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/userservice/DeleteUserNotification.mdx b/content/docs/api/0-27-1/userservice/DeleteUserNotification.mdx
new file mode 100644
index 0000000..00a2b4e
--- /dev/null
+++ b/content/docs/api/0-27-1/userservice/DeleteUserNotification.mdx
@@ -0,0 +1,15 @@
+---
+title: Delete User Notification
+description: DeleteUserNotification deletes a notification.
+_openapi:
+ method: DELETE
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: DeleteUserNotification deletes a notification.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/userservice/DeleteUserWebhook.mdx b/content/docs/api/0-27-1/userservice/DeleteUserWebhook.mdx
new file mode 100644
index 0000000..72881a6
--- /dev/null
+++ b/content/docs/api/0-27-1/userservice/DeleteUserWebhook.mdx
@@ -0,0 +1,15 @@
+---
+title: Delete User Webhook
+description: DeleteUserWebhook deletes a webhook for a user.
+_openapi:
+ method: DELETE
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: DeleteUserWebhook deletes a webhook for a user.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/userservice/GetUser.mdx b/content/docs/api/0-27-1/userservice/GetUser.mdx
new file mode 100644
index 0000000..91c8fb4
--- /dev/null
+++ b/content/docs/api/0-27-1/userservice/GetUser.mdx
@@ -0,0 +1,19 @@
+---
+title: Get User
+description: |-
+ GetUser gets a user by username.
+ Format: users/{username} (e.g., users/steven)
+_openapi:
+ method: GET
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: |-
+ GetUser gets a user by username.
+ Format: users/{username} (e.g., users/steven)
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/userservice/GetUserSetting.mdx b/content/docs/api/0-27-1/userservice/GetUserSetting.mdx
new file mode 100644
index 0000000..391616e
--- /dev/null
+++ b/content/docs/api/0-27-1/userservice/GetUserSetting.mdx
@@ -0,0 +1,15 @@
+---
+title: Get User Setting
+description: GetUserSetting returns the user setting.
+_openapi:
+ method: GET
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: GetUserSetting returns the user setting.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/userservice/GetUserStats.mdx b/content/docs/api/0-27-1/userservice/GetUserStats.mdx
new file mode 100644
index 0000000..bf30281
--- /dev/null
+++ b/content/docs/api/0-27-1/userservice/GetUserStats.mdx
@@ -0,0 +1,15 @@
+---
+title: Get User Stats
+description: GetUserStats returns statistics for a specific user.
+_openapi:
+ method: GET
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: GetUserStats returns statistics for a specific user.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/userservice/ListAllUserStats.mdx b/content/docs/api/0-27-1/userservice/ListAllUserStats.mdx
new file mode 100644
index 0000000..ecd8ddf
--- /dev/null
+++ b/content/docs/api/0-27-1/userservice/ListAllUserStats.mdx
@@ -0,0 +1,15 @@
+---
+title: List All User Stats
+description: ListAllUserStats returns statistics for all users.
+_openapi:
+ method: GET
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: ListAllUserStats returns statistics for all users.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/userservice/ListPersonalAccessTokens.mdx b/content/docs/api/0-27-1/userservice/ListPersonalAccessTokens.mdx
new file mode 100644
index 0000000..bcb918f
--- /dev/null
+++ b/content/docs/api/0-27-1/userservice/ListPersonalAccessTokens.mdx
@@ -0,0 +1,21 @@
+---
+title: List Personal Access Tokens
+description: >-
+ ListPersonalAccessTokens returns a list of Personal Access Tokens (PATs) for a
+ user.
+ PATs are long-lived tokens for API/script access, distinct from short-lived JWT access tokens.
+_openapi:
+ method: GET
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: >-
+ ListPersonalAccessTokens returns a list of Personal Access Tokens
+ (PATs) for a user.
+ PATs are long-lived tokens for API/script access, distinct from short-lived JWT access tokens.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/userservice/ListUserNotifications.mdx b/content/docs/api/0-27-1/userservice/ListUserNotifications.mdx
new file mode 100644
index 0000000..6684065
--- /dev/null
+++ b/content/docs/api/0-27-1/userservice/ListUserNotifications.mdx
@@ -0,0 +1,15 @@
+---
+title: List User Notifications
+description: ListUserNotifications lists notifications for a user.
+_openapi:
+ method: GET
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: ListUserNotifications lists notifications for a user.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/userservice/ListUserSettings.mdx b/content/docs/api/0-27-1/userservice/ListUserSettings.mdx
new file mode 100644
index 0000000..d0aca3b
--- /dev/null
+++ b/content/docs/api/0-27-1/userservice/ListUserSettings.mdx
@@ -0,0 +1,15 @@
+---
+title: List User Settings
+description: ListUserSettings returns a list of user settings.
+_openapi:
+ method: GET
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: ListUserSettings returns a list of user settings.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/userservice/ListUserWebhooks.mdx b/content/docs/api/0-27-1/userservice/ListUserWebhooks.mdx
new file mode 100644
index 0000000..260daff
--- /dev/null
+++ b/content/docs/api/0-27-1/userservice/ListUserWebhooks.mdx
@@ -0,0 +1,15 @@
+---
+title: List User Webhooks
+description: ListUserWebhooks returns a list of webhooks for a user.
+_openapi:
+ method: GET
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: ListUserWebhooks returns a list of webhooks for a user.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/userservice/ListUsers.mdx b/content/docs/api/0-27-1/userservice/ListUsers.mdx
new file mode 100644
index 0000000..349f59f
--- /dev/null
+++ b/content/docs/api/0-27-1/userservice/ListUsers.mdx
@@ -0,0 +1,15 @@
+---
+title: List Users
+description: ListUsers returns a list of users.
+_openapi:
+ method: GET
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: ListUsers returns a list of users.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/userservice/UpdateUser.mdx b/content/docs/api/0-27-1/userservice/UpdateUser.mdx
new file mode 100644
index 0000000..39e3ff9
--- /dev/null
+++ b/content/docs/api/0-27-1/userservice/UpdateUser.mdx
@@ -0,0 +1,15 @@
+---
+title: Update User
+description: UpdateUser updates a user.
+_openapi:
+ method: PATCH
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: UpdateUser updates a user.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/userservice/UpdateUserNotification.mdx b/content/docs/api/0-27-1/userservice/UpdateUserNotification.mdx
new file mode 100644
index 0000000..6fd8f7e
--- /dev/null
+++ b/content/docs/api/0-27-1/userservice/UpdateUserNotification.mdx
@@ -0,0 +1,15 @@
+---
+title: Update User Notification
+description: UpdateUserNotification updates a notification.
+_openapi:
+ method: PATCH
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: UpdateUserNotification updates a notification.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/userservice/UpdateUserSetting.mdx b/content/docs/api/0-27-1/userservice/UpdateUserSetting.mdx
new file mode 100644
index 0000000..1f020ff
--- /dev/null
+++ b/content/docs/api/0-27-1/userservice/UpdateUserSetting.mdx
@@ -0,0 +1,15 @@
+---
+title: Update User Setting
+description: UpdateUserSetting updates the user setting.
+_openapi:
+ method: PATCH
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: UpdateUserSetting updates the user setting.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/userservice/UpdateUserWebhook.mdx b/content/docs/api/0-27-1/userservice/UpdateUserWebhook.mdx
new file mode 100644
index 0000000..df093a3
--- /dev/null
+++ b/content/docs/api/0-27-1/userservice/UpdateUserWebhook.mdx
@@ -0,0 +1,15 @@
+---
+title: Update User Webhook
+description: UpdateUserWebhook updates an existing webhook for a user.
+_openapi:
+ method: PATCH
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: UpdateUserWebhook updates an existing webhook for a user.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/0-27-1/userservice/meta.json b/content/docs/api/0-27-1/userservice/meta.json
new file mode 100644
index 0000000..3d669c1
--- /dev/null
+++ b/content/docs/api/0-27-1/userservice/meta.json
@@ -0,0 +1,26 @@
+{
+ "title": "User Service",
+ "pages": [
+ "BatchGetUsers",
+ "CreatePersonalAccessToken",
+ "CreateUser",
+ "CreateUserWebhook",
+ "DeletePersonalAccessToken",
+ "DeleteUser",
+ "DeleteUserNotification",
+ "DeleteUserWebhook",
+ "GetUser",
+ "GetUserSetting",
+ "GetUserStats",
+ "ListAllUserStats",
+ "ListPersonalAccessTokens",
+ "ListUserNotifications",
+ "ListUserSettings",
+ "ListUserWebhooks",
+ "ListUsers",
+ "UpdateUser",
+ "UpdateUserNotification",
+ "UpdateUserSetting",
+ "UpdateUserWebhook"
+ ]
+}
diff --git a/content/docs/api/latest/aiservice/Transcribe.mdx b/content/docs/api/latest/aiservice/Transcribe.mdx
new file mode 100644
index 0000000..4c57f91
--- /dev/null
+++ b/content/docs/api/latest/aiservice/Transcribe.mdx
@@ -0,0 +1,15 @@
+---
+title: Transcribe
+description: Transcribe transcribes an audio file using an instance AI provider.
+_openapi:
+ method: POST
+ toc: []
+ structuredData:
+ headings: []
+ contents:
+ - content: Transcribe transcribes an audio file using an instance AI provider.
+---
+
+{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
+
+
\ No newline at end of file
diff --git a/content/docs/api/latest/aiservice/meta.json b/content/docs/api/latest/aiservice/meta.json
new file mode 100644
index 0000000..773ba2a
--- /dev/null
+++ b/content/docs/api/latest/aiservice/meta.json
@@ -0,0 +1,4 @@
+{
+ "title": "AI Service",
+ "pages": ["Transcribe"]
+}
diff --git a/content/docs/api/latest/index.mdx b/content/docs/api/latest/index.mdx
index 529ffd8..fdafd71 100644
--- a/content/docs/api/latest/index.mdx
+++ b/content/docs/api/latest/index.mdx
@@ -74,6 +74,7 @@ curl -X GET "https://your-memos-instance.com/api/v1/memos?pageSize=10" \
## Services
+
diff --git a/content/docs/api/latest/meta.json b/content/docs/api/latest/meta.json
index 6592be8..7ce5771 100644
--- a/content/docs/api/latest/meta.json
+++ b/content/docs/api/latest/meta.json
@@ -2,6 +2,7 @@
"title": "Latest",
"pages": [
"index",
+ "aiservice",
"attachmentservice",
"authservice",
"identityproviderservice",
diff --git a/content/docs/api/meta.json b/content/docs/api/meta.json
index c35b418..ff37f21 100644
--- a/content/docs/api/meta.json
+++ b/content/docs/api/meta.json
@@ -1,4 +1,4 @@
{
"title": "API Reference",
- "pages": ["latest", "0-26-2"]
+ "pages": ["latest", "0-27-1", "0-26-2"]
}
diff --git a/openapi/0-27-1.yaml b/openapi/0-27-1.yaml
new file mode 100644
index 0000000..11d0cfc
--- /dev/null
+++ b/openapi/0-27-1.yaml
@@ -0,0 +1,3548 @@
+# Generated with protoc-gen-openapi
+# https://github.com/google/gnostic/tree/master/cmd/protoc-gen-openapi
+
+openapi: 3.0.3
+info:
+ title: ""
+ version: 0.0.1
+paths:
+ /api/v1/ai:transcribe:
+ post:
+ tags:
+ - AIService
+ description: Transcribe transcribes an audio file using an instance AI provider.
+ operationId: AIService_Transcribe
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/TranscribeRequest'
+ required: true
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/TranscribeResponse'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/attachments:
+ get:
+ tags:
+ - AttachmentService
+ description: ListAttachments lists all attachments.
+ operationId: AttachmentService_ListAttachments
+ parameters:
+ - name: pageSize
+ in: query
+ description: |-
+ Optional. The maximum number of attachments to return.
+ The service may return fewer than this value.
+ If unspecified, at most 50 attachments will be returned.
+ The maximum value is 1000; values above 1000 will be coerced to 1000.
+ schema:
+ type: integer
+ format: int32
+ - name: pageToken
+ in: query
+ description: |-
+ Optional. A page token, received from a previous `ListAttachments` call.
+ Provide this to retrieve the subsequent page.
+ schema:
+ type: string
+ - name: filter
+ in: query
+ description: |-
+ Optional. Filter to apply to the list results.
+ Example: "mime_type==\"image/png\"" or "filename.contains(\"test\")"
+ Supported operators: =, !=, <, <=, >, >=, : (contains), in
+ Supported fields: filename, mime_type, create_time, memo
+ schema:
+ type: string
+ - name: orderBy
+ in: query
+ description: |-
+ Optional. The order to sort results by.
+ Example: "create_time desc" or "filename asc"
+ schema:
+ type: string
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ListAttachmentsResponse'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ post:
+ tags:
+ - AttachmentService
+ description: CreateAttachment creates a new attachment.
+ operationId: AttachmentService_CreateAttachment
+ parameters:
+ - name: attachmentId
+ in: query
+ description: |-
+ Optional. The attachment ID to use for this attachment.
+ If empty, a unique ID will be generated.
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Attachment'
+ required: true
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Attachment'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/attachments/{attachment}:
+ get:
+ tags:
+ - AttachmentService
+ description: GetAttachment returns an attachment by name.
+ operationId: AttachmentService_GetAttachment
+ parameters:
+ - name: attachment
+ in: path
+ description: The attachment id.
+ required: true
+ schema:
+ type: string
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Attachment'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ delete:
+ tags:
+ - AttachmentService
+ description: DeleteAttachment deletes an attachment by name.
+ operationId: AttachmentService_DeleteAttachment
+ parameters:
+ - name: attachment
+ in: path
+ description: The attachment id.
+ required: true
+ schema:
+ type: string
+ responses:
+ "200":
+ description: OK
+ content: {}
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ patch:
+ tags:
+ - AttachmentService
+ description: UpdateAttachment updates an attachment.
+ operationId: AttachmentService_UpdateAttachment
+ parameters:
+ - name: attachment
+ in: path
+ description: The attachment id.
+ required: true
+ schema:
+ type: string
+ - name: updateMask
+ in: query
+ description: Required. The list of fields to update.
+ schema:
+ type: string
+ format: field-mask
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Attachment'
+ required: true
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Attachment'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/attachments:batchDelete:
+ post:
+ tags:
+ - AttachmentService
+ description: BatchDeleteAttachments deletes multiple attachments in one request.
+ operationId: AttachmentService_BatchDeleteAttachments
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BatchDeleteAttachmentsRequest'
+ required: true
+ responses:
+ "200":
+ description: OK
+ content: {}
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/auth/me:
+ get:
+ tags:
+ - AuthService
+ description: |-
+ GetCurrentUser returns the authenticated user's information.
+ Validates the access token and returns user details.
+ Similar to OIDC's /userinfo endpoint.
+ operationId: AuthService_GetCurrentUser
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/GetCurrentUserResponse'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/auth/refresh:
+ post:
+ tags:
+ - AuthService
+ description: |-
+ RefreshToken exchanges a valid refresh token for a new access token.
+ The refresh token is read from the HttpOnly cookie.
+ Returns a new short-lived access token.
+ operationId: AuthService_RefreshToken
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/RefreshTokenRequest'
+ required: true
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/RefreshTokenResponse'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/auth/signin:
+ post:
+ tags:
+ - AuthService
+ description: |-
+ SignIn authenticates a user with credentials and returns tokens.
+ On success, returns an access token and sets a refresh token cookie.
+ Supports password-based and SSO authentication methods.
+ operationId: AuthService_SignIn
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/SignInRequest'
+ required: true
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/SignInResponse'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/auth/signout:
+ post:
+ tags:
+ - AuthService
+ description: |-
+ SignOut terminates the user's authentication.
+ Revokes the refresh token and clears the authentication cookie.
+ operationId: AuthService_SignOut
+ responses:
+ "200":
+ description: OK
+ content: {}
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/identity-providers:
+ get:
+ tags:
+ - IdentityProviderService
+ description: ListIdentityProviders lists identity providers.
+ operationId: IdentityProviderService_ListIdentityProviders
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ListIdentityProvidersResponse'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ post:
+ tags:
+ - IdentityProviderService
+ description: CreateIdentityProvider creates an identity provider.
+ operationId: IdentityProviderService_CreateIdentityProvider
+ parameters:
+ - name: identityProviderId
+ in: query
+ description: |-
+ Optional. The ID to use for the identity provider, which will become the final component of the resource name.
+ If not provided, the system will generate one.
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/IdentityProvider'
+ required: true
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/IdentityProvider'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/identity-providers/{identity-provider}:
+ get:
+ tags:
+ - IdentityProviderService
+ description: GetIdentityProvider gets an identity provider.
+ operationId: IdentityProviderService_GetIdentityProvider
+ parameters:
+ - name: identity-provider
+ in: path
+ description: The identity-provider id.
+ required: true
+ schema:
+ type: string
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/IdentityProvider'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ delete:
+ tags:
+ - IdentityProviderService
+ description: DeleteIdentityProvider deletes an identity provider.
+ operationId: IdentityProviderService_DeleteIdentityProvider
+ parameters:
+ - name: identity-provider
+ in: path
+ description: The identity-provider id.
+ required: true
+ schema:
+ type: string
+ responses:
+ "200":
+ description: OK
+ content: {}
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ patch:
+ tags:
+ - IdentityProviderService
+ description: UpdateIdentityProvider updates an identity provider.
+ operationId: IdentityProviderService_UpdateIdentityProvider
+ parameters:
+ - name: identity-provider
+ in: path
+ description: The identity-provider id.
+ required: true
+ schema:
+ type: string
+ - name: updateMask
+ in: query
+ description: |-
+ Required. The update mask applies to the resource. Only the top level fields of
+ IdentityProvider are supported.
+ schema:
+ type: string
+ format: field-mask
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/IdentityProvider'
+ required: true
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/IdentityProvider'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/instance/profile:
+ get:
+ tags:
+ - InstanceService
+ description: Gets the instance profile.
+ operationId: InstanceService_GetInstanceProfile
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/InstanceProfile'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/instance/{instance}/*:
+ get:
+ tags:
+ - InstanceService
+ description: Gets an instance setting.
+ operationId: InstanceService_GetInstanceSetting
+ parameters:
+ - name: instance
+ in: path
+ description: The instance id.
+ required: true
+ schema:
+ type: string
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/InstanceSetting'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ patch:
+ tags:
+ - InstanceService
+ description: Updates an instance setting.
+ operationId: InstanceService_UpdateInstanceSetting
+ parameters:
+ - name: instance
+ in: path
+ description: The instance id.
+ required: true
+ schema:
+ type: string
+ - name: updateMask
+ in: query
+ description: The list of fields to update.
+ schema:
+ type: string
+ format: field-mask
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/InstanceSetting'
+ required: true
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/InstanceSetting'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/memos:
+ get:
+ tags:
+ - MemoService
+ description: ListMemos lists memos with pagination and filter.
+ operationId: MemoService_ListMemos
+ parameters:
+ - name: pageSize
+ in: query
+ description: |-
+ Optional. The maximum number of memos to return.
+ The service may return fewer than this value.
+ If unspecified, at most 50 memos will be returned.
+ The maximum value is 1000; values above 1000 will be coerced to 1000.
+ schema:
+ type: integer
+ format: int32
+ - name: pageToken
+ in: query
+ description: |-
+ Optional. A page token, received from a previous `ListMemos` call.
+ Provide this to retrieve the subsequent page.
+ schema:
+ type: string
+ - name: state
+ in: query
+ description: |-
+ Optional. The state of the memos to list.
+ Default to `NORMAL`. Set to `ARCHIVED` to list archived memos.
+ schema:
+ enum:
+ - STATE_UNSPECIFIED
+ - NORMAL
+ - ARCHIVED
+ type: string
+ format: enum
+ - name: orderBy
+ in: query
+ description: |-
+ Optional. The order to sort results by.
+ Default to "display_time desc".
+ Supports comma-separated list of fields following AIP-132.
+ Example: "pinned desc, display_time desc" or "create_time asc"
+ Supported fields: pinned, display_time, create_time, update_time, name
+ schema:
+ type: string
+ - name: filter
+ in: query
+ description: |-
+ Optional. Filter to apply to the list results.
+ Filter is a CEL expression to filter memos.
+ Refer to `Shortcut.filter`.
+ schema:
+ type: string
+ - name: showDeleted
+ in: query
+ description: Optional. If true, show deleted memos in the response.
+ schema:
+ type: boolean
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ListMemosResponse'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ post:
+ tags:
+ - MemoService
+ description: CreateMemo creates a memo.
+ operationId: MemoService_CreateMemo
+ parameters:
+ - name: memoId
+ in: query
+ description: |-
+ Optional. The memo ID to use for this memo.
+ If empty, a unique ID will be generated.
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Memo'
+ required: true
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Memo'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/memos/{memo}:
+ get:
+ tags:
+ - MemoService
+ description: GetMemo gets a memo.
+ operationId: MemoService_GetMemo
+ parameters:
+ - name: memo
+ in: path
+ description: The memo id.
+ required: true
+ schema:
+ type: string
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Memo'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ delete:
+ tags:
+ - MemoService
+ description: DeleteMemo deletes a memo.
+ operationId: MemoService_DeleteMemo
+ parameters:
+ - name: memo
+ in: path
+ description: The memo id.
+ required: true
+ schema:
+ type: string
+ - name: force
+ in: query
+ description: Optional. If set to true, the memo will be deleted even if it has associated data.
+ schema:
+ type: boolean
+ responses:
+ "200":
+ description: OK
+ content: {}
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ patch:
+ tags:
+ - MemoService
+ description: UpdateMemo updates a memo.
+ operationId: MemoService_UpdateMemo
+ parameters:
+ - name: memo
+ in: path
+ description: The memo id.
+ required: true
+ schema:
+ type: string
+ - name: updateMask
+ in: query
+ description: Required. The list of fields to update.
+ schema:
+ type: string
+ format: field-mask
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Memo'
+ required: true
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Memo'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/memos/{memo}/attachments:
+ get:
+ tags:
+ - MemoService
+ description: ListMemoAttachments lists attachments for a memo.
+ operationId: MemoService_ListMemoAttachments
+ parameters:
+ - name: memo
+ in: path
+ description: The memo id.
+ required: true
+ schema:
+ type: string
+ - name: pageSize
+ in: query
+ description: Optional. The maximum number of attachments to return.
+ schema:
+ type: integer
+ format: int32
+ - name: pageToken
+ in: query
+ description: Optional. A page token for pagination.
+ schema:
+ type: string
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ListMemoAttachmentsResponse'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ patch:
+ tags:
+ - MemoService
+ description: SetMemoAttachments sets attachments for a memo.
+ operationId: MemoService_SetMemoAttachments
+ parameters:
+ - name: memo
+ in: path
+ description: The memo id.
+ required: true
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/SetMemoAttachmentsRequest'
+ required: true
+ responses:
+ "200":
+ description: OK
+ content: {}
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/memos/{memo}/comments:
+ get:
+ tags:
+ - MemoService
+ description: ListMemoComments lists comments for a memo.
+ operationId: MemoService_ListMemoComments
+ parameters:
+ - name: memo
+ in: path
+ description: The memo id.
+ required: true
+ schema:
+ type: string
+ - name: pageSize
+ in: query
+ description: Optional. The maximum number of comments to return.
+ schema:
+ type: integer
+ format: int32
+ - name: pageToken
+ in: query
+ description: Optional. A page token for pagination.
+ schema:
+ type: string
+ - name: orderBy
+ in: query
+ description: Optional. The order to sort results by.
+ schema:
+ type: string
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ListMemoCommentsResponse'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ post:
+ tags:
+ - MemoService
+ description: CreateMemoComment creates a comment for a memo.
+ operationId: MemoService_CreateMemoComment
+ parameters:
+ - name: memo
+ in: path
+ description: The memo id.
+ required: true
+ schema:
+ type: string
+ - name: commentId
+ in: query
+ description: Optional. The comment ID to use.
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Memo'
+ required: true
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Memo'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/memos/{memo}/reactions:
+ get:
+ tags:
+ - MemoService
+ description: ListMemoReactions lists reactions for a memo.
+ operationId: MemoService_ListMemoReactions
+ parameters:
+ - name: memo
+ in: path
+ description: The memo id.
+ required: true
+ schema:
+ type: string
+ - name: pageSize
+ in: query
+ description: Optional. The maximum number of reactions to return.
+ schema:
+ type: integer
+ format: int32
+ - name: pageToken
+ in: query
+ description: Optional. A page token for pagination.
+ schema:
+ type: string
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ListMemoReactionsResponse'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ post:
+ tags:
+ - MemoService
+ description: UpsertMemoReaction upserts a reaction for a memo.
+ operationId: MemoService_UpsertMemoReaction
+ parameters:
+ - name: memo
+ in: path
+ description: The memo id.
+ required: true
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/UpsertMemoReactionRequest'
+ required: true
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Reaction'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/memos/{memo}/reactions/{reaction}:
+ delete:
+ tags:
+ - MemoService
+ description: DeleteMemoReaction deletes a reaction for a memo.
+ operationId: MemoService_DeleteMemoReaction
+ parameters:
+ - name: memo
+ in: path
+ description: The memo id.
+ required: true
+ schema:
+ type: string
+ - name: reaction
+ in: path
+ description: The reaction id.
+ required: true
+ schema:
+ type: string
+ responses:
+ "200":
+ description: OK
+ content: {}
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/memos/{memo}/relations:
+ get:
+ tags:
+ - MemoService
+ description: ListMemoRelations lists relations for a memo.
+ operationId: MemoService_ListMemoRelations
+ parameters:
+ - name: memo
+ in: path
+ description: The memo id.
+ required: true
+ schema:
+ type: string
+ - name: pageSize
+ in: query
+ description: Optional. The maximum number of relations to return.
+ schema:
+ type: integer
+ format: int32
+ - name: pageToken
+ in: query
+ description: Optional. A page token for pagination.
+ schema:
+ type: string
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ListMemoRelationsResponse'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ patch:
+ tags:
+ - MemoService
+ description: SetMemoRelations sets relations for a memo.
+ operationId: MemoService_SetMemoRelations
+ parameters:
+ - name: memo
+ in: path
+ description: The memo id.
+ required: true
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/SetMemoRelationsRequest'
+ required: true
+ responses:
+ "200":
+ description: OK
+ content: {}
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/memos/{memo}/shares:
+ get:
+ tags:
+ - MemoService
+ description: ListMemoShares lists all share links for a memo. Requires authentication as the memo creator.
+ operationId: MemoService_ListMemoShares
+ parameters:
+ - name: memo
+ in: path
+ description: The memo id.
+ required: true
+ schema:
+ type: string
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ListMemoSharesResponse'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ post:
+ tags:
+ - MemoService
+ description: CreateMemoShare creates a share link for a memo. Requires authentication as the memo creator.
+ operationId: MemoService_CreateMemoShare
+ parameters:
+ - name: memo
+ in: path
+ description: The memo id.
+ required: true
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/MemoShare'
+ required: true
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/MemoShare'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/memos/{memo}/shares/{share}:
+ delete:
+ tags:
+ - MemoService
+ description: DeleteMemoShare revokes a share link. Requires authentication as the memo creator.
+ operationId: MemoService_DeleteMemoShare
+ parameters:
+ - name: memo
+ in: path
+ description: The memo id.
+ required: true
+ schema:
+ type: string
+ - name: share
+ in: path
+ description: The share id.
+ required: true
+ schema:
+ type: string
+ responses:
+ "200":
+ description: OK
+ content: {}
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/shares/{shareId}:
+ get:
+ tags:
+ - MemoService
+ description: |-
+ GetMemoByShare resolves a share token to its memo. No authentication required.
+ Returns NOT_FOUND if the token is invalid or expired.
+ operationId: MemoService_GetMemoByShare
+ parameters:
+ - name: shareId
+ in: path
+ description: Required. The share token extracted from the share URL (/s/{share_id}).
+ required: true
+ schema:
+ type: string
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Memo'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/users:
+ get:
+ tags:
+ - UserService
+ description: ListUsers returns a list of users.
+ operationId: UserService_ListUsers
+ parameters:
+ - name: pageSize
+ in: query
+ description: |-
+ Optional. The maximum number of users to return.
+ The service may return fewer than this value.
+ If unspecified, at most 50 users will be returned.
+ The maximum value is 1000; values above 1000 will be coerced to 1000.
+ schema:
+ type: integer
+ format: int32
+ - name: pageToken
+ in: query
+ description: |-
+ Optional. A page token, received from a previous `ListUsers` call.
+ Provide this to retrieve the subsequent page.
+ schema:
+ type: string
+ - name: filter
+ in: query
+ description: |-
+ Optional. Filter to apply to the list results.
+ Example: "username == 'steven'"
+ Supported operators: ==
+ Supported fields: username
+ schema:
+ type: string
+ - name: showDeleted
+ in: query
+ description: Optional. If true, show deleted users in the response.
+ schema:
+ type: boolean
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ListUsersResponse'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ post:
+ tags:
+ - UserService
+ description: CreateUser creates a new user.
+ operationId: UserService_CreateUser
+ parameters:
+ - name: userId
+ in: query
+ description: |-
+ Optional. The user ID to use for this user.
+ If empty, a unique ID will be generated.
+ Must match the pattern [a-z0-9-]+
+ schema:
+ type: string
+ - name: validateOnly
+ in: query
+ description: Optional. If set, validate the request but don't actually create the user.
+ schema:
+ type: boolean
+ - name: requestId
+ in: query
+ description: |-
+ Optional. An idempotency token that can be used to ensure that multiple
+ requests to create a user have the same result.
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/User'
+ required: true
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/User'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/users/{user}:
+ get:
+ tags:
+ - UserService
+ description: |-
+ GetUser gets a user by username.
+ Format: users/{username} (e.g., users/steven)
+ operationId: UserService_GetUser
+ parameters:
+ - name: user
+ in: path
+ description: The user id.
+ required: true
+ schema:
+ type: string
+ - name: readMask
+ in: query
+ description: |-
+ Optional. The fields to return in the response.
+ If not specified, all fields are returned.
+ schema:
+ type: string
+ format: field-mask
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/User'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ delete:
+ tags:
+ - UserService
+ description: DeleteUser deletes a user.
+ operationId: UserService_DeleteUser
+ parameters:
+ - name: user
+ in: path
+ description: The user id.
+ required: true
+ schema:
+ type: string
+ - name: force
+ in: query
+ description: Optional. If set to true, the user will be deleted even if they have associated data.
+ schema:
+ type: boolean
+ responses:
+ "200":
+ description: OK
+ content: {}
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ patch:
+ tags:
+ - UserService
+ description: UpdateUser updates a user.
+ operationId: UserService_UpdateUser
+ parameters:
+ - name: user
+ in: path
+ description: The user id.
+ required: true
+ schema:
+ type: string
+ - name: updateMask
+ in: query
+ description: Required. The list of fields to update.
+ schema:
+ type: string
+ format: field-mask
+ - name: allowMissing
+ in: query
+ description: Optional. If set to true, allows updating sensitive fields.
+ schema:
+ type: boolean
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/User'
+ required: true
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/User'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/users/{user}/notifications:
+ get:
+ tags:
+ - UserService
+ description: ListUserNotifications lists notifications for a user.
+ operationId: UserService_ListUserNotifications
+ parameters:
+ - name: user
+ in: path
+ description: The user id.
+ required: true
+ schema:
+ type: string
+ - name: pageSize
+ in: query
+ schema:
+ type: integer
+ format: int32
+ - name: pageToken
+ in: query
+ schema:
+ type: string
+ - name: filter
+ in: query
+ schema:
+ type: string
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ListUserNotificationsResponse'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/users/{user}/notifications/{notification}:
+ delete:
+ tags:
+ - UserService
+ description: DeleteUserNotification deletes a notification.
+ operationId: UserService_DeleteUserNotification
+ parameters:
+ - name: user
+ in: path
+ description: The user id.
+ required: true
+ schema:
+ type: string
+ - name: notification
+ in: path
+ description: The notification id.
+ required: true
+ schema:
+ type: string
+ responses:
+ "200":
+ description: OK
+ content: {}
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ patch:
+ tags:
+ - UserService
+ description: UpdateUserNotification updates a notification.
+ operationId: UserService_UpdateUserNotification
+ parameters:
+ - name: user
+ in: path
+ description: The user id.
+ required: true
+ schema:
+ type: string
+ - name: notification
+ in: path
+ description: The notification id.
+ required: true
+ schema:
+ type: string
+ - name: updateMask
+ in: query
+ schema:
+ type: string
+ format: field-mask
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/UserNotification'
+ required: true
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/UserNotification'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/users/{user}/personalAccessTokens:
+ get:
+ tags:
+ - UserService
+ description: |-
+ ListPersonalAccessTokens returns a list of Personal Access Tokens (PATs) for a user.
+ PATs are long-lived tokens for API/script access, distinct from short-lived JWT access tokens.
+ operationId: UserService_ListPersonalAccessTokens
+ parameters:
+ - name: user
+ in: path
+ description: The user id.
+ required: true
+ schema:
+ type: string
+ - name: pageSize
+ in: query
+ description: Optional. The maximum number of tokens to return.
+ schema:
+ type: integer
+ format: int32
+ - name: pageToken
+ in: query
+ description: Optional. A page token for pagination.
+ schema:
+ type: string
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ListPersonalAccessTokensResponse'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ post:
+ tags:
+ - UserService
+ description: |-
+ CreatePersonalAccessToken creates a new Personal Access Token for a user.
+ The token value is only returned once upon creation.
+ operationId: UserService_CreatePersonalAccessToken
+ parameters:
+ - name: user
+ in: path
+ description: The user id.
+ required: true
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/CreatePersonalAccessTokenRequest'
+ required: true
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/CreatePersonalAccessTokenResponse'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/users/{user}/personalAccessTokens/{personalAccessToken}:
+ delete:
+ tags:
+ - UserService
+ description: DeletePersonalAccessToken deletes a Personal Access Token.
+ operationId: UserService_DeletePersonalAccessToken
+ parameters:
+ - name: user
+ in: path
+ description: The user id.
+ required: true
+ schema:
+ type: string
+ - name: personalAccessToken
+ in: path
+ description: The personalAccessToken id.
+ required: true
+ schema:
+ type: string
+ responses:
+ "200":
+ description: OK
+ content: {}
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/users/{user}/settings:
+ get:
+ tags:
+ - UserService
+ description: ListUserSettings returns a list of user settings.
+ operationId: UserService_ListUserSettings
+ parameters:
+ - name: user
+ in: path
+ description: The user id.
+ required: true
+ schema:
+ type: string
+ - name: pageSize
+ in: query
+ description: |-
+ Optional. The maximum number of settings to return.
+ The service may return fewer than this value.
+ If unspecified, at most 50 settings will be returned.
+ The maximum value is 1000; values above 1000 will be coerced to 1000.
+ schema:
+ type: integer
+ format: int32
+ - name: pageToken
+ in: query
+ description: |-
+ Optional. A page token, received from a previous `ListUserSettings` call.
+ Provide this to retrieve the subsequent page.
+ schema:
+ type: string
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ListUserSettingsResponse'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/users/{user}/settings/{setting}:
+ get:
+ tags:
+ - UserService
+ description: GetUserSetting returns the user setting.
+ operationId: UserService_GetUserSetting
+ parameters:
+ - name: user
+ in: path
+ description: The user id.
+ required: true
+ schema:
+ type: string
+ - name: setting
+ in: path
+ description: The setting id.
+ required: true
+ schema:
+ type: string
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/UserSetting'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ patch:
+ tags:
+ - UserService
+ description: UpdateUserSetting updates the user setting.
+ operationId: UserService_UpdateUserSetting
+ parameters:
+ - name: user
+ in: path
+ description: The user id.
+ required: true
+ schema:
+ type: string
+ - name: setting
+ in: path
+ description: The setting id.
+ required: true
+ schema:
+ type: string
+ - name: updateMask
+ in: query
+ description: Required. The list of fields to update.
+ schema:
+ type: string
+ format: field-mask
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/UserSetting'
+ required: true
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/UserSetting'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/users/{user}/shortcuts:
+ get:
+ tags:
+ - ShortcutService
+ description: ListShortcuts returns a list of shortcuts for a user.
+ operationId: ShortcutService_ListShortcuts
+ parameters:
+ - name: user
+ in: path
+ description: The user id.
+ required: true
+ schema:
+ type: string
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ListShortcutsResponse'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ post:
+ tags:
+ - ShortcutService
+ description: CreateShortcut creates a new shortcut for a user.
+ operationId: ShortcutService_CreateShortcut
+ parameters:
+ - name: user
+ in: path
+ description: The user id.
+ required: true
+ schema:
+ type: string
+ - name: validateOnly
+ in: query
+ description: Optional. If set, validate the request, but do not actually create the shortcut.
+ schema:
+ type: boolean
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Shortcut'
+ required: true
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Shortcut'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/users/{user}/shortcuts/{shortcut}:
+ get:
+ tags:
+ - ShortcutService
+ description: GetShortcut gets a shortcut by name.
+ operationId: ShortcutService_GetShortcut
+ parameters:
+ - name: user
+ in: path
+ description: The user id.
+ required: true
+ schema:
+ type: string
+ - name: shortcut
+ in: path
+ description: The shortcut id.
+ required: true
+ schema:
+ type: string
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Shortcut'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ delete:
+ tags:
+ - ShortcutService
+ description: DeleteShortcut deletes a shortcut for a user.
+ operationId: ShortcutService_DeleteShortcut
+ parameters:
+ - name: user
+ in: path
+ description: The user id.
+ required: true
+ schema:
+ type: string
+ - name: shortcut
+ in: path
+ description: The shortcut id.
+ required: true
+ schema:
+ type: string
+ responses:
+ "200":
+ description: OK
+ content: {}
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ patch:
+ tags:
+ - ShortcutService
+ description: UpdateShortcut updates a shortcut for a user.
+ operationId: ShortcutService_UpdateShortcut
+ parameters:
+ - name: user
+ in: path
+ description: The user id.
+ required: true
+ schema:
+ type: string
+ - name: shortcut
+ in: path
+ description: The shortcut id.
+ required: true
+ schema:
+ type: string
+ - name: updateMask
+ in: query
+ description: Optional. The list of fields to update.
+ schema:
+ type: string
+ format: field-mask
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Shortcut'
+ required: true
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Shortcut'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/users/{user}/webhooks:
+ get:
+ tags:
+ - UserService
+ description: ListUserWebhooks returns a list of webhooks for a user.
+ operationId: UserService_ListUserWebhooks
+ parameters:
+ - name: user
+ in: path
+ description: The user id.
+ required: true
+ schema:
+ type: string
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ListUserWebhooksResponse'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ post:
+ tags:
+ - UserService
+ description: CreateUserWebhook creates a new webhook for a user.
+ operationId: UserService_CreateUserWebhook
+ parameters:
+ - name: user
+ in: path
+ description: The user id.
+ required: true
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/UserWebhook'
+ required: true
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/UserWebhook'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/users/{user}/webhooks/{webhook}:
+ delete:
+ tags:
+ - UserService
+ description: DeleteUserWebhook deletes a webhook for a user.
+ operationId: UserService_DeleteUserWebhook
+ parameters:
+ - name: user
+ in: path
+ description: The user id.
+ required: true
+ schema:
+ type: string
+ - name: webhook
+ in: path
+ description: The webhook id.
+ required: true
+ schema:
+ type: string
+ responses:
+ "200":
+ description: OK
+ content: {}
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ patch:
+ tags:
+ - UserService
+ description: UpdateUserWebhook updates an existing webhook for a user.
+ operationId: UserService_UpdateUserWebhook
+ parameters:
+ - name: user
+ in: path
+ description: The user id.
+ required: true
+ schema:
+ type: string
+ - name: webhook
+ in: path
+ description: The webhook id.
+ required: true
+ schema:
+ type: string
+ - name: updateMask
+ in: query
+ description: The list of fields to update.
+ schema:
+ type: string
+ format: field-mask
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/UserWebhook'
+ required: true
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/UserWebhook'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/users/{user}:getStats:
+ get:
+ tags:
+ - UserService
+ description: GetUserStats returns statistics for a specific user.
+ operationId: UserService_GetUserStats
+ parameters:
+ - name: user
+ in: path
+ description: The user id.
+ required: true
+ schema:
+ type: string
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/UserStats'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/users:batchGet:
+ post:
+ tags:
+ - UserService
+ description: BatchGetUsers returns active users by usernames.
+ operationId: UserService_BatchGetUsers
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BatchGetUsersRequest'
+ required: true
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/BatchGetUsersResponse'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+ /api/v1/users:stats:
+ get:
+ tags:
+ - UserService
+ description: ListAllUserStats returns statistics for all users.
+ operationId: UserService_ListAllUserStats
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ListAllUserStatsResponse'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
+components:
+ schemas:
+ Attachment:
+ required:
+ - filename
+ - type
+ type: object
+ properties:
+ name:
+ type: string
+ description: |-
+ The name of the attachment.
+ Format: attachments/{attachment}
+ createTime:
+ readOnly: true
+ type: string
+ description: Output only. The creation timestamp.
+ format: date-time
+ filename:
+ type: string
+ description: The filename of the attachment.
+ content:
+ writeOnly: true
+ type: string
+ description: Input only. The content of the attachment.
+ format: bytes
+ externalLink:
+ type: string
+ description: Optional. The external link of the attachment.
+ type:
+ type: string
+ description: The MIME type of the attachment.
+ size:
+ readOnly: true
+ type: string
+ description: Output only. The size of the attachment in bytes.
+ memo:
+ type: string
+ description: |-
+ Optional. The related memo. Refer to `Memo.name`.
+ Format: memos/{memo}
+ motionMedia:
+ allOf:
+ - $ref: '#/components/schemas/MotionMedia'
+ description: Optional. Motion media metadata.
+ BatchDeleteAttachmentsRequest:
+ required:
+ - names
+ type: object
+ properties:
+ names:
+ type: array
+ items:
+ type: string
+ BatchGetUsersRequest:
+ type: object
+ properties:
+ usernames:
+ type: array
+ items:
+ type: string
+ BatchGetUsersResponse:
+ type: object
+ properties:
+ users:
+ type: array
+ items:
+ $ref: '#/components/schemas/User'
+ Color:
+ type: object
+ properties:
+ red:
+ type: number
+ description: The amount of red in the color as a value in the interval [0, 1].
+ format: float
+ green:
+ type: number
+ description: The amount of green in the color as a value in the interval [0, 1].
+ format: float
+ blue:
+ type: number
+ description: The amount of blue in the color as a value in the interval [0, 1].
+ format: float
+ alpha:
+ type: number
+ description: |-
+ The fraction of this color that should be applied to the pixel. That is,
+ the final pixel color is defined by the equation:
+
+ `pixel color = alpha * (this color) + (1.0 - alpha) * (background color)`
+
+ This means that a value of 1.0 corresponds to a solid color, whereas
+ a value of 0.0 corresponds to a completely transparent color. This
+ uses a wrapper message rather than a simple float scalar so that it is
+ possible to distinguish between a default value and the value being unset.
+ If omitted, this color object is rendered as a solid color
+ (as if the alpha value had been explicitly given a value of 1.0).
+ format: float
+ description: |-
+ Represents a color in the RGBA color space. This representation is designed
+ for simplicity of conversion to/from color representations in various
+ languages over compactness. For example, the fields of this representation
+ can be trivially provided to the constructor of `java.awt.Color` in Java; it
+ can also be trivially provided to UIColor's `+colorWithRed:green:blue:alpha`
+ method in iOS; and, with just a little work, it can be easily formatted into
+ a CSS `rgba()` string in JavaScript.
+
+ This reference page doesn't carry information about the absolute color
+ space
+ that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB,
+ DCI-P3, BT.2020, etc.). By default, applications should assume the sRGB color
+ space.
+
+ When color equality needs to be decided, implementations, unless
+ documented otherwise, treat two colors as equal if all their red,
+ green, blue, and alpha values each differ by at most 1e-5.
+
+ Example (Java):
+
+ import com.google.type.Color;
+
+ // ...
+ public static java.awt.Color fromProto(Color protocolor) {
+ float alpha = protocolor.hasAlpha()
+ ? protocolor.getAlpha().getValue()
+ : 1.0;
+
+ return new java.awt.Color(
+ protocolor.getRed(),
+ protocolor.getGreen(),
+ protocolor.getBlue(),
+ alpha);
+ }
+
+ public static Color toProto(java.awt.Color color) {
+ float red = (float) color.getRed();
+ float green = (float) color.getGreen();
+ float blue = (float) color.getBlue();
+ float denominator = 255.0;
+ Color.Builder resultBuilder =
+ Color
+ .newBuilder()
+ .setRed(red / denominator)
+ .setGreen(green / denominator)
+ .setBlue(blue / denominator);
+ int alpha = color.getAlpha();
+ if (alpha != 255) {
+ result.setAlpha(
+ FloatValue
+ .newBuilder()
+ .setValue(((float) alpha) / denominator)
+ .build());
+ }
+ return resultBuilder.build();
+ }
+ // ...
+
+ Example (iOS / Obj-C):
+
+ // ...
+ static UIColor* fromProto(Color* protocolor) {
+ float red = [protocolor red];
+ float green = [protocolor green];
+ float blue = [protocolor blue];
+ FloatValue* alpha_wrapper = [protocolor alpha];
+ float alpha = 1.0;
+ if (alpha_wrapper != nil) {
+ alpha = [alpha_wrapper value];
+ }
+ return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ }
+
+ static Color* toProto(UIColor* color) {
+ CGFloat red, green, blue, alpha;
+ if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ return nil;
+ }
+ Color* result = [[Color alloc] init];
+ [result setRed:red];
+ [result setGreen:green];
+ [result setBlue:blue];
+ if (alpha <= 0.9999) {
+ [result setAlpha:floatWrapperWithValue(alpha)];
+ }
+ [result autorelease];
+ return result;
+ }
+ // ...
+
+ Example (JavaScript):
+
+ // ...
+
+ var protoToCssColor = function(rgb_color) {
+ var redFrac = rgb_color.red || 0.0;
+ var greenFrac = rgb_color.green || 0.0;
+ var blueFrac = rgb_color.blue || 0.0;
+ var red = Math.floor(redFrac * 255);
+ var green = Math.floor(greenFrac * 255);
+ var blue = Math.floor(blueFrac * 255);
+
+ if (!('alpha' in rgb_color)) {
+ return rgbToCssColor(red, green, blue);
+ }
+
+ var alphaFrac = rgb_color.alpha.value || 0.0;
+ var rgbParams = [red, green, blue].join(',');
+ return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ };
+
+ var rgbToCssColor = function(red, green, blue) {
+ var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ var hexString = rgbNumber.toString(16);
+ var missingZeros = 6 - hexString.length;
+ var resultBuilder = ['#'];
+ for (var i = 0; i < missingZeros; i++) {
+ resultBuilder.push('0');
+ }
+ resultBuilder.push(hexString);
+ return resultBuilder.join('');
+ };
+
+ // ...
+ CreatePersonalAccessTokenRequest:
+ required:
+ - parent
+ type: object
+ properties:
+ parent:
+ type: string
+ description: |-
+ Required. The parent resource where this token will be created.
+ Format: users/{user}
+ description:
+ type: string
+ description: Optional. Description of the personal access token.
+ expiresInDays:
+ type: integer
+ description: Optional. Expiration duration in days (0 = never expires).
+ format: int32
+ CreatePersonalAccessTokenResponse:
+ type: object
+ properties:
+ personalAccessToken:
+ allOf:
+ - $ref: '#/components/schemas/PersonalAccessToken'
+ description: The personal access token metadata.
+ token:
+ type: string
+ description: |-
+ The actual token value - only returned on creation.
+ This is the only time the token value will be visible.
+ FieldMapping:
+ type: object
+ properties:
+ identifier:
+ type: string
+ displayName:
+ type: string
+ email:
+ type: string
+ avatarUrl:
+ type: string
+ GeneralSetting_CustomProfile:
+ type: object
+ properties:
+ title:
+ type: string
+ description:
+ type: string
+ logoUrl:
+ type: string
+ description: Custom profile configuration for instance branding.
+ GetCurrentUserResponse:
+ type: object
+ properties:
+ user:
+ allOf:
+ - $ref: '#/components/schemas/User'
+ description: The authenticated user's information.
+ GoogleProtobufAny:
+ type: object
+ properties:
+ '@type':
+ type: string
+ description: The type of the serialized message.
+ additionalProperties: true
+ description: Contains an arbitrary serialized message along with a @type that describes the type of the serialized message.
+ IdentityProvider:
+ required:
+ - type
+ - title
+ - config
+ type: object
+ properties:
+ name:
+ type: string
+ description: |-
+ The resource name of the identity provider.
+ Format: identity-providers/{idp}
+ type:
+ enum:
+ - TYPE_UNSPECIFIED
+ - OAUTH2
+ type: string
+ description: Required. The type of the identity provider.
+ format: enum
+ title:
+ type: string
+ description: Required. The display title of the identity provider.
+ identifierFilter:
+ type: string
+ description: Optional. Filter applied to user identifiers.
+ config:
+ allOf:
+ - $ref: '#/components/schemas/IdentityProviderConfig'
+ description: Required. Configuration for the identity provider.
+ IdentityProviderConfig:
+ type: object
+ properties:
+ oauth2Config:
+ $ref: '#/components/schemas/OAuth2Config'
+ InstanceProfile:
+ type: object
+ properties:
+ version:
+ type: string
+ description: Version is the current version of instance.
+ demo:
+ type: boolean
+ description: Demo indicates if the instance is in demo mode.
+ instanceUrl:
+ type: string
+ description: Instance URL is the URL of the instance.
+ admin:
+ allOf:
+ - $ref: '#/components/schemas/User'
+ description: |-
+ The first administrator who set up this instance.
+ When null, instance requires initial setup (creating the first admin account).
+ description: Instance profile message containing basic instance information.
+ InstanceSetting:
+ type: object
+ properties:
+ name:
+ type: string
+ description: |-
+ The name of the instance setting.
+ Format: instance/settings/{setting}
+ generalSetting:
+ $ref: '#/components/schemas/InstanceSetting_GeneralSetting'
+ storageSetting:
+ $ref: '#/components/schemas/InstanceSetting_StorageSetting'
+ memoRelatedSetting:
+ $ref: '#/components/schemas/InstanceSetting_MemoRelatedSetting'
+ tagsSetting:
+ $ref: '#/components/schemas/InstanceSetting_TagsSetting'
+ notificationSetting:
+ $ref: '#/components/schemas/InstanceSetting_NotificationSetting'
+ aiSetting:
+ $ref: '#/components/schemas/InstanceSetting_AISetting'
+ description: An instance setting resource.
+ InstanceSetting_AIProviderConfig:
+ type: object
+ properties:
+ id:
+ type: string
+ title:
+ type: string
+ type:
+ enum:
+ - AI_PROVIDER_TYPE_UNSPECIFIED
+ - OPENAI
+ - GEMINI
+ type: string
+ format: enum
+ endpoint:
+ type: string
+ apiKey:
+ writeOnly: true
+ type: string
+ description: api_key is write-only and is never returned by GetInstanceSetting.
+ apiKeySet:
+ readOnly: true
+ type: boolean
+ description: api_key_set indicates whether an API key is stored for this provider.
+ apiKeyHint:
+ readOnly: true
+ type: string
+ description: api_key_hint is a masked hint for the stored API key.
+ description: AIProviderConfig represents one callable AI provider connection.
+ InstanceSetting_AISetting:
+ type: object
+ properties:
+ providers:
+ type: array
+ items:
+ $ref: '#/components/schemas/InstanceSetting_AIProviderConfig'
+ description: providers is the list of AI provider configurations available instance-wide.
+ description: AI provider configuration settings.
+ InstanceSetting_GeneralSetting:
+ type: object
+ properties:
+ disallowUserRegistration:
+ type: boolean
+ description: disallow_user_registration disallows user registration.
+ disallowPasswordAuth:
+ type: boolean
+ description: disallow_password_auth disallows password authentication.
+ additionalScript:
+ type: string
+ description: additional_script is the additional script.
+ additionalStyle:
+ type: string
+ description: additional_style is the additional style.
+ customProfile:
+ allOf:
+ - $ref: '#/components/schemas/GeneralSetting_CustomProfile'
+ description: custom_profile is the custom profile.
+ weekStartDayOffset:
+ type: integer
+ description: |-
+ week_start_day_offset is the week start day offset from Sunday.
+ 0: Sunday, 1: Monday, 2: Tuesday, 3: Wednesday, 4: Thursday, 5: Friday, 6: Saturday
+ Default is Sunday.
+ format: int32
+ disallowChangeUsername:
+ type: boolean
+ description: disallow_change_username disallows changing username.
+ disallowChangeNickname:
+ type: boolean
+ description: disallow_change_nickname disallows changing nickname.
+ description: General instance settings configuration.
+ InstanceSetting_MemoRelatedSetting:
+ type: object
+ properties:
+ displayWithUpdateTime:
+ type: boolean
+ description: display_with_update_time orders and displays memo with update time.
+ contentLengthLimit:
+ type: integer
+ description: content_length_limit is the limit of content length. Unit is byte.
+ format: int32
+ enableDoubleClickEdit:
+ type: boolean
+ description: enable_double_click_edit enables editing on double click.
+ reactions:
+ type: array
+ items:
+ type: string
+ description: reactions is the list of reactions.
+ description: Memo-related instance settings and policies.
+ InstanceSetting_NotificationSetting:
+ type: object
+ properties:
+ email:
+ $ref: '#/components/schemas/NotificationSetting_EmailSetting'
+ description: Notification transport configuration.
+ InstanceSetting_StorageSetting:
+ type: object
+ properties:
+ storageType:
+ enum:
+ - STORAGE_TYPE_UNSPECIFIED
+ - DATABASE
+ - LOCAL
+ - S3
+ type: string
+ description: storage_type is the storage type.
+ format: enum
+ filepathTemplate:
+ type: string
+ description: |-
+ The template of file path.
+ e.g. assets/{timestamp}_{filename}
+ uploadSizeLimitMb:
+ type: string
+ description: The max upload size in megabytes.
+ s3Config:
+ allOf:
+ - $ref: '#/components/schemas/StorageSetting_S3Config'
+ description: The S3 config.
+ description: Storage configuration settings for instance attachments.
+ InstanceSetting_TagMetadata:
+ type: object
+ properties:
+ backgroundColor:
+ allOf:
+ - $ref: '#/components/schemas/Color'
+ description: |-
+ Optional background color for the tag label.
+ When unset, the default tag color is used.
+ blurContent:
+ type: boolean
+ description: Whether memos with this tag should have their content blurred.
+ description: Metadata for a tag.
+ InstanceSetting_TagsSetting:
+ type: object
+ properties:
+ tags:
+ type: object
+ additionalProperties:
+ $ref: '#/components/schemas/InstanceSetting_TagMetadata'
+ description: |-
+ Map of tag name pattern to tag metadata.
+ Each key is treated as an anchored regular expression (^pattern$),
+ so a single entry like "project/.*" matches all tags under that prefix.
+ Exact tag names are also valid (they are trivially valid regex patterns).
+ description: Tag metadata configuration.
+ ListAllUserStatsResponse:
+ type: object
+ properties:
+ stats:
+ type: array
+ items:
+ $ref: '#/components/schemas/UserStats'
+ description: The list of user statistics.
+ ListAttachmentsResponse:
+ type: object
+ properties:
+ attachments:
+ type: array
+ items:
+ $ref: '#/components/schemas/Attachment'
+ description: The list of attachments.
+ nextPageToken:
+ type: string
+ description: |-
+ A token that can be sent as `page_token` to retrieve the next page.
+ If this field is omitted, there are no subsequent pages.
+ totalSize:
+ type: integer
+ description: The total count of attachments (may be approximate).
+ format: int32
+ ListIdentityProvidersResponse:
+ type: object
+ properties:
+ identityProviders:
+ type: array
+ items:
+ $ref: '#/components/schemas/IdentityProvider'
+ description: The list of identity providers.
+ ListMemoAttachmentsResponse:
+ type: object
+ properties:
+ attachments:
+ type: array
+ items:
+ $ref: '#/components/schemas/Attachment'
+ description: The list of attachments.
+ nextPageToken:
+ type: string
+ description: A token for the next page of results.
+ ListMemoCommentsResponse:
+ type: object
+ properties:
+ memos:
+ type: array
+ items:
+ $ref: '#/components/schemas/Memo'
+ description: The list of comment memos.
+ nextPageToken:
+ type: string
+ description: A token for the next page of results.
+ totalSize:
+ type: integer
+ description: The total count of comments.
+ format: int32
+ ListMemoReactionsResponse:
+ type: object
+ properties:
+ reactions:
+ type: array
+ items:
+ $ref: '#/components/schemas/Reaction'
+ description: The list of reactions.
+ nextPageToken:
+ type: string
+ description: A token for the next page of results.
+ totalSize:
+ type: integer
+ description: The total count of reactions.
+ format: int32
+ ListMemoRelationsResponse:
+ type: object
+ properties:
+ relations:
+ type: array
+ items:
+ $ref: '#/components/schemas/MemoRelation'
+ description: The list of relations.
+ nextPageToken:
+ type: string
+ description: A token for the next page of results.
+ ListMemoSharesResponse:
+ type: object
+ properties:
+ memoShares:
+ type: array
+ items:
+ $ref: '#/components/schemas/MemoShare'
+ description: The list of share links.
+ ListMemosResponse:
+ type: object
+ properties:
+ memos:
+ type: array
+ items:
+ $ref: '#/components/schemas/Memo'
+ description: The list of memos.
+ nextPageToken:
+ type: string
+ description: |-
+ A token that can be sent as `page_token` to retrieve the next page.
+ If this field is omitted, there are no subsequent pages.
+ ListPersonalAccessTokensResponse:
+ type: object
+ properties:
+ personalAccessTokens:
+ type: array
+ items:
+ $ref: '#/components/schemas/PersonalAccessToken'
+ description: The list of personal access tokens.
+ nextPageToken:
+ type: string
+ description: A token for the next page of results.
+ totalSize:
+ type: integer
+ description: The total count of personal access tokens.
+ format: int32
+ ListShortcutsResponse:
+ type: object
+ properties:
+ shortcuts:
+ type: array
+ items:
+ $ref: '#/components/schemas/Shortcut'
+ description: The list of shortcuts.
+ ListUserNotificationsResponse:
+ type: object
+ properties:
+ notifications:
+ type: array
+ items:
+ $ref: '#/components/schemas/UserNotification'
+ nextPageToken:
+ type: string
+ ListUserSettingsResponse:
+ type: object
+ properties:
+ settings:
+ type: array
+ items:
+ $ref: '#/components/schemas/UserSetting'
+ description: The list of user settings.
+ nextPageToken:
+ type: string
+ description: |-
+ A token that can be sent as `page_token` to retrieve the next page.
+ If this field is omitted, there are no subsequent pages.
+ totalSize:
+ type: integer
+ description: The total count of settings (may be approximate).
+ format: int32
+ description: Response message for ListUserSettings method.
+ ListUserWebhooksResponse:
+ type: object
+ properties:
+ webhooks:
+ type: array
+ items:
+ $ref: '#/components/schemas/UserWebhook'
+ description: The list of webhooks.
+ ListUsersResponse:
+ type: object
+ properties:
+ users:
+ type: array
+ items:
+ $ref: '#/components/schemas/User'
+ description: The list of users.
+ nextPageToken:
+ type: string
+ description: |-
+ A token that can be sent as `page_token` to retrieve the next page.
+ If this field is omitted, there are no subsequent pages.
+ totalSize:
+ type: integer
+ description: The total count of users (may be approximate).
+ format: int32
+ Location:
+ type: object
+ properties:
+ placeholder:
+ type: string
+ description: A placeholder text for the location.
+ latitude:
+ type: number
+ description: The latitude of the location.
+ format: double
+ longitude:
+ type: number
+ description: The longitude of the location.
+ format: double
+ Memo:
+ required:
+ - state
+ - content
+ - visibility
+ type: object
+ properties:
+ name:
+ type: string
+ description: |-
+ The resource name of the memo.
+ Format: memos/{memo}, memo is the user defined id or uuid.
+ state:
+ enum:
+ - STATE_UNSPECIFIED
+ - NORMAL
+ - ARCHIVED
+ type: string
+ description: The state of the memo.
+ format: enum
+ creator:
+ readOnly: true
+ type: string
+ description: |-
+ The name of the creator.
+ Format: users/{user}
+ createTime:
+ type: string
+ description: |-
+ The creation timestamp.
+ If not set on creation, the server will set it to the current time.
+ format: date-time
+ updateTime:
+ type: string
+ description: |-
+ The last update timestamp.
+ If not set on creation, the server will set it to the current time.
+ format: date-time
+ displayTime:
+ type: string
+ description: The display timestamp of the memo.
+ format: date-time
+ content:
+ type: string
+ description: Required. The content of the memo in Markdown format.
+ visibility:
+ enum:
+ - VISIBILITY_UNSPECIFIED
+ - PRIVATE
+ - PROTECTED
+ - PUBLIC
+ type: string
+ description: The visibility of the memo.
+ format: enum
+ tags:
+ readOnly: true
+ type: array
+ items:
+ type: string
+ description: Output only. The tags extracted from the content.
+ pinned:
+ type: boolean
+ description: Whether the memo is pinned.
+ attachments:
+ type: array
+ items:
+ $ref: '#/components/schemas/Attachment'
+ description: Optional. The attachments of the memo.
+ relations:
+ type: array
+ items:
+ $ref: '#/components/schemas/MemoRelation'
+ description: Optional. The relations of the memo.
+ reactions:
+ readOnly: true
+ type: array
+ items:
+ $ref: '#/components/schemas/Reaction'
+ description: Output only. The reactions to the memo.
+ property:
+ readOnly: true
+ allOf:
+ - $ref: '#/components/schemas/Memo_Property'
+ description: Output only. The computed properties of the memo.
+ parent:
+ readOnly: true
+ type: string
+ description: |-
+ Output only. The name of the parent memo.
+ Format: memos/{memo}
+ snippet:
+ readOnly: true
+ type: string
+ description: Output only. The snippet of the memo content. Plain text only.
+ location:
+ allOf:
+ - $ref: '#/components/schemas/Location'
+ description: Optional. The location of the memo.
+ MemoRelation:
+ required:
+ - memo
+ - relatedMemo
+ - type
+ type: object
+ properties:
+ memo:
+ allOf:
+ - $ref: '#/components/schemas/MemoRelation_Memo'
+ description: The memo in the relation.
+ relatedMemo:
+ allOf:
+ - $ref: '#/components/schemas/MemoRelation_Memo'
+ description: The related memo.
+ type:
+ enum:
+ - TYPE_UNSPECIFIED
+ - REFERENCE
+ - COMMENT
+ type: string
+ format: enum
+ MemoRelation_Memo:
+ required:
+ - name
+ type: object
+ properties:
+ name:
+ type: string
+ description: |-
+ The resource name of the memo.
+ Format: memos/{memo}
+ snippet:
+ readOnly: true
+ type: string
+ description: Output only. The snippet of the memo content. Plain text only.
+ description: Memo reference in relations.
+ MemoShare:
+ type: object
+ properties:
+ name:
+ type: string
+ description: |-
+ The resource name of the share. Format: memos/{memo}/shares/{share}
+ The {share} segment is the opaque token used in the share URL.
+ createTime:
+ readOnly: true
+ type: string
+ description: Output only. When this share link was created.
+ format: date-time
+ expireTime:
+ type: string
+ description: |-
+ Optional. When set, the share link stops working after this time.
+ If unset, the link never expires.
+ format: date-time
+ description: MemoShare is an access grant that permits read-only access to a memo via an opaque bearer token.
+ Memo_Property:
+ type: object
+ properties:
+ hasLink:
+ type: boolean
+ hasTaskList:
+ type: boolean
+ hasCode:
+ type: boolean
+ hasIncompleteTasks:
+ type: boolean
+ title:
+ type: string
+ description: The title extracted from the first H1 heading, if present.
+ description: Computed properties of a memo.
+ MotionMedia:
+ type: object
+ properties:
+ family:
+ enum:
+ - MOTION_MEDIA_FAMILY_UNSPECIFIED
+ - APPLE_LIVE_PHOTO
+ - ANDROID_MOTION_PHOTO
+ type: string
+ format: enum
+ role:
+ enum:
+ - MOTION_MEDIA_ROLE_UNSPECIFIED
+ - STILL
+ - VIDEO
+ - CONTAINER
+ type: string
+ format: enum
+ groupId:
+ type: string
+ presentationTimestampUs:
+ type: string
+ hasEmbeddedVideo:
+ type: boolean
+ NotificationSetting_EmailSetting:
+ type: object
+ properties:
+ enabled:
+ type: boolean
+ smtpHost:
+ type: string
+ smtpPort:
+ type: integer
+ format: int32
+ smtpUsername:
+ type: string
+ smtpPassword:
+ type: string
+ fromEmail:
+ type: string
+ fromName:
+ type: string
+ replyTo:
+ type: string
+ useTls:
+ type: boolean
+ useSsl:
+ type: boolean
+ description: Email delivery configuration for notifications.
+ OAuth2Config:
+ type: object
+ properties:
+ clientId:
+ type: string
+ clientSecret:
+ type: string
+ authUrl:
+ type: string
+ tokenUrl:
+ type: string
+ userInfoUrl:
+ type: string
+ scopes:
+ type: array
+ items:
+ type: string
+ fieldMapping:
+ $ref: '#/components/schemas/FieldMapping'
+ PersonalAccessToken:
+ type: object
+ properties:
+ name:
+ type: string
+ description: |-
+ The resource name of the personal access token.
+ Format: users/{user}/personalAccessTokens/{personal_access_token}
+ description:
+ type: string
+ description: The description of the token.
+ createdAt:
+ readOnly: true
+ type: string
+ description: Output only. The creation timestamp.
+ format: date-time
+ expiresAt:
+ type: string
+ description: Optional. The expiration timestamp.
+ format: date-time
+ lastUsedAt:
+ readOnly: true
+ type: string
+ description: Output only. The last used timestamp.
+ format: date-time
+ description: |-
+ PersonalAccessToken represents a long-lived token for API/script access.
+ PATs are distinct from short-lived JWT access tokens used for session authentication.
+ Reaction:
+ required:
+ - contentId
+ - reactionType
+ type: object
+ properties:
+ name:
+ readOnly: true
+ type: string
+ description: |-
+ The resource name of the reaction.
+ Format: memos/{memo}/reactions/{reaction}
+ creator:
+ readOnly: true
+ type: string
+ description: |-
+ The resource name of the creator.
+ Format: users/{user}
+ contentId:
+ type: string
+ description: |-
+ The resource name of the content.
+ For memo reactions, this should be the memo's resource name.
+ Format: memos/{memo}
+ reactionType:
+ type: string
+ description: "Required. The type of reaction (e.g., \"\U0001F44D\", \"❤️\", \"\U0001F604\")."
+ createTime:
+ readOnly: true
+ type: string
+ description: Output only. The creation timestamp.
+ format: date-time
+ RefreshTokenRequest:
+ type: object
+ properties: {}
+ RefreshTokenResponse:
+ type: object
+ properties:
+ accessToken:
+ type: string
+ description: The new short-lived access token.
+ expiresAt:
+ type: string
+ description: When the access token expires.
+ format: date-time
+ SetMemoAttachmentsRequest:
+ required:
+ - name
+ - attachments
+ type: object
+ properties:
+ name:
+ type: string
+ description: |-
+ Required. The resource name of the memo.
+ Format: memos/{memo}
+ attachments:
+ type: array
+ items:
+ $ref: '#/components/schemas/Attachment'
+ description: Required. The attachments to set for the memo.
+ SetMemoRelationsRequest:
+ required:
+ - name
+ - relations
+ type: object
+ properties:
+ name:
+ type: string
+ description: |-
+ Required. The resource name of the memo.
+ Format: memos/{memo}
+ relations:
+ type: array
+ items:
+ $ref: '#/components/schemas/MemoRelation'
+ description: Required. The relations to set for the memo.
+ Shortcut:
+ required:
+ - title
+ type: object
+ properties:
+ name:
+ type: string
+ description: |-
+ The resource name of the shortcut.
+ Format: users/{username}/shortcuts/{shortcut}
+ title:
+ type: string
+ description: The title of the shortcut.
+ filter:
+ type: string
+ description: The filter expression for the shortcut.
+ SignInRequest:
+ type: object
+ properties:
+ passwordCredentials:
+ allOf:
+ - $ref: '#/components/schemas/SignInRequest_PasswordCredentials'
+ description: Username and password authentication.
+ ssoCredentials:
+ allOf:
+ - $ref: '#/components/schemas/SignInRequest_SSOCredentials'
+ description: SSO provider authentication.
+ SignInRequest_PasswordCredentials:
+ required:
+ - username
+ - password
+ type: object
+ properties:
+ username:
+ type: string
+ description: The username to sign in with.
+ password:
+ type: string
+ description: The password to sign in with.
+ description: Nested message for password-based authentication credentials.
+ SignInRequest_SSOCredentials:
+ required:
+ - idpName
+ - code
+ - redirectUri
+ type: object
+ properties:
+ idpName:
+ type: string
+ description: |-
+ The resource name of the SSO provider.
+ Format: identity-providers/{uid}
+ code:
+ type: string
+ description: The authorization code from the SSO provider.
+ redirectUri:
+ type: string
+ description: The redirect URI used in the SSO flow.
+ codeVerifier:
+ type: string
+ description: |-
+ The PKCE code verifier for enhanced security (RFC 7636).
+ Optional - enables PKCE flow protection against authorization code interception.
+ description: Nested message for SSO authentication credentials.
+ SignInResponse:
+ type: object
+ properties:
+ user:
+ allOf:
+ - $ref: '#/components/schemas/User'
+ description: The authenticated user's information.
+ accessToken:
+ type: string
+ description: |-
+ The short-lived access token for API requests.
+ Store in memory only, not in localStorage.
+ accessTokenExpiresAt:
+ type: string
+ description: |-
+ When the access token expires.
+ Client should call RefreshToken before this time.
+ format: date-time
+ Status:
+ type: object
+ properties:
+ code:
+ type: integer
+ description: The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].
+ format: int32
+ message:
+ type: string
+ description: A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.
+ details:
+ type: array
+ items:
+ $ref: '#/components/schemas/GoogleProtobufAny'
+ description: A list of messages that carry the error details. There is a common set of message types for APIs to use.
+ description: 'The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).'
+ StorageSetting_S3Config:
+ type: object
+ properties:
+ accessKeyId:
+ type: string
+ accessKeySecret:
+ type: string
+ endpoint:
+ type: string
+ region:
+ type: string
+ bucket:
+ type: string
+ usePathStyle:
+ type: boolean
+ description: |-
+ S3 configuration for cloud storage backend.
+ Reference: https://developers.cloudflare.com/r2/examples/aws/aws-sdk-go/
+ TranscribeRequest:
+ required:
+ - providerId
+ - config
+ - audio
+ type: object
+ properties:
+ providerId:
+ type: string
+ description: Required. The instance AI provider ID to use.
+ config:
+ allOf:
+ - $ref: '#/components/schemas/TranscriptionConfig'
+ description: Required. Transcription options.
+ audio:
+ allOf:
+ - $ref: '#/components/schemas/TranscriptionAudio'
+ description: Required. Audio input.
+ TranscribeResponse:
+ type: object
+ properties:
+ text:
+ type: string
+ description: The transcribed text.
+ TranscriptionAudio:
+ type: object
+ properties:
+ content:
+ writeOnly: true
+ type: string
+ description: Inline audio bytes.
+ format: bytes
+ uri:
+ type: string
+ description: URI for audio content. Reserved for future use.
+ filename:
+ type: string
+ description: Optional. The uploaded filename.
+ contentType:
+ type: string
+ description: Optional. The MIME type of the input audio.
+ TranscriptionConfig:
+ type: object
+ properties:
+ prompt:
+ type: string
+ description: Optional. A prompt to improve transcription quality.
+ language:
+ type: string
+ description: Optional. The language of the input audio.
+ UpsertMemoReactionRequest:
+ required:
+ - name
+ - reaction
+ type: object
+ properties:
+ name:
+ type: string
+ description: |-
+ Required. The resource name of the memo.
+ Format: memos/{memo}
+ reaction:
+ allOf:
+ - $ref: '#/components/schemas/Reaction'
+ description: Required. The reaction to upsert.
+ User:
+ required:
+ - role
+ - username
+ - state
+ type: object
+ properties:
+ name:
+ type: string
+ description: |-
+ The resource name of the user.
+ Format: users/{user}
+ role:
+ enum:
+ - ROLE_UNSPECIFIED
+ - ADMIN
+ - USER
+ type: string
+ description: The role of the user.
+ format: enum
+ username:
+ type: string
+ description: Required. The unique username for login.
+ email:
+ type: string
+ description: Optional. The email address of the user.
+ displayName:
+ type: string
+ description: Optional. The display name of the user.
+ avatarUrl:
+ type: string
+ description: Optional. The avatar URL of the user.
+ description:
+ type: string
+ description: Optional. The description of the user.
+ password:
+ writeOnly: true
+ type: string
+ description: Input only. The password for the user.
+ state:
+ enum:
+ - STATE_UNSPECIFIED
+ - NORMAL
+ - ARCHIVED
+ type: string
+ description: The state of the user.
+ format: enum
+ createTime:
+ readOnly: true
+ type: string
+ description: Output only. The creation timestamp.
+ format: date-time
+ updateTime:
+ readOnly: true
+ type: string
+ description: Output only. The last update timestamp.
+ format: date-time
+ UserNotification:
+ type: object
+ properties:
+ name:
+ readOnly: true
+ type: string
+ description: |-
+ The resource name of the notification.
+ Format: users/{user}/notifications/{notification}
+ sender:
+ readOnly: true
+ type: string
+ description: |-
+ The sender of the notification.
+ Format: users/{user}
+ senderUser:
+ readOnly: true
+ allOf:
+ - $ref: '#/components/schemas/User'
+ description: The sender user details.
+ status:
+ enum:
+ - STATUS_UNSPECIFIED
+ - UNREAD
+ - ARCHIVED
+ type: string
+ description: The status of the notification.
+ format: enum
+ createTime:
+ readOnly: true
+ type: string
+ description: The creation timestamp.
+ format: date-time
+ type:
+ readOnly: true
+ enum:
+ - TYPE_UNSPECIFIED
+ - MEMO_COMMENT
+ - MEMO_MENTION
+ type: string
+ description: The type of the notification.
+ format: enum
+ memoComment:
+ readOnly: true
+ allOf:
+ - $ref: '#/components/schemas/UserNotification_MemoCommentPayload'
+ memoMention:
+ readOnly: true
+ allOf:
+ - $ref: '#/components/schemas/UserNotification_MemoMentionPayload'
+ UserNotification_MemoCommentPayload:
+ type: object
+ properties:
+ memo:
+ type: string
+ description: |-
+ The memo name of comment.
+ Format: memos/{memo}
+ relatedMemo:
+ type: string
+ description: |-
+ The name of related memo.
+ Format: memos/{memo}
+ memoSnippet:
+ type: string
+ description: Preview text of the comment memo.
+ relatedMemoSnippet:
+ type: string
+ description: Preview text of the related memo.
+ UserNotification_MemoMentionPayload:
+ type: object
+ properties:
+ memo:
+ type: string
+ description: |-
+ The memo that contains the mention.
+ Format: memos/{memo}
+ relatedMemo:
+ type: string
+ description: |-
+ The related parent memo when the mention was created in a comment.
+ Format: memos/{memo}
+ memoSnippet:
+ type: string
+ description: Preview text of the memo that contains the mention.
+ relatedMemoSnippet:
+ type: string
+ description: Preview text of the related parent memo.
+ UserSetting:
+ type: object
+ properties:
+ name:
+ type: string
+ description: |-
+ The name of the user setting.
+ Format: users/{username}/settings/{setting}, {setting} is the key for the setting.
+ For example, "users/steven/settings/GENERAL" for general settings.
+ generalSetting:
+ $ref: '#/components/schemas/UserSetting_GeneralSetting'
+ webhooksSetting:
+ $ref: '#/components/schemas/UserSetting_WebhooksSetting'
+ description: User settings message
+ UserSetting_GeneralSetting:
+ type: object
+ properties:
+ locale:
+ type: string
+ description: The preferred locale of the user.
+ memoVisibility:
+ type: string
+ description: The default visibility of the memo.
+ theme:
+ type: string
+ description: |-
+ The preferred theme of the user.
+ This references a CSS file in the web/public/themes/ directory.
+ If not set, the default theme will be used.
+ description: General user settings configuration.
+ UserSetting_WebhooksSetting:
+ type: object
+ properties:
+ webhooks:
+ type: array
+ items:
+ $ref: '#/components/schemas/UserWebhook'
+ description: List of user webhooks.
+ description: User webhooks configuration.
+ UserStats:
+ type: object
+ properties:
+ name:
+ type: string
+ description: |-
+ The resource name of the user whose stats these are.
+ Format: users/{user}
+ memoDisplayTimestamps:
+ type: array
+ items:
+ type: string
+ format: date-time
+ description: The timestamps when the memos were displayed.
+ memoTypeStats:
+ allOf:
+ - $ref: '#/components/schemas/UserStats_MemoTypeStats'
+ description: The stats of memo types.
+ tagCount:
+ type: object
+ additionalProperties:
+ type: integer
+ format: int32
+ description: The count of tags.
+ pinnedMemos:
+ type: array
+ items:
+ type: string
+ description: The pinned memos of the user.
+ totalMemoCount:
+ type: integer
+ description: Total memo count.
+ format: int32
+ description: User statistics messages
+ UserStats_MemoTypeStats:
+ type: object
+ properties:
+ linkCount:
+ type: integer
+ format: int32
+ codeCount:
+ type: integer
+ format: int32
+ todoCount:
+ type: integer
+ format: int32
+ undoCount:
+ type: integer
+ format: int32
+ description: Memo type statistics.
+ UserWebhook:
+ type: object
+ properties:
+ name:
+ type: string
+ description: |-
+ The name of the webhook.
+ Format: users/{user}/webhooks/{webhook}
+ url:
+ type: string
+ description: The URL to send the webhook to.
+ displayName:
+ type: string
+ description: Optional. Human-readable name for the webhook.
+ createTime:
+ readOnly: true
+ type: string
+ description: The creation time of the webhook.
+ format: date-time
+ updateTime:
+ readOnly: true
+ type: string
+ description: The last update time of the webhook.
+ format: date-time
+ description: UserWebhook represents a webhook owned by a user.
+tags:
+ - name: AIService
+ - name: AttachmentService
+ - name: AuthService
+ - name: IdentityProviderService
+ - name: InstanceService
+ - name: MemoService
+ - name: ShortcutService
+ - name: UserService
+
+servers:
+ - url: https://demo.usememos.com
+ description: Demo Server
diff --git a/openapi/latest.yaml b/openapi/latest.yaml
index 6c72cda..11d0cfc 100644
--- a/openapi/latest.yaml
+++ b/openapi/latest.yaml
@@ -6,6 +6,31 @@ info:
title: ""
version: 0.0.1
paths:
+ /api/v1/ai:transcribe:
+ post:
+ tags:
+ - AIService
+ description: Transcribe transcribes an audio file using an instance AI provider.
+ operationId: AIService_Transcribe
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/TranscribeRequest'
+ required: true
+ responses:
+ "200":
+ description: OK
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/TranscribeResponse'
+ default:
+ description: Default error response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Status'
/api/v1/attachments:
get:
tags:
@@ -2380,7 +2405,47 @@ components:
$ref: '#/components/schemas/InstanceSetting_TagsSetting'
notificationSetting:
$ref: '#/components/schemas/InstanceSetting_NotificationSetting'
+ aiSetting:
+ $ref: '#/components/schemas/InstanceSetting_AISetting'
description: An instance setting resource.
+ InstanceSetting_AIProviderConfig:
+ type: object
+ properties:
+ id:
+ type: string
+ title:
+ type: string
+ type:
+ enum:
+ - AI_PROVIDER_TYPE_UNSPECIFIED
+ - OPENAI
+ - GEMINI
+ type: string
+ format: enum
+ endpoint:
+ type: string
+ apiKey:
+ writeOnly: true
+ type: string
+ description: api_key is write-only and is never returned by GetInstanceSetting.
+ apiKeySet:
+ readOnly: true
+ type: boolean
+ description: api_key_set indicates whether an API key is stored for this provider.
+ apiKeyHint:
+ readOnly: true
+ type: string
+ description: api_key_hint is a masked hint for the stored API key.
+ description: AIProviderConfig represents one callable AI provider connection.
+ InstanceSetting_AISetting:
+ type: object
+ properties:
+ providers:
+ type: array
+ items:
+ $ref: '#/components/schemas/InstanceSetting_AIProviderConfig'
+ description: providers is the list of AI provider configurations available instance-wide.
+ description: AI provider configuration settings.
InstanceSetting_GeneralSetting:
type: object
properties:
@@ -3144,6 +3209,56 @@ components:
description: |-
S3 configuration for cloud storage backend.
Reference: https://developers.cloudflare.com/r2/examples/aws/aws-sdk-go/
+ TranscribeRequest:
+ required:
+ - providerId
+ - config
+ - audio
+ type: object
+ properties:
+ providerId:
+ type: string
+ description: Required. The instance AI provider ID to use.
+ config:
+ allOf:
+ - $ref: '#/components/schemas/TranscriptionConfig'
+ description: Required. Transcription options.
+ audio:
+ allOf:
+ - $ref: '#/components/schemas/TranscriptionAudio'
+ description: Required. Audio input.
+ TranscribeResponse:
+ type: object
+ properties:
+ text:
+ type: string
+ description: The transcribed text.
+ TranscriptionAudio:
+ type: object
+ properties:
+ content:
+ writeOnly: true
+ type: string
+ description: Inline audio bytes.
+ format: bytes
+ uri:
+ type: string
+ description: URI for audio content. Reserved for future use.
+ filename:
+ type: string
+ description: Optional. The uploaded filename.
+ contentType:
+ type: string
+ description: Optional. The MIME type of the input audio.
+ TranscriptionConfig:
+ type: object
+ properties:
+ prompt:
+ type: string
+ description: Optional. A prompt to improve transcription quality.
+ language:
+ type: string
+ description: Optional. The language of the input audio.
UpsertMemoReactionRequest:
required:
- name
@@ -3419,6 +3534,7 @@ components:
format: date-time
description: UserWebhook represents a webhook owned by a user.
tags:
+ - name: AIService
- name: AttachmentService
- name: AuthService
- name: IdentityProviderService
diff --git a/scripts/generate-openapi.mjs b/scripts/generate-openapi.mjs
index 372f37e..3b9c5b0 100644
--- a/scripts/generate-openapi.mjs
+++ b/scripts/generate-openapi.mjs
@@ -13,6 +13,7 @@ const DEMO_SERVER = `servers:
const SERVICE_ENTRY_PAGES = {
activityservice: "GetActivity",
+ aiservice: "Transcribe",
attachmentservice: "CreateAttachment",
authservice: "SignIn",
identityproviderservice: "CreateIdentityProvider",
@@ -24,6 +25,7 @@ const SERVICE_ENTRY_PAGES = {
const SERVICE_TITLES = {
activityservice: "Activity Service",
+ aiservice: "AI Service",
attachmentservice: "Attachment Service",
authservice: "Auth Service",
identityproviderservice: "Identity Provider Service",
diff --git a/src/lib/api-docs-versions.json b/src/lib/api-docs-versions.json
index 0117e03..23f5842 100644
--- a/src/lib/api-docs-versions.json
+++ b/src/lib/api-docs-versions.json
@@ -5,6 +5,11 @@
"ref": "main",
"isLatest": true
},
+ {
+ "slug": "0-27-1",
+ "label": "0.27.x",
+ "ref": "refs/tags/v0.27.1"
+ },
{
"slug": "0-26-2",
"label": "0.26.x",