# Generated with protoc-gen-openapi # https://github.com/google/gnostic/tree/master/cmd/protoc-gen-openapi openapi: 3.0.3 info: title: "" version: 0.0.1 paths: /api/v1/attachments: get: tags: - AttachmentService description: ListAttachments lists all attachments. operationId: AttachmentService_ListAttachments parameters: - name: pageSize in: query description: |- Optional. The maximum number of attachments to return. The service may return fewer than this value. If unspecified, at most 50 attachments will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000. schema: type: integer format: int32 - name: pageToken in: query description: |- Optional. A page token, received from a previous `ListAttachments` call. Provide this to retrieve the subsequent page. schema: type: string - name: filter in: query description: |- Optional. Filter to apply to the list results. Example: "mime_type==\"image/png\"" or "filename.contains(\"test\")" Supported operators: =, !=, <, <=, >, >=, : (contains), in Supported fields: filename, mime_type, create_time, memo schema: type: string - name: orderBy in: query description: |- Optional. The order to sort results by. Example: "create_time desc" or "filename asc" schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ListAttachmentsResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' post: tags: - AttachmentService description: CreateAttachment creates a new attachment. operationId: AttachmentService_CreateAttachment parameters: - name: attachmentId in: query description: |- Optional. The attachment ID to use for this attachment. If empty, a unique ID will be generated. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/Attachment' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Attachment' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/attachments/{attachment}: get: tags: - AttachmentService description: GetAttachment returns an attachment by name. operationId: AttachmentService_GetAttachment parameters: - name: attachment in: path description: The attachment id. required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Attachment' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' delete: tags: - AttachmentService description: DeleteAttachment deletes an attachment by name. operationId: AttachmentService_DeleteAttachment parameters: - name: attachment in: path description: The attachment id. required: true schema: type: string responses: "200": description: OK content: {} default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' patch: tags: - AttachmentService description: UpdateAttachment updates an attachment. operationId: AttachmentService_UpdateAttachment parameters: - name: attachment in: path description: The attachment id. required: true schema: type: string - name: updateMask in: query description: Required. The list of fields to update. schema: type: string format: field-mask requestBody: content: application/json: schema: $ref: '#/components/schemas/Attachment' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Attachment' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/attachments:batchDelete: post: tags: - AttachmentService description: BatchDeleteAttachments deletes multiple attachments in one request. operationId: AttachmentService_BatchDeleteAttachments requestBody: content: application/json: schema: $ref: '#/components/schemas/BatchDeleteAttachmentsRequest' required: true responses: "200": description: OK content: {} default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/auth/me: get: tags: - AuthService description: |- GetCurrentUser returns the authenticated user's information. Validates the access token and returns user details. Similar to OIDC's /userinfo endpoint. operationId: AuthService_GetCurrentUser responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/GetCurrentUserResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/auth/refresh: post: tags: - AuthService description: |- RefreshToken exchanges a valid refresh token for a new access token. The refresh token is read from the HttpOnly cookie. Returns a new short-lived access token. operationId: AuthService_RefreshToken requestBody: content: application/json: schema: $ref: '#/components/schemas/RefreshTokenRequest' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/RefreshTokenResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/auth/signin: post: tags: - AuthService description: |- SignIn authenticates a user with credentials and returns tokens. On success, returns an access token and sets a refresh token cookie. Supports password-based and SSO authentication methods. operationId: AuthService_SignIn requestBody: content: application/json: schema: $ref: '#/components/schemas/SignInRequest' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/SignInResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/auth/signout: post: tags: - AuthService description: |- SignOut terminates the user's authentication. Revokes the refresh token and clears the authentication cookie. operationId: AuthService_SignOut responses: "200": description: OK content: {} default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/identity-providers: get: tags: - IdentityProviderService description: ListIdentityProviders lists identity providers. operationId: IdentityProviderService_ListIdentityProviders responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ListIdentityProvidersResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' post: tags: - IdentityProviderService description: CreateIdentityProvider creates an identity provider. operationId: IdentityProviderService_CreateIdentityProvider parameters: - name: identityProviderId in: query description: |- Optional. The ID to use for the identity provider, which will become the final component of the resource name. If not provided, the system will generate one. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/IdentityProvider' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/IdentityProvider' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/identity-providers/{identity-provider}: get: tags: - IdentityProviderService description: GetIdentityProvider gets an identity provider. operationId: IdentityProviderService_GetIdentityProvider parameters: - name: identity-provider in: path description: The identity-provider id. required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/IdentityProvider' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' delete: tags: - IdentityProviderService description: DeleteIdentityProvider deletes an identity provider. operationId: IdentityProviderService_DeleteIdentityProvider parameters: - name: identity-provider in: path description: The identity-provider id. required: true schema: type: string responses: "200": description: OK content: {} default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' patch: tags: - IdentityProviderService description: UpdateIdentityProvider updates an identity provider. operationId: IdentityProviderService_UpdateIdentityProvider parameters: - name: identity-provider in: path description: The identity-provider id. required: true schema: type: string - name: updateMask in: query description: |- Required. The update mask applies to the resource. Only the top level fields of IdentityProvider are supported. schema: type: string format: field-mask requestBody: content: application/json: schema: $ref: '#/components/schemas/IdentityProvider' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/IdentityProvider' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/instance/profile: get: tags: - InstanceService description: Gets the instance profile. operationId: InstanceService_GetInstanceProfile responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/InstanceProfile' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/instance/{instance}/*: get: tags: - InstanceService description: Gets an instance setting. operationId: InstanceService_GetInstanceSetting parameters: - name: instance in: path description: The instance id. required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/InstanceSetting' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' patch: tags: - InstanceService description: Updates an instance setting. operationId: InstanceService_UpdateInstanceSetting parameters: - name: instance in: path description: The instance id. required: true schema: type: string - name: updateMask in: query description: The list of fields to update. schema: type: string format: field-mask requestBody: content: application/json: schema: $ref: '#/components/schemas/InstanceSetting' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/InstanceSetting' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/memos: get: tags: - MemoService description: ListMemos lists memos with pagination and filter. operationId: MemoService_ListMemos parameters: - name: pageSize in: query description: |- Optional. The maximum number of memos to return. The service may return fewer than this value. If unspecified, at most 50 memos will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000. schema: type: integer format: int32 - name: pageToken in: query description: |- Optional. A page token, received from a previous `ListMemos` call. Provide this to retrieve the subsequent page. schema: type: string - name: state in: query description: |- Optional. The state of the memos to list. Default to `NORMAL`. Set to `ARCHIVED` to list archived memos. schema: enum: - STATE_UNSPECIFIED - NORMAL - ARCHIVED type: string format: enum - name: orderBy in: query description: |- Optional. The order to sort results by. Default to "display_time desc". Supports comma-separated list of fields following AIP-132. Example: "pinned desc, display_time desc" or "create_time asc" Supported fields: pinned, display_time, create_time, update_time, name schema: type: string - name: filter in: query description: |- Optional. Filter to apply to the list results. Filter is a CEL expression to filter memos. Refer to `Shortcut.filter`. schema: type: string - name: showDeleted in: query description: Optional. If true, show deleted memos in the response. schema: type: boolean responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ListMemosResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' post: tags: - MemoService description: CreateMemo creates a memo. operationId: MemoService_CreateMemo parameters: - name: memoId in: query description: |- Optional. The memo ID to use for this memo. If empty, a unique ID will be generated. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/Memo' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Memo' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/memos/{memo}: get: tags: - MemoService description: GetMemo gets a memo. operationId: MemoService_GetMemo parameters: - name: memo in: path description: The memo id. required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Memo' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' delete: tags: - MemoService description: DeleteMemo deletes a memo. operationId: MemoService_DeleteMemo parameters: - name: memo in: path description: The memo id. required: true schema: type: string - name: force in: query description: Optional. If set to true, the memo will be deleted even if it has associated data. schema: type: boolean responses: "200": description: OK content: {} default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' patch: tags: - MemoService description: UpdateMemo updates a memo. operationId: MemoService_UpdateMemo parameters: - name: memo in: path description: The memo id. required: true schema: type: string - name: updateMask in: query description: Required. The list of fields to update. schema: type: string format: field-mask requestBody: content: application/json: schema: $ref: '#/components/schemas/Memo' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Memo' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/memos/{memo}/attachments: get: tags: - MemoService description: ListMemoAttachments lists attachments for a memo. operationId: MemoService_ListMemoAttachments parameters: - name: memo in: path description: The memo id. required: true schema: type: string - name: pageSize in: query description: Optional. The maximum number of attachments to return. schema: type: integer format: int32 - name: pageToken in: query description: Optional. A page token for pagination. schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ListMemoAttachmentsResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' patch: tags: - MemoService description: SetMemoAttachments sets attachments for a memo. operationId: MemoService_SetMemoAttachments parameters: - name: memo in: path description: The memo id. required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/SetMemoAttachmentsRequest' required: true responses: "200": description: OK content: {} default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/memos/{memo}/comments: get: tags: - MemoService description: ListMemoComments lists comments for a memo. operationId: MemoService_ListMemoComments parameters: - name: memo in: path description: The memo id. required: true schema: type: string - name: pageSize in: query description: Optional. The maximum number of comments to return. schema: type: integer format: int32 - name: pageToken in: query description: Optional. A page token for pagination. schema: type: string - name: orderBy in: query description: Optional. The order to sort results by. schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ListMemoCommentsResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' post: tags: - MemoService description: CreateMemoComment creates a comment for a memo. operationId: MemoService_CreateMemoComment parameters: - name: memo in: path description: The memo id. required: true schema: type: string - name: commentId in: query description: Optional. The comment ID to use. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/Memo' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Memo' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/memos/{memo}/reactions: get: tags: - MemoService description: ListMemoReactions lists reactions for a memo. operationId: MemoService_ListMemoReactions parameters: - name: memo in: path description: The memo id. required: true schema: type: string - name: pageSize in: query description: Optional. The maximum number of reactions to return. schema: type: integer format: int32 - name: pageToken in: query description: Optional. A page token for pagination. schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ListMemoReactionsResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' post: tags: - MemoService description: UpsertMemoReaction upserts a reaction for a memo. operationId: MemoService_UpsertMemoReaction parameters: - name: memo in: path description: The memo id. required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/UpsertMemoReactionRequest' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Reaction' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/memos/{memo}/reactions/{reaction}: delete: tags: - MemoService description: DeleteMemoReaction deletes a reaction for a memo. operationId: MemoService_DeleteMemoReaction parameters: - name: memo in: path description: The memo id. required: true schema: type: string - name: reaction in: path description: The reaction id. required: true schema: type: string responses: "200": description: OK content: {} default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/memos/{memo}/relations: get: tags: - MemoService description: ListMemoRelations lists relations for a memo. operationId: MemoService_ListMemoRelations parameters: - name: memo in: path description: The memo id. required: true schema: type: string - name: pageSize in: query description: Optional. The maximum number of relations to return. schema: type: integer format: int32 - name: pageToken in: query description: Optional. A page token for pagination. schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ListMemoRelationsResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' patch: tags: - MemoService description: SetMemoRelations sets relations for a memo. operationId: MemoService_SetMemoRelations parameters: - name: memo in: path description: The memo id. required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/SetMemoRelationsRequest' required: true responses: "200": description: OK content: {} default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/memos/{memo}/shares: get: tags: - MemoService description: ListMemoShares lists all share links for a memo. Requires authentication as the memo creator. operationId: MemoService_ListMemoShares parameters: - name: memo in: path description: The memo id. required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ListMemoSharesResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' post: tags: - MemoService description: CreateMemoShare creates a share link for a memo. Requires authentication as the memo creator. operationId: MemoService_CreateMemoShare parameters: - name: memo in: path description: The memo id. required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/MemoShare' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/MemoShare' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/memos/{memo}/shares/{share}: delete: tags: - MemoService description: DeleteMemoShare revokes a share link. Requires authentication as the memo creator. operationId: MemoService_DeleteMemoShare parameters: - name: memo in: path description: The memo id. required: true schema: type: string - name: share in: path description: The share id. required: true schema: type: string responses: "200": description: OK content: {} default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/shares/{shareId}: get: tags: - MemoService description: |- GetMemoByShare resolves a share token to its memo. No authentication required. Returns NOT_FOUND if the token is invalid or expired. operationId: MemoService_GetMemoByShare parameters: - name: shareId in: path description: Required. The share token extracted from the share URL (/s/{share_id}). required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Memo' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/users: get: tags: - UserService description: ListUsers returns a list of users. operationId: UserService_ListUsers parameters: - name: pageSize in: query description: |- Optional. The maximum number of users to return. The service may return fewer than this value. If unspecified, at most 50 users will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000. schema: type: integer format: int32 - name: pageToken in: query description: |- Optional. A page token, received from a previous `ListUsers` call. Provide this to retrieve the subsequent page. schema: type: string - name: filter in: query description: |- Optional. Filter to apply to the list results. Example: "username == 'steven'" Supported operators: == Supported fields: username schema: type: string - name: showDeleted in: query description: Optional. If true, show deleted users in the response. schema: type: boolean responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ListUsersResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' post: tags: - UserService description: CreateUser creates a new user. operationId: UserService_CreateUser parameters: - name: userId in: query description: |- Optional. The user ID to use for this user. If empty, a unique ID will be generated. Must match the pattern [a-z0-9-]+ schema: type: string - name: validateOnly in: query description: Optional. If set, validate the request but don't actually create the user. schema: type: boolean - name: requestId in: query description: |- Optional. An idempotency token that can be used to ensure that multiple requests to create a user have the same result. schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/User' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/User' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/users/{user}: get: tags: - UserService description: |- GetUser gets a user by username. Format: users/{username} (e.g., users/steven) operationId: UserService_GetUser parameters: - name: user in: path description: The user id. required: true schema: type: string - name: readMask in: query description: |- Optional. The fields to return in the response. If not specified, all fields are returned. schema: type: string format: field-mask responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/User' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' delete: tags: - UserService description: DeleteUser deletes a user. operationId: UserService_DeleteUser parameters: - name: user in: path description: The user id. required: true schema: type: string - name: force in: query description: Optional. If set to true, the user will be deleted even if they have associated data. schema: type: boolean responses: "200": description: OK content: {} default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' patch: tags: - UserService description: UpdateUser updates a user. operationId: UserService_UpdateUser parameters: - name: user in: path description: The user id. required: true schema: type: string - name: updateMask in: query description: Required. The list of fields to update. schema: type: string format: field-mask - name: allowMissing in: query description: Optional. If set to true, allows updating sensitive fields. schema: type: boolean requestBody: content: application/json: schema: $ref: '#/components/schemas/User' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/User' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/users/{user}/notifications: get: tags: - UserService description: ListUserNotifications lists notifications for a user. operationId: UserService_ListUserNotifications parameters: - name: user in: path description: The user id. required: true schema: type: string - name: pageSize in: query schema: type: integer format: int32 - name: pageToken in: query schema: type: string - name: filter in: query schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ListUserNotificationsResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/users/{user}/notifications/{notification}: delete: tags: - UserService description: DeleteUserNotification deletes a notification. operationId: UserService_DeleteUserNotification parameters: - name: user in: path description: The user id. required: true schema: type: string - name: notification in: path description: The notification id. required: true schema: type: string responses: "200": description: OK content: {} default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' patch: tags: - UserService description: UpdateUserNotification updates a notification. operationId: UserService_UpdateUserNotification parameters: - name: user in: path description: The user id. required: true schema: type: string - name: notification in: path description: The notification id. required: true schema: type: string - name: updateMask in: query schema: type: string format: field-mask requestBody: content: application/json: schema: $ref: '#/components/schemas/UserNotification' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/UserNotification' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/users/{user}/personalAccessTokens: get: tags: - UserService description: |- ListPersonalAccessTokens returns a list of Personal Access Tokens (PATs) for a user. PATs are long-lived tokens for API/script access, distinct from short-lived JWT access tokens. operationId: UserService_ListPersonalAccessTokens parameters: - name: user in: path description: The user id. required: true schema: type: string - name: pageSize in: query description: Optional. The maximum number of tokens to return. schema: type: integer format: int32 - name: pageToken in: query description: Optional. A page token for pagination. schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ListPersonalAccessTokensResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' post: tags: - UserService description: |- CreatePersonalAccessToken creates a new Personal Access Token for a user. The token value is only returned once upon creation. operationId: UserService_CreatePersonalAccessToken parameters: - name: user in: path description: The user id. required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/CreatePersonalAccessTokenRequest' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/CreatePersonalAccessTokenResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/users/{user}/personalAccessTokens/{personalAccessToken}: delete: tags: - UserService description: DeletePersonalAccessToken deletes a Personal Access Token. operationId: UserService_DeletePersonalAccessToken parameters: - name: user in: path description: The user id. required: true schema: type: string - name: personalAccessToken in: path description: The personalAccessToken id. required: true schema: type: string responses: "200": description: OK content: {} default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/users/{user}/settings: get: tags: - UserService description: ListUserSettings returns a list of user settings. operationId: UserService_ListUserSettings parameters: - name: user in: path description: The user id. required: true schema: type: string - name: pageSize in: query description: |- Optional. The maximum number of settings to return. The service may return fewer than this value. If unspecified, at most 50 settings will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000. schema: type: integer format: int32 - name: pageToken in: query description: |- Optional. A page token, received from a previous `ListUserSettings` call. Provide this to retrieve the subsequent page. schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ListUserSettingsResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/users/{user}/settings/{setting}: get: tags: - UserService description: GetUserSetting returns the user setting. operationId: UserService_GetUserSetting parameters: - name: user in: path description: The user id. required: true schema: type: string - name: setting in: path description: The setting id. required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/UserSetting' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' patch: tags: - UserService description: UpdateUserSetting updates the user setting. operationId: UserService_UpdateUserSetting parameters: - name: user in: path description: The user id. required: true schema: type: string - name: setting in: path description: The setting id. required: true schema: type: string - name: updateMask in: query description: Required. The list of fields to update. schema: type: string format: field-mask requestBody: content: application/json: schema: $ref: '#/components/schemas/UserSetting' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/UserSetting' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/users/{user}/shortcuts: get: tags: - ShortcutService description: ListShortcuts returns a list of shortcuts for a user. operationId: ShortcutService_ListShortcuts parameters: - name: user in: path description: The user id. required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ListShortcutsResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' post: tags: - ShortcutService description: CreateShortcut creates a new shortcut for a user. operationId: ShortcutService_CreateShortcut parameters: - name: user in: path description: The user id. required: true schema: type: string - name: validateOnly in: query description: Optional. If set, validate the request, but do not actually create the shortcut. schema: type: boolean requestBody: content: application/json: schema: $ref: '#/components/schemas/Shortcut' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Shortcut' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/users/{user}/shortcuts/{shortcut}: get: tags: - ShortcutService description: GetShortcut gets a shortcut by name. operationId: ShortcutService_GetShortcut parameters: - name: user in: path description: The user id. required: true schema: type: string - name: shortcut in: path description: The shortcut id. required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Shortcut' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' delete: tags: - ShortcutService description: DeleteShortcut deletes a shortcut for a user. operationId: ShortcutService_DeleteShortcut parameters: - name: user in: path description: The user id. required: true schema: type: string - name: shortcut in: path description: The shortcut id. required: true schema: type: string responses: "200": description: OK content: {} default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' patch: tags: - ShortcutService description: UpdateShortcut updates a shortcut for a user. operationId: ShortcutService_UpdateShortcut parameters: - name: user in: path description: The user id. required: true schema: type: string - name: shortcut in: path description: The shortcut id. required: true schema: type: string - name: updateMask in: query description: Optional. The list of fields to update. schema: type: string format: field-mask requestBody: content: application/json: schema: $ref: '#/components/schemas/Shortcut' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/Shortcut' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/users/{user}/webhooks: get: tags: - UserService description: ListUserWebhooks returns a list of webhooks for a user. operationId: UserService_ListUserWebhooks parameters: - name: user in: path description: The user id. required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ListUserWebhooksResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' post: tags: - UserService description: CreateUserWebhook creates a new webhook for a user. operationId: UserService_CreateUserWebhook parameters: - name: user in: path description: The user id. required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/UserWebhook' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/UserWebhook' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/users/{user}/webhooks/{webhook}: delete: tags: - UserService description: DeleteUserWebhook deletes a webhook for a user. operationId: UserService_DeleteUserWebhook parameters: - name: user in: path description: The user id. required: true schema: type: string - name: webhook in: path description: The webhook id. required: true schema: type: string responses: "200": description: OK content: {} default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' patch: tags: - UserService description: UpdateUserWebhook updates an existing webhook for a user. operationId: UserService_UpdateUserWebhook parameters: - name: user in: path description: The user id. required: true schema: type: string - name: webhook in: path description: The webhook id. required: true schema: type: string - name: updateMask in: query description: The list of fields to update. schema: type: string format: field-mask requestBody: content: application/json: schema: $ref: '#/components/schemas/UserWebhook' required: true responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/UserWebhook' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/users/{user}:getStats: get: tags: - UserService description: GetUserStats returns statistics for a specific user. operationId: UserService_GetUserStats parameters: - name: user in: path description: The user id. required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/UserStats' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' /api/v1/users:stats: get: tags: - UserService description: ListAllUserStats returns statistics for all users. operationId: UserService_ListAllUserStats responses: "200": description: OK content: application/json: schema: $ref: '#/components/schemas/ListAllUserStatsResponse' default: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Status' components: schemas: Attachment: required: - filename - type type: object properties: name: type: string description: |- The name of the attachment. Format: attachments/{attachment} createTime: readOnly: true type: string description: Output only. The creation timestamp. format: date-time filename: type: string description: The filename of the attachment. content: writeOnly: true type: string description: Input only. The content of the attachment. format: bytes externalLink: type: string description: Optional. The external link of the attachment. type: type: string description: The MIME type of the attachment. size: readOnly: true type: string description: Output only. The size of the attachment in bytes. memo: type: string description: |- Optional. The related memo. Refer to `Memo.name`. Format: memos/{memo} motionMedia: allOf: - $ref: '#/components/schemas/MotionMedia' description: Optional. Motion media metadata. BatchDeleteAttachmentsRequest: required: - names type: object properties: names: type: array items: type: string Color: type: object properties: red: type: number description: The amount of red in the color as a value in the interval [0, 1]. format: float green: type: number description: The amount of green in the color as a value in the interval [0, 1]. format: float blue: type: number description: The amount of blue in the color as a value in the interval [0, 1]. format: float alpha: type: number description: |- The fraction of this color that should be applied to the pixel. That is, the final pixel color is defined by the equation: `pixel color = alpha * (this color) + (1.0 - alpha) * (background color)` This means that a value of 1.0 corresponds to a solid color, whereas a value of 0.0 corresponds to a completely transparent color. This uses a wrapper message rather than a simple float scalar so that it is possible to distinguish between a default value and the value being unset. If omitted, this color object is rendered as a solid color (as if the alpha value had been explicitly given a value of 1.0). format: float description: |- Represents a color in the RGBA color space. This representation is designed for simplicity of conversion to/from color representations in various languages over compactness. For example, the fields of this representation can be trivially provided to the constructor of `java.awt.Color` in Java; it can also be trivially provided to UIColor's `+colorWithRed:green:blue:alpha` method in iOS; and, with just a little work, it can be easily formatted into a CSS `rgba()` string in JavaScript. This reference page doesn't carry information about the absolute color space that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB, DCI-P3, BT.2020, etc.). By default, applications should assume the sRGB color space. When color equality needs to be decided, implementations, unless documented otherwise, treat two colors as equal if all their red, green, blue, and alpha values each differ by at most 1e-5. Example (Java): import com.google.type.Color; // ... public static java.awt.Color fromProto(Color protocolor) { float alpha = protocolor.hasAlpha() ? protocolor.getAlpha().getValue() : 1.0; return new java.awt.Color( protocolor.getRed(), protocolor.getGreen(), protocolor.getBlue(), alpha); } public static Color toProto(java.awt.Color color) { float red = (float) color.getRed(); float green = (float) color.getGreen(); float blue = (float) color.getBlue(); float denominator = 255.0; Color.Builder resultBuilder = Color .newBuilder() .setRed(red / denominator) .setGreen(green / denominator) .setBlue(blue / denominator); int alpha = color.getAlpha(); if (alpha != 255) { result.setAlpha( FloatValue .newBuilder() .setValue(((float) alpha) / denominator) .build()); } return resultBuilder.build(); } // ... Example (iOS / Obj-C): // ... static UIColor* fromProto(Color* protocolor) { float red = [protocolor red]; float green = [protocolor green]; float blue = [protocolor blue]; FloatValue* alpha_wrapper = [protocolor alpha]; float alpha = 1.0; if (alpha_wrapper != nil) { alpha = [alpha_wrapper value]; } return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; } static Color* toProto(UIColor* color) { CGFloat red, green, blue, alpha; if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha <= 0.9999) { [result setAlpha:floatWrapperWithValue(alpha)]; } [result autorelease]; return result; } // ... Example (JavaScript): // ... var protoToCssColor = function(rgb_color) { var redFrac = rgb_color.red || 0.0; var greenFrac = rgb_color.green || 0.0; var blueFrac = rgb_color.blue || 0.0; var red = Math.floor(redFrac * 255); var green = Math.floor(greenFrac * 255); var blue = Math.floor(blueFrac * 255); if (!('alpha' in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(','); return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red << 16) | (green << 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = ['#']; for (var i = 0; i < missingZeros; i++) { resultBuilder.push('0'); } resultBuilder.push(hexString); return resultBuilder.join(''); }; // ... CreatePersonalAccessTokenRequest: required: - parent type: object properties: parent: type: string description: |- Required. The parent resource where this token will be created. Format: users/{user} description: type: string description: Optional. Description of the personal access token. expiresInDays: type: integer description: Optional. Expiration duration in days (0 = never expires). format: int32 CreatePersonalAccessTokenResponse: type: object properties: personalAccessToken: allOf: - $ref: '#/components/schemas/PersonalAccessToken' description: The personal access token metadata. token: type: string description: |- The actual token value - only returned on creation. This is the only time the token value will be visible. FieldMapping: type: object properties: identifier: type: string displayName: type: string email: type: string avatarUrl: type: string GeneralSetting_CustomProfile: type: object properties: title: type: string description: type: string logoUrl: type: string description: Custom profile configuration for instance branding. GetCurrentUserResponse: type: object properties: user: allOf: - $ref: '#/components/schemas/User' description: The authenticated user's information. GoogleProtobufAny: type: object properties: '@type': type: string description: The type of the serialized message. additionalProperties: true description: Contains an arbitrary serialized message along with a @type that describes the type of the serialized message. IdentityProvider: required: - type - title - config type: object properties: name: type: string description: |- The resource name of the identity provider. Format: identity-providers/{idp} type: enum: - TYPE_UNSPECIFIED - OAUTH2 type: string description: Required. The type of the identity provider. format: enum title: type: string description: Required. The display title of the identity provider. identifierFilter: type: string description: Optional. Filter applied to user identifiers. config: allOf: - $ref: '#/components/schemas/IdentityProviderConfig' description: Required. Configuration for the identity provider. IdentityProviderConfig: type: object properties: oauth2Config: $ref: '#/components/schemas/OAuth2Config' InstanceProfile: type: object properties: version: type: string description: Version is the current version of instance. demo: type: boolean description: Demo indicates if the instance is in demo mode. instanceUrl: type: string description: Instance URL is the URL of the instance. admin: allOf: - $ref: '#/components/schemas/User' description: |- The first administrator who set up this instance. When null, instance requires initial setup (creating the first admin account). description: Instance profile message containing basic instance information. InstanceSetting: type: object properties: name: type: string description: |- The name of the instance setting. Format: instance/settings/{setting} generalSetting: $ref: '#/components/schemas/InstanceSetting_GeneralSetting' storageSetting: $ref: '#/components/schemas/InstanceSetting_StorageSetting' memoRelatedSetting: $ref: '#/components/schemas/InstanceSetting_MemoRelatedSetting' tagsSetting: $ref: '#/components/schemas/InstanceSetting_TagsSetting' notificationSetting: $ref: '#/components/schemas/InstanceSetting_NotificationSetting' description: An instance setting resource. InstanceSetting_GeneralSetting: type: object properties: disallowUserRegistration: type: boolean description: disallow_user_registration disallows user registration. disallowPasswordAuth: type: boolean description: disallow_password_auth disallows password authentication. additionalScript: type: string description: additional_script is the additional script. additionalStyle: type: string description: additional_style is the additional style. customProfile: allOf: - $ref: '#/components/schemas/GeneralSetting_CustomProfile' description: custom_profile is the custom profile. weekStartDayOffset: type: integer description: |- week_start_day_offset is the week start day offset from Sunday. 0: Sunday, 1: Monday, 2: Tuesday, 3: Wednesday, 4: Thursday, 5: Friday, 6: Saturday Default is Sunday. format: int32 disallowChangeUsername: type: boolean description: disallow_change_username disallows changing username. disallowChangeNickname: type: boolean description: disallow_change_nickname disallows changing nickname. description: General instance settings configuration. InstanceSetting_MemoRelatedSetting: type: object properties: displayWithUpdateTime: type: boolean description: display_with_update_time orders and displays memo with update time. contentLengthLimit: type: integer description: content_length_limit is the limit of content length. Unit is byte. format: int32 enableDoubleClickEdit: type: boolean description: enable_double_click_edit enables editing on double click. reactions: type: array items: type: string description: reactions is the list of reactions. description: Memo-related instance settings and policies. InstanceSetting_NotificationSetting: type: object properties: email: $ref: '#/components/schemas/NotificationSetting_EmailSetting' description: Notification transport configuration. InstanceSetting_StorageSetting: type: object properties: storageType: enum: - STORAGE_TYPE_UNSPECIFIED - DATABASE - LOCAL - S3 type: string description: storage_type is the storage type. format: enum filepathTemplate: type: string description: |- The template of file path. e.g. assets/{timestamp}_{filename} uploadSizeLimitMb: type: string description: The max upload size in megabytes. s3Config: allOf: - $ref: '#/components/schemas/StorageSetting_S3Config' description: The S3 config. description: Storage configuration settings for instance attachments. InstanceSetting_TagMetadata: type: object properties: backgroundColor: allOf: - $ref: '#/components/schemas/Color' description: |- Optional background color for the tag label. When unset, the default tag color is used. blurContent: type: boolean description: Whether memos with this tag should have their content blurred. description: Metadata for a tag. InstanceSetting_TagsSetting: type: object properties: tags: type: object additionalProperties: $ref: '#/components/schemas/InstanceSetting_TagMetadata' description: |- Map of tag name pattern to tag metadata. Each key is treated as an anchored regular expression (^pattern$), so a single entry like "project/.*" matches all tags under that prefix. Exact tag names are also valid (they are trivially valid regex patterns). description: Tag metadata configuration. ListAllUserStatsResponse: type: object properties: stats: type: array items: $ref: '#/components/schemas/UserStats' description: The list of user statistics. ListAttachmentsResponse: type: object properties: attachments: type: array items: $ref: '#/components/schemas/Attachment' description: The list of attachments. nextPageToken: type: string description: |- A token that can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages. totalSize: type: integer description: The total count of attachments (may be approximate). format: int32 ListIdentityProvidersResponse: type: object properties: identityProviders: type: array items: $ref: '#/components/schemas/IdentityProvider' description: The list of identity providers. ListMemoAttachmentsResponse: type: object properties: attachments: type: array items: $ref: '#/components/schemas/Attachment' description: The list of attachments. nextPageToken: type: string description: A token for the next page of results. ListMemoCommentsResponse: type: object properties: memos: type: array items: $ref: '#/components/schemas/Memo' description: The list of comment memos. nextPageToken: type: string description: A token for the next page of results. totalSize: type: integer description: The total count of comments. format: int32 ListMemoReactionsResponse: type: object properties: reactions: type: array items: $ref: '#/components/schemas/Reaction' description: The list of reactions. nextPageToken: type: string description: A token for the next page of results. totalSize: type: integer description: The total count of reactions. format: int32 ListMemoRelationsResponse: type: object properties: relations: type: array items: $ref: '#/components/schemas/MemoRelation' description: The list of relations. nextPageToken: type: string description: A token for the next page of results. ListMemoSharesResponse: type: object properties: memoShares: type: array items: $ref: '#/components/schemas/MemoShare' description: The list of share links. ListMemosResponse: type: object properties: memos: type: array items: $ref: '#/components/schemas/Memo' description: The list of memos. nextPageToken: type: string description: |- A token that can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages. ListPersonalAccessTokensResponse: type: object properties: personalAccessTokens: type: array items: $ref: '#/components/schemas/PersonalAccessToken' description: The list of personal access tokens. nextPageToken: type: string description: A token for the next page of results. totalSize: type: integer description: The total count of personal access tokens. format: int32 ListShortcutsResponse: type: object properties: shortcuts: type: array items: $ref: '#/components/schemas/Shortcut' description: The list of shortcuts. ListUserNotificationsResponse: type: object properties: notifications: type: array items: $ref: '#/components/schemas/UserNotification' nextPageToken: type: string ListUserSettingsResponse: type: object properties: settings: type: array items: $ref: '#/components/schemas/UserSetting' description: The list of user settings. nextPageToken: type: string description: |- A token that can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages. totalSize: type: integer description: The total count of settings (may be approximate). format: int32 description: Response message for ListUserSettings method. ListUserWebhooksResponse: type: object properties: webhooks: type: array items: $ref: '#/components/schemas/UserWebhook' description: The list of webhooks. ListUsersResponse: type: object properties: users: type: array items: $ref: '#/components/schemas/User' description: The list of users. nextPageToken: type: string description: |- A token that can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages. totalSize: type: integer description: The total count of users (may be approximate). format: int32 Location: type: object properties: placeholder: type: string description: A placeholder text for the location. latitude: type: number description: The latitude of the location. format: double longitude: type: number description: The longitude of the location. format: double Memo: required: - state - content - visibility type: object properties: name: type: string description: |- The resource name of the memo. Format: memos/{memo}, memo is the user defined id or uuid. state: enum: - STATE_UNSPECIFIED - NORMAL - ARCHIVED type: string description: The state of the memo. format: enum creator: readOnly: true type: string description: |- The name of the creator. Format: users/{user} createTime: type: string description: |- The creation timestamp. If not set on creation, the server will set it to the current time. format: date-time updateTime: type: string description: |- The last update timestamp. If not set on creation, the server will set it to the current time. format: date-time displayTime: type: string description: The display timestamp of the memo. format: date-time content: type: string description: Required. The content of the memo in Markdown format. visibility: enum: - VISIBILITY_UNSPECIFIED - PRIVATE - PROTECTED - PUBLIC type: string description: The visibility of the memo. format: enum tags: readOnly: true type: array items: type: string description: Output only. The tags extracted from the content. pinned: type: boolean description: Whether the memo is pinned. attachments: type: array items: $ref: '#/components/schemas/Attachment' description: Optional. The attachments of the memo. relations: type: array items: $ref: '#/components/schemas/MemoRelation' description: Optional. The relations of the memo. reactions: readOnly: true type: array items: $ref: '#/components/schemas/Reaction' description: Output only. The reactions to the memo. property: readOnly: true allOf: - $ref: '#/components/schemas/Memo_Property' description: Output only. The computed properties of the memo. parent: readOnly: true type: string description: |- Output only. The name of the parent memo. Format: memos/{memo} snippet: readOnly: true type: string description: Output only. The snippet of the memo content. Plain text only. location: allOf: - $ref: '#/components/schemas/Location' description: Optional. The location of the memo. MemoRelation: required: - memo - relatedMemo - type type: object properties: memo: allOf: - $ref: '#/components/schemas/MemoRelation_Memo' description: The memo in the relation. relatedMemo: allOf: - $ref: '#/components/schemas/MemoRelation_Memo' description: The related memo. type: enum: - TYPE_UNSPECIFIED - REFERENCE - COMMENT type: string format: enum MemoRelation_Memo: required: - name type: object properties: name: type: string description: |- The resource name of the memo. Format: memos/{memo} snippet: readOnly: true type: string description: Output only. The snippet of the memo content. Plain text only. description: Memo reference in relations. MemoShare: type: object properties: name: type: string description: |- The resource name of the share. Format: memos/{memo}/shares/{share} The {share} segment is the opaque token used in the share URL. createTime: readOnly: true type: string description: Output only. When this share link was created. format: date-time expireTime: type: string description: |- Optional. When set, the share link stops working after this time. If unset, the link never expires. format: date-time description: MemoShare is an access grant that permits read-only access to a memo via an opaque bearer token. Memo_Property: type: object properties: hasLink: type: boolean hasTaskList: type: boolean hasCode: type: boolean hasIncompleteTasks: type: boolean title: type: string description: The title extracted from the first H1 heading, if present. description: Computed properties of a memo. MotionMedia: type: object properties: family: enum: - MOTION_MEDIA_FAMILY_UNSPECIFIED - APPLE_LIVE_PHOTO - ANDROID_MOTION_PHOTO type: string format: enum role: enum: - MOTION_MEDIA_ROLE_UNSPECIFIED - STILL - VIDEO - CONTAINER type: string format: enum groupId: type: string presentationTimestampUs: type: string hasEmbeddedVideo: type: boolean NotificationSetting_EmailSetting: type: object properties: enabled: type: boolean smtpHost: type: string smtpPort: type: integer format: int32 smtpUsername: type: string smtpPassword: type: string fromEmail: type: string fromName: type: string replyTo: type: string useTls: type: boolean useSsl: type: boolean description: Email delivery configuration for notifications. OAuth2Config: type: object properties: clientId: type: string clientSecret: type: string authUrl: type: string tokenUrl: type: string userInfoUrl: type: string scopes: type: array items: type: string fieldMapping: $ref: '#/components/schemas/FieldMapping' PersonalAccessToken: type: object properties: name: type: string description: |- The resource name of the personal access token. Format: users/{user}/personalAccessTokens/{personal_access_token} description: type: string description: The description of the token. createdAt: readOnly: true type: string description: Output only. The creation timestamp. format: date-time expiresAt: type: string description: Optional. The expiration timestamp. format: date-time lastUsedAt: readOnly: true type: string description: Output only. The last used timestamp. format: date-time description: |- PersonalAccessToken represents a long-lived token for API/script access. PATs are distinct from short-lived JWT access tokens used for session authentication. Reaction: required: - contentId - reactionType type: object properties: name: readOnly: true type: string description: |- The resource name of the reaction. Format: memos/{memo}/reactions/{reaction} creator: readOnly: true type: string description: |- The resource name of the creator. Format: users/{user} contentId: type: string description: |- The resource name of the content. For memo reactions, this should be the memo's resource name. Format: memos/{memo} reactionType: type: string description: "Required. The type of reaction (e.g., \"\U0001F44D\", \"❤️\", \"\U0001F604\")." createTime: readOnly: true type: string description: Output only. The creation timestamp. format: date-time RefreshTokenRequest: type: object properties: {} RefreshTokenResponse: type: object properties: accessToken: type: string description: The new short-lived access token. expiresAt: type: string description: When the access token expires. format: date-time SetMemoAttachmentsRequest: required: - name - attachments type: object properties: name: type: string description: |- Required. The resource name of the memo. Format: memos/{memo} attachments: type: array items: $ref: '#/components/schemas/Attachment' description: Required. The attachments to set for the memo. SetMemoRelationsRequest: required: - name - relations type: object properties: name: type: string description: |- Required. The resource name of the memo. Format: memos/{memo} relations: type: array items: $ref: '#/components/schemas/MemoRelation' description: Required. The relations to set for the memo. Shortcut: required: - title type: object properties: name: type: string description: |- The resource name of the shortcut. Format: users/{username}/shortcuts/{shortcut} title: type: string description: The title of the shortcut. filter: type: string description: The filter expression for the shortcut. SignInRequest: type: object properties: passwordCredentials: allOf: - $ref: '#/components/schemas/SignInRequest_PasswordCredentials' description: Username and password authentication. ssoCredentials: allOf: - $ref: '#/components/schemas/SignInRequest_SSOCredentials' description: SSO provider authentication. SignInRequest_PasswordCredentials: required: - username - password type: object properties: username: type: string description: The username to sign in with. password: type: string description: The password to sign in with. description: Nested message for password-based authentication credentials. SignInRequest_SSOCredentials: required: - idpName - code - redirectUri type: object properties: idpName: type: string description: |- The resource name of the SSO provider. Format: identity-providers/{uid} code: type: string description: The authorization code from the SSO provider. redirectUri: type: string description: The redirect URI used in the SSO flow. codeVerifier: type: string description: |- The PKCE code verifier for enhanced security (RFC 7636). Optional - enables PKCE flow protection against authorization code interception. description: Nested message for SSO authentication credentials. SignInResponse: type: object properties: user: allOf: - $ref: '#/components/schemas/User' description: The authenticated user's information. accessToken: type: string description: |- The short-lived access token for API requests. Store in memory only, not in localStorage. accessTokenExpiresAt: type: string description: |- When the access token expires. Client should call RefreshToken before this time. format: date-time Status: type: object properties: code: type: integer description: The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code]. format: int32 message: type: string description: A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client. details: type: array items: $ref: '#/components/schemas/GoogleProtobufAny' description: A list of messages that carry the error details. There is a common set of message types for APIs to use. description: 'The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).' StorageSetting_S3Config: type: object properties: accessKeyId: type: string accessKeySecret: type: string endpoint: type: string region: type: string bucket: type: string usePathStyle: type: boolean description: |- S3 configuration for cloud storage backend. Reference: https://developers.cloudflare.com/r2/examples/aws/aws-sdk-go/ UpsertMemoReactionRequest: required: - name - reaction type: object properties: name: type: string description: |- Required. The resource name of the memo. Format: memos/{memo} reaction: allOf: - $ref: '#/components/schemas/Reaction' description: Required. The reaction to upsert. User: required: - role - username - state type: object properties: name: type: string description: |- The resource name of the user. Format: users/{user} role: enum: - ROLE_UNSPECIFIED - ADMIN - USER type: string description: The role of the user. format: enum username: type: string description: Required. The unique username for login. email: type: string description: Optional. The email address of the user. displayName: type: string description: Optional. The display name of the user. avatarUrl: type: string description: Optional. The avatar URL of the user. description: type: string description: Optional. The description of the user. password: writeOnly: true type: string description: Input only. The password for the user. state: enum: - STATE_UNSPECIFIED - NORMAL - ARCHIVED type: string description: The state of the user. format: enum createTime: readOnly: true type: string description: Output only. The creation timestamp. format: date-time updateTime: readOnly: true type: string description: Output only. The last update timestamp. format: date-time UserNotification: type: object properties: name: readOnly: true type: string description: |- The resource name of the notification. Format: users/{user}/notifications/{notification} sender: readOnly: true type: string description: |- The sender of the notification. Format: users/{user} status: enum: - STATUS_UNSPECIFIED - UNREAD - ARCHIVED type: string description: The status of the notification. format: enum createTime: readOnly: true type: string description: The creation timestamp. format: date-time type: readOnly: true enum: - TYPE_UNSPECIFIED - MEMO_COMMENT type: string description: The type of the notification. format: enum memoComment: readOnly: true allOf: - $ref: '#/components/schemas/UserNotification_MemoCommentPayload' UserNotification_MemoCommentPayload: type: object properties: memo: type: string description: |- The memo name of comment. Format: memos/{memo} relatedMemo: type: string description: |- The name of related memo. Format: memos/{memo} UserSetting: type: object properties: name: type: string description: |- The name of the user setting. Format: users/{username}/settings/{setting}, {setting} is the key for the setting. For example, "users/steven/settings/GENERAL" for general settings. generalSetting: $ref: '#/components/schemas/UserSetting_GeneralSetting' webhooksSetting: $ref: '#/components/schemas/UserSetting_WebhooksSetting' description: User settings message UserSetting_GeneralSetting: type: object properties: locale: type: string description: The preferred locale of the user. memoVisibility: type: string description: The default visibility of the memo. theme: type: string description: |- The preferred theme of the user. This references a CSS file in the web/public/themes/ directory. If not set, the default theme will be used. description: General user settings configuration. UserSetting_WebhooksSetting: type: object properties: webhooks: type: array items: $ref: '#/components/schemas/UserWebhook' description: List of user webhooks. description: User webhooks configuration. UserStats: type: object properties: name: type: string description: |- The resource name of the user whose stats these are. Format: users/{user} memoDisplayTimestamps: type: array items: type: string format: date-time description: The timestamps when the memos were displayed. memoTypeStats: allOf: - $ref: '#/components/schemas/UserStats_MemoTypeStats' description: The stats of memo types. tagCount: type: object additionalProperties: type: integer format: int32 description: The count of tags. pinnedMemos: type: array items: type: string description: The pinned memos of the user. totalMemoCount: type: integer description: Total memo count. format: int32 description: User statistics messages UserStats_MemoTypeStats: type: object properties: linkCount: type: integer format: int32 codeCount: type: integer format: int32 todoCount: type: integer format: int32 undoCount: type: integer format: int32 description: Memo type statistics. UserWebhook: type: object properties: name: type: string description: |- The name of the webhook. Format: users/{user}/webhooks/{webhook} url: type: string description: The URL to send the webhook to. displayName: type: string description: Optional. Human-readable name for the webhook. createTime: readOnly: true type: string description: The creation time of the webhook. format: date-time updateTime: readOnly: true type: string description: The last update time of the webhook. format: date-time description: UserWebhook represents a webhook owned by a user. tags: - name: AttachmentService - name: AuthService - name: IdentityProviderService - name: InstanceService - name: MemoService - name: ShortcutService - name: UserService