google-cloud-access_approval-v1 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2020 Google LLC
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # https://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ # Auto-generated by gapic-generator-ruby. DO NOT EDIT!
18
+
19
+ require "googleauth"
20
+
21
+ module Google
22
+ module Cloud
23
+ module AccessApproval
24
+ module V1
25
+ module AccessApproval
26
+ # Credentials for the AccessApproval API.
27
+ class Credentials < Google::Auth::Credentials
28
+ self.scope = [
29
+ "https://www.googleapis.com/auth/cloud-platform"
30
+ ]
31
+ self.env_vars = [
32
+ "ACCESS_APPROVAL_CREDENTIALS",
33
+ "ACCESS_APPROVAL_KEYFILE",
34
+ "GOOGLE_CLOUD_CREDENTIALS",
35
+ "GOOGLE_CLOUD_KEYFILE",
36
+ "GCLOUD_KEYFILE",
37
+ "ACCESS_APPROVAL_CREDENTIALS_JSON",
38
+ "ACCESS_APPROVAL_KEYFILE_JSON",
39
+ "GOOGLE_CLOUD_CREDENTIALS_JSON",
40
+ "GOOGLE_CLOUD_KEYFILE_JSON",
41
+ "GCLOUD_KEYFILE_JSON"
42
+ ]
43
+ self.paths = [
44
+ "~/.config/google_cloud/application_default_credentials.json"
45
+ ]
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2020 Google LLC
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # https://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ # Auto-generated by gapic-generator-ruby. DO NOT EDIT!
18
+
19
+
20
+ module Google
21
+ module Cloud
22
+ module AccessApproval
23
+ module V1
24
+ VERSION = "0.1.0"
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,123 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # source: google/cloud/accessapproval/v1/accessapproval.proto
3
+
4
+ require 'google/protobuf'
5
+
6
+ require 'google/api/annotations_pb'
7
+ require 'google/api/client_pb'
8
+ require 'google/api/field_behavior_pb'
9
+ require 'google/protobuf/empty_pb'
10
+ require 'google/protobuf/field_mask_pb'
11
+ require 'google/protobuf/timestamp_pb'
12
+ Google::Protobuf::DescriptorPool.generated_pool.build do
13
+ add_file("google/cloud/accessapproval/v1/accessapproval.proto", :syntax => :proto3) do
14
+ add_message "google.cloud.accessapproval.v1.AccessLocations" do
15
+ optional :principal_office_country, :string, 1
16
+ optional :principal_physical_location_country, :string, 2
17
+ end
18
+ add_message "google.cloud.accessapproval.v1.AccessReason" do
19
+ optional :type, :enum, 1, "google.cloud.accessapproval.v1.AccessReason.Type"
20
+ optional :detail, :string, 2
21
+ end
22
+ add_enum "google.cloud.accessapproval.v1.AccessReason.Type" do
23
+ value :TYPE_UNSPECIFIED, 0
24
+ value :CUSTOMER_INITIATED_SUPPORT, 1
25
+ value :GOOGLE_INITIATED_SERVICE, 2
26
+ value :GOOGLE_INITIATED_REVIEW, 3
27
+ end
28
+ add_message "google.cloud.accessapproval.v1.ApproveDecision" do
29
+ optional :approve_time, :message, 1, "google.protobuf.Timestamp"
30
+ optional :expire_time, :message, 2, "google.protobuf.Timestamp"
31
+ end
32
+ add_message "google.cloud.accessapproval.v1.DismissDecision" do
33
+ optional :dismiss_time, :message, 1, "google.protobuf.Timestamp"
34
+ end
35
+ add_message "google.cloud.accessapproval.v1.ResourceProperties" do
36
+ optional :excludes_descendants, :bool, 1
37
+ end
38
+ add_message "google.cloud.accessapproval.v1.ApprovalRequest" do
39
+ optional :name, :string, 1
40
+ optional :requested_resource_name, :string, 2
41
+ optional :requested_resource_properties, :message, 9, "google.cloud.accessapproval.v1.ResourceProperties"
42
+ optional :requested_reason, :message, 3, "google.cloud.accessapproval.v1.AccessReason"
43
+ optional :requested_locations, :message, 4, "google.cloud.accessapproval.v1.AccessLocations"
44
+ optional :request_time, :message, 5, "google.protobuf.Timestamp"
45
+ optional :requested_expiration, :message, 6, "google.protobuf.Timestamp"
46
+ oneof :decision do
47
+ optional :approve, :message, 7, "google.cloud.accessapproval.v1.ApproveDecision"
48
+ optional :dismiss, :message, 8, "google.cloud.accessapproval.v1.DismissDecision"
49
+ end
50
+ end
51
+ add_message "google.cloud.accessapproval.v1.EnrolledService" do
52
+ optional :cloud_product, :string, 1
53
+ optional :enrollment_level, :enum, 2, "google.cloud.accessapproval.v1.EnrollmentLevel"
54
+ end
55
+ add_message "google.cloud.accessapproval.v1.AccessApprovalSettings" do
56
+ optional :name, :string, 1
57
+ repeated :notification_emails, :string, 2
58
+ repeated :enrolled_services, :message, 3, "google.cloud.accessapproval.v1.EnrolledService"
59
+ optional :enrolled_ancestor, :bool, 4
60
+ end
61
+ add_message "google.cloud.accessapproval.v1.ListApprovalRequestsMessage" do
62
+ optional :parent, :string, 1
63
+ optional :filter, :string, 2
64
+ optional :page_size, :int32, 3
65
+ optional :page_token, :string, 4
66
+ end
67
+ add_message "google.cloud.accessapproval.v1.ListApprovalRequestsResponse" do
68
+ repeated :approval_requests, :message, 1, "google.cloud.accessapproval.v1.ApprovalRequest"
69
+ optional :next_page_token, :string, 2
70
+ end
71
+ add_message "google.cloud.accessapproval.v1.GetApprovalRequestMessage" do
72
+ optional :name, :string, 1
73
+ end
74
+ add_message "google.cloud.accessapproval.v1.ApproveApprovalRequestMessage" do
75
+ optional :name, :string, 1
76
+ optional :expire_time, :message, 2, "google.protobuf.Timestamp"
77
+ end
78
+ add_message "google.cloud.accessapproval.v1.DismissApprovalRequestMessage" do
79
+ optional :name, :string, 1
80
+ end
81
+ add_message "google.cloud.accessapproval.v1.GetAccessApprovalSettingsMessage" do
82
+ optional :name, :string, 1
83
+ end
84
+ add_message "google.cloud.accessapproval.v1.UpdateAccessApprovalSettingsMessage" do
85
+ optional :settings, :message, 1, "google.cloud.accessapproval.v1.AccessApprovalSettings"
86
+ optional :update_mask, :message, 2, "google.protobuf.FieldMask"
87
+ end
88
+ add_message "google.cloud.accessapproval.v1.DeleteAccessApprovalSettingsMessage" do
89
+ optional :name, :string, 1
90
+ end
91
+ add_enum "google.cloud.accessapproval.v1.EnrollmentLevel" do
92
+ value :ENROLLMENT_LEVEL_UNSPECIFIED, 0
93
+ value :BLOCK_ALL, 1
94
+ end
95
+ end
96
+ end
97
+
98
+ module Google
99
+ module Cloud
100
+ module AccessApproval
101
+ module V1
102
+ AccessLocations = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.accessapproval.v1.AccessLocations").msgclass
103
+ AccessReason = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.accessapproval.v1.AccessReason").msgclass
104
+ AccessReason::Type = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.accessapproval.v1.AccessReason.Type").enummodule
105
+ ApproveDecision = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.accessapproval.v1.ApproveDecision").msgclass
106
+ DismissDecision = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.accessapproval.v1.DismissDecision").msgclass
107
+ ResourceProperties = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.accessapproval.v1.ResourceProperties").msgclass
108
+ ApprovalRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.accessapproval.v1.ApprovalRequest").msgclass
109
+ EnrolledService = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.accessapproval.v1.EnrolledService").msgclass
110
+ AccessApprovalSettings = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.accessapproval.v1.AccessApprovalSettings").msgclass
111
+ ListApprovalRequestsMessage = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.accessapproval.v1.ListApprovalRequestsMessage").msgclass
112
+ ListApprovalRequestsResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.accessapproval.v1.ListApprovalRequestsResponse").msgclass
113
+ GetApprovalRequestMessage = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.accessapproval.v1.GetApprovalRequestMessage").msgclass
114
+ ApproveApprovalRequestMessage = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.accessapproval.v1.ApproveApprovalRequestMessage").msgclass
115
+ DismissApprovalRequestMessage = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.accessapproval.v1.DismissApprovalRequestMessage").msgclass
116
+ GetAccessApprovalSettingsMessage = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.accessapproval.v1.GetAccessApprovalSettingsMessage").msgclass
117
+ UpdateAccessApprovalSettingsMessage = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.accessapproval.v1.UpdateAccessApprovalSettingsMessage").msgclass
118
+ DeleteAccessApprovalSettingsMessage = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.accessapproval.v1.DeleteAccessApprovalSettingsMessage").msgclass
119
+ EnrollmentLevel = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.accessapproval.v1.EnrollmentLevel").enummodule
120
+ end
121
+ end
122
+ end
123
+ end
@@ -0,0 +1,109 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # Source: google/cloud/accessapproval/v1/accessapproval.proto for package 'Google.Cloud.AccessApproval.V1'
3
+ # Original file comments:
4
+ # Copyright 2020 Google LLC
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'grpc'
20
+ require 'google/cloud/accessapproval/v1/accessapproval_pb'
21
+
22
+ module Google
23
+ module Cloud
24
+ module AccessApproval
25
+ module V1
26
+ module AccessApproval
27
+ # This API allows a customer to manage accesses to cloud resources by
28
+ # Google personnel. It defines the following resource model:
29
+ #
30
+ # - The API has a collection of
31
+ # [ApprovalRequest][google.cloud.accessapproval.v1.ApprovalRequest]
32
+ # resources, named `approvalRequests/{approval_request_id}`
33
+ # - The API has top-level settings per Project/Folder/Organization, named
34
+ # `accessApprovalSettings`
35
+ #
36
+ # The service also periodically emails a list of recipients, defined at the
37
+ # Project/Folder/Organization level in the accessApprovalSettings, when there
38
+ # is a pending ApprovalRequest for them to act on. The ApprovalRequests can
39
+ # also optionally be published to a Cloud Pub/Sub topic owned by the customer
40
+ # (for Beta, the Pub/Sub setup is managed manually).
41
+ #
42
+ # ApprovalRequests can be approved or dismissed. Google personel can only
43
+ # access the indicated resource or resources if the request is approved
44
+ # (subject to some exclusions:
45
+ # https://cloud.google.com/access-approval/docs/overview#exclusions).
46
+ #
47
+ # Note: Using Access Approval functionality will mean that Google may not be
48
+ # able to meet the SLAs for your chosen products, as any support response times
49
+ # may be dramatically increased. As such the SLAs do not apply to any service
50
+ # disruption to the extent impacted by Customer's use of Access Approval. Do
51
+ # not enable Access Approval for projects where you may require high service
52
+ # availability and rapid response by Google Cloud Support.
53
+ #
54
+ # After a request is approved or dismissed, no further action may be taken on
55
+ # it. Requests with the requested_expiration in the past or with no activity
56
+ # for 14 days are considered dismissed. When an approval expires, the request
57
+ # is considered dismissed.
58
+ #
59
+ # If a request is not approved or dismissed, we call it pending.
60
+ class Service
61
+
62
+ include GRPC::GenericService
63
+
64
+ self.marshal_class_method = :encode
65
+ self.unmarshal_class_method = :decode
66
+ self.service_name = 'google.cloud.accessapproval.v1.AccessApproval'
67
+
68
+ # Lists approval requests associated with a project, folder, or organization.
69
+ # Approval requests can be filtered by state (pending, active, dismissed).
70
+ # The order is reverse chronological.
71
+ rpc :ListApprovalRequests, Google::Cloud::AccessApproval::V1::ListApprovalRequestsMessage, Google::Cloud::AccessApproval::V1::ListApprovalRequestsResponse
72
+ # Gets an approval request. Returns NOT_FOUND if the request does not exist.
73
+ rpc :GetApprovalRequest, Google::Cloud::AccessApproval::V1::GetApprovalRequestMessage, Google::Cloud::AccessApproval::V1::ApprovalRequest
74
+ # Approves a request and returns the updated ApprovalRequest.
75
+ #
76
+ # Returns NOT_FOUND if the request does not exist. Returns
77
+ # FAILED_PRECONDITION if the request exists but is not in a pending state.
78
+ rpc :ApproveApprovalRequest, Google::Cloud::AccessApproval::V1::ApproveApprovalRequestMessage, Google::Cloud::AccessApproval::V1::ApprovalRequest
79
+ # Dismisses a request. Returns the updated ApprovalRequest.
80
+ #
81
+ # NOTE: This does not deny access to the resource if another request has been
82
+ # made and approved. It is equivalent in effect to ignoring the request
83
+ # altogether.
84
+ #
85
+ # Returns NOT_FOUND if the request does not exist.
86
+ #
87
+ # Returns FAILED_PRECONDITION if the request exists but is not in a pending
88
+ # state.
89
+ rpc :DismissApprovalRequest, Google::Cloud::AccessApproval::V1::DismissApprovalRequestMessage, Google::Cloud::AccessApproval::V1::ApprovalRequest
90
+ # Gets the settings associated with a project, folder, or organization.
91
+ rpc :GetAccessApprovalSettings, Google::Cloud::AccessApproval::V1::GetAccessApprovalSettingsMessage, Google::Cloud::AccessApproval::V1::AccessApprovalSettings
92
+ # Updates the settings associated with a project, folder, or organization.
93
+ # Settings to update are determined by the value of field_mask.
94
+ rpc :UpdateAccessApprovalSettings, Google::Cloud::AccessApproval::V1::UpdateAccessApprovalSettingsMessage, Google::Cloud::AccessApproval::V1::AccessApprovalSettings
95
+ # Deletes the settings associated with a project, folder, or organization.
96
+ # This will have the effect of disabling Access Approval for the project,
97
+ # folder, or organization, but only if all ancestors also have Access
98
+ # Approval disabled. If Access Approval is enabled at a higher level of the
99
+ # hierarchy, then Access Approval will still be enabled at this level as
100
+ # the settings are inherited.
101
+ rpc :DeleteAccessApprovalSettings, Google::Cloud::AccessApproval::V1::DeleteAccessApprovalSettingsMessage, Google::Protobuf::Empty
102
+ end
103
+
104
+ Stub = Service.rpc_stub_class
105
+ end
106
+ end
107
+ end
108
+ end
109
+ end
@@ -0,0 +1,15 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # source: google/cloud/common_resources.proto
3
+
4
+ require 'google/protobuf'
5
+
6
+ require 'google/api/resource_pb'
7
+ Google::Protobuf::DescriptorPool.generated_pool.build do
8
+ add_file("google/cloud/common_resources.proto", :syntax => :proto3) do
9
+ end
10
+ end
11
+
12
+ module Google
13
+ module Cloud
14
+ end
15
+ end
@@ -0,0 +1,4 @@
1
+ # Access Approval API V1 Protocol Buffer Documentation
2
+
3
+ These files are for the YARD documentation of the generated protobuf files.
4
+ They are not intended to be required or loaded at runtime.
@@ -0,0 +1,59 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2020 Google LLC
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # https://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ # Auto-generated by gapic-generator-ruby. DO NOT EDIT!
18
+
19
+
20
+ module Google
21
+ module Api
22
+ # An indicator of the behavior of a given field (for example, that a field
23
+ # is required in requests, or given as output but ignored as input).
24
+ # This **does not** change the behavior in protocol buffers itself; it only
25
+ # denotes the behavior and may affect how API tooling handles the field.
26
+ #
27
+ # Note: This enum **may** receive new values in the future.
28
+ module FieldBehavior
29
+ # Conventional default for enums. Do not use this.
30
+ FIELD_BEHAVIOR_UNSPECIFIED = 0
31
+
32
+ # Specifically denotes a field as optional.
33
+ # While all fields in protocol buffers are optional, this may be specified
34
+ # for emphasis if appropriate.
35
+ OPTIONAL = 1
36
+
37
+ # Denotes a field as required.
38
+ # This indicates that the field **must** be provided as part of the request,
39
+ # and failure to do so will cause an error (usually `INVALID_ARGUMENT`).
40
+ REQUIRED = 2
41
+
42
+ # Denotes a field as output only.
43
+ # This indicates that the field is provided in responses, but including the
44
+ # field in a request does nothing (the server *must* ignore it and
45
+ # *must not* throw an error as a result of the field's presence).
46
+ OUTPUT_ONLY = 3
47
+
48
+ # Denotes a field as input only.
49
+ # This indicates that the field is provided in requests, and the
50
+ # corresponding field is not included in output.
51
+ INPUT_ONLY = 4
52
+
53
+ # Denotes a field as immutable.
54
+ # This indicates that the field may be set once in a request to create a
55
+ # resource, but may not be changed thereafter.
56
+ IMMUTABLE = 5
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,247 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2020 Google LLC
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # https://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ # Auto-generated by gapic-generator-ruby. DO NOT EDIT!
18
+
19
+
20
+ module Google
21
+ module Api
22
+ # A simple descriptor of a resource type.
23
+ #
24
+ # ResourceDescriptor annotates a resource message (either by means of a
25
+ # protobuf annotation or use in the service config), and associates the
26
+ # resource's schema, the resource type, and the pattern of the resource name.
27
+ #
28
+ # Example:
29
+ #
30
+ # message Topic {
31
+ # // Indicates this message defines a resource schema.
32
+ # // Declares the resource type in the format of {service}/{kind}.
33
+ # // For Kubernetes resources, the format is {api group}/{kind}.
34
+ # option (google.api.resource) = {
35
+ # type: "pubsub.googleapis.com/Topic"
36
+ # name_descriptor: {
37
+ # pattern: "projects/{project}/topics/{topic}"
38
+ # parent_type: "cloudresourcemanager.googleapis.com/Project"
39
+ # parent_name_extractor: "projects/{project}"
40
+ # }
41
+ # };
42
+ # }
43
+ #
44
+ # The ResourceDescriptor Yaml config will look like:
45
+ #
46
+ # resources:
47
+ # - type: "pubsub.googleapis.com/Topic"
48
+ # name_descriptor:
49
+ # - pattern: "projects/\\{project}/topics/\\{topic}"
50
+ # parent_type: "cloudresourcemanager.googleapis.com/Project"
51
+ # parent_name_extractor: "projects/\\{project}"
52
+ #
53
+ # Sometimes, resources have multiple patterns, typically because they can
54
+ # live under multiple parents.
55
+ #
56
+ # Example:
57
+ #
58
+ # message LogEntry {
59
+ # option (google.api.resource) = {
60
+ # type: "logging.googleapis.com/LogEntry"
61
+ # name_descriptor: {
62
+ # pattern: "projects/{project}/logs/{log}"
63
+ # parent_type: "cloudresourcemanager.googleapis.com/Project"
64
+ # parent_name_extractor: "projects/{project}"
65
+ # }
66
+ # name_descriptor: {
67
+ # pattern: "folders/{folder}/logs/{log}"
68
+ # parent_type: "cloudresourcemanager.googleapis.com/Folder"
69
+ # parent_name_extractor: "folders/{folder}"
70
+ # }
71
+ # name_descriptor: {
72
+ # pattern: "organizations/{organization}/logs/{log}"
73
+ # parent_type: "cloudresourcemanager.googleapis.com/Organization"
74
+ # parent_name_extractor: "organizations/{organization}"
75
+ # }
76
+ # name_descriptor: {
77
+ # pattern: "billingAccounts/{billing_account}/logs/{log}"
78
+ # parent_type: "billing.googleapis.com/BillingAccount"
79
+ # parent_name_extractor: "billingAccounts/{billing_account}"
80
+ # }
81
+ # };
82
+ # }
83
+ #
84
+ # The ResourceDescriptor Yaml config will look like:
85
+ #
86
+ # resources:
87
+ # - type: 'logging.googleapis.com/LogEntry'
88
+ # name_descriptor:
89
+ # - pattern: "projects/{project}/logs/{log}"
90
+ # parent_type: "cloudresourcemanager.googleapis.com/Project"
91
+ # parent_name_extractor: "projects/{project}"
92
+ # - pattern: "folders/{folder}/logs/{log}"
93
+ # parent_type: "cloudresourcemanager.googleapis.com/Folder"
94
+ # parent_name_extractor: "folders/{folder}"
95
+ # - pattern: "organizations/{organization}/logs/{log}"
96
+ # parent_type: "cloudresourcemanager.googleapis.com/Organization"
97
+ # parent_name_extractor: "organizations/{organization}"
98
+ # - pattern: "billingAccounts/{billing_account}/logs/{log}"
99
+ # parent_type: "billing.googleapis.com/BillingAccount"
100
+ # parent_name_extractor: "billingAccounts/{billing_account}"
101
+ #
102
+ # For flexible resources, the resource name doesn't contain parent names, but
103
+ # the resource itself has parents for policy evaluation.
104
+ #
105
+ # Example:
106
+ #
107
+ # message Shelf {
108
+ # option (google.api.resource) = {
109
+ # type: "library.googleapis.com/Shelf"
110
+ # name_descriptor: {
111
+ # pattern: "shelves/{shelf}"
112
+ # parent_type: "cloudresourcemanager.googleapis.com/Project"
113
+ # }
114
+ # name_descriptor: {
115
+ # pattern: "shelves/{shelf}"
116
+ # parent_type: "cloudresourcemanager.googleapis.com/Folder"
117
+ # }
118
+ # };
119
+ # }
120
+ #
121
+ # The ResourceDescriptor Yaml config will look like:
122
+ #
123
+ # resources:
124
+ # - type: 'library.googleapis.com/Shelf'
125
+ # name_descriptor:
126
+ # - pattern: "shelves/{shelf}"
127
+ # parent_type: "cloudresourcemanager.googleapis.com/Project"
128
+ # - pattern: "shelves/{shelf}"
129
+ # parent_type: "cloudresourcemanager.googleapis.com/Folder"
130
+ # @!attribute [rw] type
131
+ # @return [String]
132
+ # The resource type. It must be in the format of
133
+ # \\{service_name}/\\{resource_type_kind}. The `resource_type_kind` must be
134
+ # singular and must not include version numbers.
135
+ #
136
+ # Example: `storage.googleapis.com/Bucket`
137
+ #
138
+ # The value of the resource_type_kind must follow the regular expression
139
+ # /[A-Za-z][a-zA-Z0-9]+/. It should start with an upper case character and
140
+ # should use PascalCase (UpperCamelCase). The maximum number of
141
+ # characters allowed for the `resource_type_kind` is 100.
142
+ # @!attribute [rw] pattern
143
+ # @return [Array<String>]
144
+ # Optional. The relative resource name pattern associated with this resource
145
+ # type. The DNS prefix of the full resource name shouldn't be specified here.
146
+ #
147
+ # The path pattern must follow the syntax, which aligns with HTTP binding
148
+ # syntax:
149
+ #
150
+ # Template = Segment { "/" Segment } ;
151
+ # Segment = LITERAL | Variable ;
152
+ # Variable = "{" LITERAL "}" ;
153
+ #
154
+ # Examples:
155
+ #
156
+ # - "projects/\\{project}/topics/\\{topic}"
157
+ # - "projects/\\{project}/knowledgeBases/\\{knowledge_base}"
158
+ #
159
+ # The components in braces correspond to the IDs for each resource in the
160
+ # hierarchy. It is expected that, if multiple patterns are provided,
161
+ # the same component name (e.g. "project") refers to IDs of the same
162
+ # type of resource.
163
+ # @!attribute [rw] name_field
164
+ # @return [String]
165
+ # Optional. The field on the resource that designates the resource name
166
+ # field. If omitted, this is assumed to be "name".
167
+ # @!attribute [rw] history
168
+ # @return [Google::Api::ResourceDescriptor::History]
169
+ # Optional. The historical or future-looking state of the resource pattern.
170
+ #
171
+ # Example:
172
+ #
173
+ # // The InspectTemplate message originally only supported resource
174
+ # // names with organization, and project was added later.
175
+ # message InspectTemplate {
176
+ # option (google.api.resource) = {
177
+ # type: "dlp.googleapis.com/InspectTemplate"
178
+ # pattern:
179
+ # "organizations/{organization}/inspectTemplates/{inspect_template}"
180
+ # pattern: "projects/{project}/inspectTemplates/{inspect_template}"
181
+ # history: ORIGINALLY_SINGLE_PATTERN
182
+ # };
183
+ # }
184
+ # @!attribute [rw] plural
185
+ # @return [String]
186
+ # The plural name used in the resource name, such as 'projects' for
187
+ # the name of 'projects/\\{project}'. It is the same concept of the `plural`
188
+ # field in k8s CRD spec
189
+ # https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/
190
+ # @!attribute [rw] singular
191
+ # @return [String]
192
+ # The same concept of the `singular` field in k8s CRD spec
193
+ # https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/
194
+ # Such as "project" for the `resourcemanager.googleapis.com/Project` type.
195
+ class ResourceDescriptor
196
+ include Google::Protobuf::MessageExts
197
+ extend Google::Protobuf::MessageExts::ClassMethods
198
+
199
+ # A description of the historical or future-looking state of the
200
+ # resource pattern.
201
+ module History
202
+ # The "unset" value.
203
+ HISTORY_UNSPECIFIED = 0
204
+
205
+ # The resource originally had one pattern and launched as such, and
206
+ # additional patterns were added later.
207
+ ORIGINALLY_SINGLE_PATTERN = 1
208
+
209
+ # The resource has one pattern, but the API owner expects to add more
210
+ # later. (This is the inverse of ORIGINALLY_SINGLE_PATTERN, and prevents
211
+ # that from being necessary once there are multiple patterns.)
212
+ FUTURE_MULTI_PATTERN = 2
213
+ end
214
+ end
215
+
216
+ # Defines a proto annotation that describes a string field that refers to
217
+ # an API resource.
218
+ # @!attribute [rw] type
219
+ # @return [String]
220
+ # The resource type that the annotated field references.
221
+ #
222
+ # Example:
223
+ #
224
+ # message Subscription {
225
+ # string topic = 2 [(google.api.resource_reference) = {
226
+ # type: "pubsub.googleapis.com/Topic"
227
+ # }];
228
+ # }
229
+ # @!attribute [rw] child_type
230
+ # @return [String]
231
+ # The resource type of a child collection that the annotated field
232
+ # references. This is useful for annotating the `parent` field that
233
+ # doesn't have a fixed resource type.
234
+ #
235
+ # Example:
236
+ #
237
+ # message ListLogEntriesRequest {
238
+ # string parent = 1 [(google.api.resource_reference) = {
239
+ # child_type: "logging.googleapis.com/LogEntry"
240
+ # };
241
+ # }
242
+ class ResourceReference
243
+ include Google::Protobuf::MessageExts
244
+ extend Google::Protobuf::MessageExts::ClassMethods
245
+ end
246
+ end
247
+ end