otdf-python 0.5.0__py3-none-any.whl → 0.7.3__py3-none-any.whl

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.
Files changed (40) hide show
  1. otdf_python/auth_headers.py +1 -0
  2. otdf_python/kas_client.py +4 -0
  3. otdf_python/kas_connect_rpc_client.py +29 -28
  4. otdf_python/kas_info.py +1 -0
  5. otdf_python/key_type_constants.py +1 -0
  6. otdf_python/nanotdf_ecdsa_struct.py +1 -0
  7. otdf_python/policy_binding_serializer.py +1 -0
  8. otdf_python/sdk.py +2 -0
  9. otdf_python/sdk_builder.py +1 -1
  10. otdf_python/tdf_reader.py +1 -0
  11. otdf_python/token_source.py +1 -1
  12. {otdf_python-0.5.0.dist-info → otdf_python-0.7.3.dist-info}/METADATA +4 -8
  13. {otdf_python-0.5.0.dist-info → otdf_python-0.7.3.dist-info}/RECORD +39 -40
  14. {otdf_python-0.5.0.dist-info → otdf_python-0.7.3.dist-info}/WHEEL +1 -1
  15. otdf_python_proto/authorization/v2/authorization_pb2.py +40 -34
  16. otdf_python_proto/authorization/v2/authorization_pb2.pyi +16 -8
  17. otdf_python_proto/common/common_pb2.py +30 -13
  18. otdf_python_proto/common/common_pb2.pyi +17 -0
  19. otdf_python_proto/entityresolution/v2/entity_resolution_pb2.py +18 -15
  20. otdf_python_proto/entityresolution/v2/entity_resolution_pb2.pyi +17 -4
  21. otdf_python_proto/legacy_grpc/policy/attributes/attributes_pb2_grpc.py +8 -3
  22. otdf_python_proto/legacy_grpc/policy/namespaces/namespaces_pb2_grpc.py +91 -1
  23. otdf_python_proto/legacy_grpc/policy/obligations/obligations_pb2_grpc.py +43 -0
  24. otdf_python_proto/policy/attributes/attributes_pb2.py +92 -91
  25. otdf_python_proto/policy/attributes/attributes_pb2.pyi +7 -6
  26. otdf_python_proto/policy/kasregistry/key_access_server_registry_pb2.py +46 -46
  27. otdf_python_proto/policy/kasregistry/key_access_server_registry_pb2.pyi +8 -4
  28. otdf_python_proto/policy/keymanagement/key_management_pb2.py +28 -22
  29. otdf_python_proto/policy/keymanagement/key_management_pb2.pyi +12 -6
  30. otdf_python_proto/policy/namespaces/namespaces_connect.py +130 -0
  31. otdf_python_proto/policy/namespaces/namespaces_pb2.py +42 -18
  32. otdf_python_proto/policy/namespaces/namespaces_pb2.pyi +38 -0
  33. otdf_python_proto/policy/objects_pb2.py +86 -76
  34. otdf_python_proto/policy/objects_pb2.pyi +56 -16
  35. otdf_python_proto/policy/obligations/obligations_connect.py +69 -0
  36. otdf_python_proto/policy/obligations/obligations_pb2.py +146 -59
  37. otdf_python_proto/policy/obligations/obligations_pb2.pyi +65 -28
  38. otdf_python_proto/policy/unsafe/unsafe_pb2.py +44 -43
  39. otdf_python_proto/policy/unsafe/unsafe_pb2.pyi +5 -2
  40. otdf_python-0.5.0.dist-info/licenses/LICENSE +0 -21
@@ -6,6 +6,7 @@ from dataclasses import dataclass
6
6
  @dataclass
7
7
  class AuthHeaders:
8
8
  """Represents authentication headers used in token-based authorization.
9
+
9
10
  This class holds authorization and DPoP (Demonstrating Proof of Possession) headers
10
11
  that are used in token-based API requests.
11
12
  """
otdf_python/kas_client.py CHANGED
@@ -362,6 +362,7 @@ class KASClient:
362
362
  self, policy_json, client_public_key, key_access, session_key_type=None
363
363
  ):
364
364
  """Create a signed JWT for the rewrap request.
365
+
365
366
  The JWT is signed with the DPoP private key.
366
367
 
367
368
  Args:
@@ -400,6 +401,7 @@ class KASClient:
400
401
 
401
402
  def _create_connect_rpc_signed_token(self, key_access, policy_json):
402
403
  """Create a signed token specifically for Connect RPC requests.
404
+
403
405
  For now, this delegates to the existing JWT creation method.
404
406
  """
405
407
  return self._create_signed_request_jwt(
@@ -469,6 +471,7 @@ class KASClient:
469
471
 
470
472
  def get_public_key(self, kas_info):
471
473
  """Get KAS public key using Connect RPC.
474
+
472
475
  Checks cache first if available.
473
476
  """
474
477
  try:
@@ -569,6 +572,7 @@ class KASClient:
569
572
 
570
573
  def _prepare_rsa_keypair(self):
571
574
  """Prepare RSA key pair for unwrapping, reusing if possible.
575
+
572
576
  Uses separate ephemeral keys for encryption (not DPoP keys).
573
577
 
574
578
  Returns:
@@ -1,10 +1,11 @@
1
1
  """KASConnectRPCClient: Handles Connect RPC communication with the Key Access Service (KAS).
2
+
2
3
  This class encapsulates all interactions with otdf_python_proto.
3
4
  """
4
5
 
5
6
  import logging
6
7
 
7
- import httpx
8
+ import pyqwest
8
9
  from otdf_python_proto.kas import kas_pb2
9
10
  from otdf_python_proto.kas.kas_connect import AccessServiceClientSync
10
11
 
@@ -26,6 +27,7 @@ class KASConnectRPCClient:
26
27
  """
27
28
  self.use_plaintext = use_plaintext
28
29
  self.verify_ssl = verify_ssl
30
+ self._transport = None
29
31
  self._http_client = None
30
32
 
31
33
  def __enter__(self):
@@ -38,35 +40,41 @@ class KASConnectRPCClient:
38
40
  self.close()
39
41
 
40
42
  def close(self):
41
- """Close HTTP client and release resources.
42
-
43
- This method should be called when the client is no longer needed
44
- to properly clean up resources. It's also called automatically
45
- when using the client as a context manager.
46
- """
47
- if self._http_client is not None:
48
- self._http_client.close()
49
- self._http_client = None
43
+ """Close HTTP client and release resources."""
44
+ if self._transport is not None:
45
+ self._transport.close()
46
+ self._transport = None
47
+ self._http_client = None
50
48
 
51
49
  def _create_http_client(self):
52
- """Create HTTP client with SSL verification configuration.
50
+ """Create HTTP client backed by a pyqwest.SyncHTTPTransport.
51
+
52
+ Supports plaintext (HTTP) and TLS (HTTPS) connections.
53
+ Custom CA/cert data is not yet supported.
53
54
 
54
55
  Returns:
55
- httpx.Client configured for SSL verification settings
56
+ pyqwest.SyncClient configured for the current settings
57
+
58
+ Raises:
59
+ NotImplementedError: If verify_ssl=False is requested, as pyqwest
60
+ does not support disabling TLS verification. Passing custom
61
+ TLS certificate or CA data is also not yet implemented.
56
62
 
57
63
  """
58
- if self.verify_ssl:
59
- logging.info("Using SSL verification enabled HTTP client")
60
- return httpx.Client()
61
- else:
62
- logging.info("Using SSL verification disabled HTTP client")
63
- return httpx.Client(verify=False)
64
+ if not self.verify_ssl and not self.use_plaintext:
65
+ raise NotImplementedError(
66
+ "verify_ssl=False is not supported for HTTPS connections: pyqwest "
67
+ "does not expose an option to disable TLS verification. Passing "
68
+ "custom TLS cert or CA data is also not yet implemented."
69
+ )
70
+ self._transport = pyqwest.SyncHTTPTransport()
71
+ return pyqwest.SyncClient(transport=self._transport)
64
72
 
65
73
  def _get_http_client(self):
66
74
  """Get HTTP client, creating one if needed for backward compatibility.
67
75
 
68
76
  Returns:
69
- httpx.Client instance
77
+ pyqwest.SyncClient instance
70
78
 
71
79
  """
72
80
  if self._http_client is None:
@@ -136,12 +144,9 @@ class KASConnectRPCClient:
136
144
  f"for public key retrieval"
137
145
  )
138
146
 
139
- # Get or create HTTP client
140
147
  http_client = self._get_http_client()
141
-
142
- # Create Connect RPC client with configured HTTP client
143
148
  client = AccessServiceClientSync(
144
- address=connect_rpc_base_url, session=http_client
149
+ address=connect_rpc_base_url, http_client=http_client
145
150
  )
146
151
 
147
152
  # Create public key request
@@ -202,12 +207,9 @@ class KASConnectRPCClient:
202
207
  f"Creating Connect RPC client for base URL: {kas_service_url}, for unwrap"
203
208
  )
204
209
 
205
- # Get or create HTTP client
206
210
  http_client = self._get_http_client()
