// Copyright 2026 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.networksecurity.v1; import "google/api/annotations.proto"; import "google/api/client.proto"; import "google/api/field_behavior.proto"; import "google/api/field_info.proto"; import "google/api/resource.proto"; import "google/cloud/networksecurity/v1/common.proto"; import "google/longrunning/operations.proto"; import "google/protobuf/empty.proto"; import "google/protobuf/field_mask.proto"; import "google/protobuf/timestamp.proto"; option csharp_namespace = "Google.Cloud.NetworkSecurity.V1"; option go_package = "cloud.google.com/go/networksecurity/apiv1/networksecuritypb;networksecuritypb"; option java_multiple_files = true; option java_outer_classname = "InterceptProto"; option java_package = "com.google.cloud.networksecurity.v1"; option php_namespace = "Google\\Cloud\\NetworkSecurity\\V1"; option ruby_package = "Google::Cloud::NetworkSecurity::V1"; // Service for Third-Party Packet Intercept (TPPI). // TPPI is the "in-band" flavor of the Network Security Integrations product. service Intercept { option (google.api.default_host) = "networksecurity.googleapis.com"; option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform"; // Lists endpoint groups in a given project and location. // See https://google.aip.dev/132. rpc ListInterceptEndpointGroups(ListInterceptEndpointGroupsRequest) returns (ListInterceptEndpointGroupsResponse) { option (google.api.http) = { get: "/v1/{parent=projects/*/locations/*}/interceptEndpointGroups" }; option (google.api.method_signature) = "parent"; } // Gets a specific endpoint group. // See https://google.aip.dev/131. rpc GetInterceptEndpointGroup(GetInterceptEndpointGroupRequest) returns (InterceptEndpointGroup) { option (google.api.http) = { get: "/v1/{name=projects/*/locations/*/interceptEndpointGroups/*}" }; option (google.api.method_signature) = "name"; } // Creates an endpoint group in a given project and location. // See https://google.aip.dev/133. rpc CreateInterceptEndpointGroup(CreateInterceptEndpointGroupRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{parent=projects/*/locations/*}/interceptEndpointGroups" body: "intercept_endpoint_group" }; option (google.api.method_signature) = "parent,intercept_endpoint_group,intercept_endpoint_group_id"; option (google.longrunning.operation_info) = { response_type: "InterceptEndpointGroup" metadata_type: "google.cloud.networksecurity.v1.OperationMetadata" }; } // Updates an endpoint group. // See https://google.aip.dev/134. rpc UpdateInterceptEndpointGroup(UpdateInterceptEndpointGroupRequest) returns (google.longrunning.Operation) { option (google.api.http) = { patch: "/v1/{intercept_endpoint_group.name=projects/*/locations/*/interceptEndpointGroups/*}" body: "intercept_endpoint_group" }; option (google.api.method_signature) = "intercept_endpoint_group,update_mask"; option (google.longrunning.operation_info) = { response_type: "InterceptEndpointGroup" metadata_type: "google.cloud.networksecurity.v1.OperationMetadata" }; } // Deletes an endpoint group. // See https://google.aip.dev/135. rpc DeleteInterceptEndpointGroup(DeleteInterceptEndpointGroupRequest) returns (google.longrunning.Operation) { option (google.api.http) = { delete: "/v1/{name=projects/*/locations/*/interceptEndpointGroups/*}" }; option (google.api.method_signature) = "name"; option (google.longrunning.operation_info) = { response_type: "google.protobuf.Empty" metadata_type: "google.cloud.networksecurity.v1.OperationMetadata" }; } // Lists associations in a given project and location. // See https://google.aip.dev/132. rpc ListInterceptEndpointGroupAssociations( ListInterceptEndpointGroupAssociationsRequest) returns (ListInterceptEndpointGroupAssociationsResponse) { option (google.api.http) = { get: "/v1/{parent=projects/*/locations/*}/interceptEndpointGroupAssociations" }; option (google.api.method_signature) = "parent"; } // Gets a specific association. // See https://google.aip.dev/131. rpc GetInterceptEndpointGroupAssociation( GetInterceptEndpointGroupAssociationRequest) returns (InterceptEndpointGroupAssociation) { option (google.api.http) = { get: "/v1/{name=projects/*/locations/*/interceptEndpointGroupAssociations/*}" }; option (google.api.method_signature) = "name"; } // Creates an association in a given project and location. // See https://google.aip.dev/133. rpc CreateInterceptEndpointGroupAssociation( CreateInterceptEndpointGroupAssociationRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{parent=projects/*/locations/*}/interceptEndpointGroupAssociations" body: "intercept_endpoint_group_association" }; option (google.api.method_signature) = "parent,intercept_endpoint_group_association,intercept_endpoint_group_association_id"; option (google.longrunning.operation_info) = { response_type: "InterceptEndpointGroupAssociation" metadata_type: "google.cloud.networksecurity.v1.OperationMetadata" }; } // Updates an association. // See https://google.aip.dev/134. rpc UpdateInterceptEndpointGroupAssociation( UpdateInterceptEndpointGroupAssociationRequest) returns (google.longrunning.Operation) { option (google.api.http) = { patch: "/v1/{intercept_endpoint_group_association.name=projects/*/locations/*/interceptEndpointGroupAssociations/*}" body: "intercept_endpoint_group_association" }; option (google.api.method_signature) = "intercept_endpoint_group_association,update_mask"; option (google.longrunning.operation_info) = { response_type: "InterceptEndpointGroupAssociation" metadata_type: "google.cloud.networksecurity.v1.OperationMetadata" }; } // Deletes an association. // See https://google.aip.dev/135. rpc DeleteInterceptEndpointGroupAssociation( DeleteInterceptEndpointGroupAssociationRequest) returns (google.longrunning.Operation) { option (google.api.http) = { delete: "/v1/{name=projects/*/locations/*/interceptEndpointGroupAssociations/*}" }; option (google.api.method_signature) = "name"; option (google.longrunning.operation_info) = { response_type: "google.protobuf.Empty" metadata_type: "google.cloud.networksecurity.v1.OperationMetadata" }; } // Lists deployment groups in a given project and location. // See https://google.aip.dev/132. rpc ListInterceptDeploymentGroups(ListInterceptDeploymentGroupsRequest) returns (ListInterceptDeploymentGroupsResponse) { option (google.api.http) = { get: "/v1/{parent=projects/*/locations/*}/interceptDeploymentGroups" }; option (google.api.method_signature) = "parent"; } // Gets a specific deployment group. // See https://google.aip.dev/131. rpc GetInterceptDeploymentGroup(GetInterceptDeploymentGroupRequest) returns (InterceptDeploymentGroup) { option (google.api.http) = { get: "/v1/{name=projects/*/locations/*/interceptDeploymentGroups/*}" }; option (google.api.method_signature) = "name"; } // Creates a deployment group in a given project and location. // See https://google.aip.dev/133. rpc CreateInterceptDeploymentGroup(CreateInterceptDeploymentGroupRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{parent=projects/*/locations/*}/interceptDeploymentGroups" body: "intercept_deployment_group" }; option (google.api.method_signature) = "parent,intercept_deployment_group,intercept_deployment_group_id"; option (google.longrunning.operation_info) = { response_type: "InterceptDeploymentGroup" metadata_type: "google.cloud.networksecurity.v1.OperationMetadata" }; } // Updates a deployment group. // See https://google.aip.dev/134. rpc UpdateInterceptDeploymentGroup(UpdateInterceptDeploymentGroupRequest) returns (google.longrunning.Operation) { option (google.api.http) = { patch: "/v1/{intercept_deployment_group.name=projects/*/locations/*/interceptDeploymentGroups/*}" body: "intercept_deployment_group" }; option (google.api.method_signature) = "intercept_deployment_group,update_mask"; option (google.longrunning.operation_info) = { response_type: "InterceptDeploymentGroup" metadata_type: "google.cloud.networksecurity.v1.OperationMetadata" }; } // Deletes a deployment group. // See https://google.aip.dev/135. rpc DeleteInterceptDeploymentGroup(DeleteInterceptDeploymentGroupRequest) returns (google.longrunning.Operation) { option (google.api.http) = { delete: "/v1/{name=projects/*/locations/*/interceptDeploymentGroups/*}" }; option (google.api.method_signature) = "name"; option (google.longrunning.operation_info) = { response_type: "google.protobuf.Empty" metadata_type: "google.cloud.networksecurity.v1.OperationMetadata" }; } // Lists deployments in a given project and location. // See https://google.aip.dev/132. rpc ListInterceptDeployments(ListInterceptDeploymentsRequest) returns (ListInterceptDeploymentsResponse) { option (google.api.http) = { get: "/v1/{parent=projects/*/locations/*}/interceptDeployments" }; option (google.api.method_signature) = "parent"; } // Gets a specific deployment. // See https://google.aip.dev/131. rpc GetInterceptDeployment(GetInterceptDeploymentRequest) returns (InterceptDeployment) { option (google.api.http) = { get: "/v1/{name=projects/*/locations/*/interceptDeployments/*}" }; option (google.api.method_signature) = "name"; } // Creates a deployment in a given project and location. // See https://google.aip.dev/133. rpc CreateInterceptDeployment(CreateInterceptDeploymentRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{parent=projects/*/locations/*}/interceptDeployments" body: "intercept_deployment" }; option (google.api.method_signature) = "parent,intercept_deployment,intercept_deployment_id"; option (google.longrunning.operation_info) = { response_type: "InterceptDeployment" metadata_type: "google.cloud.networksecurity.v1.OperationMetadata" }; } // Updates a deployment. // See https://google.aip.dev/134. rpc UpdateInterceptDeployment(UpdateInterceptDeploymentRequest) returns (google.longrunning.Operation) { option (google.api.http) = { patch: "/v1/{intercept_deployment.name=projects/*/locations/*/interceptDeployments/*}" body: "intercept_deployment" }; option (google.api.method_signature) = "intercept_deployment,update_mask"; option (google.longrunning.operation_info) = { response_type: "InterceptDeployment" metadata_type: "google.cloud.networksecurity.v1.OperationMetadata" }; } // Deletes a deployment. // See https://google.aip.dev/135. rpc DeleteInterceptDeployment(DeleteInterceptDeploymentRequest) returns (google.longrunning.Operation) { option (google.api.http) = { delete: "/v1/{name=projects/*/locations/*/interceptDeployments/*}" }; option (google.api.method_signature) = "name"; option (google.longrunning.operation_info) = { response_type: "google.protobuf.Empty" metadata_type: "google.cloud.networksecurity.v1.OperationMetadata" }; } } // An endpoint group is a consumer frontend for a deployment group (backend). // In order to configure intercept for a network, consumers must create: // - An association between their network and the endpoint group. // - A security profile that points to the endpoint group. // - A firewall rule that references the security profile (group). message InterceptEndpointGroup { option (google.api.resource) = { type: "networksecurity.googleapis.com/InterceptEndpointGroup" pattern: "projects/{project}/locations/{location}/interceptEndpointGroups/{intercept_endpoint_group}" plural: "interceptEndpointGroups" singular: "interceptEndpointGroup" }; // The endpoint group's view of a connected deployment group. message ConnectedDeploymentGroup { // Output only. The connected deployment group's resource name, for example: // `projects/123456789/locations/global/interceptDeploymentGroups/my-dg`. // See https://google.aip.dev/124. string name = 1 [ (google.api.field_behavior) = OUTPUT_ONLY, (google.api.resource_reference) = { type: "networksecurity.googleapis.com/InterceptDeploymentGroup" } ]; // Output only. The list of locations where the deployment group is present. repeated InterceptLocation locations = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; } // The endpoint group's view of a connected association. message AssociationDetails { // Output only. The connected association's resource name, for example: // `projects/123456789/locations/global/interceptEndpointGroupAssociations/my-ega`. // See https://google.aip.dev/124. string name = 1 [ (google.api.field_behavior) = OUTPUT_ONLY, (google.api.resource_reference) = { type: "networksecurity.googleapis.com/InterceptEndpointGroupAssociation" } ]; // Output only. The associated network, for example: // projects/123456789/global/networks/my-network. // See https://google.aip.dev/124. string network = 2 [ (google.api.field_behavior) = OUTPUT_ONLY, (google.api.resource_reference) = { type: "compute.googleapis.com/Network" } ]; // Output only. Most recent known state of the association. InterceptEndpointGroupAssociation.State state = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; } // Endpoint group state. enum State { // State not set (this is not a valid state). STATE_UNSPECIFIED = 0; // The endpoint group is ready and in sync with the target deployment group. ACTIVE = 1; // The deployment group backing this endpoint group has been force-deleted. // This endpoint group cannot be used and interception is effectively // disabled. CLOSED = 2; // The endpoint group is being created. CREATING = 3; // The endpoint group is being deleted. DELETING = 4; // The endpoint group is out of sync with the backing deployment group. // In most cases, this is a result of a transient issue within the system // (e.g. an inaccessible location) and the system is expected to recover // automatically. See the associations field for details per network and // location. OUT_OF_SYNC = 5; // An attempt to delete the endpoint group has failed. This is a terminal // state and the endpoint group is not expected to recover. // The only permitted operation is to retry deleting the endpoint group. DELETE_FAILED = 6; } // Immutable. Identifier. The resource name of this endpoint group, for // example: // `projects/123456789/locations/global/interceptEndpointGroups/my-eg`. // See https://google.aip.dev/122 for more details. string name = 1 [ (google.api.field_behavior) = IDENTIFIER, (google.api.field_behavior) = IMMUTABLE ]; // Output only. The timestamp when the resource was created. // See https://google.aip.dev/148#timestamps. google.protobuf.Timestamp create_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The timestamp when the resource was most recently updated. // See https://google.aip.dev/148#timestamps. google.protobuf.Timestamp update_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // Optional. Labels are key/value pairs that help to organize and filter // resources. map labels = 4 [(google.api.field_behavior) = OPTIONAL]; // Required. Immutable. The deployment group that this endpoint group is // connected to, for example: // `projects/123456789/locations/global/interceptDeploymentGroups/my-dg`. // See https://google.aip.dev/124. string intercept_deployment_group = 5 [ (google.api.field_behavior) = REQUIRED, (google.api.field_behavior) = IMMUTABLE, (google.api.resource_reference) = { type: "networksecurity.googleapis.com/InterceptDeploymentGroup" } ]; // Output only. Details about the connected deployment group to this endpoint // group. ConnectedDeploymentGroup connected_deployment_group = 11 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The current state of the endpoint group. // See https://google.aip.dev/216. State state = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The current state of the resource does not match the user's // intended state, and the system is working to reconcile them. This is part // of the normal operation (e.g. adding a new association to the group). See // https://google.aip.dev/128. bool reconciling = 8 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. List of associations to this endpoint group. repeated AssociationDetails associations = 9 [(google.api.field_behavior) = OUTPUT_ONLY]; // Optional. User-provided description of the endpoint group. // Used as additional context for the endpoint group. string description = 10 [(google.api.field_behavior) = OPTIONAL]; } // Request message for ListInterceptEndpointGroups. message ListInterceptEndpointGroupsRequest { // Required. The parent, which owns this collection of endpoint groups. // Example: `projects/123456789/locations/global`. // See https://google.aip.dev/132 for more details. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "networksecurity.googleapis.com/InterceptEndpointGroup" } ]; // Optional. Requested page size. Server may return fewer items than // requested. If unspecified, server will pick an appropriate default. See // https://google.aip.dev/158 for more details. int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; // Optional. A page token, received from a previous // `ListInterceptEndpointGroups` call. Provide this to retrieve the subsequent // page. When paginating, all other parameters provided to // `ListInterceptEndpointGroups` must match the call that provided the page // token. // See https://google.aip.dev/158 for more details. string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; // Optional. Filter expression. // See https://google.aip.dev/160#filtering for more details. string filter = 4 [(google.api.field_behavior) = OPTIONAL]; // Optional. Sort expression. // See https://google.aip.dev/132#ordering for more details. string order_by = 5 [(google.api.field_behavior) = OPTIONAL]; } // Response message for ListInterceptEndpointGroups. message ListInterceptEndpointGroupsResponse { // The endpoint groups from the specified parent. repeated InterceptEndpointGroup intercept_endpoint_groups = 1; // A token that can be sent as `page_token` to retrieve the next page. // If this field is omitted, there are no subsequent pages. // See https://google.aip.dev/158 for more details. string next_page_token = 2; } // Request message for GetInterceptEndpointGroup. message GetInterceptEndpointGroupRequest { // Required. The name of the endpoint group to retrieve. // Format: // projects/{project}/locations/{location}/interceptEndpointGroups/{intercept_endpoint_group} string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "networksecurity.googleapis.com/InterceptEndpointGroup" } ]; } // Request message for CreateInterceptEndpointGroup. message CreateInterceptEndpointGroupRequest { // Required. The parent resource where this endpoint group will be created. // Format: projects/{project}/locations/{location} string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "networksecurity.googleapis.com/InterceptEndpointGroup" } ]; // Required. The ID to use for the endpoint group, which will become the final // component of the endpoint group's resource name. string intercept_endpoint_group_id = 2 [(google.api.field_behavior) = REQUIRED]; // Required. The endpoint group to create. InterceptEndpointGroup intercept_endpoint_group = 3 [(google.api.field_behavior) = REQUIRED]; // Optional. A unique identifier for this request. Must be a UUID4. // This request is only idempotent if a `request_id` is provided. // See https://google.aip.dev/155 for more details. string request_id = 4 [ (google.api.field_info).format = UUID4, (google.api.field_behavior) = OPTIONAL ]; } // Request message for UpdateInterceptEndpointGroup. message UpdateInterceptEndpointGroupRequest { // Optional. The list of fields to update. // Fields are specified relative to the endpoint group // (e.g. `description`; *not* `intercept_endpoint_group.description`). // See https://google.aip.dev/161 for more details. google.protobuf.FieldMask update_mask = 1 [(google.api.field_behavior) = OPTIONAL]; // Required. The endpoint group to update. InterceptEndpointGroup intercept_endpoint_group = 2 [(google.api.field_behavior) = REQUIRED]; // Optional. A unique identifier for this request. Must be a UUID4. // This request is only idempotent if a `request_id` is provided. // See https://google.aip.dev/155 for more details. string request_id = 3 [ (google.api.field_info).format = UUID4, (google.api.field_behavior) = OPTIONAL ]; } // Request message for DeleteInterceptEndpointGroup. message DeleteInterceptEndpointGroupRequest { // Required. The endpoint group to delete. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "networksecurity.googleapis.com/InterceptEndpointGroup" } ]; // Optional. A unique identifier for this request. Must be a UUID4. // This request is only idempotent if a `request_id` is provided. // See https://google.aip.dev/155 for more details. string request_id = 2 [ (google.api.field_info).format = UUID4, (google.api.field_behavior) = OPTIONAL ]; } // An endpoint group association represents a link between a network and an // endpoint group in the organization. // // Creating an association creates the networking infrastructure linking the // network to the endpoint group, but does not enable intercept by itself. // To enable intercept, the user must also create a network firewall policy // containing intercept rules and associate it with the network. message InterceptEndpointGroupAssociation { option (google.api.resource) = { type: "networksecurity.googleapis.com/InterceptEndpointGroupAssociation" pattern: "projects/{project}/locations/{location}/interceptEndpointGroupAssociations/{intercept_endpoint_group_association}" plural: "interceptEndpointGroupAssociations" singular: "interceptEndpointGroupAssociation" }; // Contains details about the state of an association in a specific cloud // location. message LocationDetails { // The state of association. enum State { // Not set. STATE_UNSPECIFIED = 0; // The association is ready and in sync with the linked endpoint group. ACTIVE = 1; // The association is out of sync with the linked endpoint group. // In most cases, this is a result of a transient issue within the system // (e.g. an inaccessible location) and the system is expected to recover // automatically. OUT_OF_SYNC = 2; } // Output only. The cloud location, e.g. "us-central1-a" or "asia-south1". string location = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The current state of the association in this location. State state = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; } // The state of the association. enum State { // Not set. STATE_UNSPECIFIED = 0; // The association is ready and in sync with the linked endpoint group. ACTIVE = 1; // The association is being created. CREATING = 2; // The association is being deleted. DELETING = 3; // The association is disabled due to a breaking change in another resource. CLOSED = 4; // The association is out of sync with the linked endpoint group. // In most cases, this is a result of a transient issue within the system // (e.g. an inaccessible location) and the system is expected to recover // automatically. Check the `locations_details` field for more details. OUT_OF_SYNC = 5; // An attempt to delete the association has failed. This is a terminal state // and the association is not expected to be usable as some of its resources // have been deleted. // The only permitted operation is to retry deleting the association. DELETE_FAILED = 6; } // Immutable. Identifier. The resource name of this endpoint group // association, for example: // `projects/123456789/locations/global/interceptEndpointGroupAssociations/my-eg-association`. // See https://google.aip.dev/122 for more details. string name = 1 [ (google.api.field_behavior) = IDENTIFIER, (google.api.field_behavior) = IMMUTABLE ]; // Output only. The timestamp when the resource was created. // See https://google.aip.dev/148#timestamps. google.protobuf.Timestamp create_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The timestamp when the resource was most recently updated. // See https://google.aip.dev/148#timestamps. google.protobuf.Timestamp update_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // Optional. Labels are key/value pairs that help to organize and filter // resources. map labels = 4 [(google.api.field_behavior) = OPTIONAL]; // Required. Immutable. The endpoint group that this association is connected // to, for example: // `projects/123456789/locations/global/interceptEndpointGroups/my-eg`. // See https://google.aip.dev/124. string intercept_endpoint_group = 5 [ (google.api.field_behavior) = REQUIRED, (google.api.field_behavior) = IMMUTABLE, (google.api.resource_reference) = { type: "networksecurity.googleapis.com/InterceptEndpointGroup" } ]; // Required. Immutable. The VPC network that is associated. for example: // `projects/123456789/global/networks/my-network`. // See https://google.aip.dev/124. string network = 6 [ (google.api.field_behavior) = REQUIRED, (google.api.field_behavior) = IMMUTABLE, (google.api.resource_reference) = { type: "compute.googleapis.com/Network" } ]; // Output only. The list of locations where the association is present. This // information is retrieved from the linked endpoint group, and not configured // as part of the association itself. repeated LocationDetails locations_details = 7 [deprecated = true, (google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Current state of the endpoint group association. State state = 8 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The current state of the resource does not match the user's // intended state, and the system is working to reconcile them. This part of // the normal operation (e.g. adding a new location to the target deployment // group). See https://google.aip.dev/128. bool reconciling = 9 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The list of locations where the association is configured. // This information is retrieved from the linked endpoint group. repeated InterceptLocation locations = 10 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Identifier used by the data-path. // See the NSI GENEVE format for more details: // https://docs.cloud.google.com/network-security-integration/docs/understand-geneve#network_id uint32 network_cookie = 12 [(google.api.field_behavior) = OUTPUT_ONLY]; } // Request message for ListInterceptEndpointGroupAssociations. message ListInterceptEndpointGroupAssociationsRequest { // Required. The parent, which owns this collection of associations. // Example: `projects/123456789/locations/global`. // See https://google.aip.dev/132 for more details. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "networksecurity.googleapis.com/InterceptEndpointGroupAssociation" } ]; // Optional. Requested page size. Server may return fewer items than // requested. If unspecified, server will pick an appropriate default. See // https://google.aip.dev/158 for more details. int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; // Optional. A page token, received from a previous // `ListInterceptEndpointGroups` call. Provide this to retrieve the subsequent // page. When paginating, all other parameters provided to // `ListInterceptEndpointGroups` must match the call that provided the page // token. See https://google.aip.dev/158 for more details. string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; // Optional. Filter expression. // See https://google.aip.dev/160#filtering for more details. string filter = 4 [(google.api.field_behavior) = OPTIONAL]; // Optional. Sort expression. // See https://google.aip.dev/132#ordering for more details. string order_by = 5 [(google.api.field_behavior) = OPTIONAL]; } // Response message for ListInterceptEndpointGroupAssociations. message ListInterceptEndpointGroupAssociationsResponse { // The associations from the specified parent. repeated InterceptEndpointGroupAssociation intercept_endpoint_group_associations = 1; // A token that can be sent as `page_token` to retrieve the next page. // If this field is omitted, there are no subsequent pages. // See https://google.aip.dev/158 for more details. string next_page_token = 2; } // Request message for GetInterceptEndpointGroupAssociation. message GetInterceptEndpointGroupAssociationRequest { // Required. The name of the association to retrieve. // Format: // projects/{project}/locations/{location}/interceptEndpointGroupAssociations/{intercept_endpoint_group_association} string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "networksecurity.googleapis.com/InterceptEndpointGroupAssociation" } ]; } // Request message for CreateInterceptEndpointGroupAssociation. message CreateInterceptEndpointGroupAssociationRequest { // Required. The parent resource where this association will be created. // Format: projects/{project}/locations/{location} string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "networksecurity.googleapis.com/InterceptEndpointGroupAssociation" } ]; // Optional. The ID to use for the new association, which will become the // final component of the endpoint group's resource name. If not provided, the // server will generate a unique ID. string intercept_endpoint_group_association_id = 2 [(google.api.field_behavior) = OPTIONAL]; // Required. The association to create. InterceptEndpointGroupAssociation intercept_endpoint_group_association = 3 [(google.api.field_behavior) = REQUIRED]; // Optional. A unique identifier for this request. Must be a UUID4. // This request is only idempotent if a `request_id` is provided. // See https://google.aip.dev/155 for more details. string request_id = 4 [ (google.api.field_info).format = UUID4, (google.api.field_behavior) = OPTIONAL ]; } // Request message for UpdateInterceptEndpointGroupAssociation. message UpdateInterceptEndpointGroupAssociationRequest { // Optional. The list of fields to update. // Fields are specified relative to the association // (e.g. `description`; *not* // `intercept_endpoint_group_association.description`). See // https://google.aip.dev/161 for more details. google.protobuf.FieldMask update_mask = 1 [(google.api.field_behavior) = OPTIONAL]; // Required. The association to update. InterceptEndpointGroupAssociation intercept_endpoint_group_association = 2 [(google.api.field_behavior) = REQUIRED]; // Optional. A unique identifier for this request. Must be a UUID4. // This request is only idempotent if a `request_id` is provided. // See https://google.aip.dev/155 for more details. string request_id = 3 [ (google.api.field_info).format = UUID4, (google.api.field_behavior) = OPTIONAL ]; } // Request message for DeleteInterceptEndpointGroupAssociation. message DeleteInterceptEndpointGroupAssociationRequest { // Required. The association to delete. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "networksecurity.googleapis.com/InterceptEndpointGroupAssociation" } ]; // Optional. A unique identifier for this request. Must be a UUID4. // This request is only idempotent if a `request_id` is provided. // See https://google.aip.dev/155 for more details. string request_id = 2 [ (google.api.field_info).format = UUID4, (google.api.field_behavior) = OPTIONAL ]; } // A deployment group aggregates many zonal intercept backends (deployments) // into a single global intercept service. Consumers can connect this service // using an endpoint group. message InterceptDeploymentGroup { option (google.api.resource) = { type: "networksecurity.googleapis.com/InterceptDeploymentGroup" pattern: "projects/{project}/locations/{location}/interceptDeploymentGroups/{intercept_deployment_group}" plural: "interceptDeploymentGroups" singular: "interceptDeploymentGroup" }; // An endpoint group connected to this deployment group. message ConnectedEndpointGroup { // Output only. The connected endpoint group's resource name, for example: // `projects/123456789/locations/global/interceptEndpointGroups/my-eg`. // See https://google.aip.dev/124. string name = 1 [ (google.api.field_behavior) = OUTPUT_ONLY, (google.api.resource_reference) = { type: "networksecurity.googleapis.com/InterceptEndpointGroup" } ]; } // A deployment belonging to this deployment group. message Deployment { // Output only. The name of the Intercept Deployment, in the format: // `projects/{project}/locations/{location}/interceptDeployments/{intercept_deployment}`. string name = 1 [ (google.api.field_behavior) = OUTPUT_ONLY, (google.api.resource_reference) = { type: "networksecurity.googleapis.com/InterceptDeployment" } ]; // Output only. Most recent known state of the deployment. InterceptDeployment.State state = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; } // The current state of the deployment group. enum State { // State not set (this is not a valid state). STATE_UNSPECIFIED = 0; // The deployment group is ready. ACTIVE = 1; // The deployment group is being created. CREATING = 2; // The deployment group is being deleted. DELETING = 3; } // Immutable. Identifier. The resource name of this deployment group, for // example: // `projects/123456789/locations/global/interceptDeploymentGroups/my-dg`. // See https://google.aip.dev/122 for more details. string name = 1 [ (google.api.field_behavior) = IDENTIFIER, (google.api.field_behavior) = IMMUTABLE ]; // Output only. The timestamp when the resource was created. // See https://google.aip.dev/148#timestamps. google.protobuf.Timestamp create_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The timestamp when the resource was most recently updated. // See https://google.aip.dev/148#timestamps. google.protobuf.Timestamp update_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // Optional. Labels are key/value pairs that help to organize and filter // resources. map labels = 4 [(google.api.field_behavior) = OPTIONAL]; // Required. Immutable. The network that will be used for all child // deployments, for example: `projects/{project}/global/networks/{network}`. // See https://google.aip.dev/124. string network = 5 [ (google.api.field_behavior) = REQUIRED, (google.api.field_behavior) = IMMUTABLE, (google.api.resource_reference) = { type: "compute.googleapis.com/Network" } ]; // Output only. The list of endpoint groups that are connected to this // resource. repeated ConnectedEndpointGroup connected_endpoint_groups = 6 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The list of Intercept Deployments that belong to this group. repeated Deployment nested_deployments = 10 [deprecated = true, (google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The current state of the deployment group. // See https://google.aip.dev/216. State state = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The current state of the resource does not match the user's // intended state, and the system is working to reconcile them. This is part // of the normal operation (e.g. adding a new deployment to the group) See // https://google.aip.dev/128. bool reconciling = 8 [(google.api.field_behavior) = OUTPUT_ONLY]; // Optional. User-provided description of the deployment group. // Used as additional context for the deployment group. string description = 9 [(google.api.field_behavior) = OPTIONAL]; // Output only. The list of locations where the deployment group is present. repeated InterceptLocation locations = 11 [(google.api.field_behavior) = OUTPUT_ONLY]; } // Request message for ListInterceptDeploymentGroups. message ListInterceptDeploymentGroupsRequest { // Required. The parent, which owns this collection of deployment groups. // Example: `projects/123456789/locations/global`. // See https://google.aip.dev/132 for more details. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "networksecurity.googleapis.com/InterceptDeploymentGroup" } ]; // Optional. Requested page size. Server may return fewer items than // requested. If unspecified, server will pick an appropriate default. See // https://google.aip.dev/158 for more details. int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; // Optional. A page token, received from a previous // `ListInterceptDeploymentGroups` call. Provide this to retrieve the // subsequent page. When paginating, all other parameters provided to // `ListInterceptDeploymentGroups` must match the call that provided the page // token. See https://google.aip.dev/158 for more details. string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; // Optional. Filter expression. // See https://google.aip.dev/160#filtering for more details. string filter = 4 [(google.api.field_behavior) = OPTIONAL]; // Optional. Sort expression. // See https://google.aip.dev/132#ordering for more details. string order_by = 5 [(google.api.field_behavior) = OPTIONAL]; } // Response message for ListInterceptDeploymentGroups. message ListInterceptDeploymentGroupsResponse { // The deployment groups from the specified parent. repeated InterceptDeploymentGroup intercept_deployment_groups = 1; // A token that can be sent as `page_token` to retrieve the next page. // If this field is omitted, there are no subsequent pages. // See https://google.aip.dev/158 for more details. string next_page_token = 2; } // Request message for GetInterceptDeploymentGroup. message GetInterceptDeploymentGroupRequest { // Required. The name of the deployment group to retrieve. // Format: // projects/{project}/locations/{location}/interceptDeploymentGroups/{intercept_deployment_group} string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "networksecurity.googleapis.com/InterceptDeploymentGroup" } ]; } // Request message for CreateInterceptDeploymentGroup. message CreateInterceptDeploymentGroupRequest { // Required. The parent resource where this deployment group will be created. // Format: projects/{project}/locations/{location} string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "networksecurity.googleapis.com/InterceptDeploymentGroup" } ]; // Required. The ID to use for the new deployment group, which will become the // final component of the deployment group's resource name. string intercept_deployment_group_id = 2 [(google.api.field_behavior) = REQUIRED]; // Required. The deployment group to create. InterceptDeploymentGroup intercept_deployment_group = 3 [(google.api.field_behavior) = REQUIRED]; // Optional. A unique identifier for this request. Must be a UUID4. // This request is only idempotent if a `request_id` is provided. // See https://google.aip.dev/155 for more details. string request_id = 4 [ (google.api.field_info).format = UUID4, (google.api.field_behavior) = OPTIONAL ]; } // Request message for UpdateInterceptDeploymentGroup. message UpdateInterceptDeploymentGroupRequest { // Optional. The list of fields to update. // Fields are specified relative to the deployment group // (e.g. `description`; *not* // `intercept_deployment_group.description`). See // https://google.aip.dev/161 for more details. google.protobuf.FieldMask update_mask = 1 [(google.api.field_behavior) = OPTIONAL]; // Required. The deployment group to update. InterceptDeploymentGroup intercept_deployment_group = 2 [(google.api.field_behavior) = REQUIRED]; // Optional. A unique identifier for this request. Must be a UUID4. // This request is only idempotent if a `request_id` is provided. // See https://google.aip.dev/155 for more details. string request_id = 3 [ (google.api.field_info).format = UUID4, (google.api.field_behavior) = OPTIONAL ]; } // Request message for DeleteInterceptDeploymentGroup. message DeleteInterceptDeploymentGroupRequest { // Required. The deployment group to delete. string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "networksecurity.googleapis.com/InterceptDeploymentGroup" } ]; // Optional. A unique identifier for this request. Must be a UUID4. // This request is only idempotent if a `request_id` is provided. // See https://google.aip.dev/155 for more details. string request_id = 2 [ (google.api.field_info).format = UUID4, (google.api.field_behavior) = OPTIONAL ]; } // A deployment represents a zonal intercept backend ready to accept // GENEVE-encapsulated traffic, e.g. a zonal instance group fronted by an // internal passthrough load balancer. Deployments are always part of a // global deployment group which represents a global intercept service. message InterceptDeployment { option (google.api.resource) = { type: "networksecurity.googleapis.com/InterceptDeployment" pattern: "projects/{project}/locations/{location}/interceptDeployments/{intercept_deployment}" plural: "interceptDeployments" singular: "interceptDeployment" }; // The current state of the deployment. enum State { // State not set (this is not a valid state). STATE_UNSPECIFIED = 0; // The deployment is ready and in sync with the parent group. ACTIVE = 1; // The deployment is being created. CREATING = 2; // The deployment is being deleted. DELETING = 3; // The deployment is out of sync with the parent group. // In most cases, this is a result of a transient issue within the system // (e.g. a delayed data-path config) and the system is expected to recover // automatically. See the parent deployment group's state for more details. OUT_OF_SYNC = 4; // An attempt to delete the deployment has failed. This is a terminal state // and the deployment is not expected to recover. The only permitted // operation is to retry deleting the deployment. DELETE_FAILED = 5; } // Immutable. Identifier. The resource name of this deployment, for example: // `projects/123456789/locations/us-central1-a/interceptDeployments/my-dep`. // See https://google.aip.dev/122 for more details. string name = 1 [ (google.api.field_behavior) = IDENTIFIER, (google.api.field_behavior) = IMMUTABLE ]; // Output only. The timestamp when the resource was created. // See https://google.aip.dev/148#timestamps. google.protobuf.Timestamp create_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The timestamp when the resource was most recently updated. // See https://google.aip.dev/148#timestamps. google.protobuf.Timestamp update_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // Optional. Labels are key/value pairs that help to organize and filter // resources. map labels = 4 [(google.api.field_behavior) = OPTIONAL]; // Required. Immutable. The regional forwarding rule that fronts the // interceptors, for example: // `projects/123456789/regions/us-central1/forwardingRules/my-rule`. // See https://google.aip.dev/124. string forwarding_rule = 5 [ (google.api.field_behavior) = REQUIRED, (google.api.field_behavior) = IMMUTABLE, (google.api.resource_reference) = { type: "compute.googleapis.com/ForwardingRule" } ]; // Required. Immutable. The deployment group that this deployment is a part // of, for example: // `projects/123456789/locations/global/interceptDeploymentGroups/my-dg`. // See https://google.aip.dev/124. string intercept_deployment_group = 6 [ (google.api.field_behavior) = REQUIRED, (google.api.field_behavior) = IMMUTABLE, (google.api.resource_reference) = { type: "networksecurity.googleapis.com/InterceptDeploymentGroup" } ]; // Output only. The current state of the deployment. // See https://google.aip.dev/216. State state = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The current state of the resource does not match the user's // intended state, and the system is working to reconcile them. This part of // the normal operation (e.g. linking a new association to the parent group). // See https://google.aip.dev/128. bool reconciling = 8 [(google.api.field_behavior) = OUTPUT_ONLY]; // Optional. User-provided description of the deployment. // Used as additional context for the deployment. string description = 9 [(google.api.field_behavior) = OPTIONAL]; } // Request message for ListInterceptDeployments. message ListInterceptDeploymentsRequest { // Required. The parent, which owns this collection of deployments. // Example: `projects/123456789/locations/us-central1-a`. // See https://google.aip.dev/132 for more details. string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "networksecurity.googleapis.com/InterceptDeployment" } ]; // Optional. Requested page size. Server may return fewer items than // requested. If unspecified, server will pick an appropriate default. See // https://google.aip.dev/158 for more details. int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; // Optional. A page token, received from a previous `ListInterceptDeployments` // call. Provide this to retrieve the subsequent page. When paginating, all // other parameters provided to `ListInterceptDeployments` must match the call // that provided the page token. See https://google.aip.dev/158 for more // details. string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; // Optional. Filter expression. // See https://google.aip.dev/160#filtering for more details. string filter = 4 [(google.api.field_behavior) = OPTIONAL]; // Optional. Sort expression. // See https://google.aip.dev/132#ordering for more details. string order_by = 5 [(google.api.field_behavior) = OPTIONAL]; } // Response message for ListInterceptDeployments. message ListInterceptDeploymentsResponse { // The deployments from the specified parent. repeated InterceptDeployment intercept_deployments = 1; // A token that can be sent as `page_token` to retrieve the next page. // If this field is omitted, there are no subsequent pages. // See https://google.aip.dev/158 for more details. string next_page_token = 2; // Locations that could not be reached. repeated string unreachable = 3; } // Request message for GetInterceptDeployment. message GetInterceptDeploymentRequest { // Required. The name of the deployment to retrieve. // Format: // projects/{project}/locations/{location}/interceptDeployments/{intercept_deployment} string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "networksecurity.googleapis.com/InterceptDeployment" } ]; } // Request message for CreateInterceptDeployment. message CreateInterceptDeploymentRequest { // Required. The parent resource where this deployment will be created. // Format: projects/{project}/locations/{location} string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "networksecurity.googleapis.com/InterceptDeployment" } ]; // Required. The ID to use for the new deployment, which will become the final // component of the deployment's resource name. string intercept_deployment_id = 2 [(google.api.field_behavior) = REQUIRED]; // Required. The deployment to create. InterceptDeployment intercept_deployment = 3 [(google.api.field_behavior) = REQUIRED]; // Optional. A unique identifier for this request. Must be a UUID4. // This request is only idempotent if a `request_id` is provided. // See https://google.aip.dev/155 for more details. string request_id = 4 [ (google.api.field_info).format = UUID4, (google.api.field_behavior) = OPTIONAL ]; } // Request message for UpdateInterceptDeployment. message UpdateInterceptDeploymentRequest { // Optional. The list of fields to update. // Fields are specified relative to the deployment // (e.g. `description`; *not* `intercept_deployment.description`). // See https://google.aip.dev/161 for more details. google.protobuf.FieldMask update_mask = 1 [(google.api.field_behavior) = OPTIONAL]; // Required. The deployment to update. InterceptDeployment intercept_deployment = 2 [(google.api.field_behavior) = REQUIRED]; // Optional. A unique identifier for this request. Must be a UUID4. // This request is only idempotent if a `request_id` is provided. // See https://google.aip.dev/155 for more details. string request_id = 3 [ (google.api.field_info).format = UUID4, (google.api.field_behavior) = OPTIONAL ]; } // Request message for DeleteInterceptDeployment. message DeleteInterceptDeploymentRequest { // Required. Name of the resource string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "networksecurity.googleapis.com/InterceptDeployment" } ]; // Optional. A unique identifier for this request. Must be a UUID4. // This request is only idempotent if a `request_id` is provided. // See https://google.aip.dev/155 for more details. string request_id = 2 [ (google.api.field_info).format = UUID4, (google.api.field_behavior) = OPTIONAL ]; } // Details about intercept in a specific cloud location. message InterceptLocation { // The current state of a resource in the location. enum State { // State not set (this is not a valid state). STATE_UNSPECIFIED = 0; // The resource is ready and in sync in the location. ACTIVE = 1; // The resource is out of sync in the location. // In most cases, this is a result of a transient issue within the system // (e.g. an inaccessible location) and the system is expected to recover // automatically. OUT_OF_SYNC = 2; } // Output only. The cloud location, e.g. "us-central1-a" or "asia-south1". string location = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The current state of the association in this location. State state = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; }