cerbos 0.3.0 → 0.6.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 41c6a1f790cc09bff5f0c542d5338161730c4c649e66074afb381af8581637d3
4
- data.tar.gz: f7fbd30bc55b357b1a0a77d1da2e48d06cf9af1fe4cfc44947c879e661a81768
3
+ metadata.gz: e21f0359fb0e125e0e3a6d4ecf9ac0c12e254ab464b4ad67e8d6213fd2974ed5
4
+ data.tar.gz: a959dfdc08af3b960b58cd78c953925fba3b88b5db915bb30f94d3f32b810cb9
5
5
  SHA512:
6
- metadata.gz: e0bbda1a092e1ec55fe9565765609fd0ed3dd77a4fa12f627cddbb1b7b48177d423114a9e8d21a454e2fcfd9257e6ce82da303f4f3df82d2d24d766519734100
7
- data.tar.gz: 525b97f8aee44d35fe4039ab75ecad4315f79fedd0f2ad94a2b308fa99700579e8800009a38735ebdfc3a9f462aae230f71ef637ab682fc461c2d40cb6a897cb
6
+ metadata.gz: 7e89b9ec5168b7215d9b9c1ad86ed8a34404f3cd3db2b6bf44889b319fc3ab5520d2ea5eb74f22e99d955e544cfb43ca925dc597763c8ae782a645ee5b086c4b
7
+ data.tar.gz: e7ddf0d6071cd1ac4f607617b95e0987d11d72d34feeda6742d034f2ff212ca01dd0ef57abb94e2d54e578cd5bd5929e0ff2dab3844835cad557b9b9b062b10e
data/CHANGELOG.md CHANGED
@@ -1,6 +1,27 @@
1
1
  ## [Unreleased]
2
2
  No notable changes.
3
3
 
