blob: 374d69c1f007769b158e9849dbbb80eaec8e0ccc [file] [log] [blame]
// 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;
}