kessel-sdk 1.13.0 → 1.13.1

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: 6a800ed3c85f59d9a3c3693b03a930d0c15c3f9469afcf7415439c1df6ce0ed5
4
- data.tar.gz: 7af05d6be0c40cac48b26ce2a4e62168561b9b8291bbb320984676cc1a95385c
3
+ metadata.gz: 6889800072d9061b0fe09d8d401cbbf909257498ec70e8a67924be71c6b5173b
4
+ data.tar.gz: 622700d85991005cf8e06ac17de8089c1c1feeacb89836055a4cbf4700b75446
5
5
  SHA512:
6
- metadata.gz: a2606225a968c861b8097c89f11076e111b48f2873cddcdce7784bb08e67c51df5cc7ef313686ebf4991c3d357323f8e35d751e68be2af27130aaa9faed99915
7
- data.tar.gz: f9707c137cffaf0d86546da1986078baa60c887adde5e65835403e8fecd6f19ce3b781a9330c59455da3046e6cab80ef3163aea01b01cfad6e786657b5415689
6
+ metadata.gz: 3a7e0603336f496723d888a4ae1b366c1d1e4c3567f9f3cb970ab04a7f454e7006348681439eb4d7d8c234f953693943ee4c597b7ef526ca84a329f640be06bb
7
+ data.tar.gz: 1e4acb64ffb25c32816b9f5bfb3fec448cc02895552558a212d80404e9f8732009d5ef86719ba9d83319c5502b92fa60262b2cf78b85975b608f4b902c80b394
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Kessel SDK for Ruby
2
2
 
