// Copyright 2017 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. syntax = "proto3"; package google.cloud.support.common; import "google/api/annotations.proto"; import "google/protobuf/timestamp.proto"; option go_package = "google.golang.org/genproto/googleapis/cloud/support/common;common"; option java_outer_classname = "CloudSupportProto"; option java_package = "com.google.cloud.support.common"; // A Google Cloud Platform account that identifies support eligibility for a // Cloud resource. Currently the Cloud resource can only be an Organization // but this might change in future. message SupportAccount { // The current state of this SupportAccount. enum State { // Account is in an unknown state. STATE_UNSPECIFIED = 0; // Account is in an active state. ACTIVE = 1; // Account has been created but is being provisioned in support systems. PENDING = 2; // Account deletion has been requested by the user. PENDING_DELETION = 3; } // Pricing model applicable to this support account. enum PricingModel { // This account is subscribed to an unknown pricing model. PRICING_MODEL_UNKNOWN = 0; // Package based pricing (Platinum, Gold, Silver, Bronze). PACKAGES = 1; // Support charges are calculated based on user seats a.k.a, // "Pick Your Team" model. USER_ROLES = 2; } // The resource name for a support account in format // `supportAccounts/{account_id}`. // Output only. string name = 1; // Identifier for this entity that gets persisted in storage system. The // resource name is populated using this field in format // `supportAccounts/{account_id}`. string account_id = 2; // The Cloud resource with which this support account is associated. string cloud_resource = 3; // A user friendly display name assigned to this support account. string display_name = 4; // Indicates the current state of an account. State state = 5; // Time when this account was created. // Output only. google.protobuf.Timestamp create_time = 6; // The resource name of a billing account associated with this support // account. For example, `billingAccounts/ABCDEF-012345-567890`. string billing_account_name = 7; string unify_account_id = 8; // The PricingModel applicable to this support account. PricingModel pricing_model = 9; } // A support case created by the user. message Case { // The case priority with P0 being the most urgent and P4 the least. enum Priority { // Priority is undefined or has not been set yet. PRIORITY_UNSPECIFIED = 0; // Extreme impact on a production service - Service is hard down. P0 = 1; // Critical impact on a production service - Service is currently unusable. P1 = 2; // Severe impact on a production service - Service is usable but greatly // impaired. P2 = 3; // Medium impact on a production service - Service is available, but // moderately impaired. P3 = 4; // General questions or minor issues - Production service is fully // available. P4 = 5; } // The state of a case. enum State { // Case is in an unknown state. STATE_UNSPECIFIED = 0; // Case has been created but no one is assigned to work on it yet. NEW = 1; // Case has been assigned to a support agent. ASSIGNED = 2; // A support agent is currently investigating the case. IN_PROGRESS_GOOGLE_SUPPORT = 3; // Case has been forwarded to product team for further investigation. IN_PROGRESS_GOOGLE_ENG = 4; // Case is under investigation and relates to a known issue. IN_PROGRESS_KNOWN_ISSUE = 5; // Case is waiting for a response from the customer. WAITING_FOR_CUSTOMER_RESPONSE = 6; // A solution has been offered for the case but it isn't closed yet. SOLUTION_OFFERED = 7; // Cases has been fully resolved and is in a closed state. CLOSED = 8; } // The resource name for the Case in format // `supportAccounts/{account_id}/cases/{case_id}` string name = 1; // The short summary of the issue reported in this case. string display_name = 2; // The board description of issue provided with initial summary. string description = 3; // The product component for which this Case is reported. string component = 4; // The product subcomponent for which this Case is reported. string subcomponent = 5; // Timezone the client sending this request is in. // It should be in a format IANA recognizes: https://www.iana.org/time-zone // There is no additional validation done by the API. string client_timezone = 6; // The email addresses that can be copied to receive updates on this case. // Users can specify a maximum of 10 email addresses. repeated string cc_addresses = 7; // The Google Cloud Platform project ID for which this case is created. string project_id = 8; // List of customer issues associated with this case. repeated CustomerIssue issues = 10; // The current priority of this case. Priority priority = 11; // The current state of this case. State state = 12; // Time when this case was created. // Output only. google.protobuf.Timestamp create_time = 13; // Time when this case was last updated. // Output only. google.protobuf.Timestamp update_time = 14; // Email address of user who created this case. // Output only. It is inferred from credentials supplied during case creation. string creator_email = 15; // The issue category applicable to this case. string category = 16; } // Reference to a Google internal ticket used for investigating a support case. // Not every support case will have an internal ticket associated with it. // A support case can have multiple tickets linked to it. message CustomerIssue { // The status of a customer issue. enum IssueState { // Issue in an unknown state. ISSUE_STATE_UNSPECIFIED = 0; // Issue is currently open but the work on it has not been started. OPEN = 1; // Issue is currently being worked on. IN_PROGRESS = 2; // Issue is fixed. FIXED = 3; // Issue has been marked as invalid. WONT_FIX = 4; // Issue verified and in production. VERIFIED = 5; } // Unique identifier for the internal issue. // Output only. string issue_id = 1; // Represents current status of the internal ticket. // Output only. IssueState state = 2; // Time when the internal issue was created. // Output only. google.protobuf.Timestamp create_time = 3; // Time when the internal issue was marked as resolved. // Output only. google.protobuf.Timestamp resolve_time = 4; // Time when the internal issue was last updated. // Output only. google.protobuf.Timestamp update_time = 5; } // A message that contains mapping of a user and their role under a support // account. message SupportRole { // A role which determines the support resources and features a user might // get access to. enum Role { // An unknown role. ROLE_UNSPECIFIED = 0; // The basic support role. BASIC = 1; // The developer role. DEVELOPER = 2; // The operation role. OPERATION = 3; // The site reliability role. SITE_RELIABILITY = 4; } // Email address of user being added through this Role. string email = 1; // The type of role assigned to user. Role role = 2; } // The comment text associated with a `Case`. message Comment { // Text containing a maximum of 3000 characters. string text = 1; // Time when this update was created. // Output only. google.protobuf.Timestamp create_time = 2; // The email address/name of user who created this comment. // Output only. string author = 3; // The resource name for this comment in format // `supportAccounts/{account_id}/cases/{case_id}/{comment_id}`. // Output only. string name = 4; } // Represents the product component taxonomy that is to be used while creating // or updating a `Case`. A client should obtain the list of issue categories, // component/subcomponent from this object and specify it in `Case.category`, // `Case.component` and `Case.subcomponent` fields respectively. message IssueTaxonomy { // The representation of a product component. It is composed of a canonical // name for the product (e.g., Google App Engine), languages in which a // support ticket can be created under this component, a template that // provides hints on important details to be filled out before submitting a // case. It also contains an embedded list of product subcomponents that have // similar attributes as top-level components. // (e.g., Google App Engine > Memcache). message Component { // User friendly name of this component. string display_name = 1; // List of languages in which a support case can be created under this // component. Represented by language codes in ISO_639-1 standard. repeated string languages = 2; // Template to be used while filling the description of a support case. string template = 3; // List of subcomponents under this component. repeated Component subcomponents = 4; } // Represents the category of issue (Technical or Non-Technical) // reported through a support case. message Category { // User friendly name of this category. string display_name = 1; // Map of product components under this category. map components = 2; } // Map of available categories. map categories = 1; }