otdf-python 0.4.4__py3-none-any.whl → 0.6.0__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 (61) hide show
  1. {otdf_python-0.4.4.dist-info → otdf_python-0.6.0.dist-info}/METADATA +1 -1
  2. {otdf_python-0.4.4.dist-info → otdf_python-0.6.0.dist-info}/RECORD +61 -32
  3. otdf_python_proto/__init__.py +52 -2
  4. otdf_python_proto/authorization/authorization_connect.py +1 -1
  5. otdf_python_proto/authorization/v2/__init__.py +0 -0
  6. otdf_python_proto/authorization/v2/authorization_pb2.py +45 -37
  7. otdf_python_proto/authorization/v2/authorization_pb2.pyi +16 -8
  8. otdf_python_proto/common/common_pb2.py +30 -13
  9. otdf_python_proto/common/common_pb2.pyi +17 -0
  10. otdf_python_proto/entityresolution/entity_resolution_connect.py +1 -1
  11. otdf_python_proto/entityresolution/v2/__init__.py +0 -0
  12. otdf_python_proto/entityresolution/v2/entity_resolution_pb2.py +18 -15
  13. otdf_python_proto/entityresolution/v2/entity_resolution_pb2.pyi +17 -4
  14. otdf_python_proto/kas/kas_connect.py +1 -1
  15. otdf_python_proto/legacy_grpc/authorization/__init__.py +0 -0
  16. otdf_python_proto/legacy_grpc/authorization/v2/__init__.py +0 -0
  17. otdf_python_proto/legacy_grpc/common/__init__.py +0 -0
  18. otdf_python_proto/legacy_grpc/entity/__init__.py +0 -0
  19. otdf_python_proto/legacy_grpc/entityresolution/__init__.py +0 -0
  20. otdf_python_proto/legacy_grpc/entityresolution/v2/__init__.py +0 -0
  21. otdf_python_proto/legacy_grpc/kas/__init__.py +0 -0
  22. otdf_python_proto/legacy_grpc/logger/__init__.py +0 -0
  23. otdf_python_proto/legacy_grpc/logger/audit/__init__.py +0 -0
  24. otdf_python_proto/legacy_grpc/policy/__init__.py +0 -0
  25. otdf_python_proto/legacy_grpc/policy/actions/__init__.py +0 -0
  26. otdf_python_proto/legacy_grpc/policy/attributes/__init__.py +0 -0
  27. otdf_python_proto/legacy_grpc/policy/attributes/attributes_pb2_grpc.py +8 -3
  28. otdf_python_proto/legacy_grpc/policy/kasregistry/__init__.py +0 -0
  29. otdf_python_proto/legacy_grpc/policy/kasregistry/key_access_server_registry_pb2_grpc.py +44 -0
  30. otdf_python_proto/legacy_grpc/policy/keymanagement/__init__.py +0 -0
  31. otdf_python_proto/legacy_grpc/policy/namespaces/__init__.py +0 -0
  32. otdf_python_proto/legacy_grpc/policy/namespaces/namespaces_pb2_grpc.py +91 -1
  33. otdf_python_proto/legacy_grpc/policy/obligations/__init__.py +0 -0
  34. otdf_python_proto/legacy_grpc/policy/obligations/obligations_pb2_grpc.py +723 -0
  35. otdf_python_proto/legacy_grpc/policy/registeredresources/__init__.py +0 -0
  36. otdf_python_proto/legacy_grpc/policy/resourcemapping/__init__.py +0 -0
  37. otdf_python_proto/legacy_grpc/policy/subjectmapping/__init__.py +0 -0
  38. otdf_python_proto/legacy_grpc/policy/unsafe/__init__.py +0 -0
  39. otdf_python_proto/legacy_grpc/wellknownconfiguration/__init__.py +0 -0
  40. otdf_python_proto/logger/audit/__init__.py +0 -0
  41. otdf_python_proto/policy/attributes/attributes_pb2.py +92 -91
  42. otdf_python_proto/policy/attributes/attributes_pb2.pyi +7 -6
  43. otdf_python_proto/policy/kasregistry/key_access_server_registry_connect.py +65 -0
  44. otdf_python_proto/policy/kasregistry/key_access_server_registry_pb2.py +53 -41
  45. otdf_python_proto/policy/kasregistry/key_access_server_registry_pb2.pyi +48 -4
  46. otdf_python_proto/policy/keymanagement/key_management_pb2.py +28 -22
  47. otdf_python_proto/policy/keymanagement/key_management_pb2.pyi +12 -6
  48. otdf_python_proto/policy/namespaces/namespaces_connect.py +130 -0
  49. otdf_python_proto/policy/namespaces/namespaces_pb2.py +42 -18
  50. otdf_python_proto/policy/namespaces/namespaces_pb2.pyi +38 -0
  51. otdf_python_proto/policy/objects_pb2.py +86 -70
  52. otdf_python_proto/policy/objects_pb2.pyi +90 -10
  53. otdf_python_proto/policy/obligations/__init__.py +0 -0
  54. otdf_python_proto/policy/obligations/obligations_connect.py +989 -0
  55. otdf_python_proto/policy/obligations/obligations_pb2.py +197 -0
  56. otdf_python_proto/policy/obligations/obligations_pb2.pyi +261 -0
  57. otdf_python_proto/policy/unsafe/unsafe_pb2.py +48 -43
  58. otdf_python_proto/policy/unsafe/unsafe_pb2.pyi +13 -6
  59. otdf_python_proto/wellknownconfiguration/wellknown_configuration_connect.py +1 -1
  60. {otdf_python-0.4.4.dist-info → otdf_python-0.6.0.dist-info}/WHEEL +0 -0
  61. {otdf_python-0.4.4.dist-info → otdf_python-0.6.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: otdf-python
3
- Version: 0.4.4
3
+ Version: 0.6.0
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
@@ -47,58 +47,83 @@ otdf_python/token_source.py,sha256=YHbP7deSSXo1CvzVGJX7DkOuBgqwfP_Ockm8CE-MN0o,1
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
50
- otdf_python_proto/__init__.py,sha256=nZXR7jFOxpw52PahIE5PzTm5xEmH01xphIq5PTH_Qhc,925
50
+ otdf_python_proto/__init__.py,sha256=dK3iYz7kos_DmjPzmboF1QkojrA0jFNFgmSEljgReR4,3211
51
51
  otdf_python_proto/authorization/__init__.py,sha256=PQ8pNK86JNhOg7rcvbOQzAx5nm0hdjQqj-xIwDD4izY,237
52
- otdf_python_proto/authorization/authorization_connect.py,sha256=Z4Xnz39cc9Dp74HBWc4uM-3aKRdSD0fcBoz2OCNbppw,12287
52
+ otdf_python_proto/authorization/authorization_connect.py,sha256=3qRlwHQj9VHJCePQrr1tNEVwgL0sMaFSEaRfwTGb_u0,12294
53
53
  otdf_python_proto/authorization/authorization_pb2.py,sha256=VxRCF1popd01Po0uC-H3Uz85Z6y39ICuzwjFuRWkDoE,9085
54
54
  otdf_python_proto/authorization/authorization_pb2.pyi,sha256=43mV-jbbgxjvzuKkJE-tcLg4JrqtqoQwB5WT9k4j3Ew,8927
55
+ otdf_python_proto/authorization/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
56
  otdf_python_proto/authorization/v2/authorization_connect.py,sha256=K5yRvu3JfA9ljtbTsXJ3KMx9GAUypLpqiI8IPPgiIZs,16310
56
- otdf_python_proto/authorization/v2/authorization_pb2.py,sha256=pz5GE1cBmcyWHCG3ba46_We-ywY7dx2oxZwHgvtJJtA,12998
57
- 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
58
59
  otdf_python_proto/common/__init__.py,sha256=cJlVANj7I0xoLUerst-2su60AFtywyrFHPOIKIzS65Q,35
59
- otdf_python_proto/common/common_pb2.py,sha256=F2Ap8Lf-LJGnk_-BsrAfoidYtkkTsc24OvZgikBigDs,3599
60
- 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
61
62
  otdf_python_proto/entity/__init__.py,sha256=Q5bx_n1hD8DQR8f78iflJzw90RJZLeIj--Q6YaHqJ_4,35
62
63
  otdf_python_proto/entity/entity_pb2.py,sha256=LpdkNpqn-L808SfYI6JWATfmud_9oYRpHbnX02qXQB8,3178
63
64
  otdf_python_proto/entity/entity_pb2.pyi,sha256=vkQau-BYeQvGV_Sr0YqqPDgiLuecErOey_Dn0zpHTN4,2423
64
65
  otdf_python_proto/entityresolution/__init__.py,sha256=ehWfHEQ42uXht7gxRIr4jlwGq-OcYZUDLqwyhDo9-oI,228
65
- otdf_python_proto/entityresolution/entity_resolution_connect.py,sha256=XniXuD9UVp44ZNt8DE7DEp4Y75sYjLYFvpikzN8uavU,9547
66
+ otdf_python_proto/entityresolution/entity_resolution_connect.py,sha256=Vd5O3y8AzBkQu1c6JbMQQgKaYqkaTb0WKdkPrWiibrg,9557
66
67
  otdf_python_proto/entityresolution/entity_resolution_pb2.py,sha256=XrPNnZ7GvHE0w0iHharpSte30l_DjhDlNE__mJigWTg,5032
67
68
  otdf_python_proto/entityresolution/entity_resolution_pb2.pyi,sha256=Yn8snkOsfkYPb4CngTMJcTe75RdOJUT_Yo4rk-mMTaM,3001
69
+ otdf_python_proto/entityresolution/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
68
70
  otdf_python_proto/entityresolution/v2/entity_resolution_connect.py,sha256=VCu9jytqWuF__a08LX5iIo_kFbJEbXfkYsuAu_xoaik,9948
69
- otdf_python_proto/entityresolution/v2/entity_resolution_pb2.py,sha256=G_CHQ76xCYAV6hfY1-tbncOCu7FqtdLH2FzOwO0vlvM,4680
70
- 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
71
73
  otdf_python_proto/kas/__init__.py,sha256=k72BA06RTfm0yGAL-H6dDkQFBUiZJXT3RHnIQIRpwhs,220
72
- otdf_python_proto/kas/kas_connect.py,sha256=aBPlxHUcB_XAPgLi4ElXyrefdnrrrYKFb_PbDw9Yg_w,10860
74
+ otdf_python_proto/kas/kas_connect.py,sha256=UWAmnW2xQBfiv-8TKSDQHkjerWkBIxcabpM7fcwaElU,10857
73
75
  otdf_python_proto/kas/kas_pb2.py,sha256=FuWeaQYjICzKFmovm1sqdAPCcDn-tariNUs4CHHNUV8,11431
74
76
  otdf_python_proto/kas/kas_pb2.pyi,sha256=w-S-AoFOZn3jn39iLyLFW4Sw4bKxr0GA8OSVF-SnR-s,8594
75
77
  otdf_python_proto/legacy_grpc/__init__.py,sha256=zpWWFl-aIfDdJqBnMFk6lDSzsKfZ4pjkp2LYxGE1S9c,40
78
+ otdf_python_proto/legacy_grpc/authorization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
79
  otdf_python_proto/legacy_grpc/authorization/authorization_pb2_grpc.py,sha256=Xn_jbL7EyOKolHp_0wxOqN3Eqm0eWjb4meB6X8xJPM0,6922
80
+ otdf_python_proto/legacy_grpc/authorization/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
81
  otdf_python_proto/legacy_grpc/authorization/v2/authorization_pb2_grpc.py,sha256=i6SlVNT3uRfKr11hIZGGwPmmCZag-28kUzJjj8h_Zy0,9109
82
+ otdf_python_proto/legacy_grpc/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
78
83
  otdf_python_proto/legacy_grpc/common/common_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
84
+ otdf_python_proto/legacy_grpc/entity/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
79
85
  otdf_python_proto/legacy_grpc/entity/entity_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
86
+ otdf_python_proto/legacy_grpc/entityresolution/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
87
  otdf_python_proto/legacy_grpc/entityresolution/entity_resolution_pb2_grpc.py,sha256=uU_nscm2_PmQ1lk1Y4e1Nzj1Vcp8ReYxe7l93JXCSiw,5261
88
+ otdf_python_proto/legacy_grpc/entityresolution/v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
81
89
  otdf_python_proto/legacy_grpc/entityresolution/v2/entity_resolution_pb2_grpc.py,sha256=HqYKJ3j5sJv8EAzdtZAfmrB1Fi4Xtrv-v3wud0JdieQ,5422
90
+ otdf_python_proto/legacy_grpc/kas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
91
  otdf_python_proto/legacy_grpc/kas/kas_pb2_grpc.py,sha256=zZpTeIk_EKPv1ds4kzo4L_otI0PDwpzO1o7qTqrOVTk,6422
92
+ otdf_python_proto/legacy_grpc/logger/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
93
+ otdf_python_proto/legacy_grpc/logger/audit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
83
94
  otdf_python_proto/legacy_grpc/logger/audit/test_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
95
+ otdf_python_proto/legacy_grpc/policy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
96
  otdf_python_proto/legacy_grpc/policy/objects_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
85
97
  otdf_python_proto/legacy_grpc/policy/selectors_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
98
+ otdf_python_proto/legacy_grpc/policy/actions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
99
  otdf_python_proto/legacy_grpc/policy/actions/actions_pb2_grpc.py,sha256=cwsrUzJrypSl4NaImV9FzM8TIy8u8kpj-r_M1beI8_8,10380
87
- otdf_python_proto/legacy_grpc/policy/attributes/attributes_pb2_grpc.py,sha256=1c1v8No6eqkgYGuoU6im5OVQbcdW9MV4m36pAQhABEQ,40356
88
- otdf_python_proto/legacy_grpc/policy/kasregistry/key_access_server_registry_pb2_grpc.py,sha256=ZNncnAVLfGe_oY8hK6MzZDD1ReiKJ-hgyuHpYalI1lo,28509
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=L34_6Zf2QDBcylGdLpHzWEZ3dN5Lfoag3Mwt8jh6nqg,40405
102
+ otdf_python_proto/legacy_grpc/policy/kasregistry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
103
+ otdf_python_proto/legacy_grpc/policy/kasregistry/key_access_server_registry_pb2_grpc.py,sha256=VYUxb0IY7K0K1TTgwd1QsHEnsMVLbOGxLi1t_je13WY,30624
104
+ otdf_python_proto/legacy_grpc/policy/keymanagement/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
89
105
  otdf_python_proto/legacy_grpc/policy/keymanagement/key_management_pb2_grpc.py,sha256=LynB9ChgzqaLUw1NGVk0ONdRIeEA7WT44-yv64sxMg0,11526
90
- otdf_python_proto/legacy_grpc/policy/namespaces/namespaces_pb2_grpc.py,sha256=SPdWNt23Kty6z0NIIDvfBq7ACedGQAaQzBlqQ8gFwr4,19665
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=LTcfSvhemM3aqtHuzHAYCcRY3uRGhraqk4syjNM61-8,23982
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=IVg7kcdQpYTNCOx2GWGpawd-CZ5ze7q5UkSFo9sWxnE,30831
110
+ otdf_python_proto/legacy_grpc/policy/registeredresources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
91
111
  otdf_python_proto/legacy_grpc/policy/registeredresources/registered_resources_pb2_grpc.py,sha256=Bz6kkWw_exluCLkn8JqQ5drDS_Cu_v0ostNQJ_7yVCI,26156
112
+ otdf_python_proto/legacy_grpc/policy/resourcemapping/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
92
113
  otdf_python_proto/legacy_grpc/policy/resourcemapping/resource_mapping_pb2_grpc.py,sha256=AZhmHCiR9yILQHR30sH1norFwy4oSU4TtnbjpCQQmuw,24868
114
+ otdf_python_proto/legacy_grpc/policy/subjectmapping/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
93
115
  otdf_python_proto/legacy_grpc/policy/subjectmapping/subject_mapping_pb2_grpc.py,sha256=GZgqhIieGaXqVVuMpD17JjmSsqyc3PzBXry514gvbP0,26820
116
+ otdf_python_proto/legacy_grpc/policy/unsafe/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
94
117
  otdf_python_proto/legacy_grpc/policy/unsafe/unsafe_pb2_grpc.py,sha256=OE4D6SySpinZAkaVlUIkqqYImDUQSbWFA6HZu7to-0I,21295
118
+ otdf_python_proto/legacy_grpc/wellknownconfiguration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
95
119
  otdf_python_proto/legacy_grpc/wellknownconfiguration/wellknown_configuration_pb2_grpc.py,sha256=dCFsCFxcDzT9RZ2M09pX-zu4qZazu_1UGSNJjS7JhzU,3348
96
120
  otdf_python_proto/logger/__init__.py,sha256=gMDNk1OB1THsKqwevYeQERG-DCJ-PspkYdo9jnqLyas,35
121
+ otdf_python_proto/logger/audit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
97
122
  otdf_python_proto/logger/audit/test_pb2.py,sha256=FbhQNp-ENPvhFlYtGqPaq9aaFLxXn_NaxOO0PJzvFzI,3028
98
123
  otdf_python_proto/logger/audit/test_pb2.pyi,sha256=uqHbuyrpKspEObm4F3edJthw2IZSdojaoBalXEQgA1U,2346
99
124
  otdf_python_proto/policy/__init__.py,sha256=yrbwH5e3KjoqN4PSnFcOfC4xV9YuvzPa8OxDlGoOfkk,35
100
- otdf_python_proto/policy/objects_pb2.py,sha256=4izyxIYyD_9q6Bj3hff5cfjgvYIGW6ewZpsQ_MZE26E,22589
101
- otdf_python_proto/policy/objects_pb2.pyi,sha256=nuK89_2Z1R6I1xE0EokL2lUdEIEuzVFne0IqykpC7uI,24523
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
102
127
  otdf_python_proto/policy/selectors_pb2.py,sha256=uqgIS0DtfOYDqzJ6WNq9D9aLa-RnTpN9a5o7YGMF7xM,5301
103
128
  otdf_python_proto/policy/selectors_pb2.pyi,sha256=FdC8ZLkgBBspwdjA1JlaeSgPo3R2qUIDws-9vNRXAUs,5162
104
129
  otdf_python_proto/policy/actions/__init__.py,sha256=GPRrOk6_i6Jgj9PrWX8tCdqYoVKdJJp7ucu1XtY3iFU,208
@@ -107,20 +132,24 @@ otdf_python_proto/policy/actions/actions_pb2.py,sha256=QRcrBnuu1iDWjVQLl0dWHCwuO
107
132
  otdf_python_proto/policy/actions/actions_pb2.pyi,sha256=ZBgv2xtG4PW7vXUJkzbfvMPaKUmztVw6_FG5iN0Ph-I,4298
108
133
  otdf_python_proto/policy/attributes/__init__.py,sha256=3lHYfbXDGAuuhfSwb1YJfVJJWPvTtcoshyhLOi_hIr0,226
109
134
  otdf_python_proto/policy/attributes/attributes_connect.py,sha256=r-_r5pqiFr_CCQ05UnzbEcYld2KOY4nY5q0s2cYxnp4,72451
110
- otdf_python_proto/policy/attributes/attributes_pb2.py,sha256=wnK1qsuOVOePneFfDGtBDxiyvP9S8XA48mMTexybYBE,33029
111
- 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
112
137
  otdf_python_proto/policy/kasregistry/__init__.py,sha256=zj_8G65KIhOSiOeMkyMEZFomWYkfD9E5aWASgwV4n3M,295
113
- otdf_python_proto/policy/kasregistry/key_access_server_registry_connect.py,sha256=L5r5ZAMnM8gfEdPXZiQ61MrCxtlzvpaxjJGZj5MsEQk,52727
114
- otdf_python_proto/policy/kasregistry/key_access_server_registry_pb2.py,sha256=5RRqC6MsfBM9TEmPedRZYKMjdVWptMXXTUolUU4FPXI,45921
115
- otdf_python_proto/policy/kasregistry/key_access_server_registry_pb2.pyi,sha256=hpIgoFXZtY6HsjfHPi_Ybxm0CddK_AYy8YTlfdzR1Jk,24030
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=pvHrXoZpefXcr1J8i-i_TfYSXwF1s-Tvnrol6T7rFtw,48143
140
+ otdf_python_proto/policy/kasregistry/key_access_server_registry_pb2.pyi,sha256=FbScLy3_kKzuQ2DvMxNQmmpUeokBWAylUAMbrbYbH9Y,26443
116
141
  otdf_python_proto/policy/keymanagement/__init__.py,sha256=baBSBdjBbaErAIjjn0GxUPfYYRq7R4MfsrvpK02uews,245
117
142
  otdf_python_proto/policy/keymanagement/key_management_connect.py,sha256=-e1fc4S3-xJ_Tdy9T0JMMTXIFhMeN7qx0sls-gMUjeM,20883
118
- otdf_python_proto/policy/keymanagement/key_management_pb2.py,sha256=MVAJKkR_B2nqN9jqWg7JLWByKFFfoi4unj1hbToByCE,8129
119
- 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
120
145
  otdf_python_proto/policy/namespaces/__init__.py,sha256=JIdic8yq55x9BrQzaJtgEp3J7AcnOZ1c0eiTXd2iDpw,222
121
- otdf_python_proto/policy/namespaces/namespaces_connect.py,sha256=gJmN8r8bCDX9KTyEJc7X5RnvgxPiANfRvTTFNom06wk,35163
122
- otdf_python_proto/policy/namespaces/namespaces_pb2.py,sha256=NTdUbii-WF0VNiVvM29ZmAni7W4dgmNkOGq2ytP31pk,15222
123
- 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
+ otdf_python_proto/policy/obligations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
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
124
153
  otdf_python_proto/policy/registeredresources/__init__.py,sha256=U6A5CRMFUhwjxOdxaRpgfIBx9bJZ7KcnBNKPQouSaeI,281
125
154
  otdf_python_proto/policy/registeredresources/registered_resources_connect.py,sha256=FVJPkbH7vO_oUiJRW6qW2nkJhmomO_9YQ1yDCEYYhQ8,48569
126
155
  otdf_python_proto/policy/registeredresources/registered_resources_pb2.py,sha256=5pb4vm0SEOG-U8FORKa9Z1Fe2tbgcWEEJworZE_LS00,23112
@@ -135,13 +164,13 @@ otdf_python_proto/policy/subjectmapping/subject_mapping_pb2.py,sha256=iNZp_sHDLX
135
164
  otdf_python_proto/policy/subjectmapping/subject_mapping_pb2.pyi,sha256=kPkRm8xw3KiEu9LiUmKCbouHVryeEFWyk19Eo6L6rus,10903
136
165
  otdf_python_proto/policy/unsafe/__init__.py,sha256=1TYTtYZyHxNQ2HaMCONHJ1U9dZDp3ZoZv19wZ78NhBI,202
137
166
  otdf_python_proto/policy/unsafe/unsafe_connect.py,sha256=f-WA7NClXBfxs9wkdSVKUf7LwvK5WfDGkNsqboZ2k2g,37202
138
- otdf_python_proto/policy/unsafe/unsafe_pb2.py,sha256=j8J3FGM6nL6VDJvZUdrq6MAQ0GvHCDRH1q3-Djw5NfE,14936
139
- otdf_python_proto/policy/unsafe/unsafe_pb2.pyi,sha256=Pu72GtZTZWdD_L9SqqyeV8SQu9VXdVEEAGECrzHFmWs,5879
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
140
169
  otdf_python_proto/wellknownconfiguration/__init__.py,sha256=xK8XUrwCL9elWuMTx6vVgWdWdcACugoF0b5OYsFclj4,240
141
- otdf_python_proto/wellknownconfiguration/wellknown_configuration_connect.py,sha256=fVQfo4OsTK8e63ytmiGyMe1AxgirktNqI_O3rQ6o6Nc,6342
170
+ otdf_python_proto/wellknownconfiguration/wellknown_configuration_connect.py,sha256=wnfZ7K9vAB_Rub25KrdnKIfx5Yxq8yCc8c6zHjBtFH8,6358
142
171
  otdf_python_proto/wellknownconfiguration/wellknown_configuration_pb2.py,sha256=g9xSm9TxX0IPMqiFCaridJvI2TrL8PrXVFPgu8tX9VM,3863
143
172
  otdf_python_proto/wellknownconfiguration/wellknown_configuration_pb2.pyi,sha256=Zw4vROvTgomnFqsalJrYda632ojXH0FVXSzTXxerybw,1490
144
- otdf_python-0.4.4.dist-info/METADATA,sha256=O-bgJ7b_XIN6tH66EOmIuEr9m85RXkU6GRTYhf5GsIQ,5175
145
- otdf_python-0.4.4.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
146
- otdf_python-0.4.4.dist-info/licenses/LICENSE,sha256=DPrPHdI6tfZcqk9kzQ37vh1Ftk7LJYdMrUtwKl7L3Pw,1074
147
- otdf_python-0.4.4.dist-info/RECORD,,
173
+ otdf_python-0.6.0.dist-info/METADATA,sha256=WviQsEtDOr5SAG3xyE3vAmbwUTr9YWgYuayXjhrusCo,5175
174
+ otdf_python-0.6.0.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
175
+ otdf_python-0.6.0.dist-info/licenses/LICENSE,sha256=DPrPHdI6tfZcqk9kzQ37vh1Ftk7LJYdMrUtwKl7L3Pw,1074
176
+ otdf_python-0.6.0.dist-info/RECORD,,
@@ -4,6 +4,9 @@ This package contains generated Python code from OpenTDF protocol buffer definit
4
4
  It includes modules for authorization, common types, entities, policy management,
5
5
  and other OpenTDF services.
6
6
  """
7
+ import sys
8
+ import types
9
+ from pathlib import Path
7
10
  from importlib import metadata
8
11
 
9
12
  try:
@@ -12,9 +15,52 @@ except metadata.PackageNotFoundError:
12
15
  # package is not installed, e.g., in development
13
16
  __version__ = "0.0.0"
14
17
 
15
- # Import submodules to make them available
18
+ # Marker attribute placed on stub modules created by _register_subpackage_aliases.
19
+ # Used to distinguish our stubs from pre-existing third-party packages so we never
20
+ # clobber the latter.
21
+ _STUB_ATTR = "_otdf_python_proto_stub"
22
+
23
+
24
+ def _register_subpackage_aliases() -> None:
25
+ # connect-generated files use absolute top-level imports (e.g. `import kas.kas_pb2`).
26
+ # Register each subpackage as a top-level sys.modules alias so those imports resolve
27
+ # without mutating sys.path for the whole process.
28
+ #
29
+ # Called twice: before the explicit imports below (creates lightweight stubs so that
30
+ # load-time absolute imports inside connect files succeed) and after (upgrades stubs
31
+ # to the fully-initialised module objects).
32
+ pkg_dir = Path(__file__).parent
33
+ for child in pkg_dir.iterdir():
34
+ if not child.is_dir() or not (child / "__init__.py").exists() or child.name.startswith("_"):
35
+ continue
36
+ name = child.name
37
+ current = sys.modules.get(name)
38
+ # Never overwrite a pre-existing entry that we did not create.
39
+ if current is not None and not getattr(current, _STUB_ATTR, False):
40
+ continue
41
+ full_name = f"otdf_python_proto.{name}"
42
+ if full_name in sys.modules:
43
+ # Real module is loaded; point the alias at it.
44
+ sys.modules[name] = sys.modules[full_name]
45
+ else:
46
+ # Subpackage not yet imported; create a lightweight stub with __path__ set
47
+ # so sub-imports like `import authorization.authorization_pb2` can locate
48
+ # modules on disk without needing sys.path mutation.
49
+ stub = types.ModuleType(name)
50
+ stub.__path__ = [str(child)] # type: ignore[attr-defined]
51
+ stub.__package__ = name
52
+ stub.__file__ = str(child / "__init__.py")
53
+ setattr(stub, _STUB_ATTR, True)
54
+ sys.modules[name] = stub
55
+
56
+
57
+ # First pass: create stubs so that connect-generated files can resolve absolute
58
+ # top-level imports (e.g. `import kas.kas_pb2`) at subpackage load time.
59
+ _register_subpackage_aliases()
60
+
61
+ # Import submodules to make them available.
16
62
  # Note: authorization, entityresolution, wellknownconfiguration and policy subdirectories
17
- # are imported lazily to avoid import errors from generated protobuf files
63
+ # are imported lazily to avoid import errors from generated protobuf files.
18
64
  from . import common
19
65
  from . import entity
20
66
  from . import kas
@@ -22,6 +68,10 @@ from . import legacy_grpc
22
68
  from . import logger
23
69
  from . import policy
24
70
 
71
+ # Second pass: upgrade stubs for the explicitly imported subpackages to the
72
+ # fully-initialised module objects.
73
+ _register_subpackage_aliases()
74
+
25
75
  # Export main module categories
26
76
  __all__ = [
27
77
  "common",
@@ -12,7 +12,7 @@ from connectrpc.interceptor import Interceptor, InterceptorSync
12
12
  from connectrpc.method import IdempotencyLevel, MethodInfo
13
13
  from connectrpc.request import Headers, RequestContext
14
14
  from connectrpc.server import ConnectASGIApplication, ConnectWSGIApplication, Endpoint, EndpointSync
15
- from . import authorization_pb2 as authorization_dot_authorization__pb2
15
+ import authorization.authorization_pb2 as authorization_dot_authorization__pb2
16
16
 
17
17
 
18
18
  class AuthorizationService(Protocol):
File without changes
@@ -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\"\x9a\x03\n\x10\x45ntityIdentifier\x12\xa2\x01\n\x0c\x65ntity_chain\x18\x01 \x01(\x0b\x32\x13.entity.EntityChainBh\xbaHe\xba\x01\x62\n\x15\x65ntity_chain_required\x12\x19\x65ntities must be provided\x1a.has(this.entities) && this.entities.size() > 0H\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\"\xa6\x03\n\x08Resource\x12!\n\x0c\x65phemeral_id\x18\x01 \x01(\tR\x0b\x65phemeralId\x12\xf2\x01\n\x10\x61ttribute_values\x18\x02 \x01(\x0b\x32*.authorization.v2.Resource.AttributeValuesB\x98\x01\xbaH\x94\x01\xba\x01\x90\x01\n\x19\x61ttribute_values_required\x12\x38if provided, resource.attribute_values must not be empty\x1a\x39this.fqns.size() > 0 && 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\x02\x08\x01\xc8\x01\x01R\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\"x\n\x16GetDecisionBulkRequest\x12^\n\x11\x64\x65\x63ision_requests\x18\x01 \x03(\x0b\x32\x31.authorization.v2.GetDecisionMultiResourceRequestR\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)
@@ -39,15 +39,17 @@ if not _descriptor._USE_C_DESCRIPTORS:
39
39
  _globals['_ENTITYIDENTIFIER'].oneofs_by_name['identifier']._loaded_options = None
40
40
  _globals['_ENTITYIDENTIFIER'].oneofs_by_name['identifier']._serialized_options = b'\272H\002\010\001'
41
41
  _globals['_ENTITYIDENTIFIER'].fields_by_name['entity_chain']._loaded_options = None
42
- _globals['_ENTITYIDENTIFIER'].fields_by_name['entity_chain']._serialized_options = b'\272He\272\001b\n\025entity_chain_required\022\031entities must be provided\032.has(this.entities) && this.entities.size() > 0'
42
+ _globals['_ENTITYIDENTIFIER'].fields_by_name['entity_chain']._serialized_options = b'\272H\242\001\272\001\236\001\n\025entity_chain_required\0227entities must be provided and between 1 and 10 in count\032Lhas(this.entities) && this.entities.size() > 0 && this.entities.size() <= 10'
43
43
  _globals['_ENTITYIDENTIFIER'].fields_by_name['registered_resource_value_fqn']._loaded_options = None
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
50
- _globals['_RESOURCE'].fields_by_name['attribute_values']._serialized_options = b'\272H\224\001\272\001\220\001\n\031attribute_values_required\0228if provided, resource.attribute_values must not be empty\0329this.fqns.size() > 0 && this.fqns.all(item, item.isUri())'
52
+ _globals['_RESOURCE'].fields_by_name['attribute_values']._serialized_options = b'\272H\322\001\272\001\316\001\n\031attribute_values_required\022\\if provided, resource.attribute_values must be between 1 and 20 in count with all valid FQNs\032Sthis.fqns.size() > 0 && this.fqns.size() <= 20 && this.fqns.all(item, item.isUri())'
51
53
  _globals['_RESOURCE'].fields_by_name['registered_resource_value_fqn']._loaded_options = None
52
54
  _globals['_RESOURCE'].fields_by_name['registered_resource_value_fqn']._serialized_options = b'\272H\007r\005\020\001\210\001\001'
53
55
  _globals['_GETDECISIONREQUEST'].fields_by_name['entity_identifier']._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
@@ -63,43 +67,47 @@ if not _descriptor._USE_C_DESCRIPTORS:
63
67
  _globals['_GETDECISIONMULTIRESOURCEREQUEST'].fields_by_name['action']._loaded_options = None
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
- _globals['_GETDECISIONMULTIRESOURCEREQUEST'].fields_by_name['resources']._serialized_options = b'\272H\010\222\001\002\010\001\310\001\001'
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)'
75
+ _globals['_GETDECISIONBULKREQUEST'].fields_by_name['decision_requests']._loaded_options = None
76
+ _globals['_GETDECISIONBULKREQUEST'].fields_by_name['decision_requests']._serialized_options = b'\272H\010\222\001\005\010\001\020\310\001'
69
77
  _globals['_GETENTITLEMENTSREQUEST'].fields_by_name['entity_identifier']._loaded_options = None
70
78
  _globals['_GETENTITLEMENTSREQUEST'].fields_by_name['entity_identifier']._serialized_options = b'\272H\003\310\001\001'
71
- _globals['_DECISION']._serialized_start=3037
72
- _globals['_DECISION']._serialized_end=3113
79
+ _globals['_DECISION']._serialized_start=3950
80
+ _globals['_DECISION']._serialized_end=4026
73
81
  _globals['_ENTITYIDENTIFIER']._serialized_start=163
74
- _globals['_ENTITYIDENTIFIER']._serialized_end=573
75
- _globals['_ENTITYENTITLEMENTS']._serialized_start=576
76
- _globals['_ENTITYENTITLEMENTS']._serialized_end=961
77
- _globals['_ENTITYENTITLEMENTS_ACTIONSLIST']._serialized_start=775
78
- _globals['_ENTITYENTITLEMENTS_ACTIONSLIST']._serialized_end=830
79
- _globals['_ENTITYENTITLEMENTS_ACTIONSPERATTRIBUTEVALUEFQNENTRY']._serialized_start=833
80
- _globals['_ENTITYENTITLEMENTS_ACTIONSPERATTRIBUTEVALUEFQNENTRY']._serialized_end=961
81
- _globals['_RESOURCE']._serialized_start=964
82
- _globals['_RESOURCE']._serialized_end=1386
83
- _globals['_RESOURCE_ATTRIBUTEVALUES']._serialized_start=1337
84
- _globals['_RESOURCE_ATTRIBUTEVALUES']._serialized_end=1374
85
- _globals['_RESOURCEDECISION']._serialized_start=1388
86
- _globals['_RESOURCEDECISION']._serialized_end=1514
87
- _globals['_GETDECISIONREQUEST']._serialized_start=1517
88
- _globals['_GETDECISIONREQUEST']._serialized_end=1841
89
- _globals['_GETDECISIONRESPONSE']._serialized_start=1843
90
- _globals['_GETDECISIONRESPONSE']._serialized_end=1928
91
- _globals['_GETDECISIONMULTIRESOURCEREQUEST']._serialized_start=1931
92
- _globals['_GETDECISIONMULTIRESOURCEREQUEST']._serialized_end=2281
93
- _globals['_GETDECISIONMULTIRESOURCERESPONSE']._serialized_start=2284
94
- _globals['_GETDECISIONMULTIRESOURCERESPONSE']._serialized_end=2466
95
- _globals['_GETDECISIONBULKREQUEST']._serialized_start=2468
96
- _globals['_GETDECISIONBULKREQUEST']._serialized_end=2588
97
- _globals['_GETDECISIONBULKRESPONSE']._serialized_start=2590
98
- _globals['_GETDECISIONBULKRESPONSE']._serialized_end=2714
99
- _globals['_GETENTITLEMENTSREQUEST']._serialized_start=2717
100
- _globals['_GETENTITLEMENTSREQUEST']._serialized_end=2934
101
- _globals['_GETENTITLEMENTSRESPONSE']._serialized_start=2936
102
- _globals['_GETENTITLEMENTSRESPONSE']._serialized_end=3035
103
- _globals['_AUTHORIZATIONSERVICE']._serialized_start=3116
104
- _globals['_AUTHORIZATIONSERVICE']._serialized_end=3578
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
105
113
  # @@protoc_insertion_point(module_scope)
@@ -21,14 +21,16 @@ DECISION_DENY: Decision
21
21
  DECISION_PERMIT: Decision
22
22
 
23
23
  class EntityIdentifier(_message.Message):
24
- __slots__ = ("entity_chain", "registered_resource_value_fqn", "token")
24
+ __slots__ = ("entity_chain", "registered_resource_value_fqn", "token", "with_request_token")
25
25
  ENTITY_CHAIN_FIELD_NUMBER: _ClassVar[int]
26
26
  REGISTERED_RESOURCE_VALUE_FQN_FIELD_NUMBER: _ClassVar[int]
27
27
  TOKEN_FIELD_NUMBER: _ClassVar[int]
28
+ WITH_REQUEST_TOKEN_FIELD_NUMBER: _ClassVar[int]
28
29
  entity_chain: _entity_pb2.EntityChain
29
30
  registered_resource_value_fqn: str
30
31
  token: _entity_pb2.Token
31
- def __init__(self, entity_chain: _Optional[_Union[_entity_pb2.EntityChain, _Mapping]] = ..., registered_resource_value_fqn: _Optional[str] = ..., token: _Optional[_Union[_entity_pb2.Token, _Mapping]] = ...) -> None: ...
32
+ with_request_token: _wrappers_pb2.BoolValue
33
+ def __init__(self, entity_chain: _Optional[_Union[_entity_pb2.EntityChain, _Mapping]] = ..., registered_resource_value_fqn: _Optional[str] = ..., token: _Optional[_Union[_entity_pb2.Token, _Mapping]] = ..., with_request_token: _Optional[_Union[_wrappers_pb2.BoolValue, _Mapping]] = ...) -> None: ...
32
34
 
33
35
  class EntityEntitlements(_message.Message):
34
36
  __slots__ = ("ephemeral_id", "actions_per_attribute_value_fqn")
@@ -66,22 +68,26 @@ class Resource(_message.Message):
66
68
  def __init__(self, ephemeral_id: _Optional[str] = ..., attribute_values: _Optional[_Union[Resource.AttributeValues, _Mapping]] = ..., registered_resource_value_fqn: _Optional[str] = ...) -> None: ...
67
69
 
68
70
  class ResourceDecision(_message.Message):
69
- __slots__ = ("ephemeral_resource_id", "decision")
71
+ __slots__ = ("ephemeral_resource_id", "decision", "required_obligations")
70
72
  EPHEMERAL_RESOURCE_ID_FIELD_NUMBER: _ClassVar[int]
71
73
  DECISION_FIELD_NUMBER: _ClassVar[int]
74
+ REQUIRED_OBLIGATIONS_FIELD_NUMBER: _ClassVar[int]
72
75
  ephemeral_resource_id: str
73
76
  decision: Decision
74
- def __init__(self, ephemeral_resource_id: _Optional[str] = ..., decision: _Optional[_Union[Decision, str]] = ...) -> None: ...
77
+ required_obligations: _containers.RepeatedScalarFieldContainer[str]
78
+ def __init__(self, ephemeral_resource_id: _Optional[str] = ..., decision: _Optional[_Union[Decision, str]] = ..., required_obligations: _Optional[_Iterable[str]] = ...) -> None: ...
75
79
 
76
80
  class GetDecisionRequest(_message.Message):
77
- __slots__ = ("entity_identifier", "action", "resource")
81
+ __slots__ = ("entity_identifier", "action", "resource", "fulfillable_obligation_fqns")
78
82
  ENTITY_IDENTIFIER_FIELD_NUMBER: _ClassVar[int]
79
83
  ACTION_FIELD_NUMBER: _ClassVar[int]
80
84
  RESOURCE_FIELD_NUMBER: _ClassVar[int]
85
+ FULFILLABLE_OBLIGATION_FQNS_FIELD_NUMBER: _ClassVar[int]
81
86
  entity_identifier: EntityIdentifier
82
87
  action: _objects_pb2.Action
83
88
  resource: Resource
84
- def __init__(self, entity_identifier: _Optional[_Union[EntityIdentifier, _Mapping]] = ..., action: _Optional[_Union[_objects_pb2.Action, _Mapping]] = ..., resource: _Optional[_Union[Resource, _Mapping]] = ...) -> None: ...
89
+ fulfillable_obligation_fqns: _containers.RepeatedScalarFieldContainer[str]
90
+ def __init__(self, entity_identifier: _Optional[_Union[EntityIdentifier, _Mapping]] = ..., action: _Optional[_Union[_objects_pb2.Action, _Mapping]] = ..., resource: _Optional[_Union[Resource, _Mapping]] = ..., fulfillable_obligation_fqns: _Optional[_Iterable[str]] = ...) -> None: ...
85
91
 
86
92
  class GetDecisionResponse(_message.Message):
87
93
  __slots__ = ("decision",)
@@ -90,14 +96,16 @@ class GetDecisionResponse(_message.Message):
90
96
  def __init__(self, decision: _Optional[_Union[ResourceDecision, _Mapping]] = ...) -> None: ...
91
97
 
92
98
  class GetDecisionMultiResourceRequest(_message.Message):
93
- __slots__ = ("entity_identifier", "action", "resources")
99
+ __slots__ = ("entity_identifier", "action", "resources", "fulfillable_obligation_fqns")
94
100
  ENTITY_IDENTIFIER_FIELD_NUMBER: _ClassVar[int]
95
101
  ACTION_FIELD_NUMBER: _ClassVar[int]
96
102
  RESOURCES_FIELD_NUMBER: _ClassVar[int]
103
+ FULFILLABLE_OBLIGATION_FQNS_FIELD_NUMBER: _ClassVar[int]
97
104
  entity_identifier: EntityIdentifier
98
105
  action: _objects_pb2.Action
99
106
  resources: _containers.RepeatedCompositeFieldContainer[Resource]
100
- def __init__(self, entity_identifier: _Optional[_Union[EntityIdentifier, _Mapping]] = ..., action: _Optional[_Union[_objects_pb2.Action, _Mapping]] = ..., resources: _Optional[_Iterable[_Union[Resource, _Mapping]]] = ...) -> None: ...
107
+ fulfillable_obligation_fqns: _containers.RepeatedScalarFieldContainer[str]
108
+ def __init__(self, entity_identifier: _Optional[_Union[EntityIdentifier, _Mapping]] = ..., action: _Optional[_Union[_objects_pb2.Action, _Mapping]] = ..., resources: _Optional[_Iterable[_Union[Resource, _Mapping]]] = ..., fulfillable_obligation_fqns: _Optional[_Iterable[str]] = ...) -> None: ...
101
109
 
102
110
  class GetDecisionMultiResourceResponse(_message.Message):
103
111
  __slots__ = ("all_permitted", "resource_decisions")
@@ -23,9 +23,10 @@ _sym_db = _symbol_database.Default()
23
23
 
24
24
 
25
25
  from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
26
+ from buf.validate import validate_pb2 as buf_dot_validate_dot_validate__pb2
26
27
 
27
28
 
28
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13\x63ommon/common.proto\x12\x06\x63ommon\x1a\x1fgoogle/protobuf/timestamp.proto\"\xf1\x01\n\x08Metadata\x12\x39\n\ncreated_at\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x34\n\x06labels\x18\x03 \x03(\x0b\x32\x1c.common.Metadata.LabelsEntryR\x06labels\x1a\x39\n\x0bLabelsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\x89\x01\n\x0fMetadataMutable\x12;\n\x06labels\x18\x03 \x03(\x0b\x32#.common.MetadataMutable.LabelsEntryR\x06labels\x1a\x39\n\x0bLabelsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01*}\n\x12MetadataUpdateEnum\x12$\n METADATA_UPDATE_ENUM_UNSPECIFIED\x10\x00\x12\x1f\n\x1bMETADATA_UPDATE_ENUM_EXTEND\x10\x01\x12 \n\x1cMETADATA_UPDATE_ENUM_REPLACE\x10\x02*\x8d\x01\n\x0f\x41\x63tiveStateEnum\x12!\n\x1d\x41\x43TIVE_STATE_ENUM_UNSPECIFIED\x10\x00\x12\x1c\n\x18\x41\x43TIVE_STATE_ENUM_ACTIVE\x10\x01\x12\x1e\n\x1a\x41\x43TIVE_STATE_ENUM_INACTIVE\x10\x02\x12\x19\n\x15\x41\x43TIVE_STATE_ENUM_ANY\x10\x03\x42Q\n\ncom.commonB\x0b\x43ommonProtoP\x01\xa2\x02\x03\x43XX\xaa\x02\x06\x43ommon\xca\x02\x06\x43ommon\xe2\x02\x12\x43ommon\\GPBMetadata\xea\x02\x06\x43ommonb\x06proto3')
29
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13\x63ommon/common.proto\x12\x06\x63ommon\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1b\x62uf/validate/validate.proto\"\xd2\x02\n\x10IdNameIdentifier\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\x90\x02\n\x04name\x18\x02 \x01(\tB\xfb\x01\xbaH\xf7\x01r\x05\x10\x01\x18\xfd\x01\xba\x01\xec\x01\n\x0bname_format\x12\x9f\x01Name must be an alphanumeric string, allowing hyphens and underscores but not as the first or last character. The stored name will be normalized to lower case.\x1a;this.matches(\'^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$\')R\x04name:\x11\xbaH\x0e\"\x0c\n\x02id\n\x04name\x10\x01\"[\n\x0fIdFqnIdentifier\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\x1c\n\x03\x66qn\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01R\x03\x66qn:\x10\xbaH\r\"\x0b\n\x02id\n\x03\x66qn\x10\x01\"\xf1\x01\n\x08Metadata\x12\x39\n\ncreated_at\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12\x34\n\x06labels\x18\x03 \x03(\x0b\x32\x1c.common.Metadata.LabelsEntryR\x06labels\x1a\x39\n\x0bLabelsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\x89\x01\n\x0fMetadataMutable\x12;\n\x06labels\x18\x03 \x03(\x0b\x32#.common.MetadataMutable.LabelsEntryR\x06labels\x1a\x39\n\x0bLabelsEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01*}\n\x12MetadataUpdateEnum\x12$\n METADATA_UPDATE_ENUM_UNSPECIFIED\x10\x00\x12\x1f\n\x1bMETADATA_UPDATE_ENUM_EXTEND\x10\x01\x12 \n\x1cMETADATA_UPDATE_ENUM_REPLACE\x10\x02*\x8d\x01\n\x0f\x41\x63tiveStateEnum\x12!\n\x1d\x41\x43TIVE_STATE_ENUM_UNSPECIFIED\x10\x00\x12\x1c\n\x18\x41\x43TIVE_STATE_ENUM_ACTIVE\x10\x01\x12\x1e\n\x1a\x41\x43TIVE_STATE_ENUM_INACTIVE\x10\x02\x12\x19\n\x15\x41\x43TIVE_STATE_ENUM_ANY\x10\x03\x42Q\n\ncom.commonB\x0b\x43ommonProtoP\x01\xa2\x02\x03\x43XX\xaa\x02\x06\x43ommon\xca\x02\x06\x43ommon\xe2\x02\x12\x43ommon\\GPBMetadata\xea\x02\x06\x43ommonb\x06proto3')
29
30
 
30
31
  _globals = globals()
31
32
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -33,20 +34,36 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'common.common_pb2', _global
33
34
  if not _descriptor._USE_C_DESCRIPTORS:
34
35
  _globals['DESCRIPTOR']._loaded_options = None
35
36
  _globals['DESCRIPTOR']._serialized_options = b'\n\ncom.commonB\013CommonProtoP\001\242\002\003CXX\252\002\006Common\312\002\006Common\342\002\022Common\\GPBMetadata\352\002\006Common'
37
+ _globals['_IDNAMEIDENTIFIER'].fields_by_name['id']._loaded_options = None
38
+ _globals['_IDNAMEIDENTIFIER'].fields_by_name['id']._serialized_options = b'\272H\005r\003\260\001\001'
39
+ _globals['_IDNAMEIDENTIFIER'].fields_by_name['name']._loaded_options = None
40
+ _globals['_IDNAMEIDENTIFIER'].fields_by_name['name']._serialized_options = b'\272H\367\001r\005\020\001\030\375\001\272\001\354\001\n\013name_format\022\237\001Name must be an alphanumeric string, allowing hyphens and underscores but not as the first or last character. The stored name will be normalized to lower case.\032;this.matches(\'^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$\')'
41
+ _globals['_IDNAMEIDENTIFIER']._loaded_options = None
42
+ _globals['_IDNAMEIDENTIFIER']._serialized_options = b'\272H\016\"\014\n\002id\n\004name\020\001'
43
+ _globals['_IDFQNIDENTIFIER'].fields_by_name['id']._loaded_options = None
44
+ _globals['_IDFQNIDENTIFIER'].fields_by_name['id']._serialized_options = b'\272H\005r\003\260\001\001'
45
+ _globals['_IDFQNIDENTIFIER'].fields_by_name['fqn']._loaded_options = None
46
+ _globals['_IDFQNIDENTIFIER'].fields_by_name['fqn']._serialized_options = b'\272H\007r\005\020\001\210\001\001'
47
+ _globals['_IDFQNIDENTIFIER']._loaded_options = None
48
+ _globals['_IDFQNIDENTIFIER']._serialized_options = b'\272H\r\"\013\n\002id\n\003fqn\020\001'
36
49
  _globals['_METADATA_LABELSENTRY']._loaded_options = None
37
50
  _globals['_METADATA_LABELSENTRY']._serialized_options = b'8\001'
38
51
  _globals['_METADATAMUTABLE_LABELSENTRY']._loaded_options = None
39
52
  _globals['_METADATAMUTABLE_LABELSENTRY']._serialized_options = b'8\001'
40
- _globals['_METADATAUPDATEENUM']._serialized_start=448
41
- _globals['_METADATAUPDATEENUM']._serialized_end=573
42
- _globals['_ACTIVESTATEENUM']._serialized_start=576
43
- _globals['_ACTIVESTATEENUM']._serialized_end=717
44
- _globals['_METADATA']._serialized_start=65
45
- _globals['_METADATA']._serialized_end=306
46
- _globals['_METADATA_LABELSENTRY']._serialized_start=249
47
- _globals['_METADATA_LABELSENTRY']._serialized_end=306
48
- _globals['_METADATAMUTABLE']._serialized_start=309
49
- _globals['_METADATAMUTABLE']._serialized_end=446
50
- _globals['_METADATAMUTABLE_LABELSENTRY']._serialized_start=249
51
- _globals['_METADATAMUTABLE_LABELSENTRY']._serialized_end=306
53
+ _globals['_METADATAUPDATEENUM']._serialized_start=911
54
+ _globals['_METADATAUPDATEENUM']._serialized_end=1036
55
+ _globals['_ACTIVESTATEENUM']._serialized_start=1039
56
+ _globals['_ACTIVESTATEENUM']._serialized_end=1180
57
+ _globals['_IDNAMEIDENTIFIER']._serialized_start=94
58
+ _globals['_IDNAMEIDENTIFIER']._serialized_end=432
59
+ _globals['_IDFQNIDENTIFIER']._serialized_start=434
60
+ _globals['_IDFQNIDENTIFIER']._serialized_end=525
61
+ _globals['_METADATA']._serialized_start=528
62
+ _globals['_METADATA']._serialized_end=769
63
+ _globals['_METADATA_LABELSENTRY']._serialized_start=712
64
+ _globals['_METADATA_LABELSENTRY']._serialized_end=769
65
+ _globals['_METADATAMUTABLE']._serialized_start=772
66
+ _globals['_METADATAMUTABLE']._serialized_end=909
67
+ _globals['_METADATAMUTABLE_LABELSENTRY']._serialized_start=712
68
+ _globals['_METADATAMUTABLE_LABELSENTRY']._serialized_end=769
52
69
  # @@protoc_insertion_point(module_scope)
@@ -1,6 +1,7 @@
1
1
  import datetime
2
2
 
3
3
  from google.protobuf import timestamp_pb2 as _timestamp_pb2
4
+ from buf.validate import validate_pb2 as _validate_pb2
4
5
  from google.protobuf.internal import containers as _containers
5
6
  from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
6
7
  from google.protobuf import descriptor as _descriptor
@@ -30,6 +31,22 @@ ACTIVE_STATE_ENUM_ACTIVE: ActiveStateEnum
30
31
  ACTIVE_STATE_ENUM_INACTIVE: ActiveStateEnum
31
32
  ACTIVE_STATE_ENUM_ANY: ActiveStateEnum
32
33
 
34
+ class IdNameIdentifier(_message.Message):
35
+ __slots__ = ("id", "name")
36
+ ID_FIELD_NUMBER: _ClassVar[int]
37
+ NAME_FIELD_NUMBER: _ClassVar[int]
38
+ id: str
39
+ name: str
40
+ def __init__(self, id: _Optional[str] = ..., name: _Optional[str] = ...) -> None: ...
41
+
42
+ class IdFqnIdentifier(_message.Message):
43
+ __slots__ = ("id", "fqn")
44
+ ID_FIELD_NUMBER: _ClassVar[int]
45
+ FQN_FIELD_NUMBER: _ClassVar[int]
46
+ id: str
47
+ fqn: str
48
+ def __init__(self, id: _Optional[str] = ..., fqn: _Optional[str] = ...) -> None: ...
49
+
33
50
  class Metadata(_message.Message):
34
51
  __slots__ = ("created_at", "updated_at", "labels")
35
52
  class LabelsEntry(_message.Message):
@@ -12,7 +12,7 @@ from connectrpc.interceptor import Interceptor, InterceptorSync
12
12
  from connectrpc.method import IdempotencyLevel, MethodInfo
13
13
  from connectrpc.request import Headers, RequestContext
14
14
  from connectrpc.server import ConnectASGIApplication, ConnectWSGIApplication, Endpoint, EndpointSync
15
- from . import entity_resolution_pb2 as entityresolution_dot_entity__resolution__pb2
15
+ import entityresolution.entity_resolution_pb2 as entityresolution_dot_entity__resolution__pb2
16
16
 
17
17
 
18
18
  class EntityResolutionService(Protocol):
File without changes