# 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/ai:transcribe: post: tags: - AIService description: |- Transcribe transcribes an audio file with the instance's configured transcription provider. The caller must be signed in, and requests are rate limited per user. 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/attachments: get: tags: - AttachmentService description: ListAttachments lists attachments linked to memos the caller can read, plus the caller's unlinked uploads. operationId: AttachmentService_ListAttachments parameters: - name: pageSize in: query description: |- Optional. The maximum number of attachments to return. The service may return fewer. If unspecified, at most 50 attachments are returned. Values above 1000 are coerced to 1000. schema: type: integer format: int32 - name: pageToken in: query description: Optional. A page token from a previous call. Provide it to retrieve the next page. schema: type: string - name: filter in: query description: |- Optional. A CEL filter over the results. Example: `mime_type == "image/png"` or `filename.contains("test")`. Supported operators: ==, !=, <, <=, >, >=, : (contains), in. Supported fields: creator, filename, mime_type, create_time, memo_id, space. `creator` is the linked memo's creator, or the uploader for an unlinked attachment. It supports equality with a User resource name. `space` is the linked memo's Space resource name, or null when the attachment is unlinked or its memo has no space. It supports only a non-negated `==` comparison with a Space resource name or null. schema: type: string - name: orderBy in: query description: |- Optional. The order to sort results by, such as "create_time desc" or "filename asc". The service does not apply it yet. 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 an attachment from inline content. operationId: AttachmentService_CreateAttachment parameters: - name: attachmentId in: query description: |- Optional. The ID to use for the attachment. If empty, a unique ID is generated. Format: ^[a-zA-Z0-9]([a-zA-Z0-9-]{0,34}[a-zA-Z0-9])?$ 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/attachments/{attachment}: get: tags: - AttachmentService description: |- GetAttachment gets an attachment by name. An unlinked attachment is visible only to its uploader and admins; a linked attachment follows the read access of its memo. 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 uploaded by the caller. 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. Only `filename` can be updated. The caller must be the uploader or an admin. operationId: AttachmentService_UpdateAttachment parameters: - name: attachment in: path description: The attachment id. required: true schema: type: string - name: updateMask in: query description: Required. The fields to update. Only `filename` is supported. 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/attachments:batchDelete: post: tags: - AttachmentService description: |- BatchDeleteAttachments deletes up to 100 attachments in one atomic request. The caller must be the uploader of each attachment or an admin. 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/attachments:upload: post: tags: - AttachmentService description: |- UploadAttachment uploads a file in bounded chunks. The first call carries the spec and returns an upload_id; later calls carry that upload_id. Uploads are bound to the authenticated user, expire after 30 minutes of inactivity, and do not survive a server restart. operationId: AttachmentService_UploadAttachment requestBody: content: application/json: schema: $ref: '#/components/schemas/UploadAttachmentRequest' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/UploadAttachmentResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/auth/me: get: tags: - AuthService description: |- GetCurrentUser returns the authenticated user, similar to OIDC's /userinfo endpoint. When the caller is not signed in or the account is no longer active, clears the refresh token cookie and returns UNAUTHENTICATED. 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/auth/refresh: post: tags: - AuthService description: |- RefreshToken exchanges the refresh token for a new access token. The refresh token is read from the HttpOnly cookie and rotated: the old token is revoked and a new one with a fresh 30-day expiry is set in the cookie. Public, so it can be called after the access token has expired. 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/auth/signin: post: tags: - AuthService description: |- SignIn authenticates a user with password or SSO credentials. On success, returns a short-lived access token and sets a refresh token in an HttpOnly cookie. Public. Attempts are rate limited. Archived users cannot sign in. 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/auth/signout: post: tags: - AuthService description: |- SignOut ends the current session. Revokes the refresh token from the cookie and clears the cookie. operationId: AuthService_SignOut responses: "200": description: OK content: {} default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/identity-providers: get: tags: - IdentityProviderService description: |- ListIdentityProviders lists identity providers. Public, so the sign-in page can show SSO options. Client secrets are never returned. 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. Requires the admin role. Fails with FAILED_PRECONDITION when the ID belongs to a provider configured by the deployment. operationId: IdentityProviderService_CreateIdentityProvider parameters: - name: identityProviderId in: query description: |- Optional. The ID to use for the identity provider, which becomes the final component of the resource name. If empty, the server generates one. Format: ^[a-zA-Z0-9]([a-zA-Z0-9-]{0,34}[a-zA-Z0-9])?$ 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/identity-providers/{identity-provider}: get: tags: - IdentityProviderService description: |- GetIdentityProvider gets an identity provider. The client secret is never returned. 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. Requires the admin role. Providers configured by the deployment cannot be deleted. Fails with FAILED_PRECONDITION when password sign-in is disabled for regular users and no other effective provider remains. 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. Requires the admin role. Providers configured by the deployment cannot be updated. 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 fields to update. Supported paths: title, identifier_filter, config; other paths are ignored. An empty OAuth2 client secret in config keeps the stored secret. 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/instance/profile: get: tags: - InstanceService description: GetInstanceProfile gets the instance profile. Available without authentication, including on a private instance. 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/instance/settings/notification:testEmail: post: tags: - InstanceService description: TestInstanceEmailSetting sends a test email with the provided or stored SMTP settings. Admin only. operationId: InstanceService_TestInstanceEmailSetting requestBody: content: application/json: schema: $ref: '#/components/schemas/TestInstanceEmailSettingRequest' required: true responses: "200": description: OK content: {} default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/instance/settings:batchGet: post: tags: - InstanceService description: |- BatchGetInstanceSettings gets up to 100 instance settings in request order, with the same access rules as GetInstanceSetting. The call fails if any setting cannot be returned. operationId: InstanceService_BatchGetInstanceSettings requestBody: content: application/json: schema: $ref: '#/components/schemas/BatchGetInstanceSettingsRequest' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/BatchGetInstanceSettingsResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/instance/stats: get: tags: - InstanceService description: GetInstanceStats gets resource usage statistics for the instance. Admin only. Results are cached for 60 seconds. operationId: InstanceService_GetInstanceStats responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/InstanceStats' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/instance/{instance}/*: get: tags: - InstanceService description: |- GetInstanceSetting gets an instance setting. Available without authentication, except STORAGE and NOTIFICATION, which are admin only, and AI, which requires a signed-in user and hides transcription defaults from non-admins. 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: |- UpdateInstanceSetting replaces an instance setting. Admin only. Settings configured by the deployment cannot be updated. Empty write-only credentials keep the stored values. operationId: InstanceService_UpdateInstanceSetting parameters: - name: instance in: path description: The instance id. required: true schema: type: string - name: updateMask in: query description: Optional. The list of fields to update. Currently ignored; the whole setting is replaced. 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/memos: get: tags: - MemoService description: |- ListMemos lists the memos the caller can read, excluding comments. Anonymous callers can list only when the instance allows public access. operationId: MemoService_ListMemos parameters: - name: pageSize in: query description: |- Optional. The maximum number of memos to return. The service may return fewer. Defaults to 50; values above 1000 are coerced to 1000. schema: type: integer format: int32 - name: pageToken in: query description: |- Optional. A page token from a previous call. Provide it to retrieve the next page. schema: type: string - name: filter in: query description: |- Optional. A CEL expression to filter memos. Combine terms with && and ||. Available fields: content (string), creator (string, e.g. "users/1"), created_ts / updated_ts (timestamp), pinned (bool), visibility (string: PRIVATE | PROTECTED | PUBLIC | SPACE), space (string resource name, or null when the memo has no space; supports == and comparisons against null, e.g. space != null), tags (list; match with `"work" in tags`, not `tag == "work"`), has_task_list / has_link / has_code / has_incomplete_tasks (bool), has_location (bool; true when the memo has a location attached). Note: the time fields here are created_ts / updated_ts, which differ from the create_time / update_time names used by order_by. Examples: pinned == true && visibility == "PUBLIC" space == "spaces/team" or space == null tags.exists(t, t == "urgent") content.contains("roadmap") && created_ts > now - duration("168h") schema: type: string - name: orderBy in: query description: |- Optional. The order to sort results by, as a comma-separated list of fields following AIP-132. Defaults to "create_time desc". Supported fields: pinned, create_time, update_time, name. Example: "pinned desc, create_time desc" or "update_time asc". Note: order_by uses create_time / update_time, while the filter expression uses created_ts / updated_ts for the same timestamps. schema: type: string - name: showDeleted in: query description: |- Optional. Whether to include deleted memos. Currently ignored by the server. schema: type: boolean - name: state in: query description: |- Optional. The state of the memos to list. Defaults to NORMAL. Set to ARCHIVED to list the caller's own archived memos. schema: enum: - STATE_UNSPECIFIED - NORMAL - ARCHIVED type: string format: enum 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 owned by the authenticated user. The request body is a Memo; set its Markdown content and visibility (defaults to PRIVATE). Requires authentication. operationId: MemoService_CreateMemo parameters: - name: memoId in: query description: |- Optional. The ID to use for the memo, which becomes the final segment of its resource name. If empty, a unique ID is generated. Format: ^[a-zA-Z0-9]([a-zA-Z0-9-]{0,34}[a-zA-Z0-9])?$ 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/memos/-/linkMetadata: get: tags: - MemoService description: GetLinkMetadata fetches the title, description, and image of a link. operationId: MemoService_GetLinkMetadata parameters: - name: url in: query description: Required. The link URL. schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/LinkMetadata' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/memos/-/linkMetadata:batchGet: post: tags: - MemoService description: BatchGetLinkMetadata fetches the metadata of up to 10 links. operationId: MemoService_BatchGetLinkMetadata requestBody: content: application/json: schema: $ref: '#/components/schemas/BatchGetLinkMetadataRequest' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/BatchGetLinkMetadataResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/memos/{memo}: get: tags: - MemoService description: GetMemo gets a memo. Requires read access to the 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 the named memo and its comment subtree, including nested replies and their owned resources. It removes incident relations for all deleted memos. Requires the memo creator or an instance administrator. operationId: MemoService_DeleteMemo parameters: - name: memo in: path description: The memo id. required: true schema: type: string - name: force in: query description: |- Optional. Currently ignored by the server; deletion always includes the comment subtree. 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 the memo fields listed in update_mask. Requires the memo creator or an instance administrator. operationId: MemoService_UpdateMemo parameters: - name: memo in: path description: The memo id. required: true schema: type: string - name: updateMask in: query description: |- Required. The fields to update. Supported paths: content, visibility, space, pinned, state, create_time, update_time, location, attachments, relations. 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/memos/{memo}/attachments: get: tags: - MemoService description: |- ListMemoAttachments lists the attachments of a memo. Requires read access to the 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. The service may return fewer. Currently ignored; all attachments are returned. schema: type: integer format: int32 - name: pageToken in: query description: |- Optional. A page token from a previous call. Provide it to retrieve the next page. Currently ignored. 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 replaces the full set of attachments on a memo with the provided list (not an append). Pass the complete desired set; an empty list clears all attachments. Idempotent. Requires the memo creator or an instance administrator. 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/memos/{memo}/comments: get: tags: - MemoService description: |- ListMemoComments lists the active comments on a memo that the caller can read. Requires read access to the 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. The service may return fewer. Defaults to 50; values above 1000 are coerced to 1000. schema: type: integer format: int32 - name: pageToken in: query description: |- Optional. A page token from a previous call. Provide it to retrieve the next page. schema: type: string - name: orderBy in: query description: Optional. The order to sort results by. Currently ignored by the server. 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 atomically creates an independent memo plus one immutable COMMENT context relation to the named memo. The new memo keeps its own placement, visibility, authorship, and lifecycle. The named memo must be readable by the caller and not archived. operationId: MemoService_CreateMemoComment parameters: - name: memo in: path description: The memo id. required: true schema: type: string - name: commentId in: query description: |- Optional. The ID to use for the comment memo, in the same format as CreateMemoRequest.memo_id. If empty, a unique ID is 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/memos/{memo}/reactions: get: tags: - MemoService description: |- ListMemoReactions lists the reactions on a memo. Requires read access to the 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. The service may return fewer. Currently ignored; all reactions are returned. schema: type: integer format: int32 - name: pageToken in: query description: |- Optional. A page token from a previous call. Provide it to retrieve the next page. Currently ignored. 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 adds or updates the authenticated user's reaction on a memo. Requires read access to the 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/memos/{memo}/reactions/{reaction}: delete: tags: - MemoService description: |- DeleteMemoReaction deletes a reaction. Requires the reaction creator or an instance administrator. 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/memos/{memo}/relations: get: tags: - MemoService description: |- ListMemoRelations lists the relations of a memo in both directions. Requires read access to the 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. The service may return fewer. Defaults to 50; values above 1000 are coerced to 1000. schema: type: integer format: int32 - name: pageToken in: query description: |- Optional. A page token from a previous call. Provide it to retrieve the next page. 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 replaces the full set of mutable REFERENCE relations on a memo. COMMENT relations are immutable creation context and are rejected by this RPC. An empty list clears references without changing COMMENT. Requires the memo creator or an instance administrator. 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/memos/{memo}/shares: get: tags: - MemoService description: |- ListMemoShares lists all share links for a memo. Requires the memo creator or an instance administrator. 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 the memo creator or an instance administrator. Only active memos without SPACE visibility can be shared. 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/memos/{memo}/shares/{share}: delete: tags: - MemoService description: |- DeleteMemoShare revokes a share link. Requires the memo creator or an instance administrator. 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/shares/{shareToken}/memo: get: tags: - MemoService description: |- GetSharedMemo resolves a share token to its memo. No authentication is required. Returns NOT_FOUND if the token is invalid or expired. operationId: MemoService_GetSharedMemo parameters: - name: shareToken in: path description: Required. The opaque bearer token from the share URL. 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/spaces: get: tags: - SpaceService description: ListSpaces lists the spaces of which the authenticated caller is a member. operationId: SpaceService_ListSpaces parameters: - name: pageSize in: query description: Optional. The maximum number of spaces to return. The service may return fewer. schema: type: integer format: int32 - name: pageToken in: query description: Optional. A page token from a previous call. Provide it to retrieve the next page. schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ListSpacesResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' post: tags: - SpaceService description: |- CreateSpace creates a space and makes the authenticated caller its first administrator. operationId: SpaceService_CreateSpace parameters: - name: spaceId in: query description: |- Optional. The ID to use for the space, which becomes the final segment of its resource name. If empty, a UUID v4 is generated. Must match ^[a-zA-Z0-9]([a-zA-Z0-9-]{0,34}[a-zA-Z0-9])?$. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/Space' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Space' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/spaces/{space}: get: tags: - SpaceService description: |- GetSpace gets a space of which the authenticated caller is a member. Spaces the caller is not a member of are reported as not found. operationId: SpaceService_GetSpace parameters: - name: space in: path description: The space id. required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Space' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' delete: tags: - SpaceService description: |- DeleteSpace permanently deletes a space and every memo currently placed in it. It never follows memo relations to other memos. Only a space administrator can delete a space. operationId: SpaceService_DeleteSpace parameters: - name: space in: path description: The space 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: - SpaceService description: |- UpdateSpace updates space metadata. Only a space administrator can update a space. operationId: SpaceService_UpdateSpace parameters: - name: space in: path description: The space id. required: true schema: type: string - name: updateMask in: query description: 'Required. The fields to update. Supported paths: title, description, icon.' schema: type: string format: field-mask requestBody: content: application/json: schema: $ref: '#/components/schemas/Space' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Space' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/spaces/{space}/invitations: get: tags: - SpaceService description: |- ListSpaceInvitations lists the pending invitations for a space. Only a space administrator can list them. operationId: SpaceService_ListSpaceInvitations parameters: - name: space in: path description: The space id. required: true schema: type: string - name: pageSize in: query description: Optional. The maximum number of invitations to return. The service may return fewer. schema: type: integer format: int32 - name: pageToken in: query description: Optional. A page token from a previous call. Provide it to retrieve the next page. schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ListSpaceInvitationsResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' post: tags: - SpaceService description: |- CreateSpaceInvitation invites an existing active user to a space. Only a space administrator can invite. The invitee gets no space access until they accept. operationId: SpaceService_CreateSpaceInvitation parameters: - name: space in: path description: The space id. required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/SpaceInvitation' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SpaceInvitation' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/spaces/{space}/invitations/{invitation}: get: tags: - SpaceService description: |- GetSpaceInvitation gets one pending invitation. Only the invitee or a space administrator can get it. operationId: SpaceService_GetSpaceInvitation parameters: - name: space in: path description: The space id. required: true schema: type: string - name: invitation in: path description: The invitation id. required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SpaceInvitation' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' delete: tags: - SpaceService description: |- DeleteSpaceInvitation revokes a pending invitation. Only a space administrator can revoke it. operationId: SpaceService_DeleteSpaceInvitation parameters: - name: space in: path description: The space id. required: true schema: type: string - name: invitation in: path description: The invitation 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/spaces/{space}/invitations/{invitation}:accept: post: tags: - SpaceService description: |- AcceptSpaceInvitation accepts a pending invitation and creates a membership with the invited role. Only the invitee can accept it. operationId: SpaceService_AcceptSpaceInvitation parameters: - name: space in: path description: The space id. required: true schema: type: string - name: invitation in: path description: The invitation id. required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AcceptSpaceInvitationRequest' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SpaceMember' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/spaces/{space}/invitations/{invitation}:decline: post: tags: - SpaceService description: |- DeclineSpaceInvitation declines a pending invitation without creating a membership. Only the invitee can decline it. operationId: SpaceService_DeclineSpaceInvitation parameters: - name: space in: path description: The space id. required: true schema: type: string - name: invitation in: path description: The invitation id. required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/DeclineSpaceInvitationRequest' required: true responses: "200": description: OK content: {} default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/spaces/{space}/members: get: tags: - SpaceService description: |- ListSpaceMembers lists the members of a space. The caller must be a member of the space. operationId: SpaceService_ListSpaceMembers parameters: - name: space in: path description: The space id. required: true schema: type: string - name: pageSize in: query description: Optional. The maximum number of members to return. The service may return fewer. schema: type: integer format: int32 - name: pageToken in: query description: Optional. A page token from a previous call. Provide it to retrieve the next page. schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ListSpaceMembersResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/spaces/{space}/members/{member}: get: tags: - SpaceService description: |- GetSpaceMember gets one membership in a space. The caller must be a member of the space. operationId: SpaceService_GetSpaceMember parameters: - name: space in: path description: The space id. required: true schema: type: string - name: member in: path description: The member id. required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SpaceMember' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' delete: tags: - SpaceService description: |- DeleteSpaceMember removes a member. A space administrator can remove any member, and a member may delete their own membership to leave the space. A space must keep at least one administrator. operationId: SpaceService_DeleteSpaceMember parameters: - name: space in: path description: The space id. required: true schema: type: string - name: member in: path description: The member 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: - SpaceService description: |- UpdateSpaceMember changes a member's space role. Only a space administrator can change roles, and a space must keep at least one administrator. operationId: SpaceService_UpdateSpaceMember parameters: - name: space in: path description: The space id. required: true schema: type: string - name: member in: path description: The member id. required: true schema: type: string - name: updateMask in: query description: |- Required. The fields to update. Must include role. The user path is also accepted, but the user must match the existing member and is never changed. schema: type: string format: field-mask requestBody: content: application/json: schema: $ref: '#/components/schemas/SpaceMember' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SpaceMember' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/usageLimits: get: tags: - InstanceService description: |- ListUsageLimits lists the usage limits: the defaults for every user and the limits for single users. Admin only. operationId: InstanceService_ListUsageLimits parameters: - name: pageSize in: query description: |- Optional. The maximum number of usage limits to return. If unspecified, at most 50 are returned. The maximum value is 1000; values above 1000 are coerced to 1000. schema: type: integer format: int32 - name: pageToken in: query description: |- Optional. A page token from a previous call. Provide it to retrieve the next page. schema: type: string - name: filter in: query description: |- Optional. A CEL filter on `user` and `metric`, combined with `&&`. `user == ""` selects the defaults for every user. Example: "user == 'users/steven' && metric == 'STORAGE_BYTES'" schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ListUsageLimitsResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' post: tags: - InstanceService description: |- CreateUsageLimit creates a usage limit. Admin only. There is at most one limit per metric and user, and one default per metric. Fails with FAILED_PRECONDITION when the usage limits are configured by the deployment. operationId: InstanceService_CreateUsageLimit parameters: - name: usageLimitId in: query description: |- Optional. The ID to use for the usage limit, which becomes the final segment of its name. Lowercase letters, digits and hyphens, at most 32 characters, starting with a letter. Generated when empty. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/UsageLimit' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/UsageLimit' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/usageLimits/{usageLimit}: get: tags: - InstanceService description: GetUsageLimit gets a usage limit. Admin only. operationId: InstanceService_GetUsageLimit parameters: - name: usageLimit in: path description: The usageLimit id. required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/UsageLimit' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' delete: tags: - InstanceService description: |- DeleteUsageLimit deletes a usage limit. Admin only. Deleting a user's limit returns the user to the default; deleting a default makes the metric unlimited for users without their own limit. operationId: InstanceService_DeleteUsageLimit parameters: - name: usageLimit in: path description: The usageLimit 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: - InstanceService description: |- UpdateUsageLimit updates the value of a usage limit. Admin only. The metric and user cannot change. operationId: InstanceService_UpdateUsageLimit parameters: - name: usageLimit in: path description: The usageLimit id. required: true schema: type: string - name: updateMask in: query description: |- Optional. The fields to update. Only `value` is supported, which is also the default. schema: type: string format: field-mask requestBody: content: application/json: schema: $ref: '#/components/schemas/UsageLimit' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/UsageLimit' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/users: get: tags: - UserService description: ListUsers lists users in every state. Only admins may call it. operationId: UserService_ListUsers parameters: - name: pageSize in: query description: |- Optional. The maximum number of users to return. The service may return fewer. If unspecified, at most 50 users are returned. The maximum value is 1000; values above 1000 are coerced to 1000. schema: type: integer format: int32 - name: pageToken in: query description: |- Optional. A page token from a previous call. Provide it to retrieve the next page. schema: type: string - name: filter in: query description: |- Optional. A CEL filter on the users. Only `username == ''` is supported. Example: "username == 'steven'" schema: type: string - name: showDeleted in: query description: Optional. Currently ignored; the list includes users in every state. 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 user. The first user of an instance becomes an admin. Otherwise, unless an admin calls it, the instance must allow user registration and password sign-up, and the new user gets the USER role. operationId: UserService_CreateUser parameters: - name: userId in: query description: |- Optional. The resource ID to use for this user. If set, it must equal user.username and follow the username format. Format: ^[a-zA-Z0-9]([a-zA-Z0-9-]{0,34}[a-zA-Z0-9])?$ schema: type: string - name: validateOnly in: query description: Optional. If set, validate the request but do not create the user. schema: type: boolean - name: requestId in: query description: Optional. An idempotency token. Currently ignored. 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/users/{user}: get: tags: - UserService description: GetUser gets a user by resource name. operationId: UserService_GetUser parameters: - name: user in: path description: The user id. required: true schema: type: string - name: readMask in: query description: Optional. Currently ignored; 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. Users may delete themselves; admins may delete anyone. A user who belongs to any space cannot be deleted. operationId: UserService_DeleteUser parameters: - name: user in: path description: The user id. required: true schema: type: string - name: force in: query description: |- Optional. Currently ignored; deleting a user who belongs to any space fails with FAILED_PRECONDITION. 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. Users may update themselves; admins may update anyone. Changing the password ends the user's other sessions. operationId: UserService_UpdateUser parameters: - name: user in: path description: The user id. required: true schema: type: string - name: updateMask in: query description: |- Required. The fields to update. Supported paths: username, display_name, email, avatar_url, description, password, role, state. role and state require an admin. schema: type: string format: field-mask - name: allowMissing in: query description: Optional. Currently ignored; updating a missing user fails with NOT_FOUND. 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/users/{user}/linkedIdentities: get: tags: - UserService description: |- ListLinkedIdentities lists the SSO identities linked to a user. The user and admins may call it. operationId: UserService_ListLinkedIdentities 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/ListLinkedIdentitiesResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' post: tags: - UserService description: |- CreateLinkedIdentity completes an OAuth flow and links the resulting SSO identity to the authenticated user, who must be the parent. operationId: UserService_CreateLinkedIdentity parameters: - name: user in: path description: The user id. required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateLinkedIdentityRequest' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/LinkedIdentity' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/users/{user}/linkedIdentities/{linkedIdentity}: get: tags: - UserService description: |- GetLinkedIdentity gets an SSO identity linked to a user. The user and admins may call it. operationId: UserService_GetLinkedIdentity parameters: - name: user in: path description: The user id. required: true schema: type: string - name: linkedIdentity in: path description: The linkedIdentity id. required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/LinkedIdentity' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' delete: tags: - UserService description: |- DeleteLinkedIdentity unlinks an SSO identity from a user. The user and admins may call it. operationId: UserService_DeleteLinkedIdentity parameters: - name: user in: path description: The user id. required: true schema: type: string - name: linkedIdentity in: path description: The linkedIdentity 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/users/{user}/notifications: get: tags: - UserService description: |- ListUserNotifications lists a user's notifications. Only the user may call it. Notifications whose memos or space invitation the user can no longer read are left out. operationId: UserService_ListUserNotifications parameters: - name: user in: path description: The user id. required: true schema: type: string - name: pageSize in: query description: |- Optional. The maximum number of notifications to return. The service may return fewer. Currently ignored; all notifications are returned in one page. schema: type: integer format: int32 - name: pageToken in: query description: |- Optional. A page token from a previous call. Provide it to retrieve the next page. schema: type: string - name: filter in: query description: Optional. A filter on the notifications. Currently ignored. 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/users/{user}/notifications/{notification}: delete: tags: - UserService description: |- DeleteUserNotification permanently deletes a notification. Only the receiver may call it. 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's status. Only the receiver may call it. 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 description: Required. The fields to update. Only status is supported. 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/users/{user}/personalAccessTokens: get: tags: - UserService description: |- ListPersonalAccessTokens lists a user's personal access tokens (PATs), without their token values. PATs are long-lived tokens for API and script access, distinct from short-lived JWT access tokens. The user and admins may call it. 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. The service may return fewer. Currently ignored; all tokens are returned in one page. schema: type: integer format: int32 - name: pageToken in: query description: |- Optional. A page token from a previous call. Provide it to retrieve the next page. 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 personal access token for a user. Only the user may call it. The token value is returned only once, in the response. 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/users/{user}/personalAccessTokens/{personalAccessToken}: delete: tags: - UserService description: |- DeletePersonalAccessToken deletes a personal access token, which stops working immediately. Only the owner may call it. 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/users/{user}/settings: get: tags: - UserService description: |- ListUserSettings lists the settings of a user. Only the user may call it. The GENERAL setting is always included, with defaults when it was never saved. 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. Currently ignored; all settings are returned in one page. schema: type: integer format: int32 - name: pageToken in: query description: |- Optional. A page token from a previous call. Provide it to retrieve the next 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/users/{user}/settings/{setting}: get: tags: - UserService description: GetUserSetting gets a user setting. Only the user may call it. 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 a user setting. Only the user may call it, and only the GENERAL and TAGS settings can be updated. 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 fields to update, relative to the setting value. GENERAL supports locale, memo_visibility, theme and save_media_metadata; TAGS supports tags. 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/users/{user}/spaceInvitations: get: tags: - SpaceService description: |- ListUserSpaceInvitations lists the authenticated user's pending space invitations. A user cannot list another user's invitations. operationId: SpaceService_ListUserSpaceInvitations parameters: - name: user in: path description: The user id. required: true schema: type: string - name: pageSize in: query description: Optional. The maximum number of invitations to return. The service may return fewer. schema: type: integer format: int32 - name: pageToken in: query description: Optional. A page token from a previous call. Provide it to retrieve the next page. schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ListUserSpaceInvitationsResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/users/{user}/stats: get: tags: - UserService description: |- ListUserStats returns memo statistics for every user who created at least one matching memo the caller can read. Use the parent users/- for all users, or users/{user} for one user. operationId: UserService_ListUserStats parameters: - name: user in: path description: The user id. required: true schema: type: string - name: filter in: query description: |- Optional. A CEL expression selecting the memos to count. Uses the same filter syntax as ListMemos. schema: type: string - name: state in: query description: |- Optional. The state of the memos to count. Defaults to NORMAL. ARCHIVED counts only the caller's own memos. schema: enum: - STATE_UNSPECIFIED - NORMAL - ARCHIVED type: string format: enum responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ListUserStatsResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/users/{user}/usage: get: tags: - UserService description: |- GetUserUsage returns a user's usage and the usage limits in effect for the user. Only the user or an admin may call it. operationId: UserService_GetUserUsage 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/UserUsage' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/users/{user}/views: get: tags: - UserService description: |- ListMemoViews lists a user's memo views. Each view is a named, reusable CEL filter (see MemoView.filter); pass its filter string directly to the ListMemos `filter` argument. Only the user may call it. operationId: UserService_ListMemoViews 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/ListMemoViewsResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' post: tags: - UserService description: CreateMemoView creates a memo view for a user. Only the user may call it. operationId: UserService_CreateMemoView 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 create the memo view. schema: type: boolean requestBody: content: application/json: schema: $ref: '#/components/schemas/MemoView' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/MemoView' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/users/{user}/views/{view}: get: tags: - UserService description: GetMemoView gets a memo view. Only the owner may call it. operationId: UserService_GetMemoView parameters: - name: user in: path description: The user id. required: true schema: type: string - name: view in: path description: The view id. required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/MemoView' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' delete: tags: - UserService description: DeleteMemoView deletes a memo view. Only the owner may call it. operationId: UserService_DeleteMemoView parameters: - name: user in: path description: The user id. required: true schema: type: string - name: view in: path description: The view 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: UpdateMemoView updates a memo view. Only the owner may call it. operationId: UserService_UpdateMemoView parameters: - name: user in: path description: The user id. required: true schema: type: string - name: view in: path description: The view id. required: true schema: type: string - name: updateMask in: query description: |- Optional. The fields to update. Supported paths: title, filter, icon. The service rejects an empty mask. schema: type: string format: field-mask requestBody: content: application/json: schema: $ref: '#/components/schemas/MemoView' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/MemoView' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/users/{user}/webhooks: get: tags: - UserService description: ListUserWebhooks lists a user's webhooks. Only the user may call it. 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 webhook for a user. Only the user may call it. The service generates a signing secret when none is given. 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/users/{user}/webhooks/{webhook}: delete: tags: - UserService description: DeleteUserWebhook deletes a webhook. Only the owner may call it. 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 a webhook. Only the owner may call it. 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 fields to update. Supported paths: url, display_name, signing_secret. When unset, all of them are updated, skipping an empty url or signing_secret. 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/users/{user}/webhooks/{webhook}:getSigningSecret: get: tags: - UserService description: |- GetUserWebhookSigningSecret returns the signing secret of a webhook. Only the owner may call it. The secret is returned only through this call; it is never included in List, Create or Update responses. operationId: UserService_GetUserWebhookSigningSecret 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: application/json: schema: $ref: '#/components/schemas/GetUserWebhookSigningSecretResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/users/{user}:exportMemos: get: tags: - UserService description: |- ExportMemos writes every memo the user created, with comments, archived memos, and attachment files, as a Memos export file (a ZIP file, see docs/design/memos-export-format.md). Only the user may export their own memos. The body is the archive; content_type is its media type. operationId: UserService_ExportMemos parameters: - name: user in: path description: The user 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/users/{user}:getStats: get: tags: - UserService description: |- GetUserStats returns memo statistics for one user, counting the user's memos that the caller can read. operationId: UserService_GetUserStats parameters: - name: user in: path description: The user id. required: true schema: type: string - name: filter in: query description: |- Optional. A CEL expression selecting the readable non-comment memos to count. Supports the same fields as ListMemos, including `space`. 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/users/{user}:importMemos: post: tags: - UserService description: |- ImportMemos uploads a Memos export file in bounded chunks and imports it into the user's memos. The first call carries the spec and returns an upload_id; later calls carry that upload_id. A finishing call with validate_only returns the plan and keeps the archive staged; a finishing call without it imports and returns the report. Uploads are bound to the authenticated user, expire after 30 minutes of inactivity, and do not survive a server restart. operationId: UserService_ImportMemos parameters: - name: user in: path description: The user id. required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ImportMemosRequest' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ImportMemosResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/users:batchGet: post: tags: - UserService description: |- BatchGetUsers gets active users by username. Usernames that match no active user are omitted from the response. 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' components: schemas: AcceptSpaceInvitationRequest: required: - name type: object properties: name: type: string description: |- Required. The resource name of the invitation. Format: spaces/{space}/invitations/{invitation} description: Request message for SpaceService.AcceptSpaceInvitation. Attachment: required: - filename - type type: object properties: name: type: string description: |- Identifier. The resource name of the attachment. Format: attachments/{attachment} creator: readOnly: true type: string description: |- Output only. The user who uploaded the attachment, which may differ from the creator of the linked memo. Format: users/{user} filename: type: string description: Required. The filename of the attachment. type: type: string description: |- Required. The MIME type of the attachment. If empty on create, the service detects it from the filename and content. 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. Set only for externally stored attachments; ignored on create. motionMedia: allOf: - $ref: '#/components/schemas/MotionMedia' description: |- Optional. Motion photo metadata. Clients may only supply Apple Live Photo metadata; the service detects Android motion photos in JPEG content. mediaMetadata: allOf: - $ref: '#/components/schemas/MediaMetadata' description: Optional. Normalized media metadata supplied by the client at creation time. Immutable after creation. memo: type: string description: |- Optional. The memo the attachment is linked to. On create, the caller must be able to manage the memo. Format: memos/{memo} size: readOnly: true type: string description: Output only. The size of the stored content in bytes. createTime: readOnly: true type: string description: Output only. The creation time. format: date-time description: Attachment is a file uploaded by a user, optionally linked to a memo. BatchDeleteAttachmentsRequest: required: - names type: object properties: names: type: array items: type: string description: |- Required. The names of the attachments to delete, at most 100. Duplicate names are ignored. Format: attachments/{attachment} description: Request message for AttachmentService.BatchDeleteAttachments. BatchGetInstanceSettingsRequest: required: - names type: object properties: names: type: array items: type: string description: |- Required. The resource names of the instance settings. At most 100. Format: instance/settings/{setting} description: Request message for InstanceService.BatchGetInstanceSettings. BatchGetInstanceSettingsResponse: type: object properties: instanceSettings: type: array items: $ref: '#/components/schemas/InstanceSetting' description: The instance settings, in the same order as the requested names. description: Response message for InstanceService.BatchGetInstanceSettings. BatchGetLinkMetadataRequest: required: - urls type: object properties: urls: type: array items: type: string description: Required. The link URLs. At most 10. description: Request message for MemoService.BatchGetLinkMetadata. BatchGetLinkMetadataResponse: type: object properties: linkMetadata: type: array items: $ref: '#/components/schemas/LinkMetadata' description: The link metadata, in the same order as the requested URLs. description: Response message for MemoService.BatchGetLinkMetadata. BatchGetUsersRequest: required: - names type: object properties: names: type: array items: type: string description: |- Required. The resource names of the users to get. Empty and duplicate entries are ignored. At most 100 non-empty names are allowed. Format: users/{user} description: Request message for UserService.BatchGetUsers. BatchGetUsersResponse: type: object properties: users: type: array items: $ref: '#/components/schemas/User' description: The active users that match the requested names. description: Response message for UserService.BatchGetUsers. 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(''); }; // ... CreateLinkedIdentityRequest: required: - parent - identityProvider - code - redirectUri type: object properties: parent: type: string description: |- Required. The user who owns the linked identity. Must be the caller. Format: users/{user} identityProvider: type: string description: |- Required. The identity provider to link. Format: identity-providers/{idp} code: type: string description: Required. The authorization code from the identity provider. redirectUri: type: string description: Required. The redirect URI used in the OAuth flow. codeVerifier: type: string description: Optional. The PKCE code verifier used in the OAuth flow. description: Request message for UserService.CreateLinkedIdentity. CreatePersonalAccessTokenRequest: required: - parent type: object properties: parent: type: string description: |- Required. The user who owns the token. Must be the caller. Format: users/{user} description: type: string description: Optional. The description of the token. expiresInDays: type: integer description: |- Optional. The lifetime of the token in days. 0 means the token never expires. format: int32 description: Request message for UserService.CreatePersonalAccessToken. CreatePersonalAccessTokenResponse: type: object properties: personalAccessToken: allOf: - $ref: '#/components/schemas/PersonalAccessToken' description: The personal access token metadata. token: type: string description: The token value. This is the only time it is returned. description: Response message for UserService.CreatePersonalAccessToken. DeclineSpaceInvitationRequest: required: - name type: object properties: name: type: string description: |- Required. The resource name of the invitation. Format: spaces/{space}/invitations/{invitation} description: Request message for SpaceService.DeclineSpaceInvitation. FieldMapping: type: object properties: identifier: type: string description: The claim that uniquely identifies the user. Sign-in fails when it is missing or empty. displayName: type: string description: The claim used as the display name. Falls back to the identifier when unset. email: type: string description: The claim used as the email address. avatarUrl: type: string description: The claim used as the avatar URL. description: |- FieldMapping maps user info claims of an OAuth2 identity provider to user fields. Each field holds the name of a claim. GeneralSetting_CustomProfile: type: object properties: title: type: string description: The instance title. description: type: string description: The instance description. logoUrl: type: string description: The URL of the instance logo. description: CustomProfile is the instance branding. GetCurrentUserResponse: type: object properties: user: allOf: - $ref: '#/components/schemas/User' description: The authenticated user. description: Response message for AuthService.GetCurrentUser. GetUserWebhookSigningSecretResponse: type: object properties: signingSecret: type: string description: The signing secret, in the Standard Webhooks "whsec_" form. description: Response message for UserService.GetUserWebhookSigningSecret. 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: |- Identifier. 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. A regular expression the user identifier must match to sign in. Empty allows every identifier. config: allOf: - $ref: '#/components/schemas/IdentityProviderConfig' description: Required. The type-specific configuration of the identity provider. description: IdentityProvider is an external identity provider users can sign in with. IdentityProviderConfig: type: object properties: oauth2Config: allOf: - $ref: '#/components/schemas/OAuth2Config' description: The configuration of an OAuth2 identity provider. description: IdentityProviderConfig is the type-specific configuration of an identity provider. ImportMemosIssue: type: object properties: memoUid: type: string description: The archive memo UID the issue concerns, if any. message: type: string description: A description of the issue. description: |- ImportMemosIssue is one warning or failure of an import, tied to the memo UID from the archive when there is one. ImportMemosPlan: type: object properties: exportTime: type: string description: When the archive was written. format: date-time exporter: type: string description: Username of the user who exported the archive. generator: type: string description: The software that wrote the archive. memoCount: type: integer description: Number of memo records in the archive. format: int32 attachmentCount: type: integer description: Number of attachment files in the archive. format: int32 new: type: integer description: Memos whose UID nobody on the instance holds. format: int32 existing: type: integer description: Memos the user already holds; the conflict policy applies to them. format: int32 renamed: type: integer description: Memos whose UID another account holds; they are imported under fresh UIDs. format: int32 warnings: type: array items: $ref: '#/components/schemas/ImportMemosIssue' description: Deviations the archive reader corrected while validating. description: ImportMemosPlan describes what importing a staged archive would do. ImportMemosReport: type: object properties: created: type: integer description: Number of memos created. format: int32 updated: type: integer description: Number of existing memos replaced under the REPLACE policy. format: int32 skipped: type: integer description: Number of existing memos left untouched under the SKIP policy. format: int32 failed: type: integer description: Number of memos that could not be imported. format: int32 warnings: type: array items: $ref: '#/components/schemas/ImportMemosIssue' description: Deviations the importer corrected or tolerated. failures: type: array items: $ref: '#/components/schemas/ImportMemosIssue' description: One entry per failed memo, with the reason. description: ImportMemosReport is the outcome of an import. ImportMemosRequest: required: - name - writeOffset type: object properties: name: type: string description: |- Required. The user who receives the memos. Must be the caller. Format: users/{user} spec: allOf: - $ref: '#/components/schemas/ImportMemosSpec' description: Starts a new upload. The same call may also carry data and finish_write. uploadId: type: string description: Continues the upload identified by a previous response. writeOffset: type: string description: |- Required. Zero-based byte offset at which data is written. Must equal the committed size, except when retrying the most recently accepted chunk with identical bytes and offset, which is accepted without writing again. data: type: string description: |- Optional. Archive bytes, at most max_chunk_size long. With no data and finish_write false, the call reports progress without writing, and write_offset is ignored. format: bytes finishWrite: type: boolean description: |- Optional. Finish the upload after writing data. The committed size must then equal total_size. The archive is validated and, unless validate_only is set, imported. Any later call for an imported upload returns the same report. conflictPolicy: enum: - CONFLICT_POLICY_UNSPECIFIED - SKIP - REPLACE - DUPLICATE type: string description: Optional. Read on the finishing call that imports. Unspecified means SKIP. format: enum validateOnly: type: boolean description: |- Optional. On a finishing call, validate the archive and return the plan without importing. The upload stays staged so a later finishing call can import it. description: Request message for UserService.ImportMemos. ImportMemosResponse: type: object properties: uploadId: type: string description: Opaque ID for subsequent calls. This is not a resource name. committedSize: type: string description: Number of archive bytes committed so far. maxChunkSize: type: integer description: Maximum number of data bytes accepted in one call. format: int32 plan: allOf: - $ref: '#/components/schemas/ImportMemosPlan' description: What the import would do. Set by a finishing call with validate_only. report: allOf: - $ref: '#/components/schemas/ImportMemosReport' description: What the import did. Set by a finishing call that imported. description: Response message for UserService.ImportMemos. ImportMemosSpec: type: object properties: totalSize: type: string description: Optional. Total size of the archive in bytes. description: ImportMemosSpec describes a new memo import upload. InstanceProfile: type: object properties: version: type: string description: The version of the running server. commit: type: string description: The build commit of the running server. demo: type: boolean description: Whether the instance runs in demo mode. instanceUrl: type: string description: The configured URL of the instance. accessMode: enum: - INSTANCE_ACCESS_MODE_UNSPECIFIED - INSTANCE_ACCESS_MODE_PRIVATE - INSTANCE_ACCESS_MODE_PUBLIC type: string description: Whether unauthenticated users may access instance content. format: enum needsSetup: type: boolean description: |- Whether the instance has no users yet and requires initial setup (creating the first admin account). Unlike a null admin, this stays false once any user exists, so an instance that has lost its admins is not mistaken for a fresh install. admin: allOf: - $ref: '#/components/schemas/User' description: |- The first administrator of the instance, for display purposes. May be null on an instance that has lost all admins; use needs_setup to determine whether initial setup is required. challenge: allOf: - $ref: '#/components/schemas/InstanceProfile_Challenge' description: |- The proof-of-humanity challenge required on signup and password sign-in. Absent when none is configured, which is the case on every self-hosted instance. description: InstanceProfile is the basic information about the instance. InstanceProfile_Challenge: type: object properties: provider: type: string description: The challenge provider, which selects the widget the web app renders. siteKey: type: string description: The provider's public site key for the widget. description: Challenge describes a proof-of-humanity challenge widget. InstanceSetting: type: object properties: name: type: string description: |- Identifier. The resource name of the instance setting. {setting} is a Key value, such as GENERAL. Format: instance/settings/{setting} generalSetting: allOf: - $ref: '#/components/schemas/InstanceSetting_GeneralSetting' description: The value of the GENERAL setting. storageSetting: allOf: - $ref: '#/components/schemas/InstanceSetting_StorageSetting' description: The value of the STORAGE setting. memoRelatedSetting: allOf: - $ref: '#/components/schemas/InstanceSetting_MemoRelatedSetting' description: The value of the MEMO_RELATED setting. tagsSetting: allOf: - $ref: '#/components/schemas/InstanceSetting_TagsSetting' description: The value of the TAGS setting. notificationSetting: allOf: - $ref: '#/components/schemas/InstanceSetting_NotificationSetting' description: The value of the NOTIFICATION setting. aiSetting: allOf: - $ref: '#/components/schemas/InstanceSetting_AISetting' description: The value of the AI setting. accessSetting: allOf: - $ref: '#/components/schemas/InstanceSetting_AccessSetting' description: The value of the ACCESS setting. description: InstanceSetting is one group of instance-wide settings, selected by its key. InstanceSetting_AIProviderConfig: type: object properties: id: type: string description: The provider ID. Generated when empty on update. title: type: string description: The provider display title. type: enum: - AI_PROVIDER_TYPE_UNSPECIFIED - OPENAI - GEMINI type: string description: The provider implementation type. format: enum endpoint: type: string description: The provider API endpoint. Defaults to the provider's public endpoint when empty. apiKey: writeOnly: true type: string description: Input only. The provider API key. Never returned; an empty value keeps the stored key. apiKeySet: readOnly: true type: boolean description: Output only. Whether an API key is stored for this provider. apiKeyHint: readOnly: true type: string description: Output only. A masked hint of the stored API key. description: AIProviderConfig is one callable AI provider connection. InstanceSetting_AISetting: type: object properties: providers: type: array items: $ref: '#/components/schemas/InstanceSetting_AIProviderConfig' description: The AI provider configurations available instance-wide. transcription: allOf: - $ref: '#/components/schemas/InstanceSetting_TranscriptionConfig' description: |- The speech-to-text feature configuration. When unset or transcription.provider_id is empty, transcription is disabled. An update that omits it keeps the stored configuration. description: AISetting is the AI provider configuration. InstanceSetting_AccessSetting: type: object properties: accessMode: enum: - INSTANCE_ACCESS_MODE_UNSPECIFIED - INSTANCE_ACCESS_MODE_PRIVATE - INSTANCE_ACCESS_MODE_PUBLIC type: string description: Whether unauthenticated users may access instance content. Must be PRIVATE or PUBLIC on update. format: enum description: AccessSetting is the instance access policy. InstanceSetting_GeneralSetting: type: object properties: customProfile: allOf: - $ref: '#/components/schemas/GeneralSetting_CustomProfile' description: Branding shown in the web app. disallowUserRegistration: type: boolean description: Whether user self-registration is disabled. disallowPasswordAuth: type: boolean description: Whether password authentication is disabled. disallowChangeUsername: type: boolean description: Whether users are prevented from changing their username. disallowChangeNickname: type: boolean description: Whether users are prevented from changing their nickname. weekStartDayOffset: type: integer description: |- The first day of the week as an offset from Sunday. 0: Sunday, 1: Monday, 2: Tuesday, 3: Wednesday, 4: Thursday, 5: Friday, 6: Saturday. Default is Sunday. format: int32 additionalStyle: type: string description: Custom CSS injected into the web app. additionalScript: type: string description: Custom JavaScript injected into the web app. description: GeneralSetting is the general instance configuration. InstanceSetting_MemoRelatedSetting: type: object properties: contentLengthLimit: type: integer description: The maximum memo content length in bytes. Default and minimum is 8192. format: int32 reactions: type: array items: type: string description: The reactions users can choose from. Defaults to a built-in emoji set when empty. enableDoubleClickEdit: type: boolean description: Whether double-clicking a memo opens it for editing. description: MemoRelatedSetting is the memo-related instance configuration. InstanceSetting_NotificationSetting: type: object properties: email: allOf: - $ref: '#/components/schemas/NotificationSetting_EmailSetting' description: The email delivery configuration. description: NotificationSetting is the notification transport configuration. InstanceSetting_Storage: type: object properties: id: type: string description: The stable identifier referenced by attachments. name: type: string description: The human-readable storage name. type: enum: - STORAGE_TYPE_UNSPECIFIED - DATABASE - LOCAL - S3 type: string description: The storage backend. format: enum s3Config: allOf: - $ref: '#/components/schemas/Storage_S3Config' description: The configuration of an S3 storage. description: Storage is a configured attachment storage instance. InstanceSetting_StorageSetting: type: object properties: storages: type: array items: $ref: '#/components/schemas/InstanceSetting_Storage' description: Configured storage instances, including inactive instances still referenced by attachments. defaultStorageId: type: string description: The ID of the storage used for new attachments. filepathTemplate: type: string description: |- The template of attachment file paths. Default is assets/{timestamp}_{uuid}_{filename}. uploadSizeLimitMb: type: string description: The maximum upload size in megabytes. Default is 32. storageType: enum: - STORAGE_TYPE_UNSPECIFIED - DATABASE - LOCAL - S3 type: string description: Legacy compatibility field. New clients use default_storage_id. format: enum s3Config: allOf: - $ref: '#/components/schemas/StorageSetting_S3Config' description: Legacy compatibility field. New clients use storages. description: StorageSetting is the attachment storage configuration. InstanceSetting_TagMetadata: type: object properties: backgroundColor: allOf: - $ref: '#/components/schemas/Color' description: The background color of the tag label. When unset, the default tag color is used. blurContent: type: boolean description: Whether memos with this tag have their content blurred. description: TagMetadata is the display 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. description: |- TagsSetting is the instance-wide tag metadata configuration. Active tag metadata is stored in per-user tag settings. This message remains for backward compatibility with existing clients and migrations. InstanceSetting_TranscriptionConfig: type: object properties: providerId: type: string description: |- The ID of the provider used for transcription; must reference an entry in AISetting.providers. Empty means transcription is disabled. model: type: string description: |- The provider-specific model identifier. Hidden from non-admins. Empty falls back to the engine default (whisper-1 for OPENAI providers, gemini-2.5-flash for GEMINI providers). language: type: string description: |- The default ISO 639-1 language hint sent to the provider. Hidden from non-admins. Empty lets the provider auto-detect. prompt: type: string description: A default spelling and vocabulary hint passed to the provider. Hidden from non-admins. description: TranscriptionConfig is the speech-to-text feature configuration. InstanceStats: type: object properties: database: allOf: - $ref: '#/components/schemas/InstanceStats_DatabaseStats' description: The database size statistics. localStorageBytes: type: string description: The recursive size of the data directory in bytes. -1 if unavailable. generatedTime: type: string description: The time the snapshot was generated on the server. format: date-time description: InstanceStats is a snapshot of the instance's resource usage. InstanceStats_DatabaseStats: type: object properties: driver: type: string description: 'The database driver: "sqlite", "mysql" or "postgres".' sizeBytes: type: string description: The database size in bytes. -1 if unavailable. description: DatabaseStats is the database size statistics. LinkMetadata: type: object properties: url: type: string description: The link URL as given in the request. title: type: string description: The page title. description: type: string description: The page description. image: type: string description: The preview image URL. description: LinkMetadata is the preview metadata of a web link. LinkedIdentity: type: object properties: name: type: string description: |- Identifier. The resource name of the linked identity. {linked_identity} is the ID of the identity provider. Format: users/{user}/linkedIdentities/{linked_identity} identityProvider: readOnly: true type: string description: |- Output only. The resource name of the identity provider. Format: identity-providers/{idp} externalUid: readOnly: true type: string description: Output only. The external user identifier from the identity provider. description: LinkedIdentity is an SSO identity linked to a user account. ListAttachmentsResponse: type: object properties: attachments: type: array items: $ref: '#/components/schemas/Attachment' description: The attachments. nextPageToken: type: string description: A token to retrieve the next page. Empty when there are no more pages. description: Response message for AttachmentService.ListAttachments. ListIdentityProvidersResponse: type: object properties: identityProviders: type: array items: $ref: '#/components/schemas/IdentityProvider' description: The identity providers. description: Response message for IdentityProviderService.ListIdentityProviders. ListLinkedIdentitiesResponse: type: object properties: linkedIdentities: type: array items: $ref: '#/components/schemas/LinkedIdentity' description: The linked identities. description: Response message for UserService.ListLinkedIdentities. ListMemoAttachmentsResponse: type: object properties: attachments: type: array items: $ref: '#/components/schemas/Attachment' description: The attachments. nextPageToken: type: string description: A token to retrieve the next page. Empty when there are no more pages. description: Response message for MemoService.ListMemoAttachments. ListMemoCommentsResponse: type: object properties: comments: type: array items: $ref: '#/components/schemas/Memo' description: The comment memos. nextPageToken: type: string description: A token to retrieve the next page. Empty when there are no more pages. description: Response message for MemoService.ListMemoComments. ListMemoReactionsResponse: type: object properties: reactions: type: array items: $ref: '#/components/schemas/Reaction' description: The reactions. nextPageToken: type: string description: A token to retrieve the next page. Empty when there are no more pages. description: Response message for MemoService.ListMemoReactions. ListMemoRelationsResponse: type: object properties: relations: type: array items: $ref: '#/components/schemas/MemoRelation' description: The relations. nextPageToken: type: string description: A token to retrieve the next page. Empty when there are no more pages. description: Response message for MemoService.ListMemoRelations. ListMemoSharesResponse: type: object properties: memoShares: type: array items: $ref: '#/components/schemas/MemoShare' description: The share links. description: Response message for MemoService.ListMemoShares. ListMemoViewsResponse: type: object properties: memoViews: type: array items: $ref: '#/components/schemas/MemoView' description: The memo views. description: Response message for UserService.ListMemoViews. ListMemosResponse: type: object properties: memos: type: array items: $ref: '#/components/schemas/Memo' description: The memos. nextPageToken: type: string description: A token to retrieve the next page. Empty when there are no more pages. description: Response message for MemoService.ListMemos. ListPersonalAccessTokensResponse: type: object properties: personalAccessTokens: type: array items: $ref: '#/components/schemas/PersonalAccessToken' description: The personal access tokens, without their token values. nextPageToken: type: string description: A token to retrieve the next page. Empty when there are no more pages. description: Response message for UserService.ListPersonalAccessTokens. ListSpaceInvitationsResponse: type: object properties: spaceInvitations: type: array items: $ref: '#/components/schemas/SpaceInvitation' description: The pending invitations for the space. nextPageToken: type: string description: A token to retrieve the next page. Empty when there are no more pages. description: Response message for SpaceService.ListSpaceInvitations. ListSpaceMembersResponse: type: object properties: spaceMembers: type: array items: $ref: '#/components/schemas/SpaceMember' description: The members of the space. nextPageToken: type: string description: A token to retrieve the next page. Empty when there are no more pages. description: Response message for SpaceService.ListSpaceMembers. ListSpacesResponse: type: object properties: spaces: type: array items: $ref: '#/components/schemas/Space' description: The spaces of which the caller is a member. nextPageToken: type: string description: A token to retrieve the next page. Empty when there are no more pages. description: Response message for SpaceService.ListSpaces. ListUsageLimitsResponse: type: object properties: usageLimits: type: array items: $ref: '#/components/schemas/UsageLimit' description: The usage limits, defaults first, then by user and metric. nextPageToken: type: string description: A token to retrieve the next page. Empty when there are no more pages. description: Response message for InstanceService.ListUsageLimits. ListUserNotificationsResponse: type: object properties: notifications: type: array items: $ref: '#/components/schemas/UserNotification' description: The notifications. nextPageToken: type: string description: A token to retrieve the next page. Empty when there are no more pages. description: Response message for UserService.ListUserNotifications. ListUserSettingsResponse: type: object properties: userSettings: type: array items: $ref: '#/components/schemas/UserSetting' description: The user settings. nextPageToken: type: string description: A token to retrieve the next page. Empty when there are no more pages. description: Response message for UserService.ListUserSettings. ListUserSpaceInvitationsResponse: type: object properties: spaceInvitations: type: array items: $ref: '#/components/schemas/SpaceInvitation' description: The pending invitations received by the user. nextPageToken: type: string description: A token to retrieve the next page. Empty when there are no more pages. description: Response message for SpaceService.ListUserSpaceInvitations. ListUserStatsResponse: type: object properties: userStats: type: array items: $ref: '#/components/schemas/UserStats' description: The statistics, one entry per user. description: Response message for UserService.ListUserStats. ListUserWebhooksResponse: type: object properties: webhooks: type: array items: $ref: '#/components/schemas/UserWebhook' description: The webhooks. description: Response message for UserService.ListUserWebhooks. ListUsersResponse: type: object properties: users: type: array items: $ref: '#/components/schemas/User' description: The users. nextPageToken: type: string description: A token to retrieve the next page. Empty when there are no more pages. description: Response message for UserService.ListUsers. Location: type: object properties: placeholder: type: string description: Optional. A human-readable label for the location. latitude: type: number description: Optional. The latitude of the location. format: double longitude: type: number description: Optional. The longitude of the location. format: double description: Location is a geographic location attached to a memo. MediaCaptureTime: type: object properties: localDateTime: type: string description: Local date and time without a time zone, formatted as YYYY-MM-DDTHH:mm:ss[.fraction]. utcOffset: type: string description: UTC offset formatted as Z or +/-HH:MM. description: MediaCaptureTime is the local time at which media was captured. MediaLocation: type: object properties: latitude: type: number description: WGS84 latitude in decimal degrees. Must be provided with longitude. format: double longitude: type: number description: WGS84 longitude in decimal degrees. Must be provided with latitude. format: double altitudeMeters: type: number description: Signed altitude in meters relative to sea level. format: double description: MediaLocation is the geographic location at which media was captured. MediaMetadata: type: object properties: width: type: integer description: Display-oriented width in pixels. Must be provided with height. format: int32 height: type: integer description: Display-oriented height in pixels. Must be provided with width. format: int32 photo: allOf: - $ref: '#/components/schemas/PhotoMetadata' description: Photo metadata, for image attachments. video: allOf: - $ref: '#/components/schemas/VideoMetadata' description: Video metadata, for video attachments. description: |- MediaMetadata contains normalized metadata explicitly supplied by a client. The service validates and stores this data but does not extract it from the media file. Memo: required: - content - visibility - state type: object properties: name: type: string description: |- Identifier. The resource name of the memo, where memo is the user-defined UID. Format: memos/{memo} creator: readOnly: true type: string description: |- Output only. The resource name of the creator. Format: users/{user} space: type: string description: |- Optional. The space in which the memo is placed. Every memo, including a comment, owns its placement independently. Format: spaces/{space} content: type: string description: |- Required. The content of the memo in Markdown. Must not exceed the instance's content length limit. location: allOf: - $ref: '#/components/schemas/Location' description: Optional. The location of the memo. visibility: enum: - VISIBILITY_UNSPECIFIED - PRIVATE - PROTECTED - PUBLIC - SPACE type: string description: |- Required. The visibility of the memo. Defaults to PRIVATE on creation when unspecified. SPACE requires the memo to be placed in a space. format: enum state: enum: - STATE_UNSPECIFIED - NORMAL - ARCHIVED type: string description: |- Required. The state of the memo. New memos are always NORMAL; change it with UpdateMemo. format: enum pinned: type: boolean description: |- Optional. Whether the memo is pinned. Ignored on creation; change it with UpdateMemo. attachments: type: array items: $ref: '#/components/schemas/Attachment' description: Optional. The attachments of the memo. Setting it replaces the full set. relations: type: array items: $ref: '#/components/schemas/MemoRelation' description: |- Optional. The relations of the memo in both directions. Only REFERENCE relations can be set; COMMENT relations are output only. reactions: readOnly: true type: array items: $ref: '#/components/schemas/Reaction' description: Output only. The reactions to the memo. parent: readOnly: true type: string description: |- Output only. The context memo of this COMMENT relation, if any. Its identity is returned even when the caller cannot read the parent. Fetch the parent independently; this field does not grant read access. Format: memos/{memo} tags: readOnly: true type: array items: type: string description: Output only. The tags extracted from the content. property: readOnly: true allOf: - $ref: '#/components/schemas/Memo_Property' description: Output only. The properties computed from the content. snippet: readOnly: true type: string description: Output only. A plain-text snippet of the content. createTime: type: string description: |- Optional. The creation time. Defaults to the current time when unset on creation. format: date-time updateTime: type: string description: |- Optional. The last update time. Defaults to the current time when unset on creation. format: date-time description: Memo is a Markdown note written by a user. MemoRelation: required: - memo - relatedMemo - type type: object properties: memo: allOf: - $ref: '#/components/schemas/MemoRelation_MemoRef' description: Required. The source memo of the relation. For COMMENT, the comment. relatedMemo: allOf: - $ref: '#/components/schemas/MemoRelation_MemoRef' description: |- Required. The target memo of the relation. For COMMENT, the memo being commented on. type: enum: - TYPE_UNSPECIFIED - REFERENCE - COMMENT type: string description: Required. The type of the relation. format: enum description: MemoRelation is a directed link from one memo to another. MemoRelation_MemoRef: required: - name type: object properties: name: type: string description: |- Required. The resource name of the memo. Format: memos/{memo} snippet: readOnly: true type: string description: |- Output only. A plain-text snippet of the memo content. Empty in ListMemos and ListMemoComments responses. description: MemoRef identifies a memo in a relation. MemoShare: type: object properties: name: type: string description: |- Identifier. The resource name of the share. The {share} segment is the opaque token used in the share URL. Format: memos/{memo}/shares/{share} createTime: readOnly: true type: string description: Output only. The creation time. format: date-time expireTime: type: string description: |- Optional. The time after which the share link stops working. Must be in the future when set. 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. MemoView: required: - title - filter type: object properties: name: type: string description: |- Identifier. The resource name of the memo view. Format: users/{user}/views/{view} title: type: string description: Required. The title of the memo view. filter: type: string description: |- Required. The CEL filter expression for the memo view, using the same grammar as the ListMemos `filter` argument. Reuse it by passing this value to ListMemos. icon: allOf: - $ref: '#/components/schemas/MemoView_Icon' description: |- Optional. Display icon. Omit when updating with the "icon" mask to reset to the default view icon. description: MemoView is a user's saved memo filter. MemoView_Icon: type: object properties: emoji: type: string description: A Unicode emoji sequence. lucide: type: string description: A canonical Lucide icon name, such as "leaf". Memo_Property: type: object properties: title: type: string description: The text of the H1 heading when it is the first block of the content. hasLink: type: boolean description: Whether the content contains a link. hasCode: type: boolean description: Whether the content contains inline code or a code block. hasTaskList: type: boolean description: Whether the content contains a task list. hasIncompleteTasks: type: boolean description: Whether the content contains an unchecked task. description: Property holds properties computed from the memo content. MotionMedia: type: object properties: family: enum: - MOTION_MEDIA_FAMILY_UNSPECIFIED - APPLE_LIVE_PHOTO - ANDROID_MOTION_PHOTO type: string description: The motion photo format. format: enum role: enum: - MOTION_MEDIA_ROLE_UNSPECIFIED - STILL - VIDEO - CONTAINER type: string description: The part this attachment plays in the motion photo. format: enum groupId: type: string description: |- Groups the attachments that belong to one motion photo. Required for client-supplied Apple Live Photo metadata; for an Android motion photo it is the attachment's own ID. presentationTimestampUs: type: string description: Presentation timestamp of the still frame within the video, in microseconds. hasEmbeddedVideo: type: boolean description: Whether the file embeds the motion video, as in an Android motion photo container. description: MotionMedia links the parts of a motion photo. NotificationSetting_EmailSetting: type: object properties: enabled: type: boolean description: Whether email notifications are enabled. smtpHost: type: string description: The SMTP server host. smtpPort: type: integer description: The SMTP server port. format: int32 smtpUsername: type: string description: The SMTP username. smtpPassword: writeOnly: true type: string description: |- Input only. The SMTP password. Never returned. An empty value keeps the stored password, unless the host, port, username or encryption settings change. useTls: type: boolean description: Whether to use STARTTLS. useSsl: type: boolean description: Whether to use implicit SSL/TLS. fromEmail: type: string description: The sender email address. fromName: type: string description: The sender display name. replyTo: type: string description: The Reply-To email address. description: EmailSetting is the SMTP configuration for notification emails. OAuth2Config: type: object properties: clientId: type: string description: The OAuth2 client ID. clientSecret: type: string description: 'The OAuth2 client secret. Write-only: it is never returned in responses.' authUrl: type: string description: The authorization endpoint URL. tokenUrl: type: string description: The token endpoint URL, used to exchange the authorization code for an access token. userInfoUrl: type: string description: The user info endpoint URL, used to fetch the claims of the signed-in user. scopes: type: array items: type: string description: The scopes to request. fieldMapping: allOf: - $ref: '#/components/schemas/FieldMapping' description: How user info claims map to user fields. description: OAuth2Config is the configuration of an OAuth2 identity provider. PersonalAccessToken: type: object properties: name: type: string description: |- Identifier. The resource name of the personal access token. Format: users/{user}/personalAccessTokens/{personal_access_token} description: type: string description: Optional. The description of the token. createTime: readOnly: true type: string description: Output only. The creation time. format: date-time expireTime: type: string description: Optional. The expiration time. Unset means the token never expires. format: date-time lastUseTime: readOnly: true type: string description: Output only. The time the token was last used. format: date-time description: |- PersonalAccessToken is a long-lived token for API and script access. PATs are distinct from short-lived JWT access tokens used for session authentication. PhotoMetadata: type: object properties: captureTime: allOf: - $ref: '#/components/schemas/MediaCaptureTime' description: Capture time as recorded by the source media. location: allOf: - $ref: '#/components/schemas/MediaLocation' description: Geographic location recorded by the source media. sourceExifOrientation: type: integer description: |- EXIF orientation value from 1 through 8 as recorded by the source file. This value is informational and must not be reapplied to the stored attachment; width and height already describe its display-oriented dimensions. format: int32 cameraMake: type: string description: The camera manufacturer. cameraModel: type: string description: The camera model. lensModel: type: string description: The lens model. fNumber: type: number description: The aperture f-number. format: double exposureTimeSeconds: type: number description: The exposure time in seconds. format: double iso: type: integer description: The ISO sensitivity. format: int32 focalLengthMm: type: number description: The focal length in millimeters. format: double description: PhotoMetadata is metadata recorded by the source of a photo. Reaction: required: - reactionType type: object properties: name: readOnly: true type: string description: |- Identifier. The resource name of the reaction. Format: memos/{memo}/reactions/{reaction} creator: readOnly: true type: string description: |- Output only. The resource name of the creator. Format: users/{user} reactionType: type: string description: "Required. The reaction, such as an emoji (\"\U0001F44D\", \"❤️\", \"\U0001F604\")." createTime: readOnly: true type: string description: Output only. The creation time. format: date-time description: Reaction is a reaction a user leaves on a memo. RefreshTokenRequest: type: object properties: {} description: |- Request message for AuthService.RefreshToken. It has no fields: the refresh token is read from the HttpOnly cookie. RefreshTokenResponse: type: object properties: accessToken: type: string description: The new short-lived access token. accessTokenExpireTime: type: string description: When the new access token expires. format: date-time description: Response message for AuthService.RefreshToken. 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 complete set of attachments for the memo. description: Request message for MemoService.SetMemoAttachments. 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 complete set of REFERENCE relations for the memo. COMMENT relations are rejected. description: Request message for MemoService.SetMemoRelations. SignInRequest: type: object properties: passwordCredentials: allOf: - $ref: '#/components/schemas/SignInRequest_PasswordCredentials' description: Username and password credentials. ssoCredentials: allOf: - $ref: '#/components/schemas/SignInRequest_SsoCredentials' description: SSO credentials from an OAuth2 authorization code flow. description: Request message for AuthService.SignIn. SignInRequest_PasswordCredentials: required: - username - password type: object properties: username: type: string description: Required. The username to sign in with. password: type: string description: Required. The password to sign in with. description: |- PasswordCredentials are a username and password. Regular users cannot use them when the instance disallows password sign-in. SignInRequest_SsoCredentials: required: - identityProvider - code - redirectUri type: object properties: identityProvider: type: string description: |- Required. The resource name of the identity provider. Format: identity-providers/{idp} code: type: string description: Required. The authorization code returned by the identity provider. redirectUri: type: string description: Required. The redirect URI used in the authorization request. codeVerifier: type: string description: Optional. The PKCE code verifier (RFC 7636). Set it when the authorization request used a code challenge. description: |- SsoCredentials are the result of an OAuth2 authorization code flow with an identity provider. A first sign-in creates a local user unless the instance disallows user registration. SignInResponse: type: object properties: user: allOf: - $ref: '#/components/schemas/User' description: The signed-in user. accessToken: type: string description: |- The short-lived access token for API requests. Keep it in memory only, not in localStorage. accessTokenExpireTime: type: string description: |- When the access token expires. Call RefreshToken before this time. format: date-time description: Response message for AuthService.SignIn. Space: required: - title type: object properties: name: type: string description: |- Identifier. The resource name of the space. Format: spaces/{space} title: type: string description: Required. The human-readable title. description: type: string description: Optional. A description of the space. icon: allOf: - $ref: '#/components/schemas/Space_Icon' description: |- Optional. The display icon. Omit it when updating with the "icon" mask to reset to the default space mark. currentUserRole: readOnly: true enum: - ROLE_UNSPECIFIED - ADMIN - USER type: string description: |- Output only. The authenticated user's membership role in this space. ROLE_UNSPECIFIED when this space is exposed as metadata only. format: enum memberCount: readOnly: true type: integer description: |- Output only. The number of accepted members in this space. Pending invitations are excluded. Zero when this space is exposed as metadata only. format: int32 description: Space is a collaboration boundary for placed memos. SpaceInvitation: required: - invitee - role type: object properties: name: type: string description: |- Identifier. The resource name of the invitation. The invitation segment is the invitee's username. Format: spaces/{space}/invitations/{invitation} invitee: type: string description: |- Required. The invited user. Format: users/{user} role: enum: - ROLE_UNSPECIFIED - ADMIN - USER type: string description: Required. The role the user receives after accepting the invitation. format: enum space: readOnly: true allOf: - $ref: '#/components/schemas/Space' description: |- Output only. The space the user is invited to, as metadata only. This lets an invitee understand the invitation without membership-based GetSpace access. description: SpaceInvitation is a pending invitation for an existing user to join a space. SpaceMember: required: - user - role type: object properties: name: type: string description: |- Identifier. The resource name of the membership. The member segment is the member's username. Format: spaces/{space}/members/{member} user: type: string description: |- Required. The member user. Format: users/{user} role: enum: - ROLE_UNSPECIFIED - ADMIN - USER type: string description: Required. The member's role within this space. format: enum description: SpaceMember is a user's membership and governance role in a space. Space_Icon: type: object properties: emoji: type: string description: A Unicode emoji sequence. lucide: type: string description: A canonical Lucide icon name, such as "leaf". description: Icon is the display icon of a space. 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: endpoint: type: string description: The S3 endpoint URL. region: type: string description: The S3 region. bucket: type: string description: The S3 bucket. accessKeyId: type: string description: The S3 access key ID. accessKeySecret: writeOnly: true type: string description: Input only. The S3 access key secret. Never returned; an empty value keeps the stored secret. usePathStyle: type: boolean description: Whether to use path-style addressing instead of virtual-hosted-style. insecureSkipTlsVerify: type: boolean description: |- Whether to skip TLS certificate verification when connecting to the S3 endpoint. Only enable this for trusted endpoints that use a self-signed certificate; it removes protection against man-in-the-middle attacks. description: |- S3Config is the legacy S3 configuration, retained for compatibility with existing clients. Reference: https://developers.cloudflare.com/r2/examples/aws/aws-sdk-go/ Storage_S3Config: type: object properties: endpoint: type: string description: The S3 endpoint URL. region: type: string description: The S3 region. bucket: type: string description: The S3 bucket. accessKeyId: type: string description: The S3 access key ID. accessKeySecret: writeOnly: true type: string description: Input only. The S3 access key secret. Never returned; an empty value keeps the stored secret. usePathStyle: type: boolean description: Whether to use path-style addressing instead of virtual-hosted-style. insecureSkipTlsVerify: type: boolean description: |- Whether to skip TLS certificate verification when connecting to the S3 endpoint. Only enable this for trusted endpoints that use a self-signed certificate; it removes protection against man-in-the-middle attacks. description: |- S3Config is the configuration of an S3-compatible object store. Reference: https://developers.cloudflare.com/r2/examples/aws/aws-sdk-go/ TestInstanceEmailSettingRequest: type: object properties: email: allOf: - $ref: '#/components/schemas/NotificationSetting_EmailSetting' description: |- Optional. The SMTP settings to test. If omitted, the stored notification email setting is used. An empty password reuses the stored password when the connection settings are unchanged. recipientEmail: type: string description: Optional. The recipient email address. If omitted, the current user's email address is used. description: Request message for InstanceService.TestInstanceEmailSetting. TranscribeRequest: required: - audio type: object properties: audio: allOf: - $ref: '#/components/schemas/TranscriptionAudio' description: Required. The audio to transcribe. description: Request message for AIService.Transcribe. TranscribeResponse: type: object properties: text: type: string description: The transcribed text. description: Response message for AIService.Transcribe. TranscriptionAudio: type: object properties: content: writeOnly: true type: string description: Input only. Inline audio bytes, at most 25 MiB. format: bytes uri: type: string description: URI of the audio content. Reserved for future use; the service rejects requests that set it. filename: type: string description: Optional. The uploaded filename, at most 255 characters. contentType: type: string description: Optional. The MIME type of the audio. If empty, the service detects it from the content. description: TranscriptionAudio is the audio input for a transcription. UploadAttachmentRequest: required: - writeOffset type: object properties: spec: allOf: - $ref: '#/components/schemas/UploadAttachmentSpec' description: Starts a new upload. The same call may also carry data and finish_write. uploadId: type: string description: Continues the upload identified by a previous response. writeOffset: type: string description: |- Required. Zero-based byte offset at which data is written. Must equal the committed size, except when retrying the most recently accepted chunk with identical bytes and offset, which is accepted without writing again. data: type: string description: |- Optional. File bytes, at most max_chunk_size long. With no data and finish_write false, the call reports progress without writing, and write_offset is ignored. format: bytes finishWrite: type: boolean description: |- Optional. Finalize the upload after writing data. The committed size must then equal total_size. Any later call for the same upload_id returns the created attachment. description: Request message for AttachmentService.UploadAttachment. UploadAttachmentResponse: type: object properties: uploadId: type: string description: Opaque ID for subsequent calls. This is not a resource name. committedSize: type: string description: Number of file bytes committed so far. maxChunkSize: type: integer description: Maximum number of data bytes accepted in one call. format: int32 attachment: allOf: - $ref: '#/components/schemas/Attachment' description: The created attachment. Set once the upload has been finalized. description: Response message for AttachmentService.UploadAttachment. UploadAttachmentSpec: required: - attachment type: object properties: attachment: allOf: - $ref: '#/components/schemas/Attachment' description: Required. Metadata for the attachment to create. content must be empty; file bytes are sent in data. attachmentId: type: string description: |- Optional. The ID to use for the attachment. If empty, a unique ID is generated. Format: ^[a-zA-Z0-9]([a-zA-Z0-9-]{0,34}[a-zA-Z0-9])?$ totalSize: type: string description: Optional. Total size of the file in bytes before media processing. Zero represents an empty file. description: UploadAttachmentSpec describes the attachment that a new upload creates. UpsertMemoReactionRequest: required: - parent - reaction type: object properties: parent: 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. Only reaction_type is used. description: Request message for MemoService.UpsertMemoReaction. UsageLimit: required: - metric - value type: object properties: name: type: string description: |- Identifier. The resource name of the usage limit. Format: usageLimits/{usage_limit} metric: enum: - METRIC_UNSPECIFIED - MEMOS - STORAGE_BYTES - UPLOAD_BYTES type: string description: Required. Immutable. What is limited. format: enum user: type: string description: |- Optional. Immutable. The user the limit applies to. Empty means every user. Format: users/{user} value: type: string description: |- Required. The limit. Must not be negative. 0 means unlimited for MEMOS and STORAGE_BYTES, and no extra limit for UPLOAD_BYTES. createTime: readOnly: true type: string description: Output only. The creation time. format: date-time updateTime: readOnly: true type: string description: Output only. The last update time. format: date-time description: |- UsageLimit sets one limit for every user, or for one user. When both exist for the same metric, the limit for the user applies to that user. User: required: - username - role - state type: object properties: name: type: string description: |- Identifier. The resource name of the user. {user} is the username. Format: users/{user} username: type: string description: Required. The unique username, used to sign in. displayName: type: string description: Optional. The display name of the user. email: type: string description: |- Optional. The email address of the user. Stored trimmed and lowercased; empty means no address. An address belongs to at most one user on the instance, so writes that would reuse one fail with ALREADY_EXISTS. Returned only to the user and to admins. avatarUrl: type: string description: |- Optional. The avatar URL of the user. An avatar set as a data URI (PNG, JPEG, GIF or WebP, at most 2 MiB) is returned as a file server URL. description: type: string description: Optional. The description of the user. password: writeOnly: true type: string description: Input only. The password of the user. Never returned. role: enum: - ROLE_UNSPECIFIED - ADMIN - USER type: string description: Required. The role of the user. Only admins can change it. format: enum state: enum: - STATE_UNSPECIFIED - NORMAL - ARCHIVED type: string description: Required. The state of the user. Only admins can change it. 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 description: User is an account on the instance. UserNotification: type: object properties: name: readOnly: true type: string description: |- Identifier. The resource name of the notification. Format: users/{user}/notifications/{notification} sender: readOnly: true type: string description: |- Output only. The user who caused the notification. Format: users/{user} senderUser: readOnly: true allOf: - $ref: '#/components/schemas/User' description: Output only. The sender user details. type: readOnly: true enum: - TYPE_UNSPECIFIED - MEMO_COMMENT - MEMO_MENTION - SPACE_INVITATION type: string description: Output only. The type of the notification. format: enum memoComment: readOnly: true allOf: - $ref: '#/components/schemas/UserNotification_MemoCommentPayload' description: Output only. Details of a MEMO_COMMENT notification. memoMention: readOnly: true allOf: - $ref: '#/components/schemas/UserNotification_MemoMentionPayload' description: Output only. Details of a MEMO_MENTION notification. spaceInvitation: readOnly: true allOf: - $ref: '#/components/schemas/UserNotification_SpaceInvitationPayload' description: Output only. Details of a SPACE_INVITATION notification. status: enum: - STATUS_UNSPECIFIED - UNREAD - ARCHIVED type: string description: Optional. The status of the notification. format: enum createTime: readOnly: true type: string description: Output only. The creation timestamp. format: date-time description: UserNotification is a notification delivered to a user. UserNotification_MemoCommentPayload: type: object properties: memo: type: string description: |- The comment memo. Format: memos/{memo} relatedMemo: type: string description: |- The memo that was commented on. Format: memos/{memo} memoSnippet: type: string description: Preview text of the comment memo. relatedMemoSnippet: type: string description: Preview text of the related memo. description: MemoCommentPayload holds the details of a MEMO_COMMENT notification. 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. description: MemoMentionPayload holds the details of a MEMO_MENTION notification. UserNotification_SpaceInvitationPayload: type: object properties: spaceInvitation: type: string description: |- The invitation. Format: spaces/{space}/invitations/{invitation} space: allOf: - $ref: '#/components/schemas/Space' description: The read-only Space summary carried by the invitation. role: enum: - ROLE_UNSPECIFIED - ADMIN - USER type: string description: The role the invitation offers. format: enum state: enum: - STATE_UNSPECIFIED - PENDING - ACCEPTED type: string description: The current state of the invitation for the receiver. format: enum description: |- SpaceInvitationPayload holds the details of a SPACE_INVITATION notification. UserSetting: type: object properties: name: type: string description: |- Identifier. The resource name of the user setting. {setting} is the setting key, such as GENERAL. Format: users/{user}/settings/{setting} generalSetting: allOf: - $ref: '#/components/schemas/UserSetting_GeneralSetting' description: The value of the GENERAL setting. webhooksSetting: allOf: - $ref: '#/components/schemas/UserSetting_WebhooksSetting' description: The value of the WEBHOOKS setting. tagsSetting: allOf: - $ref: '#/components/schemas/UserSetting_TagsSetting' description: The value of the TAGS setting. description: UserSetting is one group of a user's preferences, identified by its key. UserSetting_GeneralSetting: type: object properties: locale: type: string description: Optional. The preferred locale of the user. memoVisibility: type: string description: |- Optional. The default visibility of new memos: PRIVATE, PROTECTED or PUBLIC. theme: type: string description: |- Optional. The preferred theme of the user. This references a CSS file in the web/public/themes/ directory. If not set, the default theme is used. saveMediaMetadata: type: boolean description: |- Optional. Whether the official client should save metadata from future media uploads. description: GeneralSetting holds general user preferences. UserSetting_TagMetadata: type: object properties: backgroundColor: allOf: - $ref: '#/components/schemas/Color' description: |- Optional. The background color of the tag label. When unset, the default tag color is used. blurContent: type: boolean description: Optional. Whether memos with this tag have their content blurred. description: TagMetadata holds user-specific display rules for a tag. UserSetting_TagsSetting: type: object properties: tags: type: object additionalProperties: $ref: '#/components/schemas/UserSetting_TagMetadata' description: |- Optional. Map of tag name pattern to tag metadata. Each key is treated as an anchored regular expression (^pattern$). description: TagsSetting holds user-specific tag metadata. UserSetting_WebhooksSetting: type: object properties: webhooks: type: array items: $ref: '#/components/schemas/UserWebhook' description: The user's webhooks. description: WebhooksSetting holds a user's webhooks. UserStats: type: object properties: name: type: string description: |- Identifier. The resource name of the user statistics singleton. Format: users/{user}/stats totalMemoCount: type: integer description: The number of counted memos. format: int32 memoTypeStats: allOf: - $ref: '#/components/schemas/UserStats_MemoTypeStats' description: The number of counted memos by content type. tagCounts: type: object additionalProperties: type: integer format: int32 description: The number of counted memos per tag. pinnedMemos: type: array items: type: string description: |- The pinned memos among the counted memos. Format: memos/{memo} memoCreatedTimestamps: type: array items: type: string format: date-time description: The creation timestamps of the counted memos, one per memo. memoUpdatedTimestamps: type: array items: type: string format: date-time description: |- The latest update timestamps of the counted memos (one per memo, mirrors memo_created_timestamps). Used by the activity heatmap when the client's view is set to update_time basis. attachmentStorageBytes: readOnly: true type: string description: |- Output only. Total persisted attachment size in bytes, including unlinked uploads and attachments in all spaces. Excludes temporary uploads and derived files. Returned only by GetUserStats for the authenticated user's own stats, independently of the request's memo filter. description: UserStats is a summary of a user's memos. Comments are not counted. UserStats_MemoTypeStats: type: object properties: linkCount: type: integer description: The number of memos that contain a link. format: int32 codeCount: type: integer description: The number of memos that contain code. format: int32 todoCount: type: integer description: The number of memos that contain a task list. format: int32 undoCount: type: integer description: The number of memos that contain incomplete tasks. format: int32 description: MemoTypeStats counts memos by the kind of content they contain. UserUsage: type: object properties: name: type: string description: |- Identifier. The resource name of the user usage singleton. Format: users/{user}/usage memoCount: type: string description: |- The number of memos the user created, including comments, archived memos, and memos in Spaces. storageBytes: type: string description: |- The total size in bytes of the user's uploads, including uploads not attached to a memo. External links do not count. memosLimit: allOf: - $ref: '#/components/schemas/UserUsage_EffectiveLimit' description: The limit on memo_count. storageBytesLimit: allOf: - $ref: '#/components/schemas/UserUsage_EffectiveLimit' description: The limit on storage_bytes. uploadBytesLimit: allOf: - $ref: '#/components/schemas/UserUsage_EffectiveLimit' description: |- The limit on the size of one uploaded file. It applies only when it is lower than the instance upload limit. description: UserUsage is a user's usage and the usage limits in effect for the user. UserUsage_EffectiveLimit: type: object properties: value: type: string description: The limit. 0 means unlimited, or no extra limit for upload_bytes_limit. usageLimit: type: string description: |- The usage limit the value comes from: the user's own limit, or else the default. Empty when no usage limit applies. Format: usageLimits/{usage_limit} description: |- EffectiveLimit is the limit in effect for one metric, and where it comes from. UserWebhook: type: object properties: name: type: string description: |- Identifier. The resource name of the webhook. Format: users/{user}/webhooks/{webhook} displayName: type: string description: A human-readable name for the webhook. url: type: string description: The URL the webhook request is sent to. Required on create. signingSecret: writeOnly: true type: string description: |- Input only. The secret used to HMAC-SHA256 sign the webhook request body. Never returned; use GetUserWebhookSigningSecret to read it. signingSecretSet: readOnly: true type: boolean description: Output only. Whether a signing secret is configured for this webhook. createTime: readOnly: true type: string description: Output only. The creation timestamp. Currently never set. format: date-time updateTime: readOnly: true type: string description: Output only. The last update timestamp. Currently never set. format: date-time description: UserWebhook is a webhook owned by a user. VideoMetadata: type: object properties: durationSeconds: type: number description: The duration of the video in seconds. format: double description: VideoMetadata is metadata recorded by the source of a video. tags: - name: AIService description: AIService runs AI tasks through the AI providers configured on the instance. - name: AttachmentService description: AttachmentService manages files attached to memos. - name: AuthService description: 'AuthService manages sign-in sessions: it issues, refreshes, and revokes the tokens that authenticate API calls.' - name: IdentityProviderService description: IdentityProviderService manages the external identity providers users can sign in with. - name: InstanceService description: InstanceService exposes the instance profile, instance-wide settings and usage statistics. - name: MemoService description: |- MemoService manages memos and their attachments, relations, comments, reactions, and share links. - name: SpaceService description: SpaceService manages collaborative spaces, their members and their invitations. - name: UserService description: |- UserService manages users and the resources they own: settings, statistics, memo views, notifications, webhooks, linked identities, personal access tokens, and memo export files.