4
+ ## [0.6.0] - 2022-07-01
5
+ ### Added
6
+ - Support for schema validation in `Cerbos::Client#plan_resources` ([#32](https://github.com/cerbos/cerbos-sdk-ruby/pull/32))
7
+
8
+ Requires Cerbos 0.19+.
9
+ `Cerbos::Output::PlanResources#validation_errors` will always return an empty array if the client is connected to an earlier version of Cerbos.
10
+
11
+ As a result, `Cerbos::Output::CheckResources::Result::ValidationError` has moved to `Cerbos::Output::ValidationError`.
12
+ Attempting to access the class via the old namespace will print a deprecation warning and return the new class.
13
+
14
+ ## [0.5.0] - 2022-06-09
15
+ ### Added
16
+ - Allow symbol keys in nested attributes hashes ([#28](https://github.com/cerbos/cerbos-sdk-ruby/pull/28))
17
+
18
+ ## [0.4.0] - 2022-06-03
19
+ ### Added
20
+ - `on_validation_error` option to `Cerbos::Client#initialize` ([#22](https://github.com/cerbos/cerbos-sdk-ruby/pull/22))
21
+
22
+ ### Changed
23
+ - Minor documentation fixes ([#21](https://github.com/cerbos/cerbos-sdk-ruby/pull/21))
24
+
4
25
  ## [0.3.0] - 2022-05-13
5
26
  ### Added
6
27
  - More helper methods ([#11](https://github.com/cerbos/cerbos-sdk-ruby/pull/11))
@@ -15,7 +36,10 @@ No notable changes.
15
36
  ### Added
16
37
  - Initial implementation of `Cerbos::Client` ([#2](https://github.com/cerbos/cerbos-sdk-ruby/pull/2))
17
38
 
18
- [Unreleased]: https://github.com/cerbos/cerbos-sdk-ruby/compare/v0.3.0...HEAD
39
+ [Unreleased]: https://github.com/cerbos/cerbos-sdk-ruby/compare/v0.6.0...HEAD
40
+ [0.6.0]: https://github.com/cerbos/cerbos-sdk-ruby/compare/v0.5.0...v0.6.0
41
+ [0.5.0]: https://github.com/cerbos/cerbos-sdk-ruby/compare/v0.4.0...v0.5.0
42
+ [0.4.0]: https://github.com/cerbos/cerbos-sdk-ruby/compare/v0.3.0...v0.4.0
19
43
  [0.3.0]: https://github.com/cerbos/cerbos-sdk-ruby/compare/v0.2.0...v0.3.0
20
44
  [0.2.0]: https://github.com/cerbos/cerbos-sdk-ruby/compare/v0.1.0...v0.2.0
21
45
  [0.1.0]: https://github.com/cerbos/cerbos-sdk-ruby/compare/4481009e9dec2e1e6a2df8ea2f828690ceabbefc...v0.1.0
data/README.md CHANGED
@@ -53,3 +53,13 @@ decision.allow?("edit") # => false
53
53
  ```
54
54
 
55
55
  For more details, [see the `Client` documentation](https://www.rubydoc.info/gems/cerbos/Cerbos/Client).
56
+
57
+ ## Further reading
58
+
59
+ - [API reference](https://www.rubydoc.info/gems/cerbos/Cerbos)
60
+ - [Cerbos documentation](https://docs.cerbos.dev)
61
+
62
+ ## Get help
63
+
64
+ - [Join the Cerbos community on Slack](http://go.cerbos.io/slack)
65
+ - [Email us at help@cerbos.dev](mailto:help@cerbos.dev)
data/lib/cerbos/client.rb CHANGED
@@ -9,9 +9,10 @@ module Cerbos
9
9
  class Client
10
10
  # Create a client for interacting with the Cerbos PDP server over gRPC.
11
11
  #
12
- # @param target [String] Cerbos PDP server address (`"host", "host:port"`, or `"unix:/path/to/socket"`).
12
+ # @param target [String] Cerbos PDP server address (`"host"`, `"host:port"`, or `"unix:/path/to/socket"`).
13
13
  # @param tls [TLS, MutualTLS, false] gRPC connection encryption settings (`false` for plaintext).
14
14
  # @param grpc_channel_args [Hash{String, Symbol => String, Integer}] low-level settings for the gRPC channel (see [available keys in the gRPC documentation](https://grpc.github.io/grpc/core/group__grpc__arg__keys.html)).
15
+ # @param on_validation_error [:return, :raise, #call] action to take when input fails schema validation (`:return` to return the validation errors in the response, `:raise` to raise {Error::ValidationFailed}, or a callback to invoke).
15
16
  # @param playground_instance [String, nil] identifier of the playground instance to use when prototyping against the hosted demo PDP.
16
17
  # @param timeout [Numeric, nil] timeout for gRPC calls, in seconds (`nil` to never time out).
17
18
  #
@@ -23,7 +24,15 @@ module Cerbos
23
24
  #
24
25
  # @example Connect to the hosted demo PDP to experiment [in the playground](https://play.cerbos.dev)
25
26
  # client = Cerbos::Client.new("demo-pdp.cerbos.cloud", tls: Cerbos::TLS.new, playground_instance: "gE623b0180QlsG5a4QIN6UOZ6f3iSFW2")
26
- def initialize(target, tls:, grpc_channel_args: {}, playground_instance: nil, timeout: nil)
27
+ #
28
+ # @example Raise an error when input fails schema validation
29
+ # client = Cerbos::Client.new("localhost:3593", tls: false, on_validation_error: :raise)
30
+ #
31
+ # @example Invoke a callback when input fails schema validation
32
+ # client = Cerbos::Client.new("localhost:3593", tls: false, on_validation_error: ->(validation_errors) { do_something_with validation_errors })
33
+ def initialize(target, tls:, grpc_channel_args: {}, on_validation_error: :return, playground_instance: nil, timeout: nil)
34
+ @on_validation_error = on_validation_error
35
+
27
36
  handle_errors do
28
37
  credentials = tls ? tls.to_channel_credentials : :this_channel_is_insecure
29
38
 
@@ -53,6 +62,13 @@ module Cerbos
53
62
  # @param request_id [String] identifier for tracing the request.
54
63
  #
55
64
  # @return [Boolean]
65
+ #
66
+ # @example
67
+ # client.allow?(
68
+ # principal: {id: "user@example.com", roles: ["USER"]},
69
+ # resource: {kind: "document", id: "1"},
70
+ # action: "view"
71
+ # ) # => true
56
72
  def allow?(principal:, resource:, action:, aux_data: nil, request_id: SecureRandom.uuid)
57
73
  check_resource(
58
74
  principal: principal,
@@ -119,7 +135,7 @@ module Cerbos
119
135
  # ]
120
136
  # )
121
137
  #
122
- # result.allow?(resource: {kind: "document", id: "1"}, action: "view") # => true
138
+ # decision.allow?(resource: {kind: "document", id: "1"}, action: "view") # => true
123
139
  def check_resources(principal:, resources:, aux_data: nil, include_metadata: false, request_id: SecureRandom.uuid)
124
140
  handle_errors do
125
141
  request = Protobuf::Cerbos::Request::V1::CheckResourcesRequest.new(
@@ -132,7 +148,9 @@ module Cerbos
132
148
 
133
149
  response = perform_request(@cerbos_service, :check_resources, request)
134
150
 
135
- Output::CheckResources.from_protobuf(response)
151
+ Output::CheckResources.from_protobuf(response).tap do |output|
152
+ handle_validation_errors output
153
+ end
136
154
  end
137
155
  end
138
156
 
@@ -169,7 +187,9 @@ module Cerbos
169
187
 
170
188
  response = perform_request(@cerbos_service, :plan_resources, request)
171
189
 
172
- Output::PlanResources.from_protobuf(response)
190
+ Output::PlanResources.from_protobuf(response).tap do |output|
191
+ handle_validation_errors output
192
+ end
173
193
  end
174
194
  end
175
195
 
@@ -200,6 +220,17 @@ module Cerbos
200
220
  raise Error, error.message
201
221
  end
202
222
 
223
+ def handle_validation_errors(output)
224
+ return if @on_validation_error == :return
225
+
226
+ validation_errors = output.validation_errors
227
+ return if validation_errors.empty?
228
+
229
+ raise Error::ValidationFailed.new(validation_errors) if @on_validation_error == :raise
230
+
231
+ @on_validation_error.call validation_errors
232
+ end
233
+
203
234
  def perform_request(service, rpc, request)
204
235
  service.public_send(rpc, request)
205
236
  end
data/lib/cerbos/error.rb CHANGED
@@ -3,6 +3,21 @@
3
3
  module Cerbos
4
4
  # Base type for errors thrown by the `cerbos` gem.
5
5
  class Error < StandardError
6
+ # Input failed schema validation.
7
+ class ValidationFailed < Error
8
+ # The validation errors that occurred.
9
+ #
10
+ # @return [Array<Output::CheckResources::Result::ValidationError>]
11
+ attr_reader :validation_errors
12
+
13
+ # @private
14
+ def initialize(validation_errors)
15
+ super "Input failed schema validation"
16
+
17
+ @validation_errors = validation_errors
18
+ end
19
+ end
20
+
6
21
  # An error indicating an unsuccessful gRPC operation.
7
22
  class NotOK < Error
8
23
  # The gRPC status code.
@@ -33,7 +48,7 @@ module Cerbos
33
48
 
34
49
  # @private
35
50
  def initialize(code:, details:, metadata: {})
36
- super("gRPC error #{code}: #{details}")
51
+ super "gRPC error #{code}: #{details}"
37
52
 
38
53
  @code = code
39
54
  @details = details
@@ -22,7 +22,20 @@ module Cerbos
22
22
 
23
23
  # @private
24
24
  def to_protobuf
25
- @attributes.transform_values { |value| Google::Protobuf::Value.from_ruby(value) }
25
+ @attributes.transform_values { |value| Google::Protobuf::Value.from_ruby(deep_stringify_keys(value)) }
26
+ end
27
+
28
+ private
29
+
30
+ def deep_stringify_keys(object)
31
+ case object
32
+ when Hash
33
+ object.each_with_object({}) { |(key, value), result| result[key.to_s] = deep_stringify_keys(value) }
34
+ when Array
35
+ object.map { |value| deep_stringify_keys(value) }
36
+ else
37
+ object
38
+ end
26
39
  end
27
40
  end
28
41
  end
@@ -43,7 +43,7 @@ module Cerbos
43
43
 
44
44
  # @private
45
45
  def to_protobuf
46
- Protobuf::Cerbos::Engine::V1::PlanResourcesRequest::Resource.new(
46
+ Protobuf::Cerbos::Engine::V1::PlanResourcesInput::Resource.new(
47
47
  kind: kind,
48
48
  attr: attributes.to_protobuf,
49
49
  policy_version: policy_version,
@@ -55,6 +55,13 @@ module Cerbos
55
55
  results.find { |result| matching_resource?(search, result.resource) }
56
56
  end
57
57
 
58
+ # List unique schema validation errors for the principal or resource attributes.
59
+ #
60
+ # @return [Array<ValidationError>]
61
+ def validation_errors
62
+ results.flat_map(&:validation_errors).uniq
63
+ end
64
+
58
65
  private
59
66
 
60
67
  def matching_resource?(search, candidate)
@@ -88,11 +95,21 @@ module Cerbos
88
95
  # @return [Metadata]
89
96
  # @return [nil] if `include_metadata` was `false`.
90
97
 
98
+ # @private
99
+ def self.const_missing(const)
100
+ if const == :ValidationError
101
+ warn "#{name}::ValidationError is deprecated; use #{ValidationError.name} instead (called from #{caller(1..1).first})"
102
+ return ValidationError
103
+ end
104
+
105
+ super
106
+ end
107
+
91
108
  def self.from_protobuf(entry)
92
109
  new(
93
110
  resource: CheckResources::Result::Resource.from_protobuf(entry.resource),
94
111
  actions: entry.actions.to_h,
95
- validation_errors: (entry.validation_errors || []).map { |validation_error| CheckResources::Result::ValidationError.from_protobuf(validation_error) },
112
+ validation_errors: (entry.validation_errors || []).map { |validation_error| ValidationError.from_protobuf(validation_error) },
96
113
  metadata: CheckResources::Result::Metadata.from_protobuf(entry.meta)
97
114
  )
98
115
  end
@@ -154,46 +171,6 @@ module Cerbos
154
171
  end
155
172
  end
156
173
 
157
- # An error that occurred while validating the principal or resource attributes against a schema.
158
- CheckResources::Result::ValidationError = Output.new_class(:path, :message, :source) do
159
- # @!attribute [r] path
160
- # The path to the attribute that failed validation.
161
- #
162
- # @return [String]
163
-
164
- # @!attribute [r] message
165
- # The error message.
166
- #
167
- # @return [String]
168
-
169
- # @!attribute [r] source
170
- # The source of the invalid attributes.
171
- #
172
- # @return [:SOURCE_PRINCIPAL, :SOURCE_RESOURCE]
173
-
174
- def self.from_protobuf(validation_error)
175
- new(
176
- path: validation_error.path,
177
- message: validation_error.message,
178
- source: validation_error.source
179
- )
180
- end
181
-
182
- # Check if the principal's attributes failed schema validation.
183
- #
184
- # @return [Boolean]
185
- def from_principal?
186
- source == :SOURCE_PRINCIPAL
187
- end
188
-
189
- # Check if the resource's attributes failed schema validation.
190
- #
191
- # @return [Boolean]
192
- def from_resource?
193
- source == :SOURCE_RESOURCE
194
- end
195
- end
196
-
197
174
  # Additional information about how policy decisions were reached.
198
175
  CheckResources::Result::Metadata = Output.new_class(:actions, :effective_derived_roles) do
199
176
  # @!attribute [r] actions
@@ -5,7 +5,7 @@ module Cerbos
5
5
  # A query plan that can be used to obtain a list of resources on which a principal is allowed to perform a particular action.
6
6
  #
7
7
  # @see Client#plan_resources
8
- PlanResources = Output.new_class(:request_id, :kind, :condition, :metadata) do
8
+ PlanResources = Output.new_class(:request_id, :kind, :condition, :validation_errors, :metadata) do
9
9
  # @!attribute [r] request_id
10
10
  # The identifier for tracing the request.
11
11
  #
@@ -26,6 +26,11 @@ module Cerbos
26
26
  # @see #always_denied?
27
27
  # @see #conditional?
28
28
 
29
+ # @!attribute [r] validation_errors
30
+ # Any schema validation errors for the principal or resource attributes.
31
+ #
32
+ # @return [Array<ValidationError>]
33
+
29
34
  # @!attribute [r] metadata
30
35
  # Additional information about the query plan.
31
36
  #
@@ -37,6 +42,7 @@ module Cerbos
37
42
  request_id: plan_resources.request_id,
38
43
  kind: plan_resources.filter.kind,
39
44
  condition: PlanResources::Expression::Operand.from_protobuf(plan_resources.filter.condition),
45
+ validation_errors: (plan_resources.validation_errors || []).map { |validation_error| ValidationError.from_protobuf(validation_error) },
40
46
  metadata: PlanResources::Metadata.from_protobuf(plan_resources.meta)
41
47
  )
42
48
  end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cerbos
4
+ module Output
5
+ # An error that occurred while validating the principal or resource attributes against a schema.
6
+ ValidationError = Output.new_class(:path, :message, :source) do
7
+ # @!attribute [r] path
8
+ # The path to the attribute that failed validation.
9
+ #
10
+ # @return [String]
11
+
12
+ # @!attribute [r] message
13
+ # The error message.
14
+ #
15
+ # @return [String]
16
+
17
+ # @!attribute [r] source
18
+ # The source of the invalid attributes.
19
+ #
20
+ # @return [:SOURCE_PRINCIPAL, :SOURCE_RESOURCE]
21
+
22
+ def self.from_protobuf(validation_error)
23
+ new(
24
+ path: validation_error.path,
25
+ message: validation_error.message,
26
+ source: validation_error.source
27
+ )
28
+ end
29
+
30
+ # Check if the principal's attributes failed schema validation.
31
+ #
32
+ # @return [Boolean]
33
+ def from_principal?
34
+ source == :SOURCE_PRINCIPAL
35
+ end
36
+
37
+ # Check if the resource's attributes failed schema validation.
38
+ #
39
+ # @return [Boolean]
40
+ def from_resource?
41
+ source == :SOURCE_RESOURCE
42
+ end
43
+ end
44
+ end
45
+ end
data/lib/cerbos/output.rb CHANGED
@@ -32,6 +32,7 @@ module Cerbos
32
32
  end
33
33
  end
34
34
 
35
+ require_relative "output/validation_error"
35
36
  require_relative "output/check_resources"
36
37
  require_relative "output/plan_resources"
37
38
  require_relative "output/server_info"
@@ -23,6 +23,20 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
23
23
  repeated :inputs, :message, 4, "cerbos.engine.v1.CheckInput", json_name: "inputs"
24
24
  repeated :outputs, :message, 5, "cerbos.engine.v1.CheckOutput", json_name: "outputs"
25
25
  optional :error, :string, 6, json_name: "error"
26
+ oneof :method do
27
+ optional :check_resources, :message, 7, "cerbos.audit.v1.DecisionLogEntry.CheckResources", json_name: "checkResources"
28
+ optional :plan_resources, :message, 8, "cerbos.audit.v1.DecisionLogEntry.PlanResources", json_name: "planResources"
29
+ end
30
+ end
31
+ add_message "cerbos.audit.v1.DecisionLogEntry.CheckResources" do
32
+ repeated :inputs, :message, 1, "cerbos.engine.v1.CheckInput", json_name: "inputs"
33
+ repeated :outputs, :message, 2, "cerbos.engine.v1.CheckOutput", json_name: "outputs"
34
+ optional :error, :string, 3, json_name: "error"
35
+ end
36
+ add_message "cerbos.audit.v1.DecisionLogEntry.PlanResources" do
37
+ optional :input, :message, 1, "cerbos.engine.v1.PlanResourcesInput", json_name: "input"
38
+ optional :output, :message, 2, "cerbos.engine.v1.PlanResourcesOutput", json_name: "output"
39
+ optional :error, :string, 3, json_name: "error"
26
40
  end
27
41
  add_message "cerbos.audit.v1.MetaValues" do
28
42
  repeated :values, :string, 1, json_name: "values"
@@ -41,6 +55,8 @@ module Cerbos::Protobuf::Cerbos
41
55
  module V1
42
56
  AccessLogEntry = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.audit.v1.AccessLogEntry").msgclass
43
57
  DecisionLogEntry = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.audit.v1.DecisionLogEntry").msgclass
58
+ DecisionLogEntry::CheckResources = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.audit.v1.DecisionLogEntry.CheckResources").msgclass
59
+ DecisionLogEntry::PlanResources = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.audit.v1.DecisionLogEntry.PlanResources").msgclass
44
60
  MetaValues = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.audit.v1.MetaValues").msgclass
45
61
  Peer = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.audit.v1.Peer").msgclass
46
62
  end
@@ -13,20 +13,70 @@ require 'cerbos/protobuf/validate/validate_pb'
13
13
 
14
14
  Google::Protobuf::DescriptorPool.generated_pool.build do
15
15
  add_file("cerbos/engine/v1/engine.proto", :syntax => :proto3) do
16
- add_message "cerbos.engine.v1.PlanResourcesRequest" do
16
+ add_message "cerbos.engine.v1.PlanResourcesInput" do
17
17
  optional :request_id, :string, 1, json_name: "requestId"
18
18
  optional :action, :string, 2, json_name: "action"
19
19
  optional :principal, :message, 3, "cerbos.engine.v1.Principal", json_name: "principal"
20
- optional :resource, :message, 4, "cerbos.engine.v1.PlanResourcesRequest.Resource", json_name: "resource"
20
+ optional :resource, :message, 4, "cerbos.engine.v1.PlanResourcesInput.Resource", json_name: "resource"
21
21
  optional :aux_data, :message, 5, "cerbos.engine.v1.AuxData", json_name: "auxData"
22
22
  optional :include_meta, :bool, 6, json_name: "includeMeta"
23
23
  end
24
- add_message "cerbos.engine.v1.PlanResourcesRequest.Resource" do
24
+ add_message "cerbos.engine.v1.PlanResourcesInput.Resource" do
25
25
  optional :kind, :string, 1, json_name: "kind"
26
26
  map :attr, :string, :message, 2, "google.protobuf.Value"
27
27
  optional :policy_version, :string, 3, json_name: "policyVersion"
28
28
  optional :scope, :string, 4, json_name: "scope"
29
29
  end
30
+ add_message "cerbos.engine.v1.PlanResourcesAst" do
31
+ optional :filter_ast, :message, 1, "cerbos.engine.v1.PlanResourcesAst.Node", json_name: "filterAst"
32
+ end
33
+ add_message "cerbos.engine.v1.PlanResourcesAst.Node" do
34
+ oneof :node do
35
+ optional :logical_operation, :message, 1, "cerbos.engine.v1.PlanResourcesAst.LogicalOperation", json_name: "logicalOperation"
36
+ optional :expression, :message, 2, "google.api.expr.v1alpha1.CheckedExpr", json_name: "expression"
37
+ end
38
+ end
39
+ add_message "cerbos.engine.v1.PlanResourcesAst.LogicalOperation" do
40
+ optional :operator, :enum, 1, "cerbos.engine.v1.PlanResourcesAst.LogicalOperation.Operator", json_name: "operator"
41
+ repeated :nodes, :message, 2, "cerbos.engine.v1.PlanResourcesAst.Node", json_name: "nodes"
42
+ end
43
+ add_enum "cerbos.engine.v1.PlanResourcesAst.LogicalOperation.Operator" do
44
+ value :OPERATOR_UNSPECIFIED, 0
45
+ value :OPERATOR_AND, 1
46
+ value :OPERATOR_OR, 2
47
+ value :OPERATOR_NOT, 3
48
+ end
49
+ add_message "cerbos.engine.v1.PlanResourcesFilter" do
50
+ optional :kind, :enum, 1, "cerbos.engine.v1.PlanResourcesFilter.Kind", json_name: "kind"
51
+ optional :condition, :message, 2, "cerbos.engine.v1.PlanResourcesFilter.Expression.Operand", json_name: "condition"
52
+ end
53
+ add_message "cerbos.engine.v1.PlanResourcesFilter.Expression" do
54
+ optional :operator, :string, 1, json_name: "operator"
55
+ repeated :operands, :message, 2, "cerbos.engine.v1.PlanResourcesFilter.Expression.Operand", json_name: "operands"
56
+ end
57
+ add_message "cerbos.engine.v1.PlanResourcesFilter.Expression.Operand" do
58
+ oneof :node do
59
+ optional :value, :message, 1, "google.protobuf.Value", json_name: "value"
60
+ optional :expression, :message, 2, "cerbos.engine.v1.PlanResourcesFilter.Expression", json_name: "expression"
61
+ optional :variable, :string, 3, json_name: "variable"
62
+ end
63
+ end
64
+ add_enum "cerbos.engine.v1.PlanResourcesFilter.Kind" do
65
+ value :KIND_UNSPECIFIED, 0
66
+ value :KIND_ALWAYS_ALLOWED, 1
67
+ value :KIND_ALWAYS_DENIED, 2
68
+ value :KIND_CONDITIONAL, 3
69
+ end
70
+ add_message "cerbos.engine.v1.PlanResourcesOutput" do
71
+ optional :request_id, :string, 1, json_name: "requestId"
72
+ optional :action, :string, 2, json_name: "action"
73
+ optional :kind, :string, 3, json_name: "kind"
74
+ optional :policy_version, :string, 4, json_name: "policyVersion"
75
+ optional :scope, :string, 5, json_name: "scope"
76
+ optional :filter, :message, 6, "cerbos.engine.v1.PlanResourcesFilter", json_name: "filter"
77
+ optional :filter_debug, :string, 7, json_name: "filterDebug"
78
+ repeated :validation_errors, :message, 8, "cerbos.schema.v1.ValidationError", json_name: "validationErrors"
79
+ end
30
80
  add_message "cerbos.engine.v1.CheckInput" do
31
81
  optional :request_id, :string, 1, json_name: "requestId"
32
82
  optional :resource, :message, 2, "cerbos.engine.v1.Resource", json_name: "resource"
@@ -46,30 +96,6 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
46
96
  optional :policy, :string, 2, json_name: "policy"
47
97
  optional :scope, :string, 3, json_name: "scope"
48
98
  end
49
- add_message "cerbos.engine.v1.PlanResourcesOutput" do
50
- optional :request_id, :string, 1, json_name: "requestId"
51
- optional :action, :string, 2, json_name: "action"
52
- optional :kind, :string, 3, json_name: "kind"
53
- optional :policy_version, :string, 4, json_name: "policyVersion"
54
- optional :scope, :string, 5, json_name: "scope"
55
- optional :filter, :message, 6, "cerbos.engine.v1.PlanResourcesOutput.Node", json_name: "filter"
56
- end
57
- add_message "cerbos.engine.v1.PlanResourcesOutput.Node" do
58
- oneof :node do
59
- optional :logical_operation, :message, 1, "cerbos.engine.v1.PlanResourcesOutput.LogicalOperation", json_name: "logicalOperation"
60
- optional :expression, :message, 2, "google.api.expr.v1alpha1.CheckedExpr", json_name: "expression"
61
- end
62
- end
63
- add_message "cerbos.engine.v1.PlanResourcesOutput.LogicalOperation" do
64
- optional :operator, :enum, 1, "cerbos.engine.v1.PlanResourcesOutput.LogicalOperation.Operator", json_name: "operator"
65
- repeated :nodes, :message, 2, "cerbos.engine.v1.PlanResourcesOutput.Node", json_name: "nodes"
66
- end
67
- add_enum "cerbos.engine.v1.PlanResourcesOutput.LogicalOperation.Operator" do
68
- value :OPERATOR_UNSPECIFIED, 0
69
- value :OPERATOR_AND, 1
70
- value :OPERATOR_OR, 2
71
- value :OPERATOR_NOT, 3
72
- end
73
99
  add_message "cerbos.engine.v1.Resource" do
74
100
  optional :kind, :string, 1, json_name: "kind"
75
101
  optional :policy_version, :string, 2, json_name: "policyVersion"
@@ -143,15 +169,20 @@ end
143
169
  module Cerbos::Protobuf::Cerbos
144
170
  module Engine
145
171
  module V1
146
- PlanResourcesRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.PlanResourcesRequest").msgclass
147
- PlanResourcesRequest::Resource = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.PlanResourcesRequest.Resource").msgclass
172
+ PlanResourcesInput = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.PlanResourcesInput").msgclass
173
+ PlanResourcesInput::Resource = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.PlanResourcesInput.Resource").msgclass
174
+ PlanResourcesAst = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.PlanResourcesAst").msgclass
175
+ PlanResourcesAst::Node = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.PlanResourcesAst.Node").msgclass
176
+ PlanResourcesAst::LogicalOperation = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.PlanResourcesAst.LogicalOperation").msgclass
177
+ PlanResourcesAst::LogicalOperation::Operator = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.PlanResourcesAst.LogicalOperation.Operator").enummodule
178
+ PlanResourcesFilter = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.PlanResourcesFilter").msgclass
179
+ PlanResourcesFilter::Expression = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.PlanResourcesFilter.Expression").msgclass
180
+ PlanResourcesFilter::Expression::Operand = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.PlanResourcesFilter.Expression.Operand").msgclass
181
+ PlanResourcesFilter::Kind = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.PlanResourcesFilter.Kind").enummodule
182
+ PlanResourcesOutput = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.PlanResourcesOutput").msgclass
148
183
  CheckInput = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.CheckInput").msgclass
149
184
  CheckOutput = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.CheckOutput").msgclass
150
185
  CheckOutput::ActionEffect = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.CheckOutput.ActionEffect").msgclass
151
- PlanResourcesOutput = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.PlanResourcesOutput").msgclass
152
- PlanResourcesOutput::Node = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.PlanResourcesOutput.Node").msgclass
153
- PlanResourcesOutput::LogicalOperation = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.PlanResourcesOutput.LogicalOperation").msgclass
154
- PlanResourcesOutput::LogicalOperation::Operator = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.PlanResourcesOutput.LogicalOperation.Operator").enummodule
155
186
  Resource = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.Resource").msgclass
156
187
  Principal = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.Principal").msgclass
157
188
  AuxData = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.AuxData").msgclass
@@ -19,7 +19,7 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
19
19
  optional :request_id, :string, 1, json_name: "requestId"
20
20
  optional :action, :string, 2, json_name: "action"
21
21
  optional :principal, :message, 3, "cerbos.engine.v1.Principal", json_name: "principal"
22
- optional :resource, :message, 4, "cerbos.engine.v1.PlanResourcesRequest.Resource", json_name: "resource"
22
+ optional :resource, :message, 4, "cerbos.engine.v1.PlanResourcesInput.Resource", json_name: "resource"
23
23
  optional :aux_data, :message, 5, "cerbos.request.v1.AuxData", json_name: "auxData"
24
24
  optional :include_meta, :bool, 6, json_name: "includeMeta"
25
25
  end
@@ -5,10 +5,10 @@ require 'google/protobuf'
5
5
 
6
6
  require 'cerbos/protobuf/cerbos/audit/v1/audit_pb'
7
7
  require 'cerbos/protobuf/cerbos/effect/v1/effect_pb'
8
+ require 'cerbos/protobuf/cerbos/engine/v1/engine_pb'
8
9
  require 'cerbos/protobuf/cerbos/policy/v1/policy_pb'
9
10
  require 'cerbos/protobuf/cerbos/schema/v1/schema_pb'
10
11
  require 'google/protobuf/empty_pb'
11
- require 'google/protobuf/struct_pb'
12
12
  require 'cerbos/protobuf/protoc-gen-openapiv2/options/annotations_pb'
13
13
 
14
14
  Google::Protobuf::DescriptorPool.generated_pool.build do
@@ -18,29 +18,9 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
18
18
  optional :action, :string, 2, json_name: "action"
19
19
  optional :resource_kind, :string, 3, json_name: "resourceKind"
20
20
  optional :policy_version, :string, 4, json_name: "policyVersion"
21
- optional :filter, :message, 5, "cerbos.response.v1.PlanResourcesResponse.Filter", json_name: "filter"
21
+ optional :filter, :message, 5, "cerbos.engine.v1.PlanResourcesFilter", json_name: "filter"
22
22
  optional :meta, :message, 6, "cerbos.response.v1.PlanResourcesResponse.Meta", json_name: "meta"
23
- end
24
- add_message "cerbos.response.v1.PlanResourcesResponse.Expression" do
25
- optional :operator, :string, 1, json_name: "operator"
26
- repeated :operands, :message, 2, "cerbos.response.v1.PlanResourcesResponse.Expression.Operand", json_name: "operands"
27
- end
28
- add_message "cerbos.response.v1.PlanResourcesResponse.Expression.Operand" do
29
- oneof :node do
30
- optional :value, :message, 1, "google.protobuf.Value", json_name: "value"
31
- optional :expression, :message, 2, "cerbos.response.v1.PlanResourcesResponse.Expression", json_name: "expression"
32
- optional :variable, :string, 3, json_name: "variable"
33
- end
34
- end
35
- add_message "cerbos.response.v1.PlanResourcesResponse.Filter" do
36
- optional :kind, :enum, 1, "cerbos.response.v1.PlanResourcesResponse.Filter.Kind", json_name: "kind"
37
- optional :condition, :message, 2, "cerbos.response.v1.PlanResourcesResponse.Expression.Operand", json_name: "condition"
38
- end
39
- add_enum "cerbos.response.v1.PlanResourcesResponse.Filter.Kind" do
40
- value :KIND_UNSPECIFIED, 0
41
- value :KIND_ALWAYS_ALLOWED, 1
42
- value :KIND_ALWAYS_DENIED, 2
43
- value :KIND_CONDITIONAL, 3
23
+ repeated :validation_errors, :message, 7, "cerbos.schema.v1.ValidationError", json_name: "validationErrors"
44
24
  end
45
25
  add_message "cerbos.response.v1.PlanResourcesResponse.Meta" do
46
26
  optional :filter_debug, :string, 1, json_name: "filterDebug"
@@ -189,10 +169,6 @@ module Cerbos::Protobuf::Cerbos
189
169
  module Response
190
170
  module V1
191
171
  PlanResourcesResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.response.v1.PlanResourcesResponse").msgclass
192
- PlanResourcesResponse::Expression = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.response.v1.PlanResourcesResponse.Expression").msgclass
193
- PlanResourcesResponse::Expression::Operand = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.response.v1.PlanResourcesResponse.Expression.Operand").msgclass
194
- PlanResourcesResponse::Filter = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.response.v1.PlanResourcesResponse.Filter").msgclass
195
- PlanResourcesResponse::Filter::Kind = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.response.v1.PlanResourcesResponse.Filter.Kind").enummodule
196
172
  PlanResourcesResponse::Meta = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.response.v1.PlanResourcesResponse.Meta").msgclass
197
173
  CheckResourceSetResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.response.v1.CheckResourceSetResponse").msgclass
198
174
  CheckResourceSetResponse::ActionEffectMap = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.response.v1.CheckResourceSetResponse.ActionEffectMap").msgclass
@@ -7,93 +7,117 @@ require 'google/protobuf/duration_pb'
7
7
 
8
8
  Google::Protobuf::DescriptorPool.generated_pool.build do
9
9
  add_file("cerbos/telemetry/v1/telemetry.proto", :syntax => :proto3) do
10
- add_message "cerbos.telemetry.v1.Ping" do
10
+ add_message "cerbos.telemetry.v1.ServerLaunch" do
11
11
  optional :version, :string, 1, json_name: "version"
12
- optional :source, :message, 2, "cerbos.telemetry.v1.Ping.Source", json_name: "source"
13
- optional :features, :message, 3, "cerbos.telemetry.v1.Ping.Features", json_name: "features"
14
- optional :stats, :message, 4, "cerbos.telemetry.v1.Ping.Stats", json_name: "stats"
12
+ optional :source, :message, 2, "cerbos.telemetry.v1.ServerLaunch.Source", json_name: "source"
13
+ optional :features, :message, 3, "cerbos.telemetry.v1.ServerLaunch.Features", json_name: "features"
14
+ optional :stats, :message, 4, "cerbos.telemetry.v1.ServerLaunch.Stats", json_name: "stats"
15
15
  end
16
- add_message "cerbos.telemetry.v1.Ping.Cerbos" do
16
+ add_message "cerbos.telemetry.v1.ServerLaunch.Cerbos" do
17
17
  optional :version, :string, 1, json_name: "version"
18
18
  optional :commit, :string, 2, json_name: "commit"
19
19
  optional :build_date, :string, 3, json_name: "buildDate"
20
20
  optional :module_version, :string, 4, json_name: "moduleVersion"
21
21
  optional :module_checksum, :string, 5, json_name: "moduleChecksum"
22
22
  end
23
- add_message "cerbos.telemetry.v1.Ping.Source" do
24
- optional :cerbos, :message, 1, "cerbos.telemetry.v1.Ping.Cerbos", json_name: "cerbos"
23
+ add_message "cerbos.telemetry.v1.ServerLaunch.Source" do
24
+ optional :cerbos, :message, 1, "cerbos.telemetry.v1.ServerLaunch.Cerbos", json_name: "cerbos"
25
25
  optional :os, :string, 2, json_name: "os"
26
26
  optional :arch, :string, 3, json_name: "arch"
27
27
  optional :num_cpus, :uint32, 4, json_name: "numCpus"
28
28
  end
29
- add_message "cerbos.telemetry.v1.Ping.Features" do
30
- optional :audit, :message, 1, "cerbos.telemetry.v1.Ping.Features.Audit", json_name: "audit"
31
- optional :schema, :message, 2, "cerbos.telemetry.v1.Ping.Features.Schema", json_name: "schema"
32
- optional :admin_api, :message, 3, "cerbos.telemetry.v1.Ping.Features.AdminApi", json_name: "adminApi"
33
- optional :storage, :message, 4, "cerbos.telemetry.v1.Ping.Features.Storage", json_name: "storage"
29
+ add_message "cerbos.telemetry.v1.ServerLaunch.Features" do
30
+ optional :audit, :message, 1, "cerbos.telemetry.v1.ServerLaunch.Features.Audit", json_name: "audit"
31
+ optional :schema, :message, 2, "cerbos.telemetry.v1.ServerLaunch.Features.Schema", json_name: "schema"
32
+ optional :admin_api, :message, 3, "cerbos.telemetry.v1.ServerLaunch.Features.AdminApi", json_name: "adminApi"
33
+ optional :storage, :message, 4, "cerbos.telemetry.v1.ServerLaunch.Features.Storage", json_name: "storage"
34
34
  end
35
- add_message "cerbos.telemetry.v1.Ping.Features.Audit" do
35
+ add_message "cerbos.telemetry.v1.ServerLaunch.Features.Audit" do
36
36
  optional :enabled, :bool, 1, json_name: "enabled"
37
37
  optional :backend, :string, 2, json_name: "backend"
38
38
  end
39
- add_message "cerbos.telemetry.v1.Ping.Features.Schema" do
39
+ add_message "cerbos.telemetry.v1.ServerLaunch.Features.Schema" do
40
40
  optional :enforcement, :string, 1, json_name: "enforcement"
41
41
  end
42
- add_message "cerbos.telemetry.v1.Ping.Features.AdminApi" do
42
+ add_message "cerbos.telemetry.v1.ServerLaunch.Features.AdminApi" do
43
43
  optional :enabled, :bool, 1, json_name: "enabled"
44
44
  end
45
- add_message "cerbos.telemetry.v1.Ping.Features.Storage" do
45
+ add_message "cerbos.telemetry.v1.ServerLaunch.Features.Storage" do
46
46
  optional :driver, :string, 1, json_name: "driver"
47
47
  oneof :store do
48
- optional :disk, :message, 2, "cerbos.telemetry.v1.Ping.Features.Storage.Disk", json_name: "disk"
49
- optional :git, :message, 3, "cerbos.telemetry.v1.Ping.Features.Storage.Git", json_name: "git"
50
- optional :blob, :message, 4, "cerbos.telemetry.v1.Ping.Features.Storage.Blob", json_name: "blob"
48
+ optional :disk, :message, 2, "cerbos.telemetry.v1.ServerLaunch.Features.Storage.Disk", json_name: "disk"
49
+ optional :git, :message, 3, "cerbos.telemetry.v1.ServerLaunch.Features.Storage.Git", json_name: "git"
50
+ optional :blob, :message, 4, "cerbos.telemetry.v1.ServerLaunch.Features.Storage.Blob", json_name: "blob"
51
51
  end
52
52
  end
53
- add_message "cerbos.telemetry.v1.Ping.Features.Storage.Disk" do
53
+ add_message "cerbos.telemetry.v1.ServerLaunch.Features.Storage.Disk" do
54
54
  optional :watch, :bool, 1, json_name: "watch"
55
55
  end
56
- add_message "cerbos.telemetry.v1.Ping.Features.Storage.Git" do
56
+ add_message "cerbos.telemetry.v1.ServerLaunch.Features.Storage.Git" do
57
57
  optional :protocol, :string, 1, json_name: "protocol"
58
58
  optional :auth, :bool, 2, json_name: "auth"
59
59
  optional :poll_interval, :message, 3, "google.protobuf.Duration", json_name: "pollInterval"
60
60
  end
61
- add_message "cerbos.telemetry.v1.Ping.Features.Storage.Blob" do
61
+ add_message "cerbos.telemetry.v1.ServerLaunch.Features.Storage.Blob" do
62
62
  optional :provider, :string, 1, json_name: "provider"
63
63
  optional :poll_interval, :message, 2, "google.protobuf.Duration", json_name: "pollInterval"
64
64
  end
65
- add_message "cerbos.telemetry.v1.Ping.Stats" do
66
- optional :policy, :message, 1, "cerbos.telemetry.v1.Ping.Stats.Policy", json_name: "policy"
67
- optional :schema, :message, 2, "cerbos.telemetry.v1.Ping.Stats.Schema", json_name: "schema"
65
+ add_message "cerbos.telemetry.v1.ServerLaunch.Stats" do
66
+ optional :policy, :message, 1, "cerbos.telemetry.v1.ServerLaunch.Stats.Policy", json_name: "policy"
67
+ optional :schema, :message, 2, "cerbos.telemetry.v1.ServerLaunch.Stats.Schema", json_name: "schema"
68
68
  end
69
- add_message "cerbos.telemetry.v1.Ping.Stats.Policy" do
69
+ add_message "cerbos.telemetry.v1.ServerLaunch.Stats.Policy" do
70
70
  map :count, :string, :uint32, 1
71
71
  map :avg_rule_count, :string, :double, 2
72
72
  map :avg_condition_count, :string, :double, 3
73
73
  end
74
- add_message "cerbos.telemetry.v1.Ping.Stats.Schema" do
74
+ add_message "cerbos.telemetry.v1.ServerLaunch.Stats.Schema" do
75
75
  optional :count, :uint32, 1, json_name: "count"
76
76
  end
77
+ add_message "cerbos.telemetry.v1.ServerStop" do
78
+ optional :version, :string, 1, json_name: "version"
79
+ optional :uptime, :message, 2, "google.protobuf.Duration", json_name: "uptime"
80
+ optional :requests_total, :uint64, 3, json_name: "requestsTotal"
81
+ end
82
+ add_message "cerbos.telemetry.v1.Event" do
83
+ oneof :data do
84
+ optional :api_activity, :message, 1, "cerbos.telemetry.v1.Event.ApiActivity", json_name: "apiActivity"
85
+ end
86
+ end
87
+ add_message "cerbos.telemetry.v1.Event.CountStat" do
88
+ optional :key, :string, 1, json_name: "key"
89
+ optional :count, :uint64, 2, json_name: "count"
90
+ end
91
+ add_message "cerbos.telemetry.v1.Event.ApiActivity" do
92
+ optional :version, :string, 1, json_name: "version"
93
+ optional :uptime, :message, 2, "google.protobuf.Duration", json_name: "uptime"
94
+ repeated :method_calls, :message, 3, "cerbos.telemetry.v1.Event.CountStat", json_name: "methodCalls"
95
+ repeated :user_agents, :message, 4, "cerbos.telemetry.v1.Event.CountStat", json_name: "userAgents"
96
+ end
77
97
  end
78
98
  end
79
99
 
80
100
  module Cerbos::Protobuf::Cerbos
81
101
  module Telemetry
82
102
  module V1
83
- Ping = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.telemetry.v1.Ping").msgclass
84
- Ping::Cerbos = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.telemetry.v1.Ping.Cerbos").msgclass
85
- Ping::Source = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.telemetry.v1.Ping.Source").msgclass
86
- Ping::Features = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.telemetry.v1.Ping.Features").msgclass
87
- Ping::Features::Audit = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.telemetry.v1.Ping.Features.Audit").msgclass
88
- Ping::Features::Schema = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.telemetry.v1.Ping.Features.Schema").msgclass
89
- Ping::Features::AdminApi = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.telemetry.v1.Ping.Features.AdminApi").msgclass
90
- Ping::Features::Storage = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.telemetry.v1.Ping.Features.Storage").msgclass
91
- Ping::Features::Storage::Disk = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.telemetry.v1.Ping.Features.Storage.Disk").msgclass
92
- Ping::Features::Storage::Git = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.telemetry.v1.Ping.Features.Storage.Git").msgclass
93
- Ping::Features::Storage::Blob = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.telemetry.v1.Ping.Features.Storage.Blob").msgclass
94
- Ping::Stats = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.telemetry.v1.Ping.Stats").msgclass
95
- Ping::Stats::Policy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.telemetry.v1.Ping.Stats.Policy").msgclass
96
- Ping::Stats::Schema = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.telemetry.v1.Ping.Stats.Schema").msgclass
103
+ ServerLaunch = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.telemetry.v1.ServerLaunch").msgclass
104
+ ServerLaunch::Cerbos = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.telemetry.v1.ServerLaunch.Cerbos").msgclass
105
+ ServerLaunch::Source = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.telemetry.v1.ServerLaunch.Source").msgclass
106
+ ServerLaunch::Features = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.telemetry.v1.ServerLaunch.Features").msgclass
107
+ ServerLaunch::Features::Audit = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.telemetry.v1.ServerLaunch.Features.Audit").msgclass
108
+ ServerLaunch::Features::Schema = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.telemetry.v1.ServerLaunch.Features.Schema").msgclass
109
+ ServerLaunch::Features::AdminApi = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.telemetry.v1.ServerLaunch.Features.AdminApi").msgclass
110
+ ServerLaunch::Features::Storage = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.telemetry.v1.ServerLaunch.Features.Storage").msgclass
111
+ ServerLaunch::Features::Storage::Disk = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.telemetry.v1.ServerLaunch.Features.Storage.Disk").msgclass
112
+ ServerLaunch::Features::Storage::Git = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.telemetry.v1.ServerLaunch.Features.Storage.Git").msgclass
113
+ ServerLaunch::Features::Storage::Blob = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.telemetry.v1.ServerLaunch.Features.Storage.Blob").msgclass
114
+ ServerLaunch::Stats = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.telemetry.v1.ServerLaunch.Stats").msgclass
115
+ ServerLaunch::Stats::Policy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.telemetry.v1.ServerLaunch.Stats.Policy").msgclass
116
+ ServerLaunch::Stats::Schema = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.telemetry.v1.ServerLaunch.Stats.Schema").msgclass
117
+ ServerStop = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.telemetry.v1.ServerStop").msgclass
118
+ Event = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.telemetry.v1.Event").msgclass
119
+ Event::CountStat = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.telemetry.v1.Event.CountStat").msgclass
120
+ Event::ApiActivity = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.telemetry.v1.Event.ApiActivity").msgclass
97
121
  end
98
122
  end
99
123
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Cerbos
4
4
  # Current version of the `cerbos` gem.
5
- VERSION = "0.3.0"
5
+ VERSION = "0.6.0"
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cerbos
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cerbos
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-13 00:00:00.000000000 Z
11
+ date: 2022-07-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: grpc
@@ -53,6 +53,7 @@ files:
53
53
  - lib/cerbos/output/check_resources.rb
54
54
  - lib/cerbos/output/plan_resources.rb
55
55
  - lib/cerbos/output/server_info.rb
56
+ - lib/cerbos/output/validation_error.rb
56
57
  - lib/cerbos/protobuf.rb
57
58
  - lib/cerbos/protobuf/cerbos/audit/v1/audit_pb.rb
58
59
  - lib/cerbos/protobuf/cerbos/effect/v1/effect_pb.rb
@@ -81,7 +82,7 @@ licenses:
81
82
  metadata:
82
83
  bug_tracker_uri: https://github.com/cerbos/cerbos-sdk-ruby/issues
83
84
  changelog_uri: https://github.com/cerbos/cerbos-sdk-ruby/blob/main/CHANGELOG.md
84
- documentation_uri: https://www.rubydoc.info/gems/cerbos/0.3.0
85
+ documentation_uri: https://www.rubydoc.info/gems/cerbos/0.6.0
85
86
  homepage_uri: https://github.com/cerbos/cerbos-sdk-ruby
86
87
  source_code_uri: https://github.com/cerbos/cerbos-sdk-ruby
87
88
  rubygems_mfa_required: 'true'
@@ -100,7 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
100
101
  - !ruby/object:Gem::Version
101
102
  version: '0'
102
103
  requirements: []
103
- rubygems_version: 3.3.13
104
+ rubygems_version: 3.3.17
104
105
  signing_key:
105
106
  specification_version: 4
106
107
  summary: Client library for authorization via Cerbos