3
+ [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/project-kessel/kessel-sdk-ruby/badge)](https://securityscorecards.dev/viewer/?uri=github.com/project-kessel/kessel-sdk-ruby)
4
+
3
5
  [![CI](https://github.com/project-kessel/kessel-sdk-ruby/actions/workflows/ci.yml/badge.svg)](https://github.com/project-kessel/kessel-sdk-ruby/actions/workflows/ci.yml)
4
6
 
5
7
  The official Ruby gRPC client SDK for [Project Kessel](https://github.com/project-kessel) services. It provides generated protobuf/gRPC bindings for the Kessel Inventory API, a fluent client builder with credential validation, OAuth 2.0 Client Credentials authentication (via OIDC), and RBAC convenience helpers for workspace operations.
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: kessel/inventory/v1beta2/add_resource_relationships_request.proto
4
+
5
+ require 'google/protobuf'
6
+
7
+ require 'google/protobuf/struct_pb'
8
+ require 'kessel/inventory/v1beta2/write_visibility_pb'
9
+ require 'buf/validate/validate_pb'
10
+
11
+
12
+ descriptor_data = "\nAkessel/inventory/v1beta2/add_resource_relationships_request.proto\x12\x18kessel.inventory.v1beta2\x1a\x1cgoogle/protobuf/struct.proto\x1a/kessel/inventory/v1beta2/write_visibility.proto\x1a\x1b\x62uf/validate/validate.proto\"\xc2\x06\n\x1f\x41\x64\x64ResourceRelationshipsRequest\x12&\n\x0cinventory_id\x18\x01 \x01(\tH\x01R\x0binventoryId\x88\x01\x01\x12-\n\x04type\x18\x02 \x01(\tB\x19\xbaH\x16r\x14\x10\x01\x32\x10^[A-Za-z0-9_-]+$R\x04type\x12>\n\rreporter_type\x18\x03 \x01(\tB\x19\xbaH\x16r\x14\x10\x01\x32\x10^[A-Za-z0-9_-]+$R\x0creporterType\x12\x39\n\x14reporter_instance_id\x18\x04 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x12reporterInstanceId\x12\x33\n\x11local_resource_id\x18\x05 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x0flocalResourceId\x12\x38\n\x08reporter\x18\x06 \x01(\x0b\x32\x17.google.protobuf.StructH\x02R\x08reporter\x88\x01\x01\x12\x34\n\x06\x63ommon\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructH\x03R\x06\x63ommon\x88\x01\x01\x12\'\n\x0etransaction_id\x18\x08 \x01(\tH\x00R\rtransactionId\x12^\n\x10write_visibility\x18\t \x01(\x0e\x32).kessel.inventory.v1beta2.WriteVisibilityB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x0fwriteVisibility:\xe2\x01\xbaH\xde\x01\x1a\xdb\x01\n6add_resource_relationships.at_least_one_representation\x12\x41\x61t least one of reporter or common must be provided and non-empty\x1a^(has(this.reporter) && size(this.reporter) > 0) || (has(this.common) && size(this.common) > 0)B\x11\n\x0fidempotency_keyB\x0f\n\r_inventory_idB\x0b\n\t_reporterB\t\n\x07_commonBr\n(org.project_kessel.api.inventory.v1beta2P\x01ZDgithub.com/project-kessel/inventory-api/api/kessel/inventory/v1beta2b\x06proto3"
13
+
14
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
15
+ pool.add_serialized_file(descriptor_data)
16
+
17
+ module Kessel
18
+ module Inventory
19
+ module V1beta2
20
+ AddResourceRelationshipsRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("kessel.inventory.v1beta2.AddResourceRelationshipsRequest").msgclass
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: kessel/inventory/v1beta2/add_resource_relationships_response.proto
4
+
5
+ require 'google/protobuf'
6
+
7
+
8
+ descriptor_data = "\nBkessel/inventory/v1beta2/add_resource_relationships_response.proto\x12\x18kessel.inventory.v1beta2\"\"\n AddResourceRelationshipsResponseBr\n(org.project_kessel.api.inventory.v1beta2P\x01ZDgithub.com/project-kessel/inventory-api/api/kessel/inventory/v1beta2b\x06proto3"
9
+
10
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
11
+ pool.add_serialized_file(descriptor_data)
12
+
13
+ module Kessel
14
+ module Inventory
15
+ module V1beta2
16
+ AddResourceRelationshipsResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("kessel.inventory.v1beta2.AddResourceRelationshipsResponse").msgclass
17
+ end
18
+ end
19
+ end
@@ -13,6 +13,10 @@ require 'kessel/inventory/v1beta2/report_resource_request_pb'
13
13
  require 'kessel/inventory/v1beta2/report_resource_response_pb'
14
14
  require 'kessel/inventory/v1beta2/delete_resource_request_pb'
15
15
  require 'kessel/inventory/v1beta2/delete_resource_response_pb'
16
+ require 'kessel/inventory/v1beta2/add_resource_relationships_request_pb'
17
+ require 'kessel/inventory/v1beta2/add_resource_relationships_response_pb'
18
+ require 'kessel/inventory/v1beta2/remove_resource_relationships_request_pb'
19
+ require 'kessel/inventory/v1beta2/remove_resource_relationships_response_pb'
16
20
  require 'kessel/inventory/v1beta2/streamed_list_objects_request_pb'
17
21
  require 'kessel/inventory/v1beta2/streamed_list_objects_response_pb'
18
22
  require 'kessel/inventory/v1beta2/streamed_list_subjects_request_pb'
@@ -27,7 +31,7 @@ require 'kessel/inventory/v1beta2/check_for_update_bulk_request_pb'
27
31
  require 'kessel/inventory/v1beta2/check_for_update_bulk_response_pb'
28
32
 
29
33
 
30
- 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=kessel/inventory/v1beta2/streamed_list_subjects_request.proto\x1a>kessel/inventory/v1beta2/streamed_list_subjects_response.proto\x1a\x31kessel/inventory/v1beta2/check_bulk_request.proto\x1a\x32kessel/inventory/v1beta2/check_bulk_response.proto\x1a\x31kessel/inventory/v1beta2/check_self_request.proto\x1a\x32kessel/inventory/v1beta2/check_self_response.proto\x1a\x36kessel/inventory/v1beta2/check_self_bulk_request.proto\x1a\x37kessel/inventory/v1beta2/check_self_bulk_response.proto\x1a<kessel/inventory/v1beta2/check_for_update_bulk_request.proto\x1a=kessel/inventory/v1beta2/check_for_update_bulk_response.proto2\x86\x0c\n\x16KesselInventoryService\x12~\n\x05\x43heck\x12&.kessel.inventory.v1beta2.CheckRequest\x1a\'.kessel.inventory.v1beta2.CheckResponse\"$\x82\xd3\xe4\x93\x02\x1e\"\x19/api/kessel/v1beta2/check:\x01*\x12\x8e\x01\n\tCheckSelf\x12*.kessel.inventory.v1beta2.CheckSelfRequest\x1a+.kessel.inventory.v1beta2.CheckSelfResponse\"(\x82\xd3\xe4\x93\x02\"\"\x1d/api/kessel/v1beta2/checkself:\x01*\x12\xa2\x01\n\x0e\x43heckForUpdate\x12/.kessel.inventory.v1beta2.CheckForUpdateRequest\x1a\x30.kessel.inventory.v1beta2.CheckForUpdateResponse\"-\x82\xd3\xe4\x93\x02\'\"\"/api/kessel/v1beta2/checkforupdate:\x01*\x12\xb2\x01\n\x12\x43heckForUpdateBulk\x12\x33.kessel.inventory.v1beta2.CheckForUpdateBulkRequest\x1a\x34.kessel.inventory.v1beta2.CheckForUpdateBulkResponse\"1\x82\xd3\xe4\x93\x02+\"&/api/kessel/v1beta2/checkforupdatebulk:\x01*\x12\x8e\x01\n\tCheckBulk\x12*.kessel.inventory.v1beta2.CheckBulkRequest\x1a+.kessel.inventory.v1beta2.CheckBulkResponse\"(\x82\xd3\xe4\x93\x02\"\"\x1d/api/kessel/v1beta2/checkbulk:\x01*\x12\x9e\x01\n\rCheckSelfBulk\x12..kessel.inventory.v1beta2.CheckSelfBulkRequest\x1a/.kessel.inventory.v1beta2.CheckSelfBulkResponse\",\x82\xd3\xe4\x93\x02&\"!/api/kessel/v1beta2/checkselfbulk:\x01*\x12\x9d\x01\n\x0eReportResource\x12/.kessel.inventory.v1beta2.ReportResourceRequest\x1a\x30.kessel.inventory.v1beta2.ReportResourceResponse\"(\x82\xd3\xe4\x93\x02\"\"\x1d/api/kessel/v1beta2/resources:\x01*\x12\x9d\x01\n\x0e\x44\x65leteResource\x12/.kessel.inventory.v1beta2.DeleteResourceRequest\x1a\x30.kessel.inventory.v1beta2.DeleteResourceResponse\"(\x82\xd3\xe4\x93\x02\"*\x1d/api/kessel/v1beta2/resources:\x01*\x12\x84\x01\n\x13StreamedListObjects\x12\x34.kessel.inventory.v1beta2.StreamedListObjectsRequest\x1a\x35.kessel.inventory.v1beta2.StreamedListObjectsResponse0\x01\x12\x87\x01\n\x14StreamedListSubjects\x12\x35.kessel.inventory.v1beta2.StreamedListSubjectsRequest\x1a\x36.kessel.inventory.v1beta2.StreamedListSubjectsResponse0\x01\x42r\n(org.project_kessel.api.inventory.v1beta2P\x01ZDgithub.com/project-kessel/inventory-api/api/kessel/inventory/v1beta2b\x06proto3"
34
+ 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\x41kessel/inventory/v1beta2/add_resource_relationships_request.proto\x1a\x42kessel/inventory/v1beta2/add_resource_relationships_response.proto\x1a\x44kessel/inventory/v1beta2/remove_resource_relationships_request.proto\x1a\x45kessel/inventory/v1beta2/remove_resource_relationships_response.proto\x1a<kessel/inventory/v1beta2/streamed_list_objects_request.proto\x1a=kessel/inventory/v1beta2/streamed_list_objects_response.proto\x1a=kessel/inventory/v1beta2/streamed_list_subjects_request.proto\x1a>kessel/inventory/v1beta2/streamed_list_subjects_response.proto\x1a\x31kessel/inventory/v1beta2/check_bulk_request.proto\x1a\x32kessel/inventory/v1beta2/check_bulk_response.proto\x1a\x31kessel/inventory/v1beta2/check_self_request.proto\x1a\x32kessel/inventory/v1beta2/check_self_response.proto\x1a\x36kessel/inventory/v1beta2/check_self_bulk_request.proto\x1a\x37kessel/inventory/v1beta2/check_self_bulk_response.proto\x1a<kessel/inventory/v1beta2/check_for_update_bulk_request.proto\x1a=kessel/inventory/v1beta2/check_for_update_bulk_response.proto2\xa7\x0f\n\x16KesselInventoryService\x12~\n\x05\x43heck\x12&.kessel.inventory.v1beta2.CheckRequest\x1a\'.kessel.inventory.v1beta2.CheckResponse\"$\x82\xd3\xe4\x93\x02\x1e\"\x19/api/kessel/v1beta2/check:\x01*\x12\x8e\x01\n\tCheckSelf\x12*.kessel.inventory.v1beta2.CheckSelfRequest\x1a+.kessel.inventory.v1beta2.CheckSelfResponse\"(\x82\xd3\xe4\x93\x02\"\"\x1d/api/kessel/v1beta2/checkself:\x01*\x12\xa2\x01\n\x0e\x43heckForUpdate\x12/.kessel.inventory.v1beta2.CheckForUpdateRequest\x1a\x30.kessel.inventory.v1beta2.CheckForUpdateResponse\"-\x82\xd3\xe4\x93\x02\'\"\"/api/kessel/v1beta2/checkforupdate:\x01*\x12\xb2\x01\n\x12\x43heckForUpdateBulk\x12\x33.kessel.inventory.v1beta2.CheckForUpdateBulkRequest\x1a\x34.kessel.inventory.v1beta2.CheckForUpdateBulkResponse\"1\x82\xd3\xe4\x93\x02+\"&/api/kessel/v1beta2/checkforupdatebulk:\x01*\x12\x8e\x01\n\tCheckBulk\x12*.kessel.inventory.v1beta2.CheckBulkRequest\x1a+.kessel.inventory.v1beta2.CheckBulkResponse\"(\x82\xd3\xe4\x93\x02\"\"\x1d/api/kessel/v1beta2/checkbulk:\x01*\x12\x9e\x01\n\rCheckSelfBulk\x12..kessel.inventory.v1beta2.CheckSelfBulkRequest\x1a/.kessel.inventory.v1beta2.CheckSelfBulkResponse\",\x82\xd3\xe4\x93\x02&\"!/api/kessel/v1beta2/checkselfbulk:\x01*\x12\x9d\x01\n\x0eReportResource\x12/.kessel.inventory.v1beta2.ReportResourceRequest\x1a\x30.kessel.inventory.v1beta2.ReportResourceResponse\"(\x82\xd3\xe4\x93\x02\"\"\x1d/api/kessel/v1beta2/resources:\x01*\x12\x9d\x01\n\x0e\x44\x65leteResource\x12/.kessel.inventory.v1beta2.DeleteResourceRequest\x1a\x30.kessel.inventory.v1beta2.DeleteResourceResponse\"(\x82\xd3\xe4\x93\x02\"*\x1d/api/kessel/v1beta2/resources:\x01*\x12\xc9\x01\n\x18\x41\x64\x64ResourceRelationships\x12\x39.kessel.inventory.v1beta2.AddResourceRelationshipsRequest\x1a:.kessel.inventory.v1beta2.AddResourceRelationshipsResponse\"6\x82\xd3\xe4\x93\x02\x30\"+/api/kessel/v1beta2/resources/relationships:\x01*\x12\xd2\x01\n\x1bRemoveResourceRelationships\x12<.kessel.inventory.v1beta2.RemoveResourceRelationshipsRequest\x1a=.kessel.inventory.v1beta2.RemoveResourceRelationshipsResponse\"6\x82\xd3\xe4\x93\x02\x30*+/api/kessel/v1beta2/resources/relationships:\x01*\x12\x84\x01\n\x13StreamedListObjects\x12\x34.kessel.inventory.v1beta2.StreamedListObjectsRequest\x1a\x35.kessel.inventory.v1beta2.StreamedListObjectsResponse0\x01\x12\x87\x01\n\x14StreamedListSubjects\x12\x35.kessel.inventory.v1beta2.StreamedListSubjectsRequest\x1a\x36.kessel.inventory.v1beta2.StreamedListSubjectsResponse0\x01\x42r\n(org.project_kessel.api.inventory.v1beta2P\x01ZDgithub.com/project-kessel/inventory-api/api/kessel/inventory/v1beta2b\x06proto3"
31
35
 
32
36
  pool = ::Google::Protobuf::DescriptorPool.generated_pool
33
37
  pool.add_serialized_file(descriptor_data)
@@ -121,6 +121,48 @@ module Kessel
121
121
  #
122
122
  # As an example, it can revoke previously granted access across the system.
123
123
  rpc :DeleteResource, ::Kessel::Inventory::V1beta2::DeleteResourceRequest, ::Kessel::Inventory::V1beta2::DeleteResourceResponse
124
+ # Adds one or more relationships to an existing *Resource*.
125
+ #
126
+ # If the *Resource* does not yet exist for this *Reporter*, it is created with
127
+ # the provided relationship fields as its initial representation. All other
128
+ # relationships already reported for that *Resource* are unaffected.
129
+ #
130
+ # Unlike `ReportResource`, which asserts the complete state of a *Resource*,
131
+ # this operation is a targeted mutation: it only touches the specific
132
+ # relationship fields and values named in the request. Attribute fields,
133
+ # other relationship fields, and metadata are left exactly as they were.
134
+ #
135
+ # Only relationship-typed fields from the *Resource's* schema are accepted;
136
+ # attribute fields are rejected.
137
+ #
138
+ # The relationships added through this API are used to determine relationship
139
+ # check outcomes via the Check and CheckForUpdate APIs.
140
+ #
141
+ # This API does **not** guarantee immediate read-your-writes consistency by default.
142
+ # If a reporter requires newly added relationships to be visible in subsequent
143
+ # checks (e.g., `Check`), the request must explicitly set `write_visibility = IMMEDIATE`.
144
+ rpc :AddResourceRelationships, ::Kessel::Inventory::V1beta2::AddResourceRelationshipsRequest, ::Kessel::Inventory::V1beta2::AddResourceRelationshipsResponse
145
+ # Removes one or more specific relationships from an existing *Resource*.
146
+ #
147
+ # All other relationships for the *Resource* are unaffected. If the *Resource*
148
+ # does not exist, this operation returns `NOT_FOUND` — matching the behaviour
149
+ # of `DeleteResource`.
150
+ #
151
+ # Unlike `ReportResource`, which asserts the complete state of a *Resource*,
152
+ # this operation is a targeted mutation: it only removes the specific
153
+ # relationship values named in the request. Attribute fields and other
154
+ # relationship fields are left exactly as they were.
155
+ #
156
+ # Only relationship-typed fields from the *Resource's* schema are accepted;
157
+ # attribute fields are rejected.
158
+ #
159
+ # The relationships removed through this API are used to determine relationship
160
+ # check outcomes via the Check and CheckForUpdate APIs.
161
+ #
162
+ # This API does **not** guarantee immediate read-your-writes consistency by default.
163
+ # If a reporter requires removed relationships to no longer be visible in subsequent
164
+ # checks (e.g., `Check`), the request must explicitly set `write_visibility = IMMEDIATE`.
165
+ rpc :RemoveResourceRelationships, ::Kessel::Inventory::V1beta2::RemoveResourceRelationshipsRequest, ::Kessel::Inventory::V1beta2::RemoveResourceRelationshipsResponse
124
166
  # Streams a list of objects where the given subject has the specified relation.
125
167
  #
126
168
  # This relationship query answers the question:
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: kessel/inventory/v1beta2/remove_resource_relationships_request.proto
4
+
5
+ require 'google/protobuf'
6
+
7
+ require 'google/protobuf/struct_pb'
8
+ require 'kessel/inventory/v1beta2/write_visibility_pb'
9
+ require 'buf/validate/validate_pb'
10
+
11
+
12
+ descriptor_data = "\nDkessel/inventory/v1beta2/remove_resource_relationships_request.proto\x12\x18kessel.inventory.v1beta2\x1a\x1cgoogle/protobuf/struct.proto\x1a/kessel/inventory/v1beta2/write_visibility.proto\x1a\x1b\x62uf/validate/validate.proto\"\xc8\x06\n\"RemoveResourceRelationshipsRequest\x12&\n\x0cinventory_id\x18\x01 \x01(\tH\x01R\x0binventoryId\x88\x01\x01\x12-\n\x04type\x18\x02 \x01(\tB\x19\xbaH\x16r\x14\x10\x01\x32\x10^[A-Za-z0-9_-]+$R\x04type\x12>\n\rreporter_type\x18\x03 \x01(\tB\x19\xbaH\x16r\x14\x10\x01\x32\x10^[A-Za-z0-9_-]+$R\x0creporterType\x12\x39\n\x14reporter_instance_id\x18\x04 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x12reporterInstanceId\x12\x33\n\x11local_resource_id\x18\x05 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x0flocalResourceId\x12\x38\n\x08reporter\x18\x06 \x01(\x0b\x32\x17.google.protobuf.StructH\x02R\x08reporter\x88\x01\x01\x12\x34\n\x06\x63ommon\x18\x07 \x01(\x0b\x32\x17.google.protobuf.StructH\x03R\x06\x63ommon\x88\x01\x01\x12\'\n\x0etransaction_id\x18\x08 \x01(\tH\x00R\rtransactionId\x12^\n\x10write_visibility\x18\t \x01(\x0e\x32).kessel.inventory.v1beta2.WriteVisibilityB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x0fwriteVisibility:\xe5\x01\xbaH\xe1\x01\x1a\xde\x01\n9remove_resource_relationships.at_least_one_representation\x12\x41\x61t least one of reporter or common must be provided and non-empty\x1a^(has(this.reporter) && size(this.reporter) > 0) || (has(this.common) && size(this.common) > 0)B\x11\n\x0fidempotency_keyB\x0f\n\r_inventory_idB\x0b\n\t_reporterB\t\n\x07_commonBr\n(org.project_kessel.api.inventory.v1beta2P\x01ZDgithub.com/project-kessel/inventory-api/api/kessel/inventory/v1beta2b\x06proto3"
13
+
14
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
15
+ pool.add_serialized_file(descriptor_data)
16
+
17
+ module Kessel
18
+ module Inventory
19
+ module V1beta2
20
+ RemoveResourceRelationshipsRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("kessel.inventory.v1beta2.RemoveResourceRelationshipsRequest").msgclass
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: kessel/inventory/v1beta2/remove_resource_relationships_response.proto
4
+
5
+ require 'google/protobuf'
6
+
7
+
8
+ descriptor_data = "\nEkessel/inventory/v1beta2/remove_resource_relationships_response.proto\x12\x18kessel.inventory.v1beta2\"%\n#RemoveResourceRelationshipsResponseBr\n(org.project_kessel.api.inventory.v1beta2P\x01ZDgithub.com/project-kessel/inventory-api/api/kessel/inventory/v1beta2b\x06proto3"
9
+
10
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
11
+ pool.add_serialized_file(descriptor_data)
12
+
13
+ module Kessel
14
+ module Inventory
15
+ module V1beta2
16
+ RemoveResourceRelationshipsResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("kessel.inventory.v1beta2.RemoveResourceRelationshipsResponse").msgclass
17
+ end
18
+ end
19
+ end
@@ -47,9 +47,10 @@ All factory methods in `v2_helpers.rb` follow these rules:
47
47
 
48
48
  ### HTTP Client Handling
49
49
 
50
- - When `http_client` is `nil`, a new `Net::HTTP` is created per call (one TCP connection per fetch).
51
- - When `http_client` is provided, `check_http_client` validates that its `address` and `port` match the endpoint URI. Mismatches raise `RuntimeError`.
52
- - For multiple workspace fetches, pass a pre-started `Net::HTTP` to avoid repeated TCP handshakes.
50
+ - When `http_client` is `nil`, a new `Net::HTTP` is created per call (one TCP connection per fetch). TLS is automatically enabled when the endpoint scheme is `https` via `use_ssl = (uri.scheme == 'https')`.
51
+ - When `http_client` is provided, `check_http_client` validates that its `address` and `port` match the endpoint URI **and** that its `use_ssl?` setting matches the endpoint scheme. Host/port mismatches and SSL mismatches both raise `RuntimeError`.
52
+ - For multiple workspace fetches, pass a pre-started `Net::HTTP` to avoid repeated TCP handshakes. Ensure the client's `use_ssl` setting matches the endpoint scheme.
53
+ - Plaintext (`http://`) connections work unchanged for existing internal-URL consumers. No explicit opt-in is required for `http://` endpoints — TLS is only enforced when the scheme is `https`.
53
54
 
54
55
  ### Response Processing
55
56
 
@@ -111,6 +111,7 @@ module Kessel
111
111
  uri.query = URI.encode_www_form(query)
112
112
  if http_client.nil?
113
113
  http_client = Net::HTTP.new(uri.host, uri.port)
114
+ http_client.use_ssl = (uri.scheme == 'https')
114
115
  else
115
116
  check_http_client(http_client, uri)
116
117
  end
@@ -17,9 +17,13 @@ module Kessel
17
17
  end
18
18
 
19
19
  def check_http_client(http_client, uri)
20
- return if uri.host == http_client.address && uri.port == http_client.port
20
+ unless uri.host == http_client.address && uri.port == http_client.port
21
+ raise 'http client host and port do not match rbac_base_endpoint'
22
+ end
21
23
 
22
- raise 'http client host and port do not match rbac_base_endpoint'
24
+ return if http_client.use_ssl? == (uri.scheme == 'https')
25
+
26
+ raise 'http client SSL configuration does not match endpoint scheme'
23
27
  end
24
28
  end
25
29
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Kessel
4
4
  module Inventory
5
- VERSION = '1.13.0'
5
+ VERSION = '1.13.1'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kessel-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.13.0
4
+ version: 1.13.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Project Kessel
@@ -9,6 +9,20 @@ bindir: bin
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: base64
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '0'
12
26
  - !ruby/object:Gem::Dependency
13
27
  name: grpc
14
28
  requirement: !ruby/object:Gem::Requirement
@@ -169,14 +183,14 @@ dependencies:
169
183
  requirements:
170
184
  - - "~>"
171
185
  - !ruby/object:Gem::Version
172
- version: 1.10.0
186
+ version: 2.1.0
173
187
  type: :development
174
188
  prerelease: false
175
189
  version_requirements: !ruby/object:Gem::Requirement
176
190
  requirements:
177
191
  - - "~>"
178
192
  - !ruby/object:Gem::Version
179
- version: 1.10.0
193
+ version: 2.1.0
180
194
  - !ruby/object:Gem::Dependency
181
195
  name: typeprof
182
196
  requirement: !ruby/object:Gem::Requirement
@@ -239,6 +253,8 @@ files:
239
253
  - lib/kessel/inventory/v1beta2.rb
240
254
  - lib/kessel/inventory/v1beta2/acquire_lock_request_pb.rb
241
255
  - lib/kessel/inventory/v1beta2/acquire_lock_response_pb.rb
256
+ - lib/kessel/inventory/v1beta2/add_resource_relationships_request_pb.rb
257
+ - lib/kessel/inventory/v1beta2/add_resource_relationships_response_pb.rb
242
258
  - lib/kessel/inventory/v1beta2/allowed_pb.rb
243
259
  - lib/kessel/inventory/v1beta2/check_bulk_request_pb.rb
244
260
  - lib/kessel/inventory/v1beta2/check_bulk_response_pb.rb
@@ -271,6 +287,8 @@ files:
271
287
  - lib/kessel/inventory/v1beta2/relation_subject_reference_pb.rb
272
288
  - lib/kessel/inventory/v1beta2/relation_tuple_filter_pb.rb
273
289
  - lib/kessel/inventory/v1beta2/relationship_pb.rb
290
+ - lib/kessel/inventory/v1beta2/remove_resource_relationships_request_pb.rb
291
+ - lib/kessel/inventory/v1beta2/remove_resource_relationships_response_pb.rb
274
292
  - lib/kessel/inventory/v1beta2/report_resource_request_pb.rb
275
293
  - lib/kessel/inventory/v1beta2/report_resource_response_pb.rb
276
294
  - lib/kessel/inventory/v1beta2/reporter_reference_pb.rb