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",