diff options
Diffstat (limited to 'google/cloud/irm/v1alpha2')
-rw-r--r-- | google/cloud/irm/v1alpha2/incidents.proto | 486 | ||||
-rw-r--r-- | google/cloud/irm/v1alpha2/incidents_service.proto | 832 | ||||
-rw-r--r-- | google/cloud/irm/v1alpha2/irm_gapic.yaml | 719 |
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 |