go.chromium.org/luci@v0.0.0-20240309015107-7cdc2e660f33/analysis/internal/bugs/monorail/api_proto/user_objects.proto (about)

     1  // Copyright 2020 The Chromium Authors
     2  // Use of this source code is governed by a BSD-style license that can be
     3  // found in the LICENSE file.
     4  
     5  // This file defines protobufs for users and related business
     6  // objects, e.g., users, user preferences.
     7  
     8  syntax = "proto3";
     9  
    10  package monorail.v3;
    11  
    12  option go_package = "go.chromium.org/luci/analysis/internal/bugs/monorail/api_proto";
    13  
    14  import "google/api/resource.proto";
    15  import "google/api/field_behavior.proto";
    16  
    17  // User represents a user of the Monorail site.
    18  // Next available tag: 5
    19  message User {
    20    option (google.api.resource) = {
    21      type: "api.crbug.com/User"
    22      pattern: "users/{user_id}"
    23    };
    24    // Resource name of the user.
    25    // The API will always return User names with format: users/<user_id>.
    26    // However the API will accept User names with formats: users/<user_id> or users/<email>.
    27    // To fetch the display_name for any users/<user_id> returned by the API,
    28    // you can call {Batch}GetUser{s}.
    29    // We represent deleted users within Monorail with `users/1` or `users/2103649657`.
    30    string name = 1;
    31    // User display_name to show other users using the site.
    32    // By default this is the obscured or un-obscured email.
    33    string display_name = 2;
    34    // Obscured or un-obscured user email or empty if this represents
    35    // a deleted user.
    36    string email = 4 [ (google.api.field_behavior) = OUTPUT_ONLY ];
    37    // User-written indication of their availability or working hours.
    38    string availability_message = 3;
    39    // Timestamp of the user's last visit
    40    int32 last_visit_timestamp = 5;
    41  }
    42  
    43  
    44  // UserSettings represents preferences and account settings of a User.
    45  // Next available tag: 8
    46  message UserSettings {
    47    option (google.api.resource) = {
    48      type: "api.crbug.com/UserSettings"
    49      pattern: "usersettings/{user_id}"
    50    };
    51  
    52    // Potential roles of a user.
    53    // Next available tag: 3
    54    enum SiteRole {
    55      // Default value. This value is unused.
    56      SITE_ROLE_UNSPECIFIED = 0;
    57      // Normal site user with no special site-wide extra permissions.
    58      NORMAL = 1;
    59      // Site-wide admin role.
    60      ADMIN = 2;
    61    }
    62  
    63    // The access the user has to the site.
    64    // Next available tag: 3
    65    message SiteAccess {
    66      // Potential status of a user's access to the site.
    67      // Next available tag: 3
    68      enum Status {
    69        // Default value. This value is unused.
    70        STATUS_UNSPECIFIED = 0;
    71        // The user has access to the site.
    72        FULL_ACCESS = 1;
    73        // The user is banned from the site.
    74        BANNED = 2;
    75      }
    76  
    77      // The status of the user's access to the site.
    78      Status status = 1;
    79      // An explanation for the value of `status`.
    80      string reason = 2;
    81    }
    82  
    83    // Trait options for notifications the user receives.
    84    // Next available tag: 6;
    85    enum NotificationTraits {
    86      // Default value. This value is unused.
    87      NOTIFICATION_TRAITS_UNSPECIFIED = 0;
    88      // Send change notifications for issues where user is owner or cc.
    89      NOTIFY_ON_OWNED_OR_CC_ISSUE_CHANGES = 1;
    90      // Send change notifications for issues the user has starred.
    91      NOTIFY_ON_STARRED_ISSUE_CHANGES = 2;
    92      // Send date-type field notifications for issues the user has starred.
    93      // See monorail/doc/userguide/email.md#why-did-i-get-a-follow_up-email-notification.
    94      NOTIFY_ON_STARRED_NOTIFY_DATES = 3;
    95      // Email subject lines should be compact.
    96      COMPACT_SUBJECT_LINE = 4;
    97      // Include a button link to the issue, in Gmail.
    98      GMAIL_INCLUDE_ISSUE_LINK_BUTTON = 5;
    99    }
   100  
   101    // Privacy trait options for the user.
   102    // Next available tag: 2
   103    enum PrivacyTraits {
   104      // Default value. This value is unused.
   105      PRIVACY_TRAITS_UNSPECIFIED = 0;
   106      // Obscure the user's email from non-project members throughout the site.
   107      OBSCURE_EMAIL = 1;
   108    }
   109  
   110    // Site interaction trait options for the user.
   111    // Next available tag: 3
   112    enum SiteInteractionTraits {
   113      // Default value. This value is unused.
   114      SITE_INTERACTION_TRAITS_UNSPECIFIED = 0;
   115      // Add 'Restrict-View-Google' labels to new issues the user reports.
   116      // Issues will only be visible to the user (issue reporter)
   117      // and users with the `Google` permission.
   118      REPORT_RESTRICT_VIEW_GOOGLE_ISSUES = 1;
   119      // When viewing public issues, show a banner to remind the user not
   120      // to post sensitive information.
   121      PUBLIC_ISSUE_BANNER = 2;
   122    }
   123  
   124    // Resource name of the user that has these settings.
   125    string name = 1 [ (google.api.resource_reference) = {type: "api.crbug.com/UserSettings"} ];
   126    // The global site role for the user.
   127    SiteRole site_role = 2 [ (google.api.field_behavior) = OUTPUT_ONLY ];
   128    // Resource name of linked secondary users.
   129    repeated string linked_secondary_users = 3 [
   130        (google.api.resource_reference) = {type: "api.crbug.com/User"},
   131        (google.api.field_behavior) = OUTPUT_ONLY ];
   132    // The user's access to the site.
   133    SiteAccess site_access = 4 [ (google.api.field_behavior) = OUTPUT_ONLY ];
   134    // Notification trait preferences of the user.
   135    repeated NotificationTraits notification_traits = 5;
   136    // Privacy trait preferences of the user.
   137    repeated PrivacyTraits privacy_traits = 6;
   138    // Site interaction trait preferences of the user.
   139    repeated SiteInteractionTraits site_interaction_traits = 7;
   140  }
   141  
   142  // Defines saved queries that belong to a user.
   143  //
   144  // Next available tag: 6
   145  message UserSavedQuery {
   146    option (google.api.resource) = {
   147      type: "api.crbug.com/UserSavedQuery"
   148      pattern: "users/{user_id}/savedQueries/{saved_query_id}"
   149    };
   150  
   151    // Resource name of this saved query.
   152    string name = 1;
   153    // Display name of this saved query, ie 'open issues'.
   154    string display_name = 2;
   155    // Search term of this saved query.
   156    string query = 3;
   157    // List of projects this query can be searched in.
   158    repeated string projects = 4 [
   159        (google.api.resource_reference) = { type: "api.crbug.com/Project" }
   160    ];
   161    // Subscription mode of this saved query
   162    // Next available tag: 3
   163    enum SubscriptionMode {
   164      // Default API value. This value is unused.
   165      SUBSCRIPTION_MODE_UNSPECIFIED = 0;
   166      // Do not subscribe to notifications.
   167      NO_NOTIFICATION = 1;
   168      // Subscribe to notifications.
   169      IMMEDIATE_NOTIFICATION = 2;
   170    }
   171    SubscriptionMode subscription_mode = 5;
   172  }
   173  
   174  // A project starred by a user.
   175  //
   176  // Next available tag: 2
   177  message ProjectStar {
   178    option (google.api.resource) = {
   179      type: "api.crbug.com/ProjectStar"
   180      pattern: "users/{user_id}/projectStars/{project_name}"
   181    };
   182    // Resource name of the ProjectStar.
   183    string name = 1;
   184  }