| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- syntax = "proto3";
- package chatto.api.v1;
- import "buf/validate/validate.proto";
- // Notification delivery level for a room.
- enum NotificationLevel {
- // The level was not specified.
- NOTIFICATION_LEVEL_UNSPECIFIED = 0;
- // Use the inherited default for the room.
- NOTIFICATION_LEVEL_DEFAULT = 1;
- // Do not notify for this room.
- NOTIFICATION_LEVEL_MUTED = 2;
- // Notify according to the normal room rules.
- NOTIFICATION_LEVEL_NORMAL = 3;
- // Notify for every message in the room.
- NOTIFICATION_LEVEL_ALL_MESSAGES = 4;
- }
- // Stored and effective notification preference.
- message NotificationPreference {
- // Explicit level stored for the current user.
- NotificationLevel level = 1;
- // Level after applying defaults and inheritance.
- NotificationLevel effective_level = 2;
- }
- // Current notification preference.
- message GetNotificationPreferenceResponse {
- // Field 1 was `level` and field 2 was `effective_level` before the shared
- // NotificationPreference shape.
- reserved 1, 2;
- reserved "level", "effective_level";
- // Current stored and effective notification preference.
- NotificationPreference preference = 3;
- }
- // Updated notification preference.
- message UpdateNotificationPreferenceResponse {
- // Field 1 was `level` and field 2 was `effective_level` before the shared
- // NotificationPreference shape.
- reserved 1, 2;
- reserved "level", "effective_level";
- // Stored and effective notification preference after the update.
- NotificationPreference preference = 3;
- }
- // Request for the current user's server-level notification preference.
- message GetServerNotificationPreferenceRequest {}
- // Request to update the current user's server-level notification level.
- message UpdateServerNotificationPreferenceRequest {
- // Required. New explicit notification level. Use NOTIFICATION_LEVEL_DEFAULT
- // to return the server to default behavior.
- NotificationLevel level = 1 [(buf.validate.field).enum = {
- defined_only: true
- not_in: [0]
- }];
- }
- // Request for the current user's notification preference in one room.
- message GetRoomNotificationPreferenceRequest {
- // Required. Room whose notification preference should be loaded for the current user.
- string room_id = 1 [(buf.validate.field).string.min_len = 1];
- }
- // Request to update the current user's notification level in one room.
- message UpdateRoomNotificationPreferenceRequest {
- // Required. Room whose notification level should be changed for the current user.
- string room_id = 1 [(buf.validate.field).string.min_len = 1];
- // Required. New explicit notification level. Use NOTIFICATION_LEVEL_DEFAULT
- // to return the room to inherited/default behavior.
- NotificationLevel level = 2 [(buf.validate.field).enum = {
- defined_only: true
- not_in: [0]
- }];
- }
- // Reads and updates per-room notification preferences for the current user.
- service NotificationPreferencesService {
- // Returns the current user's explicit and effective server notification level.
- rpc GetServerNotificationPreference(GetServerNotificationPreferenceRequest) returns (GetNotificationPreferenceResponse);
- // Updates the current user's explicit server notification level and returns the
- // resulting stored and effective levels.
- rpc UpdateServerNotificationPreference(UpdateServerNotificationPreferenceRequest) returns (UpdateNotificationPreferenceResponse);
- // Returns the current user's explicit and effective notification level for a
- // room. Use this before rendering room notification controls so the UI can
- // distinguish inherited defaults from an explicit room override. Returns
- // NOT_FOUND when the room does not exist and PERMISSION_DENIED when the room
- // exists but is inaccessible to the caller.
- rpc GetRoomNotificationPreference(GetRoomNotificationPreferenceRequest) returns (GetNotificationPreferenceResponse);
- // Updates the current user's explicit notification level for a room and returns
- // the resulting stored and effective levels.
- rpc UpdateRoomNotificationPreference(UpdateRoomNotificationPreferenceRequest) returns (UpdateNotificationPreferenceResponse);
- }
|