kessel-sdk 1.4.0 → 1.5.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: 2e2b24045b21b41dc888f7ce2c81efefbb882e7c81b9e747e1587d11bed3882e
4
- data.tar.gz: 906ce22a27644bacd76e79a30257d463dd73ae0d46ccf784133adc545979bb4a
3
+ metadata.gz: 132faed54cbcf58a49d8df8874313020b7c4def0530aa9a28470bff44a71b5ec
4
+ data.tar.gz: dd16fef5803fc33e4f1a982642e86463899cfdeb931af1f18a824c10fc7b6f43
5
5
  SHA512:
6
- metadata.gz: 3a072b07ce4021d603045744b35d68680a53ef492e2bc7839706ca5402ffe024105399a8e5a1b835f22d93e4c3be1029a0331aa05b3a3695e7a457481b1094f8
7
- data.tar.gz: 884484eb24a3ce17829bcc370712201bd593770f4a673e914671f47d70582c13dc60e79b9ab80c96804277b3cc8372fa791e5bca4c2aa499a716ee056f835636
6
+ metadata.gz: d394e1795bb83da7531936fe856daed2c6d290267ab2cb3d79482aa549ac32c48d5a4b1e4e4f26d020fc208e5c6e29f3c2e18dd73cf25eaa60b73b22b4e4c813
7
+ data.tar.gz: d27bc7c50233a369a0ec3cbfb519efc9cbd242e2fde3870374a4e84fb2c801e6e590ef0f6a37d170c6ed7a24b581fa4e5308c4cc085e911e1a3ee4a08c85d928
data/README.md CHANGED
@@ -299,8 +299,9 @@ This project follows [Semantic Versioning 2.0.0](https://semver.org/). Version n
299
299
 
300
300
  4. **Commit Changes**
301
301
  ```bash
302
+ export VERSION=$(ruby -e "require_relative './lib/kessel/version.rb'; puts Kessel::Inventory::VERSION")
302
303
  git add lib/kessel/version.rb Gemfile.lock
303
- git commit -m "Release version X.Y.Z"
304
+ git commit -m "Release version ${VERSION}"
304
305
  git push origin main # or git push upstream main
305
306
  ```
306
307
 
@@ -310,7 +311,7 @@ This project follows [Semantic Versioning 2.0.0](https://semver.org/). Version n
310
311
  gem build kessel-sdk.gemspec
311
312
 
312
313
  # Push to RubyGems (requires RubyGems account and gem ownership)
313
- gem push kessel-sdk-X.Y.Z.gem
314
+ gem push kessel-sdk-${VERSION}.gem
314
315
  ```
315
316
 
316
317
  6. **Tag the Release**
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: google/rpc/status.proto
4
+
5
+ require 'google/protobuf'
6
+
7
+ require 'google/protobuf/any_pb'
8
+
9
+
10
+ descriptor_data = "\n\x17google/rpc/status.proto\x12\ngoogle.rpc\x1a\x19google/protobuf/any.proto\"f\n\x06Status\x12\x12\n\x04\x63ode\x18\x01 \x01(\x05R\x04\x63ode\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message\x12.\n\x07\x64\x65tails\x18\x03 \x03(\x0b\x32\x14.google.protobuf.AnyR\x07\x64\x65tailsBa\n\x0e\x63om.google.rpcB\x0bStatusProtoP\x01Z7google.golang.org/genproto/googleapis/rpc/status;status\xf8\x01\x01\xa2\x02\x03RPCb\x06proto3"
11
+
12
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
13
+ pool.add_serialized_file(descriptor_data)
14
+
15
+ module Google
16
+ module Rpc
17
+ Status = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.rpc.Status").msgclass
18
+ end
19
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: kessel/inventory/v1beta2/check_bulk_request.proto
4
+
5
+ require 'google/protobuf'
6
+
7
+ require 'buf/validate/validate_pb'
8
+ require 'kessel/inventory/v1beta2/resource_reference_pb'
9
+ require 'kessel/inventory/v1beta2/subject_reference_pb'
10
+ require 'kessel/inventory/v1beta2/consistency_pb'
11
+
12
+
13
+ descriptor_data = "\n1kessel/inventory/v1beta2/check_bulk_request.proto\x12\x18kessel.inventory.v1beta2\x1a\x1b\x62uf/validate/validate.proto\x1a\x31kessel/inventory/v1beta2/resource_reference.proto\x1a\x30kessel/inventory/v1beta2/subject_reference.proto\x1a*kessel/inventory/v1beta2/consistency.proto\"\xd6\x01\n\x14\x43heckBulkRequestItem\x12K\n\x06object\x18\x01 \x01(\x0b\x32+.kessel.inventory.v1beta2.ResourceReferenceB\x06\xbaH\x03\xc8\x01\x01R\x06object\x12#\n\x08relation\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x08relation\x12L\n\x07subject\x18\x03 \x01(\x0b\x32*.kessel.inventory.v1beta2.SubjectReferenceB\x06\xbaH\x03\xc8\x01\x01R\x07subject\"\xae\x01\n\x10\x43heckBulkRequest\x12Q\n\x05items\x18\x01 \x03(\x0b\x32..kessel.inventory.v1beta2.CheckBulkRequestItemB\x0b\xbaH\x08\x92\x01\x05\x08\x01\x10\xe8\x07R\x05items\x12G\n\x0b\x63onsistency\x18\x02 \x01(\x0b\x32%.kessel.inventory.v1beta2.ConsistencyR\x0b\x63onsistencyBr\n(org.project_kessel.api.inventory.v1beta2P\x01ZDgithub.com/project-kessel/inventory-api/api/kessel/inventory/v1beta2b\x06proto3"
14
+
15
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
16
+ pool.add_serialized_file(descriptor_data)
17
+
18
+ module Kessel
19
+ module Inventory
20
+ module V1beta2
21
+ CheckBulkRequestItem = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("kessel.inventory.v1beta2.CheckBulkRequestItem").msgclass
22
+ CheckBulkRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("kessel.inventory.v1beta2.CheckBulkRequest").msgclass
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: kessel/inventory/v1beta2/check_bulk_response.proto
4
+
5
+ require 'google/protobuf'
6
+
7
+ require 'kessel/inventory/v1beta2/check_bulk_request_pb'
8
+ require 'kessel/inventory/v1beta2/consistency_token_pb'
9
+ require 'kessel/inventory/v1beta2/allowed_pb'
10
+ require 'buf/validate/validate_pb'
11
+ require 'google/rpc/status_pb'
12
+
13
+
14
+ descriptor_data = "\n2kessel/inventory/v1beta2/check_bulk_response.proto\x12\x18kessel.inventory.v1beta2\x1a\x31kessel/inventory/v1beta2/check_bulk_request.proto\x1a\x30kessel/inventory/v1beta2/consistency_token.proto\x1a&kessel/inventory/v1beta2/allowed.proto\x1a\x1b\x62uf/validate/validate.proto\x1a\x17google/rpc/status.proto\"T\n\x15\x43heckBulkResponseItem\x12;\n\x07\x61llowed\x18\x01 \x01(\x0e\x32!.kessel.inventory.v1beta2.AllowedR\x07\x61llowed\"\xe0\x01\n\x15\x43heckBulkResponsePair\x12H\n\x07request\x18\x01 \x01(\x0b\x32..kessel.inventory.v1beta2.CheckBulkRequestItemR\x07request\x12\x45\n\x04item\x18\x02 \x01(\x0b\x32/.kessel.inventory.v1beta2.CheckBulkResponseItemH\x00R\x04item\x12*\n\x05\x65rror\x18\x03 \x01(\x0b\x32\x12.google.rpc.StatusH\x00R\x05\x65rrorB\n\n\x08response\"\xbd\x01\n\x11\x43heckBulkResponse\x12O\n\x05pairs\x18\x01 \x03(\x0b\x32/.kessel.inventory.v1beta2.CheckBulkResponsePairB\x08\xbaH\x05\x92\x01\x02\x08\x01R\x05pairs\x12W\n\x11\x63onsistency_token\x18\x02 \x01(\x0b\x32*.kessel.inventory.v1beta2.ConsistencyTokenR\x10\x63onsistencyTokenBr\n(org.project_kessel.api.inventory.v1beta2P\x01ZDgithub.com/project-kessel/inventory-api/api/kessel/inventory/v1beta2b\x06proto3"
15
+
16
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
17
+ pool.add_serialized_file(descriptor_data)
18
+
19
+ module Kessel
20
+ module Inventory
21
+ module V1beta2
22
+ CheckBulkResponseItem = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("kessel.inventory.v1beta2.CheckBulkResponseItem").msgclass
23
+ CheckBulkResponsePair = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("kessel.inventory.v1beta2.CheckBulkResponsePair").msgclass
24
+ CheckBulkResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("kessel.inventory.v1beta2.CheckBulkResponse").msgclass
25
+ end
26
+ end
27
+ end
@@ -15,9 +15,11 @@ require 'kessel/inventory/v1beta2/delete_resource_request_pb'
15
15
  require 'kessel/inventory/v1beta2/delete_resource_response_pb'
16
16
  require 'kessel/inventory/v1beta2/streamed_list_objects_request_pb'
17
17
  require 'kessel/inventory/v1beta2/streamed_list_objects_response_pb'
18
+ require 'kessel/inventory/v1beta2/check_bulk_request_pb'
19
+ require 'kessel/inventory/v1beta2/check_bulk_response_pb'
18
20
 
19
21
 
20
- descriptor_data = "\n0kessel/inventory/v1beta2/inventory_service.proto\x12\x18kessel.inventory.v1beta2\x1a\x1cgoogle/api/annotations.proto\x1a,kessel/inventory/v1beta2/check_request.proto\x1a-kessel/inventory/v1beta2/check_response.proto\x1a\x37kessel/inventory/v1beta2/check_for_update_request.proto\x1a\x38kessel/inventory/v1beta2/check_for_update_response.proto\x1a\x36kessel/inventory/v1beta2/report_resource_request.proto\x1a\x37kessel/inventory/v1beta2/report_resource_response.proto\x1a\x36kessel/inventory/v1beta2/delete_resource_request.proto\x1a\x37kessel/inventory/v1beta2/delete_resource_response.proto\x1a<kessel/inventory/v1beta2/streamed_list_objects_request.proto\x1a=kessel/inventory/v1beta2/streamed_list_objects_response.proto2\x91\x06\n\x16KesselInventoryService\x12\x81\x01\n\x05\x43heck\x12&.kessel.inventory.v1beta2.CheckRequest\x1a\'.kessel.inventory.v1beta2.CheckResponse\"\'\x82\xd3\xe4\x93\x02!\"\x1c/api/inventory/v1beta2/check:\x01*\x12\xa5\x01\n\x0e\x43heckForUpdate\x12/.kessel.inventory.v1beta2.CheckForUpdateRequest\x1a\x30.kessel.inventory.v1beta2.CheckForUpdateResponse\"0\x82\xd3\xe4\x93\x02*\"%/api/inventory/v1beta2/checkforupdate:\x01*\x12\xa0\x01\n\x0eReportResource\x12/.kessel.inventory.v1beta2.ReportResourceRequest\x1a\x30.kessel.inventory.v1beta2.ReportResourceResponse\"+\x82\xd3\xe4\x93\x02%\" /api/inventory/v1beta2/resources:\x01*\x12\xa0\x01\n\x0e\x44\x65leteResource\x12/.kessel.inventory.v1beta2.DeleteResourceRequest\x1a\x30.kessel.inventory.v1beta2.DeleteResourceResponse\"+\x82\xd3\xe4\x93\x02%* /api/inventory/v1beta2/resources:\x01*\x12\x84\x01\n\x13StreamedListObjects\x12\x34.kessel.inventory.v1beta2.StreamedListObjectsRequest\x1a\x35.kessel.inventory.v1beta2.StreamedListObjectsResponse0\x01\x42r\n(org.project_kessel.api.inventory.v1beta2P\x01ZDgithub.com/project-kessel/inventory-api/api/kessel/inventory/v1beta2b\x06proto3"
22
+ descriptor_data = "\n0kessel/inventory/v1beta2/inventory_service.proto\x12\x18kessel.inventory.v1beta2\x1a\x1cgoogle/api/annotations.proto\x1a,kessel/inventory/v1beta2/check_request.proto\x1a-kessel/inventory/v1beta2/check_response.proto\x1a\x37kessel/inventory/v1beta2/check_for_update_request.proto\x1a\x38kessel/inventory/v1beta2/check_for_update_response.proto\x1a\x36kessel/inventory/v1beta2/report_resource_request.proto\x1a\x37kessel/inventory/v1beta2/report_resource_response.proto\x1a\x36kessel/inventory/v1beta2/delete_resource_request.proto\x1a\x37kessel/inventory/v1beta2/delete_resource_response.proto\x1a<kessel/inventory/v1beta2/streamed_list_objects_request.proto\x1a=kessel/inventory/v1beta2/streamed_list_objects_response.proto\x1a\x31kessel/inventory/v1beta2/check_bulk_request.proto\x1a\x32kessel/inventory/v1beta2/check_bulk_response.proto2\xa5\x07\n\x16KesselInventoryService\x12\x81\x01\n\x05\x43heck\x12&.kessel.inventory.v1beta2.CheckRequest\x1a\'.kessel.inventory.v1beta2.CheckResponse\"\'\x82\xd3\xe4\x93\x02!\"\x1c/api/inventory/v1beta2/check:\x01*\x12\xa5\x01\n\x0e\x43heckForUpdate\x12/.kessel.inventory.v1beta2.CheckForUpdateRequest\x1a\x30.kessel.inventory.v1beta2.CheckForUpdateResponse\"0\x82\xd3\xe4\x93\x02*\"%/api/inventory/v1beta2/checkforupdate:\x01*\x12\x91\x01\n\tCheckBulk\x12*.kessel.inventory.v1beta2.CheckBulkRequest\x1a+.kessel.inventory.v1beta2.CheckBulkResponse\"+\x82\xd3\xe4\x93\x02%\" /api/inventory/v1beta2/checkbulk:\x01*\x12\xa0\x01\n\x0eReportResource\x12/.kessel.inventory.v1beta2.ReportResourceRequest\x1a\x30.kessel.inventory.v1beta2.ReportResourceResponse\"+\x82\xd3\xe4\x93\x02%\" /api/inventory/v1beta2/resources:\x01*\x12\xa0\x01\n\x0e\x44\x65leteResource\x12/.kessel.inventory.v1beta2.DeleteResourceRequest\x1a\x30.kessel.inventory.v1beta2.DeleteResourceResponse\"+\x82\xd3\xe4\x93\x02%* /api/inventory/v1beta2/resources:\x01*\x12\x84\x01\n\x13StreamedListObjects\x12\x34.kessel.inventory.v1beta2.StreamedListObjectsRequest\x1a\x35.kessel.inventory.v1beta2.StreamedListObjectsResponse0\x01\x42r\n(org.project_kessel.api.inventory.v1beta2P\x01ZDgithub.com/project-kessel/inventory-api/api/kessel/inventory/v1beta2b\x06proto3"
21
23
 
22
24
  pool = ::Google::Protobuf::DescriptorPool.generated_pool
23
25
  pool.add_serialized_file(descriptor_data)
@@ -39,6 +39,20 @@ module Kessel
39
39
  # It is intended to be used just prior to sensitive operation (e.g., update, delete)
40
40
  # which depend on the current state of the relationship.
41
41
  rpc :CheckForUpdate, ::Kessel::Inventory::V1beta2::CheckForUpdateRequest, ::Kessel::Inventory::V1beta2::CheckForUpdateResponse
42
+ # Performs bulk permission checks for multiple resource-subject-relation combinations.
43
+ #
44
+ # This API is more efficient than making individual Check calls when verifying permissions
45
+ # for multiple items. It answers questions like:
46
+ # "Which of these resources can subject *X* perform action *Y* on?"
47
+ #
48
+ # Common use cases include:
49
+ # - Filtering lists based on user permissions
50
+ # - Batch authorization checks before performing bulk operations
51
+ # - Dashboard rendering with multiple permission checks
52
+ # - Pre-authorization for UI components
53
+ #
54
+ # The response includes a result for each item in the request, maintaining the same order.
55
+ rpc :CheckBulk, ::Kessel::Inventory::V1beta2::CheckBulkRequest, ::Kessel::Inventory::V1beta2::CheckBulkResponse
42
56
  # Reports to Kessel Inventory that a Resource has been created or has been updated.
43
57
  #
44
58
  # Reporters can use this API to report facts about their resources in order to
@@ -3,8 +3,6 @@
3
3
  require 'net/http'
4
4
  require 'uri'
5
5
  require 'json'
6
- require_relative 'v2_helpers'
7
- require_relative 'v2_http'
8
6
  require_relative '../inventory/v1beta2'
9
7
 
10
8
  module Kessel
@@ -1,8 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative 'v2'
4
+
3
5
  module Kessel
4
6
  module RBAC
5
7
  module V2
8
+ include Kessel::Inventory::V1beta2
9
+
6
10
  def workspace_type
7
11
  RepresentationType.new(
8
12
  resource_type: 'workspace',
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative 'v2'
4
+
3
5
  module Kessel
4
6
  module RBAC
5
7
  module V2
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Kessel
4
4
  module Inventory
5
- VERSION = '1.4.0'
5
+ VERSION = '1.5.0'
6
6
  end
7
7
  end
data/lib/kessel-sdk.rb CHANGED
@@ -4,6 +4,8 @@ require 'kessel/version'
4
4
  require 'kessel/grpc'
5
5
  require 'kessel/auth'
6
6
  require 'kessel/rbac/v2'
7
+ require 'kessel/rbac/v2_helpers'
8
+ require 'kessel/rbac/v2_http'
7
9
 
8
10
  require 'kessel/inventory/v1'
9
11
  require 'kessel/inventory/v1beta1'
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kessel-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Project Kessel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-10-20 00:00:00.000000000 Z
11
+ date: 2025-11-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: grpc
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 1.73.0
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
26
  version: 1.73.0
27
27
  - !ruby/object:Gem::Dependency
@@ -206,6 +206,7 @@ files:
206
206
  - lib/google/api/annotations_pb.rb
207
207
  - lib/google/api/field_behavior_pb.rb
208
208
  - lib/google/api/http_pb.rb
209
+ - lib/google/rpc/status_pb.rb
209
210
  - lib/kessel-sdk.rb
210
211
  - lib/kessel/auth.rb
211
212
  - lib/kessel/grpc.rb
@@ -237,6 +238,8 @@ files:
237
238
  - lib/kessel/inventory/v1beta1/resources/resource_label_pb.rb
238
239
  - lib/kessel/inventory/v1beta2.rb
239
240
  - lib/kessel/inventory/v1beta2/allowed_pb.rb
241
+ - lib/kessel/inventory/v1beta2/check_bulk_request_pb.rb
242
+ - lib/kessel/inventory/v1beta2/check_bulk_response_pb.rb
240
243
  - lib/kessel/inventory/v1beta2/check_for_update_request_pb.rb
241
244
  - lib/kessel/inventory/v1beta2/check_for_update_response_pb.rb
242
245
  - lib/kessel/inventory/v1beta2/check_request_pb.rb