diff --git a/packages/otdf-python-proto/proto-files/authorization/authorization.proto b/packages/otdf-python-proto/proto-files/authorization/authorization.proto index 058f1f18..1fdaf313 100644 --- a/packages/otdf-python-proto/proto-files/authorization/authorization.proto +++ b/packages/otdf-python-proto/proto-files/authorization/authorization.proto @@ -2,7 +2,6 @@ syntax = "proto3"; package authorization; -import "google/api/annotations.proto"; import "google/protobuf/any.proto"; import "policy/objects.proto"; @@ -287,19 +286,7 @@ message GetDecisionsByTokenResponse { } service AuthorizationService { - rpc GetDecisions(GetDecisionsRequest) returns (GetDecisionsResponse) { - option (google.api.http) = { - post: "/v1/authorization" - body: "*" - }; - } - rpc GetDecisionsByToken(GetDecisionsByTokenRequest) returns (GetDecisionsByTokenResponse) { - option (google.api.http) = {post: "/v1/token/authorization"}; - } - rpc GetEntitlements(GetEntitlementsRequest) returns (GetEntitlementsResponse) { - option (google.api.http) = { - post: "/v1/entitlements" - body: "*" - }; - } + rpc GetDecisions(GetDecisionsRequest) returns (GetDecisionsResponse) {} + rpc GetDecisionsByToken(GetDecisionsByTokenRequest) returns (GetDecisionsByTokenResponse) {} + rpc GetEntitlements(GetEntitlementsRequest) returns (GetEntitlementsResponse) {} } diff --git a/packages/otdf-python-proto/proto-files/entityresolution/entity_resolution.proto b/packages/otdf-python-proto/proto-files/entityresolution/entity_resolution.proto index 4b93ab2f..fde907d1 100644 --- a/packages/otdf-python-proto/proto-files/entityresolution/entity_resolution.proto +++ b/packages/otdf-python-proto/proto-files/entityresolution/entity_resolution.proto @@ -3,9 +3,8 @@ syntax = "proto3"; package entityresolution; import "authorization/authorization.proto"; -import "google/protobuf/struct.proto"; import "google/protobuf/any.proto"; -import "google/api/annotations.proto"; +import "google/protobuf/struct.proto"; /* Example: Get idp attributes for bob and alice (both represented using an email address @@ -108,17 +107,7 @@ message CreateEntityChainFromJwtResponse { service EntityResolutionService { // Deprecated: use v2 ResolveEntities instead - rpc ResolveEntities(ResolveEntitiesRequest) returns (ResolveEntitiesResponse) { - option (google.api.http) = { - post: "/entityresolution/resolve" - body: "*"; - }; - } + rpc ResolveEntities(ResolveEntitiesRequest) returns (ResolveEntitiesResponse) {} // Deprecated: use v2 CreateEntityChainsFromTokens instead - rpc CreateEntityChainFromJwt(CreateEntityChainFromJwtRequest) returns (CreateEntityChainFromJwtResponse) { - option (google.api.http) = { - post: "/entityresolution/entitychain" - body: "*"; - }; - } + rpc CreateEntityChainFromJwt(CreateEntityChainFromJwtRequest) returns (CreateEntityChainFromJwtResponse) {} } diff --git a/packages/otdf-python-proto/proto-files/kas/kas.proto b/packages/otdf-python-proto/proto-files/kas/kas.proto index 7563a25e..6168a6a5 100644 --- a/packages/otdf-python-proto/proto-files/kas/kas.proto +++ b/packages/otdf-python-proto/proto-files/kas/kas.proto @@ -2,21 +2,8 @@ syntax = "proto3"; package kas; -import "google/api/annotations.proto"; import "google/protobuf/struct.proto"; import "google/protobuf/wrappers.proto"; -import "protoc-gen-openapiv2/options/annotations.proto"; - -option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { - info: { - title: "OpenTDF Key Access Service"; - version: "1.5.0"; - license: { - name: "BSD 3-Clause Clear"; - url: "https://github.com/opentdf/backend/blob/master/LICENSE"; - }; - }; -}; message InfoRequest { // Intentionally empty. May include features later. @@ -68,7 +55,7 @@ message KeyAccess { // Type of key wrapping used for the data encryption key // Required: Always - // Values: 'wrapped' (RSA-wrapped for ZTDF), 'ec-wrapped' (experimental ECDH-wrapped) + // Values: 'wrapped' (RSA-wrapped for ZTDF), 'ec-wrapped' (experimental ECDH-wrapped), 'hybrid-wrapped' (experimental X-Wing-wrapped) string key_type = 4 [json_name = "type"]; // URL of the Key Access Server that can unwrap this key @@ -101,7 +88,7 @@ message KeyAccess { // Ephemeral public key for ECDH key derivation (ec-wrapped type only) // Required: When key_type="ec-wrapped" (experimental ECDH-based ZTDF) - // Omitted: When key_type="wrapped" (RSA-based ZTDF) + // Omitted: When key_type="wrapped" or key_type="hybrid-wrapped" // Should be a PEM-encoded PKCS#8 (ASN.1) formatted public key // Used to derive the symmetric key for unwrapping the DEK string ephemeral_public_key = 10; @@ -181,9 +168,9 @@ message UnsignedRewrapRequest { string algorithm = 5 [deprecated = true]; } message PublicKeyRequest { - string algorithm = 1 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {description: "algorithm type rsa: or ec:"}]; - string fmt = 2 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {description: "response format"}]; - string v = 3 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {description: "request version"}]; + string algorithm = 1; + string fmt = 2; + string v = 3; } message PublicKeyResponse { @@ -258,7 +245,7 @@ message RewrapResponse { // KAS's ephemeral session public key in PEM format // Required: For EC-based operations (key_type="ec-wrapped") - // Optional: Empty for RSA-based ZTDF (key_type="wrapped") + // Optional: Empty for RSA-based or X-Wing-based ZTDF (key_type="wrapped" or key_type="hybrid-wrapped") // Used by client to perform ECDH key agreement and decrypt the kas_wrapped_key values string session_public_key = 3; @@ -275,11 +262,6 @@ message RewrapResponse { // Get app info from the root path service AccessService { rpc PublicKey(PublicKeyRequest) returns (PublicKeyResponse) { - option (google.api.http) = {get: "/kas/v2/kas_public_key"}; - - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { - responses: {key: "200"} - }; option idempotency_level = NO_SIDE_EFFECTS; } @@ -289,23 +271,9 @@ service AccessService { // // buf:lint:ignore RPC_RESPONSE_STANDARD_NAME rpc LegacyPublicKey(LegacyPublicKeyRequest) returns (google.protobuf.StringValue) { - option (google.api.http) = {get: "/kas/kas_public_key"}; - - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { - responses: {key: "200"} - }; option idempotency_level = NO_SIDE_EFFECTS; option deprecated = true; } - rpc Rewrap(RewrapRequest) returns (RewrapResponse) { - option (google.api.http) = { - post: "/kas/v2/rewrap" - body: "*"; - }; - - option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = { - responses: {key: "200"} - }; - } + rpc Rewrap(RewrapRequest) returns (RewrapResponse) {} } diff --git a/packages/otdf-python-proto/proto-files/policy/attributes/attributes.proto b/packages/otdf-python-proto/proto-files/policy/attributes/attributes.proto index d20e13c9..f43caa51 100644 --- a/packages/otdf-python-proto/proto-files/policy/attributes/attributes.proto +++ b/packages/otdf-python-proto/proto-files/policy/attributes/attributes.proto @@ -4,7 +4,6 @@ package policy.attributes; import "buf/validate/validate.proto"; import "common/common.proto"; -import "google/api/annotations.proto"; import "google/protobuf/wrappers.proto"; import "policy/objects.proto"; import "policy/selectors.proto"; @@ -71,8 +70,8 @@ enum SortAttributesType { } message AttributesSort { - SortAttributesType field = 1; - policy.SortDirection direction = 2; + SortAttributesType field = 1 [(buf.validate.field).enum.defined_only = true]; + policy.SortDirection direction = 2 [(buf.validate.field).enum.defined_only = true]; } message ListAttributesRequest { @@ -86,6 +85,10 @@ message ListAttributesRequest { // Optional policy.PageRequest pagination = 10; // Optional - CONSTRAINT: max 1 item + // Sort defaults: + // - direction UNSPECIFIED defaults to DESC for the specified field + // - field UNSPECIFIED defaults to created_at with the specified direction + // - both UNSPECIFIED or sort omitted defaults to created_at DESC repeated AttributesSort sort = 11 [(buf.validate.field).repeated.max_items = 1]; } message ListAttributesResponse { @@ -248,6 +251,17 @@ message ListAttributeValuesResponse { policy.PageResponse pagination = 10; } +message AttributeValueObligationTriggerRequest { + // Required. Existing obligation value to associate with the newly created attribute value. + common.IdFqnIdentifier obligation_value = 1 [(buf.validate.field).required = true]; + // Required. Action that, together with the newly created attribute value, triggers the obligation value. + common.IdNameIdentifier action = 2 [(buf.validate.field).required = true]; + // Optional. Request context for the obligation trigger. + policy.RequestContext context = 11; + // Optional. Common metadata for the obligation trigger. + common.MetadataMutable metadata = 100; +} + message CreateAttributeValueRequest { // Required string attribute_id = 1 [(buf.validate.field).string.uuid = true]; @@ -266,6 +280,10 @@ message CreateAttributeValueRequest { reserved "members"; reserved 3; + // Optional + // Existing obligation values to trigger for the newly created attribute value. + repeated AttributeValueObligationTriggerRequest obligation_triggers = 11; + // Optional // Common metadata common.MetadataMutable metadata = 100; @@ -437,7 +455,6 @@ service AttributesService { option idempotency_level = NO_SIDE_EFFECTS; } rpc GetAttributeValuesByFqns(GetAttributeValuesByFqnsRequest) returns (GetAttributeValuesByFqnsResponse) { - option (google.api.http) = {get: "/attributes/*/fqn"}; option idempotency_level = NO_SIDE_EFFECTS; } diff --git a/packages/otdf-python-proto/proto-files/policy/kasregistry/key_access_server_registry.proto b/packages/otdf-python-proto/proto-files/policy/kasregistry/key_access_server_registry.proto index 29f6eda3..5d0e805f 100644 --- a/packages/otdf-python-proto/proto-files/policy/kasregistry/key_access_server_registry.proto +++ b/packages/otdf-python-proto/proto-files/policy/kasregistry/key_access_server_registry.proto @@ -4,7 +4,6 @@ package policy.kasregistry; import "buf/validate/validate.proto"; import "common/common.proto"; -import "google/api/annotations.proto"; import "policy/objects.proto"; import "policy/selectors.proto"; @@ -52,16 +51,18 @@ enum SortKeyAccessServersType { } message KeyAccessServersSort { - SortKeyAccessServersType field = 1; - policy.SortDirection direction = 2; + SortKeyAccessServersType field = 1 [(buf.validate.field).enum.defined_only = true]; + policy.SortDirection direction = 2 [(buf.validate.field).enum.defined_only = true]; } message ListKeyAccessServersRequest { // Optional policy.PageRequest pagination = 10; // Optional - CONSTRAINT: max 1 item - // Default ordering when omitted or when the first entry's field is UNSPECIFIED: - // created_at DESC, then id ASC (tie-breaker). + // Sort defaults: + // - direction UNSPECIFIED defaults to DESC for the specified field + // - field UNSPECIFIED defaults to created_at with the specified direction + // - both UNSPECIFIED or sort omitted defaults to created_at DESC repeated KeyAccessServersSort sort = 11 [(buf.validate.field).repeated.max_items = 1]; } message ListKeyAccessServersResponse { @@ -70,6 +71,18 @@ message ListKeyAccessServersResponse { policy.PageResponse pagination = 10; } +enum SortKasKeysType { + SORT_KAS_KEYS_TYPE_UNSPECIFIED = 0; + SORT_KAS_KEYS_TYPE_KEY_ID = 1; + SORT_KAS_KEYS_TYPE_CREATED_AT = 2; + SORT_KAS_KEYS_TYPE_UPDATED_AT = 3; +} + +message KasKeysSort { + SortKasKeysType field = 1 [(buf.validate.field).enum.defined_only = true]; + policy.SortDirection direction = 2 [(buf.validate.field).enum.defined_only = true]; +} + // TODO: optional validation below should be through a custom validator, which // is too bleeding edge at present without full plugin support @@ -420,7 +433,7 @@ message CreateKeyRequest { Algorithm key_algorithm = 3 [(buf.validate.field).cel = { id: "key_algorithm_defined" message: "The key_algorithm must be one of the defined values." - expression: "this in [1, 2, 3, 4, 5]" // Allow ALGORITHM_RSA_2048, ALGORITHM_RSA_4096, ALGORITHM_EC_P256, ALGORITHM_EC_P384, ALGORITHM_EC_P521 + expression: "this in [1, 2, 3, 4, 5, 6, 7, 8]" // Allow ALGORITHM_RSA_2048, ALGORITHM_RSA_4096, ALGORITHM_EC_P256, ALGORITHM_EC_P384, ALGORITHM_EC_P521, ALGORITHM_HPQT_XWING, ALGORITHM_HPQT_SECP256R1_MLKEM768, ALGORITHM_HPQT_SECP384R1_MLKEM1024 }]; // The algorithm to be used for the key // Required KeyMode key_mode = 4 [(buf.validate.field).cel = { @@ -464,7 +477,7 @@ message ListKeysRequest { Algorithm key_algorithm = 1 [(buf.validate.field).cel = { id: "key_algorithm_defined" message: "The key_algorithm must be one of the defined values." - expression: "this in [0, 1, 2, 3, 4, 5]" // Allow unspecified and object.Algorithm values for currently supported RSA bit sizes and EC curve types + expression: "this in [0, 1, 2, 3, 4, 5, 6, 7, 8]" // Allow unspecified and all supported algorithm values }]; // Filter keys by algorithm oneof kas_filter { @@ -481,6 +494,13 @@ message ListKeysRequest { // Optional policy.PageRequest pagination = 10; // Pagination request for the list of keys + + // Optional - CONSTRAINT: max 1 item + // Sort defaults: + // - direction UNSPECIFIED defaults to DESC for the specified field + // - field UNSPECIFIED defaults to created_at with the specified direction + // - both UNSPECIFIED or sort omitted defaults to created_at DESC + repeated KasKeysSort sort = 11 [(buf.validate.field).repeated.max_items = 1]; } // Response to a ListKeysRequest, containing the list of asymmetric keys and pagination information @@ -567,7 +587,7 @@ message RotateKeyRequest { Algorithm algorithm = 2 [(buf.validate.field).cel = { id: "key_algorithm_defined" message: "The key_algorithm must be one of the defined values." - expression: "this in [1, 2, 3, 4, 5]" // Allow ALGORITHM_RSA_2048, ALGORITHM_RSA_4096, ALGORITHM_EC_P256, ALGORITHM_EC_P384, ALGORITHM_EC_P521 + expression: "this in [1, 2, 3, 4, 5, 6, 7, 8]" // Allow ALGORITHM_RSA_2048, ALGORITHM_RSA_4096, ALGORITHM_EC_P256, ALGORITHM_EC_P384, ALGORITHM_EC_P521, ALGORITHM_HPQT_XWING, ALGORITHM_HPQT_SECP256R1_MLKEM768, ALGORITHM_HPQT_SECP384R1_MLKEM1024 }]; // Required KeyMode key_mode = 3 [ @@ -670,7 +690,6 @@ message ListKeyMappingsResponse { service KeyAccessServerRegistryService { rpc ListKeyAccessServers(ListKeyAccessServersRequest) returns (ListKeyAccessServersResponse) { - option (google.api.http) = {get: "/key-access-servers"}; option idempotency_level = NO_SIDE_EFFECTS; } diff --git a/packages/otdf-python-proto/proto-files/policy/namespaces/namespaces.proto b/packages/otdf-python-proto/proto-files/policy/namespaces/namespaces.proto index 547604d4..3093ba13 100644 --- a/packages/otdf-python-proto/proto-files/policy/namespaces/namespaces.proto +++ b/packages/otdf-python-proto/proto-files/policy/namespaces/namespaces.proto @@ -87,8 +87,8 @@ enum SortNamespacesType { } message NamespacesSort { - SortNamespacesType field = 1; - policy.SortDirection direction = 2; + SortNamespacesType field = 1 [(buf.validate.field).enum.defined_only = true]; + policy.SortDirection direction = 2 [(buf.validate.field).enum.defined_only = true]; } message ListNamespacesRequest { @@ -99,7 +99,11 @@ message ListNamespacesRequest { // Optional policy.PageRequest pagination = 10; - // Optional + // Optional - CONSTRAINT: max 1 item + // Sort defaults: + // - direction UNSPECIFIED defaults to DESC for the specified field + // - field UNSPECIFIED defaults to created_at with the specified direction + // - both UNSPECIFIED or sort omitted defaults to created_at DESC repeated NamespacesSort sort = 11 [(buf.validate.field).repeated.max_items = 1]; } message ListNamespacesResponse { diff --git a/packages/otdf-python-proto/proto-files/policy/objects.proto b/packages/otdf-python-proto/proto-files/policy/objects.proto index a54bc251..3e6ee4d7 100644 --- a/packages/otdf-python-proto/proto-files/policy/objects.proto +++ b/packages/otdf-python-proto/proto-files/policy/objects.proto @@ -297,6 +297,9 @@ message ResourceMappingGroup { // per namespace string name = 3 [(buf.validate.field).required = true]; + // the fully qualified name of the resource mapping group + string fqn = 4; + // Common metadata common.Metadata metadata = 100; } @@ -388,6 +391,9 @@ enum KasPublicKeyAlgEnum { KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP256R1 = 5; KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP384R1 = 6; KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP521R1 = 7; + KAS_PUBLIC_KEY_ALG_ENUM_HPQT_XWING = 10; + KAS_PUBLIC_KEY_ALG_ENUM_HPQT_SECP256R1_MLKEM768 = 11; + KAS_PUBLIC_KEY_ALG_ENUM_HPQT_SECP384R1_MLKEM1024 = 12; } // Deprecated @@ -478,6 +484,8 @@ message RegisteredResourceValue { repeated ActionAttributeValue action_attribute_values = 4; + string fqn = 5; + // Common metadata common.Metadata metadata = 100; } @@ -532,6 +540,9 @@ message ObligationTrigger { repeated RequestContext context = 5; + // The source namespace for this trigger, derived from the attribute value and action. + Namespace namespace = 11; + common.Metadata metadata = 100; } @@ -553,6 +564,9 @@ enum Algorithm { ALGORITHM_EC_P256 = 3; ALGORITHM_EC_P384 = 4; ALGORITHM_EC_P521 = 5; + ALGORITHM_HPQT_XWING = 6; + ALGORITHM_HPQT_SECP256R1_MLKEM768 = 7; + ALGORITHM_HPQT_SECP384R1_MLKEM1024 = 8; } // The status of the key diff --git a/packages/otdf-python-proto/proto-files/policy/obligations/obligations.proto b/packages/otdf-python-proto/proto-files/policy/obligations/obligations.proto index c0e5b80e..d6ad3a97 100644 --- a/packages/otdf-python-proto/proto-files/policy/obligations/obligations.proto +++ b/packages/otdf-python-proto/proto-files/policy/obligations/obligations.proto @@ -22,8 +22,8 @@ enum SortObligationsType { } message ObligationsSort { - SortObligationsType field = 1; - policy.SortDirection direction = 2; + SortObligationsType field = 1 [(buf.validate.field).enum.defined_only = true]; + policy.SortDirection direction = 2 [(buf.validate.field).enum.defined_only = true]; } message GetObligationRequest { @@ -166,8 +166,10 @@ message ListObligationsRequest { policy.PageRequest pagination = 10; // Optional - CONSTRAINT: max 1 item - // Default ordering when omitted or when the first entry's field is UNSPECIFIED: - // created_at DESC, then id ASC (tie-breaker). + // Sort defaults: + // - direction UNSPECIFIED defaults to DESC for the specified field + // - field UNSPECIFIED defaults to created_at with the specified direction + // - both UNSPECIFIED or sort omitted defaults to created_at DESC repeated ObligationsSort sort = 11 [(buf.validate.field).repeated.max_items = 1]; } @@ -300,6 +302,9 @@ message GetObligationTriggerResponse { policy.ObligationTrigger trigger = 1; } +// Obligation Triggers are owned by the namespace that owns the action and attribute value, which must +// be the same. In this way, a trigger can intentionally cross namespace boundaries: associating +// obligation values of a different namespace than the one that owns the action being taken or the attribute value. message AddObligationTriggerRequest { // Required common.IdFqnIdentifier obligation_value = 1 [(buf.validate.field).required = true]; diff --git a/packages/otdf-python-proto/proto-files/policy/registeredresources/registered_resources.proto b/packages/otdf-python-proto/proto-files/policy/registeredresources/registered_resources.proto index 024b7c03..f12a1f4a 100644 --- a/packages/otdf-python-proto/proto-files/policy/registeredresources/registered_resources.proto +++ b/packages/otdf-python-proto/proto-files/policy/registeredresources/registered_resources.proto @@ -100,8 +100,8 @@ enum SortRegisteredResourcesType { } message RegisteredResourcesSort { - SortRegisteredResourcesType field = 1; - policy.SortDirection direction = 2; + SortRegisteredResourcesType field = 1 [(buf.validate.field).enum.defined_only = true]; + policy.SortDirection direction = 2 [(buf.validate.field).enum.defined_only = true]; } message ListRegisteredResourcesRequest { @@ -120,8 +120,10 @@ message ListRegisteredResourcesRequest { policy.PageRequest pagination = 10; // Optional - CONSTRAINT: max 1 item - // Default ordering when omitted or when the first entry's field is UNSPECIFIED: - // created_at DESC. + // Sort defaults: + // - direction UNSPECIFIED defaults to DESC for the specified field + // - field UNSPECIFIED defaults to created_at with the specified direction + // - both UNSPECIFIED or sort omitted defaults to created_at DESC repeated RegisteredResourcesSort sort = 11 [(buf.validate.field).repeated.max_items = 1]; } message ListRegisteredResourcesResponse { diff --git a/packages/otdf-python-proto/proto-files/policy/selectors.proto b/packages/otdf-python-proto/proto-files/policy/selectors.proto index 6a54732b..8ad27001 100644 --- a/packages/otdf-python-proto/proto-files/policy/selectors.proto +++ b/packages/otdf-python-proto/proto-files/policy/selectors.proto @@ -53,14 +53,11 @@ message AttributeValueSelector { } // Sorting direction shared across list APIs. -// Notes: -// - When a sort field is provided, UNSPECIFIED is treated as ASC. -// - When the 'sort' field is omitted or the chosen sort 'field' is UNSPECIFIED, -// the endpoint's request message defines the default ordering; see the -// specific List* request docs. +// When the 'sort' field is omitted or the chosen sort 'field' is UNSPECIFIED, +// the endpoint's request message defines the default ordering; see the +// specific List* request docs. enum SortDirection { - // Treated as ASC when a sort field is provided. - SORT_DIRECTION_UNSPECIFIED = 0; // defaults to ASC + SORT_DIRECTION_UNSPECIFIED = 0; SORT_DIRECTION_ASC = 1; SORT_DIRECTION_DESC = 2; } diff --git a/packages/otdf-python-proto/proto-files/policy/subjectmapping/subject_mapping.proto b/packages/otdf-python-proto/proto-files/policy/subjectmapping/subject_mapping.proto index 7157e27b..af6da858 100644 --- a/packages/otdf-python-proto/proto-files/policy/subjectmapping/subject_mapping.proto +++ b/packages/otdf-python-proto/proto-files/policy/subjectmapping/subject_mapping.proto @@ -36,8 +36,8 @@ enum SortSubjectMappingsType { } message SubjectMappingsSort { - SortSubjectMappingsType field = 1; - policy.SortDirection direction = 2; + SortSubjectMappingsType field = 1 [(buf.validate.field).enum.defined_only = true]; + policy.SortDirection direction = 2 [(buf.validate.field).enum.defined_only = true]; } message ListSubjectMappingsRequest { @@ -56,6 +56,10 @@ message ListSubjectMappingsRequest { policy.PageRequest pagination = 10; // Optional - CONSTRAINT: max 1 item + // Sort defaults: + // - direction UNSPECIFIED defaults to DESC for the specified field + // - field UNSPECIFIED defaults to created_at with the specified direction + // - both UNSPECIFIED or sort omitted defaults to created_at DESC repeated SubjectMappingsSort sort = 11 [(buf.validate.field).repeated.max_items = 1]; } message ListSubjectMappingsResponse { @@ -167,8 +171,8 @@ enum SortSubjectConditionSetsType { } message SubjectConditionSetsSort { - SortSubjectConditionSetsType field = 1; - policy.SortDirection direction = 2; + SortSubjectConditionSetsType field = 1 [(buf.validate.field).enum.defined_only = true]; + policy.SortDirection direction = 2 [(buf.validate.field).enum.defined_only = true]; } message ListSubjectConditionSetsRequest { @@ -186,8 +190,10 @@ message ListSubjectConditionSetsRequest { // Optional policy.PageRequest pagination = 10; // Optional - CONSTRAINT: max 1 item - // Default ordering when omitted or when the first entry's field is UNSPECIFIED: - // created_at DESC, then id ASC (tie-breaker). + // Sort defaults: + // - direction UNSPECIFIED defaults to DESC for the specified field + // - field UNSPECIFIED defaults to created_at with the specified direction + // - both UNSPECIFIED or sort omitted defaults to created_at DESC repeated SubjectConditionSetsSort sort = 11 [(buf.validate.field).repeated.max_items = 1]; } message ListSubjectConditionSetsResponse { diff --git a/packages/otdf-python-proto/proto-files/wellknownconfiguration/wellknown_configuration.proto b/packages/otdf-python-proto/proto-files/wellknownconfiguration/wellknown_configuration.proto index b6d2c225..5ee3cd83 100644 --- a/packages/otdf-python-proto/proto-files/wellknownconfiguration/wellknown_configuration.proto +++ b/packages/otdf-python-proto/proto-files/wellknownconfiguration/wellknown_configuration.proto @@ -2,7 +2,6 @@ syntax = "proto3"; package wellknownconfiguration; -import "google/api/annotations.proto"; import "google/protobuf/struct.proto"; message WellKnownConfig { @@ -17,7 +16,6 @@ message GetWellKnownConfigurationResponse { service WellKnownService { rpc GetWellKnownConfiguration(GetWellKnownConfigurationRequest) returns (GetWellKnownConfigurationResponse) { - option (google.api.http) = {get: "/.well-known/opentdf-configuration"}; option idempotency_level = NO_SIDE_EFFECTS; } } diff --git a/packages/otdf-python-proto/scripts/generate_connect_proto.py b/packages/otdf-python-proto/scripts/generate_connect_proto.py index 931ae4b9..5792505f 100644 --- a/packages/otdf-python-proto/scripts/generate_connect_proto.py +++ b/packages/otdf-python-proto/scripts/generate_connect_proto.py @@ -48,7 +48,7 @@ def check_dependencies() -> bool: def copy_opentdf_proto_files(proto_gen_dir: Path, git_tag: str | None = None) -> bool: """Clone OpenTDF platform repository and copy all proto files.""" - GIT_TAG = git_tag or "service/v0.14.0" + GIT_TAG = git_tag or "service/v0.16.0" REPO_URL = "https://github.com/opentdf/platform.git" temp_repo_dir = proto_gen_dir / "temp_platform_repo" diff --git a/packages/otdf-python-proto/src/otdf_python_proto/authorization/authorization_connect.py b/packages/otdf-python-proto/src/otdf_python_proto/authorization/authorization_connect.py index d537845a..105677e4 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/authorization/authorization_connect.py +++ b/packages/otdf-python-proto/src/otdf_python_proto/authorization/authorization_connect.py @@ -7,6 +7,7 @@ from connectrpc.client import ConnectClient, ConnectClientSync from connectrpc.code import Code +from connectrpc.compression import Compression from connectrpc.errors import ConnectError from connectrpc.interceptor import Interceptor, InterceptorSync from connectrpc.method import IdempotencyLevel, MethodInfo @@ -27,7 +28,7 @@ async def get_entitlements(self, request: authorization_dot_authorization__pb2.G class AuthorizationServiceASGIApplication(ConnectASGIApplication[AuthorizationService]): - def __init__(self, service: AuthorizationService | AsyncGenerator[AuthorizationService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None) -> None: + def __init__(self, service: AuthorizationService | AsyncGenerator[AuthorizationService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: super().__init__( service=service, endpoints=lambda svc: { @@ -64,6 +65,7 @@ def __init__(self, service: AuthorizationService | AsyncGenerator[AuthorizationS }, interceptors=interceptors, read_max_bytes=read_max_bytes, + compressions=compressions, ) @property @@ -144,7 +146,7 @@ def get_entitlements(self, request: authorization_dot_authorization__pb2.GetEnti class AuthorizationServiceWSGIApplication(ConnectWSGIApplication): - def __init__(self, service: AuthorizationServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None) -> None: + def __init__(self, service: AuthorizationServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: super().__init__( endpoints={ "/authorization.AuthorizationService/GetDecisions": EndpointSync.unary( @@ -180,6 +182,7 @@ def __init__(self, service: AuthorizationServiceSync, interceptors: Iterable[Int }, interceptors=interceptors, read_max_bytes=read_max_bytes, + compressions=compressions, ) @property diff --git a/packages/otdf-python-proto/src/otdf_python_proto/authorization/authorization_pb2.py b/packages/otdf-python-proto/src/otdf_python_proto/authorization/authorization_pb2.py index 2e9f43a9..a242c703 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/authorization/authorization_pb2.py +++ b/packages/otdf-python-proto/src/otdf_python_proto/authorization/authorization_pb2.py @@ -22,12 +22,11 @@ _sym_db = _symbol_database.Default() -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 from policy import objects_pb2 as policy_dot_objects__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!authorization/authorization.proto\x12\rauthorization\x1a\x1cgoogle/api/annotations.proto\x1a\x19google/protobuf/any.proto\x1a\x14policy/objects.proto\")\n\x05Token\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x10\n\x03jwt\x18\x02 \x01(\tR\x03jwt\"\xc9\x03\n\x06\x45ntity\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12%\n\remail_address\x18\x02 \x01(\tH\x00R\x0c\x65mailAddress\x12\x1d\n\tuser_name\x18\x03 \x01(\tH\x00R\x08userName\x12,\n\x11remote_claims_url\x18\x04 \x01(\tH\x00R\x0fremoteClaimsUrl\x12\x14\n\x04uuid\x18\x05 \x01(\tH\x00R\x04uuid\x12.\n\x06\x63laims\x18\x06 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00R\x06\x63laims\x12\x35\n\x06\x63ustom\x18\x07 \x01(\x0b\x32\x1b.authorization.EntityCustomH\x00R\x06\x63ustom\x12\x1d\n\tclient_id\x18\x08 \x01(\tH\x00R\x08\x63lientId\x12:\n\x08\x63\x61tegory\x18\t \x01(\x0e\x32\x1e.authorization.Entity.CategoryR\x08\x63\x61tegory\"T\n\x08\x43\x61tegory\x12\x18\n\x14\x43\x41TEGORY_UNSPECIFIED\x10\x00\x12\x14\n\x10\x43\x41TEGORY_SUBJECT\x10\x01\x12\x18\n\x14\x43\x41TEGORY_ENVIRONMENT\x10\x02\x42\r\n\x0b\x65ntity_type\"B\n\x0c\x45ntityCustom\x12\x32\n\textension\x18\x01 \x01(\x0b\x32\x14.google.protobuf.AnyR\textension\"P\n\x0b\x45ntityChain\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x31\n\x08\x65ntities\x18\x02 \x03(\x0b\x32\x15.authorization.EntityR\x08\x65ntities\"\xcf\x01\n\x0f\x44\x65\x63isionRequest\x12(\n\x07\x61\x63tions\x18\x01 \x03(\x0b\x32\x0e.policy.ActionR\x07\x61\x63tions\x12?\n\rentity_chains\x18\x02 \x03(\x0b\x32\x1a.authorization.EntityChainR\x0c\x65ntityChains\x12Q\n\x13resource_attributes\x18\x03 \x03(\x0b\x32 .authorization.ResourceAttributeR\x12resourceAttributes\"\xce\x02\n\x10\x44\x65\x63isionResponse\x12&\n\x0f\x65ntity_chain_id\x18\x01 \x01(\tR\rentityChainId\x12\x34\n\x16resource_attributes_id\x18\x02 \x01(\tR\x14resourceAttributesId\x12&\n\x06\x61\x63tion\x18\x03 \x01(\x0b\x32\x0e.policy.ActionR\x06\x61\x63tion\x12\x44\n\x08\x64\x65\x63ision\x18\x04 \x01(\x0e\x32(.authorization.DecisionResponse.DecisionR\x08\x64\x65\x63ision\x12 \n\x0bobligations\x18\x05 \x03(\tR\x0bobligations\"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\"b\n\x13GetDecisionsRequest\x12K\n\x11\x64\x65\x63ision_requests\x18\x01 \x03(\x0b\x32\x1e.authorization.DecisionRequestR\x10\x64\x65\x63isionRequests\"f\n\x14GetDecisionsResponse\x12N\n\x12\x64\x65\x63ision_responses\x18\x01 \x03(\x0b\x32\x1f.authorization.DecisionResponseR\x11\x64\x65\x63isionResponses\"\xfa\x01\n\x16GetEntitlementsRequest\x12\x31\n\x08\x65ntities\x18\x01 \x03(\x0b\x32\x15.authorization.EntityR\x08\x65ntities\x12;\n\x05scope\x18\x02 \x01(\x0b\x32 .authorization.ResourceAttributeH\x00R\x05scope\x88\x01\x01\x12\x45\n\x1cwith_comprehensive_hierarchy\x18\x03 \x01(\x08H\x01R\x1awithComprehensiveHierarchy\x88\x01\x01\x42\x08\n\x06_scopeB\x1f\n\x1d_with_comprehensive_hierarchy\"c\n\x12\x45ntityEntitlements\x12\x1b\n\tentity_id\x18\x01 \x01(\tR\x08\x65ntityId\x12\x30\n\x14\x61ttribute_value_fqns\x18\x02 \x03(\tR\x12\x61ttributeValueFqns\"{\n\x11ResourceAttribute\x12\x34\n\x16resource_attributes_id\x18\x01 \x01(\tR\x14resourceAttributesId\x12\x30\n\x14\x61ttribute_value_fqns\x18\x02 \x03(\tR\x12\x61ttributeValueFqns\"`\n\x17GetEntitlementsResponse\x12\x45\n\x0c\x65ntitlements\x18\x01 \x03(\x0b\x32!.authorization.EntityEntitlementsR\x0c\x65ntitlements\"\xc1\x01\n\x14TokenDecisionRequest\x12(\n\x07\x61\x63tions\x18\x01 \x03(\x0b\x32\x0e.policy.ActionR\x07\x61\x63tions\x12,\n\x06tokens\x18\x02 \x03(\x0b\x32\x14.authorization.TokenR\x06tokens\x12Q\n\x13resource_attributes\x18\x03 \x03(\x0b\x32 .authorization.ResourceAttributeR\x12resourceAttributes\"n\n\x1aGetDecisionsByTokenRequest\x12P\n\x11\x64\x65\x63ision_requests\x18\x01 \x03(\x0b\x32#.authorization.TokenDecisionRequestR\x10\x64\x65\x63isionRequests\"m\n\x1bGetDecisionsByTokenResponse\x12N\n\x12\x64\x65\x63ision_responses\x18\x01 \x03(\x0b\x32\x1f.authorization.DecisionResponseR\x11\x64\x65\x63isionResponses2\x9c\x03\n\x14\x41uthorizationService\x12u\n\x0cGetDecisions\x12\".authorization.GetDecisionsRequest\x1a#.authorization.GetDecisionsResponse\"\x1c\x82\xd3\xe4\x93\x02\x16\"\x11/v1/authorization:\x01*\x12\x8d\x01\n\x13GetDecisionsByToken\x12).authorization.GetDecisionsByTokenRequest\x1a*.authorization.GetDecisionsByTokenResponse\"\x1f\x82\xd3\xe4\x93\x02\x19\"\x17/v1/token/authorization\x12}\n\x0fGetEntitlements\x12%.authorization.GetEntitlementsRequest\x1a&.authorization.GetEntitlementsResponse\"\x1b\x82\xd3\xe4\x93\x02\x15\"\x10/v1/entitlements:\x01*B{\n\x11\x63om.authorizationB\x12\x41uthorizationProtoP\x01\xa2\x02\x03\x41XX\xaa\x02\rAuthorization\xca\x02\rAuthorization\xe2\x02\x19\x41uthorization\\GPBMetadata\xea\x02\rAuthorizationb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!authorization/authorization.proto\x12\rauthorization\x1a\x19google/protobuf/any.proto\x1a\x14policy/objects.proto\")\n\x05Token\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x10\n\x03jwt\x18\x02 \x01(\tR\x03jwt\"\xc9\x03\n\x06\x45ntity\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12%\n\remail_address\x18\x02 \x01(\tH\x00R\x0c\x65mailAddress\x12\x1d\n\tuser_name\x18\x03 \x01(\tH\x00R\x08userName\x12,\n\x11remote_claims_url\x18\x04 \x01(\tH\x00R\x0fremoteClaimsUrl\x12\x14\n\x04uuid\x18\x05 \x01(\tH\x00R\x04uuid\x12.\n\x06\x63laims\x18\x06 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00R\x06\x63laims\x12\x35\n\x06\x63ustom\x18\x07 \x01(\x0b\x32\x1b.authorization.EntityCustomH\x00R\x06\x63ustom\x12\x1d\n\tclient_id\x18\x08 \x01(\tH\x00R\x08\x63lientId\x12:\n\x08\x63\x61tegory\x18\t \x01(\x0e\x32\x1e.authorization.Entity.CategoryR\x08\x63\x61tegory\"T\n\x08\x43\x61tegory\x12\x18\n\x14\x43\x41TEGORY_UNSPECIFIED\x10\x00\x12\x14\n\x10\x43\x41TEGORY_SUBJECT\x10\x01\x12\x18\n\x14\x43\x41TEGORY_ENVIRONMENT\x10\x02\x42\r\n\x0b\x65ntity_type\"B\n\x0c\x45ntityCustom\x12\x32\n\textension\x18\x01 \x01(\x0b\x32\x14.google.protobuf.AnyR\textension\"P\n\x0b\x45ntityChain\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x31\n\x08\x65ntities\x18\x02 \x03(\x0b\x32\x15.authorization.EntityR\x08\x65ntities\"\xcf\x01\n\x0f\x44\x65\x63isionRequest\x12(\n\x07\x61\x63tions\x18\x01 \x03(\x0b\x32\x0e.policy.ActionR\x07\x61\x63tions\x12?\n\rentity_chains\x18\x02 \x03(\x0b\x32\x1a.authorization.EntityChainR\x0c\x65ntityChains\x12Q\n\x13resource_attributes\x18\x03 \x03(\x0b\x32 .authorization.ResourceAttributeR\x12resourceAttributes\"\xce\x02\n\x10\x44\x65\x63isionResponse\x12&\n\x0f\x65ntity_chain_id\x18\x01 \x01(\tR\rentityChainId\x12\x34\n\x16resource_attributes_id\x18\x02 \x01(\tR\x14resourceAttributesId\x12&\n\x06\x61\x63tion\x18\x03 \x01(\x0b\x32\x0e.policy.ActionR\x06\x61\x63tion\x12\x44\n\x08\x64\x65\x63ision\x18\x04 \x01(\x0e\x32(.authorization.DecisionResponse.DecisionR\x08\x64\x65\x63ision\x12 \n\x0bobligations\x18\x05 \x03(\tR\x0bobligations\"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\"b\n\x13GetDecisionsRequest\x12K\n\x11\x64\x65\x63ision_requests\x18\x01 \x03(\x0b\x32\x1e.authorization.DecisionRequestR\x10\x64\x65\x63isionRequests\"f\n\x14GetDecisionsResponse\x12N\n\x12\x64\x65\x63ision_responses\x18\x01 \x03(\x0b\x32\x1f.authorization.DecisionResponseR\x11\x64\x65\x63isionResponses\"\xfa\x01\n\x16GetEntitlementsRequest\x12\x31\n\x08\x65ntities\x18\x01 \x03(\x0b\x32\x15.authorization.EntityR\x08\x65ntities\x12;\n\x05scope\x18\x02 \x01(\x0b\x32 .authorization.ResourceAttributeH\x00R\x05scope\x88\x01\x01\x12\x45\n\x1cwith_comprehensive_hierarchy\x18\x03 \x01(\x08H\x01R\x1awithComprehensiveHierarchy\x88\x01\x01\x42\x08\n\x06_scopeB\x1f\n\x1d_with_comprehensive_hierarchy\"c\n\x12\x45ntityEntitlements\x12\x1b\n\tentity_id\x18\x01 \x01(\tR\x08\x65ntityId\x12\x30\n\x14\x61ttribute_value_fqns\x18\x02 \x03(\tR\x12\x61ttributeValueFqns\"{\n\x11ResourceAttribute\x12\x34\n\x16resource_attributes_id\x18\x01 \x01(\tR\x14resourceAttributesId\x12\x30\n\x14\x61ttribute_value_fqns\x18\x02 \x03(\tR\x12\x61ttributeValueFqns\"`\n\x17GetEntitlementsResponse\x12\x45\n\x0c\x65ntitlements\x18\x01 \x03(\x0b\x32!.authorization.EntityEntitlementsR\x0c\x65ntitlements\"\xc1\x01\n\x14TokenDecisionRequest\x12(\n\x07\x61\x63tions\x18\x01 \x03(\x0b\x32\x0e.policy.ActionR\x07\x61\x63tions\x12,\n\x06tokens\x18\x02 \x03(\x0b\x32\x14.authorization.TokenR\x06tokens\x12Q\n\x13resource_attributes\x18\x03 \x03(\x0b\x32 .authorization.ResourceAttributeR\x12resourceAttributes\"n\n\x1aGetDecisionsByTokenRequest\x12P\n\x11\x64\x65\x63ision_requests\x18\x01 \x03(\x0b\x32#.authorization.TokenDecisionRequestR\x10\x64\x65\x63isionRequests\"m\n\x1bGetDecisionsByTokenResponse\x12N\n\x12\x64\x65\x63ision_responses\x18\x01 \x03(\x0b\x32\x1f.authorization.DecisionResponseR\x11\x64\x65\x63isionResponses2\xc5\x02\n\x14\x41uthorizationService\x12Y\n\x0cGetDecisions\x12\".authorization.GetDecisionsRequest\x1a#.authorization.GetDecisionsResponse\"\x00\x12n\n\x13GetDecisionsByToken\x12).authorization.GetDecisionsByTokenRequest\x1a*.authorization.GetDecisionsByTokenResponse\"\x00\x12\x62\n\x0fGetEntitlements\x12%.authorization.GetEntitlementsRequest\x1a&.authorization.GetEntitlementsResponse\"\x00\x42{\n\x11\x63om.authorizationB\x12\x41uthorizationProtoP\x01\xa2\x02\x03\x41XX\xaa\x02\rAuthorization\xca\x02\rAuthorization\xe2\x02\x19\x41uthorization\\GPBMetadata\xea\x02\rAuthorizationb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -35,46 +34,40 @@ if not _descriptor._USE_C_DESCRIPTORS: _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\021com.authorizationB\022AuthorizationProtoP\001\242\002\003AXX\252\002\rAuthorization\312\002\rAuthorization\342\002\031Authorization\\GPBMetadata\352\002\rAuthorization' - _globals['_AUTHORIZATIONSERVICE'].methods_by_name['GetDecisions']._loaded_options = None - _globals['_AUTHORIZATIONSERVICE'].methods_by_name['GetDecisions']._serialized_options = b'\202\323\344\223\002\026\"\021/v1/authorization:\001*' - _globals['_AUTHORIZATIONSERVICE'].methods_by_name['GetDecisionsByToken']._loaded_options = None - _globals['_AUTHORIZATIONSERVICE'].methods_by_name['GetDecisionsByToken']._serialized_options = b'\202\323\344\223\002\031\"\027/v1/token/authorization' - _globals['_AUTHORIZATIONSERVICE'].methods_by_name['GetEntitlements']._loaded_options = None - _globals['_AUTHORIZATIONSERVICE'].methods_by_name['GetEntitlements']._serialized_options = b'\202\323\344\223\002\025\"\020/v1/entitlements:\001*' - _globals['_TOKEN']._serialized_start=131 - _globals['_TOKEN']._serialized_end=172 - _globals['_ENTITY']._serialized_start=175 - _globals['_ENTITY']._serialized_end=632 - _globals['_ENTITY_CATEGORY']._serialized_start=533 - _globals['_ENTITY_CATEGORY']._serialized_end=617 - _globals['_ENTITYCUSTOM']._serialized_start=634 - _globals['_ENTITYCUSTOM']._serialized_end=700 - _globals['_ENTITYCHAIN']._serialized_start=702 - _globals['_ENTITYCHAIN']._serialized_end=782 - _globals['_DECISIONREQUEST']._serialized_start=785 - _globals['_DECISIONREQUEST']._serialized_end=992 - _globals['_DECISIONRESPONSE']._serialized_start=995 - _globals['_DECISIONRESPONSE']._serialized_end=1329 - _globals['_DECISIONRESPONSE_DECISION']._serialized_start=1253 - _globals['_DECISIONRESPONSE_DECISION']._serialized_end=1329 - _globals['_GETDECISIONSREQUEST']._serialized_start=1331 - _globals['_GETDECISIONSREQUEST']._serialized_end=1429 - _globals['_GETDECISIONSRESPONSE']._serialized_start=1431 - _globals['_GETDECISIONSRESPONSE']._serialized_end=1533 - _globals['_GETENTITLEMENTSREQUEST']._serialized_start=1536 - _globals['_GETENTITLEMENTSREQUEST']._serialized_end=1786 - _globals['_ENTITYENTITLEMENTS']._serialized_start=1788 - _globals['_ENTITYENTITLEMENTS']._serialized_end=1887 - _globals['_RESOURCEATTRIBUTE']._serialized_start=1889 - _globals['_RESOURCEATTRIBUTE']._serialized_end=2012 - _globals['_GETENTITLEMENTSRESPONSE']._serialized_start=2014 - _globals['_GETENTITLEMENTSRESPONSE']._serialized_end=2110 - _globals['_TOKENDECISIONREQUEST']._serialized_start=2113 - _globals['_TOKENDECISIONREQUEST']._serialized_end=2306 - _globals['_GETDECISIONSBYTOKENREQUEST']._serialized_start=2308 - _globals['_GETDECISIONSBYTOKENREQUEST']._serialized_end=2418 - _globals['_GETDECISIONSBYTOKENRESPONSE']._serialized_start=2420 - _globals['_GETDECISIONSBYTOKENRESPONSE']._serialized_end=2529 - _globals['_AUTHORIZATIONSERVICE']._serialized_start=2532 - _globals['_AUTHORIZATIONSERVICE']._serialized_end=2944 + _globals['_TOKEN']._serialized_start=101 + _globals['_TOKEN']._serialized_end=142 + _globals['_ENTITY']._serialized_start=145 + _globals['_ENTITY']._serialized_end=602 + _globals['_ENTITY_CATEGORY']._serialized_start=503 + _globals['_ENTITY_CATEGORY']._serialized_end=587 + _globals['_ENTITYCUSTOM']._serialized_start=604 + _globals['_ENTITYCUSTOM']._serialized_end=670 + _globals['_ENTITYCHAIN']._serialized_start=672 + _globals['_ENTITYCHAIN']._serialized_end=752 + _globals['_DECISIONREQUEST']._serialized_start=755 + _globals['_DECISIONREQUEST']._serialized_end=962 + _globals['_DECISIONRESPONSE']._serialized_start=965 + _globals['_DECISIONRESPONSE']._serialized_end=1299 + _globals['_DECISIONRESPONSE_DECISION']._serialized_start=1223 + _globals['_DECISIONRESPONSE_DECISION']._serialized_end=1299 + _globals['_GETDECISIONSREQUEST']._serialized_start=1301 + _globals['_GETDECISIONSREQUEST']._serialized_end=1399 + _globals['_GETDECISIONSRESPONSE']._serialized_start=1401 + _globals['_GETDECISIONSRESPONSE']._serialized_end=1503 + _globals['_GETENTITLEMENTSREQUEST']._serialized_start=1506 + _globals['_GETENTITLEMENTSREQUEST']._serialized_end=1756 + _globals['_ENTITYENTITLEMENTS']._serialized_start=1758 + _globals['_ENTITYENTITLEMENTS']._serialized_end=1857 + _globals['_RESOURCEATTRIBUTE']._serialized_start=1859 + _globals['_RESOURCEATTRIBUTE']._serialized_end=1982 + _globals['_GETENTITLEMENTSRESPONSE']._serialized_start=1984 + _globals['_GETENTITLEMENTSRESPONSE']._serialized_end=2080 + _globals['_TOKENDECISIONREQUEST']._serialized_start=2083 + _globals['_TOKENDECISIONREQUEST']._serialized_end=2276 + _globals['_GETDECISIONSBYTOKENREQUEST']._serialized_start=2278 + _globals['_GETDECISIONSBYTOKENREQUEST']._serialized_end=2388 + _globals['_GETDECISIONSBYTOKENRESPONSE']._serialized_start=2390 + _globals['_GETDECISIONSBYTOKENRESPONSE']._serialized_end=2499 + _globals['_AUTHORIZATIONSERVICE']._serialized_start=2502 + _globals['_AUTHORIZATIONSERVICE']._serialized_end=2827 # @@protoc_insertion_point(module_scope) diff --git a/packages/otdf-python-proto/src/otdf_python_proto/authorization/authorization_pb2.pyi b/packages/otdf-python-proto/src/otdf_python_proto/authorization/authorization_pb2.pyi index a84d24b5..9bf5df23 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/authorization/authorization_pb2.pyi +++ b/packages/otdf-python-proto/src/otdf_python_proto/authorization/authorization_pb2.pyi @@ -1,4 +1,3 @@ -from google.api import annotations_pb2 as _annotations_pb2 from google.protobuf import any_pb2 as _any_pb2 from policy import objects_pb2 as _objects_pb2 from google.protobuf.internal import containers as _containers diff --git a/packages/otdf-python-proto/src/otdf_python_proto/authorization/v2/authorization_connect.py b/packages/otdf-python-proto/src/otdf_python_proto/authorization/v2/authorization_connect.py index cb7329db..d32e69bf 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/authorization/v2/authorization_connect.py +++ b/packages/otdf-python-proto/src/otdf_python_proto/authorization/v2/authorization_connect.py @@ -7,6 +7,7 @@ from connectrpc.client import ConnectClient, ConnectClientSync from connectrpc.code import Code +from connectrpc.compression import Compression from connectrpc.errors import ConnectError from connectrpc.interceptor import Interceptor, InterceptorSync from connectrpc.method import IdempotencyLevel, MethodInfo @@ -30,7 +31,7 @@ async def get_entitlements(self, request: authorization_dot_v2_dot_authorization class AuthorizationServiceASGIApplication(ConnectASGIApplication[AuthorizationService]): - def __init__(self, service: AuthorizationService | AsyncGenerator[AuthorizationService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None) -> None: + def __init__(self, service: AuthorizationService | AsyncGenerator[AuthorizationService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: super().__init__( service=service, endpoints=lambda svc: { @@ -77,6 +78,7 @@ def __init__(self, service: AuthorizationService | AsyncGenerator[AuthorizationS }, interceptors=interceptors, read_max_bytes=read_max_bytes, + compressions=compressions, ) @property @@ -179,7 +181,7 @@ def get_entitlements(self, request: authorization_dot_v2_dot_authorization__pb2. class AuthorizationServiceWSGIApplication(ConnectWSGIApplication): - def __init__(self, service: AuthorizationServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None) -> None: + def __init__(self, service: AuthorizationServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: super().__init__( endpoints={ "/authorization.v2.AuthorizationService/GetDecision": EndpointSync.unary( @@ -225,6 +227,7 @@ def __init__(self, service: AuthorizationServiceSync, interceptors: Iterable[Int }, interceptors=interceptors, read_max_bytes=read_max_bytes, + compressions=compressions, ) @property diff --git a/packages/otdf-python-proto/src/otdf_python_proto/entityresolution/entity_resolution_connect.py b/packages/otdf-python-proto/src/otdf_python_proto/entityresolution/entity_resolution_connect.py index 3c910d17..6f37305a 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/entityresolution/entity_resolution_connect.py +++ b/packages/otdf-python-proto/src/otdf_python_proto/entityresolution/entity_resolution_connect.py @@ -7,6 +7,7 @@ from connectrpc.client import ConnectClient, ConnectClientSync from connectrpc.code import Code +from connectrpc.compression import Compression from connectrpc.errors import ConnectError from connectrpc.interceptor import Interceptor, InterceptorSync from connectrpc.method import IdempotencyLevel, MethodInfo @@ -24,7 +25,7 @@ async def create_entity_chain_from_jwt(self, request: entityresolution_dot_entit class EntityResolutionServiceASGIApplication(ConnectASGIApplication[EntityResolutionService]): - def __init__(self, service: EntityResolutionService | AsyncGenerator[EntityResolutionService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None) -> None: + def __init__(self, service: EntityResolutionService | AsyncGenerator[EntityResolutionService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: super().__init__( service=service, endpoints=lambda svc: { @@ -51,6 +52,7 @@ def __init__(self, service: EntityResolutionService | AsyncGenerator[EntityResol }, interceptors=interceptors, read_max_bytes=read_max_bytes, + compressions=compressions, ) @property @@ -109,7 +111,7 @@ def create_entity_chain_from_jwt(self, request: entityresolution_dot_entity__res class EntityResolutionServiceWSGIApplication(ConnectWSGIApplication): - def __init__(self, service: EntityResolutionServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None) -> None: + def __init__(self, service: EntityResolutionServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: super().__init__( endpoints={ "/entityresolution.EntityResolutionService/ResolveEntities": EndpointSync.unary( @@ -135,6 +137,7 @@ def __init__(self, service: EntityResolutionServiceSync, interceptors: Iterable[ }, interceptors=interceptors, read_max_bytes=read_max_bytes, + compressions=compressions, ) @property diff --git a/packages/otdf-python-proto/src/otdf_python_proto/entityresolution/entity_resolution_pb2.py b/packages/otdf-python-proto/src/otdf_python_proto/entityresolution/entity_resolution_pb2.py index 11e5907d..aa637dcf 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/entityresolution/entity_resolution_pb2.py +++ b/packages/otdf-python-proto/src/otdf_python_proto/entityresolution/entity_resolution_pb2.py @@ -23,12 +23,11 @@ from authorization import authorization_pb2 as authorization_dot_authorization__pb2 -from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 +from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n(entityresolution/entity_resolution.proto\x12\x10\x65ntityresolution\x1a!authorization/authorization.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x19google/protobuf/any.proto\x1a\x1cgoogle/api/annotations.proto\"K\n\x16ResolveEntitiesRequest\x12\x31\n\x08\x65ntities\x18\x01 \x03(\x0b\x32\x15.authorization.EntityR\x08\x65ntities\"{\n\x14\x45ntityRepresentation\x12\x42\n\x10\x61\x64\x64itional_props\x18\x01 \x03(\x0b\x32\x17.google.protobuf.StructR\x0f\x61\x64\x64itionalProps\x12\x1f\n\x0boriginal_id\x18\x02 \x01(\tR\noriginalId\"x\n\x17ResolveEntitiesResponse\x12]\n\x16\x65ntity_representations\x18\x01 \x03(\x0b\x32&.entityresolution.EntityRepresentationR\x15\x65ntityRepresentations\"\x8b\x01\n\x13\x45ntityNotFoundError\x12\x12\n\x04\x63ode\x18\x01 \x01(\x05R\x04\x63ode\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message\x12.\n\x07\x64\x65tails\x18\x03 \x03(\x0b\x32\x14.google.protobuf.AnyR\x07\x64\x65tails\x12\x16\n\x06\x65ntity\x18\x04 \x01(\tR\x06\x65ntity\"O\n\x1f\x43reateEntityChainFromJwtRequest\x12,\n\x06tokens\x18\x01 \x03(\x0b\x32\x14.authorization.TokenR\x06tokens\"c\n CreateEntityChainFromJwtResponse\x12?\n\rentity_chains\x18\x01 \x03(\x0b\x32\x1a.authorization.EntityChainR\x0c\x65ntityChains2\xd6\x02\n\x17\x45ntityResolutionService\x12\x8c\x01\n\x0fResolveEntities\x12(.entityresolution.ResolveEntitiesRequest\x1a).entityresolution.ResolveEntitiesResponse\"$\x82\xd3\xe4\x93\x02\x1e\"\x19/entityresolution/resolve:\x01*\x12\xab\x01\n\x18\x43reateEntityChainFromJwt\x12\x31.entityresolution.CreateEntityChainFromJwtRequest\x1a\x32.entityresolution.CreateEntityChainFromJwtResponse\"(\x82\xd3\xe4\x93\x02\"\"\x1d/entityresolution/entitychain:\x01*B\x8d\x01\n\x14\x63om.entityresolutionB\x15\x45ntityResolutionProtoP\x01\xa2\x02\x03\x45XX\xaa\x02\x10\x45ntityresolution\xca\x02\x10\x45ntityresolution\xe2\x02\x1c\x45ntityresolution\\GPBMetadata\xea\x02\x10\x45ntityresolutionb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n(entityresolution/entity_resolution.proto\x12\x10\x65ntityresolution\x1a!authorization/authorization.proto\x1a\x19google/protobuf/any.proto\x1a\x1cgoogle/protobuf/struct.proto\"K\n\x16ResolveEntitiesRequest\x12\x31\n\x08\x65ntities\x18\x01 \x03(\x0b\x32\x15.authorization.EntityR\x08\x65ntities\"{\n\x14\x45ntityRepresentation\x12\x42\n\x10\x61\x64\x64itional_props\x18\x01 \x03(\x0b\x32\x17.google.protobuf.StructR\x0f\x61\x64\x64itionalProps\x12\x1f\n\x0boriginal_id\x18\x02 \x01(\tR\noriginalId\"x\n\x17ResolveEntitiesResponse\x12]\n\x16\x65ntity_representations\x18\x01 \x03(\x0b\x32&.entityresolution.EntityRepresentationR\x15\x65ntityRepresentations\"\x8b\x01\n\x13\x45ntityNotFoundError\x12\x12\n\x04\x63ode\x18\x01 \x01(\x05R\x04\x63ode\x12\x18\n\x07message\x18\x02 \x01(\tR\x07message\x12.\n\x07\x64\x65tails\x18\x03 \x03(\x0b\x32\x14.google.protobuf.AnyR\x07\x64\x65tails\x12\x16\n\x06\x65ntity\x18\x04 \x01(\tR\x06\x65ntity\"O\n\x1f\x43reateEntityChainFromJwtRequest\x12,\n\x06tokens\x18\x01 \x03(\x0b\x32\x14.authorization.TokenR\x06tokens\"c\n CreateEntityChainFromJwtResponse\x12?\n\rentity_chains\x18\x01 \x03(\x0b\x32\x1a.authorization.EntityChainR\x0c\x65ntityChains2\x89\x02\n\x17\x45ntityResolutionService\x12h\n\x0fResolveEntities\x12(.entityresolution.ResolveEntitiesRequest\x1a).entityresolution.ResolveEntitiesResponse\"\x00\x12\x83\x01\n\x18\x43reateEntityChainFromJwt\x12\x31.entityresolution.CreateEntityChainFromJwtRequest\x1a\x32.entityresolution.CreateEntityChainFromJwtResponse\"\x00\x42\x8d\x01\n\x14\x63om.entityresolutionB\x15\x45ntityResolutionProtoP\x01\xa2\x02\x03\x45XX\xaa\x02\x10\x45ntityresolution\xca\x02\x10\x45ntityresolution\xe2\x02\x1c\x45ntityresolution\\GPBMetadata\xea\x02\x10\x45ntityresolutionb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -36,22 +35,18 @@ if not _descriptor._USE_C_DESCRIPTORS: _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\024com.entityresolutionB\025EntityResolutionProtoP\001\242\002\003EXX\252\002\020Entityresolution\312\002\020Entityresolution\342\002\034Entityresolution\\GPBMetadata\352\002\020Entityresolution' - _globals['_ENTITYRESOLUTIONSERVICE'].methods_by_name['ResolveEntities']._loaded_options = None - _globals['_ENTITYRESOLUTIONSERVICE'].methods_by_name['ResolveEntities']._serialized_options = b'\202\323\344\223\002\036\"\031/entityresolution/resolve:\001*' - _globals['_ENTITYRESOLUTIONSERVICE'].methods_by_name['CreateEntityChainFromJwt']._loaded_options = None - _globals['_ENTITYRESOLUTIONSERVICE'].methods_by_name['CreateEntityChainFromJwt']._serialized_options = b'\202\323\344\223\002\"\"\035/entityresolution/entitychain:\001*' - _globals['_RESOLVEENTITIESREQUEST']._serialized_start=184 - _globals['_RESOLVEENTITIESREQUEST']._serialized_end=259 - _globals['_ENTITYREPRESENTATION']._serialized_start=261 - _globals['_ENTITYREPRESENTATION']._serialized_end=384 - _globals['_RESOLVEENTITIESRESPONSE']._serialized_start=386 - _globals['_RESOLVEENTITIESRESPONSE']._serialized_end=506 - _globals['_ENTITYNOTFOUNDERROR']._serialized_start=509 - _globals['_ENTITYNOTFOUNDERROR']._serialized_end=648 - _globals['_CREATEENTITYCHAINFROMJWTREQUEST']._serialized_start=650 - _globals['_CREATEENTITYCHAINFROMJWTREQUEST']._serialized_end=729 - _globals['_CREATEENTITYCHAINFROMJWTRESPONSE']._serialized_start=731 - _globals['_CREATEENTITYCHAINFROMJWTRESPONSE']._serialized_end=830 - _globals['_ENTITYRESOLUTIONSERVICE']._serialized_start=833 - _globals['_ENTITYRESOLUTIONSERVICE']._serialized_end=1175 + _globals['_RESOLVEENTITIESREQUEST']._serialized_start=154 + _globals['_RESOLVEENTITIESREQUEST']._serialized_end=229 + _globals['_ENTITYREPRESENTATION']._serialized_start=231 + _globals['_ENTITYREPRESENTATION']._serialized_end=354 + _globals['_RESOLVEENTITIESRESPONSE']._serialized_start=356 + _globals['_RESOLVEENTITIESRESPONSE']._serialized_end=476 + _globals['_ENTITYNOTFOUNDERROR']._serialized_start=479 + _globals['_ENTITYNOTFOUNDERROR']._serialized_end=618 + _globals['_CREATEENTITYCHAINFROMJWTREQUEST']._serialized_start=620 + _globals['_CREATEENTITYCHAINFROMJWTREQUEST']._serialized_end=699 + _globals['_CREATEENTITYCHAINFROMJWTRESPONSE']._serialized_start=701 + _globals['_CREATEENTITYCHAINFROMJWTRESPONSE']._serialized_end=800 + _globals['_ENTITYRESOLUTIONSERVICE']._serialized_start=803 + _globals['_ENTITYRESOLUTIONSERVICE']._serialized_end=1068 # @@protoc_insertion_point(module_scope) diff --git a/packages/otdf-python-proto/src/otdf_python_proto/entityresolution/entity_resolution_pb2.pyi b/packages/otdf-python-proto/src/otdf_python_proto/entityresolution/entity_resolution_pb2.pyi index 8b48ce66..2ab606ec 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/entityresolution/entity_resolution_pb2.pyi +++ b/packages/otdf-python-proto/src/otdf_python_proto/entityresolution/entity_resolution_pb2.pyi @@ -1,7 +1,6 @@ from authorization import authorization_pb2 as _authorization_pb2 -from google.protobuf import struct_pb2 as _struct_pb2 from google.protobuf import any_pb2 as _any_pb2 -from google.api import annotations_pb2 as _annotations_pb2 +from google.protobuf import struct_pb2 as _struct_pb2 from google.protobuf.internal import containers as _containers from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message diff --git a/packages/otdf-python-proto/src/otdf_python_proto/entityresolution/v2/entity_resolution_connect.py b/packages/otdf-python-proto/src/otdf_python_proto/entityresolution/v2/entity_resolution_connect.py index 1ba558a9..9147b8ff 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/entityresolution/v2/entity_resolution_connect.py +++ b/packages/otdf-python-proto/src/otdf_python_proto/entityresolution/v2/entity_resolution_connect.py @@ -7,6 +7,7 @@ from connectrpc.client import ConnectClient, ConnectClientSync from connectrpc.code import Code +from connectrpc.compression import Compression from connectrpc.errors import ConnectError from connectrpc.interceptor import Interceptor, InterceptorSync from connectrpc.method import IdempotencyLevel, MethodInfo @@ -24,7 +25,7 @@ async def create_entity_chains_from_tokens(self, request: entityresolution_dot_v class EntityResolutionServiceASGIApplication(ConnectASGIApplication[EntityResolutionService]): - def __init__(self, service: EntityResolutionService | AsyncGenerator[EntityResolutionService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None) -> None: + def __init__(self, service: EntityResolutionService | AsyncGenerator[EntityResolutionService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: super().__init__( service=service, endpoints=lambda svc: { @@ -51,6 +52,7 @@ def __init__(self, service: EntityResolutionService | AsyncGenerator[EntityResol }, interceptors=interceptors, read_max_bytes=read_max_bytes, + compressions=compressions, ) @property @@ -109,7 +111,7 @@ def create_entity_chains_from_tokens(self, request: entityresolution_dot_v2_dot_ class EntityResolutionServiceWSGIApplication(ConnectWSGIApplication): - def __init__(self, service: EntityResolutionServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None) -> None: + def __init__(self, service: EntityResolutionServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: super().__init__( endpoints={ "/entityresolution.v2.EntityResolutionService/ResolveEntities": EndpointSync.unary( @@ -135,6 +137,7 @@ def __init__(self, service: EntityResolutionServiceSync, interceptors: Iterable[ }, interceptors=interceptors, read_max_bytes=read_max_bytes, + compressions=compressions, ) @property diff --git a/packages/otdf-python-proto/src/otdf_python_proto/kas/kas_connect.py b/packages/otdf-python-proto/src/otdf_python_proto/kas/kas_connect.py index a45ba4de..0f921e53 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/kas/kas_connect.py +++ b/packages/otdf-python-proto/src/otdf_python_proto/kas/kas_connect.py @@ -7,6 +7,7 @@ from connectrpc.client import ConnectClient, ConnectClientSync from connectrpc.code import Code +from connectrpc.compression import Compression from connectrpc.errors import ConnectError from connectrpc.interceptor import Interceptor, InterceptorSync from connectrpc.method import IdempotencyLevel, MethodInfo @@ -28,7 +29,7 @@ async def rewrap(self, request: kas_dot_kas__pb2.RewrapRequest, ctx: RequestCont class AccessServiceASGIApplication(ConnectASGIApplication[AccessService]): - def __init__(self, service: AccessService | AsyncGenerator[AccessService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None) -> None: + def __init__(self, service: AccessService | AsyncGenerator[AccessService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: super().__init__( service=service, endpoints=lambda svc: { @@ -65,6 +66,7 @@ def __init__(self, service: AccessService | AsyncGenerator[AccessService], *, in }, interceptors=interceptors, read_max_bytes=read_max_bytes, + compressions=compressions, ) @property @@ -149,7 +151,7 @@ def rewrap(self, request: kas_dot_kas__pb2.RewrapRequest, ctx: RequestContext) - class AccessServiceWSGIApplication(ConnectWSGIApplication): - def __init__(self, service: AccessServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None) -> None: + def __init__(self, service: AccessServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: super().__init__( endpoints={ "/kas.AccessService/PublicKey": EndpointSync.unary( @@ -185,6 +187,7 @@ def __init__(self, service: AccessServiceSync, interceptors: Iterable[Intercepto }, interceptors=interceptors, read_max_bytes=read_max_bytes, + compressions=compressions, ) @property diff --git a/packages/otdf-python-proto/src/otdf_python_proto/kas/kas_pb2.py b/packages/otdf-python-proto/src/otdf_python_proto/kas/kas_pb2.py index 310630c0..8278b70f 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/kas/kas_pb2.py +++ b/packages/otdf-python-proto/src/otdf_python_proto/kas/kas_pb2.py @@ -22,32 +22,24 @@ _sym_db = _symbol_database.Default() -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2 -from protoc_gen_openapiv2.options import annotations_pb2 as protoc__gen__openapiv2_dot_options_dot_annotations__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\rkas/kas.proto\x12\x03kas\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\"\r\n\x0bInfoRequest\"(\n\x0cInfoResponse\x12\x18\n\x07version\x18\x01 \x01(\tR\x07version\"6\n\x16LegacyPublicKeyRequest\x12\x1c\n\talgorithm\x18\x01 \x01(\tR\talgorithm\";\n\rPolicyBinding\x12\x16\n\talgorithm\x18\x01 \x01(\tR\x03\x61lg\x12\x12\n\x04hash\x18\x02 \x01(\tR\x04hash\"\xd3\x02\n\tKeyAccess\x12-\n\x12\x65ncrypted_metadata\x18\x01 \x01(\tR\x11\x65ncryptedMetadata\x12\x39\n\x0epolicy_binding\x18\x02 \x01(\x0b\x32\x12.kas.PolicyBindingR\rpolicyBinding\x12\x1a\n\x08protocol\x18\x03 \x01(\tR\x08protocol\x12\x16\n\x08key_type\x18\x04 \x01(\tR\x04type\x12\x14\n\x07kas_url\x18\x05 \x01(\tR\x03url\x12\x10\n\x03kid\x18\x06 \x01(\tR\x03kid\x12\x15\n\x08split_id\x18\x07 \x01(\tR\x03sid\x12\x1f\n\x0bwrapped_key\x18\x08 \x01(\x0cR\nwrappedKey\x12\x16\n\x06header\x18\t \x01(\x0cR\x06header\x12\x30\n\x14\x65phemeral_public_key\x18\n \x01(\tR\x12\x65phemeralPublicKey\"\x86\x05\n\x15UnsignedRewrapRequest\x12*\n\x11\x63lient_public_key\x18\x01 \x01(\tR\x0f\x63lientPublicKey\x12H\n\x08requests\x18\x02 \x03(\x0b\x32,.kas.UnsignedRewrapRequest.WithPolicyRequestR\x08requests\x12\x31\n\nkey_access\x18\x03 \x01(\x0b\x32\x0e.kas.KeyAccessB\x02\x18\x01R\tkeyAccess\x12\x1a\n\x06policy\x18\x04 \x01(\tB\x02\x18\x01R\x06policy\x12 \n\talgorithm\x18\x05 \x01(\tB\x02\x18\x01R\talgorithm\x1a\x30\n\nWithPolicy\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04\x62ody\x18\x02 \x01(\tR\x04\x62ody\x1a\x82\x01\n\x13WithKeyAccessObject\x12/\n\x14key_access_object_id\x18\x01 \x01(\tR\x11keyAccessObjectId\x12:\n\x11key_access_object\x18\x02 \x01(\x0b\x32\x0e.kas.KeyAccessR\x0fkeyAccessObject\x1a\xce\x01\n\x11WithPolicyRequest\x12\\\n\x12key_access_objects\x18\x01 \x03(\x0b\x32..kas.UnsignedRewrapRequest.WithKeyAccessObjectR\x10keyAccessObjects\x12=\n\x06policy\x18\x02 \x01(\x0b\x32%.kas.UnsignedRewrapRequest.WithPolicyR\x06policy\x12\x1c\n\talgorithm\x18\x03 \x01(\tR\talgorithm\"\xb1\x01\n\x10PublicKeyRequest\x12Q\n\talgorithm\x18\x01 \x01(\tB3\x92\x41\x30\x32.algorithm type rsa: or ec:R\talgorithm\x12&\n\x03\x66mt\x18\x02 \x01(\tB\x14\x92\x41\x11\x32\x0fresponse formatR\x03\x66mt\x12\"\n\x01v\x18\x03 \x01(\tB\x14\x92\x41\x11\x32\x0frequest versionR\x01v\"D\n\x11PublicKeyResponse\x12\x1d\n\npublic_key\x18\x01 \x01(\tR\tpublicKey\x12\x10\n\x03kid\x18\x02 \x01(\tR\x03kid\"O\n\rRewrapRequest\x12\x30\n\x14signed_request_token\x18\x01 \x01(\tR\x12signedRequestTokenJ\x04\x08\x02\x10\x03R\x06\x62\x65\x61rer\"\xc7\x02\n\x15KeyAccessRewrapResult\x12\x44\n\x08metadata\x18\x01 \x03(\x0b\x32(.kas.KeyAccessRewrapResult.MetadataEntryR\x08metadata\x12/\n\x14key_access_object_id\x18\x02 \x01(\tR\x11keyAccessObjectId\x12\x16\n\x06status\x18\x03 \x01(\tR\x06status\x12(\n\x0fkas_wrapped_key\x18\x04 \x01(\x0cH\x00R\rkasWrappedKey\x12\x16\n\x05\x65rror\x18\x05 \x01(\tH\x00R\x05\x65rror\x1aS\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x16.google.protobuf.ValueR\x05value:\x02\x38\x01\x42\x08\n\x06result\"g\n\x12PolicyRewrapResult\x12\x1b\n\tpolicy_id\x18\x01 \x01(\tR\x08policyId\x12\x34\n\x07results\x18\x02 \x03(\x0b\x32\x1a.kas.KeyAccessRewrapResultR\x07results\"\xea\x02\n\x0eRewrapResponse\x12\x41\n\x08metadata\x18\x01 \x03(\x0b\x32!.kas.RewrapResponse.MetadataEntryB\x02\x18\x01R\x08metadata\x12\x30\n\x12\x65ntity_wrapped_key\x18\x02 \x01(\x0c\x42\x02\x18\x01R\x10\x65ntityWrappedKey\x12,\n\x12session_public_key\x18\x03 \x01(\tR\x10sessionPublicKey\x12)\n\x0eschema_version\x18\x04 \x01(\tB\x02\x18\x01R\rschemaVersion\x12\x35\n\tresponses\x18\x05 \x03(\x0b\x32\x17.kas.PolicyRewrapResultR\tresponses\x1aS\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x16.google.protobuf.ValueR\x05value:\x02\x38\x01\x32\xd1\x02\n\rAccessService\x12i\n\tPublicKey\x12\x15.kas.PublicKeyRequest\x1a\x16.kas.PublicKeyResponse\"-\x90\x02\x01\x92\x41\tJ\x07\n\x03\x32\x30\x30\x12\x00\x82\xd3\xe4\x93\x02\x18\x12\x16/kas/v2/kas_public_key\x12{\n\x0fLegacyPublicKey\x12\x1b.kas.LegacyPublicKeyRequest\x1a\x1c.google.protobuf.StringValue\"-\x88\x02\x01\x90\x02\x01\x92\x41\tJ\x07\n\x03\x32\x30\x30\x12\x00\x82\xd3\xe4\x93\x02\x15\x12\x13/kas/kas_public_key\x12X\n\x06Rewrap\x12\x12.kas.RewrapRequest\x1a\x13.kas.RewrapResponse\"%\x92\x41\tJ\x07\n\x03\x32\x30\x30\x12\x00\x82\xd3\xe4\x93\x02\x13\"\x0e/kas/v2/rewrap:\x01*B\xb5\x01\n\x07\x63om.kasB\x08KasProtoP\x01\xa2\x02\x03KXX\xaa\x02\x03Kas\xca\x02\x03Kas\xe2\x02\x0fKas\\GPBMetadata\xea\x02\x03Kas\x92\x41s\x12q\n\x1aOpenTDF Key Access Service*L\n\x12\x42SD 3-Clause Clear\x12\x36https://github.com/opentdf/backend/blob/master/LICENSE2\x05\x31.5.0b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\rkas/kas.proto\x12\x03kas\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1egoogle/protobuf/wrappers.proto\"\r\n\x0bInfoRequest\"(\n\x0cInfoResponse\x12\x18\n\x07version\x18\x01 \x01(\tR\x07version\"6\n\x16LegacyPublicKeyRequest\x12\x1c\n\talgorithm\x18\x01 \x01(\tR\talgorithm\";\n\rPolicyBinding\x12\x16\n\talgorithm\x18\x01 \x01(\tR\x03\x61lg\x12\x12\n\x04hash\x18\x02 \x01(\tR\x04hash\"\xd3\x02\n\tKeyAccess\x12-\n\x12\x65ncrypted_metadata\x18\x01 \x01(\tR\x11\x65ncryptedMetadata\x12\x39\n\x0epolicy_binding\x18\x02 \x01(\x0b\x32\x12.kas.PolicyBindingR\rpolicyBinding\x12\x1a\n\x08protocol\x18\x03 \x01(\tR\x08protocol\x12\x16\n\x08key_type\x18\x04 \x01(\tR\x04type\x12\x14\n\x07kas_url\x18\x05 \x01(\tR\x03url\x12\x10\n\x03kid\x18\x06 \x01(\tR\x03kid\x12\x15\n\x08split_id\x18\x07 \x01(\tR\x03sid\x12\x1f\n\x0bwrapped_key\x18\x08 \x01(\x0cR\nwrappedKey\x12\x16\n\x06header\x18\t \x01(\x0cR\x06header\x12\x30\n\x14\x65phemeral_public_key\x18\n \x01(\tR\x12\x65phemeralPublicKey\"\x86\x05\n\x15UnsignedRewrapRequest\x12*\n\x11\x63lient_public_key\x18\x01 \x01(\tR\x0f\x63lientPublicKey\x12H\n\x08requests\x18\x02 \x03(\x0b\x32,.kas.UnsignedRewrapRequest.WithPolicyRequestR\x08requests\x12\x31\n\nkey_access\x18\x03 \x01(\x0b\x32\x0e.kas.KeyAccessB\x02\x18\x01R\tkeyAccess\x12\x1a\n\x06policy\x18\x04 \x01(\tB\x02\x18\x01R\x06policy\x12 \n\talgorithm\x18\x05 \x01(\tB\x02\x18\x01R\talgorithm\x1a\x30\n\nWithPolicy\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04\x62ody\x18\x02 \x01(\tR\x04\x62ody\x1a\x82\x01\n\x13WithKeyAccessObject\x12/\n\x14key_access_object_id\x18\x01 \x01(\tR\x11keyAccessObjectId\x12:\n\x11key_access_object\x18\x02 \x01(\x0b\x32\x0e.kas.KeyAccessR\x0fkeyAccessObject\x1a\xce\x01\n\x11WithPolicyRequest\x12\\\n\x12key_access_objects\x18\x01 \x03(\x0b\x32..kas.UnsignedRewrapRequest.WithKeyAccessObjectR\x10keyAccessObjects\x12=\n\x06policy\x18\x02 \x01(\x0b\x32%.kas.UnsignedRewrapRequest.WithPolicyR\x06policy\x12\x1c\n\talgorithm\x18\x03 \x01(\tR\talgorithm\"P\n\x10PublicKeyRequest\x12\x1c\n\talgorithm\x18\x01 \x01(\tR\talgorithm\x12\x10\n\x03\x66mt\x18\x02 \x01(\tR\x03\x66mt\x12\x0c\n\x01v\x18\x03 \x01(\tR\x01v\"D\n\x11PublicKeyResponse\x12\x1d\n\npublic_key\x18\x01 \x01(\tR\tpublicKey\x12\x10\n\x03kid\x18\x02 \x01(\tR\x03kid\"O\n\rRewrapRequest\x12\x30\n\x14signed_request_token\x18\x01 \x01(\tR\x12signedRequestTokenJ\x04\x08\x02\x10\x03R\x06\x62\x65\x61rer\"\xc7\x02\n\x15KeyAccessRewrapResult\x12\x44\n\x08metadata\x18\x01 \x03(\x0b\x32(.kas.KeyAccessRewrapResult.MetadataEntryR\x08metadata\x12/\n\x14key_access_object_id\x18\x02 \x01(\tR\x11keyAccessObjectId\x12\x16\n\x06status\x18\x03 \x01(\tR\x06status\x12(\n\x0fkas_wrapped_key\x18\x04 \x01(\x0cH\x00R\rkasWrappedKey\x12\x16\n\x05\x65rror\x18\x05 \x01(\tH\x00R\x05\x65rror\x1aS\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x16.google.protobuf.ValueR\x05value:\x02\x38\x01\x42\x08\n\x06result\"g\n\x12PolicyRewrapResult\x12\x1b\n\tpolicy_id\x18\x01 \x01(\tR\x08policyId\x12\x34\n\x07results\x18\x02 \x03(\x0b\x32\x1a.kas.KeyAccessRewrapResultR\x07results\"\xea\x02\n\x0eRewrapResponse\x12\x41\n\x08metadata\x18\x01 \x03(\x0b\x32!.kas.RewrapResponse.MetadataEntryB\x02\x18\x01R\x08metadata\x12\x30\n\x12\x65ntity_wrapped_key\x18\x02 \x01(\x0c\x42\x02\x18\x01R\x10\x65ntityWrappedKey\x12,\n\x12session_public_key\x18\x03 \x01(\tR\x10sessionPublicKey\x12)\n\x0eschema_version\x18\x04 \x01(\tB\x02\x18\x01R\rschemaVersion\x12\x35\n\tresponses\x18\x05 \x03(\x0b\x32\x17.kas.PolicyRewrapResultR\tresponses\x1aS\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x16.google.protobuf.ValueR\x05value:\x02\x38\x01\x32\xdb\x01\n\rAccessService\x12?\n\tPublicKey\x12\x15.kas.PublicKeyRequest\x1a\x16.kas.PublicKeyResponse\"\x03\x90\x02\x01\x12T\n\x0fLegacyPublicKey\x12\x1b.kas.LegacyPublicKeyRequest\x1a\x1c.google.protobuf.StringValue\"\x06\x88\x02\x01\x90\x02\x01\x12\x33\n\x06Rewrap\x12\x12.kas.RewrapRequest\x1a\x13.kas.RewrapResponse\"\x00\x42?\n\x07\x63om.kasB\x08KasProtoP\x01\xa2\x02\x03KXX\xaa\x02\x03Kas\xca\x02\x03Kas\xe2\x02\x0fKas\\GPBMetadata\xea\x02\x03Kasb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'kas.kas_pb2', _globals) if not _descriptor._USE_C_DESCRIPTORS: _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\007com.kasB\010KasProtoP\001\242\002\003KXX\252\002\003Kas\312\002\003Kas\342\002\017Kas\\GPBMetadata\352\002\003Kas\222As\022q\n\032OpenTDF Key Access Service*L\n\022BSD 3-Clause Clear\0226https://github.com/opentdf/backend/blob/master/LICENSE2\0051.5.0' + _globals['DESCRIPTOR']._serialized_options = b'\n\007com.kasB\010KasProtoP\001\242\002\003KXX\252\002\003Kas\312\002\003Kas\342\002\017Kas\\GPBMetadata\352\002\003Kas' _globals['_UNSIGNEDREWRAPREQUEST'].fields_by_name['key_access']._loaded_options = None _globals['_UNSIGNEDREWRAPREQUEST'].fields_by_name['key_access']._serialized_options = b'\030\001' _globals['_UNSIGNEDREWRAPREQUEST'].fields_by_name['policy']._loaded_options = None _globals['_UNSIGNEDREWRAPREQUEST'].fields_by_name['policy']._serialized_options = b'\030\001' _globals['_UNSIGNEDREWRAPREQUEST'].fields_by_name['algorithm']._loaded_options = None _globals['_UNSIGNEDREWRAPREQUEST'].fields_by_name['algorithm']._serialized_options = b'\030\001' - _globals['_PUBLICKEYREQUEST'].fields_by_name['algorithm']._loaded_options = None - _globals['_PUBLICKEYREQUEST'].fields_by_name['algorithm']._serialized_options = b'\222A02.algorithm type rsa: or ec:' - _globals['_PUBLICKEYREQUEST'].fields_by_name['fmt']._loaded_options = None - _globals['_PUBLICKEYREQUEST'].fields_by_name['fmt']._serialized_options = b'\222A\0212\017response format' - _globals['_PUBLICKEYREQUEST'].fields_by_name['v']._loaded_options = None - _globals['_PUBLICKEYREQUEST'].fields_by_name['v']._serialized_options = b'\222A\0212\017request version' _globals['_KEYACCESSREWRAPRESULT_METADATAENTRY']._loaded_options = None _globals['_KEYACCESSREWRAPRESULT_METADATAENTRY']._serialized_options = b'8\001' _globals['_REWRAPRESPONSE_METADATAENTRY']._loaded_options = None @@ -59,45 +51,43 @@ _globals['_REWRAPRESPONSE'].fields_by_name['schema_version']._loaded_options = None _globals['_REWRAPRESPONSE'].fields_by_name['schema_version']._serialized_options = b'\030\001' _globals['_ACCESSSERVICE'].methods_by_name['PublicKey']._loaded_options = None - _globals['_ACCESSSERVICE'].methods_by_name['PublicKey']._serialized_options = b'\220\002\001\222A\tJ\007\n\003200\022\000\202\323\344\223\002\030\022\026/kas/v2/kas_public_key' + _globals['_ACCESSSERVICE'].methods_by_name['PublicKey']._serialized_options = b'\220\002\001' _globals['_ACCESSSERVICE'].methods_by_name['LegacyPublicKey']._loaded_options = None - _globals['_ACCESSSERVICE'].methods_by_name['LegacyPublicKey']._serialized_options = b'\210\002\001\220\002\001\222A\tJ\007\n\003200\022\000\202\323\344\223\002\025\022\023/kas/kas_public_key' - _globals['_ACCESSSERVICE'].methods_by_name['Rewrap']._loaded_options = None - _globals['_ACCESSSERVICE'].methods_by_name['Rewrap']._serialized_options = b'\222A\tJ\007\n\003200\022\000\202\323\344\223\002\023\"\016/kas/v2/rewrap:\001*' - _globals['_INFOREQUEST']._serialized_start=162 - _globals['_INFOREQUEST']._serialized_end=175 - _globals['_INFORESPONSE']._serialized_start=177 - _globals['_INFORESPONSE']._serialized_end=217 - _globals['_LEGACYPUBLICKEYREQUEST']._serialized_start=219 - _globals['_LEGACYPUBLICKEYREQUEST']._serialized_end=273 - _globals['_POLICYBINDING']._serialized_start=275 - _globals['_POLICYBINDING']._serialized_end=334 - _globals['_KEYACCESS']._serialized_start=337 - _globals['_KEYACCESS']._serialized_end=676 - _globals['_UNSIGNEDREWRAPREQUEST']._serialized_start=679 - _globals['_UNSIGNEDREWRAPREQUEST']._serialized_end=1325 - _globals['_UNSIGNEDREWRAPREQUEST_WITHPOLICY']._serialized_start=935 - _globals['_UNSIGNEDREWRAPREQUEST_WITHPOLICY']._serialized_end=983 - _globals['_UNSIGNEDREWRAPREQUEST_WITHKEYACCESSOBJECT']._serialized_start=986 - _globals['_UNSIGNEDREWRAPREQUEST_WITHKEYACCESSOBJECT']._serialized_end=1116 - _globals['_UNSIGNEDREWRAPREQUEST_WITHPOLICYREQUEST']._serialized_start=1119 - _globals['_UNSIGNEDREWRAPREQUEST_WITHPOLICYREQUEST']._serialized_end=1325 - _globals['_PUBLICKEYREQUEST']._serialized_start=1328 - _globals['_PUBLICKEYREQUEST']._serialized_end=1505 - _globals['_PUBLICKEYRESPONSE']._serialized_start=1507 - _globals['_PUBLICKEYRESPONSE']._serialized_end=1575 - _globals['_REWRAPREQUEST']._serialized_start=1577 - _globals['_REWRAPREQUEST']._serialized_end=1656 - _globals['_KEYACCESSREWRAPRESULT']._serialized_start=1659 - _globals['_KEYACCESSREWRAPRESULT']._serialized_end=1986 - _globals['_KEYACCESSREWRAPRESULT_METADATAENTRY']._serialized_start=1893 - _globals['_KEYACCESSREWRAPRESULT_METADATAENTRY']._serialized_end=1976 - _globals['_POLICYREWRAPRESULT']._serialized_start=1988 - _globals['_POLICYREWRAPRESULT']._serialized_end=2091 - _globals['_REWRAPRESPONSE']._serialized_start=2094 - _globals['_REWRAPRESPONSE']._serialized_end=2456 - _globals['_REWRAPRESPONSE_METADATAENTRY']._serialized_start=1893 - _globals['_REWRAPRESPONSE_METADATAENTRY']._serialized_end=1976 - _globals['_ACCESSSERVICE']._serialized_start=2459 - _globals['_ACCESSSERVICE']._serialized_end=2796 + _globals['_ACCESSSERVICE'].methods_by_name['LegacyPublicKey']._serialized_options = b'\210\002\001\220\002\001' + _globals['_INFOREQUEST']._serialized_start=84 + _globals['_INFOREQUEST']._serialized_end=97 + _globals['_INFORESPONSE']._serialized_start=99 + _globals['_INFORESPONSE']._serialized_end=139 + _globals['_LEGACYPUBLICKEYREQUEST']._serialized_start=141 + _globals['_LEGACYPUBLICKEYREQUEST']._serialized_end=195 + _globals['_POLICYBINDING']._serialized_start=197 + _globals['_POLICYBINDING']._serialized_end=256 + _globals['_KEYACCESS']._serialized_start=259 + _globals['_KEYACCESS']._serialized_end=598 + _globals['_UNSIGNEDREWRAPREQUEST']._serialized_start=601 + _globals['_UNSIGNEDREWRAPREQUEST']._serialized_end=1247 + _globals['_UNSIGNEDREWRAPREQUEST_WITHPOLICY']._serialized_start=857 + _globals['_UNSIGNEDREWRAPREQUEST_WITHPOLICY']._serialized_end=905 + _globals['_UNSIGNEDREWRAPREQUEST_WITHKEYACCESSOBJECT']._serialized_start=908 + _globals['_UNSIGNEDREWRAPREQUEST_WITHKEYACCESSOBJECT']._serialized_end=1038 + _globals['_UNSIGNEDREWRAPREQUEST_WITHPOLICYREQUEST']._serialized_start=1041 + _globals['_UNSIGNEDREWRAPREQUEST_WITHPOLICYREQUEST']._serialized_end=1247 + _globals['_PUBLICKEYREQUEST']._serialized_start=1249 + _globals['_PUBLICKEYREQUEST']._serialized_end=1329 + _globals['_PUBLICKEYRESPONSE']._serialized_start=1331 + _globals['_PUBLICKEYRESPONSE']._serialized_end=1399 + _globals['_REWRAPREQUEST']._serialized_start=1401 + _globals['_REWRAPREQUEST']._serialized_end=1480 + _globals['_KEYACCESSREWRAPRESULT']._serialized_start=1483 + _globals['_KEYACCESSREWRAPRESULT']._serialized_end=1810 + _globals['_KEYACCESSREWRAPRESULT_METADATAENTRY']._serialized_start=1717 + _globals['_KEYACCESSREWRAPRESULT_METADATAENTRY']._serialized_end=1800 + _globals['_POLICYREWRAPRESULT']._serialized_start=1812 + _globals['_POLICYREWRAPRESULT']._serialized_end=1915 + _globals['_REWRAPRESPONSE']._serialized_start=1918 + _globals['_REWRAPRESPONSE']._serialized_end=2280 + _globals['_REWRAPRESPONSE_METADATAENTRY']._serialized_start=1717 + _globals['_REWRAPRESPONSE_METADATAENTRY']._serialized_end=1800 + _globals['_ACCESSSERVICE']._serialized_start=2283 + _globals['_ACCESSSERVICE']._serialized_end=2502 # @@protoc_insertion_point(module_scope) diff --git a/packages/otdf-python-proto/src/otdf_python_proto/kas/kas_pb2.pyi b/packages/otdf-python-proto/src/otdf_python_proto/kas/kas_pb2.pyi index eeb55aa8..c1c04a01 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/kas/kas_pb2.pyi +++ b/packages/otdf-python-proto/src/otdf_python_proto/kas/kas_pb2.pyi @@ -1,7 +1,5 @@ -from google.api import annotations_pb2 as _annotations_pb2 from google.protobuf import struct_pb2 as _struct_pb2 from google.protobuf import wrappers_pb2 as _wrappers_pb2 -from protoc_gen_openapiv2.options import annotations_pb2 as _annotations_pb2_1 from google.protobuf.internal import containers as _containers from google.protobuf import descriptor as _descriptor from google.protobuf import message as _message diff --git a/packages/otdf-python-proto/src/otdf_python_proto/policy/actions/actions_connect.py b/packages/otdf-python-proto/src/otdf_python_proto/policy/actions/actions_connect.py index 7f5e3364..92f358ca 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/policy/actions/actions_connect.py +++ b/packages/otdf-python-proto/src/otdf_python_proto/policy/actions/actions_connect.py @@ -7,6 +7,7 @@ from connectrpc.client import ConnectClient, ConnectClientSync from connectrpc.code import Code +from connectrpc.compression import Compression from connectrpc.errors import ConnectError from connectrpc.interceptor import Interceptor, InterceptorSync from connectrpc.method import IdempotencyLevel, MethodInfo @@ -33,7 +34,7 @@ async def delete_action(self, request: policy_dot_actions_dot_actions__pb2.Delet class ActionServiceASGIApplication(ConnectASGIApplication[ActionService]): - def __init__(self, service: ActionService | AsyncGenerator[ActionService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None) -> None: + def __init__(self, service: ActionService | AsyncGenerator[ActionService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: super().__init__( service=service, endpoints=lambda svc: { @@ -90,6 +91,7 @@ def __init__(self, service: ActionService | AsyncGenerator[ActionService], *, in }, interceptors=interceptors, read_max_bytes=read_max_bytes, + compressions=compressions, ) @property @@ -214,7 +216,7 @@ def delete_action(self, request: policy_dot_actions_dot_actions__pb2.DeleteActio class ActionServiceWSGIApplication(ConnectWSGIApplication): - def __init__(self, service: ActionServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None) -> None: + def __init__(self, service: ActionServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: super().__init__( endpoints={ "/policy.actions.ActionService/GetAction": EndpointSync.unary( @@ -270,6 +272,7 @@ def __init__(self, service: ActionServiceSync, interceptors: Iterable[Intercepto }, interceptors=interceptors, read_max_bytes=read_max_bytes, + compressions=compressions, ) @property diff --git a/packages/otdf-python-proto/src/otdf_python_proto/policy/attributes/attributes_connect.py b/packages/otdf-python-proto/src/otdf_python_proto/policy/attributes/attributes_connect.py index a96ca5b2..760f0ab0 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/policy/attributes/attributes_connect.py +++ b/packages/otdf-python-proto/src/otdf_python_proto/policy/attributes/attributes_connect.py @@ -7,6 +7,7 @@ from connectrpc.client import ConnectClient, ConnectClientSync from connectrpc.code import Code +from connectrpc.compression import Compression from connectrpc.errors import ConnectError from connectrpc.interceptor import Interceptor, InterceptorSync from connectrpc.method import IdempotencyLevel, MethodInfo @@ -75,7 +76,7 @@ async def remove_public_key_from_value(self, request: policy_dot_attributes_dot_ class AttributesServiceASGIApplication(ConnectASGIApplication[AttributesService]): - def __init__(self, service: AttributesService | AsyncGenerator[AttributesService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None) -> None: + def __init__(self, service: AttributesService | AsyncGenerator[AttributesService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: super().__init__( service=service, endpoints=lambda svc: { @@ -272,6 +273,7 @@ def __init__(self, service: AttributesService | AsyncGenerator[AttributesService }, interceptors=interceptors, read_max_bytes=read_max_bytes, + compressions=compressions, ) @property @@ -714,7 +716,7 @@ def remove_public_key_from_value(self, request: policy_dot_attributes_dot_attrib class AttributesServiceWSGIApplication(ConnectWSGIApplication): - def __init__(self, service: AttributesServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None) -> None: + def __init__(self, service: AttributesServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: super().__init__( endpoints={ "/policy.attributes.AttributesService/ListAttributes": EndpointSync.unary( @@ -910,6 +912,7 @@ def __init__(self, service: AttributesServiceSync, interceptors: Iterable[Interc }, interceptors=interceptors, read_max_bytes=read_max_bytes, + compressions=compressions, ) @property diff --git a/packages/otdf-python-proto/src/otdf_python_proto/policy/attributes/attributes_pb2.py b/packages/otdf-python-proto/src/otdf_python_proto/policy/attributes/attributes_pb2.py index fe6cf551..ffb9a60a 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/policy/attributes/attributes_pb2.py +++ b/packages/otdf-python-proto/src/otdf_python_proto/policy/attributes/attributes_pb2.py @@ -24,13 +24,12 @@ from buf.validate import validate_pb2 as buf_dot_validate_dot_validate__pb2 from common import common_pb2 as common_dot_common__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import wrappers_pb2 as google_dot_protobuf_dot_wrappers__pb2 from policy import objects_pb2 as policy_dot_objects__pb2 from policy import selectors_pb2 as policy_dot_selectors__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"policy/attributes/attributes.proto\x12\x11policy.attributes\x1a\x1b\x62uf/validate/validate.proto\x1a\x13\x63ommon/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x14policy/objects.proto\x1a\x16policy/selectors.proto\"\x86\x01\n\x18\x41ttributeKeyAccessServer\x12+\n\x0c\x61ttribute_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0b\x61ttributeId\x12\x39\n\x14key_access_server_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x11keyAccessServerId:\x02\x18\x01\"z\n\x14ValueKeyAccessServer\x12#\n\x08value_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07valueId\x12\x39\n\x14key_access_server_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x11keyAccessServerId:\x02\x18\x01\"b\n\x0c\x41ttributeKey\x12.\n\x0c\x61ttribute_id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x03\xb0\x01\x01\xc8\x01\x01R\x0b\x61ttributeId\x12\"\n\x06key_id\x18\x02 \x01(\tB\x0b\xbaH\x08r\x03\xb0\x01\x01\xc8\x01\x01R\x05keyId\"V\n\x08ValueKey\x12&\n\x08value_id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x03\xb0\x01\x01\xc8\x01\x01R\x07valueId\x12\"\n\x06key_id\x18\x02 \x01(\tB\x0b\xbaH\x08r\x03\xb0\x01\x01\xc8\x01\x01R\x05keyId\"\x82\x01\n\x0e\x41ttributesSort\x12;\n\x05\x66ield\x18\x01 \x01(\x0e\x32%.policy.attributes.SortAttributesTypeR\x05\x66ield\x12\x33\n\tdirection\x18\x02 \x01(\x0e\x32\x15.policy.SortDirectionR\tdirection\"\xda\x01\n\x15ListAttributesRequest\x12-\n\x05state\x18\x01 \x01(\x0e\x32\x17.common.ActiveStateEnumR\x05state\x12\x1c\n\tnamespace\x18\x02 \x01(\tR\tnamespace\x12\x33\n\npagination\x18\n \x01(\x0b\x32\x13.policy.PageRequestR\npagination\x12?\n\x04sort\x18\x0b \x03(\x0b\x32!.policy.attributes.AttributesSortB\x08\xbaH\x05\x92\x01\x02\x10\x01R\x04sort\"\x81\x01\n\x16ListAttributesResponse\x12\x31\n\nattributes\x18\x01 \x03(\x0b\x32\x11.policy.AttributeR\nattributes\x12\x34\n\npagination\x18\n \x01(\x0b\x32\x14.policy.PageResponseR\npagination\"\xbe\x03\n\x13GetAttributeRequest\x12\x1d\n\x02id\x18\x01 \x01(\tB\r\x18\x01\xbaH\x08r\x03\xb0\x01\x01\xd8\x01\x01R\x02id\x12-\n\x0c\x61ttribute_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x0b\x61ttributeId\x12\x1e\n\x03\x66qn\x18\x03 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01H\x00R\x03\x66qn:\xaa\x02\xbaH\xa6\x02\x1a\xa2\x01\n\x10\x65xclusive_fields\x12PEither use deprecated \'id\' field or one of \'attribute_id\' or \'fqn\', but not both\x1a\n\x04rule\x18\x03 \x01(\x0e\x32\x1d.policy.AttributeRuleTypeEnumB\x0b\xbaH\x08\x82\x01\x02\x10\x01\xc8\x01\x01R\x04rule\x12V\n\x06values\x18\x04 \x03(\tB>\xbaH;\x92\x01\x38\x08\x00\x18\x01\"2r0\x18\xfd\x01\x32+^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$R\x06values\x12\x43\n\x0f\x61llow_traversal\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x0e\x61llowTraversal\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\"J\n\x17\x43reateAttributeResponse\x12/\n\tattribute\x18\x01 \x01(\x0b\x32\x11.policy.AttributeR\tattribute\"\xbd\x01\n\x16UpdateAttributeRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\x12T\n\x18metadata_update_behavior\x18\x65 \x01(\x0e\x32\x1a.common.MetadataUpdateEnumR\x16metadataUpdateBehavior\"J\n\x17UpdateAttributeResponse\x12/\n\tattribute\x18\x01 \x01(\x0b\x32\x11.policy.AttributeR\tattribute\"6\n\x1a\x44\x65\x61\x63tivateAttributeRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"N\n\x1b\x44\x65\x61\x63tivateAttributeResponse\x12/\n\tattribute\x18\x01 \x01(\x0b\x32\x11.policy.AttributeR\tattribute\"\xab\x03\n\x18GetAttributeValueRequest\x12\x1d\n\x02id\x18\x01 \x01(\tB\r\x18\x01\xbaH\x08r\x03\xb0\x01\x01\xd8\x01\x01R\x02id\x12%\n\x08value_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x07valueId\x12\x1e\n\x03\x66qn\x18\x03 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01H\x00R\x03\x66qn:\x9a\x02\xbaH\x96\x02\x1a\x9a\x01\n\x10\x65xclusive_fields\x12LEither use deprecated \'id\' field or one of \'value_id\' or \'fqn\', but not both\x1a\x38!(has(this.id) && (has(this.value_id) || has(this.fqn)))\x1aw\n\x0frequired_fields\x12/Either id or one of value_id or fqn must be set\x1a\x33has(this.id) || has(this.value_id) || has(this.fqn)B\x0c\n\nidentifier\"@\n\x19GetAttributeValueResponse\x12#\n\x05value\x18\x01 \x01(\x0b\x32\r.policy.ValueR\x05value\"\xad\x01\n\x1aListAttributeValuesRequest\x12+\n\x0c\x61ttribute_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0b\x61ttributeId\x12-\n\x05state\x18\x02 \x01(\x0e\x32\x17.common.ActiveStateEnumR\x05state\x12\x33\n\npagination\x18\n \x01(\x0b\x32\x13.policy.PageRequestR\npagination\"z\n\x1bListAttributeValuesResponse\x12%\n\x06values\x18\x01 \x03(\x0b\x32\r.policy.ValueR\x06values\x12\x34\n\npagination\x18\n \x01(\x0b\x32\x14.policy.PageResponseR\npagination\"\xc5\x03\n\x1b\x43reateAttributeValueRequest\x12+\n\x0c\x61ttribute_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0b\x61ttributeId\x12\xb4\x02\n\x05value\x18\x02 \x01(\tB\x9d\x02\xbaH\x99\x02r\x03\x18\xfd\x01\xba\x01\x8d\x02\n\x16\x61ttribute_value_format\x12\xb5\x01\x41ttribute value must be an alphanumeric string, allowing hyphens and underscores but not as the first or last character. The stored attribute value will be normalized to lower case.\x1a;this.matches(\'^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$\')\xc8\x01\x01R\x05value\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadataJ\x04\x08\x03\x10\x04R\x07members\"C\n\x1c\x43reateAttributeValueResponse\x12#\n\x05value\x18\x01 \x01(\x0b\x32\r.policy.ValueR\x05value\"\xd1\x01\n\x1bUpdateAttributeValueRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\x12T\n\x18metadata_update_behavior\x18\x65 \x01(\x0e\x32\x1a.common.MetadataUpdateEnumR\x16metadataUpdateBehaviorJ\x04\x08\x04\x10\x05R\x07members\"C\n\x1cUpdateAttributeValueResponse\x12#\n\x05value\x18\x01 \x01(\x0b\x32\r.policy.ValueR\x05value\";\n\x1f\x44\x65\x61\x63tivateAttributeValueRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"G\n DeactivateAttributeValueResponse\x12#\n\x05value\x18\x01 \x01(\x0b\x32\r.policy.ValueR\x05value\"T\n\x1fGetAttributeValuesByFqnsRequest\x12\x1f\n\x04\x66qns\x18\x01 \x03(\tB\x0b\xbaH\x08\x92\x01\x05\x08\x01\x10\xfa\x01R\x04\x66qnsJ\x04\x08\x02\x10\x03R\nwith_value\"\x9b\x03\n GetAttributeValuesByFqnsResponse\x12}\n\x14\x66qn_attribute_values\x18\x01 \x03(\x0b\x32K.policy.attributes.GetAttributeValuesByFqnsResponse.FqnAttributeValuesEntryR\x12\x66qnAttributeValues\x1ai\n\x11\x41ttributeAndValue\x12/\n\tattribute\x18\x01 \x01(\x0b\x32\x11.policy.AttributeR\tattribute\x12#\n\x05value\x18\x02 \x01(\x0b\x32\r.policy.ValueR\x05value\x1a\x8c\x01\n\x17\x46qnAttributeValuesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12[\n\x05value\x18\x02 \x01(\x0b\x32\x45.policy.attributes.GetAttributeValuesByFqnsResponse.AttributeAndValueR\x05value:\x02\x38\x01\"\x99\x01\n\'AssignKeyAccessServerToAttributeRequest\x12j\n\x1b\x61ttribute_key_access_server\x18\x01 \x01(\x0b\x32+.policy.attributes.AttributeKeyAccessServerR\x18\x61ttributeKeyAccessServer:\x02\x18\x01\"\x9a\x01\n(AssignKeyAccessServerToAttributeResponse\x12j\n\x1b\x61ttribute_key_access_server\x18\x01 \x01(\x0b\x32+.policy.attributes.AttributeKeyAccessServerR\x18\x61ttributeKeyAccessServer:\x02\x18\x01\"\x9b\x01\n)RemoveKeyAccessServerFromAttributeRequest\x12j\n\x1b\x61ttribute_key_access_server\x18\x01 \x01(\x0b\x32+.policy.attributes.AttributeKeyAccessServerR\x18\x61ttributeKeyAccessServer:\x02\x18\x01\"\x9c\x01\n*RemoveKeyAccessServerFromAttributeResponse\x12j\n\x1b\x61ttribute_key_access_server\x18\x01 \x01(\x0b\x32+.policy.attributes.AttributeKeyAccessServerR\x18\x61ttributeKeyAccessServer:\x02\x18\x01\"\x89\x01\n#AssignKeyAccessServerToValueRequest\x12^\n\x17value_key_access_server\x18\x01 \x01(\x0b\x32\'.policy.attributes.ValueKeyAccessServerR\x14valueKeyAccessServer:\x02\x18\x01\"\x8a\x01\n$AssignKeyAccessServerToValueResponse\x12^\n\x17value_key_access_server\x18\x01 \x01(\x0b\x32\'.policy.attributes.ValueKeyAccessServerR\x14valueKeyAccessServer:\x02\x18\x01\"\x8b\x01\n%RemoveKeyAccessServerFromValueRequest\x12^\n\x17value_key_access_server\x18\x01 \x01(\x0b\x32\'.policy.attributes.ValueKeyAccessServerR\x14valueKeyAccessServer:\x02\x18\x01\"\x8c\x01\n&RemoveKeyAccessServerFromValueResponse\x12^\n\x17value_key_access_server\x18\x01 \x01(\x0b\x32\'.policy.attributes.ValueKeyAccessServerR\x14valueKeyAccessServer:\x02\x18\x01\"q\n!AssignPublicKeyToAttributeRequest\x12L\n\rattribute_key\x18\x01 \x01(\x0b\x32\x1f.policy.attributes.AttributeKeyB\x06\xbaH\x03\xc8\x01\x01R\x0c\x61ttributeKey\"j\n\"AssignPublicKeyToAttributeResponse\x12\x44\n\rattribute_key\x18\x01 \x01(\x0b\x32\x1f.policy.attributes.AttributeKeyR\x0c\x61ttributeKey\"s\n#RemovePublicKeyFromAttributeRequest\x12L\n\rattribute_key\x18\x01 \x01(\x0b\x32\x1f.policy.attributes.AttributeKeyB\x06\xbaH\x03\xc8\x01\x01R\x0c\x61ttributeKey\"l\n$RemovePublicKeyFromAttributeResponse\x12\x44\n\rattribute_key\x18\x01 \x01(\x0b\x32\x1f.policy.attributes.AttributeKeyR\x0c\x61ttributeKey\"a\n\x1d\x41ssignPublicKeyToValueRequest\x12@\n\tvalue_key\x18\x01 \x01(\x0b\x32\x1b.policy.attributes.ValueKeyB\x06\xbaH\x03\xc8\x01\x01R\x08valueKey\"Z\n\x1e\x41ssignPublicKeyToValueResponse\x12\x38\n\tvalue_key\x18\x01 \x01(\x0b\x32\x1b.policy.attributes.ValueKeyR\x08valueKey\"c\n\x1fRemovePublicKeyFromValueRequest\x12@\n\tvalue_key\x18\x01 \x01(\x0b\x32\x1b.policy.attributes.ValueKeyB\x06\xbaH\x03\xc8\x01\x01R\x08valueKey\"\\\n RemovePublicKeyFromValueResponse\x12\x38\n\tvalue_key\x18\x01 \x01(\x0b\x32\x1b.policy.attributes.ValueKeyR\x08valueKey*\xa3\x01\n\x12SortAttributesType\x12$\n SORT_ATTRIBUTES_TYPE_UNSPECIFIED\x10\x00\x12\x1d\n\x19SORT_ATTRIBUTES_TYPE_NAME\x10\x01\x12#\n\x1fSORT_ATTRIBUTES_TYPE_CREATED_AT\x10\x02\x12#\n\x1fSORT_ATTRIBUTES_TYPE_UPDATED_AT\x10\x03\x32\xf5\x13\n\x11\x41ttributesService\x12j\n\x0eListAttributes\x12(.policy.attributes.ListAttributesRequest\x1a).policy.attributes.ListAttributesResponse\"\x03\x90\x02\x01\x12|\n\x13ListAttributeValues\x12-.policy.attributes.ListAttributeValuesRequest\x1a..policy.attributes.ListAttributeValuesResponse\"\x06\x88\x02\x01\x90\x02\x01\x12\x64\n\x0cGetAttribute\x12&.policy.attributes.GetAttributeRequest\x1a\'.policy.attributes.GetAttributeResponse\"\x03\x90\x02\x01\x12\xa1\x01\n\x18GetAttributeValuesByFqns\x12\x32.policy.attributes.GetAttributeValuesByFqnsRequest\x1a\x33.policy.attributes.GetAttributeValuesByFqnsResponse\"\x1c\x90\x02\x01\x82\xd3\xe4\x93\x02\x13\x12\x11/attributes/*/fqn\x12j\n\x0f\x43reateAttribute\x12).policy.attributes.CreateAttributeRequest\x1a*.policy.attributes.CreateAttributeResponse\"\x00\x12j\n\x0fUpdateAttribute\x12).policy.attributes.UpdateAttributeRequest\x1a*.policy.attributes.UpdateAttributeResponse\"\x00\x12v\n\x13\x44\x65\x61\x63tivateAttribute\x12-.policy.attributes.DeactivateAttributeRequest\x1a..policy.attributes.DeactivateAttributeResponse\"\x00\x12s\n\x11GetAttributeValue\x12+.policy.attributes.GetAttributeValueRequest\x1a,.policy.attributes.GetAttributeValueResponse\"\x03\x90\x02\x01\x12y\n\x14\x43reateAttributeValue\x12..policy.attributes.CreateAttributeValueRequest\x1a/.policy.attributes.CreateAttributeValueResponse\"\x00\x12y\n\x14UpdateAttributeValue\x12..policy.attributes.UpdateAttributeValueRequest\x1a/.policy.attributes.UpdateAttributeValueResponse\"\x00\x12\x85\x01\n\x18\x44\x65\x61\x63tivateAttributeValue\x12\x32.policy.attributes.DeactivateAttributeValueRequest\x1a\x33.policy.attributes.DeactivateAttributeValueResponse\"\x00\x12\xa0\x01\n AssignKeyAccessServerToAttribute\x12:.policy.attributes.AssignKeyAccessServerToAttributeRequest\x1a;.policy.attributes.AssignKeyAccessServerToAttributeResponse\"\x03\x88\x02\x01\x12\xa6\x01\n\"RemoveKeyAccessServerFromAttribute\x12<.policy.attributes.RemoveKeyAccessServerFromAttributeRequest\x1a=.policy.attributes.RemoveKeyAccessServerFromAttributeResponse\"\x03\x88\x02\x01\x12\x94\x01\n\x1c\x41ssignKeyAccessServerToValue\x12\x36.policy.attributes.AssignKeyAccessServerToValueRequest\x1a\x37.policy.attributes.AssignKeyAccessServerToValueResponse\"\x03\x88\x02\x01\x12\x9a\x01\n\x1eRemoveKeyAccessServerFromValue\x12\x38.policy.attributes.RemoveKeyAccessServerFromValueRequest\x1a\x39.policy.attributes.RemoveKeyAccessServerFromValueResponse\"\x03\x88\x02\x01\x12\x8b\x01\n\x1a\x41ssignPublicKeyToAttribute\x12\x34.policy.attributes.AssignPublicKeyToAttributeRequest\x1a\x35.policy.attributes.AssignPublicKeyToAttributeResponse\"\x00\x12\x91\x01\n\x1cRemovePublicKeyFromAttribute\x12\x36.policy.attributes.RemovePublicKeyFromAttributeRequest\x1a\x37.policy.attributes.RemovePublicKeyFromAttributeResponse\"\x00\x12\x7f\n\x16\x41ssignPublicKeyToValue\x12\x30.policy.attributes.AssignPublicKeyToValueRequest\x1a\x31.policy.attributes.AssignPublicKeyToValueResponse\"\x00\x12\x85\x01\n\x18RemovePublicKeyFromValue\x12\x32.policy.attributes.RemovePublicKeyFromValueRequest\x1a\x33.policy.attributes.RemovePublicKeyFromValueResponse\"\x00\x42\x8d\x01\n\x15\x63om.policy.attributesB\x0f\x41ttributesProtoP\x01\xa2\x02\x03PAX\xaa\x02\x11Policy.Attributes\xca\x02\x11Policy\\Attributes\xe2\x02\x1dPolicy\\Attributes\\GPBMetadata\xea\x02\x12Policy::Attributesb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"policy/attributes/attributes.proto\x12\x11policy.attributes\x1a\x1b\x62uf/validate/validate.proto\x1a\x13\x63ommon/common.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x14policy/objects.proto\x1a\x16policy/selectors.proto\"\x86\x01\n\x18\x41ttributeKeyAccessServer\x12+\n\x0c\x61ttribute_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0b\x61ttributeId\x12\x39\n\x14key_access_server_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x11keyAccessServerId:\x02\x18\x01\"z\n\x14ValueKeyAccessServer\x12#\n\x08value_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x07valueId\x12\x39\n\x14key_access_server_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x11keyAccessServerId:\x02\x18\x01\"b\n\x0c\x41ttributeKey\x12.\n\x0c\x61ttribute_id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x03\xb0\x01\x01\xc8\x01\x01R\x0b\x61ttributeId\x12\"\n\x06key_id\x18\x02 \x01(\tB\x0b\xbaH\x08r\x03\xb0\x01\x01\xc8\x01\x01R\x05keyId\"V\n\x08ValueKey\x12&\n\x08value_id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x03\xb0\x01\x01\xc8\x01\x01R\x07valueId\x12\"\n\x06key_id\x18\x02 \x01(\tB\x0b\xbaH\x08r\x03\xb0\x01\x01\xc8\x01\x01R\x05keyId\"\x96\x01\n\x0e\x41ttributesSort\x12\x45\n\x05\x66ield\x18\x01 \x01(\x0e\x32%.policy.attributes.SortAttributesTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x05\x66ield\x12=\n\tdirection\x18\x02 \x01(\x0e\x32\x15.policy.SortDirectionB\x08\xbaH\x05\x82\x01\x02\x10\x01R\tdirection\"\xda\x01\n\x15ListAttributesRequest\x12-\n\x05state\x18\x01 \x01(\x0e\x32\x17.common.ActiveStateEnumR\x05state\x12\x1c\n\tnamespace\x18\x02 \x01(\tR\tnamespace\x12\x33\n\npagination\x18\n \x01(\x0b\x32\x13.policy.PageRequestR\npagination\x12?\n\x04sort\x18\x0b \x03(\x0b\x32!.policy.attributes.AttributesSortB\x08\xbaH\x05\x92\x01\x02\x10\x01R\x04sort\"\x81\x01\n\x16ListAttributesResponse\x12\x31\n\nattributes\x18\x01 \x03(\x0b\x32\x11.policy.AttributeR\nattributes\x12\x34\n\npagination\x18\n \x01(\x0b\x32\x14.policy.PageResponseR\npagination\"\xbe\x03\n\x13GetAttributeRequest\x12\x1d\n\x02id\x18\x01 \x01(\tB\r\x18\x01\xbaH\x08r\x03\xb0\x01\x01\xd8\x01\x01R\x02id\x12-\n\x0c\x61ttribute_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x0b\x61ttributeId\x12\x1e\n\x03\x66qn\x18\x03 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01H\x00R\x03\x66qn:\xaa\x02\xbaH\xa6\x02\x1a\xa2\x01\n\x10\x65xclusive_fields\x12PEither use deprecated \'id\' field or one of \'attribute_id\' or \'fqn\', but not both\x1a\n\x04rule\x18\x03 \x01(\x0e\x32\x1d.policy.AttributeRuleTypeEnumB\x0b\xbaH\x08\x82\x01\x02\x10\x01\xc8\x01\x01R\x04rule\x12V\n\x06values\x18\x04 \x03(\tB>\xbaH;\x92\x01\x38\x08\x00\x18\x01\"2r0\x18\xfd\x01\x32+^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$R\x06values\x12\x43\n\x0f\x61llow_traversal\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x0e\x61llowTraversal\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\"J\n\x17\x43reateAttributeResponse\x12/\n\tattribute\x18\x01 \x01(\x0b\x32\x11.policy.AttributeR\tattribute\"\xbd\x01\n\x16UpdateAttributeRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\x12T\n\x18metadata_update_behavior\x18\x65 \x01(\x0e\x32\x1a.common.MetadataUpdateEnumR\x16metadataUpdateBehavior\"J\n\x17UpdateAttributeResponse\x12/\n\tattribute\x18\x01 \x01(\x0b\x32\x11.policy.AttributeR\tattribute\"6\n\x1a\x44\x65\x61\x63tivateAttributeRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"N\n\x1b\x44\x65\x61\x63tivateAttributeResponse\x12/\n\tattribute\x18\x01 \x01(\x0b\x32\x11.policy.AttributeR\tattribute\"\xab\x03\n\x18GetAttributeValueRequest\x12\x1d\n\x02id\x18\x01 \x01(\tB\r\x18\x01\xbaH\x08r\x03\xb0\x01\x01\xd8\x01\x01R\x02id\x12%\n\x08value_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x07valueId\x12\x1e\n\x03\x66qn\x18\x03 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01H\x00R\x03\x66qn:\x9a\x02\xbaH\x96\x02\x1a\x9a\x01\n\x10\x65xclusive_fields\x12LEither use deprecated \'id\' field or one of \'value_id\' or \'fqn\', but not both\x1a\x38!(has(this.id) && (has(this.value_id) || has(this.fqn)))\x1aw\n\x0frequired_fields\x12/Either id or one of value_id or fqn must be set\x1a\x33has(this.id) || has(this.value_id) || has(this.fqn)B\x0c\n\nidentifier\"@\n\x19GetAttributeValueResponse\x12#\n\x05value\x18\x01 \x01(\x0b\x32\r.policy.ValueR\x05value\"\xad\x01\n\x1aListAttributeValuesRequest\x12+\n\x0c\x61ttribute_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0b\x61ttributeId\x12-\n\x05state\x18\x02 \x01(\x0e\x32\x17.common.ActiveStateEnumR\x05state\x12\x33\n\npagination\x18\n \x01(\x0b\x32\x13.policy.PageRequestR\npagination\"z\n\x1bListAttributeValuesResponse\x12%\n\x06values\x18\x01 \x03(\x0b\x32\r.policy.ValueR\x06values\x12\x34\n\npagination\x18\n \x01(\x0b\x32\x14.policy.PageResponseR\npagination\"\x95\x02\n&AttributeValueObligationTriggerRequest\x12J\n\x10obligation_value\x18\x01 \x01(\x0b\x32\x17.common.IdFqnIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x0fobligationValue\x12\x38\n\x06\x61\x63tion\x18\x02 \x01(\x0b\x32\x18.common.IdNameIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x06\x61\x63tion\x12\x30\n\x07\x63ontext\x18\x0b \x01(\x0b\x32\x16.policy.RequestContextR\x07\x63ontext\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\"\xb1\x04\n\x1b\x43reateAttributeValueRequest\x12+\n\x0c\x61ttribute_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0b\x61ttributeId\x12\xb4\x02\n\x05value\x18\x02 \x01(\tB\x9d\x02\xbaH\x99\x02r\x03\x18\xfd\x01\xba\x01\x8d\x02\n\x16\x61ttribute_value_format\x12\xb5\x01\x41ttribute value must be an alphanumeric string, allowing hyphens and underscores but not as the first or last character. The stored attribute value will be normalized to lower case.\x1a;this.matches(\'^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$\')\xc8\x01\x01R\x05value\x12j\n\x13obligation_triggers\x18\x0b \x03(\x0b\x32\x39.policy.attributes.AttributeValueObligationTriggerRequestR\x12obligationTriggers\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadataJ\x04\x08\x03\x10\x04R\x07members\"C\n\x1c\x43reateAttributeValueResponse\x12#\n\x05value\x18\x01 \x01(\x0b\x32\r.policy.ValueR\x05value\"\xd1\x01\n\x1bUpdateAttributeValueRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\x12T\n\x18metadata_update_behavior\x18\x65 \x01(\x0e\x32\x1a.common.MetadataUpdateEnumR\x16metadataUpdateBehaviorJ\x04\x08\x04\x10\x05R\x07members\"C\n\x1cUpdateAttributeValueResponse\x12#\n\x05value\x18\x01 \x01(\x0b\x32\r.policy.ValueR\x05value\";\n\x1f\x44\x65\x61\x63tivateAttributeValueRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"G\n DeactivateAttributeValueResponse\x12#\n\x05value\x18\x01 \x01(\x0b\x32\r.policy.ValueR\x05value\"T\n\x1fGetAttributeValuesByFqnsRequest\x12\x1f\n\x04\x66qns\x18\x01 \x03(\tB\x0b\xbaH\x08\x92\x01\x05\x08\x01\x10\xfa\x01R\x04\x66qnsJ\x04\x08\x02\x10\x03R\nwith_value\"\x9b\x03\n GetAttributeValuesByFqnsResponse\x12}\n\x14\x66qn_attribute_values\x18\x01 \x03(\x0b\x32K.policy.attributes.GetAttributeValuesByFqnsResponse.FqnAttributeValuesEntryR\x12\x66qnAttributeValues\x1ai\n\x11\x41ttributeAndValue\x12/\n\tattribute\x18\x01 \x01(\x0b\x32\x11.policy.AttributeR\tattribute\x12#\n\x05value\x18\x02 \x01(\x0b\x32\r.policy.ValueR\x05value\x1a\x8c\x01\n\x17\x46qnAttributeValuesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12[\n\x05value\x18\x02 \x01(\x0b\x32\x45.policy.attributes.GetAttributeValuesByFqnsResponse.AttributeAndValueR\x05value:\x02\x38\x01\"\x99\x01\n\'AssignKeyAccessServerToAttributeRequest\x12j\n\x1b\x61ttribute_key_access_server\x18\x01 \x01(\x0b\x32+.policy.attributes.AttributeKeyAccessServerR\x18\x61ttributeKeyAccessServer:\x02\x18\x01\"\x9a\x01\n(AssignKeyAccessServerToAttributeResponse\x12j\n\x1b\x61ttribute_key_access_server\x18\x01 \x01(\x0b\x32+.policy.attributes.AttributeKeyAccessServerR\x18\x61ttributeKeyAccessServer:\x02\x18\x01\"\x9b\x01\n)RemoveKeyAccessServerFromAttributeRequest\x12j\n\x1b\x61ttribute_key_access_server\x18\x01 \x01(\x0b\x32+.policy.attributes.AttributeKeyAccessServerR\x18\x61ttributeKeyAccessServer:\x02\x18\x01\"\x9c\x01\n*RemoveKeyAccessServerFromAttributeResponse\x12j\n\x1b\x61ttribute_key_access_server\x18\x01 \x01(\x0b\x32+.policy.attributes.AttributeKeyAccessServerR\x18\x61ttributeKeyAccessServer:\x02\x18\x01\"\x89\x01\n#AssignKeyAccessServerToValueRequest\x12^\n\x17value_key_access_server\x18\x01 \x01(\x0b\x32\'.policy.attributes.ValueKeyAccessServerR\x14valueKeyAccessServer:\x02\x18\x01\"\x8a\x01\n$AssignKeyAccessServerToValueResponse\x12^\n\x17value_key_access_server\x18\x01 \x01(\x0b\x32\'.policy.attributes.ValueKeyAccessServerR\x14valueKeyAccessServer:\x02\x18\x01\"\x8b\x01\n%RemoveKeyAccessServerFromValueRequest\x12^\n\x17value_key_access_server\x18\x01 \x01(\x0b\x32\'.policy.attributes.ValueKeyAccessServerR\x14valueKeyAccessServer:\x02\x18\x01\"\x8c\x01\n&RemoveKeyAccessServerFromValueResponse\x12^\n\x17value_key_access_server\x18\x01 \x01(\x0b\x32\'.policy.attributes.ValueKeyAccessServerR\x14valueKeyAccessServer:\x02\x18\x01\"q\n!AssignPublicKeyToAttributeRequest\x12L\n\rattribute_key\x18\x01 \x01(\x0b\x32\x1f.policy.attributes.AttributeKeyB\x06\xbaH\x03\xc8\x01\x01R\x0c\x61ttributeKey\"j\n\"AssignPublicKeyToAttributeResponse\x12\x44\n\rattribute_key\x18\x01 \x01(\x0b\x32\x1f.policy.attributes.AttributeKeyR\x0c\x61ttributeKey\"s\n#RemovePublicKeyFromAttributeRequest\x12L\n\rattribute_key\x18\x01 \x01(\x0b\x32\x1f.policy.attributes.AttributeKeyB\x06\xbaH\x03\xc8\x01\x01R\x0c\x61ttributeKey\"l\n$RemovePublicKeyFromAttributeResponse\x12\x44\n\rattribute_key\x18\x01 \x01(\x0b\x32\x1f.policy.attributes.AttributeKeyR\x0c\x61ttributeKey\"a\n\x1d\x41ssignPublicKeyToValueRequest\x12@\n\tvalue_key\x18\x01 \x01(\x0b\x32\x1b.policy.attributes.ValueKeyB\x06\xbaH\x03\xc8\x01\x01R\x08valueKey\"Z\n\x1e\x41ssignPublicKeyToValueResponse\x12\x38\n\tvalue_key\x18\x01 \x01(\x0b\x32\x1b.policy.attributes.ValueKeyR\x08valueKey\"c\n\x1fRemovePublicKeyFromValueRequest\x12@\n\tvalue_key\x18\x01 \x01(\x0b\x32\x1b.policy.attributes.ValueKeyB\x06\xbaH\x03\xc8\x01\x01R\x08valueKey\"\\\n RemovePublicKeyFromValueResponse\x12\x38\n\tvalue_key\x18\x01 \x01(\x0b\x32\x1b.policy.attributes.ValueKeyR\x08valueKey*\xa3\x01\n\x12SortAttributesType\x12$\n SORT_ATTRIBUTES_TYPE_UNSPECIFIED\x10\x00\x12\x1d\n\x19SORT_ATTRIBUTES_TYPE_NAME\x10\x01\x12#\n\x1fSORT_ATTRIBUTES_TYPE_CREATED_AT\x10\x02\x12#\n\x1fSORT_ATTRIBUTES_TYPE_UPDATED_AT\x10\x03\x32\xdc\x13\n\x11\x41ttributesService\x12j\n\x0eListAttributes\x12(.policy.attributes.ListAttributesRequest\x1a).policy.attributes.ListAttributesResponse\"\x03\x90\x02\x01\x12|\n\x13ListAttributeValues\x12-.policy.attributes.ListAttributeValuesRequest\x1a..policy.attributes.ListAttributeValuesResponse\"\x06\x88\x02\x01\x90\x02\x01\x12\x64\n\x0cGetAttribute\x12&.policy.attributes.GetAttributeRequest\x1a\'.policy.attributes.GetAttributeResponse\"\x03\x90\x02\x01\x12\x88\x01\n\x18GetAttributeValuesByFqns\x12\x32.policy.attributes.GetAttributeValuesByFqnsRequest\x1a\x33.policy.attributes.GetAttributeValuesByFqnsResponse\"\x03\x90\x02\x01\x12j\n\x0f\x43reateAttribute\x12).policy.attributes.CreateAttributeRequest\x1a*.policy.attributes.CreateAttributeResponse\"\x00\x12j\n\x0fUpdateAttribute\x12).policy.attributes.UpdateAttributeRequest\x1a*.policy.attributes.UpdateAttributeResponse\"\x00\x12v\n\x13\x44\x65\x61\x63tivateAttribute\x12-.policy.attributes.DeactivateAttributeRequest\x1a..policy.attributes.DeactivateAttributeResponse\"\x00\x12s\n\x11GetAttributeValue\x12+.policy.attributes.GetAttributeValueRequest\x1a,.policy.attributes.GetAttributeValueResponse\"\x03\x90\x02\x01\x12y\n\x14\x43reateAttributeValue\x12..policy.attributes.CreateAttributeValueRequest\x1a/.policy.attributes.CreateAttributeValueResponse\"\x00\x12y\n\x14UpdateAttributeValue\x12..policy.attributes.UpdateAttributeValueRequest\x1a/.policy.attributes.UpdateAttributeValueResponse\"\x00\x12\x85\x01\n\x18\x44\x65\x61\x63tivateAttributeValue\x12\x32.policy.attributes.DeactivateAttributeValueRequest\x1a\x33.policy.attributes.DeactivateAttributeValueResponse\"\x00\x12\xa0\x01\n AssignKeyAccessServerToAttribute\x12:.policy.attributes.AssignKeyAccessServerToAttributeRequest\x1a;.policy.attributes.AssignKeyAccessServerToAttributeResponse\"\x03\x88\x02\x01\x12\xa6\x01\n\"RemoveKeyAccessServerFromAttribute\x12<.policy.attributes.RemoveKeyAccessServerFromAttributeRequest\x1a=.policy.attributes.RemoveKeyAccessServerFromAttributeResponse\"\x03\x88\x02\x01\x12\x94\x01\n\x1c\x41ssignKeyAccessServerToValue\x12\x36.policy.attributes.AssignKeyAccessServerToValueRequest\x1a\x37.policy.attributes.AssignKeyAccessServerToValueResponse\"\x03\x88\x02\x01\x12\x9a\x01\n\x1eRemoveKeyAccessServerFromValue\x12\x38.policy.attributes.RemoveKeyAccessServerFromValueRequest\x1a\x39.policy.attributes.RemoveKeyAccessServerFromValueResponse\"\x03\x88\x02\x01\x12\x8b\x01\n\x1a\x41ssignPublicKeyToAttribute\x12\x34.policy.attributes.AssignPublicKeyToAttributeRequest\x1a\x35.policy.attributes.AssignPublicKeyToAttributeResponse\"\x00\x12\x91\x01\n\x1cRemovePublicKeyFromAttribute\x12\x36.policy.attributes.RemovePublicKeyFromAttributeRequest\x1a\x37.policy.attributes.RemovePublicKeyFromAttributeResponse\"\x00\x12\x7f\n\x16\x41ssignPublicKeyToValue\x12\x30.policy.attributes.AssignPublicKeyToValueRequest\x1a\x31.policy.attributes.AssignPublicKeyToValueResponse\"\x00\x12\x85\x01\n\x18RemovePublicKeyFromValue\x12\x32.policy.attributes.RemovePublicKeyFromValueRequest\x1a\x33.policy.attributes.RemovePublicKeyFromValueResponse\"\x00\x42\x8d\x01\n\x15\x63om.policy.attributesB\x0f\x41ttributesProtoP\x01\xa2\x02\x03PAX\xaa\x02\x11Policy.Attributes\xca\x02\x11Policy\\Attributes\xe2\x02\x1dPolicy\\Attributes\\GPBMetadata\xea\x02\x12Policy::Attributesb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -58,6 +57,10 @@ _globals['_VALUEKEY'].fields_by_name['value_id']._serialized_options = b'\272H\010r\003\260\001\001\310\001\001' _globals['_VALUEKEY'].fields_by_name['key_id']._loaded_options = None _globals['_VALUEKEY'].fields_by_name['key_id']._serialized_options = b'\272H\010r\003\260\001\001\310\001\001' + _globals['_ATTRIBUTESSORT'].fields_by_name['field']._loaded_options = None + _globals['_ATTRIBUTESSORT'].fields_by_name['field']._serialized_options = b'\272H\005\202\001\002\020\001' + _globals['_ATTRIBUTESSORT'].fields_by_name['direction']._loaded_options = None + _globals['_ATTRIBUTESSORT'].fields_by_name['direction']._serialized_options = b'\272H\005\202\001\002\020\001' _globals['_LISTATTRIBUTESREQUEST'].fields_by_name['sort']._loaded_options = None _globals['_LISTATTRIBUTESREQUEST'].fields_by_name['sort']._serialized_options = b'\272H\005\222\001\002\020\001' _globals['_GETATTRIBUTEREQUEST'].fields_by_name['id']._loaded_options = None @@ -90,6 +93,10 @@ _globals['_GETATTRIBUTEVALUEREQUEST']._serialized_options = b'\272H\226\002\032\232\001\n\020exclusive_fields\022LEither use deprecated \'id\' field or one of \'value_id\' or \'fqn\', but not both\0328!(has(this.id) && (has(this.value_id) || has(this.fqn)))\032w\n\017required_fields\022/Either id or one of value_id or fqn must be set\0323has(this.id) || has(this.value_id) || has(this.fqn)' _globals['_LISTATTRIBUTEVALUESREQUEST'].fields_by_name['attribute_id']._loaded_options = None _globals['_LISTATTRIBUTEVALUESREQUEST'].fields_by_name['attribute_id']._serialized_options = b'\272H\005r\003\260\001\001' + _globals['_ATTRIBUTEVALUEOBLIGATIONTRIGGERREQUEST'].fields_by_name['obligation_value']._loaded_options = None + _globals['_ATTRIBUTEVALUEOBLIGATIONTRIGGERREQUEST'].fields_by_name['obligation_value']._serialized_options = b'\272H\003\310\001\001' + _globals['_ATTRIBUTEVALUEOBLIGATIONTRIGGERREQUEST'].fields_by_name['action']._loaded_options = None + _globals['_ATTRIBUTEVALUEOBLIGATIONTRIGGERREQUEST'].fields_by_name['action']._serialized_options = b'\272H\003\310\001\001' _globals['_CREATEATTRIBUTEVALUEREQUEST'].fields_by_name['attribute_id']._loaded_options = None _globals['_CREATEATTRIBUTEVALUEREQUEST'].fields_by_name['attribute_id']._serialized_options = b'\272H\005r\003\260\001\001' _globals['_CREATEATTRIBUTEVALUEREQUEST'].fields_by_name['value']._loaded_options = None @@ -133,7 +140,7 @@ _globals['_ATTRIBUTESSERVICE'].methods_by_name['GetAttribute']._loaded_options = None _globals['_ATTRIBUTESSERVICE'].methods_by_name['GetAttribute']._serialized_options = b'\220\002\001' _globals['_ATTRIBUTESSERVICE'].methods_by_name['GetAttributeValuesByFqns']._loaded_options = None - _globals['_ATTRIBUTESSERVICE'].methods_by_name['GetAttributeValuesByFqns']._serialized_options = b'\220\002\001\202\323\344\223\002\023\022\021/attributes/*/fqn' + _globals['_ATTRIBUTESSERVICE'].methods_by_name['GetAttributeValuesByFqns']._serialized_options = b'\220\002\001' _globals['_ATTRIBUTESSERVICE'].methods_by_name['GetAttributeValue']._loaded_options = None _globals['_ATTRIBUTESSERVICE'].methods_by_name['GetAttributeValue']._serialized_options = b'\220\002\001' _globals['_ATTRIBUTESSERVICE'].methods_by_name['AssignKeyAccessServerToAttribute']._loaded_options = None @@ -144,98 +151,100 @@ _globals['_ATTRIBUTESSERVICE'].methods_by_name['AssignKeyAccessServerToValue']._serialized_options = b'\210\002\001' _globals['_ATTRIBUTESSERVICE'].methods_by_name['RemoveKeyAccessServerFromValue']._loaded_options = None _globals['_ATTRIBUTESSERVICE'].methods_by_name['RemoveKeyAccessServerFromValue']._serialized_options = b'\210\002\001' - _globals['_SORTATTRIBUTESTYPE']._serialized_start=7073 - _globals['_SORTATTRIBUTESTYPE']._serialized_end=7236 - _globals['_ATTRIBUTEKEYACCESSSERVER']._serialized_start=216 - _globals['_ATTRIBUTEKEYACCESSSERVER']._serialized_end=350 - _globals['_VALUEKEYACCESSSERVER']._serialized_start=352 - _globals['_VALUEKEYACCESSSERVER']._serialized_end=474 - _globals['_ATTRIBUTEKEY']._serialized_start=476 - _globals['_ATTRIBUTEKEY']._serialized_end=574 - _globals['_VALUEKEY']._serialized_start=576 - _globals['_VALUEKEY']._serialized_end=662 - _globals['_ATTRIBUTESSORT']._serialized_start=665 - _globals['_ATTRIBUTESSORT']._serialized_end=795 - _globals['_LISTATTRIBUTESREQUEST']._serialized_start=798 - _globals['_LISTATTRIBUTESREQUEST']._serialized_end=1016 - _globals['_LISTATTRIBUTESRESPONSE']._serialized_start=1019 - _globals['_LISTATTRIBUTESRESPONSE']._serialized_end=1148 - _globals['_GETATTRIBUTEREQUEST']._serialized_start=1151 - _globals['_GETATTRIBUTEREQUEST']._serialized_end=1597 - _globals['_GETATTRIBUTERESPONSE']._serialized_start=1599 - _globals['_GETATTRIBUTERESPONSE']._serialized_end=1670 - _globals['_CREATEATTRIBUTEREQUEST']._serialized_start=1673 - _globals['_CREATEATTRIBUTEREQUEST']._serialized_end=2322 - _globals['_CREATEATTRIBUTERESPONSE']._serialized_start=2324 - _globals['_CREATEATTRIBUTERESPONSE']._serialized_end=2398 - _globals['_UPDATEATTRIBUTEREQUEST']._serialized_start=2401 - _globals['_UPDATEATTRIBUTEREQUEST']._serialized_end=2590 - _globals['_UPDATEATTRIBUTERESPONSE']._serialized_start=2592 - _globals['_UPDATEATTRIBUTERESPONSE']._serialized_end=2666 - _globals['_DEACTIVATEATTRIBUTEREQUEST']._serialized_start=2668 - _globals['_DEACTIVATEATTRIBUTEREQUEST']._serialized_end=2722 - _globals['_DEACTIVATEATTRIBUTERESPONSE']._serialized_start=2724 - _globals['_DEACTIVATEATTRIBUTERESPONSE']._serialized_end=2802 - _globals['_GETATTRIBUTEVALUEREQUEST']._serialized_start=2805 - _globals['_GETATTRIBUTEVALUEREQUEST']._serialized_end=3232 - _globals['_GETATTRIBUTEVALUERESPONSE']._serialized_start=3234 - _globals['_GETATTRIBUTEVALUERESPONSE']._serialized_end=3298 - _globals['_LISTATTRIBUTEVALUESREQUEST']._serialized_start=3301 - _globals['_LISTATTRIBUTEVALUESREQUEST']._serialized_end=3474 - _globals['_LISTATTRIBUTEVALUESRESPONSE']._serialized_start=3476 - _globals['_LISTATTRIBUTEVALUESRESPONSE']._serialized_end=3598 - _globals['_CREATEATTRIBUTEVALUEREQUEST']._serialized_start=3601 - _globals['_CREATEATTRIBUTEVALUEREQUEST']._serialized_end=4054 - _globals['_CREATEATTRIBUTEVALUERESPONSE']._serialized_start=4056 - _globals['_CREATEATTRIBUTEVALUERESPONSE']._serialized_end=4123 - _globals['_UPDATEATTRIBUTEVALUEREQUEST']._serialized_start=4126 - _globals['_UPDATEATTRIBUTEVALUEREQUEST']._serialized_end=4335 - _globals['_UPDATEATTRIBUTEVALUERESPONSE']._serialized_start=4337 - _globals['_UPDATEATTRIBUTEVALUERESPONSE']._serialized_end=4404 - _globals['_DEACTIVATEATTRIBUTEVALUEREQUEST']._serialized_start=4406 - _globals['_DEACTIVATEATTRIBUTEVALUEREQUEST']._serialized_end=4465 - _globals['_DEACTIVATEATTRIBUTEVALUERESPONSE']._serialized_start=4467 - _globals['_DEACTIVATEATTRIBUTEVALUERESPONSE']._serialized_end=4538 - _globals['_GETATTRIBUTEVALUESBYFQNSREQUEST']._serialized_start=4540 - _globals['_GETATTRIBUTEVALUESBYFQNSREQUEST']._serialized_end=4624 - _globals['_GETATTRIBUTEVALUESBYFQNSRESPONSE']._serialized_start=4627 - _globals['_GETATTRIBUTEVALUESBYFQNSRESPONSE']._serialized_end=5038 - _globals['_GETATTRIBUTEVALUESBYFQNSRESPONSE_ATTRIBUTEANDVALUE']._serialized_start=4790 - _globals['_GETATTRIBUTEVALUESBYFQNSRESPONSE_ATTRIBUTEANDVALUE']._serialized_end=4895 - _globals['_GETATTRIBUTEVALUESBYFQNSRESPONSE_FQNATTRIBUTEVALUESENTRY']._serialized_start=4898 - _globals['_GETATTRIBUTEVALUESBYFQNSRESPONSE_FQNATTRIBUTEVALUESENTRY']._serialized_end=5038 - _globals['_ASSIGNKEYACCESSSERVERTOATTRIBUTEREQUEST']._serialized_start=5041 - _globals['_ASSIGNKEYACCESSSERVERTOATTRIBUTEREQUEST']._serialized_end=5194 - _globals['_ASSIGNKEYACCESSSERVERTOATTRIBUTERESPONSE']._serialized_start=5197 - _globals['_ASSIGNKEYACCESSSERVERTOATTRIBUTERESPONSE']._serialized_end=5351 - _globals['_REMOVEKEYACCESSSERVERFROMATTRIBUTEREQUEST']._serialized_start=5354 - _globals['_REMOVEKEYACCESSSERVERFROMATTRIBUTEREQUEST']._serialized_end=5509 - _globals['_REMOVEKEYACCESSSERVERFROMATTRIBUTERESPONSE']._serialized_start=5512 - _globals['_REMOVEKEYACCESSSERVERFROMATTRIBUTERESPONSE']._serialized_end=5668 - _globals['_ASSIGNKEYACCESSSERVERTOVALUEREQUEST']._serialized_start=5671 - _globals['_ASSIGNKEYACCESSSERVERTOVALUEREQUEST']._serialized_end=5808 - _globals['_ASSIGNKEYACCESSSERVERTOVALUERESPONSE']._serialized_start=5811 - _globals['_ASSIGNKEYACCESSSERVERTOVALUERESPONSE']._serialized_end=5949 - _globals['_REMOVEKEYACCESSSERVERFROMVALUEREQUEST']._serialized_start=5952 - _globals['_REMOVEKEYACCESSSERVERFROMVALUEREQUEST']._serialized_end=6091 - _globals['_REMOVEKEYACCESSSERVERFROMVALUERESPONSE']._serialized_start=6094 - _globals['_REMOVEKEYACCESSSERVERFROMVALUERESPONSE']._serialized_end=6234 - _globals['_ASSIGNPUBLICKEYTOATTRIBUTEREQUEST']._serialized_start=6236 - _globals['_ASSIGNPUBLICKEYTOATTRIBUTEREQUEST']._serialized_end=6349 - _globals['_ASSIGNPUBLICKEYTOATTRIBUTERESPONSE']._serialized_start=6351 - _globals['_ASSIGNPUBLICKEYTOATTRIBUTERESPONSE']._serialized_end=6457 - _globals['_REMOVEPUBLICKEYFROMATTRIBUTEREQUEST']._serialized_start=6459 - _globals['_REMOVEPUBLICKEYFROMATTRIBUTEREQUEST']._serialized_end=6574 - _globals['_REMOVEPUBLICKEYFROMATTRIBUTERESPONSE']._serialized_start=6576 - _globals['_REMOVEPUBLICKEYFROMATTRIBUTERESPONSE']._serialized_end=6684 - _globals['_ASSIGNPUBLICKEYTOVALUEREQUEST']._serialized_start=6686 - _globals['_ASSIGNPUBLICKEYTOVALUEREQUEST']._serialized_end=6783 - _globals['_ASSIGNPUBLICKEYTOVALUERESPONSE']._serialized_start=6785 - _globals['_ASSIGNPUBLICKEYTOVALUERESPONSE']._serialized_end=6875 - _globals['_REMOVEPUBLICKEYFROMVALUEREQUEST']._serialized_start=6877 - _globals['_REMOVEPUBLICKEYFROMVALUEREQUEST']._serialized_end=6976 - _globals['_REMOVEPUBLICKEYFROMVALUERESPONSE']._serialized_start=6978 - _globals['_REMOVEPUBLICKEYFROMVALUERESPONSE']._serialized_end=7070 - _globals['_ATTRIBUTESSERVICE']._serialized_start=7239 - _globals['_ATTRIBUTESSERVICE']._serialized_end=9788 + _globals['_SORTATTRIBUTESTYPE']._serialized_start=7451 + _globals['_SORTATTRIBUTESTYPE']._serialized_end=7614 + _globals['_ATTRIBUTEKEYACCESSSERVER']._serialized_start=186 + _globals['_ATTRIBUTEKEYACCESSSERVER']._serialized_end=320 + _globals['_VALUEKEYACCESSSERVER']._serialized_start=322 + _globals['_VALUEKEYACCESSSERVER']._serialized_end=444 + _globals['_ATTRIBUTEKEY']._serialized_start=446 + _globals['_ATTRIBUTEKEY']._serialized_end=544 + _globals['_VALUEKEY']._serialized_start=546 + _globals['_VALUEKEY']._serialized_end=632 + _globals['_ATTRIBUTESSORT']._serialized_start=635 + _globals['_ATTRIBUTESSORT']._serialized_end=785 + _globals['_LISTATTRIBUTESREQUEST']._serialized_start=788 + _globals['_LISTATTRIBUTESREQUEST']._serialized_end=1006 + _globals['_LISTATTRIBUTESRESPONSE']._serialized_start=1009 + _globals['_LISTATTRIBUTESRESPONSE']._serialized_end=1138 + _globals['_GETATTRIBUTEREQUEST']._serialized_start=1141 + _globals['_GETATTRIBUTEREQUEST']._serialized_end=1587 + _globals['_GETATTRIBUTERESPONSE']._serialized_start=1589 + _globals['_GETATTRIBUTERESPONSE']._serialized_end=1660 + _globals['_CREATEATTRIBUTEREQUEST']._serialized_start=1663 + _globals['_CREATEATTRIBUTEREQUEST']._serialized_end=2312 + _globals['_CREATEATTRIBUTERESPONSE']._serialized_start=2314 + _globals['_CREATEATTRIBUTERESPONSE']._serialized_end=2388 + _globals['_UPDATEATTRIBUTEREQUEST']._serialized_start=2391 + _globals['_UPDATEATTRIBUTEREQUEST']._serialized_end=2580 + _globals['_UPDATEATTRIBUTERESPONSE']._serialized_start=2582 + _globals['_UPDATEATTRIBUTERESPONSE']._serialized_end=2656 + _globals['_DEACTIVATEATTRIBUTEREQUEST']._serialized_start=2658 + _globals['_DEACTIVATEATTRIBUTEREQUEST']._serialized_end=2712 + _globals['_DEACTIVATEATTRIBUTERESPONSE']._serialized_start=2714 + _globals['_DEACTIVATEATTRIBUTERESPONSE']._serialized_end=2792 + _globals['_GETATTRIBUTEVALUEREQUEST']._serialized_start=2795 + _globals['_GETATTRIBUTEVALUEREQUEST']._serialized_end=3222 + _globals['_GETATTRIBUTEVALUERESPONSE']._serialized_start=3224 + _globals['_GETATTRIBUTEVALUERESPONSE']._serialized_end=3288 + _globals['_LISTATTRIBUTEVALUESREQUEST']._serialized_start=3291 + _globals['_LISTATTRIBUTEVALUESREQUEST']._serialized_end=3464 + _globals['_LISTATTRIBUTEVALUESRESPONSE']._serialized_start=3466 + _globals['_LISTATTRIBUTEVALUESRESPONSE']._serialized_end=3588 + _globals['_ATTRIBUTEVALUEOBLIGATIONTRIGGERREQUEST']._serialized_start=3591 + _globals['_ATTRIBUTEVALUEOBLIGATIONTRIGGERREQUEST']._serialized_end=3868 + _globals['_CREATEATTRIBUTEVALUEREQUEST']._serialized_start=3871 + _globals['_CREATEATTRIBUTEVALUEREQUEST']._serialized_end=4432 + _globals['_CREATEATTRIBUTEVALUERESPONSE']._serialized_start=4434 + _globals['_CREATEATTRIBUTEVALUERESPONSE']._serialized_end=4501 + _globals['_UPDATEATTRIBUTEVALUEREQUEST']._serialized_start=4504 + _globals['_UPDATEATTRIBUTEVALUEREQUEST']._serialized_end=4713 + _globals['_UPDATEATTRIBUTEVALUERESPONSE']._serialized_start=4715 + _globals['_UPDATEATTRIBUTEVALUERESPONSE']._serialized_end=4782 + _globals['_DEACTIVATEATTRIBUTEVALUEREQUEST']._serialized_start=4784 + _globals['_DEACTIVATEATTRIBUTEVALUEREQUEST']._serialized_end=4843 + _globals['_DEACTIVATEATTRIBUTEVALUERESPONSE']._serialized_start=4845 + _globals['_DEACTIVATEATTRIBUTEVALUERESPONSE']._serialized_end=4916 + _globals['_GETATTRIBUTEVALUESBYFQNSREQUEST']._serialized_start=4918 + _globals['_GETATTRIBUTEVALUESBYFQNSREQUEST']._serialized_end=5002 + _globals['_GETATTRIBUTEVALUESBYFQNSRESPONSE']._serialized_start=5005 + _globals['_GETATTRIBUTEVALUESBYFQNSRESPONSE']._serialized_end=5416 + _globals['_GETATTRIBUTEVALUESBYFQNSRESPONSE_ATTRIBUTEANDVALUE']._serialized_start=5168 + _globals['_GETATTRIBUTEVALUESBYFQNSRESPONSE_ATTRIBUTEANDVALUE']._serialized_end=5273 + _globals['_GETATTRIBUTEVALUESBYFQNSRESPONSE_FQNATTRIBUTEVALUESENTRY']._serialized_start=5276 + _globals['_GETATTRIBUTEVALUESBYFQNSRESPONSE_FQNATTRIBUTEVALUESENTRY']._serialized_end=5416 + _globals['_ASSIGNKEYACCESSSERVERTOATTRIBUTEREQUEST']._serialized_start=5419 + _globals['_ASSIGNKEYACCESSSERVERTOATTRIBUTEREQUEST']._serialized_end=5572 + _globals['_ASSIGNKEYACCESSSERVERTOATTRIBUTERESPONSE']._serialized_start=5575 + _globals['_ASSIGNKEYACCESSSERVERTOATTRIBUTERESPONSE']._serialized_end=5729 + _globals['_REMOVEKEYACCESSSERVERFROMATTRIBUTEREQUEST']._serialized_start=5732 + _globals['_REMOVEKEYACCESSSERVERFROMATTRIBUTEREQUEST']._serialized_end=5887 + _globals['_REMOVEKEYACCESSSERVERFROMATTRIBUTERESPONSE']._serialized_start=5890 + _globals['_REMOVEKEYACCESSSERVERFROMATTRIBUTERESPONSE']._serialized_end=6046 + _globals['_ASSIGNKEYACCESSSERVERTOVALUEREQUEST']._serialized_start=6049 + _globals['_ASSIGNKEYACCESSSERVERTOVALUEREQUEST']._serialized_end=6186 + _globals['_ASSIGNKEYACCESSSERVERTOVALUERESPONSE']._serialized_start=6189 + _globals['_ASSIGNKEYACCESSSERVERTOVALUERESPONSE']._serialized_end=6327 + _globals['_REMOVEKEYACCESSSERVERFROMVALUEREQUEST']._serialized_start=6330 + _globals['_REMOVEKEYACCESSSERVERFROMVALUEREQUEST']._serialized_end=6469 + _globals['_REMOVEKEYACCESSSERVERFROMVALUERESPONSE']._serialized_start=6472 + _globals['_REMOVEKEYACCESSSERVERFROMVALUERESPONSE']._serialized_end=6612 + _globals['_ASSIGNPUBLICKEYTOATTRIBUTEREQUEST']._serialized_start=6614 + _globals['_ASSIGNPUBLICKEYTOATTRIBUTEREQUEST']._serialized_end=6727 + _globals['_ASSIGNPUBLICKEYTOATTRIBUTERESPONSE']._serialized_start=6729 + _globals['_ASSIGNPUBLICKEYTOATTRIBUTERESPONSE']._serialized_end=6835 + _globals['_REMOVEPUBLICKEYFROMATTRIBUTEREQUEST']._serialized_start=6837 + _globals['_REMOVEPUBLICKEYFROMATTRIBUTEREQUEST']._serialized_end=6952 + _globals['_REMOVEPUBLICKEYFROMATTRIBUTERESPONSE']._serialized_start=6954 + _globals['_REMOVEPUBLICKEYFROMATTRIBUTERESPONSE']._serialized_end=7062 + _globals['_ASSIGNPUBLICKEYTOVALUEREQUEST']._serialized_start=7064 + _globals['_ASSIGNPUBLICKEYTOVALUEREQUEST']._serialized_end=7161 + _globals['_ASSIGNPUBLICKEYTOVALUERESPONSE']._serialized_start=7163 + _globals['_ASSIGNPUBLICKEYTOVALUERESPONSE']._serialized_end=7253 + _globals['_REMOVEPUBLICKEYFROMVALUEREQUEST']._serialized_start=7255 + _globals['_REMOVEPUBLICKEYFROMVALUEREQUEST']._serialized_end=7354 + _globals['_REMOVEPUBLICKEYFROMVALUERESPONSE']._serialized_start=7356 + _globals['_REMOVEPUBLICKEYFROMVALUERESPONSE']._serialized_end=7448 + _globals['_ATTRIBUTESSERVICE']._serialized_start=7617 + _globals['_ATTRIBUTESSERVICE']._serialized_end=10141 # @@protoc_insertion_point(module_scope) diff --git a/packages/otdf-python-proto/src/otdf_python_proto/policy/attributes/attributes_pb2.pyi b/packages/otdf-python-proto/src/otdf_python_proto/policy/attributes/attributes_pb2.pyi index 0bd67672..c1bd9b24 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/policy/attributes/attributes_pb2.pyi +++ b/packages/otdf-python-proto/src/otdf_python_proto/policy/attributes/attributes_pb2.pyi @@ -1,6 +1,5 @@ from buf.validate import validate_pb2 as _validate_pb2 from common import common_pb2 as _common_pb2 -from google.api import annotations_pb2 as _annotations_pb2 from google.protobuf import wrappers_pb2 as _wrappers_pb2 from policy import objects_pb2 as _objects_pb2 from policy import selectors_pb2 as _selectors_pb2 @@ -184,15 +183,29 @@ class ListAttributeValuesResponse(_message.Message): pagination: _selectors_pb2.PageResponse def __init__(self, values: _Optional[_Iterable[_Union[_objects_pb2.Value, _Mapping]]] = ..., pagination: _Optional[_Union[_selectors_pb2.PageResponse, _Mapping]] = ...) -> None: ... +class AttributeValueObligationTriggerRequest(_message.Message): + __slots__ = ("obligation_value", "action", "context", "metadata") + OBLIGATION_VALUE_FIELD_NUMBER: _ClassVar[int] + ACTION_FIELD_NUMBER: _ClassVar[int] + CONTEXT_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] + obligation_value: _common_pb2.IdFqnIdentifier + action: _common_pb2.IdNameIdentifier + context: _objects_pb2.RequestContext + metadata: _common_pb2.MetadataMutable + def __init__(self, obligation_value: _Optional[_Union[_common_pb2.IdFqnIdentifier, _Mapping]] = ..., action: _Optional[_Union[_common_pb2.IdNameIdentifier, _Mapping]] = ..., context: _Optional[_Union[_objects_pb2.RequestContext, _Mapping]] = ..., metadata: _Optional[_Union[_common_pb2.MetadataMutable, _Mapping]] = ...) -> None: ... + class CreateAttributeValueRequest(_message.Message): - __slots__ = ("attribute_id", "value", "metadata") + __slots__ = ("attribute_id", "value", "obligation_triggers", "metadata") ATTRIBUTE_ID_FIELD_NUMBER: _ClassVar[int] VALUE_FIELD_NUMBER: _ClassVar[int] + OBLIGATION_TRIGGERS_FIELD_NUMBER: _ClassVar[int] METADATA_FIELD_NUMBER: _ClassVar[int] attribute_id: str value: str + obligation_triggers: _containers.RepeatedCompositeFieldContainer[AttributeValueObligationTriggerRequest] metadata: _common_pb2.MetadataMutable - def __init__(self, attribute_id: _Optional[str] = ..., value: _Optional[str] = ..., metadata: _Optional[_Union[_common_pb2.MetadataMutable, _Mapping]] = ...) -> None: ... + def __init__(self, attribute_id: _Optional[str] = ..., value: _Optional[str] = ..., obligation_triggers: _Optional[_Iterable[_Union[AttributeValueObligationTriggerRequest, _Mapping]]] = ..., metadata: _Optional[_Union[_common_pb2.MetadataMutable, _Mapping]] = ...) -> None: ... class CreateAttributeValueResponse(_message.Message): __slots__ = ("value",) diff --git a/packages/otdf-python-proto/src/otdf_python_proto/policy/kasregistry/key_access_server_registry_connect.py b/packages/otdf-python-proto/src/otdf_python_proto/policy/kasregistry/key_access_server_registry_connect.py index 17eca575..15db1977 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/policy/kasregistry/key_access_server_registry_connect.py +++ b/packages/otdf-python-proto/src/otdf_python_proto/policy/kasregistry/key_access_server_registry_connect.py @@ -7,6 +7,7 @@ from connectrpc.client import ConnectClient, ConnectClientSync from connectrpc.code import Code +from connectrpc.compression import Compression from connectrpc.errors import ConnectError from connectrpc.interceptor import Interceptor, InterceptorSync from connectrpc.method import IdempotencyLevel, MethodInfo @@ -60,7 +61,7 @@ async def list_key_mappings(self, request: policy_dot_kasregistry_dot_key__acces class KeyAccessServerRegistryServiceASGIApplication(ConnectASGIApplication[KeyAccessServerRegistryService]): - def __init__(self, service: KeyAccessServerRegistryService | AsyncGenerator[KeyAccessServerRegistryService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None) -> None: + def __init__(self, service: KeyAccessServerRegistryService | AsyncGenerator[KeyAccessServerRegistryService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: super().__init__( service=service, endpoints=lambda svc: { @@ -207,6 +208,7 @@ def __init__(self, service: KeyAccessServerRegistryService | AsyncGenerator[KeyA }, interceptors=interceptors, read_max_bytes=read_max_bytes, + compressions=compressions, ) @property @@ -535,7 +537,7 @@ def list_key_mappings(self, request: policy_dot_kasregistry_dot_key__access__ser class KeyAccessServerRegistryServiceWSGIApplication(ConnectWSGIApplication): - def __init__(self, service: KeyAccessServerRegistryServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None) -> None: + def __init__(self, service: KeyAccessServerRegistryServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: super().__init__( endpoints={ "/policy.kasregistry.KeyAccessServerRegistryService/ListKeyAccessServers": EndpointSync.unary( @@ -681,6 +683,7 @@ def __init__(self, service: KeyAccessServerRegistryServiceSync, interceptors: It }, interceptors=interceptors, read_max_bytes=read_max_bytes, + compressions=compressions, ) @property diff --git a/packages/otdf-python-proto/src/otdf_python_proto/policy/kasregistry/key_access_server_registry_pb2.py b/packages/otdf-python-proto/src/otdf_python_proto/policy/kasregistry/key_access_server_registry_pb2.py index 61b6e0de..ba42c91f 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/policy/kasregistry/key_access_server_registry_pb2.py +++ b/packages/otdf-python-proto/src/otdf_python_proto/policy/kasregistry/key_access_server_registry_pb2.py @@ -24,12 +24,11 @@ from buf.validate import validate_pb2 as buf_dot_validate_dot_validate__pb2 from common import common_pb2 as common_dot_common__pb2 -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from policy import objects_pb2 as policy_dot_objects__pb2 from policy import selectors_pb2 as policy_dot_selectors__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n3policy/kasregistry/key_access_server_registry.proto\x12\x12policy.kasregistry\x1a\x1b\x62uf/validate/validate.proto\x1a\x13\x63ommon/common.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x14policy/objects.proto\x1a\x16policy/selectors.proto\"\xe4\x03\n\x19GetKeyAccessServerRequest\x12\x1d\n\x02id\x18\x01 \x01(\tB\r\x18\x01\xbaH\x08r\x03\xb0\x01\x01\xd8\x01\x01R\x02id\x12!\n\x06kas_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x05kasId\x12\x1d\n\x04name\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x04name\x12\x1e\n\x03uri\x18\x04 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01H\x00R\x03uri:\xb7\x02\xbaH\xb3\x02\x1a\xa8\x01\n\x10\x65xclusive_fields\x12JEither use deprecated \'id\' field or one of \'kas_id\' or \'uri\', but not both\x1aH!(has(this.id) && (has(this.kas_id) || has(this.uri) || has(this.name)))\x1a\x85\x01\n\x0frequired_fields\x12-Either id or one of kas_id or uri must be set\x1a\x43has(this.id) || has(this.kas_id) || has(this.uri) || has(this.name)B\x0c\n\nidentifier\"a\n\x1aGetKeyAccessServerResponse\x12\x43\n\x11key_access_server\x18\x01 \x01(\x0b\x32\x17.policy.KeyAccessServerR\x0fkeyAccessServer\"\x8f\x01\n\x14KeyAccessServersSort\x12\x42\n\x05\x66ield\x18\x01 \x01(\x0e\x32,.policy.kasregistry.SortKeyAccessServersTypeR\x05\x66ield\x12\x33\n\tdirection\x18\x02 \x01(\x0e\x32\x15.policy.SortDirectionR\tdirection\"\x9a\x01\n\x1bListKeyAccessServersRequest\x12\x33\n\npagination\x18\n \x01(\x0b\x32\x13.policy.PageRequestR\npagination\x12\x46\n\x04sort\x18\x0b \x03(\x0b\x32(.policy.kasregistry.KeyAccessServersSortB\x08\xbaH\x05\x92\x01\x02\x10\x01R\x04sort\"\x9b\x01\n\x1cListKeyAccessServersResponse\x12\x45\n\x12key_access_servers\x18\x01 \x03(\x0b\x32\x17.policy.KeyAccessServerR\x10keyAccessServers\x12\x34\n\npagination\x18\n \x01(\x0b\x32\x14.policy.PageResponseR\npagination\"\x95\x06\n\x1c\x43reateKeyAccessServerRequest\x12\x87\x02\n\x03uri\x18\x01 \x01(\tB\xf4\x01\xbaH\xf0\x01\xba\x01\xec\x01\n\nuri_format\x12\xcf\x01URI must be a valid URL (e.g., \'https://demo.com/\') followed by additional segments. Each segment must start and end with an alphanumeric character, can contain hyphens, alphanumeric characters, and slashes.\x1a\x0cthis.isUri()R\x03uri\x12\x30\n\npublic_key\x18\x02 \x01(\x0b\x32\x11.policy.PublicKeyR\tpublicKey\x12@\n\x0bsource_type\x18\x03 \x01(\x0e\x32\x12.policy.SourceTypeB\x0b\xbaH\x08\x82\x01\x02\x10\x01\xc8\x01\x00R\nsourceType\x12\xc1\x02\n\x04name\x18\x14 \x01(\tB\xac\x02\xbaH\xa8\x02r\x03\x18\xfd\x01\xba\x01\x9c\x02\n\x0fkas_name_format\x12\xb3\x01Registered KAS name must be an alphanumeric string, allowing hyphens, and underscores but not as the first or last character. The stored KAS name will be normalized to lower case.\x1aSsize(this) > 0 ? this.matches(\'^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$\') : true\xc8\x01\x00R\x04name\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\"d\n\x1d\x43reateKeyAccessServerResponse\x12\x43\n\x11key_access_server\x18\x01 \x01(\x0b\x32\x17.policy.KeyAccessServerR\x0fkeyAccessServer\"\xa5\x07\n\x1cUpdateKeyAccessServerRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\xac\x02\n\x03uri\x18\x02 \x01(\tB\x99\x02\xbaH\x95\x02\xba\x01\x91\x02\n\x13optional_uri_format\x12\xd8\x01Optional URI must be a valid URL (e.g., \'https://demo.com/\') followed by additional segments. Each segment must start and end with an alphanumeric character, can contain hyphens, alphanumeric characters, and slashes.\x1a\x1fsize(this) == 0 || this.isUri()R\x03uri\x12\x30\n\npublic_key\x18\x03 \x01(\x0b\x32\x11.policy.PublicKeyR\tpublicKey\x12@\n\x0bsource_type\x18\x04 \x01(\x0e\x32\x12.policy.SourceTypeB\x0b\xbaH\x08\x82\x01\x02\x10\x01\xc8\x01\x00R\nsourceType\x12\xbc\x02\n\x04name\x18\x14 \x01(\tB\xa7\x02\xbaH\xa3\x02r\x03\x18\xfd\x01\xba\x01\x97\x02\n\x0fkas_name_format\x12\xb3\x01Registered KAS name must be an alphanumeric string, allowing hyphens, and underscores but not as the first or last character. The stored KAS name will be normalized to lower case.\x1aNsize(this) == 0 || this.matches(\'^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$\')\xc8\x01\x00R\x04name\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\x12T\n\x18metadata_update_behavior\x18\x65 \x01(\x0e\x32\x1a.common.MetadataUpdateEnumR\x16metadataUpdateBehavior\"d\n\x1dUpdateKeyAccessServerResponse\x12\x43\n\x11key_access_server\x18\x01 \x01(\x0b\x32\x17.policy.KeyAccessServerR\x0fkeyAccessServer\"8\n\x1c\x44\x65leteKeyAccessServerRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"d\n\x1d\x44\x65leteKeyAccessServerResponse\x12\x43\n\x11key_access_server\x18\x01 \x01(\x0b\x32\x17.policy.KeyAccessServerR\x0fkeyAccessServer\"7\n\x13GrantedPolicyObject\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x10\n\x03\x66qn\x18\x02 \x01(\tR\x03\x66qn\"\xd0\x02\n\x15KeyAccessServerGrants\x12\x43\n\x11key_access_server\x18\x01 \x01(\x0b\x32\x17.policy.KeyAccessServerR\x0fkeyAccessServer\x12R\n\x10namespace_grants\x18\x02 \x03(\x0b\x32\'.policy.kasregistry.GrantedPolicyObjectR\x0fnamespaceGrants\x12R\n\x10\x61ttribute_grants\x18\x03 \x03(\x0b\x32\'.policy.kasregistry.GrantedPolicyObjectR\x0f\x61ttributeGrants\x12J\n\x0cvalue_grants\x18\x04 \x03(\x0b\x32\'.policy.kasregistry.GrantedPolicyObjectR\x0bvalueGrants\"\x9e\x01\n\x16\x43reatePublicKeyRequest\x12\x1f\n\x06kas_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x05kasId\x12.\n\x03key\x18\x02 \x01(\x0b\x32\x14.policy.KasPublicKeyB\x06\xbaH\x03\xc8\x01\x01R\x03key\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\"8\n\x17\x43reatePublicKeyResponse\x12\x1d\n\x03key\x18\x01 \x01(\x0b\x32\x0b.policy.KeyR\x03key\"?\n\x13GetPublicKeyRequest\x12\x1a\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x02idB\x0c\n\nidentifier\"5\n\x14GetPublicKeyResponse\x12\x1d\n\x03key\x18\x01 \x01(\x0b\x32\x0b.policy.KeyR\x03key\"\xca\x01\n\x15ListPublicKeysRequest\x12!\n\x06kas_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x05kasId\x12$\n\x08kas_name\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x07kasName\x12%\n\x07kas_uri\x18\x03 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01H\x00R\x06kasUri\x12\x33\n\npagination\x18\n \x01(\x0b\x32\x13.policy.PageRequestR\npaginationB\x0c\n\nkas_filter\"o\n\x16ListPublicKeysResponse\x12\x1f\n\x04keys\x18\x01 \x03(\x0b\x32\x0b.policy.KeyR\x04keys\x12\x34\n\npagination\x18\n \x01(\x0b\x32\x14.policy.PageResponseR\npagination\"\x81\x02\n\x1bListPublicKeyMappingRequest\x12!\n\x06kas_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x05kasId\x12$\n\x08kas_name\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x07kasName\x12%\n\x07kas_uri\x18\x03 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01H\x00R\x06kasUri\x12/\n\rpublic_key_id\x18\x04 \x01(\tB\x0b\xbaH\x08r\x03\xb0\x01\x01\xd8\x01\x01R\x0bpublicKeyId\x12\x33\n\npagination\x18\n \x01(\x0b\x32\x13.policy.PageRequestR\npaginationB\x0c\n\nkas_filter\"\xf6\x05\n\x1cListPublicKeyMappingResponse\x12q\n\x13public_key_mappings\x18\x01 \x03(\x0b\x32\x41.policy.kasregistry.ListPublicKeyMappingResponse.PublicKeyMappingR\x11publicKeyMappings\x12\x34\n\npagination\x18\n \x01(\x0b\x32\x14.policy.PageResponseR\npagination\x1a\xba\x01\n\x10PublicKeyMapping\x12\x15\n\x06kas_id\x18\x02 \x01(\tR\x05kasId\x12\x19\n\x08kas_name\x18\x03 \x01(\tR\x07kasName\x12\x17\n\x07kas_uri\x18\x04 \x01(\tR\x06kasUri\x12[\n\x0bpublic_keys\x18\x05 \x03(\x0b\x32:.policy.kasregistry.ListPublicKeyMappingResponse.PublicKeyR\npublicKeys\x1a\xbe\x02\n\tPublicKey\x12\x1d\n\x03key\x18\x01 \x01(\x0b\x32\x0b.policy.KeyR\x03key\x12T\n\x06values\x18\x06 \x03(\x0b\x32<.policy.kasregistry.ListPublicKeyMappingResponse.AssociationR\x06values\x12^\n\x0b\x64\x65\x66initions\x18\x07 \x03(\x0b\x32<.policy.kasregistry.ListPublicKeyMappingResponse.AssociationR\x0b\x64\x65\x66initions\x12\\\n\nnamespaces\x18\x08 \x03(\x0b\x32<.policy.kasregistry.ListPublicKeyMappingResponse.AssociationR\nnamespaces\x1a/\n\x0b\x41ssociation\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x10\n\x03\x66qn\x18\x02 \x01(\tR\x03\x66qn\"\xbd\x01\n\x16UpdatePublicKeyRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\x12T\n\x18metadata_update_behavior\x18\x65 \x01(\x0e\x32\x1a.common.MetadataUpdateEnumR\x16metadataUpdateBehavior\"8\n\x17UpdatePublicKeyResponse\x12\x1d\n\x03key\x18\x01 \x01(\x0b\x32\x0b.policy.KeyR\x03key\"6\n\x1a\x44\x65\x61\x63tivatePublicKeyRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"<\n\x1b\x44\x65\x61\x63tivatePublicKeyResponse\x12\x1d\n\x03key\x18\x01 \x01(\x0b\x32\x0b.policy.KeyR\x03key\"4\n\x18\x41\x63tivatePublicKeyRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\":\n\x19\x41\x63tivatePublicKeyResponse\x12\x1d\n\x03key\x18\x01 \x01(\x0b\x32\x0b.policy.KeyR\x03key\"\xa5\x07\n ListKeyAccessServerGrantsRequest\x12\xcb\x01\n\x06kas_id\x18\x01 \x01(\tB\xb3\x01\xbaH\xaf\x01\xba\x01\xab\x01\n\x14optional_uuid_format\x12#Optional field must be a valid UUID\x1ansize(this) == 0 || this.matches(\'[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\')R\x05kasId\x12\xb3\x02\n\x07kas_uri\x18\x02 \x01(\tB\x99\x02\xbaH\x95\x02\xba\x01\x91\x02\n\x13optional_uri_format\x12\xd8\x01Optional URI must be a valid URL (e.g., \'https://demo.com/\') followed by additional segments. Each segment must start and end with an alphanumeric character, can contain hyphens, alphanumeric characters, and slashes.\x1a\x1fsize(this) == 0 || this.isUri()R\x06kasUri\x12\xc3\x02\n\x08kas_name\x18\x03 \x01(\tB\xa7\x02\xbaH\xa3\x02r\x03\x18\xfd\x01\xba\x01\x97\x02\n\x0fkas_name_format\x12\xb3\x01Registered KAS name must be an alphanumeric string, allowing hyphens, and underscores but not as the first or last character. The stored KAS name will be normalized to lower case.\x1aNsize(this) == 0 || this.matches(\'^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$\')\xc8\x01\x00R\x07kasName\x12\x33\n\npagination\x18\n \x01(\x0b\x32\x13.policy.PageRequestR\npagination:\x02\x18\x01\"\xa4\x01\n!ListKeyAccessServerGrantsResponse\x12\x45\n\x06grants\x18\x01 \x03(\x0b\x32).policy.kasregistry.KeyAccessServerGrantsB\x02\x18\x01R\x06grants\x12\x34\n\npagination\x18\n \x01(\x0b\x32\x14.policy.PageResponseR\npagination:\x02\x18\x01\"\xcc\x0c\n\x10\x43reateKeyRequest\x12\x1f\n\x06kas_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x05kasId\x12\x1e\n\x06key_id\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05keyId\x12\xa4\x01\n\rkey_algorithm\x18\x03 \x01(\x0e\x32\x11.policy.AlgorithmBl\xbaHi\xba\x01\x66\n\x15key_algorithm_defined\x12\x34The key_algorithm must be one of the defined values.\x1a\x17this in [1, 2, 3, 4, 5]R\x0ckeyAlgorithm\x12\x93\x01\n\x08key_mode\x18\x04 \x01(\x0e\x32\x0f.policy.KeyModeBg\xbaHd\xba\x01\x61\n\x10key_mode_defined\x12\x35The key_mode must be one of the defined values (1-4).\x1a\x16this >= 1 && this <= 4R\x07keyMode\x12\x42\n\x0epublic_key_ctx\x18\x05 \x01(\x0b\x32\x14.policy.PublicKeyCtxB\x06\xbaH\x03\xc8\x01\x01R\x0cpublicKeyCtx\x12=\n\x0fprivate_key_ctx\x18\x06 \x01(\x0b\x32\x15.policy.PrivateKeyCtxR\rprivateKeyCtx\x12,\n\x12provider_config_id\x18\x07 \x01(\tR\x10providerConfigId\x12\x16\n\x06legacy\x18\x08 \x01(\x08R\x06legacy\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata:\xbb\x07\xbaH\xb7\x07\x1a\x97\x03\n#private_key_ctx_optionally_required\x12\xbc\x01The wrapped_key is required if key_mode is KEY_MODE_CONFIG_ROOT_KEY or KEY_MODE_PROVIDER_ROOT_KEY. The wrapped_key must be empty if key_mode is KEY_MODE_REMOTE or KEY_MODE_PUBLIC_KEY_ONLY.\x1a\xb0\x01((this.key_mode == 1 || this.key_mode == 2) && this.private_key_ctx.wrapped_key != \'\') || ((this.key_mode == 3 || this.key_mode == 4) && this.private_key_ctx.wrapped_key == \'\')\x1a\xf4\x02\n&provider_config_id_optionally_required\x12\xa8\x01Provider config id is required if key_mode is KEY_MODE_PROVIDER_ROOT_KEY or KEY_MODE_REMOTE. It must be empty for KEY_MODE_CONFIG_ROOT_KEY and KEY_MODE_PUBLIC_KEY_ONLY.\x1a\x9e\x01((this.key_mode == 1 || this.key_mode == 4) && this.provider_config_id == \'\') || ((this.key_mode == 2 || this.key_mode == 3) && this.provider_config_id != \'\')\x1a\xa3\x01\n#private_key_ctx_for_public_key_only\x12Hprivate_key_ctx must not be set if key_mode is KEY_MODE_PUBLIC_KEY_ONLY.\x1a\x32!(this.key_mode == 4 && has(this.private_key_ctx))\"<\n\x11\x43reateKeyResponse\x12\'\n\x07kas_key\x18\x01 \x01(\x0b\x32\x0e.policy.KasKeyR\x06kasKey\"z\n\rGetKeyRequest\x12\x1a\n\x02id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x02id\x12\x38\n\x03key\x18\x03 \x01(\x0b\x32$.policy.kasregistry.KasKeyIdentifierH\x00R\x03keyB\x13\n\nidentifier\x12\x05\xbaH\x02\x08\x01\"9\n\x0eGetKeyResponse\x12\'\n\x07kas_key\x18\x01 \x01(\x0b\x32\x0e.policy.KasKeyR\x06kasKey\"\x96\x03\n\x0fListKeysRequest\x12\xa7\x01\n\rkey_algorithm\x18\x01 \x01(\x0e\x32\x11.policy.AlgorithmBo\xbaHl\xba\x01i\n\x15key_algorithm_defined\x12\x34The key_algorithm must be one of the defined values.\x1a\x1athis in [0, 1, 2, 3, 4, 5]R\x0ckeyAlgorithm\x12!\n\x06kas_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x05kasId\x12$\n\x08kas_name\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x07kasName\x12%\n\x07kas_uri\x18\x04 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01H\x00R\x06kasUri\x12\x1b\n\x06legacy\x18\x08 \x01(\x08H\x01R\x06legacy\x88\x01\x01\x12\x33\n\npagination\x18\n \x01(\x0b\x32\x13.policy.PageRequestR\npaginationB\x0c\n\nkas_filterB\t\n\x07_legacy\"s\n\x10ListKeysResponse\x12)\n\x08kas_keys\x18\x01 \x03(\x0b\x32\x0e.policy.KasKeyR\x07kasKeys\x12\x34\n\npagination\x18\n \x01(\x0b\x32\x14.policy.PageResponseR\npagination\"\x86\x03\n\x10UpdateKeyRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\x12T\n\x18metadata_update_behavior\x18\x65 \x01(\x0e\x32\x1a.common.MetadataUpdateEnumR\x16metadataUpdateBehavior:\xcc\x01\xbaH\xc8\x01\x1a\xc5\x01\n\x18metadata_update_behavior\x12RMetadata update behavior must be either APPEND or REPLACE, when updating metadata.\x1aU((!has(this.metadata)) || (has(this.metadata) && this.metadata_update_behavior != 0))\"<\n\x11UpdateKeyResponse\x12\'\n\x07kas_key\x18\x01 \x01(\x0b\x32\x0e.policy.KasKeyR\x06kasKey\"\xa4\x01\n\x10KasKeyIdentifier\x12!\n\x06kas_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x05kasId\x12\x1d\n\x04name\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x04name\x12\x1e\n\x03uri\x18\x04 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01H\x00R\x03uri\x12\x19\n\x03kid\x18\x05 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x03kidB\x13\n\nidentifier\x12\x05\xbaH\x02\x08\x01\"\xe5\x0e\n\x10RotateKeyRequest\x12\x1a\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x02id\x12\x38\n\x03key\x18\x02 \x01(\x0b\x32$.policy.kasregistry.KasKeyIdentifierH\x00R\x03key\x12\x44\n\x07new_key\x18\x03 \x01(\x0b\x32+.policy.kasregistry.RotateKeyRequest.NewKeyR\x06newKey\x1a\xcf\x04\n\x06NewKey\x12\x1e\n\x06key_id\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05keyId\x12\x9d\x01\n\talgorithm\x18\x02 \x01(\x0e\x32\x11.policy.AlgorithmBl\xbaHi\xba\x01\x66\n\x15key_algorithm_defined\x12\x34The key_algorithm must be one of the defined values.\x1a\x17this in [1, 2, 3, 4, 5]R\talgorithm\x12\x9e\x01\n\x08key_mode\x18\x03 \x01(\x0e\x32\x0f.policy.KeyModeBr\xbaHo\x82\x01\x02\x10\x01\xba\x01g\n\x14new_key_mode_defined\x12\x39The new key_mode must be one of the defined values (1-4).\x1a\x14this in [1, 2, 3, 4]R\x07keyMode\x12\x42\n\x0epublic_key_ctx\x18\x04 \x01(\x0b\x32\x14.policy.PublicKeyCtxB\x06\xbaH\x03\xc8\x01\x01R\x0cpublicKeyCtx\x12=\n\x0fprivate_key_ctx\x18\x05 \x01(\x0b\x32\x15.policy.PrivateKeyCtxR\rprivateKeyCtx\x12,\n\x12provider_config_id\x18\x06 \x01(\tR\x10providerConfigId\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata:\xcd\x08\xbaH\xc9\x08\x1a\xd8\x03\n#private_key_ctx_optionally_required\x12\xcd\x01\x46or the new key, the wrapped_key is required if key_mode is KEY_MODE_CONFIG_ROOT_KEY or KEY_MODE_PROVIDER_ROOT_KEY. The wrapped_key must be empty if key_mode is KEY_MODE_REMOTE or KEY_MODE_PUBLIC_KEY_ONLY.\x1a\xe0\x01((this.new_key.key_mode == 1 || this.new_key.key_mode == 2) && this.new_key.private_key_ctx.wrapped_key != \'\') || ((this.new_key.key_mode == 3 || this.new_key.key_mode == 4) && this.new_key.private_key_ctx.wrapped_key == \'\')\x1a\xb5\x03\n&provider_config_id_optionally_required\x12\xb9\x01\x46or the new key, provider config id is required if key_mode is KEY_MODE_PROVIDER_ROOT_KEY or KEY_MODE_REMOTE. It must be empty for KEY_MODE_CONFIG_ROOT_KEY and KEY_MODE_PUBLIC_KEY_ONLY.\x1a\xce\x01((this.new_key.key_mode == 1 || this.new_key.key_mode == 4) && this.new_key.provider_config_id == \'\') || ((this.new_key.key_mode == 2 || this.new_key.key_mode == 3) && this.new_key.provider_config_id != \'\')\x1a\xb3\x01\n#private_key_ctx_for_public_key_only\x12Hprivate_key_ctx must not be set if key_mode is KEY_MODE_PUBLIC_KEY_ONLY.\x1a\x42!(this.new_key.key_mode == 4 && has(this.new_key.private_key_ctx))B\x13\n\nactive_key\x12\x05\xbaH\x02\x08\x01\"2\n\x0e\x43hangeMappings\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x10\n\x03\x66qn\x18\x02 \x01(\tR\x03\x66qn\"\xe3\x02\n\x10RotatedResources\x12\x36\n\x0frotated_out_key\x18\x01 \x01(\x0b\x32\x0e.policy.KasKeyR\rrotatedOutKey\x12\x66\n\x1d\x61ttribute_definition_mappings\x18\x02 \x03(\x0b\x32\".policy.kasregistry.ChangeMappingsR\x1b\x61ttributeDefinitionMappings\x12\\\n\x18\x61ttribute_value_mappings\x18\x03 \x03(\x0b\x32\".policy.kasregistry.ChangeMappingsR\x16\x61ttributeValueMappings\x12Q\n\x12namespace_mappings\x18\x04 \x03(\x0b\x32\".policy.kasregistry.ChangeMappingsR\x11namespaceMappings\"\x8f\x01\n\x11RotateKeyResponse\x12\'\n\x07kas_key\x18\x01 \x01(\x0b\x32\x0e.policy.KasKeyR\x06kasKey\x12Q\n\x11rotated_resources\x18\x02 \x01(\x0b\x32$.policy.kasregistry.RotatedResourcesR\x10rotatedResources\"~\n\x11SetBaseKeyRequest\x12\x1a\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x02id\x12\x38\n\x03key\x18\x02 \x01(\x0b\x32$.policy.kasregistry.KasKeyIdentifierH\x00R\x03keyB\x13\n\nactive_key\x12\x05\xbaH\x02\x08\x01\"\x13\n\x11GetBaseKeyRequest\"E\n\x12GetBaseKeyResponse\x12/\n\x08\x62\x61se_key\x18\x01 \x01(\x0b\x32\x14.policy.SimpleKasKeyR\x07\x62\x61seKey\"\x8e\x01\n\x12SetBaseKeyResponse\x12\x36\n\x0cnew_base_key\x18\x01 \x01(\x0b\x32\x14.policy.SimpleKasKeyR\nnewBaseKey\x12@\n\x11previous_base_key\x18\x02 \x01(\x0b\x32\x14.policy.SimpleKasKeyR\x0fpreviousBaseKey\"6\n\x12MappedPolicyObject\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x10\n\x03\x66qn\x18\x02 \x01(\tR\x03\x66qn\"\xb4\x02\n\nKeyMapping\x12\x10\n\x03kid\x18\x01 \x01(\tR\x03kid\x12\x17\n\x07kas_uri\x18\x02 \x01(\tR\x06kasUri\x12U\n\x12namespace_mappings\x18\x03 \x03(\x0b\x32&.policy.kasregistry.MappedPolicyObjectR\x11namespaceMappings\x12U\n\x12\x61ttribute_mappings\x18\x04 \x03(\x0b\x32&.policy.kasregistry.MappedPolicyObjectR\x11\x61ttributeMappings\x12M\n\x0evalue_mappings\x18\x05 \x03(\x0b\x32&.policy.kasregistry.MappedPolicyObjectR\rvalueMappings\"\xb8\x01\n\x16ListKeyMappingsRequest\x12\x1a\n\x02id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x02id\x12\x38\n\x03key\x18\x03 \x01(\x0b\x32$.policy.kasregistry.KasKeyIdentifierH\x00R\x03key\x12\x33\n\npagination\x18\n \x01(\x0b\x32\x13.policy.PageRequestR\npaginationB\x13\n\nidentifier\x12\x05\xbaH\x02\x08\x00\"\x92\x01\n\x17ListKeyMappingsResponse\x12\x41\n\x0ckey_mappings\x18\x01 \x03(\x0b\x32\x1e.policy.kasregistry.KeyMappingR\x0bkeyMappings\x12\x34\n\npagination\x18\n \x01(\x0b\x32\x14.policy.PageResponseR\npagination*\xef\x01\n\x18SortKeyAccessServersType\x12,\n(SORT_KEY_ACCESS_SERVERS_TYPE_UNSPECIFIED\x10\x00\x12%\n!SORT_KEY_ACCESS_SERVERS_TYPE_NAME\x10\x01\x12$\n SORT_KEY_ACCESS_SERVERS_TYPE_URI\x10\x02\x12+\n\'SORT_KEY_ACCESS_SERVERS_TYPE_CREATED_AT\x10\x03\x12+\n\'SORT_KEY_ACCESS_SERVERS_TYPE_UPDATED_AT\x10\x04\x32\xb5\x0c\n\x1eKeyAccessServerRegistryService\x12\x99\x01\n\x14ListKeyAccessServers\x12/.policy.kasregistry.ListKeyAccessServersRequest\x1a\x30.policy.kasregistry.ListKeyAccessServersResponse\"\x1e\x90\x02\x01\x82\xd3\xe4\x93\x02\x15\x12\x13/key-access-servers\x12x\n\x12GetKeyAccessServer\x12-.policy.kasregistry.GetKeyAccessServerRequest\x1a..policy.kasregistry.GetKeyAccessServerResponse\"\x03\x90\x02\x01\x12~\n\x15\x43reateKeyAccessServer\x12\x30.policy.kasregistry.CreateKeyAccessServerRequest\x1a\x31.policy.kasregistry.CreateKeyAccessServerResponse\"\x00\x12~\n\x15UpdateKeyAccessServer\x12\x30.policy.kasregistry.UpdateKeyAccessServerRequest\x1a\x31.policy.kasregistry.UpdateKeyAccessServerResponse\"\x00\x12~\n\x15\x44\x65leteKeyAccessServer\x12\x30.policy.kasregistry.DeleteKeyAccessServerRequest\x1a\x31.policy.kasregistry.DeleteKeyAccessServerResponse\"\x00\x12\x90\x01\n\x19ListKeyAccessServerGrants\x12\x34.policy.kasregistry.ListKeyAccessServerGrantsRequest\x1a\x35.policy.kasregistry.ListKeyAccessServerGrantsResponse\"\x06\x88\x02\x01\x90\x02\x01\x12Z\n\tCreateKey\x12$.policy.kasregistry.CreateKeyRequest\x1a%.policy.kasregistry.CreateKeyResponse\"\x00\x12Q\n\x06GetKey\x12!.policy.kasregistry.GetKeyRequest\x1a\".policy.kasregistry.GetKeyResponse\"\x00\x12W\n\x08ListKeys\x12#.policy.kasregistry.ListKeysRequest\x1a$.policy.kasregistry.ListKeysResponse\"\x00\x12Z\n\tUpdateKey\x12$.policy.kasregistry.UpdateKeyRequest\x1a%.policy.kasregistry.UpdateKeyResponse\"\x00\x12Z\n\tRotateKey\x12$.policy.kasregistry.RotateKeyRequest\x1a%.policy.kasregistry.RotateKeyResponse\"\x00\x12]\n\nSetBaseKey\x12%.policy.kasregistry.SetBaseKeyRequest\x1a&.policy.kasregistry.SetBaseKeyResponse\"\x00\x12]\n\nGetBaseKey\x12%.policy.kasregistry.GetBaseKeyRequest\x1a&.policy.kasregistry.GetBaseKeyResponse\"\x00\x12l\n\x0fListKeyMappings\x12*.policy.kasregistry.ListKeyMappingsRequest\x1a+.policy.kasregistry.ListKeyMappingsResponse\"\x00\x42\x9f\x01\n\x16\x63om.policy.kasregistryB\x1cKeyAccessServerRegistryProtoP\x01\xa2\x02\x03PKX\xaa\x02\x12Policy.Kasregistry\xca\x02\x12Policy\\Kasregistry\xe2\x02\x1ePolicy\\Kasregistry\\GPBMetadata\xea\x02\x13Policy::Kasregistryb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n3policy/kasregistry/key_access_server_registry.proto\x12\x12policy.kasregistry\x1a\x1b\x62uf/validate/validate.proto\x1a\x13\x63ommon/common.proto\x1a\x14policy/objects.proto\x1a\x16policy/selectors.proto\"\xe4\x03\n\x19GetKeyAccessServerRequest\x12\x1d\n\x02id\x18\x01 \x01(\tB\r\x18\x01\xbaH\x08r\x03\xb0\x01\x01\xd8\x01\x01R\x02id\x12!\n\x06kas_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x05kasId\x12\x1d\n\x04name\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x04name\x12\x1e\n\x03uri\x18\x04 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01H\x00R\x03uri:\xb7\x02\xbaH\xb3\x02\x1a\xa8\x01\n\x10\x65xclusive_fields\x12JEither use deprecated \'id\' field or one of \'kas_id\' or \'uri\', but not both\x1aH!(has(this.id) && (has(this.kas_id) || has(this.uri) || has(this.name)))\x1a\x85\x01\n\x0frequired_fields\x12-Either id or one of kas_id or uri must be set\x1a\x43has(this.id) || has(this.kas_id) || has(this.uri) || has(this.name)B\x0c\n\nidentifier\"a\n\x1aGetKeyAccessServerResponse\x12\x43\n\x11key_access_server\x18\x01 \x01(\x0b\x32\x17.policy.KeyAccessServerR\x0fkeyAccessServer\"\xa3\x01\n\x14KeyAccessServersSort\x12L\n\x05\x66ield\x18\x01 \x01(\x0e\x32,.policy.kasregistry.SortKeyAccessServersTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x05\x66ield\x12=\n\tdirection\x18\x02 \x01(\x0e\x32\x15.policy.SortDirectionB\x08\xbaH\x05\x82\x01\x02\x10\x01R\tdirection\"\x9a\x01\n\x1bListKeyAccessServersRequest\x12\x33\n\npagination\x18\n \x01(\x0b\x32\x13.policy.PageRequestR\npagination\x12\x46\n\x04sort\x18\x0b \x03(\x0b\x32(.policy.kasregistry.KeyAccessServersSortB\x08\xbaH\x05\x92\x01\x02\x10\x01R\x04sort\"\x9b\x01\n\x1cListKeyAccessServersResponse\x12\x45\n\x12key_access_servers\x18\x01 \x03(\x0b\x32\x17.policy.KeyAccessServerR\x10keyAccessServers\x12\x34\n\npagination\x18\n \x01(\x0b\x32\x14.policy.PageResponseR\npagination\"\x91\x01\n\x0bKasKeysSort\x12\x43\n\x05\x66ield\x18\x01 \x01(\x0e\x32#.policy.kasregistry.SortKasKeysTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x05\x66ield\x12=\n\tdirection\x18\x02 \x01(\x0e\x32\x15.policy.SortDirectionB\x08\xbaH\x05\x82\x01\x02\x10\x01R\tdirection\"\x95\x06\n\x1c\x43reateKeyAccessServerRequest\x12\x87\x02\n\x03uri\x18\x01 \x01(\tB\xf4\x01\xbaH\xf0\x01\xba\x01\xec\x01\n\nuri_format\x12\xcf\x01URI must be a valid URL (e.g., \'https://demo.com/\') followed by additional segments. Each segment must start and end with an alphanumeric character, can contain hyphens, alphanumeric characters, and slashes.\x1a\x0cthis.isUri()R\x03uri\x12\x30\n\npublic_key\x18\x02 \x01(\x0b\x32\x11.policy.PublicKeyR\tpublicKey\x12@\n\x0bsource_type\x18\x03 \x01(\x0e\x32\x12.policy.SourceTypeB\x0b\xbaH\x08\x82\x01\x02\x10\x01\xc8\x01\x00R\nsourceType\x12\xc1\x02\n\x04name\x18\x14 \x01(\tB\xac\x02\xbaH\xa8\x02r\x03\x18\xfd\x01\xba\x01\x9c\x02\n\x0fkas_name_format\x12\xb3\x01Registered KAS name must be an alphanumeric string, allowing hyphens, and underscores but not as the first or last character. The stored KAS name will be normalized to lower case.\x1aSsize(this) > 0 ? this.matches(\'^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$\') : true\xc8\x01\x00R\x04name\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\"d\n\x1d\x43reateKeyAccessServerResponse\x12\x43\n\x11key_access_server\x18\x01 \x01(\x0b\x32\x17.policy.KeyAccessServerR\x0fkeyAccessServer\"\xa5\x07\n\x1cUpdateKeyAccessServerRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\xac\x02\n\x03uri\x18\x02 \x01(\tB\x99\x02\xbaH\x95\x02\xba\x01\x91\x02\n\x13optional_uri_format\x12\xd8\x01Optional URI must be a valid URL (e.g., \'https://demo.com/\') followed by additional segments. Each segment must start and end with an alphanumeric character, can contain hyphens, alphanumeric characters, and slashes.\x1a\x1fsize(this) == 0 || this.isUri()R\x03uri\x12\x30\n\npublic_key\x18\x03 \x01(\x0b\x32\x11.policy.PublicKeyR\tpublicKey\x12@\n\x0bsource_type\x18\x04 \x01(\x0e\x32\x12.policy.SourceTypeB\x0b\xbaH\x08\x82\x01\x02\x10\x01\xc8\x01\x00R\nsourceType\x12\xbc\x02\n\x04name\x18\x14 \x01(\tB\xa7\x02\xbaH\xa3\x02r\x03\x18\xfd\x01\xba\x01\x97\x02\n\x0fkas_name_format\x12\xb3\x01Registered KAS name must be an alphanumeric string, allowing hyphens, and underscores but not as the first or last character. The stored KAS name will be normalized to lower case.\x1aNsize(this) == 0 || this.matches(\'^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$\')\xc8\x01\x00R\x04name\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\x12T\n\x18metadata_update_behavior\x18\x65 \x01(\x0e\x32\x1a.common.MetadataUpdateEnumR\x16metadataUpdateBehavior\"d\n\x1dUpdateKeyAccessServerResponse\x12\x43\n\x11key_access_server\x18\x01 \x01(\x0b\x32\x17.policy.KeyAccessServerR\x0fkeyAccessServer\"8\n\x1c\x44\x65leteKeyAccessServerRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"d\n\x1d\x44\x65leteKeyAccessServerResponse\x12\x43\n\x11key_access_server\x18\x01 \x01(\x0b\x32\x17.policy.KeyAccessServerR\x0fkeyAccessServer\"7\n\x13GrantedPolicyObject\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x10\n\x03\x66qn\x18\x02 \x01(\tR\x03\x66qn\"\xd0\x02\n\x15KeyAccessServerGrants\x12\x43\n\x11key_access_server\x18\x01 \x01(\x0b\x32\x17.policy.KeyAccessServerR\x0fkeyAccessServer\x12R\n\x10namespace_grants\x18\x02 \x03(\x0b\x32\'.policy.kasregistry.GrantedPolicyObjectR\x0fnamespaceGrants\x12R\n\x10\x61ttribute_grants\x18\x03 \x03(\x0b\x32\'.policy.kasregistry.GrantedPolicyObjectR\x0f\x61ttributeGrants\x12J\n\x0cvalue_grants\x18\x04 \x03(\x0b\x32\'.policy.kasregistry.GrantedPolicyObjectR\x0bvalueGrants\"\x9e\x01\n\x16\x43reatePublicKeyRequest\x12\x1f\n\x06kas_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x05kasId\x12.\n\x03key\x18\x02 \x01(\x0b\x32\x14.policy.KasPublicKeyB\x06\xbaH\x03\xc8\x01\x01R\x03key\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\"8\n\x17\x43reatePublicKeyResponse\x12\x1d\n\x03key\x18\x01 \x01(\x0b\x32\x0b.policy.KeyR\x03key\"?\n\x13GetPublicKeyRequest\x12\x1a\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x02idB\x0c\n\nidentifier\"5\n\x14GetPublicKeyResponse\x12\x1d\n\x03key\x18\x01 \x01(\x0b\x32\x0b.policy.KeyR\x03key\"\xca\x01\n\x15ListPublicKeysRequest\x12!\n\x06kas_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x05kasId\x12$\n\x08kas_name\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x07kasName\x12%\n\x07kas_uri\x18\x03 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01H\x00R\x06kasUri\x12\x33\n\npagination\x18\n \x01(\x0b\x32\x13.policy.PageRequestR\npaginationB\x0c\n\nkas_filter\"o\n\x16ListPublicKeysResponse\x12\x1f\n\x04keys\x18\x01 \x03(\x0b\x32\x0b.policy.KeyR\x04keys\x12\x34\n\npagination\x18\n \x01(\x0b\x32\x14.policy.PageResponseR\npagination\"\x81\x02\n\x1bListPublicKeyMappingRequest\x12!\n\x06kas_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x05kasId\x12$\n\x08kas_name\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x07kasName\x12%\n\x07kas_uri\x18\x03 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01H\x00R\x06kasUri\x12/\n\rpublic_key_id\x18\x04 \x01(\tB\x0b\xbaH\x08r\x03\xb0\x01\x01\xd8\x01\x01R\x0bpublicKeyId\x12\x33\n\npagination\x18\n \x01(\x0b\x32\x13.policy.PageRequestR\npaginationB\x0c\n\nkas_filter\"\xf6\x05\n\x1cListPublicKeyMappingResponse\x12q\n\x13public_key_mappings\x18\x01 \x03(\x0b\x32\x41.policy.kasregistry.ListPublicKeyMappingResponse.PublicKeyMappingR\x11publicKeyMappings\x12\x34\n\npagination\x18\n \x01(\x0b\x32\x14.policy.PageResponseR\npagination\x1a\xba\x01\n\x10PublicKeyMapping\x12\x15\n\x06kas_id\x18\x02 \x01(\tR\x05kasId\x12\x19\n\x08kas_name\x18\x03 \x01(\tR\x07kasName\x12\x17\n\x07kas_uri\x18\x04 \x01(\tR\x06kasUri\x12[\n\x0bpublic_keys\x18\x05 \x03(\x0b\x32:.policy.kasregistry.ListPublicKeyMappingResponse.PublicKeyR\npublicKeys\x1a\xbe\x02\n\tPublicKey\x12\x1d\n\x03key\x18\x01 \x01(\x0b\x32\x0b.policy.KeyR\x03key\x12T\n\x06values\x18\x06 \x03(\x0b\x32<.policy.kasregistry.ListPublicKeyMappingResponse.AssociationR\x06values\x12^\n\x0b\x64\x65\x66initions\x18\x07 \x03(\x0b\x32<.policy.kasregistry.ListPublicKeyMappingResponse.AssociationR\x0b\x64\x65\x66initions\x12\\\n\nnamespaces\x18\x08 \x03(\x0b\x32<.policy.kasregistry.ListPublicKeyMappingResponse.AssociationR\nnamespaces\x1a/\n\x0b\x41ssociation\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x10\n\x03\x66qn\x18\x02 \x01(\tR\x03\x66qn\"\xbd\x01\n\x16UpdatePublicKeyRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\x12T\n\x18metadata_update_behavior\x18\x65 \x01(\x0e\x32\x1a.common.MetadataUpdateEnumR\x16metadataUpdateBehavior\"8\n\x17UpdatePublicKeyResponse\x12\x1d\n\x03key\x18\x01 \x01(\x0b\x32\x0b.policy.KeyR\x03key\"6\n\x1a\x44\x65\x61\x63tivatePublicKeyRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"<\n\x1b\x44\x65\x61\x63tivatePublicKeyResponse\x12\x1d\n\x03key\x18\x01 \x01(\x0b\x32\x0b.policy.KeyR\x03key\"4\n\x18\x41\x63tivatePublicKeyRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\":\n\x19\x41\x63tivatePublicKeyResponse\x12\x1d\n\x03key\x18\x01 \x01(\x0b\x32\x0b.policy.KeyR\x03key\"\xa5\x07\n ListKeyAccessServerGrantsRequest\x12\xcb\x01\n\x06kas_id\x18\x01 \x01(\tB\xb3\x01\xbaH\xaf\x01\xba\x01\xab\x01\n\x14optional_uuid_format\x12#Optional field must be a valid UUID\x1ansize(this) == 0 || this.matches(\'[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\')R\x05kasId\x12\xb3\x02\n\x07kas_uri\x18\x02 \x01(\tB\x99\x02\xbaH\x95\x02\xba\x01\x91\x02\n\x13optional_uri_format\x12\xd8\x01Optional URI must be a valid URL (e.g., \'https://demo.com/\') followed by additional segments. Each segment must start and end with an alphanumeric character, can contain hyphens, alphanumeric characters, and slashes.\x1a\x1fsize(this) == 0 || this.isUri()R\x06kasUri\x12\xc3\x02\n\x08kas_name\x18\x03 \x01(\tB\xa7\x02\xbaH\xa3\x02r\x03\x18\xfd\x01\xba\x01\x97\x02\n\x0fkas_name_format\x12\xb3\x01Registered KAS name must be an alphanumeric string, allowing hyphens, and underscores but not as the first or last character. The stored KAS name will be normalized to lower case.\x1aNsize(this) == 0 || this.matches(\'^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$\')\xc8\x01\x00R\x07kasName\x12\x33\n\npagination\x18\n \x01(\x0b\x32\x13.policy.PageRequestR\npagination:\x02\x18\x01\"\xa4\x01\n!ListKeyAccessServerGrantsResponse\x12\x45\n\x06grants\x18\x01 \x03(\x0b\x32).policy.kasregistry.KeyAccessServerGrantsB\x02\x18\x01R\x06grants\x12\x34\n\npagination\x18\n \x01(\x0b\x32\x14.policy.PageResponseR\npagination:\x02\x18\x01\"\xd5\x0c\n\x10\x43reateKeyRequest\x12\x1f\n\x06kas_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x05kasId\x12\x1e\n\x06key_id\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05keyId\x12\xad\x01\n\rkey_algorithm\x18\x03 \x01(\x0e\x32\x11.policy.AlgorithmBu\xbaHr\xba\x01o\n\x15key_algorithm_defined\x12\x34The key_algorithm must be one of the defined values.\x1a this in [1, 2, 3, 4, 5, 6, 7, 8]R\x0ckeyAlgorithm\x12\x93\x01\n\x08key_mode\x18\x04 \x01(\x0e\x32\x0f.policy.KeyModeBg\xbaHd\xba\x01\x61\n\x10key_mode_defined\x12\x35The key_mode must be one of the defined values (1-4).\x1a\x16this >= 1 && this <= 4R\x07keyMode\x12\x42\n\x0epublic_key_ctx\x18\x05 \x01(\x0b\x32\x14.policy.PublicKeyCtxB\x06\xbaH\x03\xc8\x01\x01R\x0cpublicKeyCtx\x12=\n\x0fprivate_key_ctx\x18\x06 \x01(\x0b\x32\x15.policy.PrivateKeyCtxR\rprivateKeyCtx\x12,\n\x12provider_config_id\x18\x07 \x01(\tR\x10providerConfigId\x12\x16\n\x06legacy\x18\x08 \x01(\x08R\x06legacy\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata:\xbb\x07\xbaH\xb7\x07\x1a\x97\x03\n#private_key_ctx_optionally_required\x12\xbc\x01The wrapped_key is required if key_mode is KEY_MODE_CONFIG_ROOT_KEY or KEY_MODE_PROVIDER_ROOT_KEY. The wrapped_key must be empty if key_mode is KEY_MODE_REMOTE or KEY_MODE_PUBLIC_KEY_ONLY.\x1a\xb0\x01((this.key_mode == 1 || this.key_mode == 2) && this.private_key_ctx.wrapped_key != \'\') || ((this.key_mode == 3 || this.key_mode == 4) && this.private_key_ctx.wrapped_key == \'\')\x1a\xf4\x02\n&provider_config_id_optionally_required\x12\xa8\x01Provider config id is required if key_mode is KEY_MODE_PROVIDER_ROOT_KEY or KEY_MODE_REMOTE. It must be empty for KEY_MODE_CONFIG_ROOT_KEY and KEY_MODE_PUBLIC_KEY_ONLY.\x1a\x9e\x01((this.key_mode == 1 || this.key_mode == 4) && this.provider_config_id == \'\') || ((this.key_mode == 2 || this.key_mode == 3) && this.provider_config_id != \'\')\x1a\xa3\x01\n#private_key_ctx_for_public_key_only\x12Hprivate_key_ctx must not be set if key_mode is KEY_MODE_PUBLIC_KEY_ONLY.\x1a\x32!(this.key_mode == 4 && has(this.private_key_ctx))\"<\n\x11\x43reateKeyResponse\x12\'\n\x07kas_key\x18\x01 \x01(\x0b\x32\x0e.policy.KasKeyR\x06kasKey\"z\n\rGetKeyRequest\x12\x1a\n\x02id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x02id\x12\x38\n\x03key\x18\x03 \x01(\x0b\x32$.policy.kasregistry.KasKeyIdentifierH\x00R\x03keyB\x13\n\nidentifier\x12\x05\xbaH\x02\x08\x01\"9\n\x0eGetKeyResponse\x12\'\n\x07kas_key\x18\x01 \x01(\x0b\x32\x0e.policy.KasKeyR\x06kasKey\"\xde\x03\n\x0fListKeysRequest\x12\xb0\x01\n\rkey_algorithm\x18\x01 \x01(\x0e\x32\x11.policy.AlgorithmBx\xbaHu\xba\x01r\n\x15key_algorithm_defined\x12\x34The key_algorithm must be one of the defined values.\x1a#this in [0, 1, 2, 3, 4, 5, 6, 7, 8]R\x0ckeyAlgorithm\x12!\n\x06kas_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x05kasId\x12$\n\x08kas_name\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x07kasName\x12%\n\x07kas_uri\x18\x04 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01H\x00R\x06kasUri\x12\x1b\n\x06legacy\x18\x08 \x01(\x08H\x01R\x06legacy\x88\x01\x01\x12\x33\n\npagination\x18\n \x01(\x0b\x32\x13.policy.PageRequestR\npagination\x12=\n\x04sort\x18\x0b \x03(\x0b\x32\x1f.policy.kasregistry.KasKeysSortB\x08\xbaH\x05\x92\x01\x02\x10\x01R\x04sortB\x0c\n\nkas_filterB\t\n\x07_legacy\"s\n\x10ListKeysResponse\x12)\n\x08kas_keys\x18\x01 \x03(\x0b\x32\x0e.policy.KasKeyR\x07kasKeys\x12\x34\n\npagination\x18\n \x01(\x0b\x32\x14.policy.PageResponseR\npagination\"\x86\x03\n\x10UpdateKeyRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\x12T\n\x18metadata_update_behavior\x18\x65 \x01(\x0e\x32\x1a.common.MetadataUpdateEnumR\x16metadataUpdateBehavior:\xcc\x01\xbaH\xc8\x01\x1a\xc5\x01\n\x18metadata_update_behavior\x12RMetadata update behavior must be either APPEND or REPLACE, when updating metadata.\x1aU((!has(this.metadata)) || (has(this.metadata) && this.metadata_update_behavior != 0))\"<\n\x11UpdateKeyResponse\x12\'\n\x07kas_key\x18\x01 \x01(\x0b\x32\x0e.policy.KasKeyR\x06kasKey\"\xa4\x01\n\x10KasKeyIdentifier\x12!\n\x06kas_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x05kasId\x12\x1d\n\x04name\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01H\x00R\x04name\x12\x1e\n\x03uri\x18\x04 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01H\x00R\x03uri\x12\x19\n\x03kid\x18\x05 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x03kidB\x13\n\nidentifier\x12\x05\xbaH\x02\x08\x01\"\xee\x0e\n\x10RotateKeyRequest\x12\x1a\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x02id\x12\x38\n\x03key\x18\x02 \x01(\x0b\x32$.policy.kasregistry.KasKeyIdentifierH\x00R\x03key\x12\x44\n\x07new_key\x18\x03 \x01(\x0b\x32+.policy.kasregistry.RotateKeyRequest.NewKeyR\x06newKey\x1a\xd8\x04\n\x06NewKey\x12\x1e\n\x06key_id\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05keyId\x12\xa6\x01\n\talgorithm\x18\x02 \x01(\x0e\x32\x11.policy.AlgorithmBu\xbaHr\xba\x01o\n\x15key_algorithm_defined\x12\x34The key_algorithm must be one of the defined values.\x1a this in [1, 2, 3, 4, 5, 6, 7, 8]R\talgorithm\x12\x9e\x01\n\x08key_mode\x18\x03 \x01(\x0e\x32\x0f.policy.KeyModeBr\xbaHo\x82\x01\x02\x10\x01\xba\x01g\n\x14new_key_mode_defined\x12\x39The new key_mode must be one of the defined values (1-4).\x1a\x14this in [1, 2, 3, 4]R\x07keyMode\x12\x42\n\x0epublic_key_ctx\x18\x04 \x01(\x0b\x32\x14.policy.PublicKeyCtxB\x06\xbaH\x03\xc8\x01\x01R\x0cpublicKeyCtx\x12=\n\x0fprivate_key_ctx\x18\x05 \x01(\x0b\x32\x15.policy.PrivateKeyCtxR\rprivateKeyCtx\x12,\n\x12provider_config_id\x18\x06 \x01(\tR\x10providerConfigId\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata:\xcd\x08\xbaH\xc9\x08\x1a\xd8\x03\n#private_key_ctx_optionally_required\x12\xcd\x01\x46or the new key, the wrapped_key is required if key_mode is KEY_MODE_CONFIG_ROOT_KEY or KEY_MODE_PROVIDER_ROOT_KEY. The wrapped_key must be empty if key_mode is KEY_MODE_REMOTE or KEY_MODE_PUBLIC_KEY_ONLY.\x1a\xe0\x01((this.new_key.key_mode == 1 || this.new_key.key_mode == 2) && this.new_key.private_key_ctx.wrapped_key != \'\') || ((this.new_key.key_mode == 3 || this.new_key.key_mode == 4) && this.new_key.private_key_ctx.wrapped_key == \'\')\x1a\xb5\x03\n&provider_config_id_optionally_required\x12\xb9\x01\x46or the new key, provider config id is required if key_mode is KEY_MODE_PROVIDER_ROOT_KEY or KEY_MODE_REMOTE. It must be empty for KEY_MODE_CONFIG_ROOT_KEY and KEY_MODE_PUBLIC_KEY_ONLY.\x1a\xce\x01((this.new_key.key_mode == 1 || this.new_key.key_mode == 4) && this.new_key.provider_config_id == \'\') || ((this.new_key.key_mode == 2 || this.new_key.key_mode == 3) && this.new_key.provider_config_id != \'\')\x1a\xb3\x01\n#private_key_ctx_for_public_key_only\x12Hprivate_key_ctx must not be set if key_mode is KEY_MODE_PUBLIC_KEY_ONLY.\x1a\x42!(this.new_key.key_mode == 4 && has(this.new_key.private_key_ctx))B\x13\n\nactive_key\x12\x05\xbaH\x02\x08\x01\"2\n\x0e\x43hangeMappings\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x10\n\x03\x66qn\x18\x02 \x01(\tR\x03\x66qn\"\xe3\x02\n\x10RotatedResources\x12\x36\n\x0frotated_out_key\x18\x01 \x01(\x0b\x32\x0e.policy.KasKeyR\rrotatedOutKey\x12\x66\n\x1d\x61ttribute_definition_mappings\x18\x02 \x03(\x0b\x32\".policy.kasregistry.ChangeMappingsR\x1b\x61ttributeDefinitionMappings\x12\\\n\x18\x61ttribute_value_mappings\x18\x03 \x03(\x0b\x32\".policy.kasregistry.ChangeMappingsR\x16\x61ttributeValueMappings\x12Q\n\x12namespace_mappings\x18\x04 \x03(\x0b\x32\".policy.kasregistry.ChangeMappingsR\x11namespaceMappings\"\x8f\x01\n\x11RotateKeyResponse\x12\'\n\x07kas_key\x18\x01 \x01(\x0b\x32\x0e.policy.KasKeyR\x06kasKey\x12Q\n\x11rotated_resources\x18\x02 \x01(\x0b\x32$.policy.kasregistry.RotatedResourcesR\x10rotatedResources\"~\n\x11SetBaseKeyRequest\x12\x1a\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x02id\x12\x38\n\x03key\x18\x02 \x01(\x0b\x32$.policy.kasregistry.KasKeyIdentifierH\x00R\x03keyB\x13\n\nactive_key\x12\x05\xbaH\x02\x08\x01\"\x13\n\x11GetBaseKeyRequest\"E\n\x12GetBaseKeyResponse\x12/\n\x08\x62\x61se_key\x18\x01 \x01(\x0b\x32\x14.policy.SimpleKasKeyR\x07\x62\x61seKey\"\x8e\x01\n\x12SetBaseKeyResponse\x12\x36\n\x0cnew_base_key\x18\x01 \x01(\x0b\x32\x14.policy.SimpleKasKeyR\nnewBaseKey\x12@\n\x11previous_base_key\x18\x02 \x01(\x0b\x32\x14.policy.SimpleKasKeyR\x0fpreviousBaseKey\"6\n\x12MappedPolicyObject\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x10\n\x03\x66qn\x18\x02 \x01(\tR\x03\x66qn\"\xb4\x02\n\nKeyMapping\x12\x10\n\x03kid\x18\x01 \x01(\tR\x03kid\x12\x17\n\x07kas_uri\x18\x02 \x01(\tR\x06kasUri\x12U\n\x12namespace_mappings\x18\x03 \x03(\x0b\x32&.policy.kasregistry.MappedPolicyObjectR\x11namespaceMappings\x12U\n\x12\x61ttribute_mappings\x18\x04 \x03(\x0b\x32&.policy.kasregistry.MappedPolicyObjectR\x11\x61ttributeMappings\x12M\n\x0evalue_mappings\x18\x05 \x03(\x0b\x32&.policy.kasregistry.MappedPolicyObjectR\rvalueMappings\"\xb8\x01\n\x16ListKeyMappingsRequest\x12\x1a\n\x02id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x02id\x12\x38\n\x03key\x18\x03 \x01(\x0b\x32$.policy.kasregistry.KasKeyIdentifierH\x00R\x03key\x12\x33\n\npagination\x18\n \x01(\x0b\x32\x13.policy.PageRequestR\npaginationB\x13\n\nidentifier\x12\x05\xbaH\x02\x08\x00\"\x92\x01\n\x17ListKeyMappingsResponse\x12\x41\n\x0ckey_mappings\x18\x01 \x03(\x0b\x32\x1e.policy.kasregistry.KeyMappingR\x0bkeyMappings\x12\x34\n\npagination\x18\n \x01(\x0b\x32\x14.policy.PageResponseR\npagination*\xef\x01\n\x18SortKeyAccessServersType\x12,\n(SORT_KEY_ACCESS_SERVERS_TYPE_UNSPECIFIED\x10\x00\x12%\n!SORT_KEY_ACCESS_SERVERS_TYPE_NAME\x10\x01\x12$\n SORT_KEY_ACCESS_SERVERS_TYPE_URI\x10\x02\x12+\n\'SORT_KEY_ACCESS_SERVERS_TYPE_CREATED_AT\x10\x03\x12+\n\'SORT_KEY_ACCESS_SERVERS_TYPE_UPDATED_AT\x10\x04*\x9a\x01\n\x0fSortKasKeysType\x12\"\n\x1eSORT_KAS_KEYS_TYPE_UNSPECIFIED\x10\x00\x12\x1d\n\x19SORT_KAS_KEYS_TYPE_KEY_ID\x10\x01\x12!\n\x1dSORT_KAS_KEYS_TYPE_CREATED_AT\x10\x02\x12!\n\x1dSORT_KAS_KEYS_TYPE_UPDATED_AT\x10\x03\x32\x99\x0c\n\x1eKeyAccessServerRegistryService\x12~\n\x14ListKeyAccessServers\x12/.policy.kasregistry.ListKeyAccessServersRequest\x1a\x30.policy.kasregistry.ListKeyAccessServersResponse\"\x03\x90\x02\x01\x12x\n\x12GetKeyAccessServer\x12-.policy.kasregistry.GetKeyAccessServerRequest\x1a..policy.kasregistry.GetKeyAccessServerResponse\"\x03\x90\x02\x01\x12~\n\x15\x43reateKeyAccessServer\x12\x30.policy.kasregistry.CreateKeyAccessServerRequest\x1a\x31.policy.kasregistry.CreateKeyAccessServerResponse\"\x00\x12~\n\x15UpdateKeyAccessServer\x12\x30.policy.kasregistry.UpdateKeyAccessServerRequest\x1a\x31.policy.kasregistry.UpdateKeyAccessServerResponse\"\x00\x12~\n\x15\x44\x65leteKeyAccessServer\x12\x30.policy.kasregistry.DeleteKeyAccessServerRequest\x1a\x31.policy.kasregistry.DeleteKeyAccessServerResponse\"\x00\x12\x90\x01\n\x19ListKeyAccessServerGrants\x12\x34.policy.kasregistry.ListKeyAccessServerGrantsRequest\x1a\x35.policy.kasregistry.ListKeyAccessServerGrantsResponse\"\x06\x88\x02\x01\x90\x02\x01\x12Z\n\tCreateKey\x12$.policy.kasregistry.CreateKeyRequest\x1a%.policy.kasregistry.CreateKeyResponse\"\x00\x12Q\n\x06GetKey\x12!.policy.kasregistry.GetKeyRequest\x1a\".policy.kasregistry.GetKeyResponse\"\x00\x12W\n\x08ListKeys\x12#.policy.kasregistry.ListKeysRequest\x1a$.policy.kasregistry.ListKeysResponse\"\x00\x12Z\n\tUpdateKey\x12$.policy.kasregistry.UpdateKeyRequest\x1a%.policy.kasregistry.UpdateKeyResponse\"\x00\x12Z\n\tRotateKey\x12$.policy.kasregistry.RotateKeyRequest\x1a%.policy.kasregistry.RotateKeyResponse\"\x00\x12]\n\nSetBaseKey\x12%.policy.kasregistry.SetBaseKeyRequest\x1a&.policy.kasregistry.SetBaseKeyResponse\"\x00\x12]\n\nGetBaseKey\x12%.policy.kasregistry.GetBaseKeyRequest\x1a&.policy.kasregistry.GetBaseKeyResponse\"\x00\x12l\n\x0fListKeyMappings\x12*.policy.kasregistry.ListKeyMappingsRequest\x1a+.policy.kasregistry.ListKeyMappingsResponse\"\x00\x42\x9f\x01\n\x16\x63om.policy.kasregistryB\x1cKeyAccessServerRegistryProtoP\x01\xa2\x02\x03PKX\xaa\x02\x12Policy.Kasregistry\xca\x02\x12Policy\\Kasregistry\xe2\x02\x1ePolicy\\Kasregistry\\GPBMetadata\xea\x02\x13Policy::Kasregistryb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -47,8 +46,16 @@ _globals['_GETKEYACCESSSERVERREQUEST'].fields_by_name['uri']._serialized_options = b'\272H\007r\005\020\001\210\001\001' _globals['_GETKEYACCESSSERVERREQUEST']._loaded_options = None _globals['_GETKEYACCESSSERVERREQUEST']._serialized_options = b'\272H\263\002\032\250\001\n\020exclusive_fields\022JEither use deprecated \'id\' field or one of \'kas_id\' or \'uri\', but not both\032H!(has(this.id) && (has(this.kas_id) || has(this.uri) || has(this.name)))\032\205\001\n\017required_fields\022-Either id or one of kas_id or uri must be set\032Chas(this.id) || has(this.kas_id) || has(this.uri) || has(this.name)' + _globals['_KEYACCESSSERVERSSORT'].fields_by_name['field']._loaded_options = None + _globals['_KEYACCESSSERVERSSORT'].fields_by_name['field']._serialized_options = b'\272H\005\202\001\002\020\001' + _globals['_KEYACCESSSERVERSSORT'].fields_by_name['direction']._loaded_options = None + _globals['_KEYACCESSSERVERSSORT'].fields_by_name['direction']._serialized_options = b'\272H\005\202\001\002\020\001' _globals['_LISTKEYACCESSSERVERSREQUEST'].fields_by_name['sort']._loaded_options = None _globals['_LISTKEYACCESSSERVERSREQUEST'].fields_by_name['sort']._serialized_options = b'\272H\005\222\001\002\020\001' + _globals['_KASKEYSSORT'].fields_by_name['field']._loaded_options = None + _globals['_KASKEYSSORT'].fields_by_name['field']._serialized_options = b'\272H\005\202\001\002\020\001' + _globals['_KASKEYSSORT'].fields_by_name['direction']._loaded_options = None + _globals['_KASKEYSSORT'].fields_by_name['direction']._serialized_options = b'\272H\005\202\001\002\020\001' _globals['_CREATEKEYACCESSSERVERREQUEST'].fields_by_name['uri']._loaded_options = None _globals['_CREATEKEYACCESSSERVERREQUEST'].fields_by_name['uri']._serialized_options = b'\272H\360\001\272\001\354\001\n\nuri_format\022\317\001URI must be a valid URL (e.g., \'https://demo.com/\') followed by additional segments. Each segment must start and end with an alphanumeric character, can contain hyphens, alphanumeric characters, and slashes.\032\014this.isUri()' _globals['_CREATEKEYACCESSSERVERREQUEST'].fields_by_name['source_type']._loaded_options = None @@ -108,7 +115,7 @@ _globals['_CREATEKEYREQUEST'].fields_by_name['key_id']._loaded_options = None _globals['_CREATEKEYREQUEST'].fields_by_name['key_id']._serialized_options = b'\272H\004r\002\020\001' _globals['_CREATEKEYREQUEST'].fields_by_name['key_algorithm']._loaded_options = None - _globals['_CREATEKEYREQUEST'].fields_by_name['key_algorithm']._serialized_options = b'\272Hi\272\001f\n\025key_algorithm_defined\0224The key_algorithm must be one of the defined values.\032\027this in [1, 2, 3, 4, 5]' + _globals['_CREATEKEYREQUEST'].fields_by_name['key_algorithm']._serialized_options = b'\272Hr\272\001o\n\025key_algorithm_defined\0224The key_algorithm must be one of the defined values.\032 this in [1, 2, 3, 4, 5, 6, 7, 8]' _globals['_CREATEKEYREQUEST'].fields_by_name['key_mode']._loaded_options = None _globals['_CREATEKEYREQUEST'].fields_by_name['key_mode']._serialized_options = b'\272Hd\272\001a\n\020key_mode_defined\0225The key_mode must be one of the defined values (1-4).\032\026this >= 1 && this <= 4' _globals['_CREATEKEYREQUEST'].fields_by_name['public_key_ctx']._loaded_options = None @@ -120,13 +127,15 @@ _globals['_GETKEYREQUEST'].fields_by_name['id']._loaded_options = None _globals['_GETKEYREQUEST'].fields_by_name['id']._serialized_options = b'\272H\005r\003\260\001\001' _globals['_LISTKEYSREQUEST'].fields_by_name['key_algorithm']._loaded_options = None - _globals['_LISTKEYSREQUEST'].fields_by_name['key_algorithm']._serialized_options = b'\272Hl\272\001i\n\025key_algorithm_defined\0224The key_algorithm must be one of the defined values.\032\032this in [0, 1, 2, 3, 4, 5]' + _globals['_LISTKEYSREQUEST'].fields_by_name['key_algorithm']._serialized_options = b'\272Hu\272\001r\n\025key_algorithm_defined\0224The key_algorithm must be one of the defined values.\032#this in [0, 1, 2, 3, 4, 5, 6, 7, 8]' _globals['_LISTKEYSREQUEST'].fields_by_name['kas_id']._loaded_options = None _globals['_LISTKEYSREQUEST'].fields_by_name['kas_id']._serialized_options = b'\272H\005r\003\260\001\001' _globals['_LISTKEYSREQUEST'].fields_by_name['kas_name']._loaded_options = None _globals['_LISTKEYSREQUEST'].fields_by_name['kas_name']._serialized_options = b'\272H\004r\002\020\001' _globals['_LISTKEYSREQUEST'].fields_by_name['kas_uri']._loaded_options = None _globals['_LISTKEYSREQUEST'].fields_by_name['kas_uri']._serialized_options = b'\272H\007r\005\020\001\210\001\001' + _globals['_LISTKEYSREQUEST'].fields_by_name['sort']._loaded_options = None + _globals['_LISTKEYSREQUEST'].fields_by_name['sort']._serialized_options = b'\272H\005\222\001\002\020\001' _globals['_UPDATEKEYREQUEST'].fields_by_name['id']._loaded_options = None _globals['_UPDATEKEYREQUEST'].fields_by_name['id']._serialized_options = b'\272H\005r\003\260\001\001' _globals['_UPDATEKEYREQUEST']._loaded_options = None @@ -144,7 +153,7 @@ _globals['_ROTATEKEYREQUEST_NEWKEY'].fields_by_name['key_id']._loaded_options = None _globals['_ROTATEKEYREQUEST_NEWKEY'].fields_by_name['key_id']._serialized_options = b'\272H\004r\002\020\001' _globals['_ROTATEKEYREQUEST_NEWKEY'].fields_by_name['algorithm']._loaded_options = None - _globals['_ROTATEKEYREQUEST_NEWKEY'].fields_by_name['algorithm']._serialized_options = b'\272Hi\272\001f\n\025key_algorithm_defined\0224The key_algorithm must be one of the defined values.\032\027this in [1, 2, 3, 4, 5]' + _globals['_ROTATEKEYREQUEST_NEWKEY'].fields_by_name['algorithm']._serialized_options = b'\272Hr\272\001o\n\025key_algorithm_defined\0224The key_algorithm must be one of the defined values.\032 this in [1, 2, 3, 4, 5, 6, 7, 8]' _globals['_ROTATEKEYREQUEST_NEWKEY'].fields_by_name['key_mode']._loaded_options = None _globals['_ROTATEKEYREQUEST_NEWKEY'].fields_by_name['key_mode']._serialized_options = b'\272Ho\202\001\002\020\001\272\001g\n\024new_key_mode_defined\0229The new key_mode must be one of the defined values (1-4).\032\024this in [1, 2, 3, 4]' _globals['_ROTATEKEYREQUEST_NEWKEY'].fields_by_name['public_key_ctx']._loaded_options = None @@ -164,121 +173,125 @@ _globals['_LISTKEYMAPPINGSREQUEST'].fields_by_name['id']._loaded_options = None _globals['_LISTKEYMAPPINGSREQUEST'].fields_by_name['id']._serialized_options = b'\272H\005r\003\260\001\001' _globals['_KEYACCESSSERVERREGISTRYSERVICE'].methods_by_name['ListKeyAccessServers']._loaded_options = None - _globals['_KEYACCESSSERVERREGISTRYSERVICE'].methods_by_name['ListKeyAccessServers']._serialized_options = b'\220\002\001\202\323\344\223\002\025\022\023/key-access-servers' + _globals['_KEYACCESSSERVERREGISTRYSERVICE'].methods_by_name['ListKeyAccessServers']._serialized_options = b'\220\002\001' _globals['_KEYACCESSSERVERREGISTRYSERVICE'].methods_by_name['GetKeyAccessServer']._loaded_options = None _globals['_KEYACCESSSERVERREGISTRYSERVICE'].methods_by_name['GetKeyAccessServer']._serialized_options = b'\220\002\001' _globals['_KEYACCESSSERVERREGISTRYSERVICE'].methods_by_name['ListKeyAccessServerGrants']._loaded_options = None _globals['_KEYACCESSSERVERREGISTRYSERVICE'].methods_by_name['ListKeyAccessServerGrants']._serialized_options = b'\210\002\001\220\002\001' - _globals['_SORTKEYACCESSSERVERSTYPE']._serialized_start=13528 - _globals['_SORTKEYACCESSSERVERSTYPE']._serialized_end=13767 - _globals['_GETKEYACCESSSERVERREQUEST']._serialized_start=202 - _globals['_GETKEYACCESSSERVERREQUEST']._serialized_end=686 - _globals['_GETKEYACCESSSERVERRESPONSE']._serialized_start=688 - _globals['_GETKEYACCESSSERVERRESPONSE']._serialized_end=785 - _globals['_KEYACCESSSERVERSSORT']._serialized_start=788 - _globals['_KEYACCESSSERVERSSORT']._serialized_end=931 - _globals['_LISTKEYACCESSSERVERSREQUEST']._serialized_start=934 - _globals['_LISTKEYACCESSSERVERSREQUEST']._serialized_end=1088 - _globals['_LISTKEYACCESSSERVERSRESPONSE']._serialized_start=1091 - _globals['_LISTKEYACCESSSERVERSRESPONSE']._serialized_end=1246 - _globals['_CREATEKEYACCESSSERVERREQUEST']._serialized_start=1249 - _globals['_CREATEKEYACCESSSERVERREQUEST']._serialized_end=2038 - _globals['_CREATEKEYACCESSSERVERRESPONSE']._serialized_start=2040 - _globals['_CREATEKEYACCESSSERVERRESPONSE']._serialized_end=2140 - _globals['_UPDATEKEYACCESSSERVERREQUEST']._serialized_start=2143 - _globals['_UPDATEKEYACCESSSERVERREQUEST']._serialized_end=3076 - _globals['_UPDATEKEYACCESSSERVERRESPONSE']._serialized_start=3078 - _globals['_UPDATEKEYACCESSSERVERRESPONSE']._serialized_end=3178 - _globals['_DELETEKEYACCESSSERVERREQUEST']._serialized_start=3180 - _globals['_DELETEKEYACCESSSERVERREQUEST']._serialized_end=3236 - _globals['_DELETEKEYACCESSSERVERRESPONSE']._serialized_start=3238 - _globals['_DELETEKEYACCESSSERVERRESPONSE']._serialized_end=3338 - _globals['_GRANTEDPOLICYOBJECT']._serialized_start=3340 - _globals['_GRANTEDPOLICYOBJECT']._serialized_end=3395 - _globals['_KEYACCESSSERVERGRANTS']._serialized_start=3398 - _globals['_KEYACCESSSERVERGRANTS']._serialized_end=3734 - _globals['_CREATEPUBLICKEYREQUEST']._serialized_start=3737 - _globals['_CREATEPUBLICKEYREQUEST']._serialized_end=3895 - _globals['_CREATEPUBLICKEYRESPONSE']._serialized_start=3897 - _globals['_CREATEPUBLICKEYRESPONSE']._serialized_end=3953 - _globals['_GETPUBLICKEYREQUEST']._serialized_start=3955 - _globals['_GETPUBLICKEYREQUEST']._serialized_end=4018 - _globals['_GETPUBLICKEYRESPONSE']._serialized_start=4020 - _globals['_GETPUBLICKEYRESPONSE']._serialized_end=4073 - _globals['_LISTPUBLICKEYSREQUEST']._serialized_start=4076 - _globals['_LISTPUBLICKEYSREQUEST']._serialized_end=4278 - _globals['_LISTPUBLICKEYSRESPONSE']._serialized_start=4280 - _globals['_LISTPUBLICKEYSRESPONSE']._serialized_end=4391 - _globals['_LISTPUBLICKEYMAPPINGREQUEST']._serialized_start=4394 - _globals['_LISTPUBLICKEYMAPPINGREQUEST']._serialized_end=4651 - _globals['_LISTPUBLICKEYMAPPINGRESPONSE']._serialized_start=4654 - _globals['_LISTPUBLICKEYMAPPINGRESPONSE']._serialized_end=5412 - _globals['_LISTPUBLICKEYMAPPINGRESPONSE_PUBLICKEYMAPPING']._serialized_start=4856 - _globals['_LISTPUBLICKEYMAPPINGRESPONSE_PUBLICKEYMAPPING']._serialized_end=5042 - _globals['_LISTPUBLICKEYMAPPINGRESPONSE_PUBLICKEY']._serialized_start=5045 - _globals['_LISTPUBLICKEYMAPPINGRESPONSE_PUBLICKEY']._serialized_end=5363 - _globals['_LISTPUBLICKEYMAPPINGRESPONSE_ASSOCIATION']._serialized_start=5365 - _globals['_LISTPUBLICKEYMAPPINGRESPONSE_ASSOCIATION']._serialized_end=5412 - _globals['_UPDATEPUBLICKEYREQUEST']._serialized_start=5415 - _globals['_UPDATEPUBLICKEYREQUEST']._serialized_end=5604 - _globals['_UPDATEPUBLICKEYRESPONSE']._serialized_start=5606 - _globals['_UPDATEPUBLICKEYRESPONSE']._serialized_end=5662 - _globals['_DEACTIVATEPUBLICKEYREQUEST']._serialized_start=5664 - _globals['_DEACTIVATEPUBLICKEYREQUEST']._serialized_end=5718 - _globals['_DEACTIVATEPUBLICKEYRESPONSE']._serialized_start=5720 - _globals['_DEACTIVATEPUBLICKEYRESPONSE']._serialized_end=5780 - _globals['_ACTIVATEPUBLICKEYREQUEST']._serialized_start=5782 - _globals['_ACTIVATEPUBLICKEYREQUEST']._serialized_end=5834 - _globals['_ACTIVATEPUBLICKEYRESPONSE']._serialized_start=5836 - _globals['_ACTIVATEPUBLICKEYRESPONSE']._serialized_end=5894 - _globals['_LISTKEYACCESSSERVERGRANTSREQUEST']._serialized_start=5897 - _globals['_LISTKEYACCESSSERVERGRANTSREQUEST']._serialized_end=6830 - _globals['_LISTKEYACCESSSERVERGRANTSRESPONSE']._serialized_start=6833 - _globals['_LISTKEYACCESSSERVERGRANTSRESPONSE']._serialized_end=6997 - _globals['_CREATEKEYREQUEST']._serialized_start=7000 - _globals['_CREATEKEYREQUEST']._serialized_end=8612 - _globals['_CREATEKEYRESPONSE']._serialized_start=8614 - _globals['_CREATEKEYRESPONSE']._serialized_end=8674 - _globals['_GETKEYREQUEST']._serialized_start=8676 - _globals['_GETKEYREQUEST']._serialized_end=8798 - _globals['_GETKEYRESPONSE']._serialized_start=8800 - _globals['_GETKEYRESPONSE']._serialized_end=8857 - _globals['_LISTKEYSREQUEST']._serialized_start=8860 - _globals['_LISTKEYSREQUEST']._serialized_end=9266 - _globals['_LISTKEYSRESPONSE']._serialized_start=9268 - _globals['_LISTKEYSRESPONSE']._serialized_end=9383 - _globals['_UPDATEKEYREQUEST']._serialized_start=9386 - _globals['_UPDATEKEYREQUEST']._serialized_end=9776 - _globals['_UPDATEKEYRESPONSE']._serialized_start=9778 - _globals['_UPDATEKEYRESPONSE']._serialized_end=9838 - _globals['_KASKEYIDENTIFIER']._serialized_start=9841 - _globals['_KASKEYIDENTIFIER']._serialized_end=10005 - _globals['_ROTATEKEYREQUEST']._serialized_start=10008 - _globals['_ROTATEKEYREQUEST']._serialized_end=11901 - _globals['_ROTATEKEYREQUEST_NEWKEY']._serialized_start=10185 - _globals['_ROTATEKEYREQUEST_NEWKEY']._serialized_end=10776 - _globals['_CHANGEMAPPINGS']._serialized_start=11903 - _globals['_CHANGEMAPPINGS']._serialized_end=11953 - _globals['_ROTATEDRESOURCES']._serialized_start=11956 - _globals['_ROTATEDRESOURCES']._serialized_end=12311 - _globals['_ROTATEKEYRESPONSE']._serialized_start=12314 - _globals['_ROTATEKEYRESPONSE']._serialized_end=12457 - _globals['_SETBASEKEYREQUEST']._serialized_start=12459 - _globals['_SETBASEKEYREQUEST']._serialized_end=12585 - _globals['_GETBASEKEYREQUEST']._serialized_start=12587 - _globals['_GETBASEKEYREQUEST']._serialized_end=12606 - _globals['_GETBASEKEYRESPONSE']._serialized_start=12608 - _globals['_GETBASEKEYRESPONSE']._serialized_end=12677 - _globals['_SETBASEKEYRESPONSE']._serialized_start=12680 - _globals['_SETBASEKEYRESPONSE']._serialized_end=12822 - _globals['_MAPPEDPOLICYOBJECT']._serialized_start=12824 - _globals['_MAPPEDPOLICYOBJECT']._serialized_end=12878 - _globals['_KEYMAPPING']._serialized_start=12881 - _globals['_KEYMAPPING']._serialized_end=13189 - _globals['_LISTKEYMAPPINGSREQUEST']._serialized_start=13192 - _globals['_LISTKEYMAPPINGSREQUEST']._serialized_end=13376 - _globals['_LISTKEYMAPPINGSRESPONSE']._serialized_start=13379 - _globals['_LISTKEYMAPPINGSRESPONSE']._serialized_end=13525 - _globals['_KEYACCESSSERVERREGISTRYSERVICE']._serialized_start=13770 - _globals['_KEYACCESSSERVERREGISTRYSERVICE']._serialized_end=15359 + _globals['_SORTKEYACCESSSERVERSTYPE']._serialized_start=13756 + _globals['_SORTKEYACCESSSERVERSTYPE']._serialized_end=13995 + _globals['_SORTKASKEYSTYPE']._serialized_start=13998 + _globals['_SORTKASKEYSTYPE']._serialized_end=14152 + _globals['_GETKEYACCESSSERVERREQUEST']._serialized_start=172 + _globals['_GETKEYACCESSSERVERREQUEST']._serialized_end=656 + _globals['_GETKEYACCESSSERVERRESPONSE']._serialized_start=658 + _globals['_GETKEYACCESSSERVERRESPONSE']._serialized_end=755 + _globals['_KEYACCESSSERVERSSORT']._serialized_start=758 + _globals['_KEYACCESSSERVERSSORT']._serialized_end=921 + _globals['_LISTKEYACCESSSERVERSREQUEST']._serialized_start=924 + _globals['_LISTKEYACCESSSERVERSREQUEST']._serialized_end=1078 + _globals['_LISTKEYACCESSSERVERSRESPONSE']._serialized_start=1081 + _globals['_LISTKEYACCESSSERVERSRESPONSE']._serialized_end=1236 + _globals['_KASKEYSSORT']._serialized_start=1239 + _globals['_KASKEYSSORT']._serialized_end=1384 + _globals['_CREATEKEYACCESSSERVERREQUEST']._serialized_start=1387 + _globals['_CREATEKEYACCESSSERVERREQUEST']._serialized_end=2176 + _globals['_CREATEKEYACCESSSERVERRESPONSE']._serialized_start=2178 + _globals['_CREATEKEYACCESSSERVERRESPONSE']._serialized_end=2278 + _globals['_UPDATEKEYACCESSSERVERREQUEST']._serialized_start=2281 + _globals['_UPDATEKEYACCESSSERVERREQUEST']._serialized_end=3214 + _globals['_UPDATEKEYACCESSSERVERRESPONSE']._serialized_start=3216 + _globals['_UPDATEKEYACCESSSERVERRESPONSE']._serialized_end=3316 + _globals['_DELETEKEYACCESSSERVERREQUEST']._serialized_start=3318 + _globals['_DELETEKEYACCESSSERVERREQUEST']._serialized_end=3374 + _globals['_DELETEKEYACCESSSERVERRESPONSE']._serialized_start=3376 + _globals['_DELETEKEYACCESSSERVERRESPONSE']._serialized_end=3476 + _globals['_GRANTEDPOLICYOBJECT']._serialized_start=3478 + _globals['_GRANTEDPOLICYOBJECT']._serialized_end=3533 + _globals['_KEYACCESSSERVERGRANTS']._serialized_start=3536 + _globals['_KEYACCESSSERVERGRANTS']._serialized_end=3872 + _globals['_CREATEPUBLICKEYREQUEST']._serialized_start=3875 + _globals['_CREATEPUBLICKEYREQUEST']._serialized_end=4033 + _globals['_CREATEPUBLICKEYRESPONSE']._serialized_start=4035 + _globals['_CREATEPUBLICKEYRESPONSE']._serialized_end=4091 + _globals['_GETPUBLICKEYREQUEST']._serialized_start=4093 + _globals['_GETPUBLICKEYREQUEST']._serialized_end=4156 + _globals['_GETPUBLICKEYRESPONSE']._serialized_start=4158 + _globals['_GETPUBLICKEYRESPONSE']._serialized_end=4211 + _globals['_LISTPUBLICKEYSREQUEST']._serialized_start=4214 + _globals['_LISTPUBLICKEYSREQUEST']._serialized_end=4416 + _globals['_LISTPUBLICKEYSRESPONSE']._serialized_start=4418 + _globals['_LISTPUBLICKEYSRESPONSE']._serialized_end=4529 + _globals['_LISTPUBLICKEYMAPPINGREQUEST']._serialized_start=4532 + _globals['_LISTPUBLICKEYMAPPINGREQUEST']._serialized_end=4789 + _globals['_LISTPUBLICKEYMAPPINGRESPONSE']._serialized_start=4792 + _globals['_LISTPUBLICKEYMAPPINGRESPONSE']._serialized_end=5550 + _globals['_LISTPUBLICKEYMAPPINGRESPONSE_PUBLICKEYMAPPING']._serialized_start=4994 + _globals['_LISTPUBLICKEYMAPPINGRESPONSE_PUBLICKEYMAPPING']._serialized_end=5180 + _globals['_LISTPUBLICKEYMAPPINGRESPONSE_PUBLICKEY']._serialized_start=5183 + _globals['_LISTPUBLICKEYMAPPINGRESPONSE_PUBLICKEY']._serialized_end=5501 + _globals['_LISTPUBLICKEYMAPPINGRESPONSE_ASSOCIATION']._serialized_start=5503 + _globals['_LISTPUBLICKEYMAPPINGRESPONSE_ASSOCIATION']._serialized_end=5550 + _globals['_UPDATEPUBLICKEYREQUEST']._serialized_start=5553 + _globals['_UPDATEPUBLICKEYREQUEST']._serialized_end=5742 + _globals['_UPDATEPUBLICKEYRESPONSE']._serialized_start=5744 + _globals['_UPDATEPUBLICKEYRESPONSE']._serialized_end=5800 + _globals['_DEACTIVATEPUBLICKEYREQUEST']._serialized_start=5802 + _globals['_DEACTIVATEPUBLICKEYREQUEST']._serialized_end=5856 + _globals['_DEACTIVATEPUBLICKEYRESPONSE']._serialized_start=5858 + _globals['_DEACTIVATEPUBLICKEYRESPONSE']._serialized_end=5918 + _globals['_ACTIVATEPUBLICKEYREQUEST']._serialized_start=5920 + _globals['_ACTIVATEPUBLICKEYREQUEST']._serialized_end=5972 + _globals['_ACTIVATEPUBLICKEYRESPONSE']._serialized_start=5974 + _globals['_ACTIVATEPUBLICKEYRESPONSE']._serialized_end=6032 + _globals['_LISTKEYACCESSSERVERGRANTSREQUEST']._serialized_start=6035 + _globals['_LISTKEYACCESSSERVERGRANTSREQUEST']._serialized_end=6968 + _globals['_LISTKEYACCESSSERVERGRANTSRESPONSE']._serialized_start=6971 + _globals['_LISTKEYACCESSSERVERGRANTSRESPONSE']._serialized_end=7135 + _globals['_CREATEKEYREQUEST']._serialized_start=7138 + _globals['_CREATEKEYREQUEST']._serialized_end=8759 + _globals['_CREATEKEYRESPONSE']._serialized_start=8761 + _globals['_CREATEKEYRESPONSE']._serialized_end=8821 + _globals['_GETKEYREQUEST']._serialized_start=8823 + _globals['_GETKEYREQUEST']._serialized_end=8945 + _globals['_GETKEYRESPONSE']._serialized_start=8947 + _globals['_GETKEYRESPONSE']._serialized_end=9004 + _globals['_LISTKEYSREQUEST']._serialized_start=9007 + _globals['_LISTKEYSREQUEST']._serialized_end=9485 + _globals['_LISTKEYSRESPONSE']._serialized_start=9487 + _globals['_LISTKEYSRESPONSE']._serialized_end=9602 + _globals['_UPDATEKEYREQUEST']._serialized_start=9605 + _globals['_UPDATEKEYREQUEST']._serialized_end=9995 + _globals['_UPDATEKEYRESPONSE']._serialized_start=9997 + _globals['_UPDATEKEYRESPONSE']._serialized_end=10057 + _globals['_KASKEYIDENTIFIER']._serialized_start=10060 + _globals['_KASKEYIDENTIFIER']._serialized_end=10224 + _globals['_ROTATEKEYREQUEST']._serialized_start=10227 + _globals['_ROTATEKEYREQUEST']._serialized_end=12129 + _globals['_ROTATEKEYREQUEST_NEWKEY']._serialized_start=10404 + _globals['_ROTATEKEYREQUEST_NEWKEY']._serialized_end=11004 + _globals['_CHANGEMAPPINGS']._serialized_start=12131 + _globals['_CHANGEMAPPINGS']._serialized_end=12181 + _globals['_ROTATEDRESOURCES']._serialized_start=12184 + _globals['_ROTATEDRESOURCES']._serialized_end=12539 + _globals['_ROTATEKEYRESPONSE']._serialized_start=12542 + _globals['_ROTATEKEYRESPONSE']._serialized_end=12685 + _globals['_SETBASEKEYREQUEST']._serialized_start=12687 + _globals['_SETBASEKEYREQUEST']._serialized_end=12813 + _globals['_GETBASEKEYREQUEST']._serialized_start=12815 + _globals['_GETBASEKEYREQUEST']._serialized_end=12834 + _globals['_GETBASEKEYRESPONSE']._serialized_start=12836 + _globals['_GETBASEKEYRESPONSE']._serialized_end=12905 + _globals['_SETBASEKEYRESPONSE']._serialized_start=12908 + _globals['_SETBASEKEYRESPONSE']._serialized_end=13050 + _globals['_MAPPEDPOLICYOBJECT']._serialized_start=13052 + _globals['_MAPPEDPOLICYOBJECT']._serialized_end=13106 + _globals['_KEYMAPPING']._serialized_start=13109 + _globals['_KEYMAPPING']._serialized_end=13417 + _globals['_LISTKEYMAPPINGSREQUEST']._serialized_start=13420 + _globals['_LISTKEYMAPPINGSREQUEST']._serialized_end=13604 + _globals['_LISTKEYMAPPINGSRESPONSE']._serialized_start=13607 + _globals['_LISTKEYMAPPINGSRESPONSE']._serialized_end=13753 + _globals['_KEYACCESSSERVERREGISTRYSERVICE']._serialized_start=14155 + _globals['_KEYACCESSSERVERREGISTRYSERVICE']._serialized_end=15716 # @@protoc_insertion_point(module_scope) diff --git a/packages/otdf-python-proto/src/otdf_python_proto/policy/kasregistry/key_access_server_registry_pb2.pyi b/packages/otdf-python-proto/src/otdf_python_proto/policy/kasregistry/key_access_server_registry_pb2.pyi index 2cb186f6..98b6bb65 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/policy/kasregistry/key_access_server_registry_pb2.pyi +++ b/packages/otdf-python-proto/src/otdf_python_proto/policy/kasregistry/key_access_server_registry_pb2.pyi @@ -1,6 +1,5 @@ from buf.validate import validate_pb2 as _validate_pb2 from common import common_pb2 as _common_pb2 -from google.api import annotations_pb2 as _annotations_pb2 from policy import objects_pb2 as _objects_pb2 from policy import selectors_pb2 as _selectors_pb2 from google.protobuf.internal import containers as _containers @@ -19,11 +18,22 @@ class SortKeyAccessServersType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper SORT_KEY_ACCESS_SERVERS_TYPE_URI: _ClassVar[SortKeyAccessServersType] SORT_KEY_ACCESS_SERVERS_TYPE_CREATED_AT: _ClassVar[SortKeyAccessServersType] SORT_KEY_ACCESS_SERVERS_TYPE_UPDATED_AT: _ClassVar[SortKeyAccessServersType] + +class SortKasKeysType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + SORT_KAS_KEYS_TYPE_UNSPECIFIED: _ClassVar[SortKasKeysType] + SORT_KAS_KEYS_TYPE_KEY_ID: _ClassVar[SortKasKeysType] + SORT_KAS_KEYS_TYPE_CREATED_AT: _ClassVar[SortKasKeysType] + SORT_KAS_KEYS_TYPE_UPDATED_AT: _ClassVar[SortKasKeysType] SORT_KEY_ACCESS_SERVERS_TYPE_UNSPECIFIED: SortKeyAccessServersType SORT_KEY_ACCESS_SERVERS_TYPE_NAME: SortKeyAccessServersType SORT_KEY_ACCESS_SERVERS_TYPE_URI: SortKeyAccessServersType SORT_KEY_ACCESS_SERVERS_TYPE_CREATED_AT: SortKeyAccessServersType SORT_KEY_ACCESS_SERVERS_TYPE_UPDATED_AT: SortKeyAccessServersType +SORT_KAS_KEYS_TYPE_UNSPECIFIED: SortKasKeysType +SORT_KAS_KEYS_TYPE_KEY_ID: SortKasKeysType +SORT_KAS_KEYS_TYPE_CREATED_AT: SortKasKeysType +SORT_KAS_KEYS_TYPE_UPDATED_AT: SortKasKeysType class GetKeyAccessServerRequest(_message.Message): __slots__ = ("id", "kas_id", "name", "uri") @@ -67,6 +77,14 @@ class ListKeyAccessServersResponse(_message.Message): pagination: _selectors_pb2.PageResponse def __init__(self, key_access_servers: _Optional[_Iterable[_Union[_objects_pb2.KeyAccessServer, _Mapping]]] = ..., pagination: _Optional[_Union[_selectors_pb2.PageResponse, _Mapping]] = ...) -> None: ... +class KasKeysSort(_message.Message): + __slots__ = ("field", "direction") + FIELD_FIELD_NUMBER: _ClassVar[int] + DIRECTION_FIELD_NUMBER: _ClassVar[int] + field: SortKasKeysType + direction: _selectors_pb2.SortDirection + def __init__(self, field: _Optional[_Union[SortKasKeysType, str]] = ..., direction: _Optional[_Union[_selectors_pb2.SortDirection, str]] = ...) -> None: ... + class CreateKeyAccessServerRequest(_message.Message): __slots__ = ("uri", "public_key", "source_type", "name", "metadata") URI_FIELD_NUMBER: _ClassVar[int] @@ -345,20 +363,22 @@ class GetKeyResponse(_message.Message): def __init__(self, kas_key: _Optional[_Union[_objects_pb2.KasKey, _Mapping]] = ...) -> None: ... class ListKeysRequest(_message.Message): - __slots__ = ("key_algorithm", "kas_id", "kas_name", "kas_uri", "legacy", "pagination") + __slots__ = ("key_algorithm", "kas_id", "kas_name", "kas_uri", "legacy", "pagination", "sort") KEY_ALGORITHM_FIELD_NUMBER: _ClassVar[int] KAS_ID_FIELD_NUMBER: _ClassVar[int] KAS_NAME_FIELD_NUMBER: _ClassVar[int] KAS_URI_FIELD_NUMBER: _ClassVar[int] LEGACY_FIELD_NUMBER: _ClassVar[int] PAGINATION_FIELD_NUMBER: _ClassVar[int] + SORT_FIELD_NUMBER: _ClassVar[int] key_algorithm: _objects_pb2.Algorithm kas_id: str kas_name: str kas_uri: str legacy: bool pagination: _selectors_pb2.PageRequest - def __init__(self, key_algorithm: _Optional[_Union[_objects_pb2.Algorithm, str]] = ..., kas_id: _Optional[str] = ..., kas_name: _Optional[str] = ..., kas_uri: _Optional[str] = ..., legacy: bool = ..., pagination: _Optional[_Union[_selectors_pb2.PageRequest, _Mapping]] = ...) -> None: ... + sort: _containers.RepeatedCompositeFieldContainer[KasKeysSort] + def __init__(self, key_algorithm: _Optional[_Union[_objects_pb2.Algorithm, str]] = ..., kas_id: _Optional[str] = ..., kas_name: _Optional[str] = ..., kas_uri: _Optional[str] = ..., legacy: bool = ..., pagination: _Optional[_Union[_selectors_pb2.PageRequest, _Mapping]] = ..., sort: _Optional[_Iterable[_Union[KasKeysSort, _Mapping]]] = ...) -> None: ... class ListKeysResponse(_message.Message): __slots__ = ("kas_keys", "pagination") diff --git a/packages/otdf-python-proto/src/otdf_python_proto/policy/keymanagement/key_management_connect.py b/packages/otdf-python-proto/src/otdf_python_proto/policy/keymanagement/key_management_connect.py index 3d69d055..b6cbeb6f 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/policy/keymanagement/key_management_connect.py +++ b/packages/otdf-python-proto/src/otdf_python_proto/policy/keymanagement/key_management_connect.py @@ -7,6 +7,7 @@ from connectrpc.client import ConnectClient, ConnectClientSync from connectrpc.code import Code +from connectrpc.compression import Compression from connectrpc.errors import ConnectError from connectrpc.interceptor import Interceptor, InterceptorSync from connectrpc.method import IdempotencyLevel, MethodInfo @@ -33,7 +34,7 @@ async def delete_provider_config(self, request: policy_dot_keymanagement_dot_key class KeyManagementServiceASGIApplication(ConnectASGIApplication[KeyManagementService]): - def __init__(self, service: KeyManagementService | AsyncGenerator[KeyManagementService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None) -> None: + def __init__(self, service: KeyManagementService | AsyncGenerator[KeyManagementService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: super().__init__( service=service, endpoints=lambda svc: { @@ -90,6 +91,7 @@ def __init__(self, service: KeyManagementService | AsyncGenerator[KeyManagementS }, interceptors=interceptors, read_max_bytes=read_max_bytes, + compressions=compressions, ) @property @@ -214,7 +216,7 @@ def delete_provider_config(self, request: policy_dot_keymanagement_dot_key__mana class KeyManagementServiceWSGIApplication(ConnectWSGIApplication): - def __init__(self, service: KeyManagementServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None) -> None: + def __init__(self, service: KeyManagementServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: super().__init__( endpoints={ "/policy.keymanagement.KeyManagementService/CreateProviderConfig": EndpointSync.unary( @@ -270,6 +272,7 @@ def __init__(self, service: KeyManagementServiceSync, interceptors: Iterable[Int }, interceptors=interceptors, read_max_bytes=read_max_bytes, + compressions=compressions, ) @property diff --git a/packages/otdf-python-proto/src/otdf_python_proto/policy/namespaces/namespaces_connect.py b/packages/otdf-python-proto/src/otdf_python_proto/policy/namespaces/namespaces_connect.py index d923619b..203d9bd4 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/policy/namespaces/namespaces_connect.py +++ b/packages/otdf-python-proto/src/otdf_python_proto/policy/namespaces/namespaces_connect.py @@ -7,6 +7,7 @@ from connectrpc.client import ConnectClient, ConnectClientSync from connectrpc.code import Code +from connectrpc.compression import Compression from connectrpc.errors import ConnectError from connectrpc.interceptor import Interceptor, InterceptorSync from connectrpc.method import IdempotencyLevel, MethodInfo @@ -45,7 +46,7 @@ async def remove_public_key_from_namespace(self, request: policy_dot_namespaces_ class NamespaceServiceASGIApplication(ConnectASGIApplication[NamespaceService]): - def __init__(self, service: NamespaceService | AsyncGenerator[NamespaceService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None) -> None: + def __init__(self, service: NamespaceService | AsyncGenerator[NamespaceService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: super().__init__( service=service, endpoints=lambda svc: { @@ -142,6 +143,7 @@ def __init__(self, service: NamespaceService | AsyncGenerator[NamespaceService], }, interceptors=interceptors, read_max_bytes=read_max_bytes, + compressions=compressions, ) @property @@ -358,7 +360,7 @@ def remove_public_key_from_namespace(self, request: policy_dot_namespaces_dot_na class NamespaceServiceWSGIApplication(ConnectWSGIApplication): - def __init__(self, service: NamespaceServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None) -> None: + def __init__(self, service: NamespaceServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: super().__init__( endpoints={ "/policy.namespaces.NamespaceService/GetNamespace": EndpointSync.unary( @@ -454,6 +456,7 @@ def __init__(self, service: NamespaceServiceSync, interceptors: Iterable[Interce }, interceptors=interceptors, read_max_bytes=read_max_bytes, + compressions=compressions, ) @property diff --git a/packages/otdf-python-proto/src/otdf_python_proto/policy/namespaces/namespaces_pb2.py b/packages/otdf-python-proto/src/otdf_python_proto/policy/namespaces/namespaces_pb2.py index ee40ed23..2ff5b3dc 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/policy/namespaces/namespaces_pb2.py +++ b/packages/otdf-python-proto/src/otdf_python_proto/policy/namespaces/namespaces_pb2.py @@ -28,7 +28,7 @@ from policy import selectors_pb2 as policy_dot_selectors__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"policy/namespaces/namespaces.proto\x12\x11policy.namespaces\x1a\x1b\x62uf/validate/validate.proto\x1a\x13\x63ommon/common.proto\x1a\x14policy/objects.proto\x1a\x16policy/selectors.proto\"\x86\x01\n\x18NamespaceKeyAccessServer\x12+\n\x0cnamespace_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0bnamespaceId\x12\x39\n\x14key_access_server_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x11keyAccessServerId:\x02\x18\x01\"b\n\x0cNamespaceKey\x12.\n\x0cnamespace_id\x18\x01 \x01(\tB\x0b\xbaH\x08r\x03\xb0\x01\x01\xc8\x01\x01R\x0bnamespaceId\x12\"\n\x06key_id\x18\x02 \x01(\tB\x0b\xbaH\x08r\x03\xb0\x01\x01\xc8\x01\x01R\x05keyId\"\xbe\x03\n\x13GetNamespaceRequest\x12\x1d\n\x02id\x18\x01 \x01(\tB\r\x18\x01\xbaH\x08r\x03\xb0\x01\x01\xd8\x01\x01R\x02id\x12-\n\x0cnamespace_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x0bnamespaceId\x12\x1e\n\x03\x66qn\x18\x03 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01H\x00R\x03\x66qn:\xaa\x02\xbaH\xa6\x02\x1a\xa2\x01\n\x10\x65xclusive_fields\x12PEither use deprecated \'id\' field or one of \'namespace_id\' or \'fqn\', but not both\x1a\n\x04rule\x18\x04 \x01(\x0e\x32\x1d.policy.AttributeRuleTypeEnumB\x0b\xbaH\x08\x82\x01\x02\x10\x01\xc8\x01\x01R\x04rule\x12%\n\x06values\x18\x05 \x03(\x0b\x32\r.policy.ValueR\x06values\x12/\n\x06grants\x18\x06 \x03(\x0b\x32\x17.policy.KeyAccessServerR\x06grants\x12\x10\n\x03\x66qn\x18\x07 \x01(\tR\x03\x66qn\x12\x32\n\x06\x61\x63tive\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x06\x61\x63tive\x12/\n\x08kas_keys\x18\t \x03(\x0b\x32\x14.policy.SimpleKasKeyR\x07kasKeys\x12\x43\n\x0f\x61llow_traversal\x18\n \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x0e\x61llowTraversal\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadata\"\x82\x04\n\x05Value\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12/\n\tattribute\x18\x02 \x01(\x0b\x32\x11.policy.AttributeR\tattribute\x12\x14\n\x05value\x18\x03 \x01(\tR\x05value\x12/\n\x06grants\x18\x05 \x03(\x0b\x32\x17.policy.KeyAccessServerR\x06grants\x12\x10\n\x03\x66qn\x18\x06 \x01(\tR\x03\x66qn\x12\x32\n\x06\x61\x63tive\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x06\x61\x63tive\x12\x41\n\x10subject_mappings\x18\x08 \x03(\x0b\x32\x16.policy.SubjectMappingR\x0fsubjectMappings\x12/\n\x08kas_keys\x18\t \x03(\x0b\x32\x14.policy.SimpleKasKeyR\x07kasKeys\x12\x44\n\x11resource_mappings\x18\n \x03(\x0b\x32\x17.policy.ResourceMappingR\x10resourceMappings\x12\x34\n\x0bobligations\x18\x0b \x03(\x0b\x32\x12.policy.ObligationR\x0bobligations\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadataJ\x04\x08\x04\x10\x05R\x07members\"\xd9\x02\n\x06\x41\x63tion\x12\x0e\n\x02id\x18\x03 \x01(\tR\x02id\x12;\n\x08standard\x18\x01 \x01(\x0e\x32\x1d.policy.Action.StandardActionH\x00R\x08standard\x12\x18\n\x06\x63ustom\x18\x02 \x01(\tH\x00R\x06\x63ustom\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12/\n\tnamespace\x18\x05 \x01(\x0b\x32\x11.policy.NamespaceR\tnamespace\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadata\"l\n\x0eStandardAction\x12\x1f\n\x1bSTANDARD_ACTION_UNSPECIFIED\x10\x00\x12\x1b\n\x17STANDARD_ACTION_DECRYPT\x10\x01\x12\x1c\n\x18STANDARD_ACTION_TRANSMIT\x10\x02\x42\x07\n\x05value\"\xb2\x02\n\x0eSubjectMapping\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x36\n\x0f\x61ttribute_value\x18\x02 \x01(\x0b\x32\r.policy.ValueR\x0e\x61ttributeValue\x12O\n\x15subject_condition_set\x18\x03 \x01(\x0b\x32\x1b.policy.SubjectConditionSetR\x13subjectConditionSet\x12(\n\x07\x61\x63tions\x18\x04 \x03(\x0b\x32\x0e.policy.ActionR\x07\x61\x63tions\x12/\n\tnamespace\x18\x05 \x01(\x0b\x32\x11.policy.NamespaceR\tnamespace\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadata\"\xe9\x01\n\tCondition\x12M\n\x1fsubject_external_selector_value\x18\x01 \x01(\tB\x06\xbaH\x03\xc8\x01\x01R\x1csubjectExternalSelectorValue\x12K\n\x08operator\x18\x02 \x01(\x0e\x32\".policy.SubjectMappingOperatorEnumB\x0b\xbaH\x08\x82\x01\x02\x10\x01\xc8\x01\x01R\x08operator\x12@\n\x17subject_external_values\x18\x03 \x03(\tB\x08\xbaH\x05\x92\x01\x02\x08\x01R\x15subjectExternalValues\"\xa7\x01\n\x0e\x43onditionGroup\x12;\n\nconditions\x18\x01 \x03(\x0b\x32\x11.policy.ConditionB\x08\xbaH\x05\x92\x01\x02\x08\x01R\nconditions\x12X\n\x10\x62oolean_operator\x18\x02 \x01(\x0e\x32 .policy.ConditionBooleanTypeEnumB\x0b\xbaH\x08\x82\x01\x02\x10\x01\xc8\x01\x01R\x0f\x62ooleanOperator\"Y\n\nSubjectSet\x12K\n\x10\x63ondition_groups\x18\x01 \x03(\x0b\x32\x16.policy.ConditionGroupB\x08\xbaH\x05\x92\x01\x02\x08\x01R\x0f\x63onditionGroups\"\xc5\x01\n\x13SubjectConditionSet\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12/\n\tnamespace\x18\x02 \x01(\x0b\x32\x11.policy.NamespaceR\tnamespace\x12?\n\x0csubject_sets\x18\x03 \x03(\x0b\x32\x12.policy.SubjectSetB\x08\xbaH\x05\x92\x01\x02\x08\x01R\x0bsubjectSets\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadata\"|\n\x0fSubjectProperty\x12\x42\n\x17\x65xternal_selector_value\x18\x01 \x01(\tB\n\xbaH\x07r\x02\x10\x01\xc8\x01\x01R\x15\x65xternalSelectorValue\x12%\n\x0e\x65xternal_value\x18\x02 \x01(\tR\rexternalValue\"\x9b\x01\n\x14ResourceMappingGroup\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12)\n\x0cnamespace_id\x18\x02 \x01(\tB\x06\xbaH\x03\xc8\x01\x01R\x0bnamespaceId\x12\x1a\n\x04name\x18\x03 \x01(\tB\x06\xbaH\x03\xc8\x01\x01R\x04name\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadata\"\xd9\x01\n\x0fResourceMapping\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12,\n\x08metadata\x18\x02 \x01(\x0b\x32\x10.common.MetadataR\x08metadata\x12>\n\x0f\x61ttribute_value\x18\x03 \x01(\x0b\x32\r.policy.ValueB\x06\xbaH\x03\xc8\x01\x01R\x0e\x61ttributeValue\x12\x14\n\x05terms\x18\x04 \x03(\tR\x05terms\x12\x32\n\x05group\x18\x05 \x01(\x0b\x32\x1c.policy.ResourceMappingGroupR\x05group\"\x85\x05\n\x0fKeyAccessServer\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x87\x03\n\x03uri\x18\x02 \x01(\tB\xf4\x02\xbaH\xf0\x02\xba\x01\xec\x02\n\nuri_format\x12\xcf\x01URI must be a valid URL (e.g., \'https://demo.com/\') followed by additional segments. Each segment must start and end with an alphanumeric character, can contain hyphens, alphanumeric characters, and slashes.\x1a\x8b\x01this.matches(\'^https?://[a-zA-Z0-9]([a-zA-Z0-9\\\\-]{0,61}[a-zA-Z0-9])?(\\\\.[a-zA-Z0-9]([a-zA-Z0-9\\\\-]{0,61}[a-zA-Z0-9])?)*(:[0-9]+)?(/.*)?$\')R\x03uri\x12\x30\n\npublic_key\x18\x03 \x01(\x0b\x32\x11.policy.PublicKeyR\tpublicKey\x12\x33\n\x0bsource_type\x18\x04 \x01(\x0e\x32\x12.policy.SourceTypeR\nsourceType\x12/\n\x08kas_keys\x18\x05 \x03(\x0b\x32\x14.policy.SimpleKasKeyR\x07kasKeys\x12\x12\n\x04name\x18\x14 \x01(\tR\x04name\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadata\"\x97\x02\n\x03Key\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x37\n\tis_active\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x08isActive\x12\x39\n\nwas_mapped\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\twasMapped\x12\x33\n\npublic_key\x18\x04 \x01(\x0b\x32\x14.policy.KasPublicKeyR\tpublicKey\x12)\n\x03kas\x18\x05 \x01(\x0b\x32\x17.policy.KeyAccessServerR\x03kas\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadata\"\x84\x01\n\x0cKasPublicKey\x12\x1c\n\x03pem\x18\x01 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x18\x80@R\x03pem\x12\x1b\n\x03kid\x18\x02 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 R\x03kid\x12\x39\n\x03\x61lg\x18\x03 \x01(\x0e\x32\x1b.policy.KasPublicKeyAlgEnumB\n\xbaH\x07\x82\x01\x04\x10\x01 \x00R\x03\x61lg\";\n\x0fKasPublicKeySet\x12(\n\x04keys\x18\x01 \x03(\x0b\x32\x14.policy.KasPublicKeyR\x04keys\"\xe0\x03\n\tPublicKey\x12\x84\x03\n\x06remote\x18\x01 \x01(\tB\xe9\x02\xbaH\xe5\x02\xba\x01\xe1\x02\n\nuri_format\x12\xcf\x01URI must be a valid URL (e.g., \'https://demo.com/\') followed by additional segments. Each segment must start and end with an alphanumeric character, can contain hyphens, alphanumeric characters, and slashes.\x1a\x80\x01this.matches(\'^https://[a-zA-Z0-9]([a-zA-Z0-9\\\\-]{0,61}[a-zA-Z0-9])?(\\\\.[a-zA-Z0-9]([a-zA-Z0-9\\\\-]{0,61}[a-zA-Z0-9])?)*(/.*)?$\')H\x00R\x06remote\x12\x31\n\x06\x63\x61\x63hed\x18\x03 \x01(\x0b\x32\x17.policy.KasPublicKeySetH\x00R\x06\x63\x61\x63hedB\x0c\n\npublic_keyJ\x04\x08\x02\x10\x03R\x05local\"\xd0\x01\n\x12RegisteredResource\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x37\n\x06values\x18\x03 \x03(\x0b\x32\x1f.policy.RegisteredResourceValueR\x06values\x12/\n\tnamespace\x18\x04 \x01(\x0b\x32\x11.policy.NamespaceR\tnamespace\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadata\"\xca\x03\n\x17RegisteredResourceValue\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value\x12\x36\n\x08resource\x18\x03 \x01(\x0b\x32\x1a.policy.RegisteredResourceR\x08resource\x12l\n\x17\x61\x63tion_attribute_values\x18\x04 \x03(\x0b\x32\x34.policy.RegisteredResourceValue.ActionAttributeValueR\x15\x61\x63tionAttributeValues\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadata\x1a\xb4\x01\n\x14\x41\x63tionAttributeValue\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12&\n\x06\x61\x63tion\x18\x02 \x01(\x0b\x32\x0e.policy.ActionR\x06\x61\x63tion\x12\x36\n\x0f\x61ttribute_value\x18\x03 \x01(\x0b\x32\r.policy.ValueR\x0e\x61ttributeValue\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadata\">\n\x16PolicyEnforcementPoint\x12$\n\tclient_id\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x08\x63lientId\"J\n\x0eRequestContext\x12\x38\n\x03pep\x18\x01 \x01(\x0b\x32\x1e.policy.PolicyEnforcementPointB\x06\xbaH\x03\xc8\x01\x01R\x03pep\"\xd2\x01\n\nObligation\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12/\n\tnamespace\x18\x02 \x01(\x0b\x32\x11.policy.NamespaceR\tnamespace\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12/\n\x06values\x18\x04 \x03(\x0b\x32\x17.policy.ObligationValueR\x06values\x12\x10\n\x03\x66qn\x18\x05 \x01(\tR\x03\x66qn\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadata\"\xe2\x01\n\x0fObligationValue\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x32\n\nobligation\x18\x02 \x01(\x0b\x32\x12.policy.ObligationR\nobligation\x12\x14\n\x05value\x18\x03 \x01(\tR\x05value\x12\x35\n\x08triggers\x18\x04 \x03(\x0b\x32\x19.policy.ObligationTriggerR\x08triggers\x12\x10\n\x03\x66qn\x18\x05 \x01(\tR\x03\x66qn\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadata\"\xa7\x02\n\x11ObligationTrigger\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x42\n\x10obligation_value\x18\x02 \x01(\x0b\x32\x17.policy.ObligationValueR\x0fobligationValue\x12&\n\x06\x61\x63tion\x18\x03 \x01(\x0b\x32\x0e.policy.ActionR\x06\x61\x63tion\x12\x36\n\x0f\x61ttribute_value\x18\x04 \x01(\x0b\x32\r.policy.ValueR\x0e\x61ttributeValue\x12\x30\n\x07\x63ontext\x18\x05 \x03(\x0b\x32\x16.policy.RequestContextR\x07\x63ontext\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadata\"a\n\x06KasKey\x12\x15\n\x06kas_id\x18\x01 \x01(\tR\x05kasId\x12\'\n\x03key\x18\x02 \x01(\x0b\x32\x15.policy.AsymmetricKeyR\x03key\x12\x17\n\x07kas_uri\x18\x03 \x01(\tR\x06kasUri\")\n\x0cPublicKeyCtx\x12\x19\n\x03pem\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x03pem\"P\n\rPrivateKeyCtx\x12\x1e\n\x06key_id\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05keyId\x12\x1f\n\x0bwrapped_key\x18\x02 \x01(\tR\nwrappedKey\"\xd1\x03\n\rAsymmetricKey\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x15\n\x06key_id\x18\x02 \x01(\tR\x05keyId\x12\x36\n\rkey_algorithm\x18\x03 \x01(\x0e\x32\x11.policy.AlgorithmR\x0ckeyAlgorithm\x12\x30\n\nkey_status\x18\x04 \x01(\x0e\x32\x11.policy.KeyStatusR\tkeyStatus\x12*\n\x08key_mode\x18\x05 \x01(\x0e\x32\x0f.policy.KeyModeR\x07keyMode\x12:\n\x0epublic_key_ctx\x18\x06 \x01(\x0b\x32\x14.policy.PublicKeyCtxR\x0cpublicKeyCtx\x12=\n\x0fprivate_key_ctx\x18\x07 \x01(\x0b\x32\x15.policy.PrivateKeyCtxR\rprivateKeyCtx\x12\x42\n\x0fprovider_config\x18\x08 \x01(\x0b\x32\x19.policy.KeyProviderConfigR\x0eproviderConfig\x12\x16\n\x06legacy\x18\t \x01(\x08R\x06legacy\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadata\"\x9e\x02\n\x0cSymmetricKey\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x15\n\x06key_id\x18\x02 \x01(\tR\x05keyId\x12\x30\n\nkey_status\x18\x03 \x01(\x0e\x32\x11.policy.KeyStatusR\tkeyStatus\x12*\n\x08key_mode\x18\x04 \x01(\x0e\x32\x0f.policy.KeyModeR\x07keyMode\x12\x17\n\x07key_ctx\x18\x05 \x01(\x0cR\x06keyCtx\x12\x42\n\x0fprovider_config\x18\x06 \x01(\x0b\x32\x19.policy.KeyProviderConfigR\x0eproviderConfig\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadata*\xb3\x01\n\x15\x41ttributeRuleTypeEnum\x12(\n$ATTRIBUTE_RULE_TYPE_ENUM_UNSPECIFIED\x10\x00\x12#\n\x1f\x41TTRIBUTE_RULE_TYPE_ENUM_ALL_OF\x10\x01\x12#\n\x1f\x41TTRIBUTE_RULE_TYPE_ENUM_ANY_OF\x10\x02\x12&\n\"ATTRIBUTE_RULE_TYPE_ENUM_HIERARCHY\x10\x03*\xca\x01\n\x1aSubjectMappingOperatorEnum\x12-\n)SUBJECT_MAPPING_OPERATOR_ENUM_UNSPECIFIED\x10\x00\x12$\n SUBJECT_MAPPING_OPERATOR_ENUM_IN\x10\x01\x12(\n$SUBJECT_MAPPING_OPERATOR_ENUM_NOT_IN\x10\x02\x12-\n)SUBJECT_MAPPING_OPERATOR_ENUM_IN_CONTAINS\x10\x03*\x90\x01\n\x18\x43onditionBooleanTypeEnum\x12+\n\'CONDITION_BOOLEAN_TYPE_ENUM_UNSPECIFIED\x10\x00\x12#\n\x1f\x43ONDITION_BOOLEAN_TYPE_ENUM_AND\x10\x01\x12\"\n\x1e\x43ONDITION_BOOLEAN_TYPE_ENUM_OR\x10\x02*]\n\nSourceType\x12\x1b\n\x17SOURCE_TYPE_UNSPECIFIED\x10\x00\x12\x18\n\x14SOURCE_TYPE_INTERNAL\x10\x01\x12\x18\n\x14SOURCE_TYPE_EXTERNAL\x10\x02*\x88\x02\n\x13KasPublicKeyAlgEnum\x12\'\n#KAS_PUBLIC_KEY_ALG_ENUM_UNSPECIFIED\x10\x00\x12$\n KAS_PUBLIC_KEY_ALG_ENUM_RSA_2048\x10\x01\x12$\n KAS_PUBLIC_KEY_ALG_ENUM_RSA_4096\x10\x02\x12(\n$KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP256R1\x10\x05\x12(\n$KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP384R1\x10\x06\x12(\n$KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP521R1\x10\x07*\x9b\x01\n\tAlgorithm\x12\x19\n\x15\x41LGORITHM_UNSPECIFIED\x10\x00\x12\x16\n\x12\x41LGORITHM_RSA_2048\x10\x01\x12\x16\n\x12\x41LGORITHM_RSA_4096\x10\x02\x12\x15\n\x11\x41LGORITHM_EC_P256\x10\x03\x12\x15\n\x11\x41LGORITHM_EC_P384\x10\x04\x12\x15\n\x11\x41LGORITHM_EC_P521\x10\x05*V\n\tKeyStatus\x12\x1a\n\x16KEY_STATUS_UNSPECIFIED\x10\x00\x12\x15\n\x11KEY_STATUS_ACTIVE\x10\x01\x12\x16\n\x12KEY_STATUS_ROTATED\x10\x02*\x94\x01\n\x07KeyMode\x12\x18\n\x14KEY_MODE_UNSPECIFIED\x10\x00\x12\x1c\n\x18KEY_MODE_CONFIG_ROOT_KEY\x10\x01\x12\x1e\n\x1aKEY_MODE_PROVIDER_ROOT_KEY\x10\x02\x12\x13\n\x0fKEY_MODE_REMOTE\x10\x03\x12\x1c\n\x18KEY_MODE_PUBLIC_KEY_ONLY\x10\x04\x42R\n\ncom.policyB\x0cObjectsProtoP\x01\xa2\x02\x03PXX\xaa\x02\x06Policy\xca\x02\x06Policy\xe2\x02\x12Policy\\GPBMetadata\xea\x02\x06Policyb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14policy/objects.proto\x12\x06policy\x1a\x1b\x62uf/validate/validate.proto\x1a\x13\x63ommon/common.proto\x1a\x1egoogle/protobuf/wrappers.proto\"i\n\x12SimpleKasPublicKey\x12/\n\talgorithm\x18\x01 \x01(\x0e\x32\x11.policy.AlgorithmR\talgorithm\x12\x10\n\x03kid\x18\x02 \x01(\tR\x03kid\x12\x10\n\x03pem\x18\x03 \x01(\tR\x03pem\"y\n\x0cSimpleKasKey\x12\x17\n\x07kas_uri\x18\x01 \x01(\tR\x06kasUri\x12\x39\n\npublic_key\x18\x02 \x01(\x0b\x32\x1a.policy.SimpleKasPublicKeyR\tpublicKey\x12\x15\n\x06kas_id\x18\x03 \x01(\tR\x05kasId\"\xa0\x01\n\x11KeyProviderConfig\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x1f\n\x0b\x63onfig_json\x18\x03 \x01(\x0cR\nconfigJson\x12\x18\n\x07manager\x18\x04 \x01(\tR\x07manager\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadata\"\x85\x02\n\tNamespace\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x10\n\x03\x66qn\x18\x03 \x01(\tR\x03\x66qn\x12\x32\n\x06\x61\x63tive\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x06\x61\x63tive\x12,\n\x08metadata\x18\x05 \x01(\x0b\x32\x10.common.MetadataR\x08metadata\x12/\n\x06grants\x18\x06 \x03(\x0b\x32\x17.policy.KeyAccessServerR\x06grants\x12/\n\x08kas_keys\x18\x07 \x03(\x0b\x32\x14.policy.SimpleKasKeyR\x07kasKeys\"\xe2\x03\n\tAttribute\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12/\n\tnamespace\x18\x02 \x01(\x0b\x32\x11.policy.NamespaceR\tnamespace\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12>\n\x04rule\x18\x04 \x01(\x0e\x32\x1d.policy.AttributeRuleTypeEnumB\x0b\xbaH\x08\x82\x01\x02\x10\x01\xc8\x01\x01R\x04rule\x12%\n\x06values\x18\x05 \x03(\x0b\x32\r.policy.ValueR\x06values\x12/\n\x06grants\x18\x06 \x03(\x0b\x32\x17.policy.KeyAccessServerR\x06grants\x12\x10\n\x03\x66qn\x18\x07 \x01(\tR\x03\x66qn\x12\x32\n\x06\x61\x63tive\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x06\x61\x63tive\x12/\n\x08kas_keys\x18\t \x03(\x0b\x32\x14.policy.SimpleKasKeyR\x07kasKeys\x12\x43\n\x0f\x61llow_traversal\x18\n \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x0e\x61llowTraversal\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadata\"\x82\x04\n\x05Value\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12/\n\tattribute\x18\x02 \x01(\x0b\x32\x11.policy.AttributeR\tattribute\x12\x14\n\x05value\x18\x03 \x01(\tR\x05value\x12/\n\x06grants\x18\x05 \x03(\x0b\x32\x17.policy.KeyAccessServerR\x06grants\x12\x10\n\x03\x66qn\x18\x06 \x01(\tR\x03\x66qn\x12\x32\n\x06\x61\x63tive\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x06\x61\x63tive\x12\x41\n\x10subject_mappings\x18\x08 \x03(\x0b\x32\x16.policy.SubjectMappingR\x0fsubjectMappings\x12/\n\x08kas_keys\x18\t \x03(\x0b\x32\x14.policy.SimpleKasKeyR\x07kasKeys\x12\x44\n\x11resource_mappings\x18\n \x03(\x0b\x32\x17.policy.ResourceMappingR\x10resourceMappings\x12\x34\n\x0bobligations\x18\x0b \x03(\x0b\x32\x12.policy.ObligationR\x0bobligations\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadataJ\x04\x08\x04\x10\x05R\x07members\"\xd9\x02\n\x06\x41\x63tion\x12\x0e\n\x02id\x18\x03 \x01(\tR\x02id\x12;\n\x08standard\x18\x01 \x01(\x0e\x32\x1d.policy.Action.StandardActionH\x00R\x08standard\x12\x18\n\x06\x63ustom\x18\x02 \x01(\tH\x00R\x06\x63ustom\x12\x12\n\x04name\x18\x04 \x01(\tR\x04name\x12/\n\tnamespace\x18\x05 \x01(\x0b\x32\x11.policy.NamespaceR\tnamespace\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadata\"l\n\x0eStandardAction\x12\x1f\n\x1bSTANDARD_ACTION_UNSPECIFIED\x10\x00\x12\x1b\n\x17STANDARD_ACTION_DECRYPT\x10\x01\x12\x1c\n\x18STANDARD_ACTION_TRANSMIT\x10\x02\x42\x07\n\x05value\"\xb2\x02\n\x0eSubjectMapping\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x36\n\x0f\x61ttribute_value\x18\x02 \x01(\x0b\x32\r.policy.ValueR\x0e\x61ttributeValue\x12O\n\x15subject_condition_set\x18\x03 \x01(\x0b\x32\x1b.policy.SubjectConditionSetR\x13subjectConditionSet\x12(\n\x07\x61\x63tions\x18\x04 \x03(\x0b\x32\x0e.policy.ActionR\x07\x61\x63tions\x12/\n\tnamespace\x18\x05 \x01(\x0b\x32\x11.policy.NamespaceR\tnamespace\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadata\"\xe9\x01\n\tCondition\x12M\n\x1fsubject_external_selector_value\x18\x01 \x01(\tB\x06\xbaH\x03\xc8\x01\x01R\x1csubjectExternalSelectorValue\x12K\n\x08operator\x18\x02 \x01(\x0e\x32\".policy.SubjectMappingOperatorEnumB\x0b\xbaH\x08\x82\x01\x02\x10\x01\xc8\x01\x01R\x08operator\x12@\n\x17subject_external_values\x18\x03 \x03(\tB\x08\xbaH\x05\x92\x01\x02\x08\x01R\x15subjectExternalValues\"\xa7\x01\n\x0e\x43onditionGroup\x12;\n\nconditions\x18\x01 \x03(\x0b\x32\x11.policy.ConditionB\x08\xbaH\x05\x92\x01\x02\x08\x01R\nconditions\x12X\n\x10\x62oolean_operator\x18\x02 \x01(\x0e\x32 .policy.ConditionBooleanTypeEnumB\x0b\xbaH\x08\x82\x01\x02\x10\x01\xc8\x01\x01R\x0f\x62ooleanOperator\"Y\n\nSubjectSet\x12K\n\x10\x63ondition_groups\x18\x01 \x03(\x0b\x32\x16.policy.ConditionGroupB\x08\xbaH\x05\x92\x01\x02\x08\x01R\x0f\x63onditionGroups\"\xc5\x01\n\x13SubjectConditionSet\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12/\n\tnamespace\x18\x02 \x01(\x0b\x32\x11.policy.NamespaceR\tnamespace\x12?\n\x0csubject_sets\x18\x03 \x03(\x0b\x32\x12.policy.SubjectSetB\x08\xbaH\x05\x92\x01\x02\x08\x01R\x0bsubjectSets\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadata\"|\n\x0fSubjectProperty\x12\x42\n\x17\x65xternal_selector_value\x18\x01 \x01(\tB\n\xbaH\x07r\x02\x10\x01\xc8\x01\x01R\x15\x65xternalSelectorValue\x12%\n\x0e\x65xternal_value\x18\x02 \x01(\tR\rexternalValue\"\xad\x01\n\x14ResourceMappingGroup\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12)\n\x0cnamespace_id\x18\x02 \x01(\tB\x06\xbaH\x03\xc8\x01\x01R\x0bnamespaceId\x12\x1a\n\x04name\x18\x03 \x01(\tB\x06\xbaH\x03\xc8\x01\x01R\x04name\x12\x10\n\x03\x66qn\x18\x04 \x01(\tR\x03\x66qn\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadata\"\xd9\x01\n\x0fResourceMapping\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12,\n\x08metadata\x18\x02 \x01(\x0b\x32\x10.common.MetadataR\x08metadata\x12>\n\x0f\x61ttribute_value\x18\x03 \x01(\x0b\x32\r.policy.ValueB\x06\xbaH\x03\xc8\x01\x01R\x0e\x61ttributeValue\x12\x14\n\x05terms\x18\x04 \x03(\tR\x05terms\x12\x32\n\x05group\x18\x05 \x01(\x0b\x32\x1c.policy.ResourceMappingGroupR\x05group\"\x85\x05\n\x0fKeyAccessServer\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x87\x03\n\x03uri\x18\x02 \x01(\tB\xf4\x02\xbaH\xf0\x02\xba\x01\xec\x02\n\nuri_format\x12\xcf\x01URI must be a valid URL (e.g., \'https://demo.com/\') followed by additional segments. Each segment must start and end with an alphanumeric character, can contain hyphens, alphanumeric characters, and slashes.\x1a\x8b\x01this.matches(\'^https?://[a-zA-Z0-9]([a-zA-Z0-9\\\\-]{0,61}[a-zA-Z0-9])?(\\\\.[a-zA-Z0-9]([a-zA-Z0-9\\\\-]{0,61}[a-zA-Z0-9])?)*(:[0-9]+)?(/.*)?$\')R\x03uri\x12\x30\n\npublic_key\x18\x03 \x01(\x0b\x32\x11.policy.PublicKeyR\tpublicKey\x12\x33\n\x0bsource_type\x18\x04 \x01(\x0e\x32\x12.policy.SourceTypeR\nsourceType\x12/\n\x08kas_keys\x18\x05 \x03(\x0b\x32\x14.policy.SimpleKasKeyR\x07kasKeys\x12\x12\n\x04name\x18\x14 \x01(\tR\x04name\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadata\"\x97\x02\n\x03Key\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x37\n\tis_active\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\x08isActive\x12\x39\n\nwas_mapped\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.BoolValueR\twasMapped\x12\x33\n\npublic_key\x18\x04 \x01(\x0b\x32\x14.policy.KasPublicKeyR\tpublicKey\x12)\n\x03kas\x18\x05 \x01(\x0b\x32\x17.policy.KeyAccessServerR\x03kas\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadata\"\x84\x01\n\x0cKasPublicKey\x12\x1c\n\x03pem\x18\x01 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x18\x80@R\x03pem\x12\x1b\n\x03kid\x18\x02 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18 R\x03kid\x12\x39\n\x03\x61lg\x18\x03 \x01(\x0e\x32\x1b.policy.KasPublicKeyAlgEnumB\n\xbaH\x07\x82\x01\x04\x10\x01 \x00R\x03\x61lg\";\n\x0fKasPublicKeySet\x12(\n\x04keys\x18\x01 \x03(\x0b\x32\x14.policy.KasPublicKeyR\x04keys\"\xe0\x03\n\tPublicKey\x12\x84\x03\n\x06remote\x18\x01 \x01(\tB\xe9\x02\xbaH\xe5\x02\xba\x01\xe1\x02\n\nuri_format\x12\xcf\x01URI must be a valid URL (e.g., \'https://demo.com/\') followed by additional segments. Each segment must start and end with an alphanumeric character, can contain hyphens, alphanumeric characters, and slashes.\x1a\x80\x01this.matches(\'^https://[a-zA-Z0-9]([a-zA-Z0-9\\\\-]{0,61}[a-zA-Z0-9])?(\\\\.[a-zA-Z0-9]([a-zA-Z0-9\\\\-]{0,61}[a-zA-Z0-9])?)*(/.*)?$\')H\x00R\x06remote\x12\x31\n\x06\x63\x61\x63hed\x18\x03 \x01(\x0b\x32\x17.policy.KasPublicKeySetH\x00R\x06\x63\x61\x63hedB\x0c\n\npublic_keyJ\x04\x08\x02\x10\x03R\x05local\"\xd0\x01\n\x12RegisteredResource\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12\x37\n\x06values\x18\x03 \x03(\x0b\x32\x1f.policy.RegisteredResourceValueR\x06values\x12/\n\tnamespace\x18\x04 \x01(\x0b\x32\x11.policy.NamespaceR\tnamespace\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadata\"\xdc\x03\n\x17RegisteredResourceValue\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value\x12\x36\n\x08resource\x18\x03 \x01(\x0b\x32\x1a.policy.RegisteredResourceR\x08resource\x12l\n\x17\x61\x63tion_attribute_values\x18\x04 \x03(\x0b\x32\x34.policy.RegisteredResourceValue.ActionAttributeValueR\x15\x61\x63tionAttributeValues\x12\x10\n\x03\x66qn\x18\x05 \x01(\tR\x03\x66qn\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadata\x1a\xb4\x01\n\x14\x41\x63tionAttributeValue\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12&\n\x06\x61\x63tion\x18\x02 \x01(\x0b\x32\x0e.policy.ActionR\x06\x61\x63tion\x12\x36\n\x0f\x61ttribute_value\x18\x03 \x01(\x0b\x32\r.policy.ValueR\x0e\x61ttributeValue\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadata\">\n\x16PolicyEnforcementPoint\x12$\n\tclient_id\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x08\x63lientId\"J\n\x0eRequestContext\x12\x38\n\x03pep\x18\x01 \x01(\x0b\x32\x1e.policy.PolicyEnforcementPointB\x06\xbaH\x03\xc8\x01\x01R\x03pep\"\xd2\x01\n\nObligation\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12/\n\tnamespace\x18\x02 \x01(\x0b\x32\x11.policy.NamespaceR\tnamespace\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12/\n\x06values\x18\x04 \x03(\x0b\x32\x17.policy.ObligationValueR\x06values\x12\x10\n\x03\x66qn\x18\x05 \x01(\tR\x03\x66qn\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadata\"\xe2\x01\n\x0fObligationValue\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x32\n\nobligation\x18\x02 \x01(\x0b\x32\x12.policy.ObligationR\nobligation\x12\x14\n\x05value\x18\x03 \x01(\tR\x05value\x12\x35\n\x08triggers\x18\x04 \x03(\x0b\x32\x19.policy.ObligationTriggerR\x08triggers\x12\x10\n\x03\x66qn\x18\x05 \x01(\tR\x03\x66qn\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadata\"\xd8\x02\n\x11ObligationTrigger\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x42\n\x10obligation_value\x18\x02 \x01(\x0b\x32\x17.policy.ObligationValueR\x0fobligationValue\x12&\n\x06\x61\x63tion\x18\x03 \x01(\x0b\x32\x0e.policy.ActionR\x06\x61\x63tion\x12\x36\n\x0f\x61ttribute_value\x18\x04 \x01(\x0b\x32\r.policy.ValueR\x0e\x61ttributeValue\x12\x30\n\x07\x63ontext\x18\x05 \x03(\x0b\x32\x16.policy.RequestContextR\x07\x63ontext\x12/\n\tnamespace\x18\x0b \x01(\x0b\x32\x11.policy.NamespaceR\tnamespace\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadata\"a\n\x06KasKey\x12\x15\n\x06kas_id\x18\x01 \x01(\tR\x05kasId\x12\'\n\x03key\x18\x02 \x01(\x0b\x32\x15.policy.AsymmetricKeyR\x03key\x12\x17\n\x07kas_uri\x18\x03 \x01(\tR\x06kasUri\")\n\x0cPublicKeyCtx\x12\x19\n\x03pem\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x03pem\"P\n\rPrivateKeyCtx\x12\x1e\n\x06key_id\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x05keyId\x12\x1f\n\x0bwrapped_key\x18\x02 \x01(\tR\nwrappedKey\"\xd1\x03\n\rAsymmetricKey\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x15\n\x06key_id\x18\x02 \x01(\tR\x05keyId\x12\x36\n\rkey_algorithm\x18\x03 \x01(\x0e\x32\x11.policy.AlgorithmR\x0ckeyAlgorithm\x12\x30\n\nkey_status\x18\x04 \x01(\x0e\x32\x11.policy.KeyStatusR\tkeyStatus\x12*\n\x08key_mode\x18\x05 \x01(\x0e\x32\x0f.policy.KeyModeR\x07keyMode\x12:\n\x0epublic_key_ctx\x18\x06 \x01(\x0b\x32\x14.policy.PublicKeyCtxR\x0cpublicKeyCtx\x12=\n\x0fprivate_key_ctx\x18\x07 \x01(\x0b\x32\x15.policy.PrivateKeyCtxR\rprivateKeyCtx\x12\x42\n\x0fprovider_config\x18\x08 \x01(\x0b\x32\x19.policy.KeyProviderConfigR\x0eproviderConfig\x12\x16\n\x06legacy\x18\t \x01(\x08R\x06legacy\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadata\"\x9e\x02\n\x0cSymmetricKey\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x15\n\x06key_id\x18\x02 \x01(\tR\x05keyId\x12\x30\n\nkey_status\x18\x03 \x01(\x0e\x32\x11.policy.KeyStatusR\tkeyStatus\x12*\n\x08key_mode\x18\x04 \x01(\x0e\x32\x0f.policy.KeyModeR\x07keyMode\x12\x17\n\x07key_ctx\x18\x05 \x01(\x0cR\x06keyCtx\x12\x42\n\x0fprovider_config\x18\x06 \x01(\x0b\x32\x19.policy.KeyProviderConfigR\x0eproviderConfig\x12,\n\x08metadata\x18\x64 \x01(\x0b\x32\x10.common.MetadataR\x08metadata*\xb3\x01\n\x15\x41ttributeRuleTypeEnum\x12(\n$ATTRIBUTE_RULE_TYPE_ENUM_UNSPECIFIED\x10\x00\x12#\n\x1f\x41TTRIBUTE_RULE_TYPE_ENUM_ALL_OF\x10\x01\x12#\n\x1f\x41TTRIBUTE_RULE_TYPE_ENUM_ANY_OF\x10\x02\x12&\n\"ATTRIBUTE_RULE_TYPE_ENUM_HIERARCHY\x10\x03*\xca\x01\n\x1aSubjectMappingOperatorEnum\x12-\n)SUBJECT_MAPPING_OPERATOR_ENUM_UNSPECIFIED\x10\x00\x12$\n SUBJECT_MAPPING_OPERATOR_ENUM_IN\x10\x01\x12(\n$SUBJECT_MAPPING_OPERATOR_ENUM_NOT_IN\x10\x02\x12-\n)SUBJECT_MAPPING_OPERATOR_ENUM_IN_CONTAINS\x10\x03*\x90\x01\n\x18\x43onditionBooleanTypeEnum\x12+\n\'CONDITION_BOOLEAN_TYPE_ENUM_UNSPECIFIED\x10\x00\x12#\n\x1f\x43ONDITION_BOOLEAN_TYPE_ENUM_AND\x10\x01\x12\"\n\x1e\x43ONDITION_BOOLEAN_TYPE_ENUM_OR\x10\x02*]\n\nSourceType\x12\x1b\n\x17SOURCE_TYPE_UNSPECIFIED\x10\x00\x12\x18\n\x14SOURCE_TYPE_INTERNAL\x10\x01\x12\x18\n\x14SOURCE_TYPE_EXTERNAL\x10\x02*\x9b\x03\n\x13KasPublicKeyAlgEnum\x12\'\n#KAS_PUBLIC_KEY_ALG_ENUM_UNSPECIFIED\x10\x00\x12$\n KAS_PUBLIC_KEY_ALG_ENUM_RSA_2048\x10\x01\x12$\n KAS_PUBLIC_KEY_ALG_ENUM_RSA_4096\x10\x02\x12(\n$KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP256R1\x10\x05\x12(\n$KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP384R1\x10\x06\x12(\n$KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP521R1\x10\x07\x12&\n\"KAS_PUBLIC_KEY_ALG_ENUM_HPQT_XWING\x10\n\x12\x33\n/KAS_PUBLIC_KEY_ALG_ENUM_HPQT_SECP256R1_MLKEM768\x10\x0b\x12\x34\n0KAS_PUBLIC_KEY_ALG_ENUM_HPQT_SECP384R1_MLKEM1024\x10\x0c*\x84\x02\n\tAlgorithm\x12\x19\n\x15\x41LGORITHM_UNSPECIFIED\x10\x00\x12\x16\n\x12\x41LGORITHM_RSA_2048\x10\x01\x12\x16\n\x12\x41LGORITHM_RSA_4096\x10\x02\x12\x15\n\x11\x41LGORITHM_EC_P256\x10\x03\x12\x15\n\x11\x41LGORITHM_EC_P384\x10\x04\x12\x15\n\x11\x41LGORITHM_EC_P521\x10\x05\x12\x18\n\x14\x41LGORITHM_HPQT_XWING\x10\x06\x12%\n!ALGORITHM_HPQT_SECP256R1_MLKEM768\x10\x07\x12&\n\"ALGORITHM_HPQT_SECP384R1_MLKEM1024\x10\x08*V\n\tKeyStatus\x12\x1a\n\x16KEY_STATUS_UNSPECIFIED\x10\x00\x12\x15\n\x11KEY_STATUS_ACTIVE\x10\x01\x12\x16\n\x12KEY_STATUS_ROTATED\x10\x02*\x94\x01\n\x07KeyMode\x12\x18\n\x14KEY_MODE_UNSPECIFIED\x10\x00\x12\x1c\n\x18KEY_MODE_CONFIG_ROOT_KEY\x10\x01\x12\x1e\n\x1aKEY_MODE_PROVIDER_ROOT_KEY\x10\x02\x12\x13\n\x0fKEY_MODE_REMOTE\x10\x03\x12\x1c\n\x18KEY_MODE_PUBLIC_KEY_ONLY\x10\x04\x42R\n\ncom.policyB\x0cObjectsProtoP\x01\xa2\x02\x03PXX\xaa\x02\x06Policy\xca\x02\x06Policy\xe2\x02\x12Policy\\GPBMetadata\xea\x02\x06Policyb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -77,22 +77,22 @@ _globals['_PUBLICKEYCTX'].fields_by_name['pem']._serialized_options = b'\272H\004r\002\020\001' _globals['_PRIVATEKEYCTX'].fields_by_name['key_id']._loaded_options = None _globals['_PRIVATEKEYCTX'].fields_by_name['key_id']._serialized_options = b'\272H\004r\002\020\001' - _globals['_ATTRIBUTERULETYPEENUM']._serialized_start=7774 - _globals['_ATTRIBUTERULETYPEENUM']._serialized_end=7953 - _globals['_SUBJECTMAPPINGOPERATORENUM']._serialized_start=7956 - _globals['_SUBJECTMAPPINGOPERATORENUM']._serialized_end=8158 - _globals['_CONDITIONBOOLEANTYPEENUM']._serialized_start=8161 - _globals['_CONDITIONBOOLEANTYPEENUM']._serialized_end=8305 - _globals['_SOURCETYPE']._serialized_start=8307 - _globals['_SOURCETYPE']._serialized_end=8400 - _globals['_KASPUBLICKEYALGENUM']._serialized_start=8403 - _globals['_KASPUBLICKEYALGENUM']._serialized_end=8667 - _globals['_ALGORITHM']._serialized_start=8670 - _globals['_ALGORITHM']._serialized_end=8825 - _globals['_KEYSTATUS']._serialized_start=8827 - _globals['_KEYSTATUS']._serialized_end=8913 - _globals['_KEYMODE']._serialized_start=8916 - _globals['_KEYMODE']._serialized_end=9064 + _globals['_ATTRIBUTERULETYPEENUM']._serialized_start=7859 + _globals['_ATTRIBUTERULETYPEENUM']._serialized_end=8038 + _globals['_SUBJECTMAPPINGOPERATORENUM']._serialized_start=8041 + _globals['_SUBJECTMAPPINGOPERATORENUM']._serialized_end=8243 + _globals['_CONDITIONBOOLEANTYPEENUM']._serialized_start=8246 + _globals['_CONDITIONBOOLEANTYPEENUM']._serialized_end=8390 + _globals['_SOURCETYPE']._serialized_start=8392 + _globals['_SOURCETYPE']._serialized_end=8485 + _globals['_KASPUBLICKEYALGENUM']._serialized_start=8488 + _globals['_KASPUBLICKEYALGENUM']._serialized_end=8899 + _globals['_ALGORITHM']._serialized_start=8902 + _globals['_ALGORITHM']._serialized_end=9162 + _globals['_KEYSTATUS']._serialized_start=9164 + _globals['_KEYSTATUS']._serialized_end=9250 + _globals['_KEYMODE']._serialized_start=9253 + _globals['_KEYMODE']._serialized_end=9401 _globals['_SIMPLEKASPUBLICKEY']._serialized_start=114 _globals['_SIMPLEKASPUBLICKEY']._serialized_end=219 _globals['_SIMPLEKASKEY']._serialized_start=221 @@ -122,43 +122,43 @@ _globals['_SUBJECTPROPERTY']._serialized_start=3127 _globals['_SUBJECTPROPERTY']._serialized_end=3251 _globals['_RESOURCEMAPPINGGROUP']._serialized_start=3254 - _globals['_RESOURCEMAPPINGGROUP']._serialized_end=3409 - _globals['_RESOURCEMAPPING']._serialized_start=3412 - _globals['_RESOURCEMAPPING']._serialized_end=3629 - _globals['_KEYACCESSSERVER']._serialized_start=3632 - _globals['_KEYACCESSSERVER']._serialized_end=4277 - _globals['_KEY']._serialized_start=4280 - _globals['_KEY']._serialized_end=4559 - _globals['_KASPUBLICKEY']._serialized_start=4562 - _globals['_KASPUBLICKEY']._serialized_end=4694 - _globals['_KASPUBLICKEYSET']._serialized_start=4696 - _globals['_KASPUBLICKEYSET']._serialized_end=4755 - _globals['_PUBLICKEY']._serialized_start=4758 - _globals['_PUBLICKEY']._serialized_end=5238 - _globals['_REGISTEREDRESOURCE']._serialized_start=5241 - _globals['_REGISTEREDRESOURCE']._serialized_end=5449 - _globals['_REGISTEREDRESOURCEVALUE']._serialized_start=5452 - _globals['_REGISTEREDRESOURCEVALUE']._serialized_end=5910 - _globals['_REGISTEREDRESOURCEVALUE_ACTIONATTRIBUTEVALUE']._serialized_start=5730 - _globals['_REGISTEREDRESOURCEVALUE_ACTIONATTRIBUTEVALUE']._serialized_end=5910 - _globals['_POLICYENFORCEMENTPOINT']._serialized_start=5912 - _globals['_POLICYENFORCEMENTPOINT']._serialized_end=5974 - _globals['_REQUESTCONTEXT']._serialized_start=5976 - _globals['_REQUESTCONTEXT']._serialized_end=6050 - _globals['_OBLIGATION']._serialized_start=6053 - _globals['_OBLIGATION']._serialized_end=6263 - _globals['_OBLIGATIONVALUE']._serialized_start=6266 - _globals['_OBLIGATIONVALUE']._serialized_end=6492 - _globals['_OBLIGATIONTRIGGER']._serialized_start=6495 - _globals['_OBLIGATIONTRIGGER']._serialized_end=6790 - _globals['_KASKEY']._serialized_start=6792 - _globals['_KASKEY']._serialized_end=6889 - _globals['_PUBLICKEYCTX']._serialized_start=6891 - _globals['_PUBLICKEYCTX']._serialized_end=6932 - _globals['_PRIVATEKEYCTX']._serialized_start=6934 - _globals['_PRIVATEKEYCTX']._serialized_end=7014 - _globals['_ASYMMETRICKEY']._serialized_start=7017 - _globals['_ASYMMETRICKEY']._serialized_end=7482 - _globals['_SYMMETRICKEY']._serialized_start=7485 - _globals['_SYMMETRICKEY']._serialized_end=7771 + _globals['_RESOURCEMAPPINGGROUP']._serialized_end=3427 + _globals['_RESOURCEMAPPING']._serialized_start=3430 + _globals['_RESOURCEMAPPING']._serialized_end=3647 + _globals['_KEYACCESSSERVER']._serialized_start=3650 + _globals['_KEYACCESSSERVER']._serialized_end=4295 + _globals['_KEY']._serialized_start=4298 + _globals['_KEY']._serialized_end=4577 + _globals['_KASPUBLICKEY']._serialized_start=4580 + _globals['_KASPUBLICKEY']._serialized_end=4712 + _globals['_KASPUBLICKEYSET']._serialized_start=4714 + _globals['_KASPUBLICKEYSET']._serialized_end=4773 + _globals['_PUBLICKEY']._serialized_start=4776 + _globals['_PUBLICKEY']._serialized_end=5256 + _globals['_REGISTEREDRESOURCE']._serialized_start=5259 + _globals['_REGISTEREDRESOURCE']._serialized_end=5467 + _globals['_REGISTEREDRESOURCEVALUE']._serialized_start=5470 + _globals['_REGISTEREDRESOURCEVALUE']._serialized_end=5946 + _globals['_REGISTEREDRESOURCEVALUE_ACTIONATTRIBUTEVALUE']._serialized_start=5766 + _globals['_REGISTEREDRESOURCEVALUE_ACTIONATTRIBUTEVALUE']._serialized_end=5946 + _globals['_POLICYENFORCEMENTPOINT']._serialized_start=5948 + _globals['_POLICYENFORCEMENTPOINT']._serialized_end=6010 + _globals['_REQUESTCONTEXT']._serialized_start=6012 + _globals['_REQUESTCONTEXT']._serialized_end=6086 + _globals['_OBLIGATION']._serialized_start=6089 + _globals['_OBLIGATION']._serialized_end=6299 + _globals['_OBLIGATIONVALUE']._serialized_start=6302 + _globals['_OBLIGATIONVALUE']._serialized_end=6528 + _globals['_OBLIGATIONTRIGGER']._serialized_start=6531 + _globals['_OBLIGATIONTRIGGER']._serialized_end=6875 + _globals['_KASKEY']._serialized_start=6877 + _globals['_KASKEY']._serialized_end=6974 + _globals['_PUBLICKEYCTX']._serialized_start=6976 + _globals['_PUBLICKEYCTX']._serialized_end=7017 + _globals['_PRIVATEKEYCTX']._serialized_start=7019 + _globals['_PRIVATEKEYCTX']._serialized_end=7099 + _globals['_ASYMMETRICKEY']._serialized_start=7102 + _globals['_ASYMMETRICKEY']._serialized_end=7567 + _globals['_SYMMETRICKEY']._serialized_start=7570 + _globals['_SYMMETRICKEY']._serialized_end=7856 # @@protoc_insertion_point(module_scope) diff --git a/packages/otdf-python-proto/src/otdf_python_proto/policy/objects_pb2.pyi b/packages/otdf-python-proto/src/otdf_python_proto/policy/objects_pb2.pyi index e07aa110..07d6f982 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/policy/objects_pb2.pyi +++ b/packages/otdf-python-proto/src/otdf_python_proto/policy/objects_pb2.pyi @@ -44,6 +44,9 @@ class KasPublicKeyAlgEnum(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP256R1: _ClassVar[KasPublicKeyAlgEnum] KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP384R1: _ClassVar[KasPublicKeyAlgEnum] KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP521R1: _ClassVar[KasPublicKeyAlgEnum] + KAS_PUBLIC_KEY_ALG_ENUM_HPQT_XWING: _ClassVar[KasPublicKeyAlgEnum] + KAS_PUBLIC_KEY_ALG_ENUM_HPQT_SECP256R1_MLKEM768: _ClassVar[KasPublicKeyAlgEnum] + KAS_PUBLIC_KEY_ALG_ENUM_HPQT_SECP384R1_MLKEM1024: _ClassVar[KasPublicKeyAlgEnum] class Algorithm(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): __slots__ = () @@ -53,6 +56,9 @@ class Algorithm(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): ALGORITHM_EC_P256: _ClassVar[Algorithm] ALGORITHM_EC_P384: _ClassVar[Algorithm] ALGORITHM_EC_P521: _ClassVar[Algorithm] + ALGORITHM_HPQT_XWING: _ClassVar[Algorithm] + ALGORITHM_HPQT_SECP256R1_MLKEM768: _ClassVar[Algorithm] + ALGORITHM_HPQT_SECP384R1_MLKEM1024: _ClassVar[Algorithm] class KeyStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): __slots__ = () @@ -87,12 +93,18 @@ KAS_PUBLIC_KEY_ALG_ENUM_RSA_4096: KasPublicKeyAlgEnum KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP256R1: KasPublicKeyAlgEnum KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP384R1: KasPublicKeyAlgEnum KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP521R1: KasPublicKeyAlgEnum +KAS_PUBLIC_KEY_ALG_ENUM_HPQT_XWING: KasPublicKeyAlgEnum +KAS_PUBLIC_KEY_ALG_ENUM_HPQT_SECP256R1_MLKEM768: KasPublicKeyAlgEnum +KAS_PUBLIC_KEY_ALG_ENUM_HPQT_SECP384R1_MLKEM1024: KasPublicKeyAlgEnum ALGORITHM_UNSPECIFIED: Algorithm ALGORITHM_RSA_2048: Algorithm ALGORITHM_RSA_4096: Algorithm ALGORITHM_EC_P256: Algorithm ALGORITHM_EC_P384: Algorithm ALGORITHM_EC_P521: Algorithm +ALGORITHM_HPQT_XWING: Algorithm +ALGORITHM_HPQT_SECP256R1_MLKEM768: Algorithm +ALGORITHM_HPQT_SECP384R1_MLKEM1024: Algorithm KEY_STATUS_UNSPECIFIED: KeyStatus KEY_STATUS_ACTIVE: KeyStatus KEY_STATUS_ROTATED: KeyStatus @@ -291,16 +303,18 @@ class SubjectProperty(_message.Message): def __init__(self, external_selector_value: _Optional[str] = ..., external_value: _Optional[str] = ...) -> None: ... class ResourceMappingGroup(_message.Message): - __slots__ = ("id", "namespace_id", "name", "metadata") + __slots__ = ("id", "namespace_id", "name", "fqn", "metadata") ID_FIELD_NUMBER: _ClassVar[int] NAMESPACE_ID_FIELD_NUMBER: _ClassVar[int] NAME_FIELD_NUMBER: _ClassVar[int] + FQN_FIELD_NUMBER: _ClassVar[int] METADATA_FIELD_NUMBER: _ClassVar[int] id: str namespace_id: str name: str + fqn: str metadata: _common_pb2.Metadata - def __init__(self, id: _Optional[str] = ..., namespace_id: _Optional[str] = ..., name: _Optional[str] = ..., metadata: _Optional[_Union[_common_pb2.Metadata, _Mapping]] = ...) -> None: ... + def __init__(self, id: _Optional[str] = ..., namespace_id: _Optional[str] = ..., name: _Optional[str] = ..., fqn: _Optional[str] = ..., metadata: _Optional[_Union[_common_pb2.Metadata, _Mapping]] = ...) -> None: ... class ResourceMapping(_message.Message): __slots__ = ("id", "metadata", "attribute_value", "terms", "group") @@ -389,7 +403,7 @@ class RegisteredResource(_message.Message): def __init__(self, id: _Optional[str] = ..., name: _Optional[str] = ..., values: _Optional[_Iterable[_Union[RegisteredResourceValue, _Mapping]]] = ..., namespace: _Optional[_Union[Namespace, _Mapping]] = ..., metadata: _Optional[_Union[_common_pb2.Metadata, _Mapping]] = ...) -> None: ... class RegisteredResourceValue(_message.Message): - __slots__ = ("id", "value", "resource", "action_attribute_values", "metadata") + __slots__ = ("id", "value", "resource", "action_attribute_values", "fqn", "metadata") class ActionAttributeValue(_message.Message): __slots__ = ("id", "action", "attribute_value", "metadata") ID_FIELD_NUMBER: _ClassVar[int] @@ -405,13 +419,15 @@ class RegisteredResourceValue(_message.Message): VALUE_FIELD_NUMBER: _ClassVar[int] RESOURCE_FIELD_NUMBER: _ClassVar[int] ACTION_ATTRIBUTE_VALUES_FIELD_NUMBER: _ClassVar[int] + FQN_FIELD_NUMBER: _ClassVar[int] METADATA_FIELD_NUMBER: _ClassVar[int] id: str value: str resource: RegisteredResource action_attribute_values: _containers.RepeatedCompositeFieldContainer[RegisteredResourceValue.ActionAttributeValue] + fqn: str metadata: _common_pb2.Metadata - def __init__(self, id: _Optional[str] = ..., value: _Optional[str] = ..., resource: _Optional[_Union[RegisteredResource, _Mapping]] = ..., action_attribute_values: _Optional[_Iterable[_Union[RegisteredResourceValue.ActionAttributeValue, _Mapping]]] = ..., metadata: _Optional[_Union[_common_pb2.Metadata, _Mapping]] = ...) -> None: ... + def __init__(self, id: _Optional[str] = ..., value: _Optional[str] = ..., resource: _Optional[_Union[RegisteredResource, _Mapping]] = ..., action_attribute_values: _Optional[_Iterable[_Union[RegisteredResourceValue.ActionAttributeValue, _Mapping]]] = ..., fqn: _Optional[str] = ..., metadata: _Optional[_Union[_common_pb2.Metadata, _Mapping]] = ...) -> None: ... class PolicyEnforcementPoint(_message.Message): __slots__ = ("client_id",) @@ -458,20 +474,22 @@ class ObligationValue(_message.Message): def __init__(self, id: _Optional[str] = ..., obligation: _Optional[_Union[Obligation, _Mapping]] = ..., value: _Optional[str] = ..., triggers: _Optional[_Iterable[_Union[ObligationTrigger, _Mapping]]] = ..., fqn: _Optional[str] = ..., metadata: _Optional[_Union[_common_pb2.Metadata, _Mapping]] = ...) -> None: ... class ObligationTrigger(_message.Message): - __slots__ = ("id", "obligation_value", "action", "attribute_value", "context", "metadata") + __slots__ = ("id", "obligation_value", "action", "attribute_value", "context", "namespace", "metadata") ID_FIELD_NUMBER: _ClassVar[int] OBLIGATION_VALUE_FIELD_NUMBER: _ClassVar[int] ACTION_FIELD_NUMBER: _ClassVar[int] ATTRIBUTE_VALUE_FIELD_NUMBER: _ClassVar[int] CONTEXT_FIELD_NUMBER: _ClassVar[int] + NAMESPACE_FIELD_NUMBER: _ClassVar[int] METADATA_FIELD_NUMBER: _ClassVar[int] id: str obligation_value: ObligationValue action: Action attribute_value: Value context: _containers.RepeatedCompositeFieldContainer[RequestContext] + namespace: Namespace metadata: _common_pb2.Metadata - def __init__(self, id: _Optional[str] = ..., obligation_value: _Optional[_Union[ObligationValue, _Mapping]] = ..., action: _Optional[_Union[Action, _Mapping]] = ..., attribute_value: _Optional[_Union[Value, _Mapping]] = ..., context: _Optional[_Iterable[_Union[RequestContext, _Mapping]]] = ..., metadata: _Optional[_Union[_common_pb2.Metadata, _Mapping]] = ...) -> None: ... + def __init__(self, id: _Optional[str] = ..., obligation_value: _Optional[_Union[ObligationValue, _Mapping]] = ..., action: _Optional[_Union[Action, _Mapping]] = ..., attribute_value: _Optional[_Union[Value, _Mapping]] = ..., context: _Optional[_Iterable[_Union[RequestContext, _Mapping]]] = ..., namespace: _Optional[_Union[Namespace, _Mapping]] = ..., metadata: _Optional[_Union[_common_pb2.Metadata, _Mapping]] = ...) -> None: ... class KasKey(_message.Message): __slots__ = ("kas_id", "key", "kas_uri") diff --git a/packages/otdf-python-proto/src/otdf_python_proto/policy/obligations/obligations_connect.py b/packages/otdf-python-proto/src/otdf_python_proto/policy/obligations/obligations_connect.py index d3d4eb9b..c5dc69cd 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/policy/obligations/obligations_connect.py +++ b/packages/otdf-python-proto/src/otdf_python_proto/policy/obligations/obligations_connect.py @@ -7,6 +7,7 @@ from connectrpc.client import ConnectClient, ConnectClientSync from connectrpc.code import Code +from connectrpc.compression import Compression from connectrpc.errors import ConnectError from connectrpc.interceptor import Interceptor, InterceptorSync from connectrpc.method import IdempotencyLevel, MethodInfo @@ -63,7 +64,7 @@ async def list_obligation_triggers(self, request: policy_dot_obligations_dot_obl class ServiceASGIApplication(ConnectASGIApplication[Service]): - def __init__(self, service: Service | AsyncGenerator[Service], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None) -> None: + def __init__(self, service: Service | AsyncGenerator[Service], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: super().__init__( service=service, endpoints=lambda svc: { @@ -220,6 +221,7 @@ def __init__(self, service: Service | AsyncGenerator[Service], *, interceptors: }, interceptors=interceptors, read_max_bytes=read_max_bytes, + compressions=compressions, ) @property @@ -578,7 +580,7 @@ def list_obligation_triggers(self, request: policy_dot_obligations_dot_obligatio class ServiceWSGIApplication(ConnectWSGIApplication): - def __init__(self, service: ServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None) -> None: + def __init__(self, service: ServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: super().__init__( endpoints={ "/policy.obligations.Service/ListObligations": EndpointSync.unary( @@ -734,6 +736,7 @@ def __init__(self, service: ServiceSync, interceptors: Iterable[InterceptorSync] }, interceptors=interceptors, read_max_bytes=read_max_bytes, + compressions=compressions, ) @property diff --git a/packages/otdf-python-proto/src/otdf_python_proto/policy/obligations/obligations_pb2.py b/packages/otdf-python-proto/src/otdf_python_proto/policy/obligations/obligations_pb2.py index 38cadfcf..7b5614e7 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/policy/obligations/obligations_pb2.py +++ b/packages/otdf-python-proto/src/otdf_python_proto/policy/obligations/obligations_pb2.py @@ -28,7 +28,7 @@ from buf.validate import validate_pb2 as buf_dot_validate_dot_validate__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$policy/obligations/obligations.proto\x12\x12policy.obligations\x1a\x13\x63ommon/common.proto\x1a\x14policy/objects.proto\x1a\x16policy/selectors.proto\x1a\x1b\x62uf/validate/validate.proto\"\x85\x01\n\x0fObligationsSort\x12=\n\x05\x66ield\x18\x01 \x01(\x0e\x32\'.policy.obligations.SortObligationsTypeR\x05\x66ield\x12\x33\n\tdirection\x18\x02 \x01(\x0e\x32\x15.policy.SortDirectionR\tdirection\"`\n\x14GetObligationRequest\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\"\xcb\x01\n\x13ValueTriggerRequest\x12\x38\n\x06\x61\x63tion\x18\x01 \x01(\x0b\x32\x18.common.IdNameIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x06\x61\x63tion\x12H\n\x0f\x61ttribute_value\x18\x02 \x01(\x0b\x32\x17.common.IdFqnIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x0e\x61ttributeValue\x12\x30\n\x07\x63ontext\x18\x03 \x01(\x0b\x32\x16.policy.RequestContextR\x07\x63ontext\"K\n\x15GetObligationResponse\x12\x32\n\nobligation\x18\x01 \x01(\x0b\x32\x12.policy.ObligationR\nobligation\"I\n\x1bGetObligationsByFQNsRequest\x12*\n\x04\x66qns\x18\x01 \x03(\tB\x16\xbaH\x13\x92\x01\x10\x08\x01\x10\xfa\x01\x18\x01\"\x07r\x05\x10\x01\x88\x01\x01R\x04\x66qns\"\xed\x01\n\x1cGetObligationsByFQNsResponse\x12t\n\x12\x66qn_obligation_map\x18\x01 \x03(\x0b\x32\x46.policy.obligations.GetObligationsByFQNsResponse.FqnObligationMapEntryR\x10\x66qnObligationMap\x1aW\n\x15\x46qnObligationMapEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12(\n\x05value\x18\x02 \x01(\x0b\x32\x12.policy.ObligationR\x05value:\x02\x38\x01\"\xd4\x04\n\x17\x43reateObligationRequest\x12+\n\x0cnamespace_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0bnamespaceId\x12/\n\rnamespace_fqn\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01R\x0cnamespaceFqn\x12\xa7\x02\n\x04name\x18\x03 \x01(\tB\x92\x02\xbaH\x8e\x02r\x03\x18\xfd\x01\xba\x01\x82\x02\n\x16obligation_name_format\x12\xaa\x01Obligation name 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])?$\')\xc8\x01\x01R\x04name\x12V\n\x06values\x18\x04 \x03(\tB>\xbaH;\x92\x01\x38\x08\x00\x18\x01\"2r0\x18\xfd\x01\x32+^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$R\x06values\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata:$\xbaH!\"\x1f\n\x0cnamespace_id\n\rnamespace_fqn\x10\x01\"N\n\x18\x43reateObligationResponse\x12\x32\n\nobligation\x18\x01 \x01(\x0b\x32\x12.policy.ObligationR\nobligation\"\x80\x04\n\x17UpdateObligationRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\xbf\x02\n\x04name\x18\x02 \x01(\tB\xaa\x02\xbaH\xa6\x02r\x03\x18\xfd\x01\xba\x01\x9a\x02\n\x16obligation_name_format\x12\xaa\x01Obligation name 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.\x1aSsize(this) > 0 ? this.matches(\'^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$\') : true\xc8\x01\x00R\x04name\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\x12T\n\x18metadata_update_behavior\x18\x65 \x01(\x0e\x32\x1a.common.MetadataUpdateEnumR\x16metadataUpdateBehavior\"N\n\x18UpdateObligationResponse\x12\x32\n\nobligation\x18\x01 \x01(\x0b\x32\x12.policy.ObligationR\nobligation\"c\n\x17\x44\x65leteObligationRequest\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\"N\n\x18\x44\x65leteObligationResponse\x12\x32\n\nobligation\x18\x01 \x01(\x0b\x32\x12.policy.ObligationR\nobligation\"\x94\x02\n\x16ListObligationsRequest\x12+\n\x0cnamespace_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0bnamespaceId\x12/\n\rnamespace_fqn\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01R\x0cnamespaceFqn\x12\x33\n\npagination\x18\n \x01(\x0b\x32\x13.policy.PageRequestR\npagination\x12\x41\n\x04sort\x18\x0b \x03(\x0b\x32#.policy.obligations.ObligationsSortB\x08\xbaH\x05\x92\x01\x02\x10\x01R\x04sort:$\xbaH!\"\x1f\n\x0cnamespace_id\n\rnamespace_fqn\x10\x00\"\x85\x01\n\x17ListObligationsResponse\x12\x34\n\x0bobligations\x18\x01 \x03(\x0b\x32\x12.policy.ObligationR\x0bobligations\x12\x34\n\npagination\x18\n \x01(\x0b\x32\x14.policy.PageResponseR\npagination\"e\n\x19GetObligationValueRequest\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\"K\n\x1aGetObligationValueResponse\x12-\n\x05value\x18\x01 \x01(\x0b\x32\x17.policy.ObligationValueR\x05value\"N\n GetObligationValuesByFQNsRequest\x12*\n\x04\x66qns\x18\x01 \x03(\tB\x16\xbaH\x13\x92\x01\x10\x08\x01\x10\xfa\x01\x18\x01\"\x07r\x05\x10\x01\x88\x01\x01R\x04\x66qns\"\xe8\x01\n!GetObligationValuesByFQNsResponse\x12j\n\rfqn_value_map\x18\x01 \x03(\x0b\x32\x46.policy.obligations.GetObligationValuesByFQNsResponse.FqnValueMapEntryR\x0b\x66qnValueMap\x1aW\n\x10\x46qnValueMapEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12-\n\x05value\x18\x02 \x01(\x0b\x32\x17.policy.ObligationValueR\x05value:\x02\x38\x01\"\xd1\x04\n\x1c\x43reateObligationValueRequest\x12-\n\robligation_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0cobligationId\x12\x31\n\x0eobligation_fqn\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01R\robligationFqn\x12\xac\x02\n\x05value\x18\x03 \x01(\tB\x95\x02\xbaH\x91\x02r\x03\x18\xfd\x01\xba\x01\x85\x02\n\x17obligation_value_format\x12\xac\x01Obligation value must be an alphanumeric string, allowing hyphens and underscores but not as the first or last character. The stored value will be normalized to lower case.\x1a;this.matches(\'^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$\')\xc8\x01\x01R\x05value\x12\x43\n\x08triggers\x18\x04 \x03(\x0b\x32\'.policy.obligations.ValueTriggerRequestR\x08triggers\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata:&\xbaH#\"!\n\robligation_id\n\x0eobligation_fqn\x10\x01\"N\n\x1d\x43reateObligationValueResponse\x12-\n\x05value\x18\x01 \x01(\x0b\x32\x17.policy.ObligationValueR\x05value\"\xcf\x04\n\x1cUpdateObligationValueRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\xc4\x02\n\x05value\x18\x02 \x01(\tB\xad\x02\xbaH\xa9\x02r\x03\x18\xfd\x01\xba\x01\x9d\x02\n\x17obligation_value_format\x12\xac\x01Obligation value must be an alphanumeric string, allowing hyphens and underscores but not as the first or last character. The stored value will be normalized to lower case.\x1aSsize(this) > 0 ? this.matches(\'^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$\') : true\xc8\x01\x00R\x05value\x12\x43\n\x08triggers\x18\x03 \x03(\x0b\x32\'.policy.obligations.ValueTriggerRequestR\x08triggers\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\x12T\n\x18metadata_update_behavior\x18\x65 \x01(\x0e\x32\x1a.common.MetadataUpdateEnumR\x16metadataUpdateBehavior\"N\n\x1dUpdateObligationValueResponse\x12-\n\x05value\x18\x01 \x01(\x0b\x32\x17.policy.ObligationValueR\x05value\"h\n\x1c\x44\x65leteObligationValueRequest\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\"N\n\x1d\x44\x65leteObligationValueResponse\x12-\n\x05value\x18\x01 \x01(\x0b\x32\x17.policy.ObligationValueR\x05value\"7\n\x1bGetObligationTriggerRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"S\n\x1cGetObligationTriggerResponse\x12\x33\n\x07trigger\x18\x01 \x01(\x0b\x32\x19.policy.ObligationTriggerR\x07trigger\"\xd4\x02\n\x1b\x41\x64\x64ObligationTriggerRequest\x12J\n\x10obligation_value\x18\x01 \x01(\x0b\x32\x17.common.IdFqnIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x0fobligationValue\x12\x38\n\x06\x61\x63tion\x18\x02 \x01(\x0b\x32\x18.common.IdNameIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x06\x61\x63tion\x12H\n\x0f\x61ttribute_value\x18\x03 \x01(\x0b\x32\x17.common.IdFqnIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x0e\x61ttributeValue\x12\x30\n\x07\x63ontext\x18\x04 \x01(\x0b\x32\x16.policy.RequestContextR\x07\x63ontext\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\"S\n\x1c\x41\x64\x64ObligationTriggerResponse\x12\x33\n\x07trigger\x18\x01 \x01(\x0b\x32\x19.policy.ObligationTriggerR\x07trigger\":\n\x1eRemoveObligationTriggerRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"V\n\x1fRemoveObligationTriggerResponse\x12\x33\n\x07trigger\x18\x01 \x01(\x0b\x32\x19.policy.ObligationTriggerR\x07trigger\"\xd8\x01\n\x1dListObligationTriggersRequest\x12+\n\x0cnamespace_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0bnamespaceId\x12/\n\rnamespace_fqn\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01R\x0cnamespaceFqn\x12\x33\n\npagination\x18\n \x01(\x0b\x32\x13.policy.PageRequestR\npagination:$\xbaH!\"\x1f\n\x0cnamespace_id\n\rnamespace_fqn\x10\x00\"\x8d\x01\n\x1eListObligationTriggersResponse\x12\x35\n\x08triggers\x18\x01 \x03(\x0b\x32\x19.policy.ObligationTriggerR\x08triggers\x12\x34\n\npagination\x18\n \x01(\x0b\x32\x14.policy.PageResponseR\npagination*\xc7\x01\n\x13SortObligationsType\x12%\n!SORT_OBLIGATIONS_TYPE_UNSPECIFIED\x10\x00\x12\x1e\n\x1aSORT_OBLIGATIONS_TYPE_NAME\x10\x01\x12\x1d\n\x19SORT_OBLIGATIONS_TYPE_FQN\x10\x02\x12$\n SORT_OBLIGATIONS_TYPE_CREATED_AT\x10\x03\x12$\n SORT_OBLIGATIONS_TYPE_UPDATED_AT\x10\x04\x32\xcd\x0e\n\x07Service\x12o\n\x0fListObligations\x12*.policy.obligations.ListObligationsRequest\x1a+.policy.obligations.ListObligationsResponse\"\x03\x90\x02\x01\x12i\n\rGetObligation\x12(.policy.obligations.GetObligationRequest\x1a).policy.obligations.GetObligationResponse\"\x03\x90\x02\x01\x12~\n\x14GetObligationsByFQNs\x12/.policy.obligations.GetObligationsByFQNsRequest\x1a\x30.policy.obligations.GetObligationsByFQNsResponse\"\x03\x90\x02\x01\x12o\n\x10\x43reateObligation\x12+.policy.obligations.CreateObligationRequest\x1a,.policy.obligations.CreateObligationResponse\"\x00\x12o\n\x10UpdateObligation\x12+.policy.obligations.UpdateObligationRequest\x1a,.policy.obligations.UpdateObligationResponse\"\x00\x12o\n\x10\x44\x65leteObligation\x12+.policy.obligations.DeleteObligationRequest\x1a,.policy.obligations.DeleteObligationResponse\"\x00\x12x\n\x12GetObligationValue\x12-.policy.obligations.GetObligationValueRequest\x1a..policy.obligations.GetObligationValueResponse\"\x03\x90\x02\x01\x12\x8d\x01\n\x19GetObligationValuesByFQNs\x12\x34.policy.obligations.GetObligationValuesByFQNsRequest\x1a\x35.policy.obligations.GetObligationValuesByFQNsResponse\"\x03\x90\x02\x01\x12~\n\x15\x43reateObligationValue\x12\x30.policy.obligations.CreateObligationValueRequest\x1a\x31.policy.obligations.CreateObligationValueResponse\"\x00\x12~\n\x15UpdateObligationValue\x12\x30.policy.obligations.UpdateObligationValueRequest\x1a\x31.policy.obligations.UpdateObligationValueResponse\"\x00\x12~\n\x15\x44\x65leteObligationValue\x12\x30.policy.obligations.DeleteObligationValueRequest\x1a\x31.policy.obligations.DeleteObligationValueResponse\"\x00\x12~\n\x14GetObligationTrigger\x12/.policy.obligations.GetObligationTriggerRequest\x1a\x30.policy.obligations.GetObligationTriggerResponse\"\x03\x90\x02\x01\x12{\n\x14\x41\x64\x64ObligationTrigger\x12/.policy.obligations.AddObligationTriggerRequest\x1a\x30.policy.obligations.AddObligationTriggerResponse\"\x00\x12\x84\x01\n\x17RemoveObligationTrigger\x12\x32.policy.obligations.RemoveObligationTriggerRequest\x1a\x33.policy.obligations.RemoveObligationTriggerResponse\"\x00\x12\x84\x01\n\x16ListObligationTriggers\x12\x31.policy.obligations.ListObligationTriggersRequest\x1a\x32.policy.obligations.ListObligationTriggersResponse\"\x03\x90\x02\x01\x42\x93\x01\n\x16\x63om.policy.obligationsB\x10ObligationsProtoP\x01\xa2\x02\x03POX\xaa\x02\x12Policy.Obligations\xca\x02\x12Policy\\Obligations\xe2\x02\x1ePolicy\\Obligations\\GPBMetadata\xea\x02\x13Policy::Obligationsb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$policy/obligations/obligations.proto\x12\x12policy.obligations\x1a\x13\x63ommon/common.proto\x1a\x14policy/objects.proto\x1a\x16policy/selectors.proto\x1a\x1b\x62uf/validate/validate.proto\"\x99\x01\n\x0fObligationsSort\x12G\n\x05\x66ield\x18\x01 \x01(\x0e\x32\'.policy.obligations.SortObligationsTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x05\x66ield\x12=\n\tdirection\x18\x02 \x01(\x0e\x32\x15.policy.SortDirectionB\x08\xbaH\x05\x82\x01\x02\x10\x01R\tdirection\"`\n\x14GetObligationRequest\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\"\xcb\x01\n\x13ValueTriggerRequest\x12\x38\n\x06\x61\x63tion\x18\x01 \x01(\x0b\x32\x18.common.IdNameIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x06\x61\x63tion\x12H\n\x0f\x61ttribute_value\x18\x02 \x01(\x0b\x32\x17.common.IdFqnIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x0e\x61ttributeValue\x12\x30\n\x07\x63ontext\x18\x03 \x01(\x0b\x32\x16.policy.RequestContextR\x07\x63ontext\"K\n\x15GetObligationResponse\x12\x32\n\nobligation\x18\x01 \x01(\x0b\x32\x12.policy.ObligationR\nobligation\"I\n\x1bGetObligationsByFQNsRequest\x12*\n\x04\x66qns\x18\x01 \x03(\tB\x16\xbaH\x13\x92\x01\x10\x08\x01\x10\xfa\x01\x18\x01\"\x07r\x05\x10\x01\x88\x01\x01R\x04\x66qns\"\xed\x01\n\x1cGetObligationsByFQNsResponse\x12t\n\x12\x66qn_obligation_map\x18\x01 \x03(\x0b\x32\x46.policy.obligations.GetObligationsByFQNsResponse.FqnObligationMapEntryR\x10\x66qnObligationMap\x1aW\n\x15\x46qnObligationMapEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12(\n\x05value\x18\x02 \x01(\x0b\x32\x12.policy.ObligationR\x05value:\x02\x38\x01\"\xd4\x04\n\x17\x43reateObligationRequest\x12+\n\x0cnamespace_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0bnamespaceId\x12/\n\rnamespace_fqn\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01R\x0cnamespaceFqn\x12\xa7\x02\n\x04name\x18\x03 \x01(\tB\x92\x02\xbaH\x8e\x02r\x03\x18\xfd\x01\xba\x01\x82\x02\n\x16obligation_name_format\x12\xaa\x01Obligation name 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])?$\')\xc8\x01\x01R\x04name\x12V\n\x06values\x18\x04 \x03(\tB>\xbaH;\x92\x01\x38\x08\x00\x18\x01\"2r0\x18\xfd\x01\x32+^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$R\x06values\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata:$\xbaH!\"\x1f\n\x0cnamespace_id\n\rnamespace_fqn\x10\x01\"N\n\x18\x43reateObligationResponse\x12\x32\n\nobligation\x18\x01 \x01(\x0b\x32\x12.policy.ObligationR\nobligation\"\x80\x04\n\x17UpdateObligationRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\xbf\x02\n\x04name\x18\x02 \x01(\tB\xaa\x02\xbaH\xa6\x02r\x03\x18\xfd\x01\xba\x01\x9a\x02\n\x16obligation_name_format\x12\xaa\x01Obligation name 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.\x1aSsize(this) > 0 ? this.matches(\'^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$\') : true\xc8\x01\x00R\x04name\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\x12T\n\x18metadata_update_behavior\x18\x65 \x01(\x0e\x32\x1a.common.MetadataUpdateEnumR\x16metadataUpdateBehavior\"N\n\x18UpdateObligationResponse\x12\x32\n\nobligation\x18\x01 \x01(\x0b\x32\x12.policy.ObligationR\nobligation\"c\n\x17\x44\x65leteObligationRequest\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\"N\n\x18\x44\x65leteObligationResponse\x12\x32\n\nobligation\x18\x01 \x01(\x0b\x32\x12.policy.ObligationR\nobligation\"\x94\x02\n\x16ListObligationsRequest\x12+\n\x0cnamespace_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0bnamespaceId\x12/\n\rnamespace_fqn\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01R\x0cnamespaceFqn\x12\x33\n\npagination\x18\n \x01(\x0b\x32\x13.policy.PageRequestR\npagination\x12\x41\n\x04sort\x18\x0b \x03(\x0b\x32#.policy.obligations.ObligationsSortB\x08\xbaH\x05\x92\x01\x02\x10\x01R\x04sort:$\xbaH!\"\x1f\n\x0cnamespace_id\n\rnamespace_fqn\x10\x00\"\x85\x01\n\x17ListObligationsResponse\x12\x34\n\x0bobligations\x18\x01 \x03(\x0b\x32\x12.policy.ObligationR\x0bobligations\x12\x34\n\npagination\x18\n \x01(\x0b\x32\x14.policy.PageResponseR\npagination\"e\n\x19GetObligationValueRequest\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\"K\n\x1aGetObligationValueResponse\x12-\n\x05value\x18\x01 \x01(\x0b\x32\x17.policy.ObligationValueR\x05value\"N\n GetObligationValuesByFQNsRequest\x12*\n\x04\x66qns\x18\x01 \x03(\tB\x16\xbaH\x13\x92\x01\x10\x08\x01\x10\xfa\x01\x18\x01\"\x07r\x05\x10\x01\x88\x01\x01R\x04\x66qns\"\xe8\x01\n!GetObligationValuesByFQNsResponse\x12j\n\rfqn_value_map\x18\x01 \x03(\x0b\x32\x46.policy.obligations.GetObligationValuesByFQNsResponse.FqnValueMapEntryR\x0b\x66qnValueMap\x1aW\n\x10\x46qnValueMapEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12-\n\x05value\x18\x02 \x01(\x0b\x32\x17.policy.ObligationValueR\x05value:\x02\x38\x01\"\xd1\x04\n\x1c\x43reateObligationValueRequest\x12-\n\robligation_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0cobligationId\x12\x31\n\x0eobligation_fqn\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01R\robligationFqn\x12\xac\x02\n\x05value\x18\x03 \x01(\tB\x95\x02\xbaH\x91\x02r\x03\x18\xfd\x01\xba\x01\x85\x02\n\x17obligation_value_format\x12\xac\x01Obligation value must be an alphanumeric string, allowing hyphens and underscores but not as the first or last character. The stored value will be normalized to lower case.\x1a;this.matches(\'^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$\')\xc8\x01\x01R\x05value\x12\x43\n\x08triggers\x18\x04 \x03(\x0b\x32\'.policy.obligations.ValueTriggerRequestR\x08triggers\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata:&\xbaH#\"!\n\robligation_id\n\x0eobligation_fqn\x10\x01\"N\n\x1d\x43reateObligationValueResponse\x12-\n\x05value\x18\x01 \x01(\x0b\x32\x17.policy.ObligationValueR\x05value\"\xcf\x04\n\x1cUpdateObligationValueRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\xc4\x02\n\x05value\x18\x02 \x01(\tB\xad\x02\xbaH\xa9\x02r\x03\x18\xfd\x01\xba\x01\x9d\x02\n\x17obligation_value_format\x12\xac\x01Obligation value must be an alphanumeric string, allowing hyphens and underscores but not as the first or last character. The stored value will be normalized to lower case.\x1aSsize(this) > 0 ? this.matches(\'^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$\') : true\xc8\x01\x00R\x05value\x12\x43\n\x08triggers\x18\x03 \x03(\x0b\x32\'.policy.obligations.ValueTriggerRequestR\x08triggers\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\x12T\n\x18metadata_update_behavior\x18\x65 \x01(\x0e\x32\x1a.common.MetadataUpdateEnumR\x16metadataUpdateBehavior\"N\n\x1dUpdateObligationValueResponse\x12-\n\x05value\x18\x01 \x01(\x0b\x32\x17.policy.ObligationValueR\x05value\"h\n\x1c\x44\x65leteObligationValueRequest\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\"N\n\x1d\x44\x65leteObligationValueResponse\x12-\n\x05value\x18\x01 \x01(\x0b\x32\x17.policy.ObligationValueR\x05value\"7\n\x1bGetObligationTriggerRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"S\n\x1cGetObligationTriggerResponse\x12\x33\n\x07trigger\x18\x01 \x01(\x0b\x32\x19.policy.ObligationTriggerR\x07trigger\"\xd4\x02\n\x1b\x41\x64\x64ObligationTriggerRequest\x12J\n\x10obligation_value\x18\x01 \x01(\x0b\x32\x17.common.IdFqnIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x0fobligationValue\x12\x38\n\x06\x61\x63tion\x18\x02 \x01(\x0b\x32\x18.common.IdNameIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x06\x61\x63tion\x12H\n\x0f\x61ttribute_value\x18\x03 \x01(\x0b\x32\x17.common.IdFqnIdentifierB\x06\xbaH\x03\xc8\x01\x01R\x0e\x61ttributeValue\x12\x30\n\x07\x63ontext\x18\x04 \x01(\x0b\x32\x16.policy.RequestContextR\x07\x63ontext\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\"S\n\x1c\x41\x64\x64ObligationTriggerResponse\x12\x33\n\x07trigger\x18\x01 \x01(\x0b\x32\x19.policy.ObligationTriggerR\x07trigger\":\n\x1eRemoveObligationTriggerRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"V\n\x1fRemoveObligationTriggerResponse\x12\x33\n\x07trigger\x18\x01 \x01(\x0b\x32\x19.policy.ObligationTriggerR\x07trigger\"\xd8\x01\n\x1dListObligationTriggersRequest\x12+\n\x0cnamespace_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0bnamespaceId\x12/\n\rnamespace_fqn\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01R\x0cnamespaceFqn\x12\x33\n\npagination\x18\n \x01(\x0b\x32\x13.policy.PageRequestR\npagination:$\xbaH!\"\x1f\n\x0cnamespace_id\n\rnamespace_fqn\x10\x00\"\x8d\x01\n\x1eListObligationTriggersResponse\x12\x35\n\x08triggers\x18\x01 \x03(\x0b\x32\x19.policy.ObligationTriggerR\x08triggers\x12\x34\n\npagination\x18\n \x01(\x0b\x32\x14.policy.PageResponseR\npagination*\xc7\x01\n\x13SortObligationsType\x12%\n!SORT_OBLIGATIONS_TYPE_UNSPECIFIED\x10\x00\x12\x1e\n\x1aSORT_OBLIGATIONS_TYPE_NAME\x10\x01\x12\x1d\n\x19SORT_OBLIGATIONS_TYPE_FQN\x10\x02\x12$\n SORT_OBLIGATIONS_TYPE_CREATED_AT\x10\x03\x12$\n SORT_OBLIGATIONS_TYPE_UPDATED_AT\x10\x04\x32\xcd\x0e\n\x07Service\x12o\n\x0fListObligations\x12*.policy.obligations.ListObligationsRequest\x1a+.policy.obligations.ListObligationsResponse\"\x03\x90\x02\x01\x12i\n\rGetObligation\x12(.policy.obligations.GetObligationRequest\x1a).policy.obligations.GetObligationResponse\"\x03\x90\x02\x01\x12~\n\x14GetObligationsByFQNs\x12/.policy.obligations.GetObligationsByFQNsRequest\x1a\x30.policy.obligations.GetObligationsByFQNsResponse\"\x03\x90\x02\x01\x12o\n\x10\x43reateObligation\x12+.policy.obligations.CreateObligationRequest\x1a,.policy.obligations.CreateObligationResponse\"\x00\x12o\n\x10UpdateObligation\x12+.policy.obligations.UpdateObligationRequest\x1a,.policy.obligations.UpdateObligationResponse\"\x00\x12o\n\x10\x44\x65leteObligation\x12+.policy.obligations.DeleteObligationRequest\x1a,.policy.obligations.DeleteObligationResponse\"\x00\x12x\n\x12GetObligationValue\x12-.policy.obligations.GetObligationValueRequest\x1a..policy.obligations.GetObligationValueResponse\"\x03\x90\x02\x01\x12\x8d\x01\n\x19GetObligationValuesByFQNs\x12\x34.policy.obligations.GetObligationValuesByFQNsRequest\x1a\x35.policy.obligations.GetObligationValuesByFQNsResponse\"\x03\x90\x02\x01\x12~\n\x15\x43reateObligationValue\x12\x30.policy.obligations.CreateObligationValueRequest\x1a\x31.policy.obligations.CreateObligationValueResponse\"\x00\x12~\n\x15UpdateObligationValue\x12\x30.policy.obligations.UpdateObligationValueRequest\x1a\x31.policy.obligations.UpdateObligationValueResponse\"\x00\x12~\n\x15\x44\x65leteObligationValue\x12\x30.policy.obligations.DeleteObligationValueRequest\x1a\x31.policy.obligations.DeleteObligationValueResponse\"\x00\x12~\n\x14GetObligationTrigger\x12/.policy.obligations.GetObligationTriggerRequest\x1a\x30.policy.obligations.GetObligationTriggerResponse\"\x03\x90\x02\x01\x12{\n\x14\x41\x64\x64ObligationTrigger\x12/.policy.obligations.AddObligationTriggerRequest\x1a\x30.policy.obligations.AddObligationTriggerResponse\"\x00\x12\x84\x01\n\x17RemoveObligationTrigger\x12\x32.policy.obligations.RemoveObligationTriggerRequest\x1a\x33.policy.obligations.RemoveObligationTriggerResponse\"\x00\x12\x84\x01\n\x16ListObligationTriggers\x12\x31.policy.obligations.ListObligationTriggersRequest\x1a\x32.policy.obligations.ListObligationTriggersResponse\"\x03\x90\x02\x01\x42\x93\x01\n\x16\x63om.policy.obligationsB\x10ObligationsProtoP\x01\xa2\x02\x03POX\xaa\x02\x12Policy.Obligations\xca\x02\x12Policy\\Obligations\xe2\x02\x1ePolicy\\Obligations\\GPBMetadata\xea\x02\x13Policy::Obligationsb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -36,6 +36,10 @@ if not _descriptor._USE_C_DESCRIPTORS: _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\026com.policy.obligationsB\020ObligationsProtoP\001\242\002\003POX\252\002\022Policy.Obligations\312\002\022Policy\\Obligations\342\002\036Policy\\Obligations\\GPBMetadata\352\002\023Policy::Obligations' + _globals['_OBLIGATIONSSORT'].fields_by_name['field']._loaded_options = None + _globals['_OBLIGATIONSSORT'].fields_by_name['field']._serialized_options = b'\272H\005\202\001\002\020\001' + _globals['_OBLIGATIONSSORT'].fields_by_name['direction']._loaded_options = None + _globals['_OBLIGATIONSSORT'].fields_by_name['direction']._serialized_options = b'\272H\005\202\001\002\020\001' _globals['_GETOBLIGATIONREQUEST'].fields_by_name['id']._loaded_options = None _globals['_GETOBLIGATIONREQUEST'].fields_by_name['id']._serialized_options = b'\272H\005r\003\260\001\001' _globals['_GETOBLIGATIONREQUEST'].fields_by_name['fqn']._loaded_options = None @@ -136,76 +140,76 @@ _globals['_SERVICE'].methods_by_name['GetObligationTrigger']._serialized_options = b'\220\002\001' _globals['_SERVICE'].methods_by_name['ListObligationTriggers']._loaded_options = None _globals['_SERVICE'].methods_by_name['ListObligationTriggers']._serialized_options = b'\220\002\001' - _globals['_SORTOBLIGATIONSTYPE']._serialized_start=5971 - _globals['_SORTOBLIGATIONSTYPE']._serialized_end=6170 + _globals['_SORTOBLIGATIONSTYPE']._serialized_start=5991 + _globals['_SORTOBLIGATIONSTYPE']._serialized_end=6190 _globals['_OBLIGATIONSSORT']._serialized_start=157 - _globals['_OBLIGATIONSSORT']._serialized_end=290 - _globals['_GETOBLIGATIONREQUEST']._serialized_start=292 - _globals['_GETOBLIGATIONREQUEST']._serialized_end=388 - _globals['_VALUETRIGGERREQUEST']._serialized_start=391 - _globals['_VALUETRIGGERREQUEST']._serialized_end=594 - _globals['_GETOBLIGATIONRESPONSE']._serialized_start=596 - _globals['_GETOBLIGATIONRESPONSE']._serialized_end=671 - _globals['_GETOBLIGATIONSBYFQNSREQUEST']._serialized_start=673 - _globals['_GETOBLIGATIONSBYFQNSREQUEST']._serialized_end=746 - _globals['_GETOBLIGATIONSBYFQNSRESPONSE']._serialized_start=749 - _globals['_GETOBLIGATIONSBYFQNSRESPONSE']._serialized_end=986 - _globals['_GETOBLIGATIONSBYFQNSRESPONSE_FQNOBLIGATIONMAPENTRY']._serialized_start=899 - _globals['_GETOBLIGATIONSBYFQNSRESPONSE_FQNOBLIGATIONMAPENTRY']._serialized_end=986 - _globals['_CREATEOBLIGATIONREQUEST']._serialized_start=989 - _globals['_CREATEOBLIGATIONREQUEST']._serialized_end=1585 - _globals['_CREATEOBLIGATIONRESPONSE']._serialized_start=1587 - _globals['_CREATEOBLIGATIONRESPONSE']._serialized_end=1665 - _globals['_UPDATEOBLIGATIONREQUEST']._serialized_start=1668 - _globals['_UPDATEOBLIGATIONREQUEST']._serialized_end=2180 - _globals['_UPDATEOBLIGATIONRESPONSE']._serialized_start=2182 - _globals['_UPDATEOBLIGATIONRESPONSE']._serialized_end=2260 - _globals['_DELETEOBLIGATIONREQUEST']._serialized_start=2262 - _globals['_DELETEOBLIGATIONREQUEST']._serialized_end=2361 - _globals['_DELETEOBLIGATIONRESPONSE']._serialized_start=2363 - _globals['_DELETEOBLIGATIONRESPONSE']._serialized_end=2441 - _globals['_LISTOBLIGATIONSREQUEST']._serialized_start=2444 - _globals['_LISTOBLIGATIONSREQUEST']._serialized_end=2720 - _globals['_LISTOBLIGATIONSRESPONSE']._serialized_start=2723 - _globals['_LISTOBLIGATIONSRESPONSE']._serialized_end=2856 - _globals['_GETOBLIGATIONVALUEREQUEST']._serialized_start=2858 - _globals['_GETOBLIGATIONVALUEREQUEST']._serialized_end=2959 - _globals['_GETOBLIGATIONVALUERESPONSE']._serialized_start=2961 - _globals['_GETOBLIGATIONVALUERESPONSE']._serialized_end=3036 - _globals['_GETOBLIGATIONVALUESBYFQNSREQUEST']._serialized_start=3038 - _globals['_GETOBLIGATIONVALUESBYFQNSREQUEST']._serialized_end=3116 - _globals['_GETOBLIGATIONVALUESBYFQNSRESPONSE']._serialized_start=3119 - _globals['_GETOBLIGATIONVALUESBYFQNSRESPONSE']._serialized_end=3351 - _globals['_GETOBLIGATIONVALUESBYFQNSRESPONSE_FQNVALUEMAPENTRY']._serialized_start=3264 - _globals['_GETOBLIGATIONVALUESBYFQNSRESPONSE_FQNVALUEMAPENTRY']._serialized_end=3351 - _globals['_CREATEOBLIGATIONVALUEREQUEST']._serialized_start=3354 - _globals['_CREATEOBLIGATIONVALUEREQUEST']._serialized_end=3947 - _globals['_CREATEOBLIGATIONVALUERESPONSE']._serialized_start=3949 - _globals['_CREATEOBLIGATIONVALUERESPONSE']._serialized_end=4027 - _globals['_UPDATEOBLIGATIONVALUEREQUEST']._serialized_start=4030 - _globals['_UPDATEOBLIGATIONVALUEREQUEST']._serialized_end=4621 - _globals['_UPDATEOBLIGATIONVALUERESPONSE']._serialized_start=4623 - _globals['_UPDATEOBLIGATIONVALUERESPONSE']._serialized_end=4701 - _globals['_DELETEOBLIGATIONVALUEREQUEST']._serialized_start=4703 - _globals['_DELETEOBLIGATIONVALUEREQUEST']._serialized_end=4807 - _globals['_DELETEOBLIGATIONVALUERESPONSE']._serialized_start=4809 - _globals['_DELETEOBLIGATIONVALUERESPONSE']._serialized_end=4887 - _globals['_GETOBLIGATIONTRIGGERREQUEST']._serialized_start=4889 - _globals['_GETOBLIGATIONTRIGGERREQUEST']._serialized_end=4944 - _globals['_GETOBLIGATIONTRIGGERRESPONSE']._serialized_start=4946 - _globals['_GETOBLIGATIONTRIGGERRESPONSE']._serialized_end=5029 - _globals['_ADDOBLIGATIONTRIGGERREQUEST']._serialized_start=5032 - _globals['_ADDOBLIGATIONTRIGGERREQUEST']._serialized_end=5372 - _globals['_ADDOBLIGATIONTRIGGERRESPONSE']._serialized_start=5374 - _globals['_ADDOBLIGATIONTRIGGERRESPONSE']._serialized_end=5457 - _globals['_REMOVEOBLIGATIONTRIGGERREQUEST']._serialized_start=5459 - _globals['_REMOVEOBLIGATIONTRIGGERREQUEST']._serialized_end=5517 - _globals['_REMOVEOBLIGATIONTRIGGERRESPONSE']._serialized_start=5519 - _globals['_REMOVEOBLIGATIONTRIGGERRESPONSE']._serialized_end=5605 - _globals['_LISTOBLIGATIONTRIGGERSREQUEST']._serialized_start=5608 - _globals['_LISTOBLIGATIONTRIGGERSREQUEST']._serialized_end=5824 - _globals['_LISTOBLIGATIONTRIGGERSRESPONSE']._serialized_start=5827 - _globals['_LISTOBLIGATIONTRIGGERSRESPONSE']._serialized_end=5968 - _globals['_SERVICE']._serialized_start=6173 - _globals['_SERVICE']._serialized_end=8042 + _globals['_OBLIGATIONSSORT']._serialized_end=310 + _globals['_GETOBLIGATIONREQUEST']._serialized_start=312 + _globals['_GETOBLIGATIONREQUEST']._serialized_end=408 + _globals['_VALUETRIGGERREQUEST']._serialized_start=411 + _globals['_VALUETRIGGERREQUEST']._serialized_end=614 + _globals['_GETOBLIGATIONRESPONSE']._serialized_start=616 + _globals['_GETOBLIGATIONRESPONSE']._serialized_end=691 + _globals['_GETOBLIGATIONSBYFQNSREQUEST']._serialized_start=693 + _globals['_GETOBLIGATIONSBYFQNSREQUEST']._serialized_end=766 + _globals['_GETOBLIGATIONSBYFQNSRESPONSE']._serialized_start=769 + _globals['_GETOBLIGATIONSBYFQNSRESPONSE']._serialized_end=1006 + _globals['_GETOBLIGATIONSBYFQNSRESPONSE_FQNOBLIGATIONMAPENTRY']._serialized_start=919 + _globals['_GETOBLIGATIONSBYFQNSRESPONSE_FQNOBLIGATIONMAPENTRY']._serialized_end=1006 + _globals['_CREATEOBLIGATIONREQUEST']._serialized_start=1009 + _globals['_CREATEOBLIGATIONREQUEST']._serialized_end=1605 + _globals['_CREATEOBLIGATIONRESPONSE']._serialized_start=1607 + _globals['_CREATEOBLIGATIONRESPONSE']._serialized_end=1685 + _globals['_UPDATEOBLIGATIONREQUEST']._serialized_start=1688 + _globals['_UPDATEOBLIGATIONREQUEST']._serialized_end=2200 + _globals['_UPDATEOBLIGATIONRESPONSE']._serialized_start=2202 + _globals['_UPDATEOBLIGATIONRESPONSE']._serialized_end=2280 + _globals['_DELETEOBLIGATIONREQUEST']._serialized_start=2282 + _globals['_DELETEOBLIGATIONREQUEST']._serialized_end=2381 + _globals['_DELETEOBLIGATIONRESPONSE']._serialized_start=2383 + _globals['_DELETEOBLIGATIONRESPONSE']._serialized_end=2461 + _globals['_LISTOBLIGATIONSREQUEST']._serialized_start=2464 + _globals['_LISTOBLIGATIONSREQUEST']._serialized_end=2740 + _globals['_LISTOBLIGATIONSRESPONSE']._serialized_start=2743 + _globals['_LISTOBLIGATIONSRESPONSE']._serialized_end=2876 + _globals['_GETOBLIGATIONVALUEREQUEST']._serialized_start=2878 + _globals['_GETOBLIGATIONVALUEREQUEST']._serialized_end=2979 + _globals['_GETOBLIGATIONVALUERESPONSE']._serialized_start=2981 + _globals['_GETOBLIGATIONVALUERESPONSE']._serialized_end=3056 + _globals['_GETOBLIGATIONVALUESBYFQNSREQUEST']._serialized_start=3058 + _globals['_GETOBLIGATIONVALUESBYFQNSREQUEST']._serialized_end=3136 + _globals['_GETOBLIGATIONVALUESBYFQNSRESPONSE']._serialized_start=3139 + _globals['_GETOBLIGATIONVALUESBYFQNSRESPONSE']._serialized_end=3371 + _globals['_GETOBLIGATIONVALUESBYFQNSRESPONSE_FQNVALUEMAPENTRY']._serialized_start=3284 + _globals['_GETOBLIGATIONVALUESBYFQNSRESPONSE_FQNVALUEMAPENTRY']._serialized_end=3371 + _globals['_CREATEOBLIGATIONVALUEREQUEST']._serialized_start=3374 + _globals['_CREATEOBLIGATIONVALUEREQUEST']._serialized_end=3967 + _globals['_CREATEOBLIGATIONVALUERESPONSE']._serialized_start=3969 + _globals['_CREATEOBLIGATIONVALUERESPONSE']._serialized_end=4047 + _globals['_UPDATEOBLIGATIONVALUEREQUEST']._serialized_start=4050 + _globals['_UPDATEOBLIGATIONVALUEREQUEST']._serialized_end=4641 + _globals['_UPDATEOBLIGATIONVALUERESPONSE']._serialized_start=4643 + _globals['_UPDATEOBLIGATIONVALUERESPONSE']._serialized_end=4721 + _globals['_DELETEOBLIGATIONVALUEREQUEST']._serialized_start=4723 + _globals['_DELETEOBLIGATIONVALUEREQUEST']._serialized_end=4827 + _globals['_DELETEOBLIGATIONVALUERESPONSE']._serialized_start=4829 + _globals['_DELETEOBLIGATIONVALUERESPONSE']._serialized_end=4907 + _globals['_GETOBLIGATIONTRIGGERREQUEST']._serialized_start=4909 + _globals['_GETOBLIGATIONTRIGGERREQUEST']._serialized_end=4964 + _globals['_GETOBLIGATIONTRIGGERRESPONSE']._serialized_start=4966 + _globals['_GETOBLIGATIONTRIGGERRESPONSE']._serialized_end=5049 + _globals['_ADDOBLIGATIONTRIGGERREQUEST']._serialized_start=5052 + _globals['_ADDOBLIGATIONTRIGGERREQUEST']._serialized_end=5392 + _globals['_ADDOBLIGATIONTRIGGERRESPONSE']._serialized_start=5394 + _globals['_ADDOBLIGATIONTRIGGERRESPONSE']._serialized_end=5477 + _globals['_REMOVEOBLIGATIONTRIGGERREQUEST']._serialized_start=5479 + _globals['_REMOVEOBLIGATIONTRIGGERREQUEST']._serialized_end=5537 + _globals['_REMOVEOBLIGATIONTRIGGERRESPONSE']._serialized_start=5539 + _globals['_REMOVEOBLIGATIONTRIGGERRESPONSE']._serialized_end=5625 + _globals['_LISTOBLIGATIONTRIGGERSREQUEST']._serialized_start=5628 + _globals['_LISTOBLIGATIONTRIGGERSREQUEST']._serialized_end=5844 + _globals['_LISTOBLIGATIONTRIGGERSRESPONSE']._serialized_start=5847 + _globals['_LISTOBLIGATIONTRIGGERSRESPONSE']._serialized_end=5988 + _globals['_SERVICE']._serialized_start=6193 + _globals['_SERVICE']._serialized_end=8062 # @@protoc_insertion_point(module_scope) diff --git a/packages/otdf-python-proto/src/otdf_python_proto/policy/registeredresources/registered_resources_connect.py b/packages/otdf-python-proto/src/otdf_python_proto/policy/registeredresources/registered_resources_connect.py index 91e13d34..bdcb00e5 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/policy/registeredresources/registered_resources_connect.py +++ b/packages/otdf-python-proto/src/otdf_python_proto/policy/registeredresources/registered_resources_connect.py @@ -7,6 +7,7 @@ from connectrpc.client import ConnectClient, ConnectClientSync from connectrpc.code import Code +from connectrpc.compression import Compression from connectrpc.errors import ConnectError from connectrpc.interceptor import Interceptor, InterceptorSync from connectrpc.method import IdempotencyLevel, MethodInfo @@ -51,7 +52,7 @@ async def delete_registered_resource_value(self, request: policy_dot_registeredr class RegisteredResourcesServiceASGIApplication(ConnectASGIApplication[RegisteredResourcesService]): - def __init__(self, service: RegisteredResourcesService | AsyncGenerator[RegisteredResourcesService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None) -> None: + def __init__(self, service: RegisteredResourcesService | AsyncGenerator[RegisteredResourcesService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: super().__init__( service=service, endpoints=lambda svc: { @@ -168,6 +169,7 @@ def __init__(self, service: RegisteredResourcesService | AsyncGenerator[Register }, interceptors=interceptors, read_max_bytes=read_max_bytes, + compressions=compressions, ) @property @@ -424,7 +426,7 @@ def delete_registered_resource_value(self, request: policy_dot_registeredresourc class RegisteredResourcesServiceWSGIApplication(ConnectWSGIApplication): - def __init__(self, service: RegisteredResourcesServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None) -> None: + def __init__(self, service: RegisteredResourcesServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: super().__init__( endpoints={ "/policy.registeredresources.RegisteredResourcesService/CreateRegisteredResource": EndpointSync.unary( @@ -540,6 +542,7 @@ def __init__(self, service: RegisteredResourcesServiceSync, interceptors: Iterab }, interceptors=interceptors, read_max_bytes=read_max_bytes, + compressions=compressions, ) @property diff --git a/packages/otdf-python-proto/src/otdf_python_proto/policy/registeredresources/registered_resources_pb2.py b/packages/otdf-python-proto/src/otdf_python_proto/policy/registeredresources/registered_resources_pb2.py index 5400409b..03eb89b1 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/policy/registeredresources/registered_resources_pb2.py +++ b/packages/otdf-python-proto/src/otdf_python_proto/policy/registeredresources/registered_resources_pb2.py @@ -28,7 +28,7 @@ from policy import selectors_pb2 as policy_dot_selectors__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n5policy/registeredresources/registered_resources.proto\x12\x1apolicy.registeredresources\x1a\x1b\x62uf/validate/validate.proto\x1a\x13\x63ommon/common.proto\x1a\x14policy/objects.proto\x1a\x16policy/selectors.proto\"\xdd\x04\n\x1f\x43reateRegisteredResourceRequest\x12\xa8\x02\n\x04name\x18\x01 \x01(\tB\x93\x02\xbaH\x8f\x02r\x03\x18\xfd\x01\xba\x01\x83\x02\n\x0err_name_format\x12\xb3\x01Registered Resource Name 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])?$\')\xc8\x01\x01R\x04name\x12V\n\x06values\x18\x02 \x03(\tB>\xbaH;\x92\x01\x38\x08\x00\x18\x01\"2r0\x18\xfd\x01\x32+^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$R\x06values\x12+\n\x0cnamespace_id\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0bnamespaceId\x12/\n\rnamespace_fqn\x18\x04 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01R\x0cnamespaceFqn\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata:$\xbaH!\"\x1f\n\x0cnamespace_id\n\rnamespace_fqn\x10\x00\"Z\n CreateRegisteredResourceResponse\x12\x36\n\x08resource\x18\x01 \x01(\x0b\x32\x1a.policy.RegisteredResourceR\x08resource\"\x98\x04\n\x1cGetRegisteredResourceRequest\x12\x1a\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x02id\x12\xc2\x02\n\x04name\x18\x02 \x01(\tB\xab\x02\xbaH\xa7\x02r\x03\x18\xfd\x01\xba\x01\x9b\x02\n\x0err_name_format\x12\xb3\x01Registered Resource Name 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.\x1aSsize(this) > 0 ? this.matches(\'^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$\') : true\xc8\x01\x00H\x00R\x04name\x12/\n\rnamespace_fqn\x18\x03 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01R\x0cnamespaceFqn\x12+\n\x0cnamespace_id\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0bnamespaceId:$\xbaH!\"\x1f\n\x0cnamespace_id\n\rnamespace_fqn\x10\x00\x42\x13\n\nidentifier\x12\x05\xbaH\x02\x08\x01\"W\n\x1dGetRegisteredResourceResponse\x12\x36\n\x08resource\x18\x01 \x01(\x0b\x32\x1a.policy.RegisteredResourceR\x08resource\"\x9d\x01\n\x17RegisteredResourcesSort\x12M\n\x05\x66ield\x18\x01 \x01(\x0e\x32\x37.policy.registeredresources.SortRegisteredResourcesTypeR\x05\x66ield\x12\x33\n\tdirection\x18\x02 \x01(\x0e\x32\x15.policy.SortDirectionR\tdirection\"\xac\x02\n\x1eListRegisteredResourcesRequest\x12+\n\x0cnamespace_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0bnamespaceId\x12/\n\rnamespace_fqn\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01R\x0cnamespaceFqn\x12\x33\n\npagination\x18\n \x01(\x0b\x32\x13.policy.PageRequestR\npagination\x12Q\n\x04sort\x18\x0b \x03(\x0b\x32\x33.policy.registeredresources.RegisteredResourcesSortB\x08\xbaH\x05\x92\x01\x02\x10\x01R\x04sort:$\xbaH!\"\x1f\n\x0cnamespace_id\n\rnamespace_fqn\x10\x00\"\x91\x01\n\x1fListRegisteredResourcesResponse\x12\x38\n\tresources\x18\x01 \x03(\x0b\x32\x1a.policy.RegisteredResourceR\tresources\x12\x34\n\npagination\x18\n \x01(\x0b\x32\x14.policy.PageResponseR\npagination\"\x89\x04\n\x1fUpdateRegisteredResourceRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\xc0\x02\n\x04name\x18\x02 \x01(\tB\xab\x02\xbaH\xa7\x02r\x03\x18\xfd\x01\xba\x01\x9b\x02\n\x0err_name_format\x12\xb3\x01Registered Resource Name 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.\x1aSsize(this) > 0 ? this.matches(\'^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$\') : true\xc8\x01\x00R\x04name\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\x12T\n\x18metadata_update_behavior\x18\x65 \x01(\x0e\x32\x1a.common.MetadataUpdateEnumR\x16metadataUpdateBehavior\"Z\n UpdateRegisteredResourceResponse\x12\x36\n\x08resource\x18\x01 \x01(\x0b\x32\x1a.policy.RegisteredResourceR\x08resource\";\n\x1f\x44\x65leteRegisteredResourceRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"Z\n DeleteRegisteredResourceResponse\x12\x36\n\x08resource\x18\x01 \x01(\x0b\x32\x1a.policy.RegisteredResourceR\x08resource\"\xad\x04\n\x14\x41\x63tionAttributeValue\x12\'\n\taction_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x08\x61\x63tionId\x12\xb2\x02\n\x0b\x61\x63tion_name\x18\x02 \x01(\tB\x8e\x02\xbaH\x8a\x02r\x03\x18\xfd\x01\xba\x01\x81\x02\n\x12\x61\x63tion_name_format\x12\xad\x01\x41\x63tion name must be an alphanumeric string, allowing hyphens and underscores but not as the first or last character. The stored action name will be normalized to lower case.\x1a;this.matches(\'^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$\')H\x00R\nactionName\x12\x38\n\x12\x61ttribute_value_id\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x01R\x10\x61ttributeValueId\x12<\n\x13\x61ttribute_value_fqn\x18\x04 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01H\x01R\x11\x61ttributeValueFqnB\x1a\n\x11\x61\x63tion_identifier\x12\x05\xbaH\x02\x08\x01\x42#\n\x1a\x61ttribute_value_identifier\x12\x05\xbaH\x02\x08\x01\"\xa0\x04\n$CreateRegisteredResourceValueRequest\x12)\n\x0bresource_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\nresourceId\x12\xad\x02\n\x05value\x18\x02 \x01(\tB\x96\x02\xbaH\x92\x02r\x03\x18\xfd\x01\xba\x01\x86\x02\n\x0frr_value_format\x12\xb5\x01Registered Resource Value must be an alphanumeric string, allowing hyphens and underscores but not as the first or last character. The stored value will be normalized to lower case.\x1a;this.matches(\'^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$\')\xc8\x01\x01R\x05value\x12h\n\x17\x61\x63tion_attribute_values\x18\x03 \x03(\x0b\x32\x30.policy.registeredresources.ActionAttributeValueR\x15\x61\x63tionAttributeValues\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\"^\n%CreateRegisteredResourceValueResponse\x12\x35\n\x05value\x18\x01 \x01(\x0b\x32\x1f.policy.RegisteredResourceValueR\x05value\"t\n!GetRegisteredResourceValueRequest\x12\x1a\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x02id\x12\x1e\n\x03\x66qn\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01H\x00R\x03\x66qnB\x13\n\nidentifier\x12\x05\xbaH\x02\x08\x01\"[\n\"GetRegisteredResourceValueResponse\x12\x35\n\x05value\x18\x01 \x01(\x0b\x32\x1f.policy.RegisteredResourceValueR\x05value\"S\n(GetRegisteredResourceValuesByFQNsRequest\x12\'\n\x04\x66qns\x18\x01 \x03(\tB\x13\xbaH\x10\x92\x01\r\x08\x01\x18\x01\"\x07r\x05\x10\x01\x88\x01\x01R\x04\x66qns\"\x88\x02\n)GetRegisteredResourceValuesByFQNsResponse\x12z\n\rfqn_value_map\x18\x01 \x03(\x0b\x32V.policy.registeredresources.GetRegisteredResourceValuesByFQNsResponse.FqnValueMapEntryR\x0b\x66qnValueMap\x1a_\n\x10\x46qnValueMapEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x35\n\x05value\x18\x02 \x01(\x0b\x32\x1f.policy.RegisteredResourceValueR\x05value:\x02\x38\x01\"\xb2\x02\n#ListRegisteredResourceValuesRequest\x12\xd5\x01\n\x0bresource_id\x18\x01 \x01(\tB\xb3\x01\xbaH\xaf\x01\xba\x01\xab\x01\n\x14optional_uuid_format\x12#Optional field must be a valid UUID\x1ansize(this) == 0 || this.matches(\'[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\')R\nresourceId\x12\x33\n\npagination\x18\n \x01(\x0b\x32\x13.policy.PageRequestR\npagination\"\x95\x01\n$ListRegisteredResourceValuesResponse\x12\x37\n\x06values\x18\x01 \x03(\x0b\x32\x1f.policy.RegisteredResourceValueR\x06values\x12\x34\n\npagination\x18\n \x01(\x0b\x32\x14.policy.PageResponseR\npagination\"\xfd\x04\n$UpdateRegisteredResourceValueRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\xc5\x02\n\x05value\x18\x02 \x01(\tB\xae\x02\xbaH\xaa\x02r\x03\x18\xfd\x01\xba\x01\x9e\x02\n\x0frr_value_format\x12\xb5\x01Registered Resource Value must be an alphanumeric string, allowing hyphens and underscores but not as the first or last character. The stored value will be normalized to lower case.\x1aSsize(this) > 0 ? this.matches(\'^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$\') : true\xc8\x01\x00R\x05value\x12h\n\x17\x61\x63tion_attribute_values\x18\x03 \x03(\x0b\x32\x30.policy.registeredresources.ActionAttributeValueR\x15\x61\x63tionAttributeValues\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\x12T\n\x18metadata_update_behavior\x18\x65 \x01(\x0e\x32\x1a.common.MetadataUpdateEnumR\x16metadataUpdateBehavior\"^\n%UpdateRegisteredResourceValueResponse\x12\x35\n\x05value\x18\x01 \x01(\x0b\x32\x1f.policy.RegisteredResourceValueR\x05value\"@\n$DeleteRegisteredResourceValueRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"^\n%DeleteRegisteredResourceValueResponse\x12\x35\n\x05value\x18\x01 \x01(\x0b\x32\x1f.policy.RegisteredResourceValueR\x05value*\xd4\x01\n\x1bSortRegisteredResourcesType\x12.\n*SORT_REGISTERED_RESOURCES_TYPE_UNSPECIFIED\x10\x00\x12\'\n#SORT_REGISTERED_RESOURCES_TYPE_NAME\x10\x01\x12-\n)SORT_REGISTERED_RESOURCES_TYPE_CREATED_AT\x10\x02\x12-\n)SORT_REGISTERED_RESOURCES_TYPE_UPDATED_AT\x10\x03\x32\x88\x0e\n\x1aRegisteredResourcesService\x12\x97\x01\n\x18\x43reateRegisteredResource\x12;.policy.registeredresources.CreateRegisteredResourceRequest\x1a<.policy.registeredresources.CreateRegisteredResourceResponse\"\x00\x12\x8e\x01\n\x15GetRegisteredResource\x12\x38.policy.registeredresources.GetRegisteredResourceRequest\x1a\x39.policy.registeredresources.GetRegisteredResourceResponse\"\x00\x12\x94\x01\n\x17ListRegisteredResources\x12:.policy.registeredresources.ListRegisteredResourcesRequest\x1a;.policy.registeredresources.ListRegisteredResourcesResponse\"\x00\x12\x97\x01\n\x18UpdateRegisteredResource\x12;.policy.registeredresources.UpdateRegisteredResourceRequest\x1a<.policy.registeredresources.UpdateRegisteredResourceResponse\"\x00\x12\x97\x01\n\x18\x44\x65leteRegisteredResource\x12;.policy.registeredresources.DeleteRegisteredResourceRequest\x1a<.policy.registeredresources.DeleteRegisteredResourceResponse\"\x00\x12\xa6\x01\n\x1d\x43reateRegisteredResourceValue\x12@.policy.registeredresources.CreateRegisteredResourceValueRequest\x1a\x41.policy.registeredresources.CreateRegisteredResourceValueResponse\"\x00\x12\x9d\x01\n\x1aGetRegisteredResourceValue\x12=.policy.registeredresources.GetRegisteredResourceValueRequest\x1a>.policy.registeredresources.GetRegisteredResourceValueResponse\"\x00\x12\xb2\x01\n!GetRegisteredResourceValuesByFQNs\x12\x44.policy.registeredresources.GetRegisteredResourceValuesByFQNsRequest\x1a\x45.policy.registeredresources.GetRegisteredResourceValuesByFQNsResponse\"\x00\x12\xa3\x01\n\x1cListRegisteredResourceValues\x12?.policy.registeredresources.ListRegisteredResourceValuesRequest\x1a@.policy.registeredresources.ListRegisteredResourceValuesResponse\"\x00\x12\xa6\x01\n\x1dUpdateRegisteredResourceValue\x12@.policy.registeredresources.UpdateRegisteredResourceValueRequest\x1a\x41.policy.registeredresources.UpdateRegisteredResourceValueResponse\"\x00\x12\xa6\x01\n\x1d\x44\x65leteRegisteredResourceValue\x12@.policy.registeredresources.DeleteRegisteredResourceValueRequest\x1a\x41.policy.registeredresources.DeleteRegisteredResourceValueResponse\"\x00\x42\xc3\x01\n\x1e\x63om.policy.registeredresourcesB\x18RegisteredResourcesProtoP\x01\xa2\x02\x03PRX\xaa\x02\x1aPolicy.Registeredresources\xca\x02\x1aPolicy\\Registeredresources\xe2\x02&Policy\\Registeredresources\\GPBMetadata\xea\x02\x1bPolicy::Registeredresourcesb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n5policy/registeredresources/registered_resources.proto\x12\x1apolicy.registeredresources\x1a\x1b\x62uf/validate/validate.proto\x1a\x13\x63ommon/common.proto\x1a\x14policy/objects.proto\x1a\x16policy/selectors.proto\"\xdd\x04\n\x1f\x43reateRegisteredResourceRequest\x12\xa8\x02\n\x04name\x18\x01 \x01(\tB\x93\x02\xbaH\x8f\x02r\x03\x18\xfd\x01\xba\x01\x83\x02\n\x0err_name_format\x12\xb3\x01Registered Resource Name 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])?$\')\xc8\x01\x01R\x04name\x12V\n\x06values\x18\x02 \x03(\tB>\xbaH;\x92\x01\x38\x08\x00\x18\x01\"2r0\x18\xfd\x01\x32+^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$R\x06values\x12+\n\x0cnamespace_id\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0bnamespaceId\x12/\n\rnamespace_fqn\x18\x04 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01R\x0cnamespaceFqn\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata:$\xbaH!\"\x1f\n\x0cnamespace_id\n\rnamespace_fqn\x10\x00\"Z\n CreateRegisteredResourceResponse\x12\x36\n\x08resource\x18\x01 \x01(\x0b\x32\x1a.policy.RegisteredResourceR\x08resource\"\x98\x04\n\x1cGetRegisteredResourceRequest\x12\x1a\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x02id\x12\xc2\x02\n\x04name\x18\x02 \x01(\tB\xab\x02\xbaH\xa7\x02r\x03\x18\xfd\x01\xba\x01\x9b\x02\n\x0err_name_format\x12\xb3\x01Registered Resource Name 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.\x1aSsize(this) > 0 ? this.matches(\'^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$\') : true\xc8\x01\x00H\x00R\x04name\x12/\n\rnamespace_fqn\x18\x03 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01R\x0cnamespaceFqn\x12+\n\x0cnamespace_id\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0bnamespaceId:$\xbaH!\"\x1f\n\x0cnamespace_id\n\rnamespace_fqn\x10\x00\x42\x13\n\nidentifier\x12\x05\xbaH\x02\x08\x01\"W\n\x1dGetRegisteredResourceResponse\x12\x36\n\x08resource\x18\x01 \x01(\x0b\x32\x1a.policy.RegisteredResourceR\x08resource\"\xb1\x01\n\x17RegisteredResourcesSort\x12W\n\x05\x66ield\x18\x01 \x01(\x0e\x32\x37.policy.registeredresources.SortRegisteredResourcesTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x05\x66ield\x12=\n\tdirection\x18\x02 \x01(\x0e\x32\x15.policy.SortDirectionB\x08\xbaH\x05\x82\x01\x02\x10\x01R\tdirection\"\xac\x02\n\x1eListRegisteredResourcesRequest\x12+\n\x0cnamespace_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0bnamespaceId\x12/\n\rnamespace_fqn\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01R\x0cnamespaceFqn\x12\x33\n\npagination\x18\n \x01(\x0b\x32\x13.policy.PageRequestR\npagination\x12Q\n\x04sort\x18\x0b \x03(\x0b\x32\x33.policy.registeredresources.RegisteredResourcesSortB\x08\xbaH\x05\x92\x01\x02\x10\x01R\x04sort:$\xbaH!\"\x1f\n\x0cnamespace_id\n\rnamespace_fqn\x10\x00\"\x91\x01\n\x1fListRegisteredResourcesResponse\x12\x38\n\tresources\x18\x01 \x03(\x0b\x32\x1a.policy.RegisteredResourceR\tresources\x12\x34\n\npagination\x18\n \x01(\x0b\x32\x14.policy.PageResponseR\npagination\"\x89\x04\n\x1fUpdateRegisteredResourceRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\xc0\x02\n\x04name\x18\x02 \x01(\tB\xab\x02\xbaH\xa7\x02r\x03\x18\xfd\x01\xba\x01\x9b\x02\n\x0err_name_format\x12\xb3\x01Registered Resource Name 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.\x1aSsize(this) > 0 ? this.matches(\'^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$\') : true\xc8\x01\x00R\x04name\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\x12T\n\x18metadata_update_behavior\x18\x65 \x01(\x0e\x32\x1a.common.MetadataUpdateEnumR\x16metadataUpdateBehavior\"Z\n UpdateRegisteredResourceResponse\x12\x36\n\x08resource\x18\x01 \x01(\x0b\x32\x1a.policy.RegisteredResourceR\x08resource\";\n\x1f\x44\x65leteRegisteredResourceRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"Z\n DeleteRegisteredResourceResponse\x12\x36\n\x08resource\x18\x01 \x01(\x0b\x32\x1a.policy.RegisteredResourceR\x08resource\"\xad\x04\n\x14\x41\x63tionAttributeValue\x12\'\n\taction_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x08\x61\x63tionId\x12\xb2\x02\n\x0b\x61\x63tion_name\x18\x02 \x01(\tB\x8e\x02\xbaH\x8a\x02r\x03\x18\xfd\x01\xba\x01\x81\x02\n\x12\x61\x63tion_name_format\x12\xad\x01\x41\x63tion name must be an alphanumeric string, allowing hyphens and underscores but not as the first or last character. The stored action name will be normalized to lower case.\x1a;this.matches(\'^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$\')H\x00R\nactionName\x12\x38\n\x12\x61ttribute_value_id\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x01R\x10\x61ttributeValueId\x12<\n\x13\x61ttribute_value_fqn\x18\x04 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01H\x01R\x11\x61ttributeValueFqnB\x1a\n\x11\x61\x63tion_identifier\x12\x05\xbaH\x02\x08\x01\x42#\n\x1a\x61ttribute_value_identifier\x12\x05\xbaH\x02\x08\x01\"\xa0\x04\n$CreateRegisteredResourceValueRequest\x12)\n\x0bresource_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\nresourceId\x12\xad\x02\n\x05value\x18\x02 \x01(\tB\x96\x02\xbaH\x92\x02r\x03\x18\xfd\x01\xba\x01\x86\x02\n\x0frr_value_format\x12\xb5\x01Registered Resource Value must be an alphanumeric string, allowing hyphens and underscores but not as the first or last character. The stored value will be normalized to lower case.\x1a;this.matches(\'^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$\')\xc8\x01\x01R\x05value\x12h\n\x17\x61\x63tion_attribute_values\x18\x03 \x03(\x0b\x32\x30.policy.registeredresources.ActionAttributeValueR\x15\x61\x63tionAttributeValues\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\"^\n%CreateRegisteredResourceValueResponse\x12\x35\n\x05value\x18\x01 \x01(\x0b\x32\x1f.policy.RegisteredResourceValueR\x05value\"t\n!GetRegisteredResourceValueRequest\x12\x1a\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01H\x00R\x02id\x12\x1e\n\x03\x66qn\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01H\x00R\x03\x66qnB\x13\n\nidentifier\x12\x05\xbaH\x02\x08\x01\"[\n\"GetRegisteredResourceValueResponse\x12\x35\n\x05value\x18\x01 \x01(\x0b\x32\x1f.policy.RegisteredResourceValueR\x05value\"S\n(GetRegisteredResourceValuesByFQNsRequest\x12\'\n\x04\x66qns\x18\x01 \x03(\tB\x13\xbaH\x10\x92\x01\r\x08\x01\x18\x01\"\x07r\x05\x10\x01\x88\x01\x01R\x04\x66qns\"\x88\x02\n)GetRegisteredResourceValuesByFQNsResponse\x12z\n\rfqn_value_map\x18\x01 \x03(\x0b\x32V.policy.registeredresources.GetRegisteredResourceValuesByFQNsResponse.FqnValueMapEntryR\x0b\x66qnValueMap\x1a_\n\x10\x46qnValueMapEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x35\n\x05value\x18\x02 \x01(\x0b\x32\x1f.policy.RegisteredResourceValueR\x05value:\x02\x38\x01\"\xb2\x02\n#ListRegisteredResourceValuesRequest\x12\xd5\x01\n\x0bresource_id\x18\x01 \x01(\tB\xb3\x01\xbaH\xaf\x01\xba\x01\xab\x01\n\x14optional_uuid_format\x12#Optional field must be a valid UUID\x1ansize(this) == 0 || this.matches(\'[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\')R\nresourceId\x12\x33\n\npagination\x18\n \x01(\x0b\x32\x13.policy.PageRequestR\npagination\"\x95\x01\n$ListRegisteredResourceValuesResponse\x12\x37\n\x06values\x18\x01 \x03(\x0b\x32\x1f.policy.RegisteredResourceValueR\x06values\x12\x34\n\npagination\x18\n \x01(\x0b\x32\x14.policy.PageResponseR\npagination\"\xfd\x04\n$UpdateRegisteredResourceValueRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\xc5\x02\n\x05value\x18\x02 \x01(\tB\xae\x02\xbaH\xaa\x02r\x03\x18\xfd\x01\xba\x01\x9e\x02\n\x0frr_value_format\x12\xb5\x01Registered Resource Value must be an alphanumeric string, allowing hyphens and underscores but not as the first or last character. The stored value will be normalized to lower case.\x1aSsize(this) > 0 ? this.matches(\'^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$\') : true\xc8\x01\x00R\x05value\x12h\n\x17\x61\x63tion_attribute_values\x18\x03 \x03(\x0b\x32\x30.policy.registeredresources.ActionAttributeValueR\x15\x61\x63tionAttributeValues\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\x12T\n\x18metadata_update_behavior\x18\x65 \x01(\x0e\x32\x1a.common.MetadataUpdateEnumR\x16metadataUpdateBehavior\"^\n%UpdateRegisteredResourceValueResponse\x12\x35\n\x05value\x18\x01 \x01(\x0b\x32\x1f.policy.RegisteredResourceValueR\x05value\"@\n$DeleteRegisteredResourceValueRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"^\n%DeleteRegisteredResourceValueResponse\x12\x35\n\x05value\x18\x01 \x01(\x0b\x32\x1f.policy.RegisteredResourceValueR\x05value*\xd4\x01\n\x1bSortRegisteredResourcesType\x12.\n*SORT_REGISTERED_RESOURCES_TYPE_UNSPECIFIED\x10\x00\x12\'\n#SORT_REGISTERED_RESOURCES_TYPE_NAME\x10\x01\x12-\n)SORT_REGISTERED_RESOURCES_TYPE_CREATED_AT\x10\x02\x12-\n)SORT_REGISTERED_RESOURCES_TYPE_UPDATED_AT\x10\x03\x32\x88\x0e\n\x1aRegisteredResourcesService\x12\x97\x01\n\x18\x43reateRegisteredResource\x12;.policy.registeredresources.CreateRegisteredResourceRequest\x1a<.policy.registeredresources.CreateRegisteredResourceResponse\"\x00\x12\x8e\x01\n\x15GetRegisteredResource\x12\x38.policy.registeredresources.GetRegisteredResourceRequest\x1a\x39.policy.registeredresources.GetRegisteredResourceResponse\"\x00\x12\x94\x01\n\x17ListRegisteredResources\x12:.policy.registeredresources.ListRegisteredResourcesRequest\x1a;.policy.registeredresources.ListRegisteredResourcesResponse\"\x00\x12\x97\x01\n\x18UpdateRegisteredResource\x12;.policy.registeredresources.UpdateRegisteredResourceRequest\x1a<.policy.registeredresources.UpdateRegisteredResourceResponse\"\x00\x12\x97\x01\n\x18\x44\x65leteRegisteredResource\x12;.policy.registeredresources.DeleteRegisteredResourceRequest\x1a<.policy.registeredresources.DeleteRegisteredResourceResponse\"\x00\x12\xa6\x01\n\x1d\x43reateRegisteredResourceValue\x12@.policy.registeredresources.CreateRegisteredResourceValueRequest\x1a\x41.policy.registeredresources.CreateRegisteredResourceValueResponse\"\x00\x12\x9d\x01\n\x1aGetRegisteredResourceValue\x12=.policy.registeredresources.GetRegisteredResourceValueRequest\x1a>.policy.registeredresources.GetRegisteredResourceValueResponse\"\x00\x12\xb2\x01\n!GetRegisteredResourceValuesByFQNs\x12\x44.policy.registeredresources.GetRegisteredResourceValuesByFQNsRequest\x1a\x45.policy.registeredresources.GetRegisteredResourceValuesByFQNsResponse\"\x00\x12\xa3\x01\n\x1cListRegisteredResourceValues\x12?.policy.registeredresources.ListRegisteredResourceValuesRequest\x1a@.policy.registeredresources.ListRegisteredResourceValuesResponse\"\x00\x12\xa6\x01\n\x1dUpdateRegisteredResourceValue\x12@.policy.registeredresources.UpdateRegisteredResourceValueRequest\x1a\x41.policy.registeredresources.UpdateRegisteredResourceValueResponse\"\x00\x12\xa6\x01\n\x1d\x44\x65leteRegisteredResourceValue\x12@.policy.registeredresources.DeleteRegisteredResourceValueRequest\x1a\x41.policy.registeredresources.DeleteRegisteredResourceValueResponse\"\x00\x42\xc3\x01\n\x1e\x63om.policy.registeredresourcesB\x18RegisteredResourcesProtoP\x01\xa2\x02\x03PRX\xaa\x02\x1aPolicy.Registeredresources\xca\x02\x1aPolicy\\Registeredresources\xe2\x02&Policy\\Registeredresources\\GPBMetadata\xea\x02\x1bPolicy::Registeredresourcesb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -58,6 +58,10 @@ _globals['_GETREGISTEREDRESOURCEREQUEST'].fields_by_name['namespace_id']._serialized_options = b'\272H\005r\003\260\001\001' _globals['_GETREGISTEREDRESOURCEREQUEST']._loaded_options = None _globals['_GETREGISTEREDRESOURCEREQUEST']._serialized_options = b'\272H!\"\037\n\014namespace_id\n\rnamespace_fqn\020\000' + _globals['_REGISTEREDRESOURCESSORT'].fields_by_name['field']._loaded_options = None + _globals['_REGISTEREDRESOURCESSORT'].fields_by_name['field']._serialized_options = b'\272H\005\202\001\002\020\001' + _globals['_REGISTEREDRESOURCESSORT'].fields_by_name['direction']._loaded_options = None + _globals['_REGISTEREDRESOURCESSORT'].fields_by_name['direction']._serialized_options = b'\272H\005\202\001\002\020\001' _globals['_LISTREGISTEREDRESOURCESREQUEST'].fields_by_name['namespace_id']._loaded_options = None _globals['_LISTREGISTEREDRESOURCESREQUEST'].fields_by_name['namespace_id']._serialized_options = b'\272H\005r\003\260\001\001' _globals['_LISTREGISTEREDRESOURCESREQUEST'].fields_by_name['namespace_fqn']._loaded_options = None @@ -106,8 +110,8 @@ _globals['_UPDATEREGISTEREDRESOURCEVALUEREQUEST'].fields_by_name['value']._serialized_options = b'\272H\252\002r\003\030\375\001\272\001\236\002\n\017rr_value_format\022\265\001Registered Resource Value must be an alphanumeric string, allowing hyphens and underscores but not as the first or last character. The stored value will be normalized to lower case.\032Ssize(this) > 0 ? this.matches(\'^[a-zA-Z0-9](?:[a-zA-Z0-9_-]*[a-zA-Z0-9])?$\') : true\310\001\000' _globals['_DELETEREGISTEREDRESOURCEVALUEREQUEST'].fields_by_name['id']._loaded_options = None _globals['_DELETEREGISTEREDRESOURCEVALUEREQUEST'].fields_by_name['id']._serialized_options = b'\272H\005r\003\260\001\001' - _globals['_SORTREGISTEREDRESOURCESTYPE']._serialized_start=6015 - _globals['_SORTREGISTEREDRESOURCESTYPE']._serialized_end=6227 + _globals['_SORTREGISTEREDRESOURCESTYPE']._serialized_start=6035 + _globals['_SORTREGISTEREDRESOURCESTYPE']._serialized_end=6247 _globals['_CREATEREGISTEREDRESOURCEREQUEST']._serialized_start=182 _globals['_CREATEREGISTEREDRESOURCEREQUEST']._serialized_end=787 _globals['_CREATEREGISTEREDRESOURCERESPONSE']._serialized_start=789 @@ -117,47 +121,47 @@ _globals['_GETREGISTEREDRESOURCERESPONSE']._serialized_start=1420 _globals['_GETREGISTEREDRESOURCERESPONSE']._serialized_end=1507 _globals['_REGISTEREDRESOURCESSORT']._serialized_start=1510 - _globals['_REGISTEREDRESOURCESSORT']._serialized_end=1667 - _globals['_LISTREGISTEREDRESOURCESREQUEST']._serialized_start=1670 - _globals['_LISTREGISTEREDRESOURCESREQUEST']._serialized_end=1970 - _globals['_LISTREGISTEREDRESOURCESRESPONSE']._serialized_start=1973 - _globals['_LISTREGISTEREDRESOURCESRESPONSE']._serialized_end=2118 - _globals['_UPDATEREGISTEREDRESOURCEREQUEST']._serialized_start=2121 - _globals['_UPDATEREGISTEREDRESOURCEREQUEST']._serialized_end=2642 - _globals['_UPDATEREGISTEREDRESOURCERESPONSE']._serialized_start=2644 - _globals['_UPDATEREGISTEREDRESOURCERESPONSE']._serialized_end=2734 - _globals['_DELETEREGISTEREDRESOURCEREQUEST']._serialized_start=2736 - _globals['_DELETEREGISTEREDRESOURCEREQUEST']._serialized_end=2795 - _globals['_DELETEREGISTEREDRESOURCERESPONSE']._serialized_start=2797 - _globals['_DELETEREGISTEREDRESOURCERESPONSE']._serialized_end=2887 - _globals['_ACTIONATTRIBUTEVALUE']._serialized_start=2890 - _globals['_ACTIONATTRIBUTEVALUE']._serialized_end=3447 - _globals['_CREATEREGISTEREDRESOURCEVALUEREQUEST']._serialized_start=3450 - _globals['_CREATEREGISTEREDRESOURCEVALUEREQUEST']._serialized_end=3994 - _globals['_CREATEREGISTEREDRESOURCEVALUERESPONSE']._serialized_start=3996 - _globals['_CREATEREGISTEREDRESOURCEVALUERESPONSE']._serialized_end=4090 - _globals['_GETREGISTEREDRESOURCEVALUEREQUEST']._serialized_start=4092 - _globals['_GETREGISTEREDRESOURCEVALUEREQUEST']._serialized_end=4208 - _globals['_GETREGISTEREDRESOURCEVALUERESPONSE']._serialized_start=4210 - _globals['_GETREGISTEREDRESOURCEVALUERESPONSE']._serialized_end=4301 - _globals['_GETREGISTEREDRESOURCEVALUESBYFQNSREQUEST']._serialized_start=4303 - _globals['_GETREGISTEREDRESOURCEVALUESBYFQNSREQUEST']._serialized_end=4386 - _globals['_GETREGISTEREDRESOURCEVALUESBYFQNSRESPONSE']._serialized_start=4389 - _globals['_GETREGISTEREDRESOURCEVALUESBYFQNSRESPONSE']._serialized_end=4653 - _globals['_GETREGISTEREDRESOURCEVALUESBYFQNSRESPONSE_FQNVALUEMAPENTRY']._serialized_start=4558 - _globals['_GETREGISTEREDRESOURCEVALUESBYFQNSRESPONSE_FQNVALUEMAPENTRY']._serialized_end=4653 - _globals['_LISTREGISTEREDRESOURCEVALUESREQUEST']._serialized_start=4656 - _globals['_LISTREGISTEREDRESOURCEVALUESREQUEST']._serialized_end=4962 - _globals['_LISTREGISTEREDRESOURCEVALUESRESPONSE']._serialized_start=4965 - _globals['_LISTREGISTEREDRESOURCEVALUESRESPONSE']._serialized_end=5114 - _globals['_UPDATEREGISTEREDRESOURCEVALUEREQUEST']._serialized_start=5117 - _globals['_UPDATEREGISTEREDRESOURCEVALUEREQUEST']._serialized_end=5754 - _globals['_UPDATEREGISTEREDRESOURCEVALUERESPONSE']._serialized_start=5756 - _globals['_UPDATEREGISTEREDRESOURCEVALUERESPONSE']._serialized_end=5850 - _globals['_DELETEREGISTEREDRESOURCEVALUEREQUEST']._serialized_start=5852 - _globals['_DELETEREGISTEREDRESOURCEVALUEREQUEST']._serialized_end=5916 - _globals['_DELETEREGISTEREDRESOURCEVALUERESPONSE']._serialized_start=5918 - _globals['_DELETEREGISTEREDRESOURCEVALUERESPONSE']._serialized_end=6012 - _globals['_REGISTEREDRESOURCESSERVICE']._serialized_start=6230 - _globals['_REGISTEREDRESOURCESSERVICE']._serialized_end=8030 + _globals['_REGISTEREDRESOURCESSORT']._serialized_end=1687 + _globals['_LISTREGISTEREDRESOURCESREQUEST']._serialized_start=1690 + _globals['_LISTREGISTEREDRESOURCESREQUEST']._serialized_end=1990 + _globals['_LISTREGISTEREDRESOURCESRESPONSE']._serialized_start=1993 + _globals['_LISTREGISTEREDRESOURCESRESPONSE']._serialized_end=2138 + _globals['_UPDATEREGISTEREDRESOURCEREQUEST']._serialized_start=2141 + _globals['_UPDATEREGISTEREDRESOURCEREQUEST']._serialized_end=2662 + _globals['_UPDATEREGISTEREDRESOURCERESPONSE']._serialized_start=2664 + _globals['_UPDATEREGISTEREDRESOURCERESPONSE']._serialized_end=2754 + _globals['_DELETEREGISTEREDRESOURCEREQUEST']._serialized_start=2756 + _globals['_DELETEREGISTEREDRESOURCEREQUEST']._serialized_end=2815 + _globals['_DELETEREGISTEREDRESOURCERESPONSE']._serialized_start=2817 + _globals['_DELETEREGISTEREDRESOURCERESPONSE']._serialized_end=2907 + _globals['_ACTIONATTRIBUTEVALUE']._serialized_start=2910 + _globals['_ACTIONATTRIBUTEVALUE']._serialized_end=3467 + _globals['_CREATEREGISTEREDRESOURCEVALUEREQUEST']._serialized_start=3470 + _globals['_CREATEREGISTEREDRESOURCEVALUEREQUEST']._serialized_end=4014 + _globals['_CREATEREGISTEREDRESOURCEVALUERESPONSE']._serialized_start=4016 + _globals['_CREATEREGISTEREDRESOURCEVALUERESPONSE']._serialized_end=4110 + _globals['_GETREGISTEREDRESOURCEVALUEREQUEST']._serialized_start=4112 + _globals['_GETREGISTEREDRESOURCEVALUEREQUEST']._serialized_end=4228 + _globals['_GETREGISTEREDRESOURCEVALUERESPONSE']._serialized_start=4230 + _globals['_GETREGISTEREDRESOURCEVALUERESPONSE']._serialized_end=4321 + _globals['_GETREGISTEREDRESOURCEVALUESBYFQNSREQUEST']._serialized_start=4323 + _globals['_GETREGISTEREDRESOURCEVALUESBYFQNSREQUEST']._serialized_end=4406 + _globals['_GETREGISTEREDRESOURCEVALUESBYFQNSRESPONSE']._serialized_start=4409 + _globals['_GETREGISTEREDRESOURCEVALUESBYFQNSRESPONSE']._serialized_end=4673 + _globals['_GETREGISTEREDRESOURCEVALUESBYFQNSRESPONSE_FQNVALUEMAPENTRY']._serialized_start=4578 + _globals['_GETREGISTEREDRESOURCEVALUESBYFQNSRESPONSE_FQNVALUEMAPENTRY']._serialized_end=4673 + _globals['_LISTREGISTEREDRESOURCEVALUESREQUEST']._serialized_start=4676 + _globals['_LISTREGISTEREDRESOURCEVALUESREQUEST']._serialized_end=4982 + _globals['_LISTREGISTEREDRESOURCEVALUESRESPONSE']._serialized_start=4985 + _globals['_LISTREGISTEREDRESOURCEVALUESRESPONSE']._serialized_end=5134 + _globals['_UPDATEREGISTEREDRESOURCEVALUEREQUEST']._serialized_start=5137 + _globals['_UPDATEREGISTEREDRESOURCEVALUEREQUEST']._serialized_end=5774 + _globals['_UPDATEREGISTEREDRESOURCEVALUERESPONSE']._serialized_start=5776 + _globals['_UPDATEREGISTEREDRESOURCEVALUERESPONSE']._serialized_end=5870 + _globals['_DELETEREGISTEREDRESOURCEVALUEREQUEST']._serialized_start=5872 + _globals['_DELETEREGISTEREDRESOURCEVALUEREQUEST']._serialized_end=5936 + _globals['_DELETEREGISTEREDRESOURCEVALUERESPONSE']._serialized_start=5938 + _globals['_DELETEREGISTEREDRESOURCEVALUERESPONSE']._serialized_end=6032 + _globals['_REGISTEREDRESOURCESSERVICE']._serialized_start=6250 + _globals['_REGISTEREDRESOURCESSERVICE']._serialized_end=8050 # @@protoc_insertion_point(module_scope) diff --git a/packages/otdf-python-proto/src/otdf_python_proto/policy/resourcemapping/resource_mapping_connect.py b/packages/otdf-python-proto/src/otdf_python_proto/policy/resourcemapping/resource_mapping_connect.py index c685e82c..99e33d11 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/policy/resourcemapping/resource_mapping_connect.py +++ b/packages/otdf-python-proto/src/otdf_python_proto/policy/resourcemapping/resource_mapping_connect.py @@ -7,6 +7,7 @@ from connectrpc.client import ConnectClient, ConnectClientSync from connectrpc.code import Code +from connectrpc.compression import Compression from connectrpc.errors import ConnectError from connectrpc.interceptor import Interceptor, InterceptorSync from connectrpc.method import IdempotencyLevel, MethodInfo @@ -51,7 +52,7 @@ async def delete_resource_mapping(self, request: policy_dot_resourcemapping_dot_ class ResourceMappingServiceASGIApplication(ConnectASGIApplication[ResourceMappingService]): - def __init__(self, service: ResourceMappingService | AsyncGenerator[ResourceMappingService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None) -> None: + def __init__(self, service: ResourceMappingService | AsyncGenerator[ResourceMappingService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: super().__init__( service=service, endpoints=lambda svc: { @@ -168,6 +169,7 @@ def __init__(self, service: ResourceMappingService | AsyncGenerator[ResourceMapp }, interceptors=interceptors, read_max_bytes=read_max_bytes, + compressions=compressions, ) @property @@ -434,7 +436,7 @@ def delete_resource_mapping(self, request: policy_dot_resourcemapping_dot_resour class ResourceMappingServiceWSGIApplication(ConnectWSGIApplication): - def __init__(self, service: ResourceMappingServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None) -> None: + def __init__(self, service: ResourceMappingServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: super().__init__( endpoints={ "/policy.resourcemapping.ResourceMappingService/ListResourceMappingGroups": EndpointSync.unary( @@ -550,6 +552,7 @@ def __init__(self, service: ResourceMappingServiceSync, interceptors: Iterable[I }, interceptors=interceptors, read_max_bytes=read_max_bytes, + compressions=compressions, ) @property diff --git a/packages/otdf-python-proto/src/otdf_python_proto/policy/subjectmapping/subject_mapping_connect.py b/packages/otdf-python-proto/src/otdf_python_proto/policy/subjectmapping/subject_mapping_connect.py index 5a3ea3c0..26e09451 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/policy/subjectmapping/subject_mapping_connect.py +++ b/packages/otdf-python-proto/src/otdf_python_proto/policy/subjectmapping/subject_mapping_connect.py @@ -7,6 +7,7 @@ from connectrpc.client import ConnectClient, ConnectClientSync from connectrpc.code import Code +from connectrpc.compression import Compression from connectrpc.errors import ConnectError from connectrpc.interceptor import Interceptor, InterceptorSync from connectrpc.method import IdempotencyLevel, MethodInfo @@ -54,7 +55,7 @@ async def delete_all_unmapped_subject_condition_sets(self, request: policy_dot_s class SubjectMappingServiceASGIApplication(ConnectASGIApplication[SubjectMappingService]): - def __init__(self, service: SubjectMappingService | AsyncGenerator[SubjectMappingService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None) -> None: + def __init__(self, service: SubjectMappingService | AsyncGenerator[SubjectMappingService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: super().__init__( service=service, endpoints=lambda svc: { @@ -181,6 +182,7 @@ def __init__(self, service: SubjectMappingService | AsyncGenerator[SubjectMappin }, interceptors=interceptors, read_max_bytes=read_max_bytes, + compressions=compressions, ) @property @@ -467,7 +469,7 @@ def delete_all_unmapped_subject_condition_sets(self, request: policy_dot_subject class SubjectMappingServiceWSGIApplication(ConnectWSGIApplication): - def __init__(self, service: SubjectMappingServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None) -> None: + def __init__(self, service: SubjectMappingServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: super().__init__( endpoints={ "/policy.subjectmapping.SubjectMappingService/MatchSubjectMappings": EndpointSync.unary( @@ -593,6 +595,7 @@ def __init__(self, service: SubjectMappingServiceSync, interceptors: Iterable[In }, interceptors=interceptors, read_max_bytes=read_max_bytes, + compressions=compressions, ) @property diff --git a/packages/otdf-python-proto/src/otdf_python_proto/policy/subjectmapping/subject_mapping_pb2.py b/packages/otdf-python-proto/src/otdf_python_proto/policy/subjectmapping/subject_mapping_pb2.py index 6f42e9ac..ba67af3e 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/policy/subjectmapping/subject_mapping_pb2.py +++ b/packages/otdf-python-proto/src/otdf_python_proto/policy/subjectmapping/subject_mapping_pb2.py @@ -28,7 +28,7 @@ from policy import selectors_pb2 as policy_dot_selectors__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n+policy/subjectmapping/subject_mapping.proto\x12\x15policy.subjectmapping\x1a\x1b\x62uf/validate/validate.proto\x1a\x13\x63ommon/common.proto\x1a\x14policy/objects.proto\x1a\x16policy/selectors.proto\"o\n\x1bMatchSubjectMappingsRequest\x12P\n\x12subject_properties\x18\x01 \x03(\x0b\x32\x17.policy.SubjectPropertyB\x08\xbaH\x05\x92\x01\x02\x08\x01R\x11subjectProperties\"a\n\x1cMatchSubjectMappingsResponse\x12\x41\n\x10subject_mappings\x18\x01 \x03(\x0b\x32\x16.policy.SubjectMappingR\x0fsubjectMappings\"4\n\x18GetSubjectMappingRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"\\\n\x19GetSubjectMappingResponse\x12?\n\x0fsubject_mapping\x18\x01 \x01(\x0b\x32\x16.policy.SubjectMappingR\x0esubjectMapping\"\x90\x01\n\x13SubjectMappingsSort\x12\x44\n\x05\x66ield\x18\x01 \x01(\x0e\x32..policy.subjectmapping.SortSubjectMappingsTypeR\x05\x66ield\x12\x33\n\tdirection\x18\x02 \x01(\x0e\x32\x15.policy.SortDirectionR\tdirection\"\x9f\x02\n\x1aListSubjectMappingsRequest\x12+\n\x0cnamespace_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0bnamespaceId\x12/\n\rnamespace_fqn\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01R\x0cnamespaceFqn\x12\x33\n\npagination\x18\n \x01(\x0b\x32\x13.policy.PageRequestR\npagination\x12H\n\x04sort\x18\x0b \x03(\x0b\x32*.policy.subjectmapping.SubjectMappingsSortB\x08\xbaH\x05\x92\x01\x02\x10\x01R\x04sort:$\xbaH!\"\x1f\n\x0cnamespace_id\n\rnamespace_fqn\x10\x00\"\x96\x01\n\x1bListSubjectMappingsResponse\x12\x41\n\x10subject_mappings\x18\x01 \x03(\x0b\x32\x16.policy.SubjectMappingR\x0fsubjectMappings\x12\x34\n\npagination\x18\n \x01(\x0b\x32\x14.policy.PageResponseR\npagination\"\xb7\x06\n\x1b\x43reateSubjectMappingRequest\x12\x36\n\x12\x61ttribute_value_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x10\x61ttributeValueId\x12\xb8\x01\n\x07\x61\x63tions\x18\x02 \x03(\x0b\x32\x0e.policy.ActionB\x8d\x01\xbaH\x89\x01\x92\x01\x02\x08\x01\xba\x01\x80\x01\n\x1b\x61\x63tion_name_or_id_not_empty\x12/Action name or ID must not be empty if provided\x1a\x30this.all(item, item.name != \'\' || item.id != \'\')R\x07\x61\x63tions\x12\xfe\x01\n!existing_subject_condition_set_id\x18\x03 \x01(\tB\xb3\x01\xbaH\xaf\x01\xba\x01\xab\x01\n\x14optional_uuid_format\x12#Optional field must be a valid UUID\x1ansize(this) == 0 || this.matches(\'[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\')R\x1d\x65xistingSubjectConditionSetId\x12k\n\x19new_subject_condition_set\x18\x04 \x01(\x0b\x32\x30.policy.subjectmapping.SubjectConditionSetCreateR\x16newSubjectConditionSet\x12+\n\x0cnamespace_id\x18\x05 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0bnamespaceId\x12/\n\rnamespace_fqn\x18\x06 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01R\x0cnamespaceFqn\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata:$\xbaH!\"\x1f\n\x0cnamespace_id\n\rnamespace_fqn\x10\x00\"_\n\x1c\x43reateSubjectMappingResponse\x12?\n\x0fsubject_mapping\x18\x01 \x01(\x0b\x32\x16.policy.SubjectMappingR\x0esubjectMapping\"\xfc\x04\n\x1bUpdateSubjectMappingRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\xed\x01\n\x18subject_condition_set_id\x18\x02 \x01(\tB\xb3\x01\xbaH\xaf\x01\xba\x01\xab\x01\n\x14optional_uuid_format\x12#Optional field must be a valid UUID\x1ansize(this) == 0 || this.matches(\'[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\')R\x15subjectConditionSetId\x12\xc7\x01\n\x07\x61\x63tions\x18\x03 \x03(\x0b\x32\x0e.policy.ActionB\x9c\x01\xbaH\x98\x01\xba\x01\x94\x01\n\x1b\x61\x63tion_name_or_id_not_empty\x12/Action name or ID must not be empty if provided\x1a\x44this.size() == 0 || this.all(item, item.name != \'\' || item.id != \'\')R\x07\x61\x63tions\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\x12T\n\x18metadata_update_behavior\x18\x65 \x01(\x0e\x32\x1a.common.MetadataUpdateEnumR\x16metadataUpdateBehavior\"_\n\x1cUpdateSubjectMappingResponse\x12?\n\x0fsubject_mapping\x18\x01 \x01(\x0b\x32\x16.policy.SubjectMappingR\x0esubjectMapping\"7\n\x1b\x44\x65leteSubjectMappingRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"_\n\x1c\x44\x65leteSubjectMappingResponse\x12?\n\x0fsubject_mapping\x18\x01 \x01(\x0b\x32\x16.policy.SubjectMappingR\x0esubjectMapping\"9\n\x1dGetSubjectConditionSetRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"\xc9\x01\n\x1eGetSubjectConditionSetResponse\x12O\n\x15subject_condition_set\x18\x01 \x01(\x0b\x32\x1b.policy.SubjectConditionSetR\x13subjectConditionSet\x12V\n\x1b\x61ssociated_subject_mappings\x18\x02 \x03(\x0b\x32\x16.policy.SubjectMappingR\x19\x61ssociatedSubjectMappings\"\x9a\x01\n\x18SubjectConditionSetsSort\x12I\n\x05\x66ield\x18\x01 \x01(\x0e\x32\x33.policy.subjectmapping.SortSubjectConditionSetsTypeR\x05\x66ield\x12\x33\n\tdirection\x18\x02 \x01(\x0e\x32\x15.policy.SortDirectionR\tdirection\"\xa9\x02\n\x1fListSubjectConditionSetsRequest\x12+\n\x0cnamespace_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0bnamespaceId\x12/\n\rnamespace_fqn\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01R\x0cnamespaceFqn\x12\x33\n\npagination\x18\n \x01(\x0b\x32\x13.policy.PageRequestR\npagination\x12M\n\x04sort\x18\x0b \x03(\x0b\x32/.policy.subjectmapping.SubjectConditionSetsSortB\x08\xbaH\x05\x92\x01\x02\x10\x01R\x04sort:$\xbaH!\"\x1f\n\x0cnamespace_id\n\rnamespace_fqn\x10\x00\"\xab\x01\n ListSubjectConditionSetsResponse\x12Q\n\x16subject_condition_sets\x18\x01 \x03(\x0b\x32\x1b.policy.SubjectConditionSetR\x14subjectConditionSets\x12\x34\n\npagination\x18\n \x01(\x0b\x32\x14.policy.PageResponseR\npagination\"\x91\x01\n\x19SubjectConditionSetCreate\x12?\n\x0csubject_sets\x18\x01 \x03(\x0b\x32\x12.policy.SubjectSetB\x08\xbaH\x05\x92\x01\x02\x08\x01R\x0bsubjectSets\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\"\x94\x02\n CreateSubjectConditionSetRequest\x12l\n\x15subject_condition_set\x18\x01 \x01(\x0b\x32\x30.policy.subjectmapping.SubjectConditionSetCreateB\x06\xbaH\x03\xc8\x01\x01R\x13subjectConditionSet\x12+\n\x0cnamespace_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0bnamespaceId\x12/\n\rnamespace_fqn\x18\x03 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01R\x0cnamespaceFqn:$\xbaH!\"\x1f\n\x0cnamespace_id\n\rnamespace_fqn\x10\x00\"t\n!CreateSubjectConditionSetResponse\x12O\n\x15subject_condition_set\x18\x01 \x01(\x0b\x32\x1b.policy.SubjectConditionSetR\x13subjectConditionSet\"\xfe\x01\n UpdateSubjectConditionSetRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\x35\n\x0csubject_sets\x18\x02 \x03(\x0b\x32\x12.policy.SubjectSetR\x0bsubjectSets\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\x12T\n\x18metadata_update_behavior\x18\x65 \x01(\x0e\x32\x1a.common.MetadataUpdateEnumR\x16metadataUpdateBehavior\"t\n!UpdateSubjectConditionSetResponse\x12O\n\x15subject_condition_set\x18\x01 \x01(\x0b\x32\x1b.policy.SubjectConditionSetR\x13subjectConditionSet\"<\n DeleteSubjectConditionSetRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"t\n!DeleteSubjectConditionSetResponse\x12O\n\x15subject_condition_set\x18\x01 \x01(\x0b\x32\x1b.policy.SubjectConditionSetR\x13subjectConditionSet\".\n,DeleteAllUnmappedSubjectConditionSetsRequest\"\x82\x01\n-DeleteAllUnmappedSubjectConditionSetsResponse\x12Q\n\x16subject_condition_sets\x18\x01 \x03(\x0b\x32\x1b.policy.SubjectConditionSetR\x14subjectConditionSets*\x9b\x01\n\x17SortSubjectMappingsType\x12*\n&SORT_SUBJECT_MAPPINGS_TYPE_UNSPECIFIED\x10\x00\x12)\n%SORT_SUBJECT_MAPPINGS_TYPE_CREATED_AT\x10\x01\x12)\n%SORT_SUBJECT_MAPPINGS_TYPE_UPDATED_AT\x10\x02*\xb2\x01\n\x1cSortSubjectConditionSetsType\x12\x30\n,SORT_SUBJECT_CONDITION_SETS_TYPE_UNSPECIFIED\x10\x00\x12/\n+SORT_SUBJECT_CONDITION_SETS_TYPE_CREATED_AT\x10\x01\x12/\n+SORT_SUBJECT_CONDITION_SETS_TYPE_UPDATED_AT\x10\x02\x32\xb8\r\n\x15SubjectMappingService\x12\x81\x01\n\x14MatchSubjectMappings\x12\x32.policy.subjectmapping.MatchSubjectMappingsRequest\x1a\x33.policy.subjectmapping.MatchSubjectMappingsResponse\"\x00\x12\x81\x01\n\x13ListSubjectMappings\x12\x31.policy.subjectmapping.ListSubjectMappingsRequest\x1a\x32.policy.subjectmapping.ListSubjectMappingsResponse\"\x03\x90\x02\x01\x12{\n\x11GetSubjectMapping\x12/.policy.subjectmapping.GetSubjectMappingRequest\x1a\x30.policy.subjectmapping.GetSubjectMappingResponse\"\x03\x90\x02\x01\x12\x81\x01\n\x14\x43reateSubjectMapping\x12\x32.policy.subjectmapping.CreateSubjectMappingRequest\x1a\x33.policy.subjectmapping.CreateSubjectMappingResponse\"\x00\x12\x81\x01\n\x14UpdateSubjectMapping\x12\x32.policy.subjectmapping.UpdateSubjectMappingRequest\x1a\x33.policy.subjectmapping.UpdateSubjectMappingResponse\"\x00\x12\x81\x01\n\x14\x44\x65leteSubjectMapping\x12\x32.policy.subjectmapping.DeleteSubjectMappingRequest\x1a\x33.policy.subjectmapping.DeleteSubjectMappingResponse\"\x00\x12\x90\x01\n\x18ListSubjectConditionSets\x12\x36.policy.subjectmapping.ListSubjectConditionSetsRequest\x1a\x37.policy.subjectmapping.ListSubjectConditionSetsResponse\"\x03\x90\x02\x01\x12\x8a\x01\n\x16GetSubjectConditionSet\x12\x34.policy.subjectmapping.GetSubjectConditionSetRequest\x1a\x35.policy.subjectmapping.GetSubjectConditionSetResponse\"\x03\x90\x02\x01\x12\x90\x01\n\x19\x43reateSubjectConditionSet\x12\x37.policy.subjectmapping.CreateSubjectConditionSetRequest\x1a\x38.policy.subjectmapping.CreateSubjectConditionSetResponse\"\x00\x12\x90\x01\n\x19UpdateSubjectConditionSet\x12\x37.policy.subjectmapping.UpdateSubjectConditionSetRequest\x1a\x38.policy.subjectmapping.UpdateSubjectConditionSetResponse\"\x00\x12\x90\x01\n\x19\x44\x65leteSubjectConditionSet\x12\x37.policy.subjectmapping.DeleteSubjectConditionSetRequest\x1a\x38.policy.subjectmapping.DeleteSubjectConditionSetResponse\"\x00\x12\xb4\x01\n%DeleteAllUnmappedSubjectConditionSets\x12\x43.policy.subjectmapping.DeleteAllUnmappedSubjectConditionSetsRequest\x1a\x44.policy.subjectmapping.DeleteAllUnmappedSubjectConditionSetsResponse\"\x00\x42\xa5\x01\n\x19\x63om.policy.subjectmappingB\x13SubjectMappingProtoP\x01\xa2\x02\x03PSX\xaa\x02\x15Policy.Subjectmapping\xca\x02\x15Policy\\Subjectmapping\xe2\x02!Policy\\Subjectmapping\\GPBMetadata\xea\x02\x16Policy::Subjectmappingb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n+policy/subjectmapping/subject_mapping.proto\x12\x15policy.subjectmapping\x1a\x1b\x62uf/validate/validate.proto\x1a\x13\x63ommon/common.proto\x1a\x14policy/objects.proto\x1a\x16policy/selectors.proto\"o\n\x1bMatchSubjectMappingsRequest\x12P\n\x12subject_properties\x18\x01 \x03(\x0b\x32\x17.policy.SubjectPropertyB\x08\xbaH\x05\x92\x01\x02\x08\x01R\x11subjectProperties\"a\n\x1cMatchSubjectMappingsResponse\x12\x41\n\x10subject_mappings\x18\x01 \x03(\x0b\x32\x16.policy.SubjectMappingR\x0fsubjectMappings\"4\n\x18GetSubjectMappingRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"\\\n\x19GetSubjectMappingResponse\x12?\n\x0fsubject_mapping\x18\x01 \x01(\x0b\x32\x16.policy.SubjectMappingR\x0esubjectMapping\"\xa4\x01\n\x13SubjectMappingsSort\x12N\n\x05\x66ield\x18\x01 \x01(\x0e\x32..policy.subjectmapping.SortSubjectMappingsTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x05\x66ield\x12=\n\tdirection\x18\x02 \x01(\x0e\x32\x15.policy.SortDirectionB\x08\xbaH\x05\x82\x01\x02\x10\x01R\tdirection\"\x9f\x02\n\x1aListSubjectMappingsRequest\x12+\n\x0cnamespace_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0bnamespaceId\x12/\n\rnamespace_fqn\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01R\x0cnamespaceFqn\x12\x33\n\npagination\x18\n \x01(\x0b\x32\x13.policy.PageRequestR\npagination\x12H\n\x04sort\x18\x0b \x03(\x0b\x32*.policy.subjectmapping.SubjectMappingsSortB\x08\xbaH\x05\x92\x01\x02\x10\x01R\x04sort:$\xbaH!\"\x1f\n\x0cnamespace_id\n\rnamespace_fqn\x10\x00\"\x96\x01\n\x1bListSubjectMappingsResponse\x12\x41\n\x10subject_mappings\x18\x01 \x03(\x0b\x32\x16.policy.SubjectMappingR\x0fsubjectMappings\x12\x34\n\npagination\x18\n \x01(\x0b\x32\x14.policy.PageResponseR\npagination\"\xb7\x06\n\x1b\x43reateSubjectMappingRequest\x12\x36\n\x12\x61ttribute_value_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x10\x61ttributeValueId\x12\xb8\x01\n\x07\x61\x63tions\x18\x02 \x03(\x0b\x32\x0e.policy.ActionB\x8d\x01\xbaH\x89\x01\x92\x01\x02\x08\x01\xba\x01\x80\x01\n\x1b\x61\x63tion_name_or_id_not_empty\x12/Action name or ID must not be empty if provided\x1a\x30this.all(item, item.name != \'\' || item.id != \'\')R\x07\x61\x63tions\x12\xfe\x01\n!existing_subject_condition_set_id\x18\x03 \x01(\tB\xb3\x01\xbaH\xaf\x01\xba\x01\xab\x01\n\x14optional_uuid_format\x12#Optional field must be a valid UUID\x1ansize(this) == 0 || this.matches(\'[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\')R\x1d\x65xistingSubjectConditionSetId\x12k\n\x19new_subject_condition_set\x18\x04 \x01(\x0b\x32\x30.policy.subjectmapping.SubjectConditionSetCreateR\x16newSubjectConditionSet\x12+\n\x0cnamespace_id\x18\x05 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0bnamespaceId\x12/\n\rnamespace_fqn\x18\x06 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01R\x0cnamespaceFqn\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata:$\xbaH!\"\x1f\n\x0cnamespace_id\n\rnamespace_fqn\x10\x00\"_\n\x1c\x43reateSubjectMappingResponse\x12?\n\x0fsubject_mapping\x18\x01 \x01(\x0b\x32\x16.policy.SubjectMappingR\x0esubjectMapping\"\xfc\x04\n\x1bUpdateSubjectMappingRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\xed\x01\n\x18subject_condition_set_id\x18\x02 \x01(\tB\xb3\x01\xbaH\xaf\x01\xba\x01\xab\x01\n\x14optional_uuid_format\x12#Optional field must be a valid UUID\x1ansize(this) == 0 || this.matches(\'[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\')R\x15subjectConditionSetId\x12\xc7\x01\n\x07\x61\x63tions\x18\x03 \x03(\x0b\x32\x0e.policy.ActionB\x9c\x01\xbaH\x98\x01\xba\x01\x94\x01\n\x1b\x61\x63tion_name_or_id_not_empty\x12/Action name or ID must not be empty if provided\x1a\x44this.size() == 0 || this.all(item, item.name != \'\' || item.id != \'\')R\x07\x61\x63tions\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\x12T\n\x18metadata_update_behavior\x18\x65 \x01(\x0e\x32\x1a.common.MetadataUpdateEnumR\x16metadataUpdateBehavior\"_\n\x1cUpdateSubjectMappingResponse\x12?\n\x0fsubject_mapping\x18\x01 \x01(\x0b\x32\x16.policy.SubjectMappingR\x0esubjectMapping\"7\n\x1b\x44\x65leteSubjectMappingRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"_\n\x1c\x44\x65leteSubjectMappingResponse\x12?\n\x0fsubject_mapping\x18\x01 \x01(\x0b\x32\x16.policy.SubjectMappingR\x0esubjectMapping\"9\n\x1dGetSubjectConditionSetRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"\xc9\x01\n\x1eGetSubjectConditionSetResponse\x12O\n\x15subject_condition_set\x18\x01 \x01(\x0b\x32\x1b.policy.SubjectConditionSetR\x13subjectConditionSet\x12V\n\x1b\x61ssociated_subject_mappings\x18\x02 \x03(\x0b\x32\x16.policy.SubjectMappingR\x19\x61ssociatedSubjectMappings\"\xae\x01\n\x18SubjectConditionSetsSort\x12S\n\x05\x66ield\x18\x01 \x01(\x0e\x32\x33.policy.subjectmapping.SortSubjectConditionSetsTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x05\x66ield\x12=\n\tdirection\x18\x02 \x01(\x0e\x32\x15.policy.SortDirectionB\x08\xbaH\x05\x82\x01\x02\x10\x01R\tdirection\"\xa9\x02\n\x1fListSubjectConditionSetsRequest\x12+\n\x0cnamespace_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0bnamespaceId\x12/\n\rnamespace_fqn\x18\x02 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01R\x0cnamespaceFqn\x12\x33\n\npagination\x18\n \x01(\x0b\x32\x13.policy.PageRequestR\npagination\x12M\n\x04sort\x18\x0b \x03(\x0b\x32/.policy.subjectmapping.SubjectConditionSetsSortB\x08\xbaH\x05\x92\x01\x02\x10\x01R\x04sort:$\xbaH!\"\x1f\n\x0cnamespace_id\n\rnamespace_fqn\x10\x00\"\xab\x01\n ListSubjectConditionSetsResponse\x12Q\n\x16subject_condition_sets\x18\x01 \x03(\x0b\x32\x1b.policy.SubjectConditionSetR\x14subjectConditionSets\x12\x34\n\npagination\x18\n \x01(\x0b\x32\x14.policy.PageResponseR\npagination\"\x91\x01\n\x19SubjectConditionSetCreate\x12?\n\x0csubject_sets\x18\x01 \x03(\x0b\x32\x12.policy.SubjectSetB\x08\xbaH\x05\x92\x01\x02\x08\x01R\x0bsubjectSets\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\"\x94\x02\n CreateSubjectConditionSetRequest\x12l\n\x15subject_condition_set\x18\x01 \x01(\x0b\x32\x30.policy.subjectmapping.SubjectConditionSetCreateB\x06\xbaH\x03\xc8\x01\x01R\x13subjectConditionSet\x12+\n\x0cnamespace_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x0bnamespaceId\x12/\n\rnamespace_fqn\x18\x03 \x01(\tB\n\xbaH\x07r\x05\x10\x01\x88\x01\x01R\x0cnamespaceFqn:$\xbaH!\"\x1f\n\x0cnamespace_id\n\rnamespace_fqn\x10\x00\"t\n!CreateSubjectConditionSetResponse\x12O\n\x15subject_condition_set\x18\x01 \x01(\x0b\x32\x1b.policy.SubjectConditionSetR\x13subjectConditionSet\"\xfe\x01\n UpdateSubjectConditionSetRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\x35\n\x0csubject_sets\x18\x02 \x03(\x0b\x32\x12.policy.SubjectSetR\x0bsubjectSets\x12\x33\n\x08metadata\x18\x64 \x01(\x0b\x32\x17.common.MetadataMutableR\x08metadata\x12T\n\x18metadata_update_behavior\x18\x65 \x01(\x0e\x32\x1a.common.MetadataUpdateEnumR\x16metadataUpdateBehavior\"t\n!UpdateSubjectConditionSetResponse\x12O\n\x15subject_condition_set\x18\x01 \x01(\x0b\x32\x1b.policy.SubjectConditionSetR\x13subjectConditionSet\"<\n DeleteSubjectConditionSetRequest\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\"t\n!DeleteSubjectConditionSetResponse\x12O\n\x15subject_condition_set\x18\x01 \x01(\x0b\x32\x1b.policy.SubjectConditionSetR\x13subjectConditionSet\".\n,DeleteAllUnmappedSubjectConditionSetsRequest\"\x82\x01\n-DeleteAllUnmappedSubjectConditionSetsResponse\x12Q\n\x16subject_condition_sets\x18\x01 \x03(\x0b\x32\x1b.policy.SubjectConditionSetR\x14subjectConditionSets*\x9b\x01\n\x17SortSubjectMappingsType\x12*\n&SORT_SUBJECT_MAPPINGS_TYPE_UNSPECIFIED\x10\x00\x12)\n%SORT_SUBJECT_MAPPINGS_TYPE_CREATED_AT\x10\x01\x12)\n%SORT_SUBJECT_MAPPINGS_TYPE_UPDATED_AT\x10\x02*\xb2\x01\n\x1cSortSubjectConditionSetsType\x12\x30\n,SORT_SUBJECT_CONDITION_SETS_TYPE_UNSPECIFIED\x10\x00\x12/\n+SORT_SUBJECT_CONDITION_SETS_TYPE_CREATED_AT\x10\x01\x12/\n+SORT_SUBJECT_CONDITION_SETS_TYPE_UPDATED_AT\x10\x02\x32\xb8\r\n\x15SubjectMappingService\x12\x81\x01\n\x14MatchSubjectMappings\x12\x32.policy.subjectmapping.MatchSubjectMappingsRequest\x1a\x33.policy.subjectmapping.MatchSubjectMappingsResponse\"\x00\x12\x81\x01\n\x13ListSubjectMappings\x12\x31.policy.subjectmapping.ListSubjectMappingsRequest\x1a\x32.policy.subjectmapping.ListSubjectMappingsResponse\"\x03\x90\x02\x01\x12{\n\x11GetSubjectMapping\x12/.policy.subjectmapping.GetSubjectMappingRequest\x1a\x30.policy.subjectmapping.GetSubjectMappingResponse\"\x03\x90\x02\x01\x12\x81\x01\n\x14\x43reateSubjectMapping\x12\x32.policy.subjectmapping.CreateSubjectMappingRequest\x1a\x33.policy.subjectmapping.CreateSubjectMappingResponse\"\x00\x12\x81\x01\n\x14UpdateSubjectMapping\x12\x32.policy.subjectmapping.UpdateSubjectMappingRequest\x1a\x33.policy.subjectmapping.UpdateSubjectMappingResponse\"\x00\x12\x81\x01\n\x14\x44\x65leteSubjectMapping\x12\x32.policy.subjectmapping.DeleteSubjectMappingRequest\x1a\x33.policy.subjectmapping.DeleteSubjectMappingResponse\"\x00\x12\x90\x01\n\x18ListSubjectConditionSets\x12\x36.policy.subjectmapping.ListSubjectConditionSetsRequest\x1a\x37.policy.subjectmapping.ListSubjectConditionSetsResponse\"\x03\x90\x02\x01\x12\x8a\x01\n\x16GetSubjectConditionSet\x12\x34.policy.subjectmapping.GetSubjectConditionSetRequest\x1a\x35.policy.subjectmapping.GetSubjectConditionSetResponse\"\x03\x90\x02\x01\x12\x90\x01\n\x19\x43reateSubjectConditionSet\x12\x37.policy.subjectmapping.CreateSubjectConditionSetRequest\x1a\x38.policy.subjectmapping.CreateSubjectConditionSetResponse\"\x00\x12\x90\x01\n\x19UpdateSubjectConditionSet\x12\x37.policy.subjectmapping.UpdateSubjectConditionSetRequest\x1a\x38.policy.subjectmapping.UpdateSubjectConditionSetResponse\"\x00\x12\x90\x01\n\x19\x44\x65leteSubjectConditionSet\x12\x37.policy.subjectmapping.DeleteSubjectConditionSetRequest\x1a\x38.policy.subjectmapping.DeleteSubjectConditionSetResponse\"\x00\x12\xb4\x01\n%DeleteAllUnmappedSubjectConditionSets\x12\x43.policy.subjectmapping.DeleteAllUnmappedSubjectConditionSetsRequest\x1a\x44.policy.subjectmapping.DeleteAllUnmappedSubjectConditionSetsResponse\"\x00\x42\xa5\x01\n\x19\x63om.policy.subjectmappingB\x13SubjectMappingProtoP\x01\xa2\x02\x03PSX\xaa\x02\x15Policy.Subjectmapping\xca\x02\x15Policy\\Subjectmapping\xe2\x02!Policy\\Subjectmapping\\GPBMetadata\xea\x02\x16Policy::Subjectmappingb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -40,6 +40,10 @@ _globals['_MATCHSUBJECTMAPPINGSREQUEST'].fields_by_name['subject_properties']._serialized_options = b'\272H\005\222\001\002\010\001' _globals['_GETSUBJECTMAPPINGREQUEST'].fields_by_name['id']._loaded_options = None _globals['_GETSUBJECTMAPPINGREQUEST'].fields_by_name['id']._serialized_options = b'\272H\005r\003\260\001\001' + _globals['_SUBJECTMAPPINGSSORT'].fields_by_name['field']._loaded_options = None + _globals['_SUBJECTMAPPINGSSORT'].fields_by_name['field']._serialized_options = b'\272H\005\202\001\002\020\001' + _globals['_SUBJECTMAPPINGSSORT'].fields_by_name['direction']._loaded_options = None + _globals['_SUBJECTMAPPINGSSORT'].fields_by_name['direction']._serialized_options = b'\272H\005\202\001\002\020\001' _globals['_LISTSUBJECTMAPPINGSREQUEST'].fields_by_name['namespace_id']._loaded_options = None _globals['_LISTSUBJECTMAPPINGSREQUEST'].fields_by_name['namespace_id']._serialized_options = b'\272H\005r\003\260\001\001' _globals['_LISTSUBJECTMAPPINGSREQUEST'].fields_by_name['namespace_fqn']._loaded_options = None @@ -70,6 +74,10 @@ _globals['_DELETESUBJECTMAPPINGREQUEST'].fields_by_name['id']._serialized_options = b'\272H\005r\003\260\001\001' _globals['_GETSUBJECTCONDITIONSETREQUEST'].fields_by_name['id']._loaded_options = None _globals['_GETSUBJECTCONDITIONSETREQUEST'].fields_by_name['id']._serialized_options = b'\272H\005r\003\260\001\001' + _globals['_SUBJECTCONDITIONSETSSORT'].fields_by_name['field']._loaded_options = None + _globals['_SUBJECTCONDITIONSETSSORT'].fields_by_name['field']._serialized_options = b'\272H\005\202\001\002\020\001' + _globals['_SUBJECTCONDITIONSETSSORT'].fields_by_name['direction']._loaded_options = None + _globals['_SUBJECTCONDITIONSETSSORT'].fields_by_name['direction']._serialized_options = b'\272H\005\202\001\002\020\001' _globals['_LISTSUBJECTCONDITIONSETSREQUEST'].fields_by_name['namespace_id']._loaded_options = None _globals['_LISTSUBJECTCONDITIONSETSREQUEST'].fields_by_name['namespace_id']._serialized_options = b'\272H\005r\003\260\001\001' _globals['_LISTSUBJECTCONDITIONSETSREQUEST'].fields_by_name['namespace_fqn']._loaded_options = None @@ -100,10 +108,10 @@ _globals['_SUBJECTMAPPINGSERVICE'].methods_by_name['ListSubjectConditionSets']._serialized_options = b'\220\002\001' _globals['_SUBJECTMAPPINGSERVICE'].methods_by_name['GetSubjectConditionSet']._loaded_options = None _globals['_SUBJECTMAPPINGSERVICE'].methods_by_name['GetSubjectConditionSet']._serialized_options = b'\220\002\001' - _globals['_SORTSUBJECTMAPPINGSTYPE']._serialized_start=5105 - _globals['_SORTSUBJECTMAPPINGSTYPE']._serialized_end=5260 - _globals['_SORTSUBJECTCONDITIONSETSTYPE']._serialized_start=5263 - _globals['_SORTSUBJECTCONDITIONSETSTYPE']._serialized_end=5441 + _globals['_SORTSUBJECTMAPPINGSTYPE']._serialized_start=5145 + _globals['_SORTSUBJECTMAPPINGSTYPE']._serialized_end=5300 + _globals['_SORTSUBJECTCONDITIONSETSTYPE']._serialized_start=5303 + _globals['_SORTSUBJECTCONDITIONSETSTYPE']._serialized_end=5481 _globals['_MATCHSUBJECTMAPPINGSREQUEST']._serialized_start=166 _globals['_MATCHSUBJECTMAPPINGSREQUEST']._serialized_end=277 _globals['_MATCHSUBJECTMAPPINGSRESPONSE']._serialized_start=279 @@ -113,51 +121,51 @@ _globals['_GETSUBJECTMAPPINGRESPONSE']._serialized_start=432 _globals['_GETSUBJECTMAPPINGRESPONSE']._serialized_end=524 _globals['_SUBJECTMAPPINGSSORT']._serialized_start=527 - _globals['_SUBJECTMAPPINGSSORT']._serialized_end=671 - _globals['_LISTSUBJECTMAPPINGSREQUEST']._serialized_start=674 - _globals['_LISTSUBJECTMAPPINGSREQUEST']._serialized_end=961 - _globals['_LISTSUBJECTMAPPINGSRESPONSE']._serialized_start=964 - _globals['_LISTSUBJECTMAPPINGSRESPONSE']._serialized_end=1114 - _globals['_CREATESUBJECTMAPPINGREQUEST']._serialized_start=1117 - _globals['_CREATESUBJECTMAPPINGREQUEST']._serialized_end=1940 - _globals['_CREATESUBJECTMAPPINGRESPONSE']._serialized_start=1942 - _globals['_CREATESUBJECTMAPPINGRESPONSE']._serialized_end=2037 - _globals['_UPDATESUBJECTMAPPINGREQUEST']._serialized_start=2040 - _globals['_UPDATESUBJECTMAPPINGREQUEST']._serialized_end=2676 - _globals['_UPDATESUBJECTMAPPINGRESPONSE']._serialized_start=2678 - _globals['_UPDATESUBJECTMAPPINGRESPONSE']._serialized_end=2773 - _globals['_DELETESUBJECTMAPPINGREQUEST']._serialized_start=2775 - _globals['_DELETESUBJECTMAPPINGREQUEST']._serialized_end=2830 - _globals['_DELETESUBJECTMAPPINGRESPONSE']._serialized_start=2832 - _globals['_DELETESUBJECTMAPPINGRESPONSE']._serialized_end=2927 - _globals['_GETSUBJECTCONDITIONSETREQUEST']._serialized_start=2929 - _globals['_GETSUBJECTCONDITIONSETREQUEST']._serialized_end=2986 - _globals['_GETSUBJECTCONDITIONSETRESPONSE']._serialized_start=2989 - _globals['_GETSUBJECTCONDITIONSETRESPONSE']._serialized_end=3190 - _globals['_SUBJECTCONDITIONSETSSORT']._serialized_start=3193 - _globals['_SUBJECTCONDITIONSETSSORT']._serialized_end=3347 - _globals['_LISTSUBJECTCONDITIONSETSREQUEST']._serialized_start=3350 - _globals['_LISTSUBJECTCONDITIONSETSREQUEST']._serialized_end=3647 - _globals['_LISTSUBJECTCONDITIONSETSRESPONSE']._serialized_start=3650 - _globals['_LISTSUBJECTCONDITIONSETSRESPONSE']._serialized_end=3821 - _globals['_SUBJECTCONDITIONSETCREATE']._serialized_start=3824 - _globals['_SUBJECTCONDITIONSETCREATE']._serialized_end=3969 - _globals['_CREATESUBJECTCONDITIONSETREQUEST']._serialized_start=3972 - _globals['_CREATESUBJECTCONDITIONSETREQUEST']._serialized_end=4248 - _globals['_CREATESUBJECTCONDITIONSETRESPONSE']._serialized_start=4250 - _globals['_CREATESUBJECTCONDITIONSETRESPONSE']._serialized_end=4366 - _globals['_UPDATESUBJECTCONDITIONSETREQUEST']._serialized_start=4369 - _globals['_UPDATESUBJECTCONDITIONSETREQUEST']._serialized_end=4623 - _globals['_UPDATESUBJECTCONDITIONSETRESPONSE']._serialized_start=4625 - _globals['_UPDATESUBJECTCONDITIONSETRESPONSE']._serialized_end=4741 - _globals['_DELETESUBJECTCONDITIONSETREQUEST']._serialized_start=4743 - _globals['_DELETESUBJECTCONDITIONSETREQUEST']._serialized_end=4803 - _globals['_DELETESUBJECTCONDITIONSETRESPONSE']._serialized_start=4805 - _globals['_DELETESUBJECTCONDITIONSETRESPONSE']._serialized_end=4921 - _globals['_DELETEALLUNMAPPEDSUBJECTCONDITIONSETSREQUEST']._serialized_start=4923 - _globals['_DELETEALLUNMAPPEDSUBJECTCONDITIONSETSREQUEST']._serialized_end=4969 - _globals['_DELETEALLUNMAPPEDSUBJECTCONDITIONSETSRESPONSE']._serialized_start=4972 - _globals['_DELETEALLUNMAPPEDSUBJECTCONDITIONSETSRESPONSE']._serialized_end=5102 - _globals['_SUBJECTMAPPINGSERVICE']._serialized_start=5444 - _globals['_SUBJECTMAPPINGSERVICE']._serialized_end=7164 + _globals['_SUBJECTMAPPINGSSORT']._serialized_end=691 + _globals['_LISTSUBJECTMAPPINGSREQUEST']._serialized_start=694 + _globals['_LISTSUBJECTMAPPINGSREQUEST']._serialized_end=981 + _globals['_LISTSUBJECTMAPPINGSRESPONSE']._serialized_start=984 + _globals['_LISTSUBJECTMAPPINGSRESPONSE']._serialized_end=1134 + _globals['_CREATESUBJECTMAPPINGREQUEST']._serialized_start=1137 + _globals['_CREATESUBJECTMAPPINGREQUEST']._serialized_end=1960 + _globals['_CREATESUBJECTMAPPINGRESPONSE']._serialized_start=1962 + _globals['_CREATESUBJECTMAPPINGRESPONSE']._serialized_end=2057 + _globals['_UPDATESUBJECTMAPPINGREQUEST']._serialized_start=2060 + _globals['_UPDATESUBJECTMAPPINGREQUEST']._serialized_end=2696 + _globals['_UPDATESUBJECTMAPPINGRESPONSE']._serialized_start=2698 + _globals['_UPDATESUBJECTMAPPINGRESPONSE']._serialized_end=2793 + _globals['_DELETESUBJECTMAPPINGREQUEST']._serialized_start=2795 + _globals['_DELETESUBJECTMAPPINGREQUEST']._serialized_end=2850 + _globals['_DELETESUBJECTMAPPINGRESPONSE']._serialized_start=2852 + _globals['_DELETESUBJECTMAPPINGRESPONSE']._serialized_end=2947 + _globals['_GETSUBJECTCONDITIONSETREQUEST']._serialized_start=2949 + _globals['_GETSUBJECTCONDITIONSETREQUEST']._serialized_end=3006 + _globals['_GETSUBJECTCONDITIONSETRESPONSE']._serialized_start=3009 + _globals['_GETSUBJECTCONDITIONSETRESPONSE']._serialized_end=3210 + _globals['_SUBJECTCONDITIONSETSSORT']._serialized_start=3213 + _globals['_SUBJECTCONDITIONSETSSORT']._serialized_end=3387 + _globals['_LISTSUBJECTCONDITIONSETSREQUEST']._serialized_start=3390 + _globals['_LISTSUBJECTCONDITIONSETSREQUEST']._serialized_end=3687 + _globals['_LISTSUBJECTCONDITIONSETSRESPONSE']._serialized_start=3690 + _globals['_LISTSUBJECTCONDITIONSETSRESPONSE']._serialized_end=3861 + _globals['_SUBJECTCONDITIONSETCREATE']._serialized_start=3864 + _globals['_SUBJECTCONDITIONSETCREATE']._serialized_end=4009 + _globals['_CREATESUBJECTCONDITIONSETREQUEST']._serialized_start=4012 + _globals['_CREATESUBJECTCONDITIONSETREQUEST']._serialized_end=4288 + _globals['_CREATESUBJECTCONDITIONSETRESPONSE']._serialized_start=4290 + _globals['_CREATESUBJECTCONDITIONSETRESPONSE']._serialized_end=4406 + _globals['_UPDATESUBJECTCONDITIONSETREQUEST']._serialized_start=4409 + _globals['_UPDATESUBJECTCONDITIONSETREQUEST']._serialized_end=4663 + _globals['_UPDATESUBJECTCONDITIONSETRESPONSE']._serialized_start=4665 + _globals['_UPDATESUBJECTCONDITIONSETRESPONSE']._serialized_end=4781 + _globals['_DELETESUBJECTCONDITIONSETREQUEST']._serialized_start=4783 + _globals['_DELETESUBJECTCONDITIONSETREQUEST']._serialized_end=4843 + _globals['_DELETESUBJECTCONDITIONSETRESPONSE']._serialized_start=4845 + _globals['_DELETESUBJECTCONDITIONSETRESPONSE']._serialized_end=4961 + _globals['_DELETEALLUNMAPPEDSUBJECTCONDITIONSETSREQUEST']._serialized_start=4963 + _globals['_DELETEALLUNMAPPEDSUBJECTCONDITIONSETSREQUEST']._serialized_end=5009 + _globals['_DELETEALLUNMAPPEDSUBJECTCONDITIONSETSRESPONSE']._serialized_start=5012 + _globals['_DELETEALLUNMAPPEDSUBJECTCONDITIONSETSRESPONSE']._serialized_end=5142 + _globals['_SUBJECTMAPPINGSERVICE']._serialized_start=5484 + _globals['_SUBJECTMAPPINGSERVICE']._serialized_end=7204 # @@protoc_insertion_point(module_scope) diff --git a/packages/otdf-python-proto/src/otdf_python_proto/policy/unsafe/unsafe_connect.py b/packages/otdf-python-proto/src/otdf_python_proto/policy/unsafe/unsafe_connect.py index f173f2d3..3a4bbd7d 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/policy/unsafe/unsafe_connect.py +++ b/packages/otdf-python-proto/src/otdf_python_proto/policy/unsafe/unsafe_connect.py @@ -7,6 +7,7 @@ from connectrpc.client import ConnectClient, ConnectClientSync from connectrpc.code import Code +from connectrpc.compression import Compression from connectrpc.errors import ConnectError from connectrpc.interceptor import Interceptor, InterceptorSync from connectrpc.method import IdempotencyLevel, MethodInfo @@ -48,7 +49,7 @@ async def unsafe_delete_kas_key(self, request: policy_dot_unsafe_dot_unsafe__pb2 class UnsafeServiceASGIApplication(ConnectASGIApplication[UnsafeService]): - def __init__(self, service: UnsafeService | AsyncGenerator[UnsafeService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None) -> None: + def __init__(self, service: UnsafeService | AsyncGenerator[UnsafeService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: super().__init__( service=service, endpoints=lambda svc: { @@ -155,6 +156,7 @@ def __init__(self, service: UnsafeService | AsyncGenerator[UnsafeService], *, in }, interceptors=interceptors, read_max_bytes=read_max_bytes, + compressions=compressions, ) @property @@ -389,7 +391,7 @@ def unsafe_delete_kas_key(self, request: policy_dot_unsafe_dot_unsafe__pb2.Unsaf class UnsafeServiceWSGIApplication(ConnectWSGIApplication): - def __init__(self, service: UnsafeServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None) -> None: + def __init__(self, service: UnsafeServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: super().__init__( endpoints={ "/policy.unsafe.UnsafeService/UnsafeUpdateNamespace": EndpointSync.unary( @@ -495,6 +497,7 @@ def __init__(self, service: UnsafeServiceSync, interceptors: Iterable[Intercepto }, interceptors=interceptors, read_max_bytes=read_max_bytes, + compressions=compressions, ) @property diff --git a/packages/otdf-python-proto/src/otdf_python_proto/wellknownconfiguration/wellknown_configuration_connect.py b/packages/otdf-python-proto/src/otdf_python_proto/wellknownconfiguration/wellknown_configuration_connect.py index e0770056..9083f285 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/wellknownconfiguration/wellknown_configuration_connect.py +++ b/packages/otdf-python-proto/src/otdf_python_proto/wellknownconfiguration/wellknown_configuration_connect.py @@ -7,6 +7,7 @@ from connectrpc.client import ConnectClient, ConnectClientSync from connectrpc.code import Code +from connectrpc.compression import Compression from connectrpc.errors import ConnectError from connectrpc.interceptor import Interceptor, InterceptorSync from connectrpc.method import IdempotencyLevel, MethodInfo @@ -21,7 +22,7 @@ async def get_well_known_configuration(self, request: wellknownconfiguration_dot class WellKnownServiceASGIApplication(ConnectASGIApplication[WellKnownService]): - def __init__(self, service: WellKnownService | AsyncGenerator[WellKnownService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None) -> None: + def __init__(self, service: WellKnownService | AsyncGenerator[WellKnownService], *, interceptors: Iterable[Interceptor]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: super().__init__( service=service, endpoints=lambda svc: { @@ -38,6 +39,7 @@ def __init__(self, service: WellKnownService | AsyncGenerator[WellKnownService], }, interceptors=interceptors, read_max_bytes=read_max_bytes, + compressions=compressions, ) @property @@ -76,7 +78,7 @@ def get_well_known_configuration(self, request: wellknownconfiguration_dot_wellk class WellKnownServiceWSGIApplication(ConnectWSGIApplication): - def __init__(self, service: WellKnownServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None) -> None: + def __init__(self, service: WellKnownServiceSync, interceptors: Iterable[InterceptorSync]=(), read_max_bytes: int | None = None, compressions: Iterable[Compression] | None = None) -> None: super().__init__( endpoints={ "/wellknownconfiguration.WellKnownService/GetWellKnownConfiguration": EndpointSync.unary( @@ -92,6 +94,7 @@ def __init__(self, service: WellKnownServiceSync, interceptors: Iterable[Interce }, interceptors=interceptors, read_max_bytes=read_max_bytes, + compressions=compressions, ) @property diff --git a/packages/otdf-python-proto/src/otdf_python_proto/wellknownconfiguration/wellknown_configuration_pb2.py b/packages/otdf-python-proto/src/otdf_python_proto/wellknownconfiguration/wellknown_configuration_pb2.py index da4fb827..e4411226 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/wellknownconfiguration/wellknown_configuration_pb2.py +++ b/packages/otdf-python-proto/src/otdf_python_proto/wellknownconfiguration/wellknown_configuration_pb2.py @@ -22,11 +22,10 @@ _sym_db = _symbol_database.Default() -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n4wellknownconfiguration/wellknown_configuration.proto\x12\x16wellknownconfiguration\x1a\x1cgoogle/api/annotations.proto\x1a\x1cgoogle/protobuf/struct.proto\"\xce\x01\n\x0fWellKnownConfig\x12`\n\rconfiguration\x18\x01 \x03(\x0b\x32:.wellknownconfiguration.WellKnownConfig.ConfigurationEntryR\rconfiguration\x1aY\n\x12\x43onfigurationEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12-\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructR\x05value:\x02\x38\x01\"\"\n GetWellKnownConfigurationRequest\"b\n!GetWellKnownConfigurationResponse\x12=\n\rconfiguration\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructR\rconfiguration2\xd4\x01\n\x10WellKnownService\x12\xbf\x01\n\x19GetWellKnownConfiguration\x12\x38.wellknownconfiguration.GetWellKnownConfigurationRequest\x1a\x39.wellknownconfiguration.GetWellKnownConfigurationResponse\"-\x90\x02\x01\x82\xd3\xe4\x93\x02$\x12\"/.well-known/opentdf-configurationB\xb1\x01\n\x1a\x63om.wellknownconfigurationB\x1bWellknownConfigurationProtoP\x01\xa2\x02\x03WXX\xaa\x02\x16Wellknownconfiguration\xca\x02\x16Wellknownconfiguration\xe2\x02\"Wellknownconfiguration\\GPBMetadata\xea\x02\x16Wellknownconfigurationb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n4wellknownconfiguration/wellknown_configuration.proto\x12\x16wellknownconfiguration\x1a\x1cgoogle/protobuf/struct.proto\"\xce\x01\n\x0fWellKnownConfig\x12`\n\rconfiguration\x18\x01 \x03(\x0b\x32:.wellknownconfiguration.WellKnownConfig.ConfigurationEntryR\rconfiguration\x1aY\n\x12\x43onfigurationEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12-\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.protobuf.StructR\x05value:\x02\x38\x01\"\"\n GetWellKnownConfigurationRequest\"b\n!GetWellKnownConfigurationResponse\x12=\n\rconfiguration\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructR\rconfiguration2\xaa\x01\n\x10WellKnownService\x12\x95\x01\n\x19GetWellKnownConfiguration\x12\x38.wellknownconfiguration.GetWellKnownConfigurationRequest\x1a\x39.wellknownconfiguration.GetWellKnownConfigurationResponse\"\x03\x90\x02\x01\x42\xb1\x01\n\x1a\x63om.wellknownconfigurationB\x1bWellknownConfigurationProtoP\x01\xa2\x02\x03WXX\xaa\x02\x16Wellknownconfiguration\xca\x02\x16Wellknownconfiguration\xe2\x02\"Wellknownconfiguration\\GPBMetadata\xea\x02\x16Wellknownconfigurationb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -37,15 +36,15 @@ _globals['_WELLKNOWNCONFIG_CONFIGURATIONENTRY']._loaded_options = None _globals['_WELLKNOWNCONFIG_CONFIGURATIONENTRY']._serialized_options = b'8\001' _globals['_WELLKNOWNSERVICE'].methods_by_name['GetWellKnownConfiguration']._loaded_options = None - _globals['_WELLKNOWNSERVICE'].methods_by_name['GetWellKnownConfiguration']._serialized_options = b'\220\002\001\202\323\344\223\002$\022\"/.well-known/opentdf-configuration' - _globals['_WELLKNOWNCONFIG']._serialized_start=141 - _globals['_WELLKNOWNCONFIG']._serialized_end=347 - _globals['_WELLKNOWNCONFIG_CONFIGURATIONENTRY']._serialized_start=258 - _globals['_WELLKNOWNCONFIG_CONFIGURATIONENTRY']._serialized_end=347 - _globals['_GETWELLKNOWNCONFIGURATIONREQUEST']._serialized_start=349 - _globals['_GETWELLKNOWNCONFIGURATIONREQUEST']._serialized_end=383 - _globals['_GETWELLKNOWNCONFIGURATIONRESPONSE']._serialized_start=385 - _globals['_GETWELLKNOWNCONFIGURATIONRESPONSE']._serialized_end=483 - _globals['_WELLKNOWNSERVICE']._serialized_start=486 - _globals['_WELLKNOWNSERVICE']._serialized_end=698 + _globals['_WELLKNOWNSERVICE'].methods_by_name['GetWellKnownConfiguration']._serialized_options = b'\220\002\001' + _globals['_WELLKNOWNCONFIG']._serialized_start=111 + _globals['_WELLKNOWNCONFIG']._serialized_end=317 + _globals['_WELLKNOWNCONFIG_CONFIGURATIONENTRY']._serialized_start=228 + _globals['_WELLKNOWNCONFIG_CONFIGURATIONENTRY']._serialized_end=317 + _globals['_GETWELLKNOWNCONFIGURATIONREQUEST']._serialized_start=319 + _globals['_GETWELLKNOWNCONFIGURATIONREQUEST']._serialized_end=353 + _globals['_GETWELLKNOWNCONFIGURATIONRESPONSE']._serialized_start=355 + _globals['_GETWELLKNOWNCONFIGURATIONRESPONSE']._serialized_end=453 + _globals['_WELLKNOWNSERVICE']._serialized_start=456 + _globals['_WELLKNOWNSERVICE']._serialized_end=626 # @@protoc_insertion_point(module_scope) diff --git a/packages/otdf-python-proto/src/otdf_python_proto/wellknownconfiguration/wellknown_configuration_pb2.pyi b/packages/otdf-python-proto/src/otdf_python_proto/wellknownconfiguration/wellknown_configuration_pb2.pyi index f8c974ba..b5aa8c20 100644 --- a/packages/otdf-python-proto/src/otdf_python_proto/wellknownconfiguration/wellknown_configuration_pb2.pyi +++ b/packages/otdf-python-proto/src/otdf_python_proto/wellknownconfiguration/wellknown_configuration_pb2.pyi @@ -1,4 +1,3 @@ -from google.api import annotations_pb2 as _annotations_pb2 from google.protobuf import struct_pb2 as _struct_pb2 from google.protobuf.internal import containers as _containers from google.protobuf import descriptor as _descriptor diff --git a/packages/otdf-python-proto/tests/test_generate_connect_proto.py b/packages/otdf-python-proto/tests/test_generate_connect_proto.py index e6affbd3..6396880d 100644 --- a/packages/otdf-python-proto/tests/test_generate_connect_proto.py +++ b/packages/otdf-python-proto/tests/test_generate_connect_proto.py @@ -172,7 +172,7 @@ def fake_run(cmd, **kwargs): git_cmd = next(c for c in captured if c[0] == "git") branch_idx = git_cmd.index("--branch") default_tag = git_cmd[branch_idx + 1] - assert default_tag == "service/v0.14.0" + assert default_tag == "service/v0.16.0" class TestArgParsing: diff --git a/packages/otdf-python/pyproject.toml b/packages/otdf-python/pyproject.toml index 6a48b05e..6ba5f9a9 100644 --- a/packages/otdf-python/pyproject.toml +++ b/packages/otdf-python/pyproject.toml @@ -57,7 +57,7 @@ dev = [ "pytest>=8.4.1", "ruff>=0.12.10", "tomli>=2.2.1 ; python_version < '3.11'", - "protoc-gen-connect-python>=0.6.0,<0.7", + "protoc-gen-connect-python>=0.9.0,<0.10", "grpcio-tools>=1.74.0", "protoc-gen-openapiv2>=0.0.1", ] diff --git a/uv.lock b/uv.lock index 030a258b..3ce995dc 100644 --- a/uv.lock +++ b/uv.lock @@ -19,16 +19,16 @@ wheels = [ [[package]] name = "anyio" -version = "4.13.0" +version = "4.14.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, { name = "idna" }, { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/19/14/2c5dd9f512b66549ae92767a9c7b330ae88e1932ca57876909410251fe13/anyio-4.13.0.tar.gz", hash = "sha256:334b70e641fd2221c1505b3890c69882fe4a2df910cba14d97019b90b24439dc", size = 231622, upload-time = "2026-03-24T12:59:09.671Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3b/72/5562aabb8dd7181e8e860622a38bea08d17842b99ecd4c91f84ac95251b0/anyio-4.14.1.tar.gz", hash = "sha256:8d648a3544c1a700e3ff78615cd679e4c5c3f149904287e73687b2596963629e", size = 254831, upload-time = "2026-06-24T20:56:06.017Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/da/42/e921fccf5015463e32a3cf6ee7f980a6ed0f395ceeaa45060b61d86486c2/anyio-4.13.0-py3-none-any.whl", hash = "sha256:08b310f9e24a9594186fd75b4f73f4a4152069e3853f1ed8bfbf58369f4ad708", size = 114353, upload-time = "2026-03-24T12:59:08.246Z" }, + { url = "https://files.pythonhosted.org/packages/b0/7b/90df4a0a816d98d6ea26f559d87836d494a2cf1fcf063be67df50a7bcc30/anyio-4.14.1-py3-none-any.whl", hash = "sha256:4e5533c5b8ff0a24f5d7a176cbe6877129cd183893f66b537f8f227d10527d72", size = 124875, upload-time = "2026-06-24T20:56:04.413Z" }, ] [[package]] @@ -137,62 +137,59 @@ wheels = [ [[package]] name = "cryptography" -version = "48.0.0" +version = "49.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9f/a9/db8f313fdcd85d767d4973515e1db101f9c71f95fced83233de224673757/cryptography-48.0.0.tar.gz", hash = "sha256:5c3932f4436d1cccb036cb0eaef46e6e2db91035166f1ad6505c3c9d5a635920", size = 832984, upload-time = "2026-05-04T22:59:38.133Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/df/3d/01f6dd9190170a5a241e0e98c2d04be3664a9e6f5b9b872cde63aff1c3dd/cryptography-48.0.0-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:0c558d2cdffd8f4bbb30fc7134c74d2ca9a476f830bb053074498fbc86f41ed6", size = 8001587, upload-time = "2026-05-04T22:57:36.803Z" }, - { url = "https://files.pythonhosted.org/packages/b2/6e/e90527eef33f309beb811cf7c982c3aeffcce8e3edb178baa4ca3ae4a6fa/cryptography-48.0.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f5333311663ea94f75dd408665686aaf426563556bb5283554a3539177e03b8c", size = 4690433, upload-time = "2026-05-04T22:57:40.373Z" }, - { url = "https://files.pythonhosted.org/packages/90/04/673510ed51ddff56575f306cf1617d80411ee76831ccd3097599140efdfe/cryptography-48.0.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7995ef305d7165c3f11ae07f2517e5a4f1d5c18da1376a0a9ed496336b69e5f3", size = 4710620, upload-time = "2026-05-04T22:57:42.935Z" }, - { url = "https://files.pythonhosted.org/packages/14/d5/e9c4ef932c8d800490c34d8bd589d64a31d5890e27ec9e9ad532be893294/cryptography-48.0.0-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:40ba1f85eaa6959837b1d51c9767e230e14612eea4ef110ee8854ada22da1bf5", size = 4696283, upload-time = "2026-05-04T22:57:45.294Z" }, - { url = "https://files.pythonhosted.org/packages/0c/29/174b9dfb60b12d59ecfc6cfa04bc88c21b42a54f01b8aae09bb6e51e4c7f/cryptography-48.0.0-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:369a6348999f94bbd53435c894377b20ab95f25a9065c283570e70150d8abc3c", size = 5296573, upload-time = "2026-05-04T22:57:47.933Z" }, - { url = "https://files.pythonhosted.org/packages/95/38/0d29a6fd7d0d1373f0c0c88a04ba20e359b257753ac497564cd660fc1d55/cryptography-48.0.0-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a0e692c683f4df67815a2d258b324e66f4738bd7a96a218c826dce4f4bd05d8f", size = 4743677, upload-time = "2026-05-04T22:57:50.067Z" }, - { url = "https://files.pythonhosted.org/packages/30/be/eef653013d5c63b6a490529e0316f9ac14a37602965d4903efed1399f32b/cryptography-48.0.0-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:18349bbc56f4743c8b12dc32e2bccb2cf83ee8b69a3bba74ef8ae857e26b3d25", size = 4330808, upload-time = "2026-05-04T22:57:52.301Z" }, - { url = "https://files.pythonhosted.org/packages/84/9e/500463e87abb7a0a0f9f256ec21123ecde0a7b5541a15e840ea54551fd81/cryptography-48.0.0-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:7e8eac43dfca5c4cccc6dad9a80504436fca53bb9bc3100a2386d730fbe6b602", size = 4695941, upload-time = "2026-05-04T22:57:54.603Z" }, - { url = "https://files.pythonhosted.org/packages/e3/dc/7303087450c2ec9e7fbb750e17c2abfbc658f23cbd0e54009509b7cc4091/cryptography-48.0.0-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:9ccdac7d40688ecb5a3b4a604b8a88c8002e3442d6c60aead1db2a89a041560c", size = 5252579, upload-time = "2026-05-04T22:57:57.207Z" }, - { url = "https://files.pythonhosted.org/packages/d0/c0/7101d3b7215edcdc90c45da544961fd8ed2d6448f77577460fa75a8443f7/cryptography-48.0.0-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:bd72e68b06bb1e96913f97dd4901119bc17f39d4586a5adf2d3e47bc2b9d58b5", size = 4743326, upload-time = "2026-05-04T22:57:59.535Z" }, - { url = "https://files.pythonhosted.org/packages/ac/d8/5b833bad13016f562ab9d063d68199a4bd121d18458e439515601d3357ec/cryptography-48.0.0-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:59baa2cb386c4f0b9905bd6eb4c2a79a69a128408fd31d32ca4d7102d4156321", size = 4826672, upload-time = "2026-05-04T22:58:01.996Z" }, - { url = "https://files.pythonhosted.org/packages/98/e1/7074eb8bf3c135558c73fc2bcf0f5633f912e6fb87e868a55c454080ef09/cryptography-48.0.0-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:9249e3cd978541d665967ac2cb2787fd6a62bddf1e75b3e347a594d7dacf4f74", size = 4972574, upload-time = "2026-05-04T22:58:03.968Z" }, - { url = "https://files.pythonhosted.org/packages/04/70/e5a1b41d325f797f39427aa44ef8baf0be500065ab6d8e10369d850d4a4f/cryptography-48.0.0-cp311-abi3-win32.whl", hash = "sha256:9c459db21422be75e2809370b829a87eb37f74cd785fc4aa9ea1e5f43b47cda4", size = 3294868, upload-time = "2026-05-04T22:58:06.467Z" }, - { url = "https://files.pythonhosted.org/packages/f4/ac/8ac51b4a5fc5932eb7ee5c517ba7dc8cd834f0048962b6b352f00f41ebf9/cryptography-48.0.0-cp311-abi3-win_amd64.whl", hash = "sha256:5b012212e08b8dd5edc78ef54da83dd9892fd9105323b3993eff6bea65dc21d7", size = 3817107, upload-time = "2026-05-04T22:58:08.845Z" }, - { url = "https://files.pythonhosted.org/packages/6b/84/70e3feea9feea87fd7cbe77efb2712ae1e3e6edf10749dc6e95f4e60e455/cryptography-48.0.0-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:3cb07a3ed6431663cd321ea8a000a1314c74211f823e4177fefa2255e057d1ec", size = 7986556, upload-time = "2026-05-04T22:58:11.172Z" }, - { url = "https://files.pythonhosted.org/packages/89/6e/18e07a618bb5442ba10cf4df16e99c071365528aa570dfcb8c02e25a303b/cryptography-48.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8c7378637d7d88016fa6791c159f698b3d3eed28ebf844ac36b9dc04a14dae18", size = 4684776, upload-time = "2026-05-04T22:58:13.712Z" }, - { url = "https://files.pythonhosted.org/packages/be/6a/4ea3b4c6c6759794d5ee2103c304a5076dc4b19ae1f9fe47dba439e159e9/cryptography-48.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cc90c0b39b2e3c65ef52c804b72e3c58f8a04ab2a1871272798e5f9572c17d20", size = 4698121, upload-time = "2026-05-04T22:58:16.448Z" }, - { url = "https://files.pythonhosted.org/packages/2f/59/6ff6ad6cae03bb887da2a5860b2c9805f8dac969ef01ce563336c49bd1d1/cryptography-48.0.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:76341972e1eff8b4bea859f09c0d3e64b96ce931b084f9b9b7db8ef364c30eff", size = 4690042, upload-time = "2026-05-04T22:58:18.544Z" }, - { url = "https://files.pythonhosted.org/packages/ca/b4/fc334ed8cfd705aca282fe4d8f5ae64a8e0f74932e9feecb344610cf6e4d/cryptography-48.0.0-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:55b7718303bf06a5753dcdccf2f3945cf18ad7bffde41b61226e4db31ab89a9c", size = 5282526, upload-time = "2026-05-04T22:58:20.75Z" }, - { url = "https://files.pythonhosted.org/packages/11/08/9f8c5386cc4cd90d8255c7cdd0f5baf459a08502a09de30dc51f553d38dc/cryptography-48.0.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:a64697c641c7b1b2178e573cbc31c7c6684cd56883a478d75143dbb7118036db", size = 4733116, upload-time = "2026-05-04T22:58:23.627Z" }, - { url = "https://files.pythonhosted.org/packages/b8/77/99307d7574045699f8805aa500fa0fb83422d115b5400a064ddd306d7750/cryptography-48.0.0-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:561215ea3879cb1cbbf272867e2efda62476f240fb58c64de6b393ae19246741", size = 4316030, upload-time = "2026-05-04T22:58:25.581Z" }, - { url = "https://files.pythonhosted.org/packages/fd/36/a608b98337af3cb2aff4818e406649d30572b7031918b04c87d979495348/cryptography-48.0.0-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:ad64688338ed4bc1a6618076ba75fd7194a5f1797ac60b47afe926285adb3166", size = 4689640, upload-time = "2026-05-04T22:58:27.747Z" }, - { url = "https://files.pythonhosted.org/packages/dd/a6/825010a291b4438aecc1f568bc428189fc1175515223632477c07dc0a6df/cryptography-48.0.0-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:906cbf0670286c6e0044156bc7d4af9cbb0ef6db9f73e52c3ec56ba6bdde5336", size = 5237657, upload-time = "2026-05-04T22:58:29.848Z" }, - { url = "https://files.pythonhosted.org/packages/b9/09/4e76a09b4caa29aad535ddc806f5d4c5d01885bd978bd984fbc6ca032cae/cryptography-48.0.0-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:ea8990436d914540a40ab24b6a77c0969695ed52f4a4874c5137ccf7045a7057", size = 4732362, upload-time = "2026-05-04T22:58:32.009Z" }, - { url = "https://files.pythonhosted.org/packages/18/78/444fa04a77d0cb95f417dda20d450e13c56ba8e5220fc892a1658f44f882/cryptography-48.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c18684a7f0cc9a3cb60328f496b8e3372def7c5d2df39ac267878b05565aaaae", size = 4819580, upload-time = "2026-05-04T22:58:34.254Z" }, - { url = "https://files.pythonhosted.org/packages/38/85/ea67067c70a1fd4be2c63d35eeed82658023021affccc7b17705f8527dd2/cryptography-48.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:9be5aafa5736574f8f15f262adc81b2a9869e2cfe9014d52a44633905b40d52c", size = 4963283, upload-time = "2026-05-04T22:58:36.376Z" }, - { url = "https://files.pythonhosted.org/packages/75/54/cc6d0f3deac3e81c7f847e8a189a12b6cdd65059b43dad25d4316abd849a/cryptography-48.0.0-cp314-cp314t-win32.whl", hash = "sha256:c17dfe85494deaeddc5ce251aebd1d60bbe6afc8b62071bb0b469431a000124f", size = 3270954, upload-time = "2026-05-04T22:58:38.791Z" }, - { url = "https://files.pythonhosted.org/packages/49/67/cc947e288c0758a4e5473d1dcb743037ab7785541265a969240b8885441a/cryptography-48.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:27241b1dc9962e056062a8eef1991d02c3a24569c95975bd2322a8a52c6e5e12", size = 3797313, upload-time = "2026-05-04T22:58:40.746Z" }, - { url = "https://files.pythonhosted.org/packages/f2/63/61d4a4e1c6b6bab6ce1e213cd36a24c415d90e76d78c5eb8577c5541d2e8/cryptography-48.0.0-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:58d00498e8933e4a194f3076aee1b4a97dfec1a6da444535755822fe5d8b0b86", size = 7983482, upload-time = "2026-05-04T22:58:43.769Z" }, - { url = "https://files.pythonhosted.org/packages/d5/ac/f5b5995b87770c693e2596559ffafe195b4033a57f14a82268a2842953f3/cryptography-48.0.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:614d0949f4790582d2cc25553abd09dd723025f0c0e7c67376a1d77196743d6e", size = 4683266, upload-time = "2026-05-04T22:58:46.064Z" }, - { url = "https://files.pythonhosted.org/packages/ec/c6/8b14f67e18338fbc4adb76f66c001f5c3610b3e2d1837f268f47a347dbbb/cryptography-48.0.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7ce4bfae76319a532a2dc68f82cc32f5676ee792a983187dac07183690e5c66f", size = 4696228, upload-time = "2026-05-04T22:58:48.22Z" }, - { url = "https://files.pythonhosted.org/packages/ea/73/f808fbae9514bd91b47875b003f13e284c8c6bdfd904b7944e803937eec1/cryptography-48.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:2eb992bbd4661238c5a397594c83f5b4dc2bc5b848c365c8f991b6780efcc5c7", size = 4689097, upload-time = "2026-05-04T22:58:50.9Z" }, - { url = "https://files.pythonhosted.org/packages/93/01/d86632d7d28db8ae83221995752eeb6639ffb374c2d22955648cf8d52797/cryptography-48.0.0-cp39-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:22a5cb272895dce158b2cacdfdc3debd299019659f42947dbdac6f32d68fe832", size = 5283582, upload-time = "2026-05-04T22:58:53.017Z" }, - { url = "https://files.pythonhosted.org/packages/02/e1/50edc7a50334807cc4791fc4a0ce7468b4a1416d9138eab358bfc9a3d70b/cryptography-48.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2b4d59804e8408e2fea7d1fbaf218e5ec984325221db76e6a241a9abd6cdd95c", size = 4730479, upload-time = "2026-05-04T22:58:55.611Z" }, - { url = "https://files.pythonhosted.org/packages/6f/af/99a582b1b1641ff5911ac559beb45097cf79efd4ead4657f578ef1af2d47/cryptography-48.0.0-cp39-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:984a20b0f62a26f48a3396c72e4bc34c66e356d356bf370053066b3b6d54634a", size = 4326481, upload-time = "2026-05-04T22:58:57.607Z" }, - { url = "https://files.pythonhosted.org/packages/90/ee/89aa26a06ef0a7d7611788ffd571a7c50e368cc6a4d5eef8b4884e866edb/cryptography-48.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:5a5ed8fde7a1d09376ca0b40e68cd59c69fe23b1f9768bd5824f54681626032a", size = 4688713, upload-time = "2026-05-04T22:59:00.077Z" }, - { url = "https://files.pythonhosted.org/packages/70/ba/bcb1b0bb7a33d4c7c0c4d4c7874b4a62ae4f56113a5f4baefa362dfb1f0f/cryptography-48.0.0-cp39-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:8cd666227ef7af430aa5914a9910e0ddd703e75f039cef0825cd0da71b6b711a", size = 5238165, upload-time = "2026-05-04T22:59:02.317Z" }, - { url = "https://files.pythonhosted.org/packages/c9/70/ca4003b1ce5ca3dc3186ada51908c8a9b9ff7d5cab83cc0d43ee14ec144f/cryptography-48.0.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:9071196d81abc88b3516ac8cdfad32e2b66dd4a5393a8e68a961e9161ddc6239", size = 4729947, upload-time = "2026-05-04T22:59:05.255Z" }, - { url = "https://files.pythonhosted.org/packages/44/a0/4ec7cf774207905aef1a8d11c3750d5a1db805eb380ee4e16df317870128/cryptography-48.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:1e2d54c8be6152856a36f0882ab231e70f8ec7f14e93cf87db8a2ed056bf160c", size = 4822059, upload-time = "2026-05-04T22:59:07.802Z" }, - { url = "https://files.pythonhosted.org/packages/1e/75/a2e55f99c16fcac7b5d6c1eb19ad8e00799854d6be5ca845f9259eae1681/cryptography-48.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a5da777e32ffed6f85a7b2b3f7c5cbc88c146bfcd0a1d7baf5fcc6c52ee35dd4", size = 4960575, upload-time = "2026-05-04T22:59:09.851Z" }, - { url = "https://files.pythonhosted.org/packages/b8/23/6e6f32143ab5d8b36ca848a502c4bcd477ae75b9e1677e3530d669062578/cryptography-48.0.0-cp39-abi3-win32.whl", hash = "sha256:77a2ccbbe917f6710e05ba9adaa25fb5075620bf3ea6fb751997875aff4ae4bd", size = 3279117, upload-time = "2026-05-04T22:59:12.019Z" }, - { url = "https://files.pythonhosted.org/packages/9d/9a/0fea98a70cf1749d41d738836f6349d97945f7c89433a259a6c2642eefeb/cryptography-48.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:16cd65b9330583e4619939b3a3843eec1e6e789744bb01e7c7e2e62e33c239c8", size = 3792100, upload-time = "2026-05-04T22:59:14.884Z" }, - { url = "https://files.pythonhosted.org/packages/be/d2/024b5e06be9d44cb021fb0e1a03d34d63989cf56a0fe62f3dfbab695b9b4/cryptography-48.0.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:84cf79f0dc8b36ac5da873481716e87aef31fcfa0444f9e1d8b4b2cece142855", size = 3950391, upload-time = "2026-05-04T22:59:17.415Z" }, - { url = "https://files.pythonhosted.org/packages/bc/17/3861e17c56fa0fd37491a14a8673fdb77c57fc5693cafe745ea8b06dba75/cryptography-48.0.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:fdfef35d751d510fcef5252703621574364fec16418c4a1e5e1055248401054b", size = 4637126, upload-time = "2026-05-04T22:59:20.197Z" }, - { url = "https://files.pythonhosted.org/packages/f0/0a/7e226dbff530f21480727eb764973a7bff2b912f8e15cd4f129e71b56d1d/cryptography-48.0.0-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:0890f502ddf7d9c6426129c3f49f5c0a39278ed7cd6322c8755ffca6ee675a13", size = 4667270, upload-time = "2026-05-04T22:59:22.647Z" }, - { url = "https://files.pythonhosted.org/packages/3b/f2/5a72274ca9f1b2a8b44a662ee0bf1b435909deb473d6f97bcd035bcdbc71/cryptography-48.0.0-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:ecde28a596bead48b0cfd2a1b4416c3d43074c2d785e3a398d7ec1fc4d0f7fbb", size = 4636797, upload-time = "2026-05-04T22:59:24.912Z" }, - { url = "https://files.pythonhosted.org/packages/b4/e1/48cedb2fe63626e91ded1edad159e2a4fb8b6906c4425eb7749673077ce7/cryptography-48.0.0-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:4defde8685ae324a9eb9d818717e93b4638ef67070ac9bc15b8ca85f63048355", size = 4666800, upload-time = "2026-05-04T22:59:27.474Z" }, - { url = "https://files.pythonhosted.org/packages/a2/ca/7e8365deec19afb2b2c7be7c1c0aa8f99633b54e90c570999acda93260fc/cryptography-48.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:db63bf618e5dea46c07de12e900fe1cdd2541e6dc9dbae772a70b7d4d4765f6a", size = 3739536, upload-time = "2026-05-04T22:59:29.61Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/1f/99/d1c90d6041656cc6ee229dc99cd67fd0cd5aec3c5f7d72fffc27cc750054/cryptography-49.0.0.tar.gz", hash = "sha256:f89660a348f4f78a92366240a61404e337586ef7f5909a2fef59ca88ef505493", size = 854345, upload-time = "2026-06-12T20:02:30.512Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/22/adf66990e63584a68dfb50c24f48a125c07b1699899381c8151e63ed458c/cryptography-49.0.0-cp311-abi3-macosx_11_0_arm64.whl", hash = "sha256:966fe0e9c67490071f14c0d2b1cb2dfb3023c5ce39457343931415f08382f2db", size = 4032100, upload-time = "2026-06-12T20:02:32.143Z" }, + { url = "https://files.pythonhosted.org/packages/09/41/3797cfaf69cae04a13ee78ebd83f0678d9c02b4779d21ce24445326f1a69/cryptography-49.0.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:36d1709f992593689b45bda411498d62c6e365f2ca00b84657d4dadd24de16db", size = 4692978, upload-time = "2026-06-12T20:01:21.305Z" }, + { url = "https://files.pythonhosted.org/packages/e6/8b/43011f7ebe515a8aa20d61f290a326cd890c2e738e16e59eaff8d9c3a412/cryptography-49.0.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0e959b578856a3924bc0cbb710fc12c387b9412a951389f3ca61704a9e25f325", size = 4716422, upload-time = "2026-06-12T20:01:48.566Z" }, + { url = "https://files.pythonhosted.org/packages/4a/91/01ce7303a4579e6d3a6abef01bd322848e9ea7a219adcabc5048b9033571/cryptography-49.0.0-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:53ecee2e23f7169b6117e99fc8a944e5e50f79e69758a83b52a00cb98ab2b2d2", size = 4700503, upload-time = "2026-06-12T20:02:47.091Z" }, + { url = "https://files.pythonhosted.org/packages/62/99/a2c95cf8293f07491e9e27c20cc4dcd18176d944e674679adeb1d0173fd6/cryptography-49.0.0-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:2eda353d8a27bcbcaa4cbed18994a74ab4d19a2ca897db188ea269ab9b71419b", size = 5309779, upload-time = "2026-06-12T20:02:08.987Z" }, + { url = "https://files.pythonhosted.org/packages/20/2c/0622f20ff02b2ef32558733443805dc82fd4c275be01b2d19d14676f3a1b/cryptography-49.0.0-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2afe9051da7ae7bd5905da5a949280c7d2bb75682e188f650a9d0f2756b834c6", size = 4749683, upload-time = "2026-06-12T20:02:03.335Z" }, + { url = "https://files.pythonhosted.org/packages/a3/5b/c5246635d5fd3b64e0d45ae10e99fd32fe9676a79915ccfe5a61ba9af1a5/cryptography-49.0.0-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:0b82e28ee398a386f0807bba7884d30f25218855690f45115831bcce5d90822c", size = 4337874, upload-time = "2026-06-12T20:02:54.323Z" }, + { url = "https://files.pythonhosted.org/packages/6d/88/05563c7fe2e914e87d1a536d06fe83e66b4e1d95cb593e05aea375531da8/cryptography-49.0.0-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:ccac2bfebc306b862133e3bb71f3f6ee8bb525240089b2d952e4144b3a6d5da7", size = 4700283, upload-time = "2026-06-12T20:01:34.822Z" }, + { url = "https://files.pythonhosted.org/packages/c4/b6/d7696e4e890d6ae1469935164c9e5215c557671cb78d6e3f458ccceaa632/cryptography-49.0.0-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:d0527ce944105f257f605a827d6ebead966c752038b6e8656abb9c5edee6fc68", size = 5265844, upload-time = "2026-06-12T20:01:24.09Z" }, + { url = "https://files.pythonhosted.org/packages/a9/3c/f3ad17eecc1a57b0ba236dc01f90e783c51f4a2f35f64777cc4f47a184b2/cryptography-49.0.0-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:cbc77da8c523d5abd028635ba850a6966fcee2c82e2bf65a41d1d8afe0f98be9", size = 4749290, upload-time = "2026-06-12T20:01:30.848Z" }, + { url = "https://files.pythonhosted.org/packages/4f/01/339573cf1023163a400b0b5d16f6d507de413b9f60be6fd1b77feeaf6737/cryptography-49.0.0-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b87e65d263b3e5d3bb92a57e2a6638e2f31110fa7aa890c7b2dbba42248d0a3f", size = 4834612, upload-time = "2026-06-12T20:01:29.246Z" }, + { url = "https://files.pythonhosted.org/packages/71/fd/577302e213a1be9468f92d1afef66fcf1ef83d516819d9992ca547f592bd/cryptography-49.0.0-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:66ec79c3904820572d7e987abdf304281f141d37ad9a489b8e97066e7b9b6459", size = 4980804, upload-time = "2026-06-12T20:01:42.853Z" }, + { url = "https://files.pythonhosted.org/packages/1f/09/f42b1d190c5ba75f72062a387f8030d1d75f6ab035788f1d9c4b01de6525/cryptography-49.0.0-cp311-abi3-win_amd64.whl", hash = "sha256:e5dfc1e64de5677cec922ffa8da89c546d0415bf6efdf081842e5d44c84e1f0e", size = 3810026, upload-time = "2026-06-12T20:02:39.262Z" }, + { url = "https://files.pythonhosted.org/packages/ec/9e/db72b3ae7fc9cfad53e630e56c6ae83b9b6ff0bf3718ffb8012d20b3aabf/cryptography-49.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:73a205dce83953d131a4aa1e0fd917a2fd1c5b1eef251e9d7152efefcbf5caf7", size = 4013892, upload-time = "2026-06-12T20:02:10.735Z" }, + { url = "https://files.pythonhosted.org/packages/86/12/c48a424f38db03027be9f7ed5c7dc5de9933dbee992865f98b13727a009d/cryptography-49.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:196ecd6a36e4e9aa10270393bb98d8df88fccee0bf1e5128b91ae4eb4375896d", size = 4678835, upload-time = "2026-06-12T20:02:48.743Z" }, + { url = "https://files.pythonhosted.org/packages/68/28/8a3ad4653662c93fc44dc4e5d8fd374c25c42e07b34bbfbadf49cf57a5a8/cryptography-49.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7abcee80084cda3f7691f3eb1ce480d8df49cec637b429aa35986c1de71738aa", size = 4697239, upload-time = "2026-06-12T20:02:56.03Z" }, + { url = "https://files.pythonhosted.org/packages/a8/b2/2193fc74f81aee4f9b62733133b73b5176718932ed8f2e4b03fa040480a6/cryptography-49.0.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:4ae387c9cb68ea569ca17e490d66d8142b81c3cc814bf179974b7d146e490bbb", size = 4685593, upload-time = "2026-06-12T20:02:50.666Z" }, + { url = "https://files.pythonhosted.org/packages/47/f1/1d3eaa243bfc5de4a187b22aa8c048b3e4980bfbe830ac46e6bac2e66947/cryptography-49.0.0-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:f37d847238971164fdbc68ade6f6574aecc9c0af714190e2083429ff68f4ce9d", size = 5289961, upload-time = "2026-06-12T20:01:46.468Z" }, + { url = "https://files.pythonhosted.org/packages/58/39/2d51306721330c486495853eda1c567880ff036de15a14c4b74f399934af/cryptography-49.0.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:c2bc30226390d60ea19d9f82b19db005fe0452154a23c1c410c12ea801e43561", size = 4731145, upload-time = "2026-06-12T20:02:16.832Z" }, + { url = "https://files.pythonhosted.org/packages/17/50/983e838c7fd0d87fd8c969bcdd328edaf5f756e38df5281637424c155873/cryptography-49.0.0-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:07cab27cc7b7e0fd28e5e26bb9eeedde5c135c868b46de4a27845abe94af6122", size = 4321719, upload-time = "2026-06-12T20:02:52.611Z" }, + { url = "https://files.pythonhosted.org/packages/a7/f5/8f571d7e27c55bce9f76f026143bcb1e040a4233149ecca0bea5fa5dd5f7/cryptography-49.0.0-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:b20133d204d2bb56ba047642199603876c872026ca53e79c35b83772ab2cc505", size = 4685209, upload-time = "2026-06-12T20:02:07.282Z" }, + { url = "https://files.pythonhosted.org/packages/e7/84/0e27016a6fc5a0886f797018b26aa42f40c09a82332bff77822a451deaaa/cryptography-49.0.0-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:b970c6da94d5bb18629db453d14f2a1300f6bf59b61e9b82377931ef95504866", size = 5246285, upload-time = "2026-06-12T20:01:32.439Z" }, + { url = "https://files.pythonhosted.org/packages/11/2d/5e1fb307cb5931881516b464c98774b3f2c36b5d4bb9a2830253cf553cad/cryptography-49.0.0-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:d8ecde755e2e91bf773fc94e8c9d730cd7f2007004cb492263a794ec3899a1c8", size = 4730441, upload-time = "2026-06-12T20:02:01.469Z" }, + { url = "https://files.pythonhosted.org/packages/e4/c0/bff5a02ee731d207d6a1ed51732549d8c53d2bc8da1d10ec6f2844201d68/cryptography-49.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e3fb64c420688e5319ae25113a354015abbd8dffbfbc41781a1ea66fc7622ac3", size = 4815869, upload-time = "2026-06-12T20:01:36.574Z" }, + { url = "https://files.pythonhosted.org/packages/b9/26/814681d14248d95d73d5c3eea0c39a94eb8302df966f670a2c60de90974b/cryptography-49.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:32703d93296f5c1f4b53349ad3a250c2cae0fdecd3a3dd5d47e616d8d616af27", size = 4960948, upload-time = "2026-06-12T20:02:18.688Z" }, + { url = "https://files.pythonhosted.org/packages/4c/fe/93ecac273d3738939d023612ad12cca9a3740a5345d69fda04134c43fd96/cryptography-49.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:33cd0565932807baddb67b96dbee92f2c374b5c89dee09fd74079aeb8c8dba61", size = 3799153, upload-time = "2026-06-12T20:01:39.059Z" }, + { url = "https://files.pythonhosted.org/packages/19/2a/5bb823f5bedcf80718cea7fbc95ec5515cca3769633c4b01a32be7f30e7c/cryptography-49.0.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:ec5e529fb80935c94fe7b729f9972b50e351a0e6b50aa294fd5cabb109fcc29a", size = 4025947, upload-time = "2026-06-12T20:01:25.745Z" }, + { url = "https://files.pythonhosted.org/packages/3d/df/40577043ca124e17012f408ddddaeb213b856336ac82ddb3bc915f39e29f/cryptography-49.0.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f78ff2c9ed8dc2d036b0f4d640e22522213d047c1b14e61205a7e55c80a494d4", size = 4692429, upload-time = "2026-06-12T20:01:53.628Z" }, + { url = "https://files.pythonhosted.org/packages/2c/99/2d13299eb3dd27b02dcfaafcc91d6b5cb3329f7cbd6d8f51921acd566c1a/cryptography-49.0.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:35b151772baff2c74cba7fa290ceaff4c3b11c0c881eb93eb5dbc05a7cfbba18", size = 4700968, upload-time = "2026-06-12T20:02:45.383Z" }, + { url = "https://files.pythonhosted.org/packages/a5/4d/9c0cd02f95e2602dd5e563da149ee0830abef3537be8b34dc56281ebe27a/cryptography-49.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:0f21641cf4b30fca7aee061ced0ec7ad7b073518088b7c9969a297c0ae796c69", size = 4697758, upload-time = "2026-06-12T20:01:41.13Z" }, + { url = "https://files.pythonhosted.org/packages/24/01/186c825898477d77e2324d5360fefe622ff1d8d1963ec0554e2cada8ec77/cryptography-49.0.0-cp39-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:9e82dcc8e56052715fb18b2429e3bca4823b1629136a2084fc45a9a5cecb9b64", size = 5298863, upload-time = "2026-06-12T20:02:24.579Z" }, + { url = "https://files.pythonhosted.org/packages/b8/7b/62cbbab75d0659865bf0273790031544a0b16c8072d258f9428dcd8190dc/cryptography-49.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6f2debedf9ca60cf1d5bd466475638af5130f89965605cd818484d19987d3a21", size = 4735983, upload-time = "2026-06-12T20:01:50.14Z" }, + { url = "https://files.pythonhosted.org/packages/6c/72/3e798c064bc39e471008075d0f9bc9daf77a80879c092e4a8e170c585ed4/cryptography-49.0.0-cp39-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:8c25ceb16df5b9435f3f6a9829204985b0e0cbee3b48aacd432c7d2c850b44d9", size = 4334173, upload-time = "2026-06-12T20:01:44.743Z" }, + { url = "https://files.pythonhosted.org/packages/f0/ee/6fca21d1ac73e06f8bef71940abfd4d2f6472b4bca284d770f32bd4086f6/cryptography-49.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:28d8b15e6275f12c8a207dc309dfa957903c927d08d0cc937ee3f63f200693cc", size = 4697298, upload-time = "2026-06-12T20:02:20.918Z" }, + { url = "https://files.pythonhosted.org/packages/67/d0/a5fcd3515f0bae49a7b6d0413cc1bdccdcc1fc0047037a0d480642cdc5d6/cryptography-49.0.0-cp39-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:6fc361c34fb6aac015ce19435876635e5c6d21db31998b0920f675f131e043b8", size = 5254338, upload-time = "2026-06-12T20:02:22.737Z" }, + { url = "https://files.pythonhosted.org/packages/a0/84/84fe36f19caf857d61cb7fc9c63035a47ffabd84ea12d1d393148efa3615/cryptography-49.0.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:2400ef9c9e2299a25614eb1dea3db54a69b1349efd043bfac9c67630d136df36", size = 4735650, upload-time = "2026-06-12T20:02:41.389Z" }, + { url = "https://files.pythonhosted.org/packages/6c/a0/db537264e234f7273a73ec020873d6d6b39dfd8a53db78b550ca8320440e/cryptography-49.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:67e1d20ad9ef3a563c59ef22e7a8a0b8210bd26604369ea4a30a7c66aefe504e", size = 4834820, upload-time = "2026-06-12T20:01:51.847Z" }, + { url = "https://files.pythonhosted.org/packages/93/77/8df9eb486495979bccecd1062e2eaf435250e84437040295b57d09048b0b/cryptography-49.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:42b0684e0e40cf26122427802486f6d93aea593612603a94fbf260c7eb1e9c1b", size = 4967968, upload-time = "2026-06-12T20:02:12.524Z" }, + { url = "https://files.pythonhosted.org/packages/c2/e6/f60198ea8d9dfa15fff9ed4ca02ce362f6eadd9ba757dcc50634c4257b63/cryptography-49.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:026ac7423e6fa66872d3bf889be5974507da3944f866f704fa200eadacd00001", size = 3785547, upload-time = "2026-06-12T20:02:26.847Z" }, + { url = "https://files.pythonhosted.org/packages/63/d3/4a83af35d65e3fad632c926fad684c193ea4398569ccb0bbbc7fe8f5dc9a/cryptography-49.0.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:fc1e275c2f1d97b1a6450b8b0ea3ebfa6e087a611c2b26cb2404d48588abab7b", size = 3993685, upload-time = "2026-06-12T20:02:14.883Z" }, + { url = "https://files.pythonhosted.org/packages/d6/a7/f9dac0ab7f80368c56993a7bf638ef9935f825c91902798481fac0898138/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c83782480a4a9da4d0feb51950131ba32e12e70813848b3343f6e18c28a66838", size = 4676239, upload-time = "2026-06-12T20:02:28.793Z" }, + { url = "https://files.pythonhosted.org/packages/d7/70/2ba3769dd0ae167e2f33dfa9592d45db6ff9a61d62ca1a5b3d1bdd09068f/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b39efa323140595abd3ecca8529d321ae50f55f3aa3ba9cc81ea56a6011953d5", size = 4715584, upload-time = "2026-06-12T20:01:27.495Z" }, + { url = "https://files.pythonhosted.org/packages/94/64/2923570ac1c0bd3a737aa366ac3abbbbde273042308b8cde95e2364a6e6a/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:b47db11c2c3525083296069b98ac5221907455e989ae0c2e3008bde851921615", size = 4675885, upload-time = "2026-06-12T20:01:55.49Z" }, + { url = "https://files.pythonhosted.org/packages/ab/f8/614dc7e051418cfe53d55173c1e24c6b0085e89996fe90508c2fdf769aef/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:084ef1af862eb07ec46d25f68689f2102a9fc0e05ce7b80f14f5fe51e4eef0f6", size = 4715449, upload-time = "2026-06-12T20:02:05.469Z" }, + { url = "https://files.pythonhosted.org/packages/aa/50/a9caea39ad19c431c1a3f8a31114df65b260cdfe67786b6c7e7c040c4c44/cryptography-49.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:be9fcb48a55f023493482827d4f459bd263cc20efde64f204b97c123201850c6", size = 3783731, upload-time = "2026-06-12T20:02:43.319Z" }, ] [[package]] @@ -221,140 +218,140 @@ wheels = [ [[package]] name = "grpcio" -version = "1.81.0" +version = "1.81.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/15/f3/23f47b24f8d8c2028eba501db3acfbb2f592cbb5995eaa6e363a627b74d7/grpcio-1.81.0.tar.gz", hash = "sha256:a5acd7efd3b1fe9b4eb0bcaaa1507eed68a0ad0678b654c3f7b464df9ba9dca5", size = 13032272, upload-time = "2026-06-01T05:56:22.827Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/25/a0/13f7dd9602a44c2852eb5ca29dfcb14de5547e1d37672dbf20e3cf17d5d2/grpcio-1.81.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:b4108e5d9d0f651b7eea749116181fe6c315b145661a80ec31f05ec2dbe21af7", size = 6087534, upload-time = "2026-06-01T05:54:04.541Z" }, - { url = "https://files.pythonhosted.org/packages/da/8a/439070efa430b3c51c8e319b67521957688905f27b294302c6077e9d4ef5/grpcio-1.81.0-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:b76ea9d55cd08fcdbda25d28e0f76679536710acb7fbd5b1f70cb4ac49317265", size = 12062452, upload-time = "2026-06-01T05:54:10.137Z" }, - { url = "https://files.pythonhosted.org/packages/4a/6f/7802953eb46ab7082f70a139dac02a5544e8b784c4647f9750af28f64348/grpcio-1.81.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:4e032feb3bfb4e2749b140a2302a6baa8ead1b9781ff5cf7094e4402b5e9372e", size = 6635199, upload-time = "2026-06-01T05:54:12.739Z" }, - { url = "https://files.pythonhosted.org/packages/09/33/91d7fd2392923407fc89e7f1493011dacd3f1a6972cff5fa2237ac1efd5d/grpcio-1.81.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:725801c7086d7e4cd160e42bb2f54e0aeb976b9568df3cc6f843b15d29b79fb1", size = 7333482, upload-time = "2026-06-01T05:54:15.474Z" }, - { url = "https://files.pythonhosted.org/packages/9a/df/ec0a4e04472df2618f8741151fa026bc877648e952ebb0e421169e0b992b/grpcio-1.81.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f750a091fff3a3991731abc1f818bdc64874bb3528162732cb4d45f2e07821a6", size = 6837709, upload-time = "2026-06-01T05:54:18.036Z" }, - { url = "https://files.pythonhosted.org/packages/86/82/9f69147bbd723ff07fea0242e5877a9026be1819410996e6086aae8f00a6/grpcio-1.81.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8226ba097eed660ef14d36c6a69b85038552bb8b6d17b44a5aa6f9abf48b8e08", size = 7440601, upload-time = "2026-06-01T05:54:20.662Z" }, - { url = "https://files.pythonhosted.org/packages/89/3b/52c1558e94941022b7ee046583fe4a007164c7e18087d55f82fd23c567b8/grpcio-1.81.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:40edffb4ec3689373825d367c4457727047a6e554f03245265ecc8cc03215f22", size = 8442803, upload-time = "2026-06-01T05:54:22.941Z" }, - { url = "https://files.pythonhosted.org/packages/4a/5d/1264d086c5d3cc81c59084de1ccc87d1a037f91ce9cb1f611caaa19b70cc/grpcio-1.81.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f85570a016d794c29b1e76cf22f67af4486ddbe779e0f30674f138fa4e1769ec", size = 7868964, upload-time = "2026-06-01T05:54:25.627Z" }, - { url = "https://files.pythonhosted.org/packages/a5/b4/3b3339e661669d545f09ee7ea33fec3b1b438e623b3105597d3457c39391/grpcio-1.81.0-cp310-cp310-win32.whl", hash = "sha256:3755c9669307cad18e7e009860fdea98118978d2300451bd8530a53048e741e7", size = 4202292, upload-time = "2026-06-01T05:54:28.261Z" }, - { url = "https://files.pythonhosted.org/packages/c2/c3/cd81087855dfd4bbef2db50e58e1f7ce93a9a1675bc89a6cb76aa438ffaa/grpcio-1.81.0-cp310-cp310-win_amd64.whl", hash = "sha256:909bb3222b53235498d2c5817a0596d82b0aaea490ba93fdf1b060e2938a543c", size = 4937038, upload-time = "2026-06-01T05:54:30.376Z" }, - { url = "https://files.pythonhosted.org/packages/45/a8/9916ab10a0201f4c7afb6918125aa2f38a7626ee18ffbc066dd9cb04a74d/grpcio-1.81.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:794e6aa648e8df47d8f908dc8c3b42347d04ec58438f1dcd4e445f09b4f6b0ce", size = 6093557, upload-time = "2026-06-01T05:54:32.64Z" }, - { url = "https://files.pythonhosted.org/packages/a7/43/99e969a048904a65df3129ee53c5f523b7c4e43127786460cac4bee82470/grpcio-1.81.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:cd78145b7f7784661c524624f3526c9c6f891b30a4b54cb93a40806d0d0d61e9", size = 12075345, upload-time = "2026-06-01T05:54:35.77Z" }, - { url = "https://files.pythonhosted.org/packages/83/70/4c3a204e190333768d4f63f4ff56bd0bf405f05b9188f3a59a8bcf161f8b/grpcio-1.81.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:638ccc1b86f7540170a169cb900799b9296a1381e47879ce60b0de9d3db73d33", size = 6640664, upload-time = "2026-06-01T05:54:38.854Z" }, - { url = "https://files.pythonhosted.org/packages/2e/a9/0fa17ac8b4e29cf59b26915be6cab8c0d4583ce24a6208a287b6e5f6d072/grpcio-1.81.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:21ec30b9ea320c8207ea7cd05873ad64aa69fdd0e81b6758b3347983ba20b50a", size = 7332542, upload-time = "2026-06-01T05:54:41.39Z" }, - { url = "https://files.pythonhosted.org/packages/f4/18/7c8e3d0dda2fb7a17076fcd6c9085209eabad3354696c64230f87b3a14eb/grpcio-1.81.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:dbdb99986548a7e87f8343805ef315fd4eb50ffaabf4fb1206e42f2542bb805d", size = 6842564, upload-time = "2026-06-01T05:54:43.57Z" }, - { url = "https://files.pythonhosted.org/packages/f6/19/2f1726c2e03ad3f3fe241e6b41534532ad580d595de14a4054ad84999c80/grpcio-1.81.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c36f5d5e97944cbda2d4096b4ae262e6e68506246b61582acf1b8591607f3ccc", size = 7446236, upload-time = "2026-06-01T05:54:46.042Z" }, - { url = "https://files.pythonhosted.org/packages/a7/dc/0321f892212e2c0bfe248cea24c00d7d7111639688ec5ffd8e36b5c02fe6/grpcio-1.81.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9f355384e5543ab77a755a7085225ecc19f32b76032e851cbd8145715d79dec8", size = 8445633, upload-time = "2026-06-01T05:54:48.809Z" }, - { url = "https://files.pythonhosted.org/packages/e5/20/0e7ea7494955cf1beea3077b2fd2c04c84d4480c2ae85a1e1cfa150c62d7/grpcio-1.81.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:77eb4e9fe61486bd1198cc7236ebb0f70e66234e63c0348f40bc2553ed16a88b", size = 7873958, upload-time = "2026-06-01T05:54:52.135Z" }, - { url = "https://files.pythonhosted.org/packages/d3/9e/6438e226046c2a0778060e2b1d791a4827277bbd9d223013c2c63ee7435e/grpcio-1.81.0-cp311-cp311-win32.whl", hash = "sha256:7915a2e63acdc05264a206e1bddfd8e1fb8a29e406c18d72d30f8c124e021374", size = 4202110, upload-time = "2026-06-01T05:54:54.134Z" }, - { url = "https://files.pythonhosted.org/packages/42/6b/d0895e93d65b186f5f1737fcc186d7faa487e2d9d934eda111a37a309869/grpcio-1.81.0-cp311-cp311-win_amd64.whl", hash = "sha256:5e925a70fe99fe5794f7beca0ea034c75f068afcc356d79047e73f99cdcca34c", size = 4940942, upload-time = "2026-06-01T05:54:56.749Z" }, - { url = "https://files.pythonhosted.org/packages/82/d5/896a3aaf07068d707d88b282a04914b872db4d32d3c7e6d88e43a3b911fa/grpcio-1.81.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:57b3b0e73a518fa286959b40c3eddd02703504ca186e8b7b2945954519bd8b2c", size = 6053538, upload-time = "2026-06-01T05:54:58.965Z" }, - { url = "https://files.pythonhosted.org/packages/68/6a/7e3eafa4727cd405ff917605ed2949e2af162f233f5cbdd773723a5fea7d/grpcio-1.81.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:8bb1789c94322a13336a2b6c58d9c14d68f8628b6e24205a799c69f5bf8516ce", size = 12053447, upload-time = "2026-06-01T05:55:01.862Z" }, - { url = "https://files.pythonhosted.org/packages/16/79/a4302aa82428de48a922421f522b027a1a727ab4d0926368454aa953d36d/grpcio-1.81.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e4d053900a0d24b75d7521139a3872150301b3d6bde3bed5e12318fb25791e4d", size = 6595872, upload-time = "2026-06-01T05:55:04.946Z" }, - { url = "https://files.pythonhosted.org/packages/b4/1f/7ff2850eaefbecf99af3f624dbb28dd1ad6c5fd4c1d8c26909ed6482673b/grpcio-1.81.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:db217c2e52931719f9937bd12082cd4d7b495b35803d5760686975c285924bf8", size = 7303857, upload-time = "2026-06-01T05:55:07.205Z" }, - { url = "https://files.pythonhosted.org/packages/e2/98/1f3896a9baae1f2aedf4e99c55291d6fa1f30ad9603d63bc18bda967b53e/grpcio-1.81.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:19f201da7b4e5c0559198abe5a97157e726f3abe6e8f5e832d4a50740f6dcc22", size = 6809676, upload-time = "2026-06-01T05:55:09.513Z" }, - { url = "https://files.pythonhosted.org/packages/34/8b/3441983718095208c5d797fd3239882e97ea89a629f41c8df94b4eef4df9/grpcio-1.81.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:275144b0115353339dbb8a6f28a9cf8997b5bf40e37f8f66ac0b0ea57e95b43f", size = 7412654, upload-time = "2026-06-01T05:55:12.777Z" }, - { url = "https://files.pythonhosted.org/packages/3c/98/1eddf07df6e4fe85cf67502a793f7b05468b2dca3d1ef35b972cf5d54468/grpcio-1.81.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5192857589f223e5a98ff0e31f6e551b19040e647d17bfe10116c8a2ce3b8696", size = 8408026, upload-time = "2026-06-01T05:55:15.514Z" }, - { url = "https://files.pythonhosted.org/packages/5c/73/3860341e6a1f5347be6ab35c6c0e1e3a8eb59d010388207fd561dcf01a88/grpcio-1.81.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c6ff087cb1f563f47b504b4e29e684129fc5ae4863faf3ebca08a327764ee6cb", size = 7849498, upload-time = "2026-06-01T05:55:18.078Z" }, - { url = "https://files.pythonhosted.org/packages/ae/3f/0ea06bd85c701966aa3f8f37314f2ed83520d2b7590f42d643d445d8bc8b/grpcio-1.81.0-cp312-cp312-win32.whl", hash = "sha256:98c6240f563178fc5877bd50e6ff274463e53e1472128f4110742450739659fa", size = 4184161, upload-time = "2026-06-01T05:55:20.127Z" }, - { url = "https://files.pythonhosted.org/packages/39/e3/a7c387406827a86f99ad7838b995bf9b4a182ffe2d2c439ed2873efec952/grpcio-1.81.0-cp312-cp312-win_amd64.whl", hash = "sha256:87e33b7afcfb3585121b5f007d2c52b8c534104d18f556e840d35193ca2a9141", size = 4929958, upload-time = "2026-06-01T05:55:22.736Z" }, - { url = "https://files.pythonhosted.org/packages/f3/29/779ee53c931d0fd55c1d459fde43e485172caa3ac87cbd43d003a13a0185/grpcio-1.81.0-cp313-cp313-linux_armv7l.whl", hash = "sha256:62bbe463c9f0f2ff24e31bd25f8dd8b4bae78900e315915a3195a0ef1471a855", size = 6054973, upload-time = "2026-06-01T05:55:25.043Z" }, - { url = "https://files.pythonhosted.org/packages/9e/b6/7211807926b5a17f8d9a5d47c739a163d6812fefe3e4714e81cf92945ed7/grpcio-1.81.0-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:43c121e135ae44d1559b430db2b2dfad7421cbbe40e1deba506c7dc62b439719", size = 12048662, upload-time = "2026-06-01T05:55:28.453Z" }, - { url = "https://files.pythonhosted.org/packages/64/89/b1b93ef6b34bd20bbaf707fa99133bc9cc302139d5ec6f77a165c7169796/grpcio-1.81.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f345de40ef2e65f63645d53d251824e6070e07804827c5b00ec2e44555f9f901", size = 6599116, upload-time = "2026-06-01T05:55:31.185Z" }, - { url = "https://files.pythonhosted.org/packages/eb/bc/c89f9b9d1c22895715356a1e009554dae66319e97826bb4d30bcda7d29e8/grpcio-1.81.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:8c0855a350886f713b9e458e2a10d208009dcaa849f574e39cd6067db1fe1279", size = 7307591, upload-time = "2026-06-01T05:55:33.463Z" }, - { url = "https://files.pythonhosted.org/packages/65/4a/1df2a4cb4a1386e066ab7e4175e34bb884b35ccb60d3621c09c84af6aabb/grpcio-1.81.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a524cd530900bd24511fcb7f2ed144da4ea37711c4b094475d0bceca7a93a170", size = 6811797, upload-time = "2026-06-01T05:55:36.731Z" }, - { url = "https://files.pythonhosted.org/packages/8d/dc/fa189d20601a1be25b08850cfb733879bbb1047b62a8feec3a60e3e1a87b/grpcio-1.81.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e7746ba3e6efc9e2b748eff59470a2b8684d5a9ec607c6580bcaa5be175820bc", size = 7415131, upload-time = "2026-06-01T05:55:39.451Z" }, - { url = "https://files.pythonhosted.org/packages/ad/a3/5625c48cb48d23c6631b3e5294f88e4c751f22a52591ae78859fab96dca1/grpcio-1.81.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:aaaa4f7f2057d795952e4eacf3f342be8b5b156992f6ac85023c8b98794ebd47", size = 8408398, upload-time = "2026-06-01T05:55:42.219Z" }, - { url = "https://files.pythonhosted.org/packages/75/34/0f8202c6809a46c2b4d69125ef3667c40b1c211f8e19930e5fa1f1197039/grpcio-1.81.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0fba53cb96004b2b7fb758b46b2288cb49d0b658316a4e73f3ef67230616ee65", size = 7844481, upload-time = "2026-06-01T05:55:44.849Z" }, - { url = "https://files.pythonhosted.org/packages/c0/95/c3366b5b5edf4c4adc90f2e29ca16e57965a8e56dc8d2ee89565ba1905bb/grpcio-1.81.0-cp313-cp313-win32.whl", hash = "sha256:c197e2ef75a442528072b29e9755da299110e8610e8bcbb59a6b4cf55384f005", size = 4182777, upload-time = "2026-06-01T05:55:47.459Z" }, - { url = "https://files.pythonhosted.org/packages/a9/a7/932f2f748511a32e641a2aba0d30dded3ed6e8bc330e0924e4d5d86853e6/grpcio-1.81.0-cp313-cp313-win_amd64.whl", hash = "sha256:194eddfacc84d80f50512e9fd4ee851d5f2499f18f299c95aa8fb4748f0537e0", size = 4928085, upload-time = "2026-06-01T05:55:50.158Z" }, - { url = "https://files.pythonhosted.org/packages/c5/1d/28b231333857deb840bc3d182ae087510170ea6d68f21393aeb0fe499530/grpcio-1.81.0-cp314-cp314-linux_armv7l.whl", hash = "sha256:a9351055f52660b58f3d4890ea66188b5134399f82b11aa0c55bd4b99eff5390", size = 6055712, upload-time = "2026-06-01T05:55:52.889Z" }, - { url = "https://files.pythonhosted.org/packages/e8/b8/999c14f9dff0fc47549d2e827cba1343ddc18e1d1bf0d06d2cf628eecbd9/grpcio-1.81.0-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:300f3337b6425fd16ead9a4f9b2ac25801acb64aa5bc0b99eb69901645b2b1d2", size = 12057189, upload-time = "2026-06-01T05:55:55.952Z" }, - { url = "https://files.pythonhosted.org/packages/1e/3d/1fbde079572562af65351151d840525a13879eb7b481d35b55cd64c6127a/grpcio-1.81.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:97bbd623f7ded558fd4f7cb5a4f600c4d4de65c5dd364c83a5b14b2a10a2d3b5", size = 6608136, upload-time = "2026-06-01T05:55:59.069Z" }, - { url = "https://files.pythonhosted.org/packages/32/89/1f17cb6882abfd8e5a303a25d5d1665abef5a8c499a96198c65a651d1b85/grpcio-1.81.0-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:ff83d889e3ebf6341c8c7864ad8031591ad5ca61599072fc511644d1eb962d2b", size = 7307045, upload-time = "2026-06-01T05:56:02.376Z" }, - { url = "https://files.pythonhosted.org/packages/48/5a/f98e91b2e755652e637ea2144318b0229b290062199f761b445fe1fa6015/grpcio-1.81.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c4fe218c5a35e1d87a5a26544237f1fa41dfd9cbd3c856b0810a30061f8b0aaf", size = 6812794, upload-time = "2026-06-01T05:56:05.777Z" }, - { url = "https://files.pythonhosted.org/packages/0a/0c/77892d715ac41e7ec0ace2a50080ffb64e189188056f607a66fe0014d1ee/grpcio-1.81.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:b8b025b6af43ee0ad4a70307025d77bcab5adde7c4597786010d802c203e9fc5", size = 7422767, upload-time = "2026-06-01T05:56:08.524Z" }, - { url = "https://files.pythonhosted.org/packages/3f/b8/aa04590c6564714d94954515f15a236e59d4b9b3ad01e615f1b706d7792d/grpcio-1.81.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:3d4e0ce5a40a998cf608c8ba60ecfe18fdf364a9aa193ae4ac3faeecd0e86757", size = 8408551, upload-time = "2026-06-01T05:56:11.283Z" }, - { url = "https://files.pythonhosted.org/packages/43/3d/4f4a3450a1973568910c6909cb74abbf2126f68aefae5976962f9f7ad50d/grpcio-1.81.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:aa948712c8e5fa40ec250870bda14bc7578e1bb832a8912d9d2a0f720518edbe", size = 7846468, upload-time = "2026-06-01T05:56:14.536Z" }, - { url = "https://files.pythonhosted.org/packages/88/f4/5827fd248221ad3b44161c23ce9b5f4ee405b04fc6da5fd402a9aa87a84a/grpcio-1.81.0-cp314-cp314-win32.whl", hash = "sha256:fbbe81314a9d92156abce8b62c09364eb8bafc0ca2a19919a45ec64b5c6cb664", size = 4264427, upload-time = "2026-06-01T05:56:17.192Z" }, - { url = "https://files.pythonhosted.org/packages/0c/e8/127dc2b246096ad50ef7c8d9b7b31d757787aeb796368bcdd4454e4204c4/grpcio-1.81.0-cp314-cp314-win_amd64.whl", hash = "sha256:b93cee313cae4e113fbb3a0ce1ea5633db6f63cfde2b2dc1d817429026b2a50b", size = 5070848, upload-time = "2026-06-01T05:56:19.735Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/b0/b5/1ff353970a87eda4c98251e34d2dfd214abd4982dc89119c9252a2a482d2/grpcio-1.81.1.tar.gz", hash = "sha256:6fa10a767143a5e82e8eaab53918af0cd8909a57a27f8cb2288b80a613ac671b", size = 13026582, upload-time = "2026-06-11T12:46:51.673Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/d5/f2b159d8eec08be2a855ef698f5b6f7f9fdda022e4dd9e4f5d968affd678/grpcio-1.81.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:6f9a0c9c1cc15c112d1c053064fd032b64917062292c3d70aea280e02ae10b77", size = 6086868, upload-time = "2026-06-11T12:44:19.364Z" }, + { url = "https://files.pythonhosted.org/packages/80/41/9c95232b94b219ed8b14029d9cd000e0381cafba869c451dda60af84f4ba/grpcio-1.81.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:69ef28e54fc85397f91b8c19592b8ef3d81952080366914823bd8572a2958120", size = 12062291, upload-time = "2026-06-11T12:44:27.142Z" }, + { url = "https://files.pythonhosted.org/packages/83/8b/bd9284bdd665ddf877a3e8bc2930d1bcf6ebdbae7b0da5c783dc26bd6e33/grpcio-1.81.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:15641444eca4a29358107b3dceb74c1c6305c55c822fd199b458aaea4068a7fb", size = 6635242, upload-time = "2026-06-11T12:44:30.741Z" }, + { url = "https://files.pythonhosted.org/packages/60/24/78fa025517a925f1a17da71c4ef9d5f1c6f9fa65af22dfb523c5c6317a21/grpcio-1.81.1-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:d4b2dddfc219f54f956ccd53cf76a1d338ffe68fc7f2849ec9c7feb9927ff692", size = 7332974, upload-time = "2026-06-11T12:44:33.72Z" }, + { url = "https://files.pythonhosted.org/packages/f7/11/402295b388dd35861007f8a26a37c2e2f284212d57bdf407c31f36043746/grpcio-1.81.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ca1cc11d82677b9662082e5478b7528e2b7db7beaa6bdff42bd62789d81be399", size = 6836597, upload-time = "2026-06-11T12:44:36.108Z" }, + { url = "https://files.pythonhosted.org/packages/4d/71/37b10fd4fd579ffade6e695c14e9df5e8cba9e2365b81c131da438b67c34/grpcio-1.81.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:aa2ba7d2ad6df4d80127cea65e5b8d5e2c3adbf153ff4804452836328aca7c54", size = 7440660, upload-time = "2026-06-11T12:44:38.664Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d5/40203f828abc83d458b634666df6df13778032f178c03845ad5a93682388/grpcio-1.81.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:592b5fee597faa91cce2dd294dd7d9a1c83d76c4dbf877e33ec1adb866b2fbed", size = 8443171, upload-time = "2026-06-11T12:44:41.678Z" }, + { url = "https://files.pythonhosted.org/packages/eb/2c/0ed82ea35b5ec595e10444940c1db8c0e0ef57aa46bc8797d5ff838a219e/grpcio-1.81.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:62481553b1793a27e9b9c3cf9e5bd483ef045ca72462592074b46d42b0c4d9b9", size = 7868905, upload-time = "2026-06-11T12:44:44.854Z" }, + { url = "https://files.pythonhosted.org/packages/9e/1f/dcbdc1a68a07cc2b631c3098953794f17d75f93426a019240b90ce5423d6/grpcio-1.81.1-cp310-cp310-win32.whl", hash = "sha256:bb693b1e3d9a2f3fd228e2110daf4b5aeedb36761ca1e4282f74725f6d89f611", size = 4202215, upload-time = "2026-06-11T12:44:47.165Z" }, + { url = "https://files.pythonhosted.org/packages/75/a1/d7ab9f1f42efcb7d9e6111d38be6b367737a72ea2c534e1f55c81e1b6436/grpcio-1.81.1-cp310-cp310-win_amd64.whl", hash = "sha256:88268ca418cacea64cecb0d1d600d3c6b3a8038fcba02e1e205178c5b1f47661", size = 4936582, upload-time = "2026-06-11T12:44:49.479Z" }, + { url = "https://files.pythonhosted.org/packages/52/ea/1c2fa386b718ff493225e61cfc052ef400b4d6ffc54cbe261026432624b5/grpcio-1.81.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:d71d30f2d92f67d944631c523713934fee37292469e182ebcd2c1dd8a64ce53f", size = 6093112, upload-time = "2026-06-11T12:44:52.131Z" }, + { url = "https://files.pythonhosted.org/packages/2b/18/acf45fa8bd1bc5d7b0c2fd3dc4c209379fbd5bb396b440b68a83342226b7/grpcio-1.81.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b137f4bf3ada9dc44d411478decc6ff09a79ed30b306cd2abaa98408c3588137", size = 12074277, upload-time = "2026-06-11T12:44:55.354Z" }, + { url = "https://files.pythonhosted.org/packages/48/d7/ee86a60699b7db039f772a2c4a7e4facc7138984ff42c0130933a0063884/grpcio-1.81.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a3acb384427816dd5d470f47e62137b87f74da694faa8a50147012cf40df276a", size = 6640348, upload-time = "2026-06-11T12:44:59.223Z" }, + { url = "https://files.pythonhosted.org/packages/26/ee/d2de5e47378ffc207d476c230fea3be4d2601edbce9995f4fe45535d4896/grpcio-1.81.1-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:f9a0ebbe45c29b5e5866593c12b78bd9035f0f0f0d4bc8361680cd580d99db49", size = 7331842, upload-time = "2026-06-11T12:45:02.001Z" }, + { url = "https://files.pythonhosted.org/packages/23/d6/abeda5c2b896a0b341584fe5ac411bbf72e197a9a374c355fb90965e08d2/grpcio-1.81.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0a37165cc80b1a368384b383e63a4c38116a10467ae44c904d2d7468c4470ec2", size = 6842229, upload-time = "2026-06-11T12:45:04.76Z" }, + { url = "https://files.pythonhosted.org/packages/10/1c/1f0da7d590b4aeee006826ba568d0e419ca14b23e18f901a3da3e9fba613/grpcio-1.81.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6282caffb41ec326d4cb67ca9cf53b739d1b2f975a2acb498c7418e9f7d9a416", size = 7446096, upload-time = "2026-06-11T12:45:07.499Z" }, + { url = "https://files.pythonhosted.org/packages/6a/81/5c505d508f7c887aa7982d21443a4126597c80d34b0bcf40f9cec576d7f3/grpcio-1.81.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:a35009284d0d3d5c2c9601c164a911b8b4331608d98a9a66d47d97bb2f522b70", size = 8445238, upload-time = "2026-06-11T12:45:10.243Z" }, + { url = "https://files.pythonhosted.org/packages/f7/b2/524847365122ee509ca17bcc4e092198b700e94af7bfd5bb5e6dd9f3ee66/grpcio-1.81.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1b22c80559854b789a01fd89e8929b3798a156c0829b5282a8939f33ad4115ad", size = 7873989, upload-time = "2026-06-11T12:45:13.102Z" }, + { url = "https://files.pythonhosted.org/packages/18/fa/07c037c50b006909d1d13a5848774f8aa7b242f70dc03a035c64eea0e6db/grpcio-1.81.1-cp311-cp311-win32.whl", hash = "sha256:428bec0161b48d8cf583c068591bc0016d0d9cfff52462b72b3884861ea768c5", size = 4202223, upload-time = "2026-06-11T12:45:16.166Z" }, + { url = "https://files.pythonhosted.org/packages/41/ed/6bff15376920942fac6b95b9802752b837437172c9e8fc2d3170546b89cc/grpcio-1.81.1-cp311-cp311-win_amd64.whl", hash = "sha256:30e825f6848d9f18bba350ed6c75c1b02a0b5184474a31db9a32b1fa66fd8c79", size = 4941303, upload-time = "2026-06-11T12:45:18.724Z" }, + { url = "https://files.pythonhosted.org/packages/85/07/9a979c81738863a738dc23d65177056e71fbb2db817740ed870b33434e7a/grpcio-1.81.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:8b39472beafc0bdcafc4c8c73ad082ebfdb449d566897a61e7acb4fa88089115", size = 6053264, upload-time = "2026-06-11T12:45:21.017Z" }, + { url = "https://files.pythonhosted.org/packages/75/95/539706ca0d3bd40dbad583dc56fd883da941f37556b629132da5762781b9/grpcio-1.81.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:12b7524c88d4026d3dcb7b0ebe16b6714f3b4af402ddd0f0639ab064a00c87c3", size = 12052560, upload-time = "2026-06-11T12:45:23.652Z" }, + { url = "https://files.pythonhosted.org/packages/e0/44/f257b7e0bd69c93b06c6cb8ac8d1b901ccb42bedabd83c1a4c77a71f8810/grpcio-1.81.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1e123f9b37edb8375fd74130d1f69c944bbf0a7b06761ae7211154b8759e94d2", size = 6595983, upload-time = "2026-06-11T12:45:26.963Z" }, + { url = "https://files.pythonhosted.org/packages/b9/f3/19782aa04c960968bef8c5539329d8e3bbc3364e2e46d19eb5e5cc5e43b7/grpcio-1.81.1-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:2c2e2ae6867c2966b8daccc836d54a13218e0007e9a490aeb81dd05be64d22d7", size = 7303455, upload-time = "2026-06-11T12:45:29.707Z" }, + { url = "https://files.pythonhosted.org/packages/eb/8c/dea020b6d91508cd84463917a63149ec196ee7db505d032ae43fcb3303b9/grpcio-1.81.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:766bc7c9a9c340342f4c864ccbda8e78111e4751f13b895812b9c148fb79e9d0", size = 6809167, upload-time = "2026-06-11T12:45:32.52Z" }, + { url = "https://files.pythonhosted.org/packages/1c/c7/3030dd940408083bd32cd95d634777a71605ade4887154d93e8a89244946/grpcio-1.81.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b259a04a737cb3496be0901328eb8b7552ed8df4865d8c8f1cf1bffcfc0776a3", size = 7412536, upload-time = "2026-06-11T12:45:35.403Z" }, + { url = "https://files.pythonhosted.org/packages/e0/dd/1172a9e42b168edcafefad6115346ef619a3fc02158bb170e66ced24bcdd/grpcio-1.81.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:85b10a45b8993d195c4f3ff57025b8d1e11834909ee475c403bfa60cb4caefaf", size = 8408276, upload-time = "2026-06-11T12:45:37.78Z" }, + { url = "https://files.pythonhosted.org/packages/25/7a/71437c7f3596e5246155c515852795a85a1a8d228190212432b13b97a95d/grpcio-1.81.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8ea1936c26b99999b27479853039a7f34713f56c49375ad52b38535ec93a796c", size = 7849660, upload-time = "2026-06-11T12:45:40.627Z" }, + { url = "https://files.pythonhosted.org/packages/65/40/7debc0da45d2efebafb82da75644be347497fe4ee250514b8cd3b86ae8bf/grpcio-1.81.1-cp312-cp312-win32.whl", hash = "sha256:a185a04039df6cae8648bc8ab6d6fde7bf94f7188ecf7828e76ac52eef1e41d6", size = 4185819, upload-time = "2026-06-11T12:45:43.027Z" }, + { url = "https://files.pythonhosted.org/packages/2e/b9/8fe3ba5ed462067774ebc1f9c7f26aa7ebcc280ddd476be107153de1339e/grpcio-1.81.1-cp312-cp312-win_amd64.whl", hash = "sha256:3ad74f8bb1a18963914c5452d289422830b39459e8776ebbcd207be1fbfb1d94", size = 4930461, upload-time = "2026-06-11T12:45:45.775Z" }, + { url = "https://files.pythonhosted.org/packages/7a/42/dcc2e4b600538ef18327c0839d56b7d3c3812337c5d710df5877dbb39b1e/grpcio-1.81.1-cp313-cp313-linux_armv7l.whl", hash = "sha256:b10e1ff4756ed27d5a29d7fc79cfce7ef1ff56ad20025b89bac7cf79e09abbbe", size = 6054466, upload-time = "2026-06-11T12:45:48.43Z" }, + { url = "https://files.pythonhosted.org/packages/7b/4a/a36e03210183a8a7d4c80c3936acee679f4bd77d5861f369db47b2cc5f05/grpcio-1.81.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:819edbdcb42ab8598b494bcf0222684bbb7a3c772bd1b1f0be7e029a6063c28e", size = 12048795, upload-time = "2026-06-11T12:45:54.011Z" }, + { url = "https://files.pythonhosted.org/packages/b0/d5/d68e30b29098f63beab6fe501100fe82674ff142b32c672532da86a99b3a/grpcio-1.81.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c5bf2dc311127d91230cc79b92188c082634a06cf66c5234db49a43b910183b0", size = 6599094, upload-time = "2026-06-11T12:45:57.799Z" }, + { url = "https://files.pythonhosted.org/packages/3d/b3/e837954d279754f638a11cca5dcf6b24a005efb398984cefaf7735945a54/grpcio-1.81.1-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:e8ca6a1fcdb2943c9cbc1804a1baf3acb6071d72a471591678ded84218006e14", size = 7307182, upload-time = "2026-06-11T12:46:00.568Z" }, + { url = "https://files.pythonhosted.org/packages/0d/1e/b47957057e729adc6cdf519a47f8be2562b7140e280f1418443eb4022192/grpcio-1.81.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e64dd101d380a115cc5a0c7856788adb535f1a4e21fc543775602f8be95180ae", size = 6810962, upload-time = "2026-06-11T12:46:03.312Z" }, + { url = "https://files.pythonhosted.org/packages/40/26/569868e364e05b19ec8f969da53d230bcd89c962cd198f7c29943155c4d3/grpcio-1.81.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:98a07f9bf591e3a8919797bee1c53f026ba4acd587e5a4404c8e57c9ec36b2a5", size = 7415698, upload-time = "2026-06-11T12:46:06.005Z" }, + { url = "https://files.pythonhosted.org/packages/36/0c/5440a0582cb5653fc42a6e262eeb22700943313f8076f9dc927491b20a59/grpcio-1.81.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:c261d74b1a945cf895a9d6eccd1685a8e837531beaab782da4d630a8d12deffb", size = 8407779, upload-time = "2026-06-11T12:46:08.84Z" }, + { url = "https://files.pythonhosted.org/packages/ff/aa/66fe9f39871d766987d869a03ee0842a026f499c7b1e62decb9e78a8088e/grpcio-1.81.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:58ad1131c300d3c9b933802b3cc4dc69d380822935ba50b28703156ea826fbf7", size = 7844521, upload-time = "2026-06-11T12:46:12.171Z" }, + { url = "https://files.pythonhosted.org/packages/f0/9e/69bb7194861bcd28fb3193261d4f9c3831b4446993f002cf59068943e7ab/grpcio-1.81.1-cp313-cp313-win32.whl", hash = "sha256:78e29211f26da2fdd0e9c6d2b79f489476140cf7029b6a64808ade7ca4156a42", size = 4182786, upload-time = "2026-06-11T12:46:15.192Z" }, + { url = "https://files.pythonhosted.org/packages/0d/20/3da8bb0d637feccdc3e1e419bb511ce93651ce7d54164f95de22cc0b8b34/grpcio-1.81.1-cp313-cp313-win_amd64.whl", hash = "sha256:edb59506291b647a30884b1d51a599d605f40b20af4a7dc3d33786a47a31de60", size = 4928648, upload-time = "2026-06-11T12:46:17.823Z" }, + { url = "https://files.pythonhosted.org/packages/b6/58/19414622b1bf6981bc9c05a365bd548e71876c89000083b3af489251e9c0/grpcio-1.81.1-cp314-cp314-linux_armv7l.whl", hash = "sha256:506f48f2f9c29b143fca3dad7b0d518c188b6c9648c75a2ae6e2d9f2c13a060b", size = 6055336, upload-time = "2026-06-11T12:46:20.557Z" }, + { url = "https://files.pythonhosted.org/packages/32/f1/2ec88adb92b0eba970dd0e0e7dd086341daa3c75eba4f735f9e44bf684b0/grpcio-1.81.1-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:d865db4a6318e1c1bea83292e0ed231090538fc4ca45425b0f0480eb338bbc6e", size = 12056279, upload-time = "2026-06-11T12:46:24.255Z" }, + { url = "https://files.pythonhosted.org/packages/41/36/e8c5f8c6ec71de73733695ebc809e98b178b534ec6d8eaa31a7ebab4ad4c/grpcio-1.81.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e2aa72e3ce1770317ef534f63d397b55e130725f5149bd36077c3b539019db27", size = 6608225, upload-time = "2026-06-11T12:46:27.601Z" }, + { url = "https://files.pythonhosted.org/packages/30/22/96fc577a845ab093326d9ab1adb874bd4936c8cf98ac8ed2f3db13a0a2fb/grpcio-1.81.1-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:0490c30c261eded63f3f354979f9dc4502a9fb944cccb60cd9dc85f5a7349854", size = 7306576, upload-time = "2026-06-11T12:46:30.514Z" }, + { url = "https://files.pythonhosted.org/packages/76/7b/61dab5d5969f28d97fb1009cead1df0a5cd987d3315e1b37f18a4449f8bc/grpcio-1.81.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:410482da976329fe5f4067270401b12cf2bd552ff8020f054ecfaddb5475f9d6", size = 6812165, upload-time = "2026-06-11T12:46:33.699Z" }, + { url = "https://files.pythonhosted.org/packages/82/78/6e501929d4f5f96462fd82fd9f0f06e5f9612207582b862868d68757b27d/grpcio-1.81.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e3657301562ac3cb8018d30d0d3ebfa39932239f7b5703422057ef14b69949f5", size = 7422962, upload-time = "2026-06-11T12:46:36.511Z" }, + { url = "https://files.pythonhosted.org/packages/2a/7e/f2157589e66daa78ebb3165942d05a08bdea93b9d11c2bc1e172aef89685/grpcio-1.81.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:24c8e57504c8f45b237e40b99262d181071e5099a07053695b75d97bb53053a0", size = 8408176, upload-time = "2026-06-11T12:46:39.803Z" }, + { url = "https://files.pythonhosted.org/packages/da/df/c6717fef716e00d235ffb96123baf6dce76d6004f6233fa767c502861460/grpcio-1.81.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:b427c19380991a4eaab2f6144b64b99b412043314c6bf4ab544f97bb31ee4190", size = 7846681, upload-time = "2026-06-11T12:46:43.013Z" }, + { url = "https://files.pythonhosted.org/packages/36/84/3502e9f210a6a5c4438c8aca3f88edd2e04f6a27f3d41b26cf0a0024b096/grpcio-1.81.1-cp314-cp314-win32.whl", hash = "sha256:61233fe8951e5c85dff81c2458b6528624760166946b5b47ea150a589168411f", size = 4264615, upload-time = "2026-06-11T12:46:45.741Z" }, + { url = "https://files.pythonhosted.org/packages/ff/b0/4af731ff7492c68a96e4c71bfd0f4590acde92b31c6fe4894e6465c10ff6/grpcio-1.81.1-cp314-cp314-win_amd64.whl", hash = "sha256:3768a5ff1b2125e6f552e561b6b2dca0e64982d8949689b4df145cf8b98d7821", size = 5070275, upload-time = "2026-06-11T12:46:48.486Z" }, ] [[package]] name = "grpcio-status" -version = "1.81.0" +version = "1.81.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "googleapis-common-protos" }, { name = "grpcio" }, { name = "protobuf" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/01/b6/cdc177114997d15c887fb09ccfd16705c8ceb8b4ca2487902b54a7bfd1af/grpcio_status-1.81.0.tar.gz", hash = "sha256:b6fe9788cfdd1f0f63c0528a1e0bfdb41e8ff0583e920d2d8e8888598c01bb69", size = 13900, upload-time = "2026-06-01T06:00:32.638Z" } +sdist = { url = "https://files.pythonhosted.org/packages/32/26/0aa9168c87882381fd810d140c279a2490ed6aee655f0515d6f56c5ca404/grpcio_status-1.81.1.tar.gz", hash = "sha256:9389a03e746017b10f0630c064289201458f3ce01f5d7ef4b0bebc1ef6cf82ad", size = 13923, upload-time = "2026-06-11T12:58:48.636Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f3/b7/5aa346bf1cdecd4ed64b86c10a4d5a089ce3da89145f8328caf0b22b240d/grpcio_status-1.81.0-py3-none-any.whl", hash = "sha256:10eb4c2309db902dc26c1873e80a821bf794be772c10dfd83030f7f59f165fab", size = 14634, upload-time = "2026-06-01T06:00:13.345Z" }, + { url = "https://files.pythonhosted.org/packages/e5/5e/5abfec5f7e89d3b7993d57cfb025ca5f968a2c18656d7fcda2b6919440b9/grpcio_status-1.81.1-py3-none-any.whl", hash = "sha256:08072fa9995f4a95c647fc6f4f85e2411573d00087bcabdf30f260114338f232", size = 14638, upload-time = "2026-06-11T12:58:31.982Z" }, ] [[package]] name = "grpcio-tools" -version = "1.81.0" +version = "1.81.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "grpcio" }, { name = "protobuf" }, { name = "setuptools" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f3/b5/72f688670ce56ea59b05ea13430f06cbb728dd354dac508544fc7d4b5c95/grpcio_tools-1.81.0.tar.gz", hash = "sha256:0733d773eca8cb461f4f2a1b79c64c123db9661be41b08184b81497b2b991ccb", size = 6235718, upload-time = "2026-06-01T05:58:34.191Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/65/1f/03480308383e55d5189de6fee6d6b4728b2c2fa7129ba450dcf9bcc7b099/grpcio_tools-1.81.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:ffb1e507f9849ee013473f732b1ca5d732457f9b1d0d298efe8a77c33bb65d3a", size = 2586260, upload-time = "2026-06-01T05:56:38.05Z" }, - { url = "https://files.pythonhosted.org/packages/2d/bb/a8846bdaccaa8ec9f32b2a3e9b4fd5f364c142bb63e8159629c0d08cb346/grpcio_tools-1.81.0-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:fa529a1f7a946cdb6881141a07d8fc8fb074af2fd17323e5f3530c8718101680", size = 5817404, upload-time = "2026-06-01T05:56:43.955Z" }, - { url = "https://files.pythonhosted.org/packages/35/de/31903d2110cb7472aec4d005c2b96bab645fa5bd69d4c63a9b442e3e86ef/grpcio_tools-1.81.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:244619491a12d1f8d4119bb5930272827084a1e7caa8f9d5a0d4ca6595bb1dea", size = 2634107, upload-time = "2026-06-01T05:56:45.844Z" }, - { url = "https://files.pythonhosted.org/packages/fa/e5/aa3bc715bcff192c98893bde79e2ed56cc5fdfdc2d479c9b39a9091db466/grpcio_tools-1.81.0-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1ecb833118bfa2c3051e534692f2b43f7c6db14e1eac9b1e7f6e66b6b6dc5074", size = 2957944, upload-time = "2026-06-01T05:56:47.915Z" }, - { url = "https://files.pythonhosted.org/packages/ee/8b/48cbc3db78a74323038bd36db26c8ec24d4c69e1361b3f84660d85ad3c9d/grpcio_tools-1.81.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0034997767960644f0f4a2aecf35df5fc426d43fa5639dd1b8317da835bab2a4", size = 2697758, upload-time = "2026-06-01T05:56:49.749Z" }, - { url = "https://files.pythonhosted.org/packages/67/53/2e760230944bf028052d8fd36141e357b9003a38a2928f0714611cf7049a/grpcio_tools-1.81.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5a7c89432a3b200be306e76307b866716663b4c71d7816bdf382af81e00abd51", size = 3147589, upload-time = "2026-06-01T05:56:51.804Z" }, - { url = "https://files.pythonhosted.org/packages/cd/52/06df77cfcc031c4d45eb3e9c5d075ee3ecdfe7d61f73a9a87f1f954b4c1f/grpcio_tools-1.81.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:52687858c044a6a4dd3fc4049b012b131254a3061360d6de2f97c3e38a7aedd9", size = 3708798, upload-time = "2026-06-01T05:56:54.102Z" }, - { url = "https://files.pythonhosted.org/packages/3c/68/1211c5c052e5c1ef682ed2d1fb70b2ace0945f8492b66b3313b28739e52c/grpcio_tools-1.81.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5c5f44305786c1295320fed477f5673be4ca5f6ed1b31f8696f0791d4b12906d", size = 3366971, upload-time = "2026-06-01T05:56:56.066Z" }, - { url = "https://files.pythonhosted.org/packages/e0/17/31f4d9aa43e461bf0641531ee01242fa46407ec8b3153b484725a910d931/grpcio_tools-1.81.0-cp310-cp310-win32.whl", hash = "sha256:bf19fdc8b6258fbf36ea65f5672206483ef4639a16d33e3367d77e4523b4089b", size = 1008713, upload-time = "2026-06-01T05:56:58.154Z" }, - { url = "https://files.pythonhosted.org/packages/9c/83/322502cc56f8eca3e0dae8cd1c2740a5611d6ea03afc3193c7afb8ecda37/grpcio_tools-1.81.0-cp310-cp310-win_amd64.whl", hash = "sha256:f02d796474e58bba879965d228874c2c34164b6a5d96c0faf6bf896a6c3d8a0b", size = 1174751, upload-time = "2026-06-01T05:57:00.91Z" }, - { url = "https://files.pythonhosted.org/packages/fa/c3/f48f4798d20c3db6d17bd35c8132c64ce7136584411c5d260b8d4276535f/grpcio_tools-1.81.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:677207d88b659048f63697c237bf650b123a7a1de36158db57176f84c5bca84a", size = 2586250, upload-time = "2026-06-01T05:57:03.305Z" }, - { url = "https://files.pythonhosted.org/packages/f2/63/cde1c7e7abdc46c3c56de9785e89377f614567ffce506388664f143d1dbc/grpcio_tools-1.81.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:f37ce0440e5dc563662da89d7d1edd20654e6fb615ada5c8027f15f881bd40d0", size = 5818006, upload-time = "2026-06-01T05:57:06.18Z" }, - { url = "https://files.pythonhosted.org/packages/68/ab/3f19ed6d2de1dafb3b542f0132037d84093c4b30fe8333349fd575e1f586/grpcio_tools-1.81.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:404ca893d54f26fddb868bbd4a54b203fbf914264d26c52e2f2aff35851a9f72", size = 2634061, upload-time = "2026-06-01T05:57:08.265Z" }, - { url = "https://files.pythonhosted.org/packages/b5/c5/7d1c6c577e2909f6a94b1e623b01fa993c975aff58283746f48dbcc5e9d7/grpcio_tools-1.81.0-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:fbe12f98aeddfeaa74d3dbe41dc451f008edf3ab1b82eb62f7a61011003d4833", size = 2958026, upload-time = "2026-06-01T05:57:10.679Z" }, - { url = "https://files.pythonhosted.org/packages/91/c9/73873504d23536c5b31efe0e7f3c2911514433b627433a830d13afaa8097/grpcio_tools-1.81.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:012d580d98db189e4bd231a6529b162bc27a5f52c4854e2d21a4016edc47c760", size = 2698031, upload-time = "2026-06-01T05:57:12.657Z" }, - { url = "https://files.pythonhosted.org/packages/a2/3d/89d9dca7db8d9565a4ab1f47df0579355e53bf066a40e21143b30debc205/grpcio_tools-1.81.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d744ea354c9ca33ca17522436825e2842df9b731bcc924a73f4a7d205ed53006", size = 3147544, upload-time = "2026-06-01T05:57:14.829Z" }, - { url = "https://files.pythonhosted.org/packages/2d/55/b1da79d9b19a9fbc9c5fceac69d9dbe67cc184735f25512bb9bd070a9754/grpcio_tools-1.81.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:40b7a17629e5c944c8ba98a438f051b9affaf30794e6e096578ba0030725f90c", size = 3708524, upload-time = "2026-06-01T05:57:17.077Z" }, - { url = "https://files.pythonhosted.org/packages/a9/08/e019d647311f90ff6ce4eac42c6f2c39282e86ca29ede8cc00039c23011d/grpcio_tools-1.81.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:23831f5c66038c5793cb5d2651120bc24a33705e1ce2887a88f54272b73b240f", size = 3367019, upload-time = "2026-06-01T05:57:19.575Z" }, - { url = "https://files.pythonhosted.org/packages/74/70/6afa8d0dcf7c14727271a6913803f821c0365853b4419a71844cc5cadc76/grpcio_tools-1.81.0-cp311-cp311-win32.whl", hash = "sha256:d56060281599d87e66a0dc6840b68730d81c215dbb1b5c50882f819bc9b6aba5", size = 1008980, upload-time = "2026-06-01T05:57:21.32Z" }, - { url = "https://files.pythonhosted.org/packages/f8/22/d6317bd68ba49b1eb89ba6f1066808d751a57ddfd4b1b964d96bf6dbfa84/grpcio_tools-1.81.0-cp311-cp311-win_amd64.whl", hash = "sha256:42e1eaa98199bd4f900f8af091e27aef804dd53b59c92adafcc9faabc0a92240", size = 1174844, upload-time = "2026-06-01T05:57:23.213Z" }, - { url = "https://files.pythonhosted.org/packages/1c/e3/3c4f9da489413ef3f3dc9f7bc49a270270ec99fb3a00fd4302a2f59a7be2/grpcio_tools-1.81.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:374fe0435447f283e3c69f719ef1bc66f2e187a239ce25444b2de45cb3a6a744", size = 2585927, upload-time = "2026-06-01T05:57:25.397Z" }, - { url = "https://files.pythonhosted.org/packages/d2/b2/de7aba18f87d722c215ae168add975b9e7729cfaf7a1292be43f87685fa1/grpcio_tools-1.81.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:dce33d09851bc15dead814bd9d21023bffdf0f838ecf65995a2456e5692831fd", size = 5815566, upload-time = "2026-06-01T05:57:27.714Z" }, - { url = "https://files.pythonhosted.org/packages/eb/13/8f71b4830f129d896560c66964a3a8f4e33fbd59854396015e7449b75d3a/grpcio_tools-1.81.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:58e65dd13f7ffc25f5a9cd9890fddfd39b3c51e5c3c1acd987813b1dc1173704", size = 2635519, upload-time = "2026-06-01T05:57:29.848Z" }, - { url = "https://files.pythonhosted.org/packages/a2/e0/3ad58f1791c346a1fefc69ef3fcd19d63e3778736d4746f12b39f900b78b/grpcio_tools-1.81.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:760775f79bbefa321cd327fe1019a9d6ad0d93acb1ede7b7905c712679542fd7", size = 2958250, upload-time = "2026-06-01T05:57:31.836Z" }, - { url = "https://files.pythonhosted.org/packages/79/8a/3212db57815df0fa2a02e857e402c1abea15ec6b5fb63ebf306d90f2fb07/grpcio_tools-1.81.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7af4faf34376c57f4f3c42aa05f065d3b10e774b8a8d8b27d659d5cc351e5c75", size = 2698437, upload-time = "2026-06-01T05:57:33.827Z" }, - { url = "https://files.pythonhosted.org/packages/ec/d5/4245bbb4c14b54ac539b5b59f5298750d75211e144e1e8b35e1af5144d6d/grpcio_tools-1.81.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e9945945edc14022abab07caec0ebc16bf51219e586b4f008d09334cc479655c", size = 3152159, upload-time = "2026-06-01T05:57:36.065Z" }, - { url = "https://files.pythonhosted.org/packages/59/b1/59500d9fe41209e0887c66d80879ba80d0cc8e1327e24cc783eb879fe7a7/grpcio_tools-1.81.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:61d9ad6b5c0f3857663701bdc2cbb3da7f7d835ce9a8d597ffca443124a96894", size = 3710468, upload-time = "2026-06-01T05:57:38.367Z" }, - { url = "https://files.pythonhosted.org/packages/0c/14/86fc8b64db62851bf5cb1c945b22da7ab0dec6e0b7002ec374247482d404/grpcio_tools-1.81.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ffa74b84d201bea407f22e00ac0367f12df48a0073b0ffd9f3be9d8126a55245", size = 3370795, upload-time = "2026-06-01T05:57:40.724Z" }, - { url = "https://files.pythonhosted.org/packages/94/95/4fd57d9f948adadbe5b3e8e3b0d3c121ae5fe8276721097ab03361ce7adf/grpcio_tools-1.81.0-cp312-cp312-win32.whl", hash = "sha256:f1f407697873acbf1d961c6fb9223114a3e679938469d4186623b8b872dbdae0", size = 1008449, upload-time = "2026-06-01T05:57:42.491Z" }, - { url = "https://files.pythonhosted.org/packages/33/94/7567ddd3a13e24bbc5e146c6ac735004ab7303048115ccb032d61b5c2305/grpcio_tools-1.81.0-cp312-cp312-win_amd64.whl", hash = "sha256:283bb3465331a4034b14dce35425c47b0cfbd287b09a6e9d15c9f26fbb17e799", size = 1174889, upload-time = "2026-06-01T05:57:44.405Z" }, - { url = "https://files.pythonhosted.org/packages/f2/05/f0606a1b2e830d5fddfcd77c5d8e928f26dc221ced386fccf31a6efda57e/grpcio_tools-1.81.0-cp313-cp313-linux_armv7l.whl", hash = "sha256:33c579bf24040dbdce751e05b5bcedc13dafffa8f2dfa07193bc05960dc95b49", size = 2586070, upload-time = "2026-06-01T05:57:46.677Z" }, - { url = "https://files.pythonhosted.org/packages/c4/4a/3b6817547d65d9f7a106ea6a2352125d08b44ce1d120b64ca0c565d896e6/grpcio_tools-1.81.0-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:2a369a9e27fcb6279387744778d67a64551de82db0e9cf7e1e9451c22f719e07", size = 5813211, upload-time = "2026-06-01T05:57:49.159Z" }, - { url = "https://files.pythonhosted.org/packages/bf/fc/078422558ebb337233379cdb0e4cc0d3d3218933d105003bae2790ff976f/grpcio_tools-1.81.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b2b26111795d0e7a72fa483d377a75b57203edaac8bbbac1e9b8f174e7b01ff3", size = 2634663, upload-time = "2026-06-01T05:57:51.41Z" }, - { url = "https://files.pythonhosted.org/packages/53/2b/043f2d62d6f28a0962f29f180ae24770020a06985b14a2d8f0d489531d71/grpcio_tools-1.81.0-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:a741007631248dd903f880b575a63c0662433ed4b966262ab0f437ea860c9b7e", size = 2957926, upload-time = "2026-06-01T05:57:54.103Z" }, - { url = "https://files.pythonhosted.org/packages/76/d3/be8c1f7c5ca6adccba66ef787b4bba304a3247c1319a33ed330719931ba3/grpcio_tools-1.81.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bac1c6ddc5eb3762257e773829b4e00ea7d0592f02498f27e5bdb75cd3182d69", size = 2697761, upload-time = "2026-06-01T05:57:56.494Z" }, - { url = "https://files.pythonhosted.org/packages/19/9d/c1650c72059f7d20d94597430ecbe0139d92c7e409cf007d0b5d765e40ec/grpcio_tools-1.81.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e5d241c694a226bada06dae9accc47c5c25e586f49464823498e84cff63eedea", size = 3151460, upload-time = "2026-06-01T05:57:58.756Z" }, - { url = "https://files.pythonhosted.org/packages/6b/82/2aad863738dc4f749df93d97f81a8aebdd0a7c5daee7157c259ecea7dbbc/grpcio_tools-1.81.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:475286558410e4d0394fc8129559080c22835ece3c23cac194b46c5ad7d0fad1", size = 3710466, upload-time = "2026-06-01T05:58:01.327Z" }, - { url = "https://files.pythonhosted.org/packages/47/7d/b79a5b132bd5db76ce48e686579ded0311bfa7ea19b8cb9ca88aea3e8d64/grpcio_tools-1.81.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:98b57a592a75553f4dd38db3993b037953245991b8df9f06927a8978962dcd82", size = 3370487, upload-time = "2026-06-01T05:58:03.769Z" }, - { url = "https://files.pythonhosted.org/packages/96/6f/a6a74a51b71aca801f4dcce6bd8bb7d3fd8d556ff191f0bd0de631b97dd1/grpcio_tools-1.81.0-cp313-cp313-win32.whl", hash = "sha256:78c2514bf172b20631685840fea0c5d1bec5518b649d0a498f6dd8f91dfce56a", size = 1008234, upload-time = "2026-06-01T05:58:05.668Z" }, - { url = "https://files.pythonhosted.org/packages/5a/91/02a4c529dd0a77c2d768b415ac334f6a9ea9d61c6f4c38e54d1a4394530c/grpcio_tools-1.81.0-cp313-cp313-win_amd64.whl", hash = "sha256:a87ea8056beea56b24353d27b7f0ab814daabb372aa517d2e179470e66fd8f6b", size = 1174523, upload-time = "2026-06-01T05:58:07.711Z" }, - { url = "https://files.pythonhosted.org/packages/13/1f/7885e23074d813ab71ba3ea689ecf5cb3bb3c76c51cc01bd393451f10257/grpcio_tools-1.81.0-cp314-cp314-linux_armv7l.whl", hash = "sha256:bf2ffd98c754d54a5affddfe3a18d4822b972c5c37ca6a33a456c94e6f3dd82b", size = 2585943, upload-time = "2026-06-01T05:58:10.077Z" }, - { url = "https://files.pythonhosted.org/packages/40/f4/a88116147d377a88fccef9b43667235835d504d60ebe0e0dcc81bc9c4b20/grpcio_tools-1.81.0-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:4a8d9fdf42537cd1924f7e95013771aa73c89501ccf112b7517c22ca825be9f5", size = 5813367, upload-time = "2026-06-01T05:58:12.545Z" }, - { url = "https://files.pythonhosted.org/packages/2a/1e/01f310f0427dcddaf0097e4101f041d437ba8199a7ed62621788f2601042/grpcio_tools-1.81.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:564624654f5a0377adc69f226f93ec5ff52715030c2f846af6c54ccc4ca2d225", size = 2634992, upload-time = "2026-06-01T05:58:14.92Z" }, - { url = "https://files.pythonhosted.org/packages/fd/ee/10cec754cb89cf45039ef4a8ff500ab5c567278fc4f6333347dba20c99fb/grpcio_tools-1.81.0-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:3f1ac691debbdbf00e7635ecacf28647f48f67fb4b14120a4541c8bb0f8333ae", size = 2957912, upload-time = "2026-06-01T05:58:17.596Z" }, - { url = "https://files.pythonhosted.org/packages/d2/71/cc273059fa3620d424df91a8faabd5875d4c20a0300875e721d15decd74b/grpcio_tools-1.81.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f35da7b3b9537ecce9a5cfd967b1316a815378d5a3729e9ea556b22a14f6e315", size = 2697709, upload-time = "2026-06-01T05:58:19.653Z" }, - { url = "https://files.pythonhosted.org/packages/a1/d5/c72f9e7d18425586bbc5b4fba78570fab23cb9810fb34a8841f7baaef22b/grpcio_tools-1.81.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1e21049aeedd9d62e5e58146e5d00f3b75674d8d8d3cc69709ab950082be8421", size = 3151885, upload-time = "2026-06-01T05:58:22.366Z" }, - { url = "https://files.pythonhosted.org/packages/9e/f9/7a3d7b3bce72fe22611a79d3790440c16af9d524a8bd1d38a89a44c65570/grpcio_tools-1.81.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:019f05a17b5495d561603f75a74a4a76ad22456a95dc7623c7be4e4b44391b88", size = 3710403, upload-time = "2026-06-01T05:58:25.014Z" }, - { url = "https://files.pythonhosted.org/packages/58/2d/b41fe47b83eb197a48fdcbf48d04f5923c5fd62d4b1a7f2820720562d7ae/grpcio_tools-1.81.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:3401d6d4668c064c9ed344825fe97ff076cd8ba719a24e3d3c7169b604cbf00f", size = 3370524, upload-time = "2026-06-01T05:58:27.096Z" }, - { url = "https://files.pythonhosted.org/packages/94/d3/a4565146ab83232ddf86a3de497937662dc06649739f978763379c256311/grpcio_tools-1.81.0-cp314-cp314-win32.whl", hash = "sha256:5783b6758244f6eaceb41a0e651828824b0d0c92724ddf4b68879ced9bfd9b50", size = 1030574, upload-time = "2026-06-01T05:58:28.972Z" }, - { url = "https://files.pythonhosted.org/packages/35/72/f2102f3737b94e14b8ce56394918c0a4303e80d5d8b0627fc4ee85927f79/grpcio_tools-1.81.0-cp314-cp314-win_amd64.whl", hash = "sha256:69f8355b723db7b5e26a3bff76f9deb3a407d22fe289bca486ccf95d6133cad0", size = 1207499, upload-time = "2026-06-01T05:58:31.606Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/83/b3/1c5951352d6777fd7f99a0ccee04617fdfd8a5dbf2918a1f58c8b2b280b8/grpcio_tools-1.81.1.tar.gz", hash = "sha256:a22a3870180927fdd84e2b27d079ef5b7f5f8c6110181b6736afc17a463481f1", size = 6236155, upload-time = "2026-06-11T12:51:21.235Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/e1/1fcf884902ae7255d8da224cfa638ea88a46d50f62a33d06d35c8960b029/grpcio_tools-1.81.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:9b6ba8a72cfda576508701a7c0bbeebe6f6f9843320d4f12e74efd19ddccd965", size = 2586261, upload-time = "2026-06-11T12:49:21.447Z" }, + { url = "https://files.pythonhosted.org/packages/a2/d7/1815110b2d40ec99dbb0a7e6d7eafd591cd1f1e9bf9d3858cd9cf3ffacbd/grpcio_tools-1.81.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:ac47a9ea1224df8b653072614e6f0207e9fbfe63fdabaa5918a60ca5fc931b88", size = 5817509, upload-time = "2026-06-11T12:49:25.958Z" }, + { url = "https://files.pythonhosted.org/packages/23/e8/af99579842b5a555312fa782f32ce0f99bd35b2b7a1243294b2755468857/grpcio_tools-1.81.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:eac4bb645ceff0c147cc720a40ae68f97427eaafb4968e866dd8fcc20d3d4831", size = 2634112, upload-time = "2026-06-11T12:49:27.937Z" }, + { url = "https://files.pythonhosted.org/packages/b5/cd/235ad56ac728c49c17e9218c4daccd5831e6ec7af94236bec0cc66c71c68/grpcio_tools-1.81.1-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:cc410b621dd85193766c12dca2e238696199a27a65d2b31b6f0a4c6c0043ff26", size = 2957950, upload-time = "2026-06-11T12:49:29.619Z" }, + { url = "https://files.pythonhosted.org/packages/77/3e/9103e8b4610597bf89db49eb112091c91bf5d63ddef2a951e11a4be05f2b/grpcio_tools-1.81.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b62d254c214faa3773eac709376ae25cf7abff1a76ba5fc4dbcd7b14fc4e4ae6", size = 2697765, upload-time = "2026-06-11T12:49:31.702Z" }, + { url = "https://files.pythonhosted.org/packages/3c/86/beb2a43fbb93570a2305696083f6736566301d957869f463308ec6839f95/grpcio_tools-1.81.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:bd0b68dc76b10b3384b9b6e9f59202b83dcaafd8098eb644759a69316686acf8", size = 3147588, upload-time = "2026-06-11T12:49:33.748Z" }, + { url = "https://files.pythonhosted.org/packages/af/4d/b0182d9948631cd837a372b6625cf59d6e335d4aab0f425d4b7306619074/grpcio_tools-1.81.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:a28d231455ab6e3558299f7d831a73c8be8ee6b7ec614ecf39eb50c0ed15767f", size = 3708798, upload-time = "2026-06-11T12:49:35.979Z" }, + { url = "https://files.pythonhosted.org/packages/23/9b/f452a189d399051d85cf82fe2f27a070efaa52512a2c5e3ae6ef1ae99a1f/grpcio_tools-1.81.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:82740248eb6f3b6a38988cb5e64adb7303af9ea5cb4197c8ed08c1fabc767440", size = 3366969, upload-time = "2026-06-11T12:49:37.911Z" }, + { url = "https://files.pythonhosted.org/packages/9b/48/0075cb4f6ae7db280f461de2dbba700b22ae62e351ae13e6e461cd6804de/grpcio_tools-1.81.1-cp310-cp310-win32.whl", hash = "sha256:801d9d8ab5cddf8f8e064225292f0713427011252a07828a6b54e2ed64d534de", size = 1008713, upload-time = "2026-06-11T12:49:39.791Z" }, + { url = "https://files.pythonhosted.org/packages/17/bd/7692bc698259e5645b68720e77e7b176d376f6ae0c9db8b5b750a02f1958/grpcio_tools-1.81.1-cp310-cp310-win_amd64.whl", hash = "sha256:3c8611d6e4e859ac5373422ef27c4b7540cf98c9991c9abc6722613ef72b13aa", size = 1174752, upload-time = "2026-06-11T12:49:41.43Z" }, + { url = "https://files.pythonhosted.org/packages/18/76/14ff87090199a36f914388299a1148d0734a20cea1b0ca8480bae1f373f1/grpcio_tools-1.81.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:8161f398f957a376cae7385ea7c8684f439d460ef702b528912da3bcb31fc515", size = 2586251, upload-time = "2026-06-11T12:49:43.514Z" }, + { url = "https://files.pythonhosted.org/packages/87/a8/d5aa99de9d8b2dd2a8192c1779796eda8b0d0f1dd915422e0a8a61b80391/grpcio_tools-1.81.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:53ef76cc3b0493ff734a5e8c39d5b519e1822236fcccdfe7677c5e1efd767761", size = 5818063, upload-time = "2026-06-11T12:49:45.975Z" }, + { url = "https://files.pythonhosted.org/packages/ba/cb/2e9a6dbc6a514dd3cd264fb3bf9217937453a4d45dbc3ca6ca4ee34ba1a7/grpcio_tools-1.81.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:690e6dcaa8b8a7886ce206ba344e2127211597e1a1ddab73df9f3d80c8f6707e", size = 2634061, upload-time = "2026-06-11T12:49:48.13Z" }, + { url = "https://files.pythonhosted.org/packages/c8/2b/2ccd1a929e6c8ad84a0aa8d66ad9f615b4a8e79d9927373d86aa36b4ba2e/grpcio_tools-1.81.1-cp311-cp311-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:ad7a997c07bd345e84842e60561e7e2cc090ce6c4e1d2f0407e31b85b40fc49a", size = 2958029, upload-time = "2026-06-11T12:49:50.466Z" }, + { url = "https://files.pythonhosted.org/packages/e7/67/2da8cd312edc348f44f26f82096b25cdb7d2905cd786acc6bf777b169502/grpcio_tools-1.81.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b6bd163ece4535726e5292b845ed80ae9b2cae73ba091c7d6c66033c430e3857", size = 2698031, upload-time = "2026-06-11T12:49:52.292Z" }, + { url = "https://files.pythonhosted.org/packages/d9/ba/ad1680fbdf9317c4f1e54c37c96d1f422370df66ac9adbd175c7cb3531d7/grpcio_tools-1.81.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2baa7e735f35b2a648144c03348a126097b13e101d3c242d5edb6ac91437ccbe", size = 3147541, upload-time = "2026-06-11T12:49:54.43Z" }, + { url = "https://files.pythonhosted.org/packages/57/c1/57cd08eef293d713cb8935295e4f08d8f0013480b2ba3aad1af0271eb7ba/grpcio_tools-1.81.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1d602b410b2b2addc434cace9ce4fe2035974a3078228f98ffa049a5c90acc2f", size = 3708524, upload-time = "2026-06-11T12:49:56.544Z" }, + { url = "https://files.pythonhosted.org/packages/52/31/01ea8ca9c82fe2c79b5b594c3ae427d56699bc106b2d91caca129add8b10/grpcio_tools-1.81.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f8cb64f87c45ccca8234fa47e6b21f09e43801ff11b556deecb461b3b3e9f292", size = 3367022, upload-time = "2026-06-11T12:49:59.608Z" }, + { url = "https://files.pythonhosted.org/packages/7d/35/8140cd175602df3d17215cfb28a7ea55b7a67e2b872be76e1ee4af5c4df9/grpcio_tools-1.81.1-cp311-cp311-win32.whl", hash = "sha256:87b25ca0e27373a4a32a629a4ba976f5764b9887dd50d6fe017d38009a0363e8", size = 1008980, upload-time = "2026-06-11T12:50:01.422Z" }, + { url = "https://files.pythonhosted.org/packages/be/86/1bd29ab3c52457702b96536f1f208ab27695322d855f95c9666dfb713019/grpcio_tools-1.81.1-cp311-cp311-win_amd64.whl", hash = "sha256:204de03b539a4b08772c6553b92bcc112cbc965e0ac22f909f6d133b8ac33a8c", size = 1174840, upload-time = "2026-06-11T12:50:03.408Z" }, + { url = "https://files.pythonhosted.org/packages/3b/8a/824a9ca20bcdce8a568bb8c9f98bfeb7fad62129235e6d2ae7576fd1250a/grpcio_tools-1.81.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:353b1fafcc739c31ed42271052709595b340d34f27c459beeb78a32938305bb5", size = 2585927, upload-time = "2026-06-11T12:50:05.671Z" }, + { url = "https://files.pythonhosted.org/packages/2f/35/e5f9f671378b1b89a896150d3e4fa2c6ec61a5e1e9e5107ce4c140ccc931/grpcio_tools-1.81.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:768f584c2423cbeb6cb6867817a39365b987ff16b8259a3adbc6546b9e303a4e", size = 5815665, upload-time = "2026-06-11T12:50:08.178Z" }, + { url = "https://files.pythonhosted.org/packages/c6/02/631b628e4072e988c669bd8f1b2406ef3c9a4cfcb2625bbf2a308a07b71d/grpcio_tools-1.81.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1680b35a84f4694401819ac4acac42dda6dbc7bb8fc74112fd1a60425a07adf4", size = 2635518, upload-time = "2026-06-11T12:50:10.391Z" }, + { url = "https://files.pythonhosted.org/packages/de/7c/2e3537e3ea3d1c0ddd6766cf6a7c62b487d89fb005713df2781d5f21483a/grpcio_tools-1.81.1-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:f64e665c8ec639278ecf009beb92cbdcc5994f617c1af3d58036e1f70b1423ec", size = 2958252, upload-time = "2026-06-11T12:50:12.677Z" }, + { url = "https://files.pythonhosted.org/packages/35/68/14013cb2942bdac354746b643b4c37dd91906da8dce00f41c616e88bf33d/grpcio_tools-1.81.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ba8f1ae82ad199f43448995715445cc623fb20d3882382e4be61f0da8ccb3f0e", size = 2698439, upload-time = "2026-06-11T12:50:15.017Z" }, + { url = "https://files.pythonhosted.org/packages/bd/45/000c14c0338a7ad36054b9f17ea41842deb7841c05c067dd36cc831bc0f4/grpcio_tools-1.81.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b7b6d1e986d5923751bfe2b5cca9c4cb3d5653446e4fa4aacd438033e2dc360a", size = 3152160, upload-time = "2026-06-11T12:50:17.3Z" }, + { url = "https://files.pythonhosted.org/packages/41/97/881930ca3967d2c8a95649bea8ebc991a7cf2331bc96679fd3600450dccc/grpcio_tools-1.81.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:7f208c207aca639dcb34648d3826c38d7cf3485118fb2065117e9fc4827406b3", size = 3710468, upload-time = "2026-06-11T12:50:19.479Z" }, + { url = "https://files.pythonhosted.org/packages/c7/b5/67baeba7366162652cdc1dbd962289accde07241bc8f42f6f02b305efcc6/grpcio_tools-1.81.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:724ecb69af63d2f6d4ccea3e6fa0ca110ed9c5824d48c2f887c631bbb03c1c3c", size = 3370797, upload-time = "2026-06-11T12:50:21.501Z" }, + { url = "https://files.pythonhosted.org/packages/f2/5d/34f2dce2125ccb107e32b57f5a9c1257edcc0793b0d2fef1e8b13a6bac3c/grpcio_tools-1.81.1-cp312-cp312-win32.whl", hash = "sha256:895a6782cec86beac71ccebb4b9848259c6f04a3028b8e42fa8d40cfe5146593", size = 1008453, upload-time = "2026-06-11T12:50:23.358Z" }, + { url = "https://files.pythonhosted.org/packages/8a/be/09da8256ec8d2a5ce8a1acc51cbbc4ca52a462d78ed3412778440a56502e/grpcio_tools-1.81.1-cp312-cp312-win_amd64.whl", hash = "sha256:0265fd1386b7458302f79542558345880d484f8fa92ae196c0c0268242c5f23a", size = 1174857, upload-time = "2026-06-11T12:50:25.685Z" }, + { url = "https://files.pythonhosted.org/packages/76/90/5faa8b26e03495e5117f93bef8293cbada4af136362745dad7d1813ef0b0/grpcio_tools-1.81.1-cp313-cp313-linux_armv7l.whl", hash = "sha256:3d604b4fd114b79ebb9f865bf3e04fd3ae93c704e1fad96f7fd03b0865c263b7", size = 2586071, upload-time = "2026-06-11T12:50:28.4Z" }, + { url = "https://files.pythonhosted.org/packages/e8/9a/85dc589fa6ae2439451eaa81a1578de31e29c676980d38bef7549b8a1f45/grpcio_tools-1.81.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:3389e705460efa3f3758141ba5520e6743b131c9576197c944fb9cbe49048126", size = 5813299, upload-time = "2026-06-11T12:50:31.295Z" }, + { url = "https://files.pythonhosted.org/packages/77/fd/c53994e58a837e6eefe48f53eb3492afc04f2b8af255df4adb37d14378f8/grpcio_tools-1.81.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8a17d8ceeb6a855fadf39f5171c80a382d97c4db98d5943eca553497fdebf84b", size = 2634668, upload-time = "2026-06-11T12:50:33.938Z" }, + { url = "https://files.pythonhosted.org/packages/34/32/de988e86688686a2117e7ce6ce9eff4f638c929bb55b0afe60d6fbd2e45c/grpcio_tools-1.81.1-cp313-cp313-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:43baf71dc60fd653062da2e95e95c73b35dd130be8f9fa3d544c3af3f808a290", size = 2957930, upload-time = "2026-06-11T12:50:36.726Z" }, + { url = "https://files.pythonhosted.org/packages/72/97/3f18a0ea32b5f809d21961dbd0bc382b589a4c3d501e3d67c345d5456ed3/grpcio_tools-1.81.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:136e90906af0df51ad929713244ba812d0dbb1844b4f467d5d86bdb054698f90", size = 2697760, upload-time = "2026-06-11T12:50:39.108Z" }, + { url = "https://files.pythonhosted.org/packages/49/c0/dbf5cbc877290ff7504a59959a8af4fdcfdaa1e84237948405ccf1aa82a6/grpcio_tools-1.81.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd6c3bf3ea6a61eb58c54368d72ada591f2a270f3a31a32e8536e773337e76d9", size = 3151456, upload-time = "2026-06-11T12:50:41.983Z" }, + { url = "https://files.pythonhosted.org/packages/de/ea/16fe2dc83140a59e5c0a0b9dc2693dd36bfaa6bd835724b4ec66a68eab7b/grpcio_tools-1.81.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2c306c307f8f74cddc4056fdbb6f1da55de087a21120efbd02bd915daa5a52fd", size = 3710469, upload-time = "2026-06-11T12:50:44.596Z" }, + { url = "https://files.pythonhosted.org/packages/22/7d/df987d7d81e7ad2f7516d9e9d56ff29c54dbc6d8587e425688dca9a28e49/grpcio_tools-1.81.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:bdbdc927be2e0ea13c32564a72ee31d712a716fb6f8c0d53d37a77d8277c272c", size = 3370488, upload-time = "2026-06-11T12:50:47.199Z" }, + { url = "https://files.pythonhosted.org/packages/ba/c5/5a63444d694ea47bf670138208f71830cc1759c402c8818092b28ab2dc5f/grpcio_tools-1.81.1-cp313-cp313-win32.whl", hash = "sha256:9d383724bcd67244b6def9e9164c640ee9380c0b7534ee7545a6fb0022a59afe", size = 1008229, upload-time = "2026-06-11T12:50:49.527Z" }, + { url = "https://files.pythonhosted.org/packages/00/75/3945e26d5c94ae6ed9be5caef73d4d66c47dc8cfdd7b4995efaf942754e0/grpcio_tools-1.81.1-cp313-cp313-win_amd64.whl", hash = "sha256:f3eb15849979ca7bb864ce81a74d68b0f225a7f111ed3fe212bfc08cf9812b10", size = 1174523, upload-time = "2026-06-11T12:50:51.755Z" }, + { url = "https://files.pythonhosted.org/packages/0d/08/e581ad42ae517a61172285047e4d710e2ac75f2f1915f7c91f284254e6d5/grpcio_tools-1.81.1-cp314-cp314-linux_armv7l.whl", hash = "sha256:7d168ea26390717d0462c0d0408331dc98a60fc7f7e6118afac9b73f5a66d87c", size = 2585944, upload-time = "2026-06-11T12:50:54.528Z" }, + { url = "https://files.pythonhosted.org/packages/78/c8/200d90ebad685af7eea5ff7e0360c504dd01ec053fe0f1f9c4abe3ea2d5a/grpcio_tools-1.81.1-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:43c528655b226375013036692d8db4cd59060c1f41dd62c77f4d17b69f6ce828", size = 5813492, upload-time = "2026-06-11T12:50:57.291Z" }, + { url = "https://files.pythonhosted.org/packages/2d/c0/60da2a1af37aa8eb47308cec24d9f7709a8976fdec3a53fd35b56b358326/grpcio_tools-1.81.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a9c6fcc68c9d5a208967bfe4fd3224d3c3be9a950c3e827e8f4b17e15c2dc555", size = 2634991, upload-time = "2026-06-11T12:50:59.767Z" }, + { url = "https://files.pythonhosted.org/packages/0c/7f/dede28b579ae9bf9079ba1aa913e8088d1dc0cdbe21c85caa22f0790cad2/grpcio_tools-1.81.1-cp314-cp314-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:a987c85dcbe1b32066d7acd46266d1a428aecbd629331bf5b853e74c835bf876", size = 2957913, upload-time = "2026-06-11T12:51:02.31Z" }, + { url = "https://files.pythonhosted.org/packages/4c/38/4de2118adb58ec7ffba65ec623b5836db769665c192517cbf187db3f6145/grpcio_tools-1.81.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:a882382507bb5ec6d7edc9648053dfd3bc8f9285cde56a6fa9b9a83b4bd07f1c", size = 2697709, upload-time = "2026-06-11T12:51:05.016Z" }, + { url = "https://files.pythonhosted.org/packages/6b/e1/762ced51059e4f694fd337ecae491581d42a4e61dcb0415d8c5c60e6ddcb/grpcio_tools-1.81.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7746e508d4239a02f7e93638be5bc0ebb0120ddb796f7506aaae9d47a4599d97", size = 3151884, upload-time = "2026-06-11T12:51:07.593Z" }, + { url = "https://files.pythonhosted.org/packages/19/d8/9823090dc801e7229944874e7429c3b98e741ac778d8dc373f60240e1c43/grpcio_tools-1.81.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:fc3d2a41a7a4467fa03b391394fffada9291fe8feebc8679b526f6bc36942b25", size = 3710404, upload-time = "2026-06-11T12:51:10.172Z" }, + { url = "https://files.pythonhosted.org/packages/64/4e/4eae98d02148cb6f9f452f09942afba407afa6851e6c1fddc5ae9ec0b4ed/grpcio_tools-1.81.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:21bb3ba90e6d8df1ff663d4ee39a4e5b25a64e8ed4902476ca9ded0954d3917a", size = 3370525, upload-time = "2026-06-11T12:51:12.678Z" }, + { url = "https://files.pythonhosted.org/packages/e0/3e/2206e597a128da6a03a6106d2eaf2c3e72c7d80843d4be933e3a3d10d02a/grpcio_tools-1.81.1-cp314-cp314-win32.whl", hash = "sha256:3dca56016d90a710c4d9861bae793dc089c1430a90c79ce672e948ddb65fa539", size = 1030582, upload-time = "2026-06-11T12:51:14.906Z" }, + { url = "https://files.pythonhosted.org/packages/cf/f2/bbeef86c687225b7bbc7c0acdfbd25c8bcaa3f5b1c941db053e5c3d9e859/grpcio_tools-1.81.1-cp314-cp314-win_amd64.whl", hash = "sha256:cb08172b7b629e75cb33866928d319a3196540a725eaab628ba721007140f1af", size = 1207490, upload-time = "2026-06-11T12:51:17.598Z" }, ] [[package]] @@ -368,30 +365,31 @@ wheels = [ [[package]] name = "httpcore2" -version = "2.3.0" +version = "2.5.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "h11" }, { name = "truststore" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e6/34/18f1c596e677962f040284246f393b10a1f8ce440b3a7e69c637d0f1c7ad/httpcore2-2.3.0.tar.gz", hash = "sha256:07327e251560960eea8e969d92d4c6a325feb13cca39e25340731336c3baf924", size = 64300, upload-time = "2026-06-01T13:15:02.998Z" } +sdist = { url = "https://files.pythonhosted.org/packages/47/06/5c12df521b5322fb1114a83d46911b2fbcb8855ddb3a635f11c01a214af5/httpcore2-2.5.0.tar.gz", hash = "sha256:88aa170137c17328d5ac44234f9fd10706466d5fb347f3edac4d39b91137b09d", size = 64808, upload-time = "2026-06-25T14:16:56.472Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c2/dd/3357218c69360d1cecc196c230c9a1d5c9afd5dba362056e23e60a5e64e5/httpcore2-2.3.0-py3-none-any.whl", hash = "sha256:477e9e334f74e5240dcac002e890580f36a57d40ff0fb14cc9655731d23b8415", size = 80024, upload-time = "2026-06-01T13:15:00.001Z" }, + { url = "https://files.pythonhosted.org/packages/c9/a1/7564199d1a8728fe737b0a72e5b3f8d92dfe085a74ddf7cdd83bce5f206d/httpcore2-2.5.0-py3-none-any.whl", hash = "sha256:5ce35188de461d31e8d000bfb8ef8bf22c6c16587a211e5571deaa5e9bdf842a", size = 80330, upload-time = "2026-06-25T14:16:53.634Z" }, ] [[package]] name = "httpx2" -version = "2.3.0" +version = "2.5.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, { name = "httpcore2" }, { name = "idna" }, { name = "truststore" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9f/9a/cca0b9145f13d8ae34b885ae28d403a1469a433abc78e0f94f4ce94e650b/httpx2-2.3.0.tar.gz", hash = "sha256:227e7c41d95a76d4077a52640564132777215fc3394e07b66a3116c33d668fa9", size = 81115, upload-time = "2026-06-01T13:15:04.324Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d0/e2/b5dedc0cf35aa65de5f541ccd30d2bc1fd7f1d43c9ab09f8ed9a7342317b/httpx2-2.5.0.tar.gz", hash = "sha256:e2df9cb4611021527ff8a675b1c320b610a2ec397acc8d6fe6e91df2d9b33c29", size = 83121, upload-time = "2026-06-25T14:16:57.491Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/87/ce/ae2911859847f9ba1d6b23027e53481cbeb50b93234f355a968d300ca2cb/httpx2-2.3.0-py3-none-any.whl", hash = "sha256:6f393663bdf6dbe7fe90118e3eb5b2bd024a675cae0390ac08cec9198812d8b7", size = 74538, upload-time = "2026-06-01T13:15:01.566Z" }, + { url = "https://files.pythonhosted.org/packages/31/22/859d8252dad9bc9adee34b52e62cde621ece07b042ccb2ab4da1be46695f/httpx2-2.5.0-py3-none-any.whl", hash = "sha256:3d2d4d9cf4b61f1a1f46a95947cfdb47e80cb56a2f91c6256ac8f58e4891df41", size = 76652, upload-time = "2026-06-25T14:16:55.23Z" }, ] [[package]] @@ -427,14 +425,14 @@ wheels = [ [[package]] name = "opentelemetry-api" -version = "1.42.1" +version = "1.43.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b4/1c/125e1c936c0873796771b7f04f6c93b9f1bf5d424cea90fda94a99f61da8/opentelemetry_api-1.42.1.tar.gz", hash = "sha256:56c63bea9f77b62856be8c47600474acad853b2924b99b1687c4cb6297166716", size = 72296, upload-time = "2026-05-21T16:32:49.335Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ae/cc/e4c9584181f86494df0f6bdec1a4f3280c50db44704dc2a407e994fc87bb/opentelemetry_api-1.43.0.tar.gz", hash = "sha256:107d0d03857ea8fc7c5fcbbbd83f800c281f0d560553d61c1d675fccfd1761c1", size = 73476, upload-time = "2026-06-24T15:19:55.323Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/ca/9520cc1f3dfbbd03ac5903bbf55833e257bc64b1cf30fa8b0d6df374d821/opentelemetry_api-1.42.1-py3-none-any.whl", hash = "sha256:51a69edacadbc03a8950ace1c4c21099cacc538820ac2c9e36277e78cebba714", size = 61311, upload-time = "2026-05-21T16:32:28.822Z" }, + { url = "https://files.pythonhosted.org/packages/17/83/6dba32b85f31868400440dc7ad2ca1eab94cbbf3a7b0459ed39f8311a9e2/opentelemetry_api-1.43.0-py3-none-any.whl", hash = "sha256:20acf45e9b21851926835292e4045d290acade1edd2ff3de86d2f069687ba1fd", size = 61912, upload-time = "2026-06-24T15:19:35.434Z" }, ] [[package]] @@ -478,7 +476,7 @@ requires-dist = [ [package.metadata.requires-dev] dev = [ { name = "grpcio-tools", specifier = ">=1.74.0" }, - { name = "protoc-gen-connect-python", specifier = ">=0.6.0,<0.7" }, + { name = "protoc-gen-connect-python", specifier = ">=0.9.0,<0.10" }, { name = "protoc-gen-openapiv2", specifier = ">=0.0.1" }, { name = "pydantic-settings", specifier = ">=2.10.1" }, { name = "pytest", specifier = ">=8.4.1" }, @@ -556,15 +554,15 @@ wheels = [ [[package]] name = "protoc-gen-connect-python" -version = "0.6.0" +version = "0.9.0" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/3a/721ca3c27870596240b0d13dab40145b5de68147e4fdcdf9afc7684e905d/protoc_gen_connect_python-0.6.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:f7395905489de4af43e001b0439aa10680d35c023c9e61e9c7df08f5d5b4a41b", size = 1827154, upload-time = "2025-12-08T04:45:52.917Z" }, - { url = "https://files.pythonhosted.org/packages/6e/92/45e07f3060a458809530c8dc48fa3a291e35ecc3560759b26a5aa371c4cb/protoc_gen_connect_python-0.6.0-py3-none-macosx_11_0_x86_64.whl", hash = "sha256:dd0673917cb357e3796d1f088bf5aba5cbc39ef785e68aa1c69d8663ff476be5", size = 1951153, upload-time = "2025-12-08T04:45:54.314Z" }, - { url = "https://files.pythonhosted.org/packages/48/63/3d0b1ced6d0341afa3c7338eed46e4a070233d83577d7368a5acacce0781/protoc_gen_connect_python-0.6.0-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.musllinux_1_1_aarch64.whl", hash = "sha256:53fcb349100d3d1c1f297d0f3391daf25d75adaea0907acbfd8fa88b1ce6b028", size = 1761360, upload-time = "2025-12-08T04:45:55.861Z" }, - { url = "https://files.pythonhosted.org/packages/11/6a/b123d1dfd4aecbc52f7ee325cddfa3ef972250e064365c1b10edf48a5736/protoc_gen_connect_python-0.6.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.musllinux_1_1_x86_64.whl", hash = "sha256:461d3c6a4ed73120404e65bd299dc4ddeea95a22abe08165119f0eae7c9abc9b", size = 1928744, upload-time = "2025-12-08T04:45:57.557Z" }, - { url = "https://files.pythonhosted.org/packages/f1/d9/de885f34566df97ecc9ac782d11ff923ebf250c01dc9cf0159bfb694b094/protoc_gen_connect_python-0.6.0-py3-none-win_amd64.whl", hash = "sha256:cc02f64587bbb7ddd5c22686af1b521886121ffd97bc82f7dfec96564de44ca9", size = 1988083, upload-time = "2025-12-08T04:45:58.867Z" }, - { url = "https://files.pythonhosted.org/packages/d4/1a/c3d7bf5eda1c0724f219dcc16bd219b6fcc41d3ab846e3a8af2f94b1a81f/protoc_gen_connect_python-0.6.0-py3-none-win_arm64.whl", hash = "sha256:1b89eff4e2289ac72b682a2637dc9cb60647a9b16fa6c56a6bdf229545f5bac8", size = 1793631, upload-time = "2025-12-08T04:46:00.401Z" }, + { url = "https://files.pythonhosted.org/packages/4a/c3/216e30a2153eba4141f373e1266ff372107009674095a60ea718909736b4/protoc_gen_connect_python-0.9.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:821c9023e02db313b88c037f9a425316c01c2de58b3e3947c001ff1f060d4cac", size = 1876792, upload-time = "2026-03-19T02:40:51.527Z" }, + { url = "https://files.pythonhosted.org/packages/6e/61/a577047b2b2832eb331777e6ce9a1fddffe09ea760023f0586f56019d5c5/protoc_gen_connect_python-0.9.0-py3-none-macosx_11_0_x86_64.whl", hash = "sha256:507f1c6a9de6c6d2442f6d1bf1c639cc699c510c5abacb1b63535c578c5fe3ae", size = 2021337, upload-time = "2026-03-19T02:40:53.697Z" }, + { url = "https://files.pythonhosted.org/packages/30/01/c4f798f586fc82fdb794ce0504651f9c68dff716343d028bdcecb8f88c29/protoc_gen_connect_python-0.9.0-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.musllinux_1_1_aarch64.whl", hash = "sha256:3ffb917bce4a5d8af0af804711b24fc627e06843faefca3b5c6f700b7bd7307e", size = 1822549, upload-time = "2026-03-19T02:40:55.216Z" }, + { url = "https://files.pythonhosted.org/packages/43/b3/8c6bac0e73c7c837297f078d0025fc1dbfa72834dfa8c78a1453cd123837/protoc_gen_connect_python-0.9.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.musllinux_1_1_x86_64.whl", hash = "sha256:7d563196a2d43797b1a72edfa7fdf2aa00dccefa9ca969e19466f7928049f1cf", size = 2011338, upload-time = "2026-03-19T02:40:56.818Z" }, + { url = "https://files.pythonhosted.org/packages/0c/48/4adb0616be7617c8f2bdbec490e1086640c6eb9b4ece35ad6228cdc26c51/protoc_gen_connect_python-0.9.0-py3-none-win_amd64.whl", hash = "sha256:bd83efaff9d2eb703b69d057e95569755eec875a3728ce2f4944acb6f03538f6", size = 2062026, upload-time = "2026-03-19T02:40:58.416Z" }, + { url = "https://files.pythonhosted.org/packages/e1/ea/7a4522f935f6b6c156054e283d0d00431ae52a5d677c5148a174e92aa6f0/protoc_gen_connect_python-0.9.0-py3-none-win_arm64.whl", hash = "sha256:0f6d7e11ccd82009f951da2f2770ef817fd1dc5664de8fedbef60372ef6ab256", size = 1843570, upload-time = "2026-03-19T02:40:59.991Z" }, ] [[package]] @@ -722,16 +720,16 @@ wheels = [ [[package]] name = "pydantic-settings" -version = "2.14.1" +version = "2.14.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pydantic" }, { name = "python-dotenv" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/07/60/1d1e59c9c90d54591469ada7d268251f71c24bdb765f1a8a832cee8c6653/pydantic_settings-2.14.1.tar.gz", hash = "sha256:e874d3bec7e787b0c9958277956ed9b4dd5de6a80e162188fdaff7c5e26fd5fa", size = 235551, upload-time = "2026-05-08T13:40:06.542Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5c/b5/8f48e906c3e0205276e8bd8cb7512217a87b2685304d64be27cad5b3019f/pydantic_settings-2.14.2.tar.gz", hash = "sha256:c19dd64b19097f1de80184f0cc7b0272a13ae6e170cbf240a3e27e381ed14a5f", size = 237700, upload-time = "2026-06-19T13:44:56.324Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ae/8d/f1af3832f5e6eb13ba94ee809e72b8ecb5eef226d27ee0bef7d963d943c7/pydantic_settings-2.14.1-py3-none-any.whl", hash = "sha256:6e3c7edfd8277687cdc598f56e5cff0e9bfff0910a3749deaa8d4401c3a2b9de", size = 60964, upload-time = "2026-05-08T13:40:04.958Z" }, + { url = "https://files.pythonhosted.org/packages/77/c1/6e422f34e569cf8e18df68d1939c81c099d2b61e4f7d9621c8a77560799c/pydantic_settings-2.14.2-py3-none-any.whl", hash = "sha256:a20c97b37910b6550d5ea50fbcc2d4187defe58cd57070b73863d069419c9440", size = 61715, upload-time = "2026-06-19T13:44:55.02Z" }, ] [[package]] @@ -757,54 +755,54 @@ wheels = [ [[package]] name = "pyqwest" -version = "0.6.1" +version = "0.6.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "opentelemetry-api" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a0/6a/9c9147b690ce13b6c036cc17485d0e46ec59f2a5da5a0a1722fbc40282cf/pyqwest-0.6.1.tar.gz", hash = "sha256:038c8facdf78ada967aba3238d6e8ed2cbbdb3283eb00ca11b4a3d29af9b4080", size = 450611, upload-time = "2026-06-03T04:28:42.976Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6c/1b/8af5ca9480ac41fca22975c23afb5e2404243a9db3f50c864a1f62e7ec6b/pyqwest-0.6.1-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:c6f0c35836b1abb42853395dda08372bf1b13859c0e2218974c49dd072b581da", size = 5064233, upload-time = "2026-06-03T04:27:36.248Z" }, - { url = "https://files.pythonhosted.org/packages/d5/ea/200a1116e8745417433d0b27239c3ce46118d5044d5d90ecb36ff2b37aeb/pyqwest-0.6.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4468e2c57352144bbee2e62c04c5022eef79429725f8907d3bf89b80ec32fba5", size = 5427500, upload-time = "2026-06-03T04:27:38.209Z" }, - { url = "https://files.pythonhosted.org/packages/37/73/a2c580b02fb62b2ac8bf67a0ba52b295e9d1616048c0240dbdbcd0976580/pyqwest-0.6.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a920f3b769b6ffdfbcd8b9fed39146ef6dd841e48027a2f2be5ba1c5356ef06", size = 5454796, upload-time = "2026-06-03T04:27:40.084Z" }, - { url = "https://files.pythonhosted.org/packages/4d/b1/9dff83bf0fdf81b8376569c25329a06d89859edd7f9fcd4968172bb08335/pyqwest-0.6.1-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2d02a0db5168d5918546a6dc8970e3f585f8f3128f7d0a13cb1e648ad08f2795", size = 5593825, upload-time = "2026-06-03T04:27:42.628Z" }, - { url = "https://files.pythonhosted.org/packages/1b/c7/d2054e7a47ec658328edc944f9c4c1132d32a4bec558ea818accfcb0978b/pyqwest-0.6.1-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:8cdd06047ace54d3ac71403db12fbf2dafea538628c08c85cffdeab54693d667", size = 5762315, upload-time = "2026-06-03T04:27:44.545Z" }, - { url = "https://files.pythonhosted.org/packages/ad/c8/80d7bd7eb74415ea63d450fddb98302900098ae48ee64e35519b044e2497/pyqwest-0.6.1-cp310-abi3-win_amd64.whl", hash = "sha256:54a4c93109397c5dbfbdb52fadf2f3a6d3918f632efd0cd568f499ac1a2bbee3", size = 4624229, upload-time = "2026-06-03T04:27:46.484Z" }, - { url = "https://files.pythonhosted.org/packages/1b/95/0eb8a7e4d298a5b5d094aee4219025fe8551426a436eedcd0756c56aa9c2/pyqwest-0.6.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:dd361665d34e47347bbd8160babc3ae37b2bbcd3dae517a9ff44b1860056d0b5", size = 5060906, upload-time = "2026-06-03T04:27:48.66Z" }, - { url = "https://files.pythonhosted.org/packages/9b/e8/eacee01381e4c1899ab8f7c5908b56ec64644b39b4e39710d8efb2a17639/pyqwest-0.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed60a4fcd611005dfc8bce7c54092872878aa5b561f5d0ca2c102c26e963af92", size = 5431737, upload-time = "2026-06-03T04:27:50.392Z" }, - { url = "https://files.pythonhosted.org/packages/5a/f2/3a6811beb2b3bcebc11ae23f41701de6e17d84dcc1e5f640b40a40c2e3a1/pyqwest-0.6.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f43bfdd48c34cad7142e662799abc21eae5e52f11dc726597e28685507eeed9", size = 5456680, upload-time = "2026-06-03T04:27:52.347Z" }, - { url = "https://files.pythonhosted.org/packages/49/4f/02a9be493063640b3313233829d51e7a869ba69f61f72d9d6de8e7da85ab/pyqwest-0.6.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:bcc96ddb2fdffcb0d2e097a40d3543a1c367f630b3ec52b407f19f4768ceb372", size = 5598266, upload-time = "2026-06-03T04:27:54.338Z" }, - { url = "https://files.pythonhosted.org/packages/cb/71/b77e8ca4eb8077d4c59b6ce8126546963606b259f8a8faece3496e0d8b55/pyqwest-0.6.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4abee15a779c3cb5cd8d909394858dac2b6f4e3c405267343845089f97533089", size = 5764723, upload-time = "2026-06-03T04:27:56.079Z" }, - { url = "https://files.pythonhosted.org/packages/35/49/cf79bf01bacbbc66fd155fb826c38f2cde56a124d1c36497d8dd7360b2c2/pyqwest-0.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:3657d73ef879a2ce14866421166fb3722a6b4bb3d16f6c65dea412ab61fda1e4", size = 4638889, upload-time = "2026-06-03T04:27:57.907Z" }, - { url = "https://files.pythonhosted.org/packages/24/36/9f06c5c142deded7f017eb31366dbf9ebc771847a04dc18dbe867f50949d/pyqwest-0.6.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ec433cebf350febaff267ad7086538a1ab5591f9d925d47630c5c8aa08b81a28", size = 5060197, upload-time = "2026-06-03T04:27:59.783Z" }, - { url = "https://files.pythonhosted.org/packages/41/41/28647da41900d7886b48ff6299de805306555177e9e84ca59d298e4397f1/pyqwest-0.6.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e602bd007f24443f5d724698f7e2681e6f781812f343e5b35ab2e205ac37e410", size = 5432117, upload-time = "2026-06-03T04:28:02.024Z" }, - { url = "https://files.pythonhosted.org/packages/a3/79/7a326e0ee894598f315800a619c38a48e436b896fa7d62aaf8433107c073/pyqwest-0.6.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87790015729f67da7e8a9a9ce0a52a78fcede067c8ccb70715b844702ba4032b", size = 5456355, upload-time = "2026-06-03T04:28:03.933Z" }, - { url = "https://files.pythonhosted.org/packages/23/76/c0b78fff38a7303499127004b5f08fec9f1bddb672b6ef1fd354aedc0d4c/pyqwest-0.6.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:8182052c1aac9964e5031dc788640d5ca35b42590a29b381905a3dcabbf949b2", size = 5598847, upload-time = "2026-06-03T04:28:05.762Z" }, - { url = "https://files.pythonhosted.org/packages/72/66/d50d783eb4c10a6ef7deb0f4dbc78d86541f3f837941d5d812852fff2c34/pyqwest-0.6.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8d2261b8ddccec5190b752ee17b6970273658d2e58e10a830c7cc02df644aa50", size = 5764050, upload-time = "2026-06-03T04:28:07.629Z" }, - { url = "https://files.pythonhosted.org/packages/ed/99/96e51a4ee48eece7ef7e90ea408ed2be61938baafedc967b1480eea35dce/pyqwest-0.6.1-cp313-cp313-win_amd64.whl", hash = "sha256:cdf60fddd943b6f37943266f85a85ab1a9fb311c3bb6ae0e19c38c5cd05760fe", size = 4638396, upload-time = "2026-06-03T04:28:09.317Z" }, - { url = "https://files.pythonhosted.org/packages/63/48/3fdff162dfe53fc0d23b30bf9361c5b04c478b70650e4a0e2d925e13af9d/pyqwest-0.6.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:27312aff9a75daca71c30217d56508eeb71cd0fe38d3215a2fc387ed76de3152", size = 5051134, upload-time = "2026-06-03T04:28:11.011Z" }, - { url = "https://files.pythonhosted.org/packages/a6/6f/05b8844069cd100b7f7bb05fd3614b65de57e891eeeea51c22bb5258b04d/pyqwest-0.6.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65c34ce347b2808ec1d0bbc8b782b2056a533ec766fd2ff59fbb325cd18bdc4b", size = 5415703, upload-time = "2026-06-03T04:28:12.754Z" }, - { url = "https://files.pythonhosted.org/packages/ff/29/91eca1a9f6f9e979057c683a282e6a675c29d7da889e79b9f47f18770c5a/pyqwest-0.6.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81e53799ff552c7d7055329d39e6e9c18195b26d0ae9f4519dd017cb9234d1fa", size = 5441343, upload-time = "2026-06-03T04:28:14.404Z" }, - { url = "https://files.pythonhosted.org/packages/8a/87/7f077517f366d24b7e2fc689e4af6d4d14f1249877c3c9baf4cc86cb195f/pyqwest-0.6.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:9435c4bd14fff49eb4001dea99687586d96acd37a17a59f5f695634e940553dc", size = 5578429, upload-time = "2026-06-03T04:28:16.247Z" }, - { url = "https://files.pythonhosted.org/packages/00/3d/7f2c7a19422073620c56f8ff783fa5e0629a88e8514a14b16da75487a49c/pyqwest-0.6.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c89f6ff8a95c5240016bc6477730c30c6a567fb2b4cb5a1f3b514a547a89dbf7", size = 5751362, upload-time = "2026-06-03T04:28:17.887Z" }, - { url = "https://files.pythonhosted.org/packages/03/51/3dee71abe73412a71f29f87624eb0f56cb84671a49753c95b8955d65938a/pyqwest-0.6.1-cp314-cp314-win_amd64.whl", hash = "sha256:9a2e64fed8f98debe6268f36852e65bd5f4f68375a1111a43838f6dbd6488d79", size = 4634526, upload-time = "2026-06-03T04:28:19.848Z" }, - { url = "https://files.pythonhosted.org/packages/a3/0e/f2d860948b1047b58e9cb7c650f8a10edf7cac03e634d7a7459d486b73a8/pyqwest-0.6.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:70967372a3c8cd32b313c8042ddfe9080c633ca0f5a79532e83bd4ae7b4f6892", size = 5055649, upload-time = "2026-06-03T04:28:21.827Z" }, - { url = "https://files.pythonhosted.org/packages/a4/18/bce5fb109efa1608f04ea6b056dc391dd80d0e21f8be4eae5115b61a189a/pyqwest-0.6.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c0106429e5c20e90855751515daa4544e2582cef50845807a709f7c57b8589e", size = 5427794, upload-time = "2026-06-03T04:28:23.442Z" }, - { url = "https://files.pythonhosted.org/packages/85/0b/6ee7823013ce02d1b61544bb85d94fd37b9eb5dafc9991b6f617354456e7/pyqwest-0.6.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76ea9fcce0faee86c8d564d790a99173aa3d81e3ffb0a781bcedbf0d41568135", size = 5451626, upload-time = "2026-06-03T04:28:25.202Z" }, - { url = "https://files.pythonhosted.org/packages/8d/10/37a66274f2e8d9bb38b4c52d4ef74d5fdc9d9d900a64ad36127add6261d8/pyqwest-0.6.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8f9651f84245277307938c73938061a7dc48730997b31131a3c2522cb08cbbb1", size = 5591040, upload-time = "2026-06-03T04:28:27.046Z" }, - { url = "https://files.pythonhosted.org/packages/1a/82/5ffaa3ab14551013931e511dee4021f18ff2a1b82fcc5757720f708f7ff1/pyqwest-0.6.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:e4a9a601fe5ccdbb5005f00a88d0920863ca6259660984aa55d0f33394bc2ef5", size = 5758616, upload-time = "2026-06-03T04:28:28.976Z" }, - { url = "https://files.pythonhosted.org/packages/58/f3/bb6a553962564a55c69fd7fbff4c4ba3390ff9fbc0ed7e08ff4879c13af9/pyqwest-0.6.1-cp314-cp314t-win_amd64.whl", hash = "sha256:d0c3242d74db8e2679b5f76ffcc03e95ddf48d01c19d56f92a07e6580e06f6f0", size = 4635422, upload-time = "2026-06-03T04:28:30.765Z" }, - { url = "https://files.pythonhosted.org/packages/bf/7c/9e8e410f43f92acd253811eaedc9b830391b22d5fcbf0a05c9e0615b5432/pyqwest-0.6.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:555bef5910db6ea01eaafdd25e991a1d03222370a813fa88e6ed3996ac7b60ee", size = 5062058, upload-time = "2026-06-03T04:28:32.295Z" }, - { url = "https://files.pythonhosted.org/packages/5f/ba/3aa30ddd6e9ef8b0bc247b3484c6b8793decd2412bd0ee34708ba878d6ac/pyqwest-0.6.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a01af9b75000fdd908f372ca22d66d6f5ac7cbd6a1c1236b458054b52bf900e", size = 5436238, upload-time = "2026-06-03T04:28:33.979Z" }, - { url = "https://files.pythonhosted.org/packages/6b/37/72bccb0a0a657ad12d729a656bac19b83c11e64111995a7fbc7d102a65b3/pyqwest-0.6.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:921d4e14255e1ee4173e130739ec352c17dfd5b981272b5269975c1d743c3571", size = 5454319, upload-time = "2026-06-03T04:28:35.693Z" }, - { url = "https://files.pythonhosted.org/packages/c7/5b/f97dbd6eb03126ef96f0ddc660dcb2afe07f1478d1f0ed18ae4f97ca5195/pyqwest-0.6.1-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:cdfd9faa0c40cded2820c820109eb607b22d5cd4bdef554b14b040f4399fe60e", size = 5601997, upload-time = "2026-06-03T04:28:37.566Z" }, - { url = "https://files.pythonhosted.org/packages/99/1a/59a89b37e5c22c8caee2e57a394188d72745e7422a58e6563abb16c33cf3/pyqwest-0.6.1-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:a14f7205ec85a1016d87f2236afd1f8f636326f5c5eeba0ed45c20b1eeb7ed1d", size = 5762076, upload-time = "2026-06-03T04:28:39.438Z" }, - { url = "https://files.pythonhosted.org/packages/74/13/b03d44835645fa3862cee9bf56fba4f08f87b0ffbd6500053540fdc64370/pyqwest-0.6.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:e1552137c21fb41bb1ac90536990ba2947754db0c273a67222df61b9b04dc6a0", size = 4630947, upload-time = "2026-06-03T04:28:41.412Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/b1/52/90938b0620768dd97a0d82929afc62870037d904e608cac4e5ef6278e4d3/pyqwest-0.6.2.tar.gz", hash = "sha256:17c41121b9dc400133aae282ce8b00bc8d59e75e095b18ca1d9fb5bd1a3ee33a", size = 452447, upload-time = "2026-06-15T07:53:02.495Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/06/86/1818ecd6b0d5e0339a6927ef9d06fc14bb18153887df71a76d7e0452e005/pyqwest-0.6.2-cp310-abi3-macosx_11_0_arm64.whl", hash = "sha256:18e0ef18fd106cb2a2560a78961f26785b4db45477fa42d160987e823207184a", size = 5100370, upload-time = "2026-06-15T07:51:52.367Z" }, + { url = "https://files.pythonhosted.org/packages/10/11/5295652f43a998dda9bf572c7489ddcdd99e0c9f5ddbd1039d73446d4cb2/pyqwest-0.6.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:31885a69499a23f85ed6970c7e8b227f284ea8427ec695026aa69d4ad17ca94a", size = 5497128, upload-time = "2026-06-15T07:51:54.307Z" }, + { url = "https://files.pythonhosted.org/packages/dd/52/c3e35be12fd5503376a64ec91711e1ed0d614a09a119b2d938d01d6a7973/pyqwest-0.6.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bccae7bc1fa195d81d439dfdcba6d213b4c234ab645c902b9da209001facb70d", size = 5528596, upload-time = "2026-06-15T07:51:56.423Z" }, + { url = "https://files.pythonhosted.org/packages/0f/ac/32e05ac720cbc64014295b01f82229c012379393701ebb73c5a0274086d6/pyqwest-0.6.2-cp310-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:674841db9d441aa6ab693f52f73df62baa21648888ebf9a8d576dc9f61e4d904", size = 5663292, upload-time = "2026-06-15T07:51:58.417Z" }, + { url = "https://files.pythonhosted.org/packages/e7/8d/57d760ac9fbf826f6576d66ee53f2419dabd97437148f6ed0f9eb3c38177/pyqwest-0.6.2-cp310-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:c72e470599e37db8e5b9d58f1d944d9d2f3e60280a62dba0453019f3c856b34d", size = 5842408, upload-time = "2026-06-15T07:52:00.484Z" }, + { url = "https://files.pythonhosted.org/packages/32/2e/f5aade7f6c84d6e37351b0e8810628ec7007f35a986a5d63047e7f7ea483/pyqwest-0.6.2-cp310-abi3-win_amd64.whl", hash = "sha256:1fc6a2ec7448cc6cc8861496dc05e8c14035c7da8da16dde8aa656656f5a8523", size = 4696348, upload-time = "2026-06-15T07:52:02.329Z" }, + { url = "https://files.pythonhosted.org/packages/35/75/5591c4087c03fd28f93b0f88061c0b670f5c29fdb3f1dfe5a1cd80f66e32/pyqwest-0.6.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2a0e873a2810464dcc41872ecf8d1b0119d96f86994a0ae82a8f982da3e9a100", size = 5086955, upload-time = "2026-06-15T07:52:04.137Z" }, + { url = "https://files.pythonhosted.org/packages/5c/7b/078011e618214e2d980669eb1ca3ba1c69b30fabcb2102915a92b6e4c777/pyqwest-0.6.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34e423746911a21945f069ef5900a38a17eebd2f07f3c3071870e44034a85402", size = 5490823, upload-time = "2026-06-15T07:52:06.075Z" }, + { url = "https://files.pythonhosted.org/packages/7b/1a/f80f5417b4b4d1057dc46edff23c753171ba095743ec510ca130b4c0e197/pyqwest-0.6.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:526f5f2724ec7148fd0d7bdc53a25fcc961c8288fb271ace12af5db7e77d1644", size = 5520681, upload-time = "2026-06-15T07:52:07.963Z" }, + { url = "https://files.pythonhosted.org/packages/7b/e4/3fb6a3cb5e75855e11c70133fda27fb0f71d816d17c6847b4cff5334636b/pyqwest-0.6.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f47bffb117d42ce835c8f1a84d2b2e92e698907e1fbe796a17c038a8e72ea225", size = 5657487, upload-time = "2026-06-15T07:52:09.875Z" }, + { url = "https://files.pythonhosted.org/packages/c5/0c/cbc68a6dbdf06d479afb07edcc33a201f55030817edbe05d16db34635e1a/pyqwest-0.6.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3628ad3d5a851b69b64b2c510bb8f233be829eb0c653fbe2b14dd6edbca2aeab", size = 5833432, upload-time = "2026-06-15T07:52:11.681Z" }, + { url = "https://files.pythonhosted.org/packages/0b/56/83c23b1f6d3eae4793b827a7959497db9c517900ce47b24eb5b9f04fda21/pyqwest-0.6.2-cp312-cp312-win_amd64.whl", hash = "sha256:dd7fc9e73c99a55f2793b055c04753729764f726c9ac909db78dd28f35dd48b6", size = 4689771, upload-time = "2026-06-15T07:52:13.496Z" }, + { url = "https://files.pythonhosted.org/packages/5a/c8/7460ac69ca76a6e9b382f9b3e048c43d1d58cfdcb427a85e62d4374e1325/pyqwest-0.6.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c863bf92d719f76a5564edb27de072ebf7be4bc243002cafbde48fb1ea7c177c", size = 5086087, upload-time = "2026-06-15T07:52:15.229Z" }, + { url = "https://files.pythonhosted.org/packages/cf/7b/ad94597a15dc168417da75702a5e9aa6b59eb66adbbf668aa1a64c9246d7/pyqwest-0.6.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed8e436415e9b2fa901505f9dfc0838e727b46e5fd82330ac9cef3e4837b89e6", size = 5491566, upload-time = "2026-06-15T07:52:16.991Z" }, + { url = "https://files.pythonhosted.org/packages/c7/17/bd5babca1d66aeb87df87246dfe7ef4da23dfe73f8809bcf7c15f7d393d3/pyqwest-0.6.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:279400267f5ca802af8da86c1dac57c71d64a808e306433085cc10a8c7fef5be", size = 5520820, upload-time = "2026-06-15T07:52:18.726Z" }, + { url = "https://files.pythonhosted.org/packages/a0/80/68bbd131557de18381e69f6168129ee1ca1bc3ccc8954dada2a7bfff8aec/pyqwest-0.6.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:931f343dbbdc6ed2748cb9ca4a27125e24818b2b11e373a61bc314bc8a99f152", size = 5657456, upload-time = "2026-06-15T07:52:20.513Z" }, + { url = "https://files.pythonhosted.org/packages/d3/a7/c8ed8c179eccb62b7bf39b4d328af225a5081b21da5f4332ab5071acb6a1/pyqwest-0.6.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5502b12f68528b7cf6f96f945432715f69e01f29a6e171471e55dfba6598fb7a", size = 5832552, upload-time = "2026-06-15T07:52:22.296Z" }, + { url = "https://files.pythonhosted.org/packages/19/98/d169a06e09d1780d2ba3a00d395832c47a770d0ac4caea6195623d84a8ea/pyqwest-0.6.2-cp313-cp313-win_amd64.whl", hash = "sha256:6e72751cc703232178cdc3373e369e6709c6825b6c2dee1532febd97338e5d81", size = 4689388, upload-time = "2026-06-15T07:52:24.164Z" }, + { url = "https://files.pythonhosted.org/packages/27/7e/26da32e3e16af88401dbe9ab781ac1ac7fd5e6ba8c70c03126997cc742c6/pyqwest-0.6.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:06f467cce2eaaa024fbcf39eefb634bc373ccec40f70376529b4f1bc87cc78c3", size = 5089084, upload-time = "2026-06-15T07:52:26.378Z" }, + { url = "https://files.pythonhosted.org/packages/f5/98/1c4c4cd2a3a890314e1e2af9d02409a0ed83b21845b44024506a6bcec264/pyqwest-0.6.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8619aee2b028bd220d527c8682206b5c74e74417d0c83c16e1e58d6ab4e6758", size = 5496927, upload-time = "2026-06-15T07:52:28.462Z" }, + { url = "https://files.pythonhosted.org/packages/67/8f/01aec37fc3e7c9ac61f831935ef680e1698aef3dcb931fd566445aab01a2/pyqwest-0.6.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ebbef2147b1b1b76b2cd3a576cdd5378a62dd2f65f2389bb00a291b867f7c70a", size = 5525409, upload-time = "2026-06-15T07:52:30.528Z" }, + { url = "https://files.pythonhosted.org/packages/d6/aa/59d8866b421acac8331ed48dbc9ed616d2386690f98d22891dbb443ba48f/pyqwest-0.6.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:9aa73cadfbf6eb96af80ec3d77bf9c212a170b5c19386f754889b7640b65b91d", size = 5663185, upload-time = "2026-06-15T07:52:32.38Z" }, + { url = "https://files.pythonhosted.org/packages/df/dd/50c472f24ae6ffd028395a811b043a42d2d3cba0cdc0ae06a2735987770a/pyqwest-0.6.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:393753384ac20d94f3241cbcf022699e7672ed1eaa64262ce5550e2602fe744d", size = 5839754, upload-time = "2026-06-15T07:52:34.284Z" }, + { url = "https://files.pythonhosted.org/packages/66/d7/056b16c56541fa17fdf64c832a1c7979cf9fd9b1f16fdb7179042758e2c6/pyqwest-0.6.2-cp314-cp314-win_amd64.whl", hash = "sha256:de349a0b198dfd32aef63065ac1360fa8ce0ef6bba389970e54d682fa3a21e62", size = 4704432, upload-time = "2026-06-15T07:52:36.369Z" }, + { url = "https://files.pythonhosted.org/packages/bc/d7/92a51c7251edb072342fdcec19aa8fff2a744e55844402f53ec8de9e7919/pyqwest-0.6.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:244a327ef4f5bed2675a5bc30455bc05053f89d2afa61673a564b9393be599f3", size = 5083571, upload-time = "2026-06-15T07:52:38.263Z" }, + { url = "https://files.pythonhosted.org/packages/33/07/b30b2b89a96e6ecdb74a528e6203eddffdeb8bc18d56d9c34908addf1011/pyqwest-0.6.2-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26b508b2d9442828d878faa60d82f6e9a71e107e8ed52c2e6df5e92acbb3cf68", size = 5488925, upload-time = "2026-06-15T07:52:40.386Z" }, + { url = "https://files.pythonhosted.org/packages/cc/9b/f88816ebc3643f6598c43f7ed6e38a75264db15321b11b1d2d40cbcb002d/pyqwest-0.6.2-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:57c9b73d427a774b67bdb2b8cec2b2425d4460d5bd892be586bbcc54a37a8488", size = 5522569, upload-time = "2026-06-15T07:52:42.364Z" }, + { url = "https://files.pythonhosted.org/packages/5a/29/286b56183d9a70e06fca4e083d765f8c2022bfce81787d9bc9218bb818dd/pyqwest-0.6.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:35317d7023f45d202bc32d931af37f385cc3161ff33e696e2d11e5362ae6621e", size = 5651779, upload-time = "2026-06-15T07:52:44.548Z" }, + { url = "https://files.pythonhosted.org/packages/e4/f0/6615b09f0a061a20c4e53baa28bf1d6328e16caf8fbc2c94f98cec46ece5/pyqwest-0.6.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:09c42938376657e348ec1778daeb84400b399e95a44e85feedbdbdc396d720d9", size = 5831037, upload-time = "2026-06-15T07:52:46.568Z" }, + { url = "https://files.pythonhosted.org/packages/7f/38/d85140144d28ea8963ae81d60393d91bafc08087cce2c1a807f8e7870f8c/pyqwest-0.6.2-cp314-cp314t-win_amd64.whl", hash = "sha256:3d842368f4322ebad4ca5f1edf6955230207f05f06e43ba7ac4c8d8a57cf022f", size = 4693774, upload-time = "2026-06-15T07:52:48.81Z" }, + { url = "https://files.pythonhosted.org/packages/cc/ad/985bce113517df2f22f33010b422316f18147611e4f1a6367ad17961d83d/pyqwest-0.6.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:dfd110da1ebf8c78bafac7ad853e45b42f7324c699a8bbb712cd8d870c9b5f86", size = 5105913, upload-time = "2026-06-15T07:52:50.984Z" }, + { url = "https://files.pythonhosted.org/packages/27/5a/b57517f4bb58809c6172dbb50adbf4e3ffbe507bd6f8ae5702de7ee2b407/pyqwest-0.6.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dda5b2aa9ba1d0ce9f0472f79c82b1b73be8b98009d9024013bd2805ab6b6a4", size = 5514329, upload-time = "2026-06-15T07:52:53.018Z" }, + { url = "https://files.pythonhosted.org/packages/f2/78/77556be672170d158fd9f4d61454d95b78f40a7d1be081113660eb869b9e/pyqwest-0.6.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21c9f716159dbcec1ebd74d1a338b2a8ca9ec3f4364a0a0816f668e4147f4975", size = 5531376, upload-time = "2026-06-15T07:52:55.007Z" }, + { url = "https://files.pythonhosted.org/packages/dd/4c/7f8a24f66640ab481188ebd1dd0f29ddeb905ef05112548d07813e65c8b6/pyqwest-0.6.2-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:34b73a96721673cfe8948e05299a22b91f6bd4f98a3414037e1a2970059658e0", size = 5677824, upload-time = "2026-06-15T07:52:56.936Z" }, + { url = "https://files.pythonhosted.org/packages/a1/3f/6b116c1220e2f857106edc8ddf84e32da59800a194b38283f74ac2ec34b8/pyqwest-0.6.2-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:dcba03d13c98cea676a3ff523a81610807b315c78f8d557b4f09874571cb4ec9", size = 5846895, upload-time = "2026-06-15T07:52:59.094Z" }, + { url = "https://files.pythonhosted.org/packages/2e/d7/5bfd3659d78d349ff7de5efeb5451242b12be7bca303a0b1b302c9d233ce/pyqwest-0.6.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:5499c229cc6627341f179d2be43f8c4fad878146a0c47d47b9fb3ff11ba8cbd9", size = 4705345, upload-time = "2026-06-15T07:53:00.872Z" }, ] [[package]] name = "pytest" -version = "9.0.3" +version = "9.1.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, @@ -815,9 +813,9 @@ dependencies = [ { name = "pygments" }, { name = "tomli", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7d/0d/549bd94f1a0a402dc8cf64563a117c0f3765662e2e668477624baeec44d5/pytest-9.0.3.tar.gz", hash = "sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c", size = 1572165, upload-time = "2026-04-07T17:16:18.027Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e4/47/b9efed96c114afcfa3c9d3fe98a76a1d14c74a9e266d397cf6eb64be5e01/pytest-9.1.1.tar.gz", hash = "sha256:1088fbde8f2b49d95a549a195707afa7a76a3ce9bcadc26b6d71f0ffda5fe313", size = 1636369, upload-time = "2026-06-19T10:58:32.857Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d4/24/a372aaf5c9b7208e7112038812994107bc65a84cd00e0354a88c2c77a617/pytest-9.0.3-py3-none-any.whl", hash = "sha256:2c5efc453d45394fdd706ade797c0a81091eccd1d6e4bccfcd476e2b8e0ab5d9", size = 375249, upload-time = "2026-04-07T17:16:16.13Z" }, + { url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386536, upload-time = "2026-06-19T10:58:31.347Z" }, ] [[package]] @@ -831,27 +829,27 @@ wheels = [ [[package]] name = "ruff" -version = "0.15.15" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/84/6f/a76f7d96e5c962f5b69cee865e49c15c1116897c01990faa8a57edb62e7f/ruff-0.15.15.tar.gz", hash = "sha256:b8dff018130b46d8e5bf0f926ef6b60cf871d6d5ae45fc9334e09632daa741d6", size = 4706985, upload-time = "2026-05-28T14:16:57.784Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fa/9d/3a45c05b8ab04b4705989de70a79008e27c8003296a0feaee9edc18dd7e9/ruff-0.15.15-py3-none-linux_armv6l.whl", hash = "sha256:cf93e5388f412e1b108b1f8b34a6e036b70fe8aff89393befad96fe48670311b", size = 10710652, upload-time = "2026-05-28T14:16:06.701Z" }, - { url = "https://files.pythonhosted.org/packages/05/66/da974431624bf3b49f6ee1f9543c02d929ff1cba78b0d5a79c38cf21f744/ruff-0.15.15-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ac5a646d1f6a7dadd5d50842dae2c1f9862ac887ef5d1b1375e02def791fde6e", size = 11096615, upload-time = "2026-05-28T14:16:23.313Z" }, - { url = "https://files.pythonhosted.org/packages/8c/09/7443452e5d290230a712103f2fdceeef7184f3ec99a2bd01c8be78aaceb5/ruff-0.15.15-py3-none-macosx_11_0_arm64.whl", hash = "sha256:77d955a431430c66f72dd94e379ad38a16daea3d25094872ac4edf9e797be530", size = 10436683, upload-time = "2026-05-28T14:16:40.974Z" }, - { url = "https://files.pythonhosted.org/packages/53/01/d330c26a57fa4f3943a14424904027428315b700fe4d14a84bb123a649e5/ruff-0.15.15-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7614ee79c69788cf6cedd568069ade9cecc22a1ad20494efe8d0c9ebb4b622d4", size = 10769064, upload-time = "2026-05-28T14:16:28.905Z" }, - { url = "https://files.pythonhosted.org/packages/1d/85/cc8770f8bdff541b1da8392d1634141fe4a0e3f4ee596605959b7906c27f/ruff-0.15.15-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3cdb1679e06a1f6b47bc384714ae96f6e2fb65ca441eb78c43d2ca554176ce1f", size = 10511987, upload-time = "2026-05-28T14:16:43.732Z" }, - { url = "https://files.pythonhosted.org/packages/7c/29/8c190c1472b63013583ba391f3342036e02010544c1270455ed8e519bdf3/ruff-0.15.15-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2728b93d7b23a603ea2c0ac6eb73d760bd38ec9de35f35fb41e18f7a3fee7622", size = 11275100, upload-time = "2026-05-28T14:16:55.244Z" }, - { url = "https://files.pythonhosted.org/packages/9f/6b/7e145ce2cc8e63d6834eca03d83a0e18d121def5c69f91b4cf4011ed4879/ruff-0.15.15-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:be582fcc0db438902c7792b08d6ddf6c9b9e21addaa10092c2c741cfb09e5a45", size = 12176903, upload-time = "2026-05-28T14:16:14.368Z" }, - { url = "https://files.pythonhosted.org/packages/80/a3/d5974637f68e451f7fadf015cf3101d1cd7d8ba5027cffe0b9e3826ebe6b/ruff-0.15.15-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7aa77465b8ecaf1a27bea098d696f7fed5e1eccbd10b321b682d6de586ae5627", size = 11404550, upload-time = "2026-05-28T14:16:20.138Z" }, - { url = "https://files.pythonhosted.org/packages/fe/1c/e6e5e568f22be4fb05d6244234aba384c06b451252453b821e1a529263cf/ruff-0.15.15-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48decfa11d740de4889de623be1463308346312f2409a56e24aa280c86162dc4", size = 11382027, upload-time = "2026-05-28T14:16:46.615Z" }, - { url = "https://files.pythonhosted.org/packages/1d/01/170921b49fcd2e8858825593f91cf7146c3e40a5c3e6df763e4bb0484dde/ruff-0.15.15-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:a5015088452ca0081387063649ec67f06d3d1d6b8b936a1f836b5e9657ecd48c", size = 11366041, upload-time = "2026-05-28T14:16:26.247Z" }, - { url = "https://files.pythonhosted.org/packages/87/54/a7bad711d7de93254e15e06a4c375b89a03d18de45d3e5dcc86a4472fb1a/ruff-0.15.15-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:f5294aab6356c81600fcdea3a62bb1b924dfd5e91767c12318d3f68f86af57cd", size = 10741795, upload-time = "2026-05-28T14:16:17.11Z" }, - { url = "https://files.pythonhosted.org/packages/c9/31/38c075963668f8b41c6914ee0f6f318727fbe30ab9145cb29e6df464c5fa/ruff-0.15.15-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:db5bd4d802415cca656dc1616070b725952d6ae95eb5d4831e49fbd94a38f75f", size = 10511117, upload-time = "2026-05-28T14:16:31.767Z" }, - { url = "https://files.pythonhosted.org/packages/9d/96/6ff689e1f7e375d1d97075eca022f74c2bab59554a432fe4d2e6f091986a/ruff-0.15.15-py3-none-musllinux_1_2_i686.whl", hash = "sha256:587a6278ed42059191c1a466e490bd7930fb50bd2e255398bc29616c895a61cb", size = 10994867, upload-time = "2026-05-28T14:16:35.149Z" }, - { url = "https://files.pythonhosted.org/packages/c3/c2/5dce0ab9f92a8d534fa62b9bf9caca3eddb8c1a81b616f5e195ada4f0d6e/ruff-0.15.15-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:df0c1c084f5f4be9812f61518a45c440d3c30d69ce4bf6c5270e66d38338f02a", size = 11482101, upload-time = "2026-05-28T14:16:49.598Z" }, - { url = "https://files.pythonhosted.org/packages/b1/c0/1003b60edd697c649faf61f1a34094b1abb38fb3d1181e3f895781250a08/ruff-0.15.15-py3-none-win32.whl", hash = "sha256:29428ea79694afbe756d45fd59b36f22b6b020dc0443cf7de0173046236964b9", size = 10716774, upload-time = "2026-05-28T14:16:52.337Z" }, - { url = "https://files.pythonhosted.org/packages/02/a8/1269eddd6945a06c23f055ef7848886e37cf9d6a8bebb386a3115f01470c/ruff-0.15.15-py3-none-win_amd64.whl", hash = "sha256:8df0323902e15e24bc4bf246da830573d3cf3352bd0b9a164eab335d111ff4a4", size = 11868463, upload-time = "2026-05-28T14:16:11.333Z" }, - { url = "https://files.pythonhosted.org/packages/4e/b2/920464c907b191e37469d477a1aa8bc048b8f36c4c1610dfa4ab87b39e18/ruff-0.15.15-py3-none-win_arm64.whl", hash = "sha256:3c8ceca6792f38196b8f589bc92eccd03eef286602da92e5dc05cc42ef6441b7", size = 11138498, upload-time = "2026-05-28T14:16:38.425Z" }, +version = "0.15.20" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/dc/35b341fc554ba02f217fc10da57d1a75168cfbcf75b0ef2202176d4c4f2d/ruff-0.15.20.tar.gz", hash = "sha256:1416eb04349192646b54de98f146c4f59afe37d0decfc02c3cbbf396f3a28566", size = 4755489, upload-time = "2026-06-25T17:20:37.578Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/d9/2d5014f0253ba541d2061d9fa7193f48e941c8b21bb88a7ff9bbe0bd0596/ruff-0.15.20-py3-none-linux_armv6l.whl", hash = "sha256:00e188c53e499c3c1637f73c91dcf2fb56d576cab76ce1be50a27c4e80e37078", size = 10839665, upload-time = "2026-06-25T17:19:44.702Z" }, + { url = "https://files.pythonhosted.org/packages/c6/d3/ac1798ba64f670698867fcfc591d50e7e421bef137db564858f619a30fcf/ruff-0.15.20-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:9ebd1fd9b9c95fc0bd7b2761aebec1f030013d2e193a2901b224af68fe47251b", size = 11208649, upload-time = "2026-06-25T17:19:48.787Z" }, + { url = "https://files.pythonhosted.org/packages/47/47/d3ac899991202095dfcf3d5176be4272642be3cf981a2f1a30f72a2afb95/ruff-0.15.20-py3-none-macosx_11_0_arm64.whl", hash = "sha256:c5b16cdd67ca108185cd36dce98c576350c03b1660a751de725fb049193a0632", size = 10622638, upload-time = "2026-06-25T17:19:51.354Z" }, + { url = "https://files.pythonhosted.org/packages/33/13/4e043fe30aa94d4ff5213a9881fc296d12960f5971b234a5263fdc225312/ruff-0.15.20-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3413bb3c3d2ca6a8208f1f4809cd2dca3c6de6d0b491c0e70847672bde6e6efd", size = 10984227, upload-time = "2026-06-25T17:19:54.044Z" }, + { url = "https://files.pythonhosted.org/packages/76/e6/92e7bf40388bc5800073b96564f56264f7e48bfd1a498f5ced6ae6d5a769/ruff-0.15.20-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd7ec42b3bb3da066488db093308a69c4ac5ee6d2af333a86ba6e2eb2e7dd44b", size = 10622882, upload-time = "2026-06-25T17:19:57.037Z" }, + { url = "https://files.pythonhosted.org/packages/13/7a/43460be3f24495a3aa46d4b16873e2c4941b3b5f0b00cf88c03b7b94b339/ruff-0.15.20-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1a36ad0eb77fba9aabfb69ede54de6f376d04ac18ebea022847046d340a8267", size = 11474808, upload-time = "2026-06-25T17:20:00.357Z" }, + { url = "https://files.pythonhosted.org/packages/27/a0/f37077884873221c6b33b4ab49eb18f9f88e54a16a25a5bca59bef46dd66/ruff-0.15.20-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b6df3b1e4610432f0386dba04d853b5f08cbbc903410c6fcc02f620f05aff53c", size = 12293094, upload-time = "2026-06-25T17:20:03.446Z" }, + { url = "https://files.pythonhosted.org/packages/a6/74/165545b60256a9704c21ac0ec4a0d07933b320812f9584836c9f4aca4292/ruff-0.15.20-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e89f198a1ea6ef0d727c1cf16088bc91a6cb0ab947dedc966715691647186eae", size = 11526176, upload-time = "2026-06-25T17:20:06.301Z" }, + { url = "https://files.pythonhosted.org/packages/86/b1/a976a136d40ade83ce743578399865f57001003a409acadc0ecbb3051082/ruff-0.15.20-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309809086c2acb67624950a3c8133e80f32d0d3e27106c0cd60ff26657c9f24b", size = 11520767, upload-time = "2026-06-25T17:20:09.191Z" }, + { url = "https://files.pythonhosted.org/packages/19/0f/f032696cb01c9b54c0263fa393474d7758f1cdc021a01b04e3cbc2500999/ruff-0.15.20-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:2d2374caa2f2c2f9e2b7da0a50802cfb8b79f55a9b5e49379f564544fbf56487", size = 11500132, upload-time = "2026-06-25T17:20:13.602Z" }, + { url = "https://files.pythonhosted.org/packages/4b/f4/51b1a14bc69e8c224b15dab9cce8e99b425e0455d462caa2b3c9be2b6a8e/ruff-0.15.20-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:a1ed17b65293e0c2f22fc387bc13198a5de94bf4429589b0ff6946b0feaf21a3", size = 10943828, upload-time = "2026-06-25T17:20:16.635Z" }, + { url = "https://files.pythonhosted.org/packages/71/4b/fe267640783cd02bf6c5cc290b1df1051be2ec294c678b5c15fe19e52343/ruff-0.15.20-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:f701305e66b38ea6c91882490eb73459796808e4c6362a1b765255e0cdcd4053", size = 10645418, upload-time = "2026-06-25T17:20:19.4Z" }, + { url = "https://files.pythonhosted.org/packages/b0/c0/a65aa4ec2f5e87a1df32dc3ec1fede434fe3dfd5cbcf3b503cafc676ab54/ruff-0.15.20-py3-none-musllinux_1_2_i686.whl", hash = "sha256:5b9c0c367ad8e5d0d5b5b8537864c469a0a0e55417aadfbeca41fa61333be9f4", size = 11211770, upload-time = "2026-06-25T17:20:22.033Z" }, + { url = "https://files.pythonhosted.org/packages/5a/a4/0caa331d954ae2723d729d351c989cb4ca8b6077d5c6c2cb6de75e98c041/ruff-0.15.20-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:01cc00dd58f0df339d0e902219dd53990ea99996a0344e5d9cc8d45d5307e460", size = 11618698, upload-time = "2026-06-25T17:20:25.259Z" }, + { url = "https://files.pythonhosted.org/packages/10/9b/5f14927848d2fd4aa891fd88d883788c5a7baba561c7874732364045708c/ruff-0.15.20-py3-none-win32.whl", hash = "sha256:ed65ef510e43a137207e0f01cfcf998aeddb1aeeda5c9d35023e910284d7cf21", size = 10857322, upload-time = "2026-06-25T17:20:28.612Z" }, + { url = "https://files.pythonhosted.org/packages/fa/f0/fe47c501f9dea92a26d788ff98bb5d92ed4cb4c88792c5c88af6b697dc8e/ruff-0.15.20-py3-none-win_amd64.whl", hash = "sha256:a525c81c70fb0380344dd1d8745d8cc1c890b7fc94a58d5a07bd8eb9557b8415", size = 11993274, upload-time = "2026-06-25T17:20:31.871Z" }, + { url = "https://files.pythonhosted.org/packages/d7/2b/9555445e1201d92b3195f45cdb153a0b68f24e0a4273f6e3d5ab46e212bb/ruff-0.15.20-py3-none-win_arm64.whl", hash = "sha256:2f5b2a6d614e8700388806a14996c40fab2c47b819ef57d790a34878858ed9ca", size = 11343498, upload-time = "2026-06-25T17:20:35.03Z" }, ] [[package]]