| // 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<string, Component> components = 2; | |
| } | |
| // Map of available categories. | |
| map<string, Category> categories = 1; | |
| } |