207
-
208
- # Create Connect RPC client with configured HTTP client
209
211
  client = AccessServiceClientSync(
210
- address=kas_service_url, session=http_client
212
+ address=kas_service_url, http_client=http_client
211
213
  )
212
214
 
213
215
  # Create rewrap request
@@ -215,7 +217,6 @@ class KASConnectRPCClient:
215
217
  signed_request_token=signed_token,
216
218
  )
217
219
 
218
- # Debug: Log the signed token details
219
220
  logging.info(f"Connect RPC signed token: {signed_token}")
220
221
 
221
222
  # Prepare headers with authentication if available
otdf_python/kas_info.py CHANGED
@@ -6,6 +6,7 @@ from dataclasses import dataclass
6
6
  @dataclass
7
7
  class KASInfo:
8
8
  """Configuration for Key Access Server (KAS) information.
9
+
9
10
  This class stores details about a Key Access Server including its URL,
10
11
  public key, key ID, default status, and cryptographic algorithm.
11
12
  """
@@ -1,4 +1,5 @@
1
1
  """Constants for session key types used in the KAS client.
2
+
2
3
  This matches the Java SDK's KeyType enum pattern.
3
4
  """
4
5
 
@@ -68,6 +68,7 @@ class NanoTDFECDSAStruct:
68
68
 
69
69
  def as_bytes(self) -> bytes:
70
70
  """Convert the signature structure to bytes.
71
+
71
72
  Raises ValueError if r_value or s_value is None.
72
73
  """
73
74
  if self.r_value is None or self.s_value is None:
@@ -18,6 +18,7 @@ class PolicyBinding:
18
18
 
19
19
  class PolicyBindingSerializer:
20
20
  """Handles serialization and deserialization of policy bindings.
21
+
21
22
  This class provides static methods to convert between JSON representations
22
23
  and PolicyBinding objects.
23
24
  """
otdf_python/sdk.py CHANGED
@@ -15,6 +15,7 @@ class KAS(AbstractContextManager):
15
15
 
16
16
  def get_public_key(self, kas_info: Any) -> Any:
17
17
  """Retrieve the public key from KAS for RSA operations.
18
+
18
19
  If the public key is cached, returns the cached value.
19
20
  Otherwise, makes a request to the KAS.
20
21
 
@@ -217,6 +218,7 @@ class SDK(AbstractContextManager):
217
218
 
218
219
  def kas(self) -> KAS:
219
220
  """Return the KAS client for key access operations.
221
+
220
222
  This should be implemented to return an instance of KAS.
221
223
  """
222
224
  raise NotImplementedError
@@ -8,7 +8,7 @@ import ssl
8
8
  from dataclasses import dataclass
9
9
  from pathlib import Path
10
10
 
11
- import httpx
11
+ import httpx2 as httpx
12
12
 
13
13
  from otdf_python.kas_allowlist import KASAllowlist
14
14
  from otdf_python.sdk import KAS, SDK
otdf_python/tdf_reader.py CHANGED
@@ -12,6 +12,7 @@ TDF_PAYLOAD_FILE_NAME = "0.payload"
12
12
 
13
13
  class TDFReader:
14
14
  """TDFReader is responsible for reading and processing Trusted Data Format (TDF) files.
15
+
15
16
  The class initializes with a TDF file channel, extracts the manifest and payload entries,
16
17
  and provides methods to retrieve the manifest content, read payload bytes, and read policy objects.
