cerbos 0.1.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f52b0341101110bf6a44cee73e5199fd11651de535744cffcb3da7e1fb118b56
4
- data.tar.gz: 7a304a44d0525bd24a8c4c21fcdd41dbde1fb6643fd265b44913e195ba6a32ff
3
+ metadata.gz: 53df88d33685d6761feb0c4f8c25453012d615ddb6d5158fbabb34594c905a64
4
+ data.tar.gz: 81b5a8f937915c33a11a130124b8e1a14a83d6327e0416568873062afc250b01
5
5
  SHA512:
6
- metadata.gz: 10f7d4f801f0f4f377ecfdfb72bc37d55a71e88f14afa20ff73d17f8d613e2c53f3ead87520cd05b8924da8e422b8838c09546e8b7982399021a267a8511786f
7
- data.tar.gz: 42011ce4bea4f14fe770ca7f70c7be27c2c40a644429fc5cad9bee1a2b1ac86f638d07052dee4337f68c02d6a82071711e86f3006f0c6f6bcdd021ed7602b7e5
6
+ metadata.gz: 1e8cf9388d67af42d55b8cd4a5dc312ffc689fb5facb27384144dd6bd7982dc3d7a7f2211aea94fc6773d173970aaf5264ddc1f8f72dd0bf320c9e043db8871d
7
+ data.tar.gz: 884c774cca17408a0f16ac5d00d2efd8833035291bc422190bafd266ec3e9354d8571c9c3f93e7a04545a7b0f85eec73507a481bc0f49462f61de75970b4c19c
data/CHANGELOG.md CHANGED
@@ -1,9 +1,29 @@
1
1
  ## [Unreleased]
2
2
  No notable changes.
3
3
 
