| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- syntax = "proto3";
- package chatto.api.v1;
- import "chatto/api/v1/permissions.proto";
- import "chatto/api/v1/users.proto";
- import "google/protobuf/timestamp.proto";
- // User preference for rendering times in clients.
- enum TimeFormat {
- // No explicit preference was stored.
- TIME_FORMAT_UNSPECIFIED = 0;
- // Let the client choose based on locale and browser settings.
- TIME_FORMAT_AUTO = 1;
- // Render times using a 12-hour clock.
- TIME_FORMAT_12_HOUR = 2;
- // Render times using a 24-hour clock.
- TIME_FORMAT_24_HOUR = 3;
- }
- // Server-level display settings for the authenticated user.
- message UserSettings {
- // Optional IANA timezone override. Absent means the client should use the
- // browser's local timezone.
- optional string timezone = 1;
- // Preferred time format.
- TimeFormat time_format = 2;
- // Whether the stored time zone may appear on the user's public profile.
- // New servers always set this field. Its absence means the server does not
- // support private time zones and may publish any stored time zone.
- optional bool share_timezone = 3;
- }
- // Current authenticated user's public profile plus self-only settings.
- message ViewerUser {
- reserved 1 to 6;
- reserved "id", "login", "display_name", "avatar_url", "custom_status", "presence_status";
- // Whether the account has at least one verified email address.
- bool has_verified_email = 7;
- // Current user's display settings.
- UserSettings settings = 8;
- // Whether the authenticated user may delete this account.
- bool viewer_can_delete_account = 9;
- // Last time a login credential changed, when known.
- google.protobuf.Timestamp last_login_change = 10;
- // Public user fields for the authenticated user.
- User profile = 11;
- // Whether this account currently has a password sign-in credential.
- bool has_password = 12;
- }
- // Permission-derived capabilities for the authenticated user.
- message ViewerCapabilities {
- // Keyed capability decisions for the authenticated user.
- repeated CapabilityGrant grants = 1;
- // Whether the user has unread followed threads.
- bool has_unread_followed_threads = 2;
- }
- // Effective server/channel permission decisions for the authenticated user.
- message ServerViewerPermissions {
- // One row per permission known to the server.
- repeated PermissionGrant permissions = 1;
- }
- // Non-permission server state for the authenticated user.
- message ServerViewerState {
- // Whether any joined channel room has neutral Badge attention.
- bool has_unread_rooms = 1;
- }
- // Request for the authenticated viewer snapshot.
- message GetViewerRequest {}
- // Authenticated viewer snapshot needed by application shells.
- message GetViewerResponse {
- reserved 3, 4;
- reserved "server_notification_preference", "room_notification_preferences";
- // Current authenticated user.
- ViewerUser user = 1;
- // Permission-derived capabilities.
- ViewerCapabilities capabilities = 2;
- // Effective server/channel permission decisions for the authenticated user.
- ServerViewerPermissions viewer_permissions = 5;
- // Non-permission server state for the authenticated user.
- ServerViewerState viewer_state = 6;
- }
- // Provides authenticated user profile, preferences, and capability state.
- service ViewerService {
- // Returns the current authenticated viewer. This RPC requires a logged-in
- // user; unauthenticated callers receive an UNAUTHENTICATED error.
- rpc GetViewer(GetViewerRequest) returns (GetViewerResponse);
- }
|