17
18
  """
@@ -2,7 +2,7 @@
2
2
 
3
3
  import time
4
4
 
5
- import httpx
5
+ import httpx2 as httpx
6
6
 
7
7
 
8
8
  class TokenSource:
@@ -1,12 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: otdf-python
3
- Version: 0.5.0
3
+ Version: 0.7.3
4
4
  Summary: Unofficial OpenTDF SDK for Python
5
5
  Project-URL: Homepage, https://github.com/b-long/opentdf-python-sdk
6
6
  Project-URL: Repository, https://github.com/b-long/opentdf-python-sdk
7
7
  Project-URL: Issues, https://github.com/b-long/opentdf-python-sdk/issues
8
8
  Author-email: b-long <b-long@users.noreply.github.com>
9
- License-File: LICENSE
10
9
  Classifier: Development Status :: 4 - Beta
11
10
  Classifier: Intended Audience :: Developers
12
11
  Classifier: License :: OSI Approved :: MIT License
@@ -22,15 +21,12 @@ Classifier: Topic :: Security :: Cryptography
22
21
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
23
22
  Classifier: Typing :: Typed
24
23
  Requires-Python: >=3.10
25
- Requires-Dist: connect-python<0.7,>=0.6.0
24
+ Requires-Dist: connect-python>=0.9.0
26
25
  Requires-Dist: cryptography>=45.0.4
27
26
  Requires-Dist: grpcio-status>=1.74.0
28
- Requires-Dist: grpcio-tools>=1.74.0
29
27
  Requires-Dist: grpcio>=1.74.0
30
- Requires-Dist: httpx>=0.28.1
28
+ Requires-Dist: httpx2>=2.3.0
31
29
  Requires-Dist: protobuf>=6.31.1
32
- Requires-Dist: protoc-gen-connect-python<0.7,>=0.6.0
33
- Requires-Dist: protoc-gen-openapiv2>=0.0.1
34
30
  Requires-Dist: pyjwt>=2.10.1
35
31
  Requires-Dist: typing-extensions>=4.14.1
36
32
  Description-Content-Type: text/markdown
@@ -137,7 +133,7 @@ with open("decrypted.txt", "wb") as f:
137
133
  ## Project Structure
138
134
 
139
135
  ```
140
- src/otdf_python/
136
+ packages/otdf-python/src/otdf_python/
141
137
  ├── sdk.py # Main SDK interface
142
138
  ├── config.py # Configuration management
143
139
  ├── tdf.py # TDF format handling
@@ -4,7 +4,7 @@ otdf_python/address_normalizer.py,sha256=7gigfxFIFnDILi8BGQipuLl-Cr71pwi5vE72hbp
4
4
  otdf_python/aesgcm.py,sha256=jQgVSEeKM6MJuH2tvlClXIzvg11a5O_GEY9Sh56CrxE,1947
5
5
  otdf_python/assertion_config.py,sha256=rw0SIB3xG-nAeb5r_liuxLphU4tcj-zlq8rVvXncX-Y,2317
6
6
  otdf_python/asym_crypto.py,sha256=EYkMNhZJP5khH0IvICTOG2bMg_TMvd6wXDu5zW0jpj4,7234
7
- otdf_python/auth_headers.py,sha256=uOLflFunBCw59nwk23rdiFQWOFrS19HugQXuQPGv3xE,986
7
+ otdf_python/auth_headers.py,sha256=onS-fXsIZN4l33yQS9VspPvoiAnfM2B0nNAVL_YIGZ0,987
8
8
  otdf_python/autoconfigure_utils.py,sha256=W5aJ0tC7HWfGb_1Mva_oxgduUzSpPoyDeaq0rPwgPAs,3689
9
9
  otdf_python/cli.py,sha256=icooiGgRh8H1IlP-_iO7paLB60IXUSaSacODABeqrS4,21165
10
10
  otdf_python/collection_store.py,sha256=sYL6VMFDBfHfCCLk14iybeC_qoUlpJFB0wOMt1bdwpY,1429
@@ -21,29 +21,29 @@ otdf_python/eckeypair.py,sha256=qcPKv0OS1lYxRICj9dhAW_eMz32anFBtpI8EJfXxpX0,2470
21
21
  otdf_python/header.py,sha256=peG14kE_KAUCW4fY82sqcWF5zTAVAnJfFXCHtC8Z0iQ,7189
22
22
  otdf_python/invalid_zip_exception.py,sha256=M_bAiXEjJdxPfA178YH-uHGRwMrNBKzjQzlQ54aDP2w,292
23
23
  otdf_python/kas_allowlist.py,sha256=0yX3J9J1od_ew0sp3pX6kfav39pTz7aBBpMnVkE5T7s,5884
24
- otdf_python/kas_client.py,sha256=N5mQubRUrnJCtSxTiiyjf7DEfsg2wVZ02xufuZBH_b0,27532
25
- otdf_python/kas_connect_rpc_client.py,sha256=cB3cBomCClmu-InUpw8R35cLyJQ8X0PoEsFvYSH0RUM,8950
26
- otdf_python/kas_info.py,sha256=V-5om8k4RKbhE0h1CS1Rxb18TYcHKvq_hEPP6ah8K_o,738
24
+ otdf_python/kas_client.py,sha256=kcLpdkFDN3LVmlmSuaEm6EKtPsbOK5RCsClPdm8bpAU,27536
25
+ otdf_python/kas_connect_rpc_client.py,sha256=Y2w0SPh4QZxLLhneKky8N20jd9UQmShmAnLo_c9kOXk,9113
26
+ otdf_python/kas_info.py,sha256=R_zfW8m2n2PT1-Enk6NG5K8YIjWvb1g-PQ6M0bZX-o8,739
27
27
  otdf_python/kas_key_cache.py,sha256=6hfzRAg9o_IfRErWSe-_gGTG9kRyYENMizMY1Shkmfk,1548
28
28
  otdf_python/key_type.py,sha256=2gQlXOj35J3ISCcWjU3sGYUxmlZR47BMq6Xr2yoKA8k,928
29
- otdf_python/key_type_constants.py,sha256=MV2Dsea3A6nnnYztoD0N1QxhrbQXZfaXaqCr2rI6sqo,954
29
+ otdf_python/key_type_constants.py,sha256=0aqG1N1Ay0Z8o5fsq7fAiJXQeD6k-fxp06If__BGcR4,955
30
30
  otdf_python/manifest.py,sha256=aglGw9EdtZZIxmwqy82sV5wum_mKkjzew4brSgxmJjc,7047
31
31
  otdf_python/nanotdf.py,sha256=y1mLktlZ-mRCup2vzGY4ZbFeNEhWpCYLOZYjzTSPEtc,33921
32
- otdf_python/nanotdf_ecdsa_struct.py,sha256=jTQKFAicTfMfN9CxJZYQcnEYGmtfAQoDOhz8ta-pGAQ,4066
32
+ otdf_python/nanotdf_ecdsa_struct.py,sha256=C-qQnroJGO9yXrBb-p-rYMSxf2gS8kF6SCUvO-njAXU,4067
33
33
  otdf_python/nanotdf_type.py,sha256=3MQzT6lJ3WJKMICFyyYZXX2_cFYcZ5G4m1uif-l9Nxo,1112
34
- otdf_python/policy_binding_serializer.py,sha256=oOcGBYOISPTzHRtk8JszwLTraY_F2OoevOf0a53jGHA,1271
34
+ otdf_python/policy_binding_serializer.py,sha256=hA-M5BhEa3Q0bpjbpdiaJ6mivwx9UGDdmB8HvFG7SY0,1272
35
35
  otdf_python/policy_info.py,sha256=aq74dZg9PhTZ6cMkZyFsu3D754C5YijFMiuoYEL-1bY,2076
36
36
  otdf_python/policy_object.py,sha256=LikIsahPkKr-iYA0lhgQitCbh8CsmxUBYyBs6VYfmxY,512
37
37
  otdf_python/policy_stub.py,sha256=RfU_fICqsAOnTXOHpKhtKC0RJ3KoWhDxO0XecZWM548,159
38
38
  otdf_python/resource_locator.py,sha256=bjK935XcfNq-PyqidHNq8eIiPeZEStYdQvmQ9B9GY20,6290
39
- otdf_python/sdk.py,sha256=-3Zuyfvf8ZM6iqxFpFDRAxCSfe35r6-TIuOOGUbPNPM,15058
40
- otdf_python/sdk_builder.py,sha256=xTPoBjB3eGwoWjfSgiPmiNnEZJ8g-LUQVZDmo7BM9cY,17649
39
+ otdf_python/sdk.py,sha256=6yQbaHS6EUqiEOEn2hI3Ox4OYlYQHDuxjqHjYo8LV5A,15060
40
+ otdf_python/sdk_builder.py,sha256=N57HrXADKLSP3bGiltYV058DxgrJyMzhsKuqNuKBqqo,17659
41
41
  otdf_python/sdk_exceptions.py,sha256=2GElGyM5LKN8Uh_lAiT6Ho4oNRWYRQsMNOK5s2jiv28,687
42
42
  otdf_python/symmetric_and_payload_config.py,sha256=iPHeZSeY9BjsQ-wkvdm6-FIR7773EgGiaIvSG-ICOHw,1158
43
43
  otdf_python/tdf.py,sha256=lqaSSGfd-nzlmjpYoXa6ZLihZIJA170dwodKt_iRko8,20799
44
- otdf_python/tdf_reader.py,sha256=WMetzX4CIKJ15f4J_zyFGtObQO6bQ33KC_ykIonH9ik,5228
44
+ otdf_python/tdf_reader.py,sha256=f-LCb_Z4TwaByT8_gu-cpJIdW8lk3741jCAd-fJOLJg,5229
45
45
  otdf_python/tdf_writer.py,sha256=FLm1P26J4p6WPyKsjOb7QLYJqDIMDsBONqBW_JuFxyw,798
46
- otdf_python/token_source.py,sha256=YHbP7deSSXo1CvzVGJX7DkOuBgqwfP_Ockm8CE-MN0o,1011
46
+ otdf_python/token_source.py,sha256=Ow4bZqPqVxbZx64M7pLxQarVlPfiz15ZvZr9H17_ZMY,1021
47
47
  otdf_python/version.py,sha256=uDKJKsSQoaEH-JlqAwiXDxceLRX9hkG4I3NVLEfDCHA,2025
48
48
  otdf_python/zip_reader.py,sha256=qrHv-ecs09tz99ZKdOMiWaciYf2XsQOUTiXy1JHjuEY,1705
49
49
  otdf_python/zip_writer.py,sha256=5-KChgEXCf4TKAAML-R8cqpAiap85ur1l2lJCCac6BE,2405
@@ -54,11 +54,11 @@ otdf_python_proto/authorization/authorization_pb2.py,sha256=VxRCF1popd01Po0uC-H3
54
54
  otdf_python_proto/authorization/authorization_pb2.pyi,sha256=43mV-jbbgxjvzuKkJE-tcLg4JrqtqoQwB5WT9k4j3Ew,8927
55
55
  otdf_python_proto/authorization/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
56
  otdf_python_proto/authorization/v2/authorization_connect.py,sha256=K5yRvu3JfA9ljtbTsXJ3KMx9GAUypLpqiI8IPPgiIZs,16310
57
- otdf_python_proto/authorization/v2/authorization_pb2.py,sha256=zpJhqIlSXlaXuse7d9y6c9JgYBdvtZ5SLHpwhQo7XKc,13561
58
- otdf_python_proto/authorization/v2/authorization_pb2.pyi,sha256=0azk9XIOxBU5u0b8_PnHnfaGM13tQPBgN4i42oRSI2Q,7497
57
+ otdf_python_proto/authorization/v2/authorization_pb2.py,sha256=Gg4MzDwG_yPzN_PQ77sjAIwp3LpvvDFSr42Y-OSoDFM,15788
58
+ otdf_python_proto/authorization/v2/authorization_pb2.pyi,sha256=-NZ3-nq9YKMF-xzMmFgvbvdZL75XohrHngEaFfN9xFc,8370
59
59
  otdf_python_proto/common/__init__.py,sha256=cJlVANj7I0xoLUerst-2su60AFtywyrFHPOIKIzS65Q,35
60
- otdf_python_proto/common/common_pb2.py,sha256=F2Ap8Lf-LJGnk_-BsrAfoidYtkkTsc24OvZgikBigDs,3599
61
- otdf_python_proto/common/common_pb2.pyi,sha256=iitFFATcqvxfhdgAGlPFmYeyHeLSyBKKzvSNgm8kioM,2860
60
+ otdf_python_proto/common/common_pb2.py,sha256=s8OkQ7bbEr6oSb-apDi30n9xxsPLkdF9xOHVUWLEFI0,5981
61
+ otdf_python_proto/common/common_pb2.pyi,sha256=m6yv5IKl6PXhv0mUGeTgXdmm-wEOwRKpiW-qaW76Y3I,3438
62
62
  otdf_python_proto/entity/__init__.py,sha256=Q5bx_n1hD8DQR8f78iflJzw90RJZLeIj--Q6YaHqJ_4,35
63
63
  otdf_python_proto/entity/entity_pb2.py,sha256=LpdkNpqn-L808SfYI6JWATfmud_9oYRpHbnX02qXQB8,3178
64
64
  otdf_python_proto/entity/entity_pb2.pyi,sha256=vkQau-BYeQvGV_Sr0YqqPDgiLuecErOey_Dn0zpHTN4,2423
@@ -68,8 +68,8 @@ otdf_python_proto/entityresolution/entity_resolution_pb2.py,sha256=XrPNnZ7GvHE0w
68
68
  otdf_python_proto/entityresolution/entity_resolution_pb2.pyi,sha256=Yn8snkOsfkYPb4CngTMJcTe75RdOJUT_Yo4rk-mMTaM,3001
69
69
  otdf_python_proto/entityresolution/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
70
70
  otdf_python_proto/entityresolution/v2/entity_resolution_connect.py,sha256=VCu9jytqWuF__a08LX5iIo_kFbJEbXfkYsuAu_xoaik,9948
71
- otdf_python_proto/entityresolution/v2/entity_resolution_pb2.py,sha256=G_CHQ76xCYAV6hfY1-tbncOCu7FqtdLH2FzOwO0vlvM,4680
72
- otdf_python_proto/entityresolution/v2/entity_resolution_pb2.pyi,sha256=wRcDT1bcKvyjMgPi8-MrQYLUDEaWjy2MY0YbsxF3Gjo,2942
71
+ otdf_python_proto/entityresolution/v2/entity_resolution_pb2.py,sha256=YRjPYa8FK5owNPohUSyBAKWUFPm5eCRYmCzU1boK5Kw,5310
72
+ otdf_python_proto/entityresolution/v2/entity_resolution_pb2.pyi,sha256=G7Tv8hlCsWQfZxd7BWC2pHD96vIIw1Tbh4j--N7a9Hg,3888
73
73
  otdf_python_proto/kas/__init__.py,sha256=k72BA06RTfm0yGAL-H6dDkQFBUiZJXT3RHnIQIRpwhs,220
74
74
  otdf_python_proto/kas/kas_connect.py,sha256=UWAmnW2xQBfiv-8TKSDQHkjerWkBIxcabpM7fcwaElU,10857
75
75
  otdf_python_proto/kas/kas_pb2.py,sha256=FuWeaQYjICzKFmovm1sqdAPCcDn-tariNUs4CHHNUV8,11431
@@ -98,15 +98,15 @@ otdf_python_proto/legacy_grpc/policy/selectors_pb2_grpc.py,sha256=1oboBPFxaTEXt9
98
98
  otdf_python_proto/legacy_grpc/policy/actions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
99
99
  otdf_python_proto/legacy_grpc/policy/actions/actions_pb2_grpc.py,sha256=cwsrUzJrypSl4NaImV9FzM8TIy8u8kpj-r_M1beI8_8,10380
100
100
  otdf_python_proto/legacy_grpc/policy/attributes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
101
- otdf_python_proto/legacy_grpc/policy/attributes/attributes_pb2_grpc.py,sha256=1c1v8No6eqkgYGuoU6im5OVQbcdW9MV4m36pAQhABEQ,40356
101
+ otdf_python_proto/legacy_grpc/policy/attributes/attributes_pb2_grpc.py,sha256=L34_6Zf2QDBcylGdLpHzWEZ3dN5Lfoag3Mwt8jh6nqg,40405
102
102
  otdf_python_proto/legacy_grpc/policy/kasregistry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
103
103
  otdf_python_proto/legacy_grpc/policy/kasregistry/key_access_server_registry_pb2_grpc.py,sha256=VYUxb0IY7K0K1TTgwd1QsHEnsMVLbOGxLi1t_je13WY,30624
104
104
  otdf_python_proto/legacy_grpc/policy/keymanagement/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
105
  otdf_python_proto/legacy_grpc/policy/keymanagement/key_management_pb2_grpc.py,sha256=LynB9ChgzqaLUw1NGVk0ONdRIeEA7WT44-yv64sxMg0,11526
106
106
  otdf_python_proto/legacy_grpc/policy/namespaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
107
- otdf_python_proto/legacy_grpc/policy/namespaces/namespaces_pb2_grpc.py,sha256=SPdWNt23Kty6z0NIIDvfBq7ACedGQAaQzBlqQ8gFwr4,19665
107
+ otdf_python_proto/legacy_grpc/policy/namespaces/namespaces_pb2_grpc.py,sha256=LTcfSvhemM3aqtHuzHAYCcRY3uRGhraqk4syjNM61-8,23982
108
108
  otdf_python_proto/legacy_grpc/policy/obligations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
109
- otdf_python_proto/legacy_grpc/policy/obligations/obligations_pb2_grpc.py,sha256=oK2qf4IbVsngHrUAQMmjXY4ZPqlVgGRC2B9gnqWQ5Fk,28787
109
+ otdf_python_proto/legacy_grpc/policy/obligations/obligations_pb2_grpc.py,sha256=IVg7kcdQpYTNCOx2GWGpawd-CZ5ze7q5UkSFo9sWxnE,30831
110
110
  otdf_python_proto/legacy_grpc/policy/registeredresources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
111
111
  otdf_python_proto/legacy_grpc/policy/registeredresources/registered_resources_pb2_grpc.py,sha256=Bz6kkWw_exluCLkn8JqQ5drDS_Cu_v0ostNQJ_7yVCI,26156
112
112
  otdf_python_proto/legacy_grpc/policy/resourcemapping/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -122,8 +122,8 @@ otdf_python_proto/logger/audit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5
122
122
  otdf_python_proto/logger/audit/test_pb2.py,sha256=FbhQNp-ENPvhFlYtGqPaq9aaFLxXn_NaxOO0PJzvFzI,3028
123
123
  otdf_python_proto/logger/audit/test_pb2.pyi,sha256=uqHbuyrpKspEObm4F3edJthw2IZSdojaoBalXEQgA1U,2346
124
124
  otdf_python_proto/policy/__init__.py,sha256=yrbwH5e3KjoqN4PSnFcOfC4xV9YuvzPa8OxDlGoOfkk,35
125
- otdf_python_proto/policy/objects_pb2.py,sha256=5tyXq0l-X8Iw8MS6m4KE2h97OHdWp6kvJ1TxOHxUjDU,23915
126
- otdf_python_proto/policy/objects_pb2.pyi,sha256=trXzTPsMbe7sBxh1qXAU4kS_-CK0WMNzTsJI01E8D-0,26621
125
+ otdf_python_proto/policy/objects_pb2.py,sha256=YVYoYZCwOGT12jD-k_7FtPbwVgBCKdbKXDMDxtLffYg,25661
126
+ otdf_python_proto/policy/objects_pb2.pyi,sha256=UiSRv4sqbFlf-K6pg_aUNNF-nc_d5E7998YWSa09J8I,28831
127
127
  otdf_python_proto/policy/selectors_pb2.py,sha256=uqgIS0DtfOYDqzJ6WNq9D9aLa-RnTpN9a5o7YGMF7xM,5301
128
128
  otdf_python_proto/policy/selectors_pb2.pyi,sha256=FdC8ZLkgBBspwdjA1JlaeSgPo3R2qUIDws-9vNRXAUs,5162
129
129
  otdf_python_proto/policy/actions/__init__.py,sha256=GPRrOk6_i6Jgj9PrWX8tCdqYoVKdJJp7ucu1XtY3iFU,208
@@ -132,24 +132,24 @@ otdf_python_proto/policy/actions/actions_pb2.py,sha256=QRcrBnuu1iDWjVQLl0dWHCwuO
132
132
  otdf_python_proto/policy/actions/actions_pb2.pyi,sha256=ZBgv2xtG4PW7vXUJkzbfvMPaKUmztVw6_FG5iN0Ph-I,4298
133
133
  otdf_python_proto/policy/attributes/__init__.py,sha256=3lHYfbXDGAuuhfSwb1YJfVJJWPvTtcoshyhLOi_hIr0,226
134
134
  otdf_python_proto/policy/attributes/attributes_connect.py,sha256=r-_r5pqiFr_CCQ05UnzbEcYld2KOY4nY5q0s2cYxnp4,72451
135
- otdf_python_proto/policy/attributes/attributes_pb2.py,sha256=wnK1qsuOVOePneFfDGtBDxiyvP9S8XA48mMTexybYBE,33029
136
- otdf_python_proto/policy/attributes/attributes_pb2.pyi,sha256=lpxvoxiRhSn1LEupx1fOcBc6pOdWcrTXAx_boHvGFZY,16259
135
+ otdf_python_proto/policy/attributes/attributes_pb2.py,sha256=NeNrGoczqJU5HkchqN1UxqTCf74qcOppX3lI6aEVjOM,33195
136
+ otdf_python_proto/policy/attributes/attributes_pb2.pyi,sha256=4zDHlJU-gFEI3MGgCzGSc2d6RJAy2Ric1vlNggxAt9o,16310
137
137
  otdf_python_proto/policy/kasregistry/__init__.py,sha256=zj_8G65KIhOSiOeMkyMEZFomWYkfD9E5aWASgwV4n3M,295
138
138
  otdf_python_proto/policy/kasregistry/key_access_server_registry_connect.py,sha256=EEU9fDmKiTFyAmYBTtnWfogc5y9iKNNrwMgH5Dd0bgg,56582
139
- otdf_python_proto/policy/kasregistry/key_access_server_registry_pb2.py,sha256=deNmAhWSwG7o5geVnAp903iL4n0KFByHU-osiE9DaHE,48012
140
- otdf_python_proto/policy/kasregistry/key_access_server_registry_pb2.pyi,sha256=rGwP30SozAskwtoygnTPjpJwViSTUo9pqq5A6HLYzks,26269
139
+ otdf_python_proto/policy/kasregistry/key_access_server_registry_pb2.py,sha256=pvHrXoZpefXcr1J8i-i_TfYSXwF1s-Tvnrol6T7rFtw,48143
140
+ otdf_python_proto/policy/kasregistry/key_access_server_registry_pb2.pyi,sha256=FbScLy3_kKzuQ2DvMxNQmmpUeokBWAylUAMbrbYbH9Y,26443
141
141
  otdf_python_proto/policy/keymanagement/__init__.py,sha256=baBSBdjBbaErAIjjn0GxUPfYYRq7R4MfsrvpK02uews,245
142
142
  otdf_python_proto/policy/keymanagement/key_management_connect.py,sha256=-e1fc4S3-xJ_Tdy9T0JMMTXIFhMeN7qx0sls-gMUjeM,20883
143
- otdf_python_proto/policy/keymanagement/key_management_pb2.py,sha256=MVAJKkR_B2nqN9jqWg7JLWByKFFfoi4unj1hbToByCE,8129
144
- otdf_python_proto/policy/keymanagement/key_management_pb2.pyi,sha256=9HoPHqEKIO8jhx9TpkwFJWSHiInpkq04LiNPUCYeDU4,4381
143
+ otdf_python_proto/policy/keymanagement/key_management_pb2.py,sha256=d0JVCBB8Vrm4O7oRFpmi0v9QhRFQ_fq84zrAMYYTrX0,8970
144
+ otdf_python_proto/policy/keymanagement/key_management_pb2.pyi,sha256=IISqg5QnUjY9xV53vDxLr66yMJqMRyYZkmosHkDoNLY,4681
145
145
  otdf_python_proto/policy/namespaces/__init__.py,sha256=JIdic8yq55x9BrQzaJtgEp3J7AcnOZ1c0eiTXd2iDpw,222
146
- otdf_python_proto/policy/namespaces/namespaces_connect.py,sha256=gJmN8r8bCDX9KTyEJc7X5RnvgxPiANfRvTTFNom06wk,35163
147
- otdf_python_proto/policy/namespaces/namespaces_pb2.py,sha256=NTdUbii-WF0VNiVvM29ZmAni7W4dgmNkOGq2ytP31pk,15222
148
- otdf_python_proto/policy/namespaces/namespaces_pb2.pyi,sha256=plOpaSBszfi7p71XKZvTg1e1nJUhvoz1wrcYDX9cByQ,7148
146
+ otdf_python_proto/policy/namespaces/namespaces_connect.py,sha256=WZf3BHnKeKf8RZCagdwWURZZI8-rSjh29XABHOm0Lxg,42849
147
+ otdf_python_proto/policy/namespaces/namespaces_pb2.py,sha256=ERUnB1hbQjRibY9qD7ErcyPbZnUGRzPqda1BzVxxEZ0,18979
148
+ otdf_python_proto/policy/namespaces/namespaces_pb2.pyi,sha256=XL2dDSWhXjLwaNVOocUH22i9NdZ1-gqzEtXW2gBkiXs,9246
149
149
  otdf_python_proto/policy/obligations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
150
- otdf_python_proto/policy/obligations/obligations_connect.py,sha256=KLUichI7H8aLPTeePSvAeECK3QRats4iqqO8Rm6DuM4,48793
151
- otdf_python_proto/policy/obligations/obligations_pb2.py,sha256=kAkzx4hJQkc5RXPbt2OI2DpSPo_B2BaxS89pGbQ-RHI,13727
152
- otdf_python_proto/policy/obligations/obligations_pb2.pyi,sha256=rSuJddzYA3yL6wX_DQ3tSdKGHg42WqSuxk49K9cUrz4,10453
150
+ otdf_python_proto/policy/obligations/obligations_connect.py,sha256=8LeepPcrMfBPof4HpA9dyavoaNsVLRCot9QsTt50BA4,52570
151
+ otdf_python_proto/policy/obligations/obligations_pb2.py,sha256=zxEPfuwTBOIITzv3XsLn8J8Wmh830tQzwCj5hNRPUJ8,27896
152
+ otdf_python_proto/policy/obligations/obligations_pb2.pyi,sha256=8paTIMqozoRhrn9Tgg35ddQKUoVvkLyN6qo7xWxyXnc,13331
153
153
  otdf_python_proto/policy/registeredresources/__init__.py,sha256=U6A5CRMFUhwjxOdxaRpgfIBx9bJZ7KcnBNKPQouSaeI,281
154
154
  otdf_python_proto/policy/registeredresources/registered_resources_connect.py,sha256=FVJPkbH7vO_oUiJRW6qW2nkJhmomO_9YQ1yDCEYYhQ8,48569
155
155
  otdf_python_proto/policy/registeredresources/registered_resources_pb2.py,sha256=5pb4vm0SEOG-U8FORKa9Z1Fe2tbgcWEEJworZE_LS00,23112
@@ -164,13 +164,12 @@ otdf_python_proto/policy/subjectmapping/subject_mapping_pb2.py,sha256=iNZp_sHDLX
164
164
  otdf_python_proto/policy/subjectmapping/subject_mapping_pb2.pyi,sha256=kPkRm8xw3KiEu9LiUmKCbouHVryeEFWyk19Eo6L6rus,10903
165
165
  otdf_python_proto/policy/unsafe/__init__.py,sha256=1TYTtYZyHxNQ2HaMCONHJ1U9dZDp3ZoZv19wZ78NhBI,202
166
166
  otdf_python_proto/policy/unsafe/unsafe_connect.py,sha256=f-WA7NClXBfxs9wkdSVKUf7LwvK5WfDGkNsqboZ2k2g,37202
167
- otdf_python_proto/policy/unsafe/unsafe_pb2.py,sha256=9Qp5xNjaxYtWat1wiZ39VtOkecGNFTR5y0RazhdDXPo,15477
168
- otdf_python_proto/policy/unsafe/unsafe_pb2.pyi,sha256=GvEzEsbSCVyGlgKSMJeIO7vv4AoMiotNeFkHil_j-I8,6068
167
+ otdf_python_proto/policy/unsafe/unsafe_pb2.py,sha256=MiO5LlGcHP3E9r0lRyL4XdUZWnXc6Qc5TyQFLXkY0CU,15704
168
+ otdf_python_proto/policy/unsafe/unsafe_pb2.pyi,sha256=bV97-o-rFYEaXsFRpBL_R_wQMZj2_xInOYjCTPf5MXo,6316
169
169
  otdf_python_proto/wellknownconfiguration/__init__.py,sha256=xK8XUrwCL9elWuMTx6vVgWdWdcACugoF0b5OYsFclj4,240
170
170
  otdf_python_proto/wellknownconfiguration/wellknown_configuration_connect.py,sha256=wnfZ7K9vAB_Rub25KrdnKIfx5Yxq8yCc8c6zHjBtFH8,6358
171
171
  otdf_python_proto/wellknownconfiguration/wellknown_configuration_pb2.py,sha256=g9xSm9TxX0IPMqiFCaridJvI2TrL8PrXVFPgu8tX9VM,3863
172
172
  otdf_python_proto/wellknownconfiguration/wellknown_configuration_pb2.pyi,sha256=Zw4vROvTgomnFqsalJrYda632ojXH0FVXSzTXxerybw,1490
173
- otdf_python-0.5.0.dist-info/METADATA,sha256=IHabFJEAxTGVxuCzqZpESHKDZx9qa-nmTWc-SV1WoQ4,5175
174
- otdf_python-0.5.0.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
175
- otdf_python-0.5.0.dist-info/licenses/LICENSE,sha256=DPrPHdI6tfZcqk9kzQ37vh1Ftk7LJYdMrUtwKl7L3Pw,1074
176
- otdf_python-0.5.0.dist-info/RECORD,,
173
+ otdf_python-0.7.3.dist-info/METADATA,sha256=sg8YiLbazn2CqAfjLSApxd6P3UsjGEswjHr4FTcJDd8,5037
174
+ otdf_python-0.7.3.dist-info/WHEEL,sha256=mffPy8wBnZQn2VnJUU5jE99KsxaSfiyMHV9Yt0aLVxs,87
175
+ otdf_python-0.7.3.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.29.0
2
+ Generator: hatchling 1.30.1
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -28,7 +28,7 @@ from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb
28
28
  from policy import objects_pb2 as policy_dot_objects__pb2
29
29
 
30
30
 
31
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$authorization/v2/authorization.proto\x12\x10\x61uthorization.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x13\x65ntity/entity.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x14policy/objects.proto\"\xd9\x03\n\x10\x45ntityIdentifier\x12\xe1\x01\n\x0c\x65ntity_chain\x18\x01 \x01(\x0b\x32\x13.entity.EntityChainB\xa6\x01\xbaH\xa2\x01\xba\x01\x9e\x01\n\x15\x65ntity_chain_required\x12\x37\x65ntities must be provided and between 1 and 10 in count\x1aLhas(this.entities) && this.entities.size() > 0 && this.entities.size() <= 10H\x00R\x0b\x65ntityChain\x12O\n\x1dregistered_resource_value_fqn\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01H\x00R\x1aregisteredResourceValueFqn\x12{\n\x05token\x18\x03 \x01(\x0b\x32\r.entity.TokenBT\xbaHQ\xba\x01N\n\x0etoken_required\x12\x16token must be provided\x1a$has(this.jwt) && this.jwt.size() > 0H\x00R\x05tokenB\x13\n\nidentifier\x12\x05\xbaH\x02\x08\x01\"\x81\x03\n\x12\x45ntityEntitlements\x12!\n\x0c\x65phemeral_id\x18\x01 \x01(\tR\x0b\x65phemeralId\x12\x8b\x01\n\x1f\x61\x63tions_per_attribute_value_fqn\x18\x02 \x03(\x0b\x32\x45.authorization.v2.EntityEntitlements.ActionsPerAttributeValueFqnEntryR\x1b\x61\x63tionsPerAttributeValueFqn\x1a\x37\n\x0b\x41\x63tionsList\x12(\n\x07\x61\x63tions\x18\x01 \x03(\x0b\x32\x0e.policy.ActionR\x07\x61\x63tions\x1a\x80\x01\n ActionsPerAttributeValueFqnEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x46\n\x05value\x18\x02 \x01(\x0b\x32\x30.authorization.v2.EntityEntitlements.ActionsListR\x05value:\x02\x38\x01\"\xe4\x03\n\x08Resource\x12!\n\x0c\x65phemeral_id\x18\x01 \x01(\tR\x0b\x65phemeralId\x12\xb0\x02\n\x10\x61ttribute_values\x18\x02 \x01(\x0b\x32*.authorization.v2.Resource.AttributeValuesB\xd6\x01\xbaH\xd2\x01\xba\x01\xce\x01\n\x19\x61ttribute_values_required\x12\\if provided, resource.attribute_values must be between 1 and 20 in count with all valid FQNs\x1aSthis.fqns.size() > 0 && this.fqns.size() <= 20 && this.fqns.all(item, item.isUri())H\x00R\x0f\x61ttributeValues\x12O\n\x1dregistered_resource_value_fqn\x18\x03 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01H\x00R\x1aregisteredResourceValueFqn\x1a%\n\x0f\x41ttributeValues\x12\x12\n\x04\x66qns\x18\x01 \x03(\tR\x04\x66qnsB\n\n\x08resource\"~\n\x10ResourceDecision\x12\x32\n\x15\x65phemeral_resource_id\x18\x01 \x01(\tR\x13\x65phemeralResourceId\x12\x36\n\x08\x64\x65\x63ision\x18\x02 \x01(\x0e\x32\x1a.authorization.v2.DecisionR\x08\x64\x65\x63ision\"\xc4\x02\n\x12GetDecisionRequest\x12W\n\x11\x65ntity_identifier\x18\x01 \x01(\x0b\x32\".authorization.v2.EntityIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x10\x65ntityIdentifier\x12.\n\x06\x61\x63tion\x18\x02 \x01(\x0b\x32\x0e.policy.ActionB\x06\xbaH\x03\xc8\x01\x01R\x06\x61\x63tion\x12>\n\x08resource\x18\x03 \x01(\x0b\x32\x1a.authorization.v2.ResourceB\x06\xbaH\x03\xc8\x01\x01R\x08resource:e\xbaHb\x1a`\n)get_decision_request.action_name_required\x12\x1c\x61\x63tion.name must be provided\x1a\x15has(this.action.name)\"U\n\x13GetDecisionResponse\x12>\n\x08\x64\x65\x63ision\x18\x01 \x01(\x0b\x32\".authorization.v2.ResourceDecisionR\x08\x64\x65\x63ision\"\xde\x02\n\x1fGetDecisionMultiResourceRequest\x12W\n\x11\x65ntity_identifier\x18\x01 \x01(\x0b\x32\".authorization.v2.EntityIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x10\x65ntityIdentifier\x12.\n\x06\x61\x63tion\x18\x02 \x01(\x0b\x32\x0e.policy.ActionB\x06\xbaH\x03\xc8\x01\x01R\x06\x61\x63tion\x12\x45\n\tresources\x18\x03 \x03(\x0b\x32\x1a.authorization.v2.ResourceB\x0b\xbaH\x08\x92\x01\x05\x08\x01\x10\xe8\x07R\tresources:k\xbaHh\x1a\x66\n/get_decision_multi_request.action_name_required\x12\x1c\x61\x63tion.name must be provided\x1a\x15has(this.action.name)\"\xb6\x01\n GetDecisionMultiResourceResponse\x12?\n\rall_permitted\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x0c\x61llPermitted\x12Q\n\x12resource_decisions\x18\x02 \x03(\x0b\x32\".authorization.v2.ResourceDecisionR\x11resourceDecisions\"\x85\x01\n\x16GetDecisionBulkRequest\x12k\n\x11\x64\x65\x63ision_requests\x18\x01 \x03(\x0b\x32\x31.authorization.v2.GetDecisionMultiResourceRequestB\x0b\xbaH\x08\x92\x01\x05\x08\x01\x10\xc8\x01R\x10\x64\x65\x63isionRequests\"|\n\x17GetDecisionBulkResponse\x12\x61\n\x12\x64\x65\x63ision_responses\x18\x01 \x03(\x0b\x32\x32.authorization.v2.GetDecisionMultiResourceResponseR\x11\x64\x65\x63isionResponses\"\xd9\x01\n\x16GetEntitlementsRequest\x12W\n\x11\x65ntity_identifier\x18\x01 \x01(\x0b\x32\".authorization.v2.EntityIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x10\x65ntityIdentifier\x12\x45\n\x1cwith_comprehensive_hierarchy\x18\x02 \x01(\x08H\x00R\x1awithComprehensiveHierarchy\x88\x01\x01\x42\x1f\n\x1d_with_comprehensive_hierarchy\"c\n\x17GetEntitlementsResponse\x12H\n\x0c\x65ntitlements\x18\x01 \x03(\x0b\x32$.authorization.v2.EntityEntitlementsR\x0c\x65ntitlements*L\n\x08\x44\x65\x63ision\x12\x18\n\x14\x44\x45\x43ISION_UNSPECIFIED\x10\x00\x12\x11\n\rDECISION_DENY\x10\x01\x12\x13\n\x0f\x44\x45\x43ISION_PERMIT\x10\x02\x32\xce\x03\n\x14\x41uthorizationService\x12\\\n\x0bGetDecision\x12$.authorization.v2.GetDecisionRequest\x1a%.authorization.v2.GetDecisionResponse\"\x00\x12\x83\x01\n\x18GetDecisionMultiResource\x12\x31.authorization.v2.GetDecisionMultiResourceRequest\x1a\x32.authorization.v2.GetDecisionMultiResourceResponse\"\x00\x12h\n\x0fGetDecisionBulk\x12(.authorization.v2.GetDecisionBulkRequest\x1a).authorization.v2.GetDecisionBulkResponse\"\x00\x12h\n\x0fGetEntitlements\x12(.authorization.v2.GetEntitlementsRequest\x1a).authorization.v2.GetEntitlementsResponse\"\x00\x42\x8b\x01\n\x14\x63om.authorization.v2B\x12\x41uthorizationProtoP\x01\xa2\x02\x03\x41XX\xaa\x02\x10\x41uthorization.V2\xca\x02\x10\x41uthorization\\V2\xe2\x02\x1c\x41uthorization\\V2\\GPBMetadata\xea\x02\x11\x41uthorization::V2b\x06proto3')
31
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$authorization/v2/authorization.proto\x12\x10\x61uthorization.v2\x1a\x1b\x62uf/validate/validate.proto\x1a\x13\x65ntity/entity.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x14policy/objects.proto\"\x87\x05\n\x10\x45ntityIdentifier\x12\xe1\x01\n\x0c\x65ntity_chain\x18\x01 \x01(\x0b\x32\x13.entity.EntityChainB\xa6\x01\xbaH\xa2\x01\xba\x01\x9e\x01\n\x15\x65ntity_chain_required\x12\x37\x65ntities must be provided and between 1 and 10 in count\x1aLhas(this.entities) && this.entities.size() > 0 && this.entities.size() <= 10H\x00R\x0b\x65ntityChain\x12O\n\x1dregistered_resource_value_fqn\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01H\x00R\x1aregisteredResourceValueFqn\x12{\n\x05token\x18\x03 \x01(\x0b\x32\r.entity.TokenBT\xbaHQ\xba\x01N\n\x0etoken_required\x12\x16token must be provided\x1a$has(this.jwt) && this.jwt.size() > 0H\x00R\x05token\x12\xab\x01\n\x12with_request_token\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB_\xbaH\\\xba\x01Y\n\x1fwith_request_token_must_be_true\x12(with_request_token must be true when set\x1a\x0cthis == trueH\x00R\x10withRequestTokenB\x13\n\nidentifier\x12\x05\xbaH\x02\x08\x01\"\x81\x03\n\x12\x45ntityEntitlements\x12!\n\x0c\x65phemeral_id\x18\x01 \x01(\tR\x0b\x65phemeralId\x12\x8b\x01\n\x1f\x61\x63tions_per_attribute_value_fqn\x18\x02 \x03(\x0b\x32\x45.authorization.v2.EntityEntitlements.ActionsPerAttributeValueFqnEntryR\x1b\x61\x63tionsPerAttributeValueFqn\x1a\x37\n\x0b\x41\x63tionsList\x12(\n\x07\x61\x63tions\x18\x01 \x03(\x0b\x32\x0e.policy.ActionR\x07\x61\x63tions\x1a\x80\x01\n ActionsPerAttributeValueFqnEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x46\n\x05value\x18\x02 \x01(\x0b\x32\x30.authorization.v2.EntityEntitlements.ActionsListR\x05value:\x02\x38\x01\"\xe4\x03\n\x08Resource\x12!\n\x0c\x65phemeral_id\x18\x01 \x01(\tR\x0b\x65phemeralId\x12\xb0\x02\n\x10\x61ttribute_values\x18\x02 \x01(\x0b\x32*.authorization.v2.Resource.AttributeValuesB\xd6\x01\xbaH\xd2\x01\xba\x01\xce\x01\n\x19\x61ttribute_values_required\x12\\if provided, resource.attribute_values must be between 1 and 20 in count with all valid FQNs\x1aSthis.fqns.size() > 0 && this.fqns.size() <= 20 && this.fqns.all(item, item.isUri())H\x00R\x0f\x61ttributeValues\x12O\n\x1dregistered_resource_value_fqn\x18\x03 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01H\x00R\x1aregisteredResourceValueFqn\x1a%\n\x0f\x41ttributeValues\x12\x12\n\x04\x66qns\x18\x01 \x03(\tR\x04\x66qnsB\n\n\x08resource\"\xb1\x01\n\x10ResourceDecision\x12\x32\n\x15\x65phemeral_resource_id\x18\x01 \x01(\tR\x13\x65phemeralResourceId\x12\x36\n\x08\x64\x65\x63ision\x18\x02 \x01(\x0e\x32\x1a.authorization.v2.DecisionR\x08\x64\x65\x63ision\x12\x31\n\x14required_obligations\x18\x03 \x03(\tR\x13requiredObligations\"\xd6\x04\n\x12GetDecisionRequest\x12W\n\x11\x65ntity_identifier\x18\x01 \x01(\x0b\x32\".authorization.v2.EntityIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x10\x65ntityIdentifier\x12.\n\x06\x61\x63tion\x18\x02 \x01(\x0b\x32\x0e.policy.ActionB\x06\xbaH\x03\xc8\x01\x01R\x06\x61\x63tion\x12>\n\x08resource\x18\x03 \x01(\x0b\x32\x1a.authorization.v2.ResourceB\x06\xbaH\x03\xc8\x01\x01R\x08resource\x12\x8f\x02\n\x1b\x66ulfillable_obligation_fqns\x18\x04 \x03(\tB\xce\x01\xbaH\xca\x01\xba\x01\xc6\x01\n\x1bobligation_value_fqns_valid\x12^if provided, fulfillable_obligation_fqns must be between 1 and 50 in count with all valid FQNs\x1aGthis.size() == 0 || (this.size() <= 50 && this.all(item, item.isUri()))R\x19\x66ulfillableObligationFqns:e\xbaHb\x1a`\n)get_decision_request.action_name_required\x12\x1c\x61\x63tion.name must be provided\x1a\x15has(this.action.name)\"U\n\x13GetDecisionResponse\x12>\n\x08\x64\x65\x63ision\x18\x01 \x01(\x0b\x32\".authorization.v2.ResourceDecisionR\x08\x64\x65\x63ision\"\xf0\x04\n\x1fGetDecisionMultiResourceRequest\x12W\n\x11\x65ntity_identifier\x18\x01 \x01(\x0b\x32\".authorization.v2.EntityIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x10\x65ntityIdentifier\x12.\n\x06\x61\x63tion\x18\x02 \x01(\x0b\x32\x0e.policy.ActionB\x06\xbaH\x03\xc8\x01\x01R\x06\x61\x63tion\x12\x45\n\tresources\x18\x03 \x03(\x0b\x32\x1a.authorization.v2.ResourceB\x0b\xbaH\x08\x92\x01\x05\x08\x01\x10\xe8\x07R\tresources\x12\x8f\x02\n\x1b\x66ulfillable_obligation_fqns\x18\x04 \x03(\tB\xce\x01\xbaH\xca\x01\xba\x01\xc6\x01\n\x1bobligation_value_fqns_valid\x12^if provided, fulfillable_obligation_fqns must be between 1 and 50 in count with all valid FQNs\x1aGthis.size() == 0 || (this.size() <= 50 && this.all(item, item.isUri()))R\x19\x66ulfillableObligationFqns:k\xbaHh\x1a\x66\n/get_decision_multi_request.action_name_required\x12\x1c\x61\x63tion.name must be provided\x1a\x15has(this.action.name)\"\xb6\x01\n GetDecisionMultiResourceResponse\x12?\n\rall_permitted\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x0c\x61llPermitted\x12Q\n\x12resource_decisions\x18\x02 \x03(\x0b\x32\".authorization.v2.ResourceDecisionR\x11resourceDecisions\"\x85\x01\n\x16GetDecisionBulkRequest\x12k\n\x11\x64\x65\x63ision_requests\x18\x01 \x03(\x0b\x32\x31.authorization.v2.GetDecisionMultiResourceRequestB\x0b\xbaH\x08\x92\x01\x05\x08\x01\x10\xc8\x01R\x10\x64\x65\x63isionRequests\"|\n\x17GetDecisionBulkResponse\x12\x61\n\x12\x64\x65\x63ision_responses\x18\x01 \x03(\x0b\x32\x32.authorization.v2.GetDecisionMultiResourceResponseR\x11\x64\x65\x63isionResponses\"\xd9\x01\n\x16GetEntitlementsRequest\x12W\n\x11\x65ntity_identifier\x18\x01 \x01(\x0b\x32\".authorization.v2.EntityIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x10\x65ntityIdentifier\x12\x45\n\x1cwith_comprehensive_hierarchy\x18\x02 \x01(\x08H\x00R\x1awithComprehensiveHierarchy\x88\x01\x01\x42\x1f\n\x1d_with_comprehensive_hierarchy\"c\n\x17GetEntitlementsResponse\x12H\n\x0c\x65ntitlements\x18\x01 \x03(\x0b\x32$.authorization.v2.EntityEntitlementsR\x0c\x65ntitlements*L\n\x08\x44\x65\x63ision\x12\x18\n\x14\x44\x45\x43ISION_UNSPECIFIED\x10\x00\x12\x11\n\rDECISION_DENY\x10\x01\x12\x13\n\x0f\x44\x45\x43ISION_PERMIT\x10\x02\x32\xce\x03\n\x14\x41uthorizationService\x12\\\n\x0bGetDecision\x12$.authorization.v2.GetDecisionRequest\x1a%.authorization.v2.GetDecisionResponse\"\x00\x12\x83\x01\n\x18GetDecisionMultiResource\x12\x31.authorization.v2.GetDecisionMultiResourceRequest\x1a\x32.authorization.v2.GetDecisionMultiResourceResponse\"\x00\x12h\n\x0fGetDecisionBulk\x12(.authorization.v2.GetDecisionBulkRequest\x1a).authorization.v2.GetDecisionBulkResponse\"\x00\x12h\n\x0fGetEntitlements\x12(.authorization.v2.GetEntitlementsRequest\x1a).authorization.v2.GetEntitlementsResponse\"\x00\x42\x8b\x01\n\x14\x63om.authorization.v2B\x12\x41uthorizationProtoP\x01\xa2\x02\x03\x41XX\xaa\x02\x10\x41uthorization.V2\xca\x02\x10\x41uthorization\\V2\xe2\x02\x1c\x41uthorization\\V2\\GPBMetadata\xea\x02\x11\x41uthorization::V2b\x06proto3')
32
32
 
33
33
  _globals = globals()
34
34
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -44,6 +44,8 @@ if not _descriptor._USE_C_DESCRIPTORS:
44
44
  _globals['_ENTITYIDENTIFIER'].fields_by_name['registered_resource_value_fqn']._serialized_options = b'\272H\007r\005\020\001\210\001\001'
45
45
  _globals['_ENTITYIDENTIFIER'].fields_by_name['token']._loaded_options = None
46
46
  _globals['_ENTITYIDENTIFIER'].fields_by_name['token']._serialized_options = b'\272HQ\272\001N\n\016token_required\022\026token must be provided\032$has(this.jwt) && this.jwt.size() > 0'
47
+ _globals['_ENTITYIDENTIFIER'].fields_by_name['with_request_token']._loaded_options = None
48
+ _globals['_ENTITYIDENTIFIER'].fields_by_name['with_request_token']._serialized_options = b'\272H\\\272\001Y\n\037with_request_token_must_be_true\022(with_request_token must be true when set\032\014this == true'
47
49
  _globals['_ENTITYENTITLEMENTS_ACTIONSPERATTRIBUTEVALUEFQNENTRY']._loaded_options = None
48
50
  _globals['_ENTITYENTITLEMENTS_ACTIONSPERATTRIBUTEVALUEFQNENTRY']._serialized_options = b'8\001'
49
51
  _globals['_RESOURCE'].fields_by_name['attribute_values']._loaded_options = None
@@ -56,6 +58,8 @@ if not _descriptor._USE_C_DESCRIPTORS:
56
58
  _globals['_GETDECISIONREQUEST'].fields_by_name['action']._serialized_options = b'\272H\003\310\001\001'
57
59
  _globals['_GETDECISIONREQUEST'].fields_by_name['resource']._loaded_options = None
58
60
  _globals['_GETDECISIONREQUEST'].fields_by_name['resource']._serialized_options = b'\272H\003\310\001\001'
61
+ _globals['_GETDECISIONREQUEST'].fields_by_name['fulfillable_obligation_fqns']._loaded_options = None
62
+ _globals['_GETDECISIONREQUEST'].fields_by_name['fulfillable_obligation_fqns']._serialized_options = b'\272H\312\001\272\001\306\001\n\033obligation_value_fqns_valid\022^if provided, fulfillable_obligation_fqns must be between 1 and 50 in count with all valid FQNs\032Gthis.size() == 0 || (this.size() <= 50 && this.all(item, item.isUri()))'
59
63
  _globals['_GETDECISIONREQUEST']._loaded_options = None
60
64
  _globals['_GETDECISIONREQUEST']._serialized_options = b'\272Hb\032`\n)get_decision_request.action_name_required\022\034action.name must be provided\032\025has(this.action.name)'
61
65
  _globals['_GETDECISIONMULTIRESOURCEREQUEST'].fields_by_name['entity_identifier']._loaded_options = None
@@ -64,44 +68,46 @@ if not _descriptor._USE_C_DESCRIPTORS:
64
68
  _globals['_GETDECISIONMULTIRESOURCEREQUEST'].fields_by_name['action']._serialized_options = b'\272H\003\310\001\001'
65
69
  _globals['_GETDECISIONMULTIRESOURCEREQUEST'].fields_by_name['resources']._loaded_options = None
66
70
  _globals['_GETDECISIONMULTIRESOURCEREQUEST'].fields_by_name['resources']._serialized_options = b'\272H\010\222\001\005\010\001\020\350\007'
71
+ _globals['_GETDECISIONMULTIRESOURCEREQUEST'].fields_by_name['fulfillable_obligation_fqns']._loaded_options = None
72
+ _globals['_GETDECISIONMULTIRESOURCEREQUEST'].fields_by_name['fulfillable_obligation_fqns']._serialized_options = b'\272H\312\001\272\001\306\001\n\033obligation_value_fqns_valid\022^if provided, fulfillable_obligation_fqns must be between 1 and 50 in count with all valid FQNs\032Gthis.size() == 0 || (this.size() <= 50 && this.all(item, item.isUri()))'
67
73
  _globals['_GETDECISIONMULTIRESOURCEREQUEST']._loaded_options = None
68
74
  _globals['_GETDECISIONMULTIRESOURCEREQUEST']._serialized_options = b'\272Hh\032f\n/get_decision_multi_request.action_name_required\022\034action.name must be provided\032\025has(this.action.name)'
69
75
  _globals['_GETDECISIONBULKREQUEST'].fields_by_name['decision_requests']._loaded_options = None
70
76
  _globals['_GETDECISIONBULKREQUEST'].fields_by_name['decision_requests']._serialized_options = b'\272H\010\222\001\005\010\001\020\310\001'
71
77
  _globals['_GETENTITLEMENTSREQUEST'].fields_by_name['entity_identifier']._loaded_options = None
72
78
  _globals['_GETENTITLEMENTSREQUEST'].fields_by_name['entity_identifier']._serialized_options = b'\272H\003\310\001\001'
73
- _globals['_DECISION']._serialized_start=3176
74
- _globals['_DECISION']._serialized_end=3252
79
+ _globals['_DECISION']._serialized_start=3950
80
+ _globals['_DECISION']._serialized_end=4026
75
81
  _globals['_ENTITYIDENTIFIER']._serialized_start=163
76
- _globals['_ENTITYIDENTIFIER']._serialized_end=636
77
- _globals['_ENTITYENTITLEMENTS']._serialized_start=639
78
- _globals['_ENTITYENTITLEMENTS']._serialized_end=1024
79
- _globals['_ENTITYENTITLEMENTS_ACTIONSLIST']._serialized_start=838
80
- _globals['_ENTITYENTITLEMENTS_ACTIONSLIST']._serialized_end=893
81
- _globals['_ENTITYENTITLEMENTS_ACTIONSPERATTRIBUTEVALUEFQNENTRY']._serialized_start=896
82
- _globals['_ENTITYENTITLEMENTS_ACTIONSPERATTRIBUTEVALUEFQNENTRY']._serialized_end=1024
83
- _globals['_RESOURCE']._serialized_start=1027
84
- _globals['_RESOURCE']._serialized_end=1511
85
- _globals['_RESOURCE_ATTRIBUTEVALUES']._serialized_start=1462
86
- _globals['_RESOURCE_ATTRIBUTEVALUES']._serialized_end=1499
87
- _globals['_RESOURCEDECISION']._serialized_start=1513
88
- _globals['_RESOURCEDECISION']._serialized_end=1639
89
- _globals['_GETDECISIONREQUEST']._serialized_start=1642
90
- _globals['_GETDECISIONREQUEST']._serialized_end=1966
91
- _globals['_GETDECISIONRESPONSE']._serialized_start=1968
92
- _globals['_GETDECISIONRESPONSE']._serialized_end=2053
93
- _globals['_GETDECISIONMULTIRESOURCEREQUEST']._serialized_start=2056
94
- _globals['_GETDECISIONMULTIRESOURCEREQUEST']._serialized_end=2406
95
- _globals['_GETDECISIONMULTIRESOURCERESPONSE']._serialized_start=2409
96
- _globals['_GETDECISIONMULTIRESOURCERESPONSE']._serialized_end=2591
97
- _globals['_GETDECISIONBULKREQUEST']._serialized_start=2594
98
- _globals['_GETDECISIONBULKREQUEST']._serialized_end=2727
99
- _globals['_GETDECISIONBULKRESPONSE']._serialized_start=2729
100
- _globals['_GETDECISIONBULKRESPONSE']._serialized_end=2853
101
- _globals['_GETENTITLEMENTSREQUEST']._serialized_start=2856
102
- _globals['_GETENTITLEMENTSREQUEST']._serialized_end=3073
103
- _globals['_GETENTITLEMENTSRESPONSE']._serialized_start=3075
104
- _globals['_GETENTITLEMENTSRESPONSE']._serialized_end=3174
105
- _globals['_AUTHORIZATIONSERVICE']._serialized_start=3255
106
- _globals['_AUTHORIZATIONSERVICE']._serialized_end=3717
82
+ _globals['_ENTITYIDENTIFIER']._serialized_end=810
83
+ _globals['_ENTITYENTITLEMENTS']._serialized_start=813
84
+ _globals['_ENTITYENTITLEMENTS']._serialized_end=1198
85
+ _globals['_ENTITYENTITLEMENTS_ACTIONSLIST']._serialized_start=1012
86
+ _globals['_ENTITYENTITLEMENTS_ACTIONSLIST']._serialized_end=1067
87
+ _globals['_ENTITYENTITLEMENTS_ACTIONSPERATTRIBUTEVALUEFQNENTRY']._serialized_start=1070
88
+ _globals['_ENTITYENTITLEMENTS_ACTIONSPERATTRIBUTEVALUEFQNENTRY']._serialized_end=1198
89
+ _globals['_RESOURCE']._serialized_start=1201
90
+ _globals['_RESOURCE']._serialized_end=1685
91
+ _globals['_RESOURCE_ATTRIBUTEVALUES']._serialized_start=1636
92
+ _globals['_RESOURCE_ATTRIBUTEVALUES']._serialized_end=1673
93
+ _globals['_RESOURCEDECISION']._serialized_start=1688
94
+ _globals['_RESOURCEDECISION']._serialized_end=1865
95
+ _globals['_GETDECISIONREQUEST']._serialized_start=1868
96
+ _globals['_GETDECISIONREQUEST']._serialized_end=2466
97
+ _globals['_GETDECISIONRESPONSE']._serialized_start=2468
98
+ _globals['_GETDECISIONRESPONSE']._serialized_end=2553
99
+ _globals['_GETDECISIONMULTIRESOURCEREQUEST']._serialized_start=2556
100
+ _globals['_GETDECISIONMULTIRESOURCEREQUEST']._serialized_end=3180
101
+ _globals['_GETDECISIONMULTIRESOURCERESPONSE']._serialized_start=3183
102
+ _globals['_GETDECISIONMULTIRESOURCERESPONSE']._serialized_end=3365
103
+ _globals['_GETDECISIONBULKREQUEST']._serialized_start=3368
104
+ _globals['_GETDECISIONBULKREQUEST']._serialized_end=3501
105
+ _globals['_GETDECISIONBULKRESPONSE']._serialized_start=3503
106
+ _globals['_GETDECISIONBULKRESPONSE']._serialized_end=3627
107
+ _globals['_GETENTITLEMENTSREQUEST']._serialized_start=3630
108
+ _globals['_GETENTITLEMENTSREQUEST']._serialized_end=3847
109
+ _globals['_GETENTITLEMENTSRESPONSE']._serialized_start=3849
110
+ _globals['_GETENTITLEMENTSRESPONSE']._serialized_end=3948
111
+ _globals['_AUTHORIZATIONSERVICE']._serialized_start=4029
112
+ _globals['_AUTHORIZATIONSERVICE']._serialized_end=4491
107
113
  # @@protoc_insertion_point(module_scope)