4
+ ## [0.4.0] - 2022-06-03
5
+ ### Added
6
+ - `on_validation_error` option to `Cerbos::Client#initialize` ([#22](https://github.com/cerbos/cerbos-sdk-ruby/pull/22))
7
+
8
+ ### Changed
9
+ - Minor documentation fixes ([#21](https://github.com/cerbos/cerbos-sdk-ruby/pull/21))
10
+
11
+ ## [0.3.0] - 2022-05-13
12
+ ### Added
13
+ - More helper methods ([#11](https://github.com/cerbos/cerbos-sdk-ruby/pull/11))
14
+ - `Cerbos::Client#allow?` for checking a single action on a resource
15
+ - `Cerbos::Output::CheckResources#allow_all?` and `Cerbos::Output::CheckResources::Result#allow_all?` for checking if all input actions were allowed
16
+
17
+ ## [0.2.0] - 2022-05-12
18
+ ### Changed
19
+ - Increased `grpc` version requirement to 1.46+ to avoid [installing a native gem compiled for `x86_64-darwin` on `arm64-darwin`](https://github.com/grpc/grpc/issues/29100) ([#8](https://github.com/cerbos/cerbos-sdk-ruby/pull/8))
20
+
4
21
  ## [0.1.0] - 2022-05-12
5
22
  ### Added
6
23
  - Initial implementation of `Cerbos::Client` ([#2](https://github.com/cerbos/cerbos-sdk-ruby/pull/2))
7
24
 
8
- [Unreleased]: https://github.com/cerbos/cerbos-sdk-ruby/compare/v0.1.0...HEAD
25
+ [Unreleased]: https://github.com/cerbos/cerbos-sdk-ruby/compare/v0.4.0...HEAD
26
+ [0.4.0]: https://github.com/cerbos/cerbos-sdk-ruby/compare/v0.3.0...v0.4.0
27
+ [0.3.0]: https://github.com/cerbos/cerbos-sdk-ruby/compare/v0.2.0...v0.3.0
28
+ [0.2.0]: https://github.com/cerbos/cerbos-sdk-ruby/compare/v0.1.0...v0.2.0
9
29
  [0.1.0]: https://github.com/cerbos/cerbos-sdk-ruby/compare/4481009e9dec2e1e6a2df8ea2f828690ceabbefc...v0.1.0
data/README.md CHANGED
@@ -28,18 +28,6 @@ If you're not using Bundler to manage dependencies, install the gem by running
28
28
  $ gem install cerbos
29
29
  ```
30
30
 
31
- ### Note for M1 Mac users
32
-
33
- Unfortunately, the `grpc` gem currently ships a `universal-darwin` native gem which doesn't actually work on `arm64-darwin` platforms ([grpc/grpc#29100](https://github.com/grpc/grpc/issues/29100)).
34
- If you install the precompiled gem on an M1 Mac, you'll get a `LoadError` including the message "incompatible architecture (have 'x86_64', need 'arm64e')" when you attempt to load the `cerbos` gem.
35
-
36
- Until that issue is resolved, you can work around it by compiling native extensions from source.
37
- Configure Bundler to do so by running
38
-
39
- ```console
40
- $ bundle config set --local force_ruby_platform true
41
- ```
42
-
43
31
  ## Example usage
44
32
 
45
33
  ```ruby
data/cerbos.gemspec CHANGED
@@ -32,5 +32,5 @@ Gem::Specification.new do |spec|
32
32
  ]
33
33
 
34
34
  spec.required_ruby_version = ">= 2.7.0"
35
- spec.add_dependency "grpc", "~> 1.45"
35
+ spec.add_dependency "grpc", "~> 1.46"
36
36
  end
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
 
@@ -44,11 +53,37 @@ module Cerbos
44
53
  end
45
54
  end
46
55
 
56
+ # Check if a principal is allowed to perform an action on a resource.
57
+ #
58
+ # @param principal [Input::Principal, Hash] the principal to check.
59
+ # @param resource [Input::Resource, Hash] the resource to check.
60
+ # @param action [String] the action to check.
61
+ # @param aux_data [Input::AuxData, Hash, nil] auxiliary data.
62
+ # @param request_id [String] identifier for tracing the request.
63
+ #
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
72
+ def allow?(principal:, resource:, action:, aux_data: nil, request_id: SecureRandom.uuid)
73
+ check_resource(
74
+ principal: principal,
75
+ resource: resource,
76
+ actions: [action],
77
+ aux_data: aux_data,
78
+ request_id: request_id
79
+ ).allow?(action)
80
+ end
81
+
47
82
  # Check a principal's permissions on a resource.
48
83
  #
49
84
  # @param principal [Input::Principal, Hash] the principal to check.
50
85
  # @param resource [Input::Resource, Hash] the resource to check.
51
- # @param actions [Input::Resource, Hash] the actions to check.
86
+ # @param actions [Array<String>] the actions to check.
52
87
  # @param aux_data [Input::AuxData, Hash, nil] auxiliary data.
53
88
  # @param include_metadata [Boolean] `true` to include additional metadata ({Output::CheckResources::Result::Metadata}) in the results.
54
89
  # @param request_id [String] identifier for tracing the request.
@@ -100,7 +135,7 @@ module Cerbos
100
135
  # ]
101
136
  # )
102
137
  #
103
- # result.allow?(resource: {kind: "document", id: "1"}, action: "view") # => true
138
+ # decision.allow?(resource: {kind: "document", id: "1"}, action: "view") # => true
104
139
  def check_resources(principal:, resources:, aux_data: nil, include_metadata: false, request_id: SecureRandom.uuid)
105
140
  handle_errors do
106
141
  request = Protobuf::Cerbos::Request::V1::CheckResourcesRequest.new(
@@ -113,7 +148,9 @@ module Cerbos
113
148
 
114
149
  response = perform_request(@cerbos_service, :check_resources, request)
115
150
 
116
- Output::CheckResources.from_protobuf(response)
151
+ Output::CheckResources.from_protobuf(response).tap do |output|
152
+ handle_validation_errors output
153
+ end
117
154
  end
118
155
  end
119
156
 
@@ -181,6 +218,17 @@ module Cerbos
181
218
  raise Error, error.message
182
219
  end
183
220
 
221
+ def handle_validation_errors(output)
222
+ return if @on_validation_error == :return
223
+
224
+ validation_errors = output.results.flat_map(&:validation_errors)
225
+ return if validation_errors.empty?
226
+
227
+ raise Error::ValidationFailed.new(validation_errors) if @on_validation_error == :raise
228
+
229
+ @on_validation_error.call validation_errors
230
+ end
231
+
184
232
  def perform_request(service, rpc, request)
185
233
  service.public_send(rpc, request)
186
234
  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
@@ -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,
@@ -23,7 +23,7 @@ module Cerbos
23
23
  )
24
24
  end
25
25
 
26
- # Check the policy decision was that an action should be allowed for a resource.
26
+ # Check if the policy decision was that an action should be allowed for a resource.
27
27
  #
28
28
  # @param resource [Input::Resource, Hash] the resource search criteria (see {#find_result}).
29
29
  # @param action [String] the action to check.
@@ -34,6 +34,16 @@ module Cerbos
34
34
  find_result(resource)&.allow?(action)
35
35
  end
36
36
 
37
+ # Check if the policy decision was that all input actions should be allowed for a resource.
38
+ #
39
+ # @param resource [Input::Resource, Hash] the resource search criteria (see {#find_result}).
40
+ #
41
+ # @return [Boolean]
42
+ # @return [nil] if the resource is not present in the results.
43
+ def allow_all?(resource)
44
+ find_result(resource)&.allow_all?
45
+ end
46
+
37
47
  # Find an item from {#results} by resource.
38
48
  #
39
49
  # @param resource [Input::Resource, Hash] the resource search criteria. `kind` and `id` are required; `policy_version` and `scope` may also be provided if needed to distinguish between multiple results for the same `kind` and `id`.
@@ -95,6 +105,13 @@ module Cerbos
95
105
  actions[action]&.eql?(:EFFECT_ALLOW)
96
106
  end
97
107
 
108
+ # Check if the policy decision was that all input actions should be allowed for the resource.
109
+ #
110
+ # @return [Boolean]
111
+ def allow_all?
112
+ actions.each_value.all? { |effect| effect == :EFFECT_ALLOW }
113
+ end
114
+
98
115
  # List the actions that should be allowed for the resource.
99
116
  #
100
117
  # @return [Array<String>]
@@ -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,69 @@ 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
+ end
30
79
  add_message "cerbos.engine.v1.CheckInput" do
31
80
  optional :request_id, :string, 1, json_name: "requestId"
32
81
  optional :resource, :message, 2, "cerbos.engine.v1.Resource", json_name: "resource"
@@ -46,30 +95,6 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
46
95
  optional :policy, :string, 2, json_name: "policy"
47
96
  optional :scope, :string, 3, json_name: "scope"
48
97
  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
98
  add_message "cerbos.engine.v1.Resource" do
74
99
  optional :kind, :string, 1, json_name: "kind"
75
100
  optional :policy_version, :string, 2, json_name: "policyVersion"
@@ -143,15 +168,20 @@ end
143
168
  module Cerbos::Protobuf::Cerbos
144
169
  module Engine
145
170
  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
171
+ PlanResourcesInput = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.PlanResourcesInput").msgclass
172
+ PlanResourcesInput::Resource = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.PlanResourcesInput.Resource").msgclass
173
+ PlanResourcesAst = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.PlanResourcesAst").msgclass
174
+ PlanResourcesAst::Node = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.PlanResourcesAst.Node").msgclass
175
+ PlanResourcesAst::LogicalOperation = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.PlanResourcesAst.LogicalOperation").msgclass
176
+ PlanResourcesAst::LogicalOperation::Operator = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.PlanResourcesAst.LogicalOperation.Operator").enummodule
177
+ PlanResourcesFilter = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.PlanResourcesFilter").msgclass
178
+ PlanResourcesFilter::Expression = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.PlanResourcesFilter.Expression").msgclass
179
+ PlanResourcesFilter::Expression::Operand = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.PlanResourcesFilter.Expression.Operand").msgclass
180
+ PlanResourcesFilter::Kind = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.PlanResourcesFilter.Kind").enummodule
181
+ PlanResourcesOutput = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.PlanResourcesOutput").msgclass
148
182
  CheckInput = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.CheckInput").msgclass
149
183
  CheckOutput = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.CheckOutput").msgclass
150
184
  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
185
  Resource = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.Resource").msgclass
156
186
  Principal = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.engine.v1.Principal").msgclass
157
187
  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,30 +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
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
44
- end
45
24
  add_message "cerbos.response.v1.PlanResourcesResponse.Meta" do
46
25
  optional :filter_debug, :string, 1, json_name: "filterDebug"
47
26
  optional :matched_scope, :string, 2, json_name: "matchedScope"
@@ -189,10 +168,6 @@ module Cerbos::Protobuf::Cerbos
189
168
  module Response
190
169
  module V1
191
170
  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
171
  PlanResourcesResponse::Meta = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.response.v1.PlanResourcesResponse.Meta").msgclass
197
172
  CheckResourceSetResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("cerbos.response.v1.CheckResourceSetResponse").msgclass
198
173
  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.1.0"
5
+ VERSION = "0.4.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.1.0
4
+ version: 0.4.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-12 00:00:00.000000000 Z
11
+ date: 2022-06-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: grpc
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.45'
19
+ version: '1.46'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.45'
26
+ version: '1.46'
27
27
  description: Perform authorization in Ruby applications by interacting with the Cerbos
28
28
  policy decision point.
29
29
  email:
@@ -81,7 +81,7 @@ licenses:
81
81
  metadata:
82
82
  bug_tracker_uri: https://github.com/cerbos/cerbos-sdk-ruby/issues
83
83
  changelog_uri: https://github.com/cerbos/cerbos-sdk-ruby/blob/main/CHANGELOG.md
84
- documentation_uri: https://www.rubydoc.info/gems/cerbos/0.1.0
84
+ documentation_uri: https://www.rubydoc.info/gems/cerbos/0.4.0
85
85
  homepage_uri: https://github.com/cerbos/cerbos-sdk-ruby
86
86
  source_code_uri: https://github.com/cerbos/cerbos-sdk-ruby
87
87
  rubygems_mfa_required: 'true'