aboutsummaryrefslogtreecommitdiff
path: root/google/cloud/irm/v1alpha2
diff options
context:
space:
mode:
Diffstat (limited to 'google/cloud/irm/v1alpha2')
-rw-r--r--google/cloud/irm/v1alpha2/incidents.proto486
-rw-r--r--google/cloud/irm/v1alpha2/incidents_service.proto832
-rw-r--r--google/cloud/irm/v1alpha2/irm_gapic.yaml719
3 files changed, 2037 insertions, 0 deletions
diff --git a/google/cloud/irm/v1alpha2/incidents.proto b/google/cloud/irm/v1alpha2/incidents.proto
new file mode 100644
index 000000000..af258ddbc
--- /dev/null
+++ b/google/cloud/irm/v1alpha2/incidents.proto
@@ -0,0 +1,486 @@
+// Copyright 2018 Google LLC.
+//
+// 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.irm.v1alpha2;
+
+import "google/api/annotations.proto";
+import "google/monitoring/v3/metric_service.proto";
+import "google/protobuf/duration.proto";
+import "google/protobuf/timestamp.proto";
+
+option cc_enable_arenas = true;
+option go_package = "google.golang.org/genproto/googleapis/cloud/irm/v1alpha2;irm";
+option java_multiple_files = true;
+option java_package = "com.google.irm.service.v1alpha2.api";
+
+// A user of the IRM app.
+message User {
+ // One of several ways to uniquely identify a user.
+ oneof user {
+ // Output only. User id that will allow to get additional information from
+ // People API. This field will be populated implicitly if the caller creates
+ // or edits a resource (for example, posts an annotation).
+ string user_id = 1;
+
+ // Email address of the user. This must be associated with a Google account.
+ // This field will be set if the user is explicitly identified (verbatim) by
+ // email address in an API request (potentially sometime in the past). It
+ // will not be populated based on the credentials of a caller of the API.
+ string email = 2;
+ }
+}
+
+// A signal is a message calling attention to a (potential) incident. An example
+// is a page based on a Stackdriver Alerting policy.
+message Signal {
+ // An artifact associated with the Signal.
+ message SignalArtifact {
+ // The type of resource linked to
+ oneof artifact_type {
+ // A custom user type
+ string user_type = 2;
+ }
+
+ // The URI for the artifact.
+ string uri = 3;
+ }
+
+ // Describes whether the alerting condition is still firing.
+ enum State {
+ // Unspecified
+ STATE_UNSPECIFIED = 0;
+
+ // Firing
+ STATE_OPEN = 1;
+
+ // Non-firing
+ STATE_CLOSED = 2;
+ }
+
+ // Resource name of the signal, for example,
+ // "projects/{project_id}/signals/{signal_id}".
+ string name = 1;
+
+ // Etag to validate the object is unchanged for a read-modify-write operation.
+ // An empty etag will overwrite other changes.
+ string etag = 2;
+
+ // Resource name of the incident this signal is currently assigned to.
+ // May be empty if signal is unassigned.
+ string incident = 3;
+
+ // Output only. Time this signal was created.
+ google.protobuf.Timestamp create_time = 4;
+
+ // Output only. Time this signal was closed. This field is not populated
+ // while the signal is still firing.
+ google.protobuf.Timestamp close_time = 10;
+
+ // The time this Signal was first detected. This is identical to create_time
+ // for Signals created by Stackdriver Alerting.
+ google.protobuf.Timestamp detect_time = 15;
+
+ // Output only. The user that created this signal for manually created
+ // signals. Empty if this signal was generated by a system (for example,
+ // Stackdriver Alerting).
+ User creator = 5;
+
+ // One-line summary of the signal.
+ // Immutable.
+ string title = 6;
+
+ // Content type string, for example, 'text/plain' or'text/html'.
+ string content_type = 7;
+
+ // Full message of the signal.
+ // Immutable for Signals created by Stackdriver Alerting.
+ string content = 8;
+
+ // The state of this signal.
+ // For Signals created by Stackdriver Alerting this field is output only.
+ State signal_state = 9;
+
+ // A set of artifacts to additional resources for this Signal. For example, a
+ // link to Stackdriver logging for the Signal.
+ // Immutable for Signals created by Stackdriver Alerting.
+ repeated SignalArtifact signal_artifacts = 16;
+}
+
+// A text annotation by a user.
+message Annotation {
+ // Resource name of the annotation, for example,
+ // "projects/{project_id}/incidents/{incident_id}/annotations/{annotation_id}".
+ string name = 1;
+
+ // Output only. Author of the annotation.
+ User author = 2;
+
+ // Output only. Time the annotation was created.
+ google.protobuf.Timestamp create_time = 3;
+
+ // Content of the annotation. Immutable.
+ string content = 4;
+}
+
+// A tag by a user.
+message Tag {
+ // Resource name of a tag, for example,
+ // "projects/{project_id}/incidents/{incident_id}/tags/{tag_id}"
+ string name = 1;
+
+ // Display name of the resource (for example, "cause:rollout"). Immutable.
+ string display_name = 2;
+}
+
+// Synopsis is a summary of an incident and it contains a textual content,
+// an author and a last updated timestamp.
+message Synopsis {
+ // Content type string, for example, 'text/plain' or 'text/html'.
+ string content_type = 1;
+
+ // Textual content of the synopsis. It can be plain text or markdown as
+ // indicated by the content_type.
+ string content = 2;
+
+ // Last updated timestamp.
+ google.protobuf.Timestamp update_time = 3;
+
+ // Author of the synopsis.
+ User author = 4;
+}
+
+// Representation of an incident.
+message Incident {
+ // CommunicationVenue is a record of where conversations about an incident
+ // are happening.
+ message CommunicationVenue {
+ // The type of channel/venue for incident communications.
+ enum ChannelType {
+ // An unspecified communication channel.
+ CHANNEL_TYPE_UNSPECIFIED = 0;
+
+ // A communication channel that is represented by a generic URI.
+ CHANNEL_TYPE_URI = 1;
+
+ // A communication channel that represents a Slack channel.
+ CHANNEL_TYPE_SLACK = 5;
+ }
+
+ // A URI to the web interface of the channel.
+ string uri = 1;
+
+ // A name representing the channel in IRM UI.
+ string display_name = 2;
+
+ // The type of channel/venue for incident communications.
+ ChannelType channel_type = 3;
+ }
+
+ // Specifies the escalation level of this incident, within the IRM protocol
+ // for handling incidents.
+ enum EscalationLevel {
+ // The incident has not been escalated. This is the value used by all new
+ // and legacy incidents.
+ ESCALATION_LEVEL_UNSPECIFIED = 0;
+
+ // The incident has been escalated to the organizational level.
+ ESCALATION_LEVEL_ORGANIZATION = 1;
+ }
+
+ // Severity of an incident.
+ enum Severity {
+ // Severity is not specified.
+ SEVERITY_UNSPECIFIED = 0;
+
+ // Huge incident.
+ SEVERITY_HUGE = 1;
+
+ // Major incident.
+ SEVERITY_MAJOR = 2;
+
+ // Medium incident.
+ SEVERITY_MEDIUM = 3;
+
+ // Minor incident.
+ SEVERITY_MINOR = 4;
+
+ // Negligible incident.
+ SEVERITY_NEGLIGIBLE = 5;
+ }
+
+ // Stage of an incident.
+ enum Stage {
+ // This is the default value if no stage has been specified.
+ // Note: The caller of the API should set the stage to DETECTED.
+ STAGE_UNSPECIFIED = 0;
+
+ // The incident has been detected. This is the initial stage of a new
+ // incident.
+ // Note: The caller still has to set the stage manually.
+ STAGE_DETECTED = 4;
+
+ // This incident has been formally characterized.
+ STAGE_TRIAGED = 1;
+
+ // This incident has been mitigated, i.e. does not affect the service level
+ // anymore.
+ STAGE_MITIGATED = 2;
+
+ // This incident has been fully resolved, i.e. there are no immediate
+ // follow-up tasks.
+ STAGE_RESOLVED = 3;
+
+ // Postmortem for the incident was written.
+ STAGE_DOCUMENTED = 5;
+
+ // Stage for an incident with `duplicate_incident`. This incident is not
+ // authoritative anymore and the `duplicate_incident` should be used to
+ // determine the stage.
+ STAGE_DUPLICATE = 6;
+ }
+
+ // Output only. Resource name of the incident, for example,
+ // "projects/{project_id}/incidents/{incident_id}".
+ string name = 1;
+
+ // One-line summary of the incident.
+ string title = 2;
+
+ // Escalation level of the incident.
+ EscalationLevel escalation_level = 3;
+
+ // Etag to validate the object is unchanged for a read-modify-write operation.
+ // An empty etag will overwrite other changes.
+ string etag = 4;
+
+ // Severity of the incident.
+ Severity severity = 5;
+
+ // Stage of the incident.
+ Stage stage = 6;
+
+ // Resource name of the incident this incident is a duplicate of. Empty if
+ // this incident is not a duplicate.
+ // An incident can only be a duplicate of an incident that is not marked as a
+ // duplicate already. Setting this to a non-empty value must also set the
+ // stage to `STAGE_DUPLICATE`. Unsetting this value value must also update
+ // `stage` to a value other than `STAGE_DUPLICATE`.
+ string duplicate_incident = 9;
+
+ // Output only. Time this incident started. Used to measure the 'elapsed
+ // time'. Start time of an incident is the earliest creation time of any of
+ // its Signals or the create time of the incident if no Signals are assigned.
+ google.protobuf.Timestamp start_time = 7;
+
+ // Output only. Synopsis of this incident.
+ Synopsis synopsis = 8;
+
+ // Location of communications for this incident. This is informational
+ // only; IRM does not use this to send messages.
+ CommunicationVenue communication_venue = 10;
+}
+
+// Describes a role that can be assigned to an incident.
+message IncidentRole {
+ // List of possible roles.
+ enum Type {
+ // The role is unspecified.
+ TYPE_UNSPECIFIED = 0;
+
+ // Incident Commander: Manages response plan, near-term and long-term
+ // objectives, establishes priorities, and delegates tasks as needed.
+ TYPE_INCIDENT_COMMANDER = 1;
+
+ // Communications Lead: Keeps everybody outside and within the response team
+ // informed.
+ TYPE_COMMUNICATIONS_LEAD = 2;
+
+ // Operations Lead: Figures out what to do, and gets it done.
+ TYPE_OPERATIONS_LEAD = 3;
+
+ // External Customer Communications Lead: Responsible for communicating
+ // incident details to customers/public.
+ TYPE_EXTERNAL_CUSTOMER_COMMUNICATIONS_LEAD = 4;
+
+ // Primary Oncall: Responds to the initial page and handles all
+ // responsibilities for pre-escalated incidents.
+ TYPE_PRIMARY_ONCALL = 5;
+
+ // Secondary Oncall: Helps the primary oncall if necessary; mostly useful
+ // for pre-escalated incidents.
+ TYPE_SECONDARY_ONCALL = 6;
+
+ // User-specified roles. One example is a Planning Lead, who keeps track of
+ // the incident. Another is an assistant Incident Commander.
+ TYPE_OTHER = 7;
+ }
+
+ // The type of role. The role type is immutable in role assignments. Each role
+ // type can only be used once per incident, except for TYPE_OTHER.
+ Type type = 1;
+
+ // Output only unless TYPE_OTHER is used. Title of the role. For TYPE_OTHER,
+ // must be unique within an incident.
+ string title = 2;
+
+ // Output only unless TYPE_OTHER is used. Description of the role.
+ string description = 3;
+}
+
+// Stores the assignee of a role as well as the proposed next assignee.
+message IncidentRoleAssignment {
+ // Output only. Resource name such as
+ // "projects/{project_id}/incidents/{incident_id}/role_assignments/{role_id}".
+ string name = 1;
+
+ // Output only. Etag for this version of the resource. Must be specified in
+ // update requests and match the current version in storage. Must not be
+ // modified by the client.
+ string etag = 2;
+
+ // The role that is or will be assigned.
+ IncidentRole role = 3;
+
+ // The user this role is assigned to. This field can only be directly set
+ // during creation request. Subsequent updates are done via the
+ // IncidentRoleHandover methods.
+ User assignee = 4;
+
+ // The recipient of a requested role handoff. This field can only be directly
+ // set during creation request. Subsequent updates are done via the
+ // IncidentRoleHandover methods.
+ //
+ // `assignee` is always the current role-holder, and `proposed_assignee` is
+ // used to track unfinished assignments and handoffs. Let's say Bob assigns
+ // Alice to a role. Then the fields are:
+ // `assignee`: nil, `proposed_assignee`: Alice
+ // If Alice accepts, then the fields are:
+ // `assignee`: Alice, `proposed_assignee`: nil
+ // If she cancels, then the RoleAssignment is deleted.
+ // Let's say Alice has the role. Then the fields are:
+ // `assignee`: Alice, `proposed_assignee`: nil
+ // If Alice becomes incapacitated and Bob requests Carol to take over, then
+ // the fields are:
+ // `assignee`: Alice, `proposed_assignee`: Carol
+ // After Carol accepts the handover, the fields are:
+ // `assignee`: Carol, `proposed_assignee`: nil
+ // Or if Carol refuses the handover, the fields are:
+ // `assignee`: Alice, `proposed_assignee`: nil
+ User proposed_assignee = 5;
+}
+
+// External artifact associated to an incident.
+message Artifact {
+ // Possible types of an artifact.
+ enum Type {
+ // External type is unspecified.
+ TYPE_UNSPECIFIED = 0;
+
+ // URL.
+ TYPE_URL = 1;
+
+ // A JIRA issue.
+ TYPE_JIRA_ISSUE = 4;
+ }
+
+ // Output only. Resource name such as
+ // "projects/{project_id}/incidents/{incident_id}/artifacts/{artifact_id}".
+ string name = 1;
+
+ // User provided name of an artifact.
+ string display_name = 2;
+
+ // Output only. Etag for this version of the resource. Must be specified in
+ // update requests and match the current version in storage. Must not be
+ // modified by the client.
+ string etag = 3;
+
+ // URL to access the artifact.
+ string url = 4;
+
+ // Type of this artifact.
+ Type type = 5;
+}
+
+// Communication Channels are mechanisms used to receive notifications
+// about changes to incidents.
+message CommunicationChannel {
+ // A communication channel that delivers messages to an email address.
+ message Email {
+ // The email address, for example, "user@example.com".
+ string address = 1;
+ }
+
+ // A communication channel that delivers messages to a Stackdriver
+ // notification channel.
+ message NotificationChannel {
+ // Stackdriver notification channel name.
+ string name = 1;
+ }
+
+ // An endpoint describes how messages will be delivered.
+ oneof endpoint {
+ // Messages will be delivered via email.
+ Email email = 1;
+
+ // Messages will be delivered via a Stackdriver notification channel.
+ NotificationChannel notification_channel = 2;
+ }
+}
+
+// A subscription allows users to get notifications about changes to
+// an incident.
+message Subscription {
+ // Types of changes that users can subscribe to in an incident.
+ enum EventType {
+ // An event_type that's not specified is an error.
+ EVENT_TYPE_UNSPECIFIED = 0;
+
+ // The incident's title has changed.
+ EVENT_TYPE_TITLE_CHANGE = 1;
+
+ // The incident's synopsis has changed.
+ EVENT_TYPE_SYNOPSIS_CHANGE = 2;
+
+ // The incident's stage has changed.
+ EVENT_TYPE_STAGE_CHANGE = 3;
+
+ // The incident's severity has changed.
+ EVENT_TYPE_SEVERITY_CHANGE = 4;
+
+ // A new annotation has been added to the incident.
+ EVENT_TYPE_ANNOTATION_ADD = 5;
+
+ // An annotation has been modified.
+ EVENT_TYPE_ANNOTATION_CHANGE = 6;
+ }
+
+ // Output only. Resource name such as
+ // "projects/{project_id}/incidents/{incident_id}/subscriptions/{subscription_id}".
+ string name = 1;
+
+ // Output only. Etag for this version of the resource. Must be specified in
+ // update requests and match the current version in storage. Must not be
+ // modified by the client.
+ string etag = 2;
+
+ // A communications channel to send subscription messages to.
+ CommunicationChannel subscription_channel = 3;
+
+ // Types of events this subscription receives notifications for.
+ repeated EventType event_types = 4;
+}
diff --git a/google/cloud/irm/v1alpha2/incidents_service.proto b/google/cloud/irm/v1alpha2/incidents_service.proto
new file mode 100644
index 000000000..e6cf44078
--- /dev/null
+++ b/google/cloud/irm/v1alpha2/incidents_service.proto
@@ -0,0 +1,832 @@
+// Copyright 2018 Google LLC.
+//
+// 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.irm.v1alpha2;
+
+import "google/api/annotations.proto";
+import "google/cloud/irm/v1alpha2/incidents.proto";
+import "google/protobuf/empty.proto";
+import "google/protobuf/field_mask.proto";
+import "google/protobuf/timestamp.proto";
+
+option cc_enable_arenas = true;
+option go_package = "google.golang.org/genproto/googleapis/cloud/irm/v1alpha2;irm";
+option java_multiple_files = true;
+option java_package = "com.google.irm.service.v1alpha2.api";
+
+// The Incident API for Incident Response & Management.
+service IncidentService {
+ // Creates a new incident.
+ rpc CreateIncident(CreateIncidentRequest) returns (Incident) {
+ option (google.api.http) = {
+ post: "/v1alpha2/{parent=projects/*}/incidents"
+ body: "incident"
+ };
+ }
+
+ // Returns an incident by name.
+ rpc GetIncident(GetIncidentRequest) returns (Incident) {
+ option (google.api.http) = {
+ get: "/v1alpha2/{name=projects/*/incidents/*}"
+ };
+ }
+
+ // Returns a list of incidents.
+ // Incidents are ordered by start time, with the most recent incidents first.
+ rpc SearchIncidents(SearchIncidentsRequest)
+ returns (SearchIncidentsResponse) {
+ option (google.api.http) = {
+ get: "/v1alpha2/{parent=projects/*}/incidents:search"
+ };
+ }
+
+ // Updates an existing incident.
+ rpc UpdateIncident(UpdateIncidentRequest) returns (Incident) {
+ option (google.api.http) = {
+ patch: "/v1alpha2/{incident.name=projects/*/incidents/*}"
+ body: "incident"
+ };
+ }
+
+ // Returns a list of incidents that are "similar" to the specified incident
+ // or signal. This functionality is provided on a best-effort basis and the
+ // definition of "similar" is subject to change.
+ rpc SearchSimilarIncidents(SearchSimilarIncidentsRequest)
+ returns (SearchSimilarIncidentsResponse) {
+ option (google.api.http) = {
+ get: "/v1alpha2/{name=projects/*/incidents/*}:searchSimilar"
+ additional_bindings {
+ get: "/v1alpha2/{name=projects/*/signals/*}:searchSimilarIncidents"
+ }
+ };
+ }
+
+ // Creates an annotation on an existing incident. Only 'text/plain' and
+ // 'text/markdown' annotations can be created via this method.
+ rpc CreateAnnotation(CreateAnnotationRequest) returns (Annotation) {
+ option (google.api.http) = {
+ post: "/v1alpha2/{parent=projects/*/incidents/*}/annotations"
+ body: "annotation"
+ };
+ }
+
+ // Lists annotations that are part of an incident. No assumptions should be
+ // made on the content-type of the annotation returned.
+ rpc ListAnnotations(ListAnnotationsRequest)
+ returns (ListAnnotationsResponse) {
+ option (google.api.http) = {
+ get: "/v1alpha2/{parent=projects/*/incidents/*}/annotations"
+ };
+ }
+
+ // Creates a tag on an existing incident.
+ rpc CreateTag(CreateTagRequest) returns (Tag) {
+ option (google.api.http) = {
+ post: "/v1alpha2/{parent=projects/*/incidents/*}/tags"
+ body: "tag"
+ };
+ }
+
+ // Deletes an existing tag.
+ rpc DeleteTag(DeleteTagRequest) returns (google.protobuf.Empty) {
+ option (google.api.http) = {
+ delete: "/v1alpha2/{name=projects/*/incidents/*/tags/*}"
+ };
+ }
+
+ // Lists tags that are part of an incident.
+ rpc ListTags(ListTagsRequest) returns (ListTagsResponse) {
+ option (google.api.http) = {
+ get: "/v1alpha2/{parent=projects/*/incidents/*}/tags"
+ };
+ }
+
+ // Creates a new signal.
+ rpc CreateSignal(CreateSignalRequest) returns (Signal) {
+ option (google.api.http) = {
+ post: "/v1alpha2/{parent=projects/*}/signals"
+ body: "signal"
+ };
+ }
+
+ // Lists signals that are part of an incident.
+ // Signals are returned in reverse chronological order.
+ rpc SearchSignals(SearchSignalsRequest) returns (SearchSignalsResponse) {
+ option (google.api.http) = {
+ get: "/v1alpha2/{parent=projects/*}/signals:search"
+ };
+ }
+
+ // Returns a signal by name.
+ rpc GetSignal(GetSignalRequest) returns (Signal) {
+ option (google.api.http) = {
+ get: "/v1alpha2/{name=projects/*/signals/*}"
+ };
+ }
+
+ // Updates an existing signal (for example, to assign/unassign it to an
+ // incident).
+ rpc UpdateSignal(UpdateSignalRequest) returns (Signal) {
+ option (google.api.http) = {
+ patch: "/v1alpha2/{signal.name=projects/*/signals/*}"
+ body: "signal"
+ };
+ }
+
+ // Escalates an incident.
+ rpc EscalateIncident(EscalateIncidentRequest)
+ returns (EscalateIncidentResponse) {
+ option (google.api.http) = {
+ post: "/v1alpha2/{incident.name=projects/*/incidents/*}:escalate"
+ body: "*"
+ };
+ }
+
+ // Creates a new artifact.
+ rpc CreateArtifact(CreateArtifactRequest) returns (Artifact) {
+ option (google.api.http) = {
+ post: "/v1alpha2/{parent=projects/*/incidents/*}/artifacts"
+ body: "artifact"
+ };
+ }
+
+ // Returns a list of artifacts for an incident.
+ rpc ListArtifacts(ListArtifactsRequest) returns (ListArtifactsResponse) {
+ option (google.api.http) = {
+ get: "/v1alpha2/{parent=projects/*/incidents/*}/artifacts"
+ };
+ }
+
+ // Updates an existing artifact.
+ rpc UpdateArtifact(UpdateArtifactRequest) returns (Artifact) {
+ option (google.api.http) = {
+ patch: "/v1alpha2/{artifact.name=projects/*/incidents/*/artifacts/*}"
+ body: "artifact"
+ };
+ }
+
+ // Deletes an existing artifact.
+ rpc DeleteArtifact(DeleteArtifactRequest) returns (google.protobuf.Empty) {
+ option (google.api.http) = {
+ delete: "/v1alpha2/{name=projects/*/incidents/*/artifacts/*}"
+ };
+ }
+
+ // Sends a summary of the shift for oncall handoff.
+ rpc SendShiftHandoff(SendShiftHandoffRequest)
+ returns (SendShiftHandoffResponse) {
+ option (google.api.http) = {
+ post: "/v1alpha2/{parent=projects/*}/shiftHandoff:send"
+ body: "*"
+ };
+ }
+
+ // Creates a new subscription.
+ // This will fail if:
+ // a. there are too many (50) subscriptions in the incident already
+ // b. a subscription using the given channel already exists
+ rpc CreateSubscription(CreateSubscriptionRequest) returns (Subscription) {
+ option (google.api.http) = {
+ post: "/v1alpha2/{parent=projects/*/incidents/*}/subscriptions"
+ body: "subscription"
+ };
+ }
+
+ // Updates a subscription.
+ rpc UpdateSubscription(UpdateSubscriptionRequest) returns (Subscription) {
+ option (google.api.http) = {
+ patch: "/v1alpha2/{subscription.name=projects/*/incidents/*/subscriptions/*}"
+ body: "subscription"
+ };
+ }
+
+ // Returns a list of subscriptions for an incident.
+ rpc ListSubscriptions(ListSubscriptionsRequest)
+ returns (ListSubscriptionsResponse) {
+ option (google.api.http) = {
+ get: "/v1alpha2/{parent=projects/*/incidents/*}/subscriptions"
+ };
+ }
+
+ // Deletes an existing subscription.
+ rpc DeleteSubscription(DeleteSubscriptionRequest)
+ returns (google.protobuf.Empty) {
+ option (google.api.http) = {
+ delete: "/v1alpha2/{name=projects/*/incidents/*/subscriptions/*}"
+ };
+ }
+
+ // Creates a role assignment on an existing incident. Normally, the user field
+ // will be set when assigning a role to oneself, and the next field will be
+ // set when proposing another user as the assignee. Setting the next field
+ // directly to a user other than oneself is equivalent to proposing and
+ // force-assigning the role to the user.
+ rpc CreateIncidentRoleAssignment(CreateIncidentRoleAssignmentRequest)
+ returns (IncidentRoleAssignment) {
+ option (google.api.http) = {
+ post: "/v1alpha2/{parent=projects/*/incidents/*}/roleAssignments"
+ body: "*"
+ };
+ }
+
+ // Deletes an existing role assignment.
+ rpc DeleteIncidentRoleAssignment(DeleteIncidentRoleAssignmentRequest)
+ returns (google.protobuf.Empty) {
+ option (google.api.http) = {
+ delete: "/v1alpha2/{name=projects/*/incidents/*/roleAssignments/*}"
+ };
+ }
+
+ // Lists role assignments that are part of an incident.
+ rpc ListIncidentRoleAssignments(ListIncidentRoleAssignmentsRequest)
+ returns (ListIncidentRoleAssignmentsResponse) {
+ option (google.api.http) = {
+ get: "/v1alpha2/{parent=projects/*/incidents/*}/roleAssignments"
+ };
+ }
+
+ // Starts a role handover. The proposed assignee will receive an email
+ // notifying them of the assignment. This will fail if a role handover is
+ // already pending.
+ rpc RequestIncidentRoleHandover(RequestIncidentRoleHandoverRequest)
+ returns (IncidentRoleAssignment) {
+ option (google.api.http) = {
+ post: "/v1alpha2/{name=projects/*/incidents/*/roleAssignments/*}:requestHandover"
+ body: "*"
+ };
+ }
+
+ // Confirms a role handover. This will fail if the 'proposed_assignee' field
+ // of the IncidentRoleAssignment is not equal to the 'new_assignee' field of
+ // the request. If the caller is not the new_assignee,
+ // ForceIncidentRoleHandover should be used instead.
+ rpc ConfirmIncidentRoleHandover(ConfirmIncidentRoleHandoverRequest)
+ returns (IncidentRoleAssignment) {
+ option (google.api.http) = {
+ post: "/v1alpha2/{name=projects/*/incidents/*/roleAssignments/*}:confirmHandover"
+ body: "*"
+ };
+ }
+
+ // Forces a role handover. This will fail if the 'proposed_assignee' field of
+ // the IncidentRoleAssignment is not equal to the 'new_assignee' field of the
+ // request. If the caller is the new_assignee, ConfirmIncidentRoleHandover
+ // should be used instead.
+ rpc ForceIncidentRoleHandover(ForceIncidentRoleHandoverRequest)
+ returns (IncidentRoleAssignment) {
+ option (google.api.http) = {
+ post: "/v1alpha2/{name=projects/*/incidents/*/roleAssignments/*}:forceHandover"
+ body: "*"
+ };
+ }
+
+ // Cancels a role handover. This will fail if the 'proposed_assignee' field of
+ // the IncidentRoleAssignment is not equal to the 'new_assignee' field of the
+ // request.
+ rpc CancelIncidentRoleHandover(CancelIncidentRoleHandoverRequest)
+ returns (IncidentRoleAssignment) {
+ option (google.api.http) = {
+ post: "/v1alpha2/{name=projects/*/incidents/*/roleAssignments/*}:cancelHandover"
+ body: "*"
+ };
+ }
+}
+
+// Request for the CreateIncident method.
+message CreateIncidentRequest {
+ // The incident to create.
+ Incident incident = 1;
+
+ // The resource name of the hosting Stackdriver project which the incident
+ // belongs to.
+ // The name is of the form `projects/{project_id_or_number}`
+ // .
+ string parent = 2;
+}
+
+// Request for the GetIncident method.
+message GetIncidentRequest {
+ // Resource name of the incident, for example,
+ // "projects/{project_id}/incidents/{incident_id}".
+ string name = 1;
+}
+
+// Request for the UpdateIncident method.
+message UpdateIncidentRequest {
+ // The incident to update with the new values.
+ Incident incident = 1;
+
+ // List of fields that should be updated.
+ google.protobuf.FieldMask update_mask = 2;
+}
+
+// Request for the SearchSimilarIncidents method.
+message SearchSimilarIncidentsRequest {
+ // Resource name of the incident or signal, for example,
+ // "projects/{project_id}/incidents/{incident_id}".
+ string name = 1;
+
+ // Number of similar incidents to return.
+ int32 page_size = 2;
+
+ // Page token from an earlier query, as returned in 'next_page_token'.
+ string page_token = 3;
+}
+
+// Response for the SearchSimilarIncidents method.
+message SearchSimilarIncidentsResponse {
+ // A single search result, i.e. an incident with (potentially) additional
+ // information.
+ message Result {
+ // An incident that is "similar" to the incident or signal specified in the
+ // request.
+ Incident incident = 1;
+ }
+
+ // The search results, ordered by descending relevance.
+ repeated Result results = 1;
+
+ // Page token to fetch the next set of similar incidents.
+ string next_page_token = 2;
+}
+
+// Request for the CreateAnnotation method.
+message CreateAnnotationRequest {
+ // Resource name of the incident, for example,
+ // "projects/{project_id}/incidents/{incident_id}".
+ string parent = 1;
+
+ // Only annotation.content is an input argument.
+ Annotation annotation = 2;
+}
+
+// Request for the ListAnnotations method.
+message ListAnnotationsRequest {
+ // Resource name of the incident, for example,
+ // "projects/{project_id}/incidents/{incident_id}".
+ string parent = 1;
+
+ // Number of annotations to return.
+ int32 page_size = 2;
+
+ // Page token from an earlier query, as returned in `next_page_token`.
+ string page_token = 3;
+}
+
+// Response for the ListAnnotations method.
+message ListAnnotationsResponse {
+ // List of annotations.
+ repeated Annotation annotations = 1;
+
+ // Page token to fetch the next set of annotations.
+ string next_page_token = 2;
+}
+
+// Request for the CreateTag method.
+message CreateTagRequest {
+ // Resource name of the incident, for example,
+ // "projects/{project_id}/incidents/{incident_id}".
+ string parent = 1;
+
+ // Tag to create. Only tag.display_name is an input argument.
+ Tag tag = 2;
+}
+
+// Request for the DeleteTag method.
+message DeleteTagRequest {
+ // Resource name of the tag.
+ string name = 1;
+}
+
+// Request for the ListTagsForIncident method.
+message ListTagsRequest {
+ // Resource name of the incident, for example,
+ // "projects/{project_id}/incidents/{incident_id}".
+ string parent = 1;
+
+ // Number of tags to return.
+ int32 page_size = 2;
+
+ // Page token from an earlier query, as returned in `next_page_token`.
+ string page_token = 3;
+}
+
+// Response for the ListTagsForIncident method.
+message ListTagsResponse {
+ // Tags.
+ repeated Tag tags = 1;
+
+ // Page token to fetch the next set of tags.
+ string next_page_token = 2;
+}
+
+// Request for the CreateSignal method.
+message CreateSignalRequest {
+ // The resource name of the hosting Stackdriver project which requested
+ // signal belongs to.
+ string parent = 1;
+
+ // The signal to create.
+ Signal signal = 2;
+}
+
+// Request for the SearchSignals method.
+message SearchSignalsRequest {
+ // The resource name of the hosting Stackdriver project which requested
+ // incidents belong to.
+ string parent = 1;
+
+ // Query to specify which signals should be returned.
+ string query = 2;
+
+ // Maximum number of `signals` to return in the response.
+ int32 page_size = 3;
+
+ // Page token from an earlier query, as returned in `next_page_token`. All
+ // field values except for page_size and page_token should be the same as the
+ // original query (may return an error or unexpected data otherwise).
+ string page_token = 4;
+}
+
+// Response for the SearchSignals method.
+message SearchSignalsResponse {
+ // Signals that matched the query in the request.
+ repeated Signal signals = 1;
+
+ // Page token to fetch the next set of signals.
+ string next_page_token = 2;
+}
+
+// Request for the GetSignal method.
+message GetSignalRequest {
+ // Resource name of the Signal resource, for example,
+ // "projects/{project_id}/signals/{signal_id}".
+ string name = 1;
+}
+
+// Request for the UpdateSignal method.
+message UpdateSignalRequest {
+ // The signal to update with the new values.
+ Signal signal = 1;
+
+ // List of fields that should be updated.
+ google.protobuf.FieldMask update_mask = 2;
+}
+
+// Request for the SearchIncidents method.
+message SearchIncidentsRequest {
+ // The resource name of the hosting Stackdriver project which requested
+ // incidents belong to.
+ string parent = 1;
+
+ // An expression that defines which incidents to return.
+ //
+ // Search atoms can be used to match certain specific fields. Otherwise,
+ // plain text will match text fields in the incident.
+ //
+ // Search atoms:
+ // * `start` - (timestamp) The time the incident started.
+ // * `stage` - The stage of the incident, one of detected, triaged, mitigated,
+ // resolved, documented, or duplicate (which correspond to values in the
+ // Incident.Stage enum). These are ordered, so `stage<resolved` is
+ // equivalent to `stage:detected OR stage:triaged OR stage:mitigated`.
+ // * `severity` - (Incident.Severity) The severity of the incident.
+ // + Supports matching on a specific severity (for example,
+ // `severity:major`) or on a range (for example, `severity>medium`,
+ // `severity<=minor`, etc.).
+ //
+ // Timestamp formats:
+ // * yyyy-MM-dd - an absolute date, treated as a calendar-day-wide window.
+ // In other words, the "<" operator will match dates before that date, the
+ // ">" operator will match dates after that date, and the ":" or "="
+ // operators will match the entire day.
+ // * Nd (for example, 7d) - a relative number of days ago, treated as a moment
+ // in time (as opposed to a day-wide span). A multiple of 24 hours ago (as
+ // opposed to calendar days). In the case of daylight savings time, it will
+ // apply the current timezone to both ends of the range. Note that exact
+ // matching (for example, `start:7d`) is unlikely to be useful because that
+ // would only match incidents created precisely at a particular instant in
+ // time.
+ //
+ // Examples:
+ //
+ // * `foo` - matches incidents containing the word "foo"
+ // * `"foo bar"` - matches incidents containing the phrase "foo bar"
+ // * `foo bar` or `foo AND bar` - matches incidents containing the words "foo"
+ // and "bar"
+ // * `foo -bar` or `foo AND NOT bar` - matches incidents containing the word
+ // "foo" but not the word "bar"
+ // * `foo OR bar` - matches incidents containing the word "foo" or the word
+ // "bar"
+ // * `start>2018-11-28` - matches incidents which started after November 11,
+ // 2018.
+ // * `start<=2018-11-28` - matches incidents which started on or before
+ // November 11, 2018.
+ // * `start:2018-11-28` - matches incidents which started on November 11,
+ // 2018.
+ // * `start>7d` - matches incidents which started after the point in time 7*24
+ // hours ago
+ // * `start>180d` - similar to 7d, but likely to cross the daylight savings
+ // time boundary, so the end time will be 1 hour different from "now."
+ // * `foo AND start>90d AND stage<resolved` - unresolved incidents from the
+ // past 90 days containing the word "foo"
+ string query = 2;
+
+ // Number of incidents to return.
+ int32 page_size = 3;
+
+ // Page token from an earlier query, as returned in `next_page_token`.
+ string page_token = 4;
+
+ // The time zone name. It should be an IANA TZ name, such as
+ // "America/Los_Angeles". For more information,
+ // see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones.
+ // If no time zone is specified, the default is UTC.
+ string time_zone = 5;
+}
+
+// Response for the SearchIncidents method.
+message SearchIncidentsResponse {
+ // Incidents.
+ repeated Incident incidents = 1;
+
+ // Page token to fetch the next set of incidents.
+ string next_page_token = 2;
+}
+
+// Request to escalate an incident.
+message EscalateIncidentRequest {
+ // The incident to escalate with the new values.
+ Incident incident = 1;
+
+ // List of fields that should be updated.
+ google.protobuf.FieldMask update_mask = 2;
+
+ // Subscriptions to add or update. Existing subscriptions with the same
+ // channel and address as a subscription in the list will be updated.
+ repeated Subscription subscriptions = 3;
+
+ // Tags to add. Tags identical to existing tags will be ignored.
+ repeated Tag tags = 4;
+
+ // Roles to add or update. Existing roles with the same type (and title, for
+ // TYPE_OTHER roles) will be updated.
+ repeated IncidentRoleAssignment roles = 5;
+
+ // Artifacts to add. All artifacts are added without checking for duplicates.
+ repeated Artifact artifacts = 6;
+}
+
+// Response for EscalateIncident.
+message EscalateIncidentResponse {
+ // The escalated incident.
+ Incident incident = 1;
+
+ // New or modified subscriptions.
+ repeated Subscription subscriptions = 2;
+
+ // New or modified tags.
+ repeated Tag tags = 3;
+
+ // New or modified roles.
+ repeated IncidentRole roles = 4;
+
+ // New or modified artifacts.
+ repeated Artifact artifacts = 5;
+}
+
+// Request for the CreateArtifact method.
+message CreateArtifactRequest {
+ // Resource name of the incident, for example,
+ // "projects/{project_id}/incidents/{incident_id}".
+ string parent = 1;
+
+ // The artifact to create.
+ Artifact artifact = 2;
+}
+
+// Request for the ListArtifacts method.
+message ListArtifactsRequest {
+ // Resource name of the incident, for example,
+ // "projects/{project_id}/incidents/{incident_id}".
+ string parent = 1;
+
+ // Number of artifacts to return.
+ int32 page_size = 2;
+
+ // Page token from an earlier query, as returned in `next_page_token`.
+ string page_token = 3;
+}
+
+// Response for the ListArtifacts method.
+message ListArtifactsResponse {
+ // List of artifacts.
+ repeated Artifact artifacts = 1;
+
+ // Page token to fetch the next set of artifacts.
+ string next_page_token = 2;
+}
+
+// Request for the UpdateArtifact method.
+message UpdateArtifactRequest {
+ // The artifact to update with the new values.
+ Artifact artifact = 1;
+
+ // List of fields that should be updated.
+ google.protobuf.FieldMask update_mask = 2;
+}
+
+// Request for deleting an artifact.
+message DeleteArtifactRequest {
+ // Resource name of the artifact.
+ string name = 1;
+}
+
+// SendShiftHandoff and PreviewShiftHandoff RPC request.
+message SendShiftHandoffRequest {
+ // Describes an incident for inclusion in the handoff.
+ // This is wrapped in a message to provide flexibility for potentially
+ // attaching additional data to each incident in the future.
+ message Incident {
+ // Resource name of the incident, for example,
+ // "projects/{project_id}/incidents/{incident_id}".
+ string name = 1;
+ }
+
+ // The resource name of the Stackdriver project that the handoff is being sent
+ // from. for example, `projects/{project_id}`
+ string parent = 1;
+
+ // Email addresses of the recipients of the handoff, for example,
+ // "user@example.com". Must contain at least one entry.
+ repeated string recipients = 2;
+
+ // Email addresses that should be CC'd on the handoff. Optional.
+ repeated string cc = 3;
+
+ // The subject of the email. Required.
+ string subject = 4;
+
+ // Content type string, for example, 'text/plain' or 'text/html'.
+ string notes_content_type = 5;
+
+ // Additional notes to be included in the handoff. Optional.
+ string notes_content = 6;
+
+ // The set of incidents that should be included in the handoff. Optional.
+ repeated Incident incidents = 7;
+
+ // If set to true a ShiftHandoffResponse will be returned but the handoff
+ // will not actually be sent.
+ bool preview_only = 8;
+}
+
+// SendShiftHandoff and PreviewShiftHandoff RPC response.
+message SendShiftHandoffResponse {
+ // Content type string, for example, 'text/plain' or 'text/html'.
+ string content_type = 1;
+
+ // The contents of the handoff that was sent or would have been sent (if the
+ // request was preview_only).
+ // This will typically contain a full HTML document.
+ string content = 2;
+}
+
+// Request for the CreateSubscription method.
+message CreateSubscriptionRequest {
+ // Resource name of the incident, for example,
+ // "projects/{project_id}/incidents/{incident_id}".
+ string parent = 1;
+
+ // The subscription to create.
+ Subscription subscription = 2;
+}
+
+// Request for the UpdateSubscription method.
+message UpdateSubscriptionRequest {
+ // The subscription to update, with new values.
+ Subscription subscription = 1;
+
+ // List of fields that should be updated.
+ google.protobuf.FieldMask update_mask = 2;
+}
+
+// Request for the ListSubscriptions method.
+message ListSubscriptionsRequest {
+ // Resource name of the incident, for example,
+ // "projects/{project_id}/incidents/{incident_id}".
+ string parent = 1;
+
+ // Number of subscriptions to return.
+ int32 page_size = 2;
+
+ // Page token from an earlier query, as returned in `next_page_token`.
+ string page_token = 3;
+}
+
+// Response for the ListSubscriptions method.
+message ListSubscriptionsResponse {
+ // List of subscriptions.
+ repeated Subscription subscriptions = 1;
+
+ // Page token to fetch the next set of subscriptions.
+ string next_page_token = 2;
+}
+
+// Request for deleting a subscription.
+message DeleteSubscriptionRequest {
+ // Resource name of the subscription.
+ string name = 1;
+}
+
+// Request for creating a role assignment.
+message CreateIncidentRoleAssignmentRequest {
+ // Resource name of the incident, for example,
+ // "projects/{project_id}/incidents/{incident_id}".
+ string parent = 1;
+
+ // Role assignment to create.
+ IncidentRoleAssignment incident_role_assignment = 2;
+}
+
+// Request for deleting a role assignment.
+message DeleteIncidentRoleAssignmentRequest {
+ // Resource name of the role assignment.
+ string name = 1;
+}
+
+// Request to list role assignments of an incident.
+message ListIncidentRoleAssignmentsRequest {
+ // Resource name of the incident, for example,
+ // "projects/{project_id}/incidents/{incident_id}".
+ string parent = 1;
+
+ // Number of assignments to return.
+ int32 page_size = 2;
+
+ // Page token from an earlier query, as returned in `next_page_token`.
+ string page_token = 3;
+}
+
+// Response for the ListIncidentRoleAssignments method.
+message ListIncidentRoleAssignmentsResponse {
+ // List of assignments.
+ repeated IncidentRoleAssignment incident_role_assignments = 1;
+
+ // Page token to fetch the next set of assignments.
+ string next_page_token = 2;
+}
+
+// Request to start a role handover.
+message RequestIncidentRoleHandoverRequest {
+ // Resource name of the role assignment.
+ string name = 1;
+
+ // The proposed assignee.
+ User new_assignee = 2;
+}
+
+// Request to confirm a role handover.
+message ConfirmIncidentRoleHandoverRequest {
+ // Resource name of the role assignment.
+ string name = 1;
+
+ // The proposed assignee, who will now be the assignee. This should be the
+ // current user; otherwise ForceRoleHandover should be called.
+ User new_assignee = 2;
+}
+
+// Request to force a role handover.
+message ForceIncidentRoleHandoverRequest {
+ // Resource name of the role assignment.
+ string name = 1;
+
+ // The proposed assignee, who will now be the assignee. This should not be
+ // the current user; otherwise ConfirmRoleHandover should be called.
+ User new_assignee = 2;
+}
+
+// Request to cancel a role handover.
+message CancelIncidentRoleHandoverRequest {
+ // Resource name of the role assignment.
+ string name = 1;
+
+ // Person who was proposed as the next assignee (i.e.
+ // IncidentRoleAssignment.proposed_assignee) and whose proposal is being
+ // cancelled.
+ User new_assignee = 2;
+}
diff --git a/google/cloud/irm/v1alpha2/irm_gapic.yaml b/google/cloud/irm/v1alpha2/irm_gapic.yaml
new file mode 100644
index 000000000..b96625dc2
--- /dev/null
+++ b/google/cloud/irm/v1alpha2/irm_gapic.yaml
@@ -0,0 +1,719 @@
+type: com.google.api.codegen.ConfigProto
+config_schema_version: 1.0.0
+# The settings of generated code in a specific language.
+language_settings:
+ java:
+ package_name: com.google.cloud.irm.v1alpha2
+ python:
+ package_name: google.cloud.irm_v1alpha2.gapic
+ go:
+ package_name: cloud.google.com/go/irm/apiv1alpha2
+ csharp:
+ package_name: Google.Cloud.Irm.V1Alpha2
+ ruby:
+ package_name: Google::Cloud::Irm::V1alpha2
+ php:
+ package_name: Google\Cloud\Irm\V1alpha2
+ nodejs:
+ package_name: irm.v1alpha2
+ domain_layer_location: google-cloud
+# A list of API interface configurations.
+interfaces:
+ # The fully qualified name of the API interface.
+- name: google.cloud.irm.v1alpha2.IncidentService
+ # A list of resource collection configurations.
+ # Consists of a name_pattern and an entity_name.
+ # The name_pattern is a pattern to describe the names of the resources of this
+ # collection, using the platform's conventions for URI patterns. A generator
+ # may use this to generate methods to compose and decompose such names. The
+ # pattern should use named placeholders as in `shelves/{shelf}/books/{book}`;
+ # those will be taken as hints for the parameter names of the generated
+ # methods. If empty, no name methods are generated.
+ # The entity_name is the name to be used as a basis for generated methods and
+ # classes.
+ collections:
+ - name_pattern: projects/{project}
+ entity_name: project
+ language_overrides:
+ - language: csharp
+ common_resource_name: Google.Api.Gax.ResourceNames.ProjectName
+ - name_pattern: projects/{project}/incidents/{incident}
+ entity_name: incident
+ - name_pattern: projects/{project}/incidents/{incident}/annotations/{annotation}
+ entity_name: annotation
+ - name_pattern: projects/{project}/incidents/{incident}/artifacts/{artifact}
+ entity_name: artifact
+ - name_pattern: projects/{project}/incidents/{incident}/roleAssignments/{role_assignment}
+ entity_name: role_assignment
+ - name_pattern: projects/{project}/incidents/{incident}/subscriptions/{subscription}
+ entity_name: subscription
+ - name_pattern: projects/{project}/incidents/{incident}/tags/{tag}
+ entity_name: tag
+ - name_pattern: projects/{project}/signals/{signal}
+ entity_name: signal
+ # Definition for retryable codes.
+ retry_codes_def:
+ - name: idempotent
+ retry_codes:
+ - DEADLINE_EXCEEDED
+ - UNAVAILABLE
+ - name: non_idempotent
+ retry_codes: []
+ # Definition for retry/backoff parameters.
+ retry_params_def:
+ - name: default
+ initial_retry_delay_millis: 100
+ retry_delay_multiplier: 1.3
+ max_retry_delay_millis: 60000
+ initial_rpc_timeout_millis: 20000
+ rpc_timeout_multiplier: 1
+ max_rpc_timeout_millis: 20000
+ total_timeout_millis: 600000
+ # A list of method configurations.
+ # Common properties:
+ #
+ # name - The simple name of the method.
+ #
+ # flattening - Specifies the configuration for parameter flattening.
+ # Describes the parameter groups for which a generator should produce method
+ # overloads which allow a client to directly pass request message fields as
+ # method parameters. This information may or may not be used, depending on
+ # the target language.
+ # Consists of groups, which each represent a list of parameters to be
+ # flattened. Each parameter listed must be a field of the request message.
+ #
+ # required_fields - Fields that are always required for a request to be
+ # valid.
+ #
+ # resource_name_treatment - An enum that specifies how to treat the resource
+ # name formats defined in the field_name_patterns and
+ # response_field_name_patterns fields.
+ # UNSET: default value
+ # NONE: the collection configs will not be used by the generated code.
+ # VALIDATE: string fields will be validated by the client against the
+ # specified resource name formats.
+ # STATIC_TYPES: the client will use generated types for resource names.
+ #
+ # page_streaming - Specifies the configuration for paging.
+ # Describes information for generating a method which transforms a paging
+ # list RPC into a stream of resources.
+ # Consists of a request and a response.
+ # The request specifies request information of the list method. It defines
+ # which fields match the paging pattern in the request. The request consists
+ # of a page_size_field and a token_field. The page_size_field is the name of
+ # the optional field specifying the maximum number of elements to be
+ # returned in the response. The token_field is the name of the field in the
+ # request containing the page token.
+ # The response specifies response information of the list method. It defines
+ # which fields match the paging pattern in the response. The response
+ # consists of a token_field and a resources_field. The token_field is the
+ # name of the field in the response containing the next page token. The
+ # resources_field is the name of the field in the response containing the
+ # list of resources belonging to the page.
+ #
+ # retry_codes_name - Specifies the configuration for retryable codes. The
+ # name must be defined in interfaces.retry_codes_def.
+ #
+ # retry_params_name - Specifies the configuration for retry/backoff
+ # parameters. The name must be defined in interfaces.retry_params_def.
+ #
+ # field_name_patterns - Maps the field name of the request type to
+ # entity_name of interfaces.collections.
+ # Specifies the string pattern that the field must follow.
+ #
+ # timeout_millis - Specifies the default timeout for a non-retrying call. If
+ # the call is retrying, refer to retry_params_name instead.
+ methods:
+ - name: CreateIncident
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - incident
+ - parent
+ required_fields:
+ - incident
+ - parent
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ parent: project
+ timeout_millis: 60000
+ - name: GetIncident
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: incident
+ timeout_millis: 60000
+ - name: SearchIncidents
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - parent
+ - query
+ - time_zone
+ required_fields:
+ - parent
+ page_streaming:
+ request:
+ page_size_field: page_size
+ token_field: page_token
+ response:
+ token_field: next_page_token
+ resources_field: incidents
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ parent: project
+ timeout_millis: 60000
+ - name: UpdateIncident
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - incident
+ - update_mask
+ required_fields:
+ - incident
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ incident.name: incident
+ timeout_millis: 60000
+ - name: SearchSimilarIncidents
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ page_streaming:
+ request:
+ page_size_field: page_size
+ token_field: page_token
+ response:
+ token_field: next_page_token
+ resources_field: results
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: incident
+ timeout_millis: 60000
+ - name: CreateAnnotation
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - parent
+ - annotation
+ required_fields:
+ - parent
+ - annotation
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ parent: incident
+ timeout_millis: 60000
+ - name: ListAnnotations
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - parent
+ required_fields:
+ - parent
+ page_streaming:
+ request:
+ page_size_field: page_size
+ token_field: page_token
+ response:
+ token_field: next_page_token
+ resources_field: annotations
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ parent: incident
+ timeout_millis: 60000
+ - name: CreateTag
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - parent
+ - tag
+ required_fields:
+ - parent
+ - tag
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ parent: incident
+ timeout_millis: 60000
+ - name: DeleteTag
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: tag
+ timeout_millis: 60000
+ - name: ListTags
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - parent
+ required_fields:
+ - parent
+ page_streaming:
+ request:
+ page_size_field: page_size
+ token_field: page_token
+ response:
+ token_field: next_page_token
+ resources_field: tags
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ parent: incident
+ timeout_millis: 60000
+ - name: CreateSignal
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - parent
+ - signal
+ required_fields:
+ - parent
+ - signal
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ parent: project
+ timeout_millis: 60000
+ - name: SearchSignals
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - parent
+ - query
+ required_fields:
+ - parent
+ page_streaming:
+ request:
+ page_size_field: page_size
+ token_field: page_token
+ response:
+ token_field: next_page_token
+ resources_field: signals
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ parent: project
+ timeout_millis: 60000
+ - name: GetSignal
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: signal
+ timeout_millis: 60000
+ - name: UpdateSignal
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - signal
+ - update_mask
+ required_fields:
+ - signal
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ signal.name: signal
+ timeout_millis: 60000
+ - name: EscalateIncident
+ resource_name_treatment: STATIC_TYPES
+ required_fields:
+ - incident
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ incident.name: incident
+ timeout_millis: 60000
+ - name: CreateArtifact
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - parent
+ - artifact
+ required_fields:
+ - parent
+ - artifact
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ parent: incident
+ timeout_millis: 60000
+ - name: ListArtifacts
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - parent
+ required_fields:
+ - parent
+ page_streaming:
+ request:
+ page_size_field: page_size
+ token_field: page_token
+ response:
+ token_field: next_page_token
+ resources_field: artifacts
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ parent: incident
+ timeout_millis: 60000
+ - name: UpdateArtifact
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - artifact
+ - update_mask
+ required_fields:
+ - artifact
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ artifact.name: artifact
+ timeout_millis: 60000
+ - name: DeleteArtifact
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: artifact
+ timeout_millis: 60000
+ - name: SendShiftHandoff
+ resource_name_treatment: STATIC_TYPES
+ required_fields:
+ - parent
+ - recipients
+ - subject
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ parent: project
+ timeout_millis: 60000
+ - name: CreateSubscription
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - parent
+ - subscription
+ required_fields:
+ - parent
+ - subscription
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ parent: incident
+ timeout_millis: 60000
+ - name: UpdateSubscription
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - subscription
+ - update_mask
+ required_fields:
+ - subscription
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ subscription.name: subscription
+ timeout_millis: 60000
+ - name: ListSubscriptions
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - parent
+ required_fields:
+ - parent
+ page_streaming:
+ request:
+ page_size_field: page_size
+ token_field: page_token
+ response:
+ token_field: next_page_token
+ resources_field: subscriptions
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ parent: incident
+ timeout_millis: 60000
+ - name: DeleteSubscription
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: subscription
+ timeout_millis: 60000
+ - name: CreateIncidentRoleAssignment
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - parent
+ - incident_role_assignment
+ required_fields:
+ - parent
+ - incident_role_assignment
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ parent: incident
+ timeout_millis: 60000
+ - name: DeleteIncidentRoleAssignment
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: role_assignment
+ timeout_millis: 60000
+ - name: ListIncidentRoleAssignments
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - parent
+ required_fields:
+ - parent
+ page_streaming:
+ request:
+ page_size_field: page_size
+ token_field: page_token
+ response:
+ token_field: next_page_token
+ resources_field: incident_role_assignments
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ parent: incident
+ timeout_millis: 60000
+ - name: RequestIncidentRoleHandover
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - name
+ - new_assignee
+ required_fields:
+ - name
+ - new_assignee
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: role_assignment
+ timeout_millis: 60000
+ - name: ConfirmIncidentRoleHandover
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - name
+ - new_assignee
+ required_fields:
+ - name
+ - new_assignee
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: role_assignment
+ timeout_millis: 60000
+ - name: ForceIncidentRoleHandover
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - name
+ - new_assignee
+ required_fields:
+ - name
+ - new_assignee
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: role_assignment
+ timeout_millis: 60000
+ - name: CancelIncidentRoleHandover
+ resource_name_treatment: STATIC_TYPES
+ flattening:
+ groups:
+ - parameters:
+ - name
+ - new_assignee
+ required_fields:
+ - name
+ - new_assignee
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: role_assignment
+ timeout_millis: 60000
+resource_name_generation:
+- message_name: Annotation
+ field_entity_map:
+ name: annotation
+- message_name: Artifact
+ field_entity_map:
+ name: artifact
+- message_name: Incident
+ field_entity_map:
+ name: incident
+- message_name: IncidentRoleAssignment
+ field_entity_map:
+ name: role_assignment
+- message_name: Signal
+ field_entity_map:
+ name: signal
+- message_name: Subscription
+ field_entity_map:
+ name: subscription
+- message_name: Tag
+ field_entity_map:
+ name: tag
+- message_name: CreateIncidentRequest
+ field_entity_map:
+ parent: project
+- message_name: GetIncidentRequest
+ field_entity_map:
+ name: incident
+- message_name: SearchIncidentsRequest
+ field_entity_map:
+ parent: project
+- message_name: UpdateIncidentRequest
+ field_entity_map:
+ incident.name: incident
+- message_name: EscalateIncidentRequest
+ field_entity_map:
+ incident.name: incident
+- message_name: CreateSignalRequest
+ field_entity_map:
+ parent: project
+- message_name: GetSignalRequest
+ field_entity_map:
+ name: signal
+- message_name: SearchSignalsRequest
+ field_entity_map:
+ parent: project
+- message_name: UpdateSignalRequest
+ field_entity_map:
+ signal.name: signal
+- message_name: CreateArtifactRequest
+ field_entity_map:
+ parent: incident
+- message_name: ListArtifactsRequest
+ field_entity_map:
+ parent: incident
+- message_name: UpdateArtifactRequest
+ field_entity_map:
+ artifact.name: artifact
+- message_name: DeleteArtifactRequest
+ field_entity_map:
+ name: artifact
+- message_name: CreateIncidentRoleAssignmentRequest
+ field_entity_map:
+ parent: incident
+- message_name: ListIncidentRoleAssignmentsRequest
+ field_entity_map:
+ parent: incident
+- message_name: DeleteIncidentRoleAssignmentRequest
+ field_entity_map:
+ name: role_assignment
+- message_name: RequestIncidentRoleHandoverRequest
+ field_entity_map:
+ name: role_assignment
+- message_name: ConfirmIncidentRoleHandoverRequest
+ field_entity_map:
+ name: role_assignment
+- message_name: ForceIncidentRoleHandoverRequest
+ field_entity_map:
+ name: role_assignment
+- message_name: CancelIncidentRoleHandoverRequest
+ field_entity_map:
+ name: role_assignment
+- message_name: CreateSubscriptionRequest
+ field_entity_map:
+ parent: incident
+- message_name: ListSubscriptionsRequest
+ field_entity_map:
+ parent: incident
+- message_name: UpdateSubscriptionRequest
+ field_entity_map:
+ subscription.name: subscription
+- message_name: DeleteSubscriptionRequest
+ field_entity_map:
+ name: subscription
+- message_name: CreateTagRequest
+ field_entity_map:
+ parent: incident
+- message_name: ListTagsRequest
+ field_entity_map:
+ parent: incident
+- message_name: DeleteTagRequest
+ field_entity_map:
+ name: tag
+- message_name: CreateAnnotationRequest
+ field_entity_map:
+ parent: incident
+- message_name: ListAnnotationsRequest
+ field_entity_map:
+ parent: incident
+- message_name: SendShiftHandoffRequest
+ field_entity_map:
+ parent: project