diff --git a/sdk/pyproject.toml b/sdk/pyproject.toml index 6d1cdb9..f84486d 100644 --- a/sdk/pyproject.toml +++ b/sdk/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "opendecree" -version = "0.2.0a1" +version = "0.3.0a1" description = "Python SDK for OpenDecree — schema-driven configuration management (alpha)" readme = "README.md" license = "Apache-2.0" diff --git a/sdk/src/opendecree/_generated/centralconfig/v1/config_service_pb2.py b/sdk/src/opendecree/_generated/centralconfig/v1/config_service_pb2.py index 7dcbb45..dd82fc7 100644 --- a/sdk/src/opendecree/_generated/centralconfig/v1/config_service_pb2.py +++ b/sdk/src/opendecree/_generated/centralconfig/v1/config_service_pb2.py @@ -26,7 +26,7 @@ from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%centralconfig/v1/config_service.proto\x12\x10\x63\x65ntralconfig.v1\x1a\x1c\x63\x65ntralconfig/v1/types.proto\x1a\x1cgoogle/api/annotations.proto\"e\n\x10GetConfigRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x14\n\x07version\x18\x02 \x01(\x05H\x00\x88\x01\x01\x12\x1c\n\x14include_descriptions\x18\x03 \x01(\x08\x42\n\n\x08_version\"=\n\x11GetConfigResponse\x12(\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x18.centralconfig.v1.Config\"w\n\x0fGetFieldRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x12\n\nfield_path\x18\x02 \x01(\t\x12\x14\n\x07version\x18\x03 \x01(\x05H\x00\x88\x01\x01\x12\x1b\n\x13include_description\x18\x04 \x01(\x08\x42\n\n\x08_version\"@\n\x10GetFieldResponse\x12,\n\x05value\x18\x01 \x01(\x0b\x32\x1d.centralconfig.v1.ConfigValue\"z\n\x10GetFieldsRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x13\n\x0b\x66ield_paths\x18\x02 \x03(\t\x12\x14\n\x07version\x18\x03 \x01(\x05H\x00\x88\x01\x01\x12\x1c\n\x14include_descriptions\x18\x04 \x01(\x08\x42\n\n\x08_version\"B\n\x11GetFieldsResponse\x12-\n\x06values\x18\x01 \x03(\x0b\x32\x1d.centralconfig.v1.ConfigValue\"\xfb\x01\n\x0fSetFieldRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x12\n\nfield_path\x18\x02 \x01(\t\x12+\n\x05value\x18\x03 \x01(\x0b\x32\x1c.centralconfig.v1.TypedValue\x12\x1e\n\x11\x65xpected_checksum\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x05 \x01(\tH\x01\x88\x01\x01\x12\x1e\n\x11value_description\x18\x06 \x01(\tH\x02\x88\x01\x01\x42\x14\n\x12_expected_checksumB\x0e\n\x0c_descriptionB\x14\n\x12_value_description\"K\n\x10SetFieldResponse\x12\x37\n\x0e\x63onfig_version\x18\x01 \x01(\x0b\x32\x1f.centralconfig.v1.ConfigVersion\"\x7f\n\x10SetFieldsRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12.\n\x07updates\x18\x02 \x03(\x0b\x32\x1d.centralconfig.v1.FieldUpdate\x12\x18\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"L\n\x11SetFieldsResponse\x12\x37\n\x0e\x63onfig_version\x18\x01 \x01(\x0b\x32\x1f.centralconfig.v1.ConfigVersion\"\xba\x01\n\x0b\x46ieldUpdate\x12\x12\n\nfield_path\x18\x01 \x01(\t\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.centralconfig.v1.TypedValue\x12\x1e\n\x11\x65xpected_checksum\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x1e\n\x11value_description\x18\x04 \x01(\tH\x01\x88\x01\x01\x42\x14\n\x12_expected_checksumB\x14\n\x12_value_description\"O\n\x13ListVersionsRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\t\"b\n\x14ListVersionsResponse\x12\x31\n\x08versions\x18\x01 \x03(\x0b\x32\x1f.centralconfig.v1.ConfigVersion\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"7\n\x11GetVersionRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\x05\"M\n\x12GetVersionResponse\x12\x37\n\x0e\x63onfig_version\x18\x01 \x01(\x0b\x32\x1f.centralconfig.v1.ConfigVersion\"h\n\x18RollbackToVersionRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\x05\x12\x18\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"T\n\x19RollbackToVersionResponse\x12\x37\n\x0e\x63onfig_version\x18\x01 \x01(\x0b\x32\x1f.centralconfig.v1.ConfigVersion\":\n\x10SubscribeRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x13\n\x0b\x66ield_paths\x18\x02 \x03(\t\"C\n\x11SubscribeResponse\x12.\n\x06\x63hange\x18\x01 \x01(\x0b\x32\x1e.centralconfig.v1.ConfigChange\"J\n\x13\x45xportConfigRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x14\n\x07version\x18\x02 \x01(\x05H\x00\x88\x01\x01\x42\n\n\x08_version\",\n\x14\x45xportConfigResponse\x12\x14\n\x0cyaml_content\x18\x01 \x01(\x0c\"\x94\x01\n\x13ImportConfigRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x14\n\x0cyaml_content\x18\x02 \x01(\x0c\x12\x18\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00\x88\x01\x01\x12*\n\x04mode\x18\x04 \x01(\x0e\x32\x1c.centralconfig.v1.ImportModeB\x0e\n\x0c_description\"O\n\x14ImportConfigResponse\x12\x37\n\x0e\x63onfig_version\x18\x01 \x01(\x0b\x32\x1f.centralconfig.v1.ConfigVersion*s\n\nImportMode\x12\x1b\n\x17IMPORT_MODE_UNSPECIFIED\x10\x00\x12\x15\n\x11IMPORT_MODE_MERGE\x10\x01\x12\x17\n\x13IMPORT_MODE_REPLACE\x10\x02\x12\x18\n\x14IMPORT_MODE_DEFAULTS\x10\x03\x32\xb6\x0c\n\rConfigService\x12|\n\tGetConfig\x12\".centralconfig.v1.GetConfigRequest\x1a#.centralconfig.v1.GetConfigResponse\"&\x82\xd3\xe4\x93\x02 \x12\x1e/v1/tenants/{tenant_id}/config\x12\x8d\x01\n\x08GetField\x12!.centralconfig.v1.GetFieldRequest\x1a\".centralconfig.v1.GetFieldResponse\":\x82\xd3\xe4\x93\x02\x34\x12\x32/v1/tenants/{tenant_id}/config/fields/{field_path}\x12\x88\x01\n\tGetFields\x12\".centralconfig.v1.GetFieldsRequest\x1a#.centralconfig.v1.GetFieldsResponse\"2\x82\xd3\xe4\x93\x02,\"\'/v1/tenants/{tenant_id}/config:batchGet:\x01*\x12\x90\x01\n\x08SetField\x12!.centralconfig.v1.SetFieldRequest\x1a\".centralconfig.v1.SetFieldResponse\"=\x82\xd3\xe4\x93\x02\x37\x1a\x32/v1/tenants/{tenant_id}/config/fields/{field_path}:\x01*\x12\x88\x01\n\tSetFields\x12\".centralconfig.v1.SetFieldsRequest\x1a#.centralconfig.v1.SetFieldsResponse\"2\x82\xd3\xe4\x93\x02,\"\'/v1/tenants/{tenant_id}/config:batchSet:\x01*\x12\x87\x01\n\x0cListVersions\x12%.centralconfig.v1.ListVersionsRequest\x1a&.centralconfig.v1.ListVersionsResponse\"(\x82\xd3\xe4\x93\x02\"\x12 /v1/tenants/{tenant_id}/versions\x12\x8b\x01\n\nGetVersion\x12#.centralconfig.v1.GetVersionRequest\x1a$.centralconfig.v1.GetVersionResponse\"2\x82\xd3\xe4\x93\x02,\x12*/v1/tenants/{tenant_id}/versions/{version}\x12\xa9\x01\n\x11RollbackToVersion\x12*.centralconfig.v1.RollbackToVersionRequest\x1a+.centralconfig.v1.RollbackToVersionResponse\";\x82\xd3\xe4\x93\x02\x35\"3/v1/tenants/{tenant_id}/versions/{version}:rollback\x12\x88\x01\n\tSubscribe\x12\".centralconfig.v1.SubscribeRequest\x1a#.centralconfig.v1.SubscribeResponse\"0\x82\xd3\xe4\x93\x02*\x12(/v1/tenants/{tenant_id}/config:subscribe0\x01\x12\x8c\x01\n\x0c\x45xportConfig\x12%.centralconfig.v1.ExportConfigRequest\x1a&.centralconfig.v1.ExportConfigResponse\"-\x82\xd3\xe4\x93\x02\'\x12%/v1/tenants/{tenant_id}/config/export\x12\x8f\x01\n\x0cImportConfig\x12%.centralconfig.v1.ImportConfigRequest\x1a&.centralconfig.v1.ImportConfigResponse\"0\x82\xd3\xe4\x93\x02*\"%/v1/tenants/{tenant_id}/config/import:\x01*b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%centralconfig/v1/config_service.proto\x12\x10\x63\x65ntralconfig.v1\x1a\x1c\x63\x65ntralconfig/v1/types.proto\x1a\x1cgoogle/api/annotations.proto\"e\n\x10GetConfigRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x14\n\x07version\x18\x02 \x01(\x05H\x00\x88\x01\x01\x12\x1c\n\x14include_descriptions\x18\x03 \x01(\x08\x42\n\n\x08_version\"=\n\x11GetConfigResponse\x12(\n\x06\x63onfig\x18\x01 \x01(\x0b\x32\x18.centralconfig.v1.Config\"w\n\x0fGetFieldRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x12\n\nfield_path\x18\x02 \x01(\t\x12\x14\n\x07version\x18\x03 \x01(\x05H\x00\x88\x01\x01\x12\x1b\n\x13include_description\x18\x04 \x01(\x08\x42\n\n\x08_version\"@\n\x10GetFieldResponse\x12,\n\x05value\x18\x01 \x01(\x0b\x32\x1d.centralconfig.v1.ConfigValue\"z\n\x10GetFieldsRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x13\n\x0b\x66ield_paths\x18\x02 \x03(\t\x12\x14\n\x07version\x18\x03 \x01(\x05H\x00\x88\x01\x01\x12\x1c\n\x14include_descriptions\x18\x04 \x01(\x08\x42\n\n\x08_version\"B\n\x11GetFieldsResponse\x12-\n\x06values\x18\x01 \x03(\x0b\x32\x1d.centralconfig.v1.ConfigValue\"\xfb\x01\n\x0fSetFieldRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x12\n\nfield_path\x18\x02 \x01(\t\x12+\n\x05value\x18\x03 \x01(\x0b\x32\x1c.centralconfig.v1.TypedValue\x12\x1e\n\x11\x65xpected_checksum\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x05 \x01(\tH\x01\x88\x01\x01\x12\x1e\n\x11value_description\x18\x06 \x01(\tH\x02\x88\x01\x01\x42\x14\n\x12_expected_checksumB\x0e\n\x0c_descriptionB\x14\n\x12_value_description\"K\n\x10SetFieldResponse\x12\x37\n\x0e\x63onfig_version\x18\x01 \x01(\x0b\x32\x1f.centralconfig.v1.ConfigVersion\"\x7f\n\x10SetFieldsRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12.\n\x07updates\x18\x02 \x03(\x0b\x32\x1d.centralconfig.v1.FieldUpdate\x12\x18\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"L\n\x11SetFieldsResponse\x12\x37\n\x0e\x63onfig_version\x18\x01 \x01(\x0b\x32\x1f.centralconfig.v1.ConfigVersion\"\xba\x01\n\x0b\x46ieldUpdate\x12\x12\n\nfield_path\x18\x01 \x01(\t\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.centralconfig.v1.TypedValue\x12\x1e\n\x11\x65xpected_checksum\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x1e\n\x11value_description\x18\x04 \x01(\tH\x01\x88\x01\x01\x42\x14\n\x12_expected_checksumB\x14\n\x12_value_description\"O\n\x13ListVersionsRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\t\"b\n\x14ListVersionsResponse\x12\x31\n\x08versions\x18\x01 \x03(\x0b\x32\x1f.centralconfig.v1.ConfigVersion\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"7\n\x11GetVersionRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\x05\"M\n\x12GetVersionResponse\x12\x37\n\x0e\x63onfig_version\x18\x01 \x01(\x0b\x32\x1f.centralconfig.v1.ConfigVersion\"h\n\x18RollbackToVersionRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\x05\x12\x18\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"T\n\x19RollbackToVersionResponse\x12\x37\n\x0e\x63onfig_version\x18\x01 \x01(\x0b\x32\x1f.centralconfig.v1.ConfigVersion\":\n\x10SubscribeRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x13\n\x0b\x66ield_paths\x18\x02 \x03(\t\"C\n\x11SubscribeResponse\x12.\n\x06\x63hange\x18\x01 \x01(\x0b\x32\x1e.centralconfig.v1.ConfigChange\"v\n\x13\x45xportConfigRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x14\n\x07version\x18\x02 \x01(\x05H\x00\x88\x01\x01\x12\x19\n\x0cspec_version\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\n\n\x08_versionB\x0f\n\r_spec_version\",\n\x14\x45xportConfigResponse\x12\x14\n\x0cyaml_content\x18\x01 \x01(\x0c\"\x94\x01\n\x13ImportConfigRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x14\n\x0cyaml_content\x18\x02 \x01(\x0c\x12\x18\n\x0b\x64\x65scription\x18\x03 \x01(\tH\x00\x88\x01\x01\x12*\n\x04mode\x18\x04 \x01(\x0e\x32\x1c.centralconfig.v1.ImportModeB\x0e\n\x0c_description\"O\n\x14ImportConfigResponse\x12\x37\n\x0e\x63onfig_version\x18\x01 \x01(\x0b\x32\x1f.centralconfig.v1.ConfigVersion*s\n\nImportMode\x12\x1b\n\x17IMPORT_MODE_UNSPECIFIED\x10\x00\x12\x15\n\x11IMPORT_MODE_MERGE\x10\x01\x12\x17\n\x13IMPORT_MODE_REPLACE\x10\x02\x12\x18\n\x14IMPORT_MODE_DEFAULTS\x10\x03\x32\xb6\x0c\n\rConfigService\x12|\n\tGetConfig\x12\".centralconfig.v1.GetConfigRequest\x1a#.centralconfig.v1.GetConfigResponse\"&\x82\xd3\xe4\x93\x02 \x12\x1e/v1/tenants/{tenant_id}/config\x12\x8d\x01\n\x08GetField\x12!.centralconfig.v1.GetFieldRequest\x1a\".centralconfig.v1.GetFieldResponse\":\x82\xd3\xe4\x93\x02\x34\x12\x32/v1/tenants/{tenant_id}/config/fields/{field_path}\x12\x88\x01\n\tGetFields\x12\".centralconfig.v1.GetFieldsRequest\x1a#.centralconfig.v1.GetFieldsResponse\"2\x82\xd3\xe4\x93\x02,\"\'/v1/tenants/{tenant_id}/config:batchGet:\x01*\x12\x90\x01\n\x08SetField\x12!.centralconfig.v1.SetFieldRequest\x1a\".centralconfig.v1.SetFieldResponse\"=\x82\xd3\xe4\x93\x02\x37\x1a\x32/v1/tenants/{tenant_id}/config/fields/{field_path}:\x01*\x12\x88\x01\n\tSetFields\x12\".centralconfig.v1.SetFieldsRequest\x1a#.centralconfig.v1.SetFieldsResponse\"2\x82\xd3\xe4\x93\x02,\"\'/v1/tenants/{tenant_id}/config:batchSet:\x01*\x12\x87\x01\n\x0cListVersions\x12%.centralconfig.v1.ListVersionsRequest\x1a&.centralconfig.v1.ListVersionsResponse\"(\x82\xd3\xe4\x93\x02\"\x12 /v1/tenants/{tenant_id}/versions\x12\x8b\x01\n\nGetVersion\x12#.centralconfig.v1.GetVersionRequest\x1a$.centralconfig.v1.GetVersionResponse\"2\x82\xd3\xe4\x93\x02,\x12*/v1/tenants/{tenant_id}/versions/{version}\x12\xa9\x01\n\x11RollbackToVersion\x12*.centralconfig.v1.RollbackToVersionRequest\x1a+.centralconfig.v1.RollbackToVersionResponse\";\x82\xd3\xe4\x93\x02\x35\"3/v1/tenants/{tenant_id}/versions/{version}:rollback\x12\x88\x01\n\tSubscribe\x12\".centralconfig.v1.SubscribeRequest\x1a#.centralconfig.v1.SubscribeResponse\"0\x82\xd3\xe4\x93\x02*\x12(/v1/tenants/{tenant_id}/config:subscribe0\x01\x12\x8c\x01\n\x0c\x45xportConfig\x12%.centralconfig.v1.ExportConfigRequest\x1a&.centralconfig.v1.ExportConfigResponse\"-\x82\xd3\xe4\x93\x02\'\x12%/v1/tenants/{tenant_id}/config/export\x12\x8f\x01\n\x0cImportConfig\x12%.centralconfig.v1.ImportConfigRequest\x1a&.centralconfig.v1.ImportConfigResponse\"0\x82\xd3\xe4\x93\x02*\"%/v1/tenants/{tenant_id}/config/import:\x01*b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -55,8 +55,8 @@ _globals['_CONFIGSERVICE'].methods_by_name['ExportConfig']._serialized_options = b'\202\323\344\223\002\'\022%/v1/tenants/{tenant_id}/config/export' _globals['_CONFIGSERVICE'].methods_by_name['ImportConfig']._loaded_options = None _globals['_CONFIGSERVICE'].methods_by_name['ImportConfig']._serialized_options = b'\202\323\344\223\002*\"%/v1/tenants/{tenant_id}/config/import:\001*' - _globals['_IMPORTMODE']._serialized_start=2383 - _globals['_IMPORTMODE']._serialized_end=2498 + _globals['_IMPORTMODE']._serialized_start=2427 + _globals['_IMPORTMODE']._serialized_end=2542 _globals['_GETCONFIGREQUEST']._serialized_start=119 _globals['_GETCONFIGREQUEST']._serialized_end=220 _globals['_GETCONFIGRESPONSE']._serialized_start=222 @@ -96,13 +96,13 @@ _globals['_SUBSCRIBERESPONSE']._serialized_start=1960 _globals['_SUBSCRIBERESPONSE']._serialized_end=2027 _globals['_EXPORTCONFIGREQUEST']._serialized_start=2029 - _globals['_EXPORTCONFIGREQUEST']._serialized_end=2103 - _globals['_EXPORTCONFIGRESPONSE']._serialized_start=2105 - _globals['_EXPORTCONFIGRESPONSE']._serialized_end=2149 - _globals['_IMPORTCONFIGREQUEST']._serialized_start=2152 - _globals['_IMPORTCONFIGREQUEST']._serialized_end=2300 - _globals['_IMPORTCONFIGRESPONSE']._serialized_start=2302 - _globals['_IMPORTCONFIGRESPONSE']._serialized_end=2381 - _globals['_CONFIGSERVICE']._serialized_start=2501 - _globals['_CONFIGSERVICE']._serialized_end=4091 + _globals['_EXPORTCONFIGREQUEST']._serialized_end=2147 + _globals['_EXPORTCONFIGRESPONSE']._serialized_start=2149 + _globals['_EXPORTCONFIGRESPONSE']._serialized_end=2193 + _globals['_IMPORTCONFIGREQUEST']._serialized_start=2196 + _globals['_IMPORTCONFIGREQUEST']._serialized_end=2344 + _globals['_IMPORTCONFIGRESPONSE']._serialized_start=2346 + _globals['_IMPORTCONFIGRESPONSE']._serialized_end=2425 + _globals['_CONFIGSERVICE']._serialized_start=2545 + _globals['_CONFIGSERVICE']._serialized_end=4135 # @@protoc_insertion_point(module_scope) diff --git a/sdk/src/opendecree/_generated/centralconfig/v1/config_service_pb2.pyi b/sdk/src/opendecree/_generated/centralconfig/v1/config_service_pb2.pyi index 69a4204..9e1766b 100644 --- a/sdk/src/opendecree/_generated/centralconfig/v1/config_service_pb2.pyi +++ b/sdk/src/opendecree/_generated/centralconfig/v1/config_service_pb2.pyi @@ -614,22 +614,34 @@ class ExportConfigRequest(_message.Message): TENANT_ID_FIELD_NUMBER: _builtins.int VERSION_FIELD_NUMBER: _builtins.int + SPEC_VERSION_FIELD_NUMBER: _builtins.int tenant_id: _builtins.str """Tenant ID (UUID).""" version: _builtins.int """Config version to export. If omitted, exports the latest version.""" + spec_version: _builtins.str + """Config-format spec version to emit (e.g. "v1"). When omitted, defaults + to the highest version the server supports. The server returns + InvalidArgument if the requested version is not registered. + """ def __init__( self, *, tenant_id: _builtins.str = ..., version: _builtins.int | None = ..., + spec_version: _builtins.str | None = ..., ) -> None: ... - _HasFieldArgType: _TypeAlias = _typing.Literal["_version", b"_version", "version", b"version"] # noqa: Y015 + _HasFieldArgType: _TypeAlias = _typing.Literal["_spec_version", b"_spec_version", "_version", b"_version", "spec_version", b"spec_version", "version", b"version"] # noqa: Y015 def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... - _ClearFieldArgType: _TypeAlias = _typing.Literal["_version", b"_version", "tenant_id", b"tenant_id", "version", b"version"] # noqa: Y015 + _ClearFieldArgType: _TypeAlias = _typing.Literal["_spec_version", b"_spec_version", "_version", b"_version", "spec_version", b"spec_version", "tenant_id", b"tenant_id", "version", b"version"] # noqa: Y015 def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__spec_version: _TypeAlias = _typing.Literal["spec_version"] # noqa: Y015 + _WhichOneofArgType__spec_version: _TypeAlias = _typing.Literal["_spec_version", b"_spec_version"] # noqa: Y015 _WhichOneofReturnType__version: _TypeAlias = _typing.Literal["version"] # noqa: Y015 _WhichOneofArgType__version: _TypeAlias = _typing.Literal["_version", b"_version"] # noqa: Y015 + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__spec_version) -> _WhichOneofReturnType__spec_version | None: ... + @_typing.overload def WhichOneof(self, oneof_group: _WhichOneofArgType__version) -> _WhichOneofReturnType__version | None: ... Global___ExportConfigRequest: _TypeAlias = ExportConfigRequest # noqa: Y015 diff --git a/sdk/src/opendecree/_generated/centralconfig/v1/schema_service_pb2.py b/sdk/src/opendecree/_generated/centralconfig/v1/schema_service_pb2.py index c2edb18..a834e27 100644 --- a/sdk/src/opendecree/_generated/centralconfig/v1/schema_service_pb2.py +++ b/sdk/src/opendecree/_generated/centralconfig/v1/schema_service_pb2.py @@ -26,7 +26,7 @@ from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%centralconfig/v1/schema_service.proto\x12\x10\x63\x65ntralconfig.v1\x1a\x1c\x63\x65ntralconfig/v1/types.proto\x1a\x1cgoogle/api/annotations.proto\"|\n\x13\x43reateSchemaRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x18\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00\x88\x01\x01\x12-\n\x06\x66ields\x18\x03 \x03(\x0b\x32\x1d.centralconfig.v1.SchemaFieldB\x0e\n\x0c_description\"@\n\x14\x43reateSchemaResponse\x12(\n\x06schema\x18\x01 \x01(\x0b\x32\x18.centralconfig.v1.Schema\"@\n\x10GetSchemaRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x14\n\x07version\x18\x02 \x01(\x05H\x00\x88\x01\x01\x42\n\n\x08_version\"=\n\x11GetSchemaResponse\x12(\n\x06schema\x18\x01 \x01(\x0b\x32\x18.centralconfig.v1.Schema\"e\n\x12ListSchemasRequest\x12\x18\n\x0bname_filter\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\tB\x0e\n\x0c_name_filter\"Y\n\x13ListSchemasResponse\x12)\n\x07schemas\x18\x01 \x03(\x0b\x32\x18.centralconfig.v1.Schema\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"\xa1\x01\n\x13UpdateSchemaRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12 \n\x13version_description\x18\x02 \x01(\tH\x00\x88\x01\x01\x12-\n\x06\x66ields\x18\x03 \x03(\x0b\x32\x1d.centralconfig.v1.SchemaField\x12\x15\n\rremove_fields\x18\x04 \x03(\tB\x16\n\x14_version_description\"@\n\x14UpdateSchemaResponse\x12(\n\x06schema\x18\x01 \x01(\x0b\x32\x18.centralconfig.v1.Schema\"!\n\x13\x44\x65leteSchemaRequest\x12\n\n\x02id\x18\x01 \x01(\t\"\x16\n\x14\x44\x65leteSchemaResponse\"3\n\x14PublishSchemaRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\x05\"A\n\x15PublishSchemaResponse\x12(\n\x06schema\x18\x01 \x01(\x0b\x32\x18.centralconfig.v1.Schema\"N\n\x13\x43reateTenantRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tschema_id\x18\x02 \x01(\t\x12\x16\n\x0eschema_version\x18\x03 \x01(\x05\"@\n\x14\x43reateTenantResponse\x12(\n\x06tenant\x18\x01 \x01(\x0b\x32\x18.centralconfig.v1.Tenant\"\x1e\n\x10GetTenantRequest\x12\n\n\x02id\x18\x01 \x01(\t\"=\n\x11GetTenantResponse\x12(\n\x06tenant\x18\x01 \x01(\x0b\x32\x18.centralconfig.v1.Tenant\"a\n\x12ListTenantsRequest\x12\x16\n\tschema_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\tB\x0c\n\n_schema_id\"Y\n\x13ListTenantsResponse\x12)\n\x07tenants\x18\x01 \x03(\x0b\x32\x18.centralconfig.v1.Tenant\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"m\n\x13UpdateTenantRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\x04name\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x1b\n\x0eschema_version\x18\x03 \x01(\x05H\x01\x88\x01\x01\x42\x07\n\x05_nameB\x11\n\x0f_schema_version\"@\n\x14UpdateTenantResponse\x12(\n\x06tenant\x18\x01 \x01(\x0b\x32\x18.centralconfig.v1.Tenant\"!\n\x13\x44\x65leteTenantRequest\x12\n\n\x02id\x18\x01 \x01(\t\"\x16\n\x14\x44\x65leteTenantResponse\"P\n\x10LockFieldRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x12\n\nfield_path\x18\x02 \x01(\t\x12\x15\n\rlocked_values\x18\x03 \x03(\t\"\x13\n\x11LockFieldResponse\";\n\x12UnlockFieldRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x12\n\nfield_path\x18\x02 \x01(\t\"\x15\n\x13UnlockFieldResponse\"*\n\x15ListFieldLocksRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\"D\n\x16ListFieldLocksResponse\x12*\n\x05locks\x18\x01 \x03(\x0b\x32\x1b.centralconfig.v1.FieldLock\"C\n\x13\x45xportSchemaRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x14\n\x07version\x18\x02 \x01(\x05H\x00\x88\x01\x01\x42\n\n\x08_version\",\n\x14\x45xportSchemaResponse\x12\x14\n\x0cyaml_content\x18\x01 \x01(\x0c\"A\n\x13ImportSchemaRequest\x12\x14\n\x0cyaml_content\x18\x01 \x01(\x0c\x12\x14\n\x0c\x61uto_publish\x18\x02 \x01(\x08\"@\n\x14ImportSchemaResponse\x12(\n\x06schema\x18\x01 \x01(\x0b\x32\x18.centralconfig.v1.Schema2\xcd\x0f\n\rSchemaService\x12u\n\x0c\x43reateSchema\x12%.centralconfig.v1.CreateSchemaRequest\x1a&.centralconfig.v1.CreateSchemaResponse\"\x16\x82\xd3\xe4\x93\x02\x10\"\x0b/v1/schemas:\x01*\x12n\n\tGetSchema\x12\".centralconfig.v1.GetSchemaRequest\x1a#.centralconfig.v1.GetSchemaResponse\"\x18\x82\xd3\xe4\x93\x02\x12\x12\x10/v1/schemas/{id}\x12o\n\x0bListSchemas\x12$.centralconfig.v1.ListSchemasRequest\x1a%.centralconfig.v1.ListSchemasResponse\"\x13\x82\xd3\xe4\x93\x02\r\x12\x0b/v1/schemas\x12z\n\x0cUpdateSchema\x12%.centralconfig.v1.UpdateSchemaRequest\x1a&.centralconfig.v1.UpdateSchemaResponse\"\x1b\x82\xd3\xe4\x93\x02\x15\x32\x10/v1/schemas/{id}:\x01*\x12w\n\x0c\x44\x65leteSchema\x12%.centralconfig.v1.DeleteSchemaRequest\x1a&.centralconfig.v1.DeleteSchemaResponse\"\x18\x82\xd3\xe4\x93\x02\x12*\x10/v1/schemas/{id}\x12\x85\x01\n\rPublishSchema\x12&.centralconfig.v1.PublishSchemaRequest\x1a\'.centralconfig.v1.PublishSchemaResponse\"#\x82\xd3\xe4\x93\x02\x1d\"\x18/v1/schemas/{id}/publish:\x01*\x12u\n\x0c\x43reateTenant\x12%.centralconfig.v1.CreateTenantRequest\x1a&.centralconfig.v1.CreateTenantResponse\"\x16\x82\xd3\xe4\x93\x02\x10\"\x0b/v1/tenants:\x01*\x12n\n\tGetTenant\x12\".centralconfig.v1.GetTenantRequest\x1a#.centralconfig.v1.GetTenantResponse\"\x18\x82\xd3\xe4\x93\x02\x12\x12\x10/v1/tenants/{id}\x12o\n\x0bListTenants\x12$.centralconfig.v1.ListTenantsRequest\x1a%.centralconfig.v1.ListTenantsResponse\"\x13\x82\xd3\xe4\x93\x02\r\x12\x0b/v1/tenants\x12z\n\x0cUpdateTenant\x12%.centralconfig.v1.UpdateTenantRequest\x1a&.centralconfig.v1.UpdateTenantResponse\"\x1b\x82\xd3\xe4\x93\x02\x15\x32\x10/v1/tenants/{id}:\x01*\x12w\n\x0c\x44\x65leteTenant\x12%.centralconfig.v1.DeleteTenantRequest\x1a&.centralconfig.v1.DeleteTenantResponse\"\x18\x82\xd3\xe4\x93\x02\x12*\x10/v1/tenants/{id}\x12~\n\tLockField\x12\".centralconfig.v1.LockFieldRequest\x1a#.centralconfig.v1.LockFieldResponse\"(\x82\xd3\xe4\x93\x02\"\"\x1d/v1/tenants/{tenant_id}/locks:\x01*\x12\x8e\x01\n\x0bUnlockField\x12$.centralconfig.v1.UnlockFieldRequest\x1a%.centralconfig.v1.UnlockFieldResponse\"2\x82\xd3\xe4\x93\x02,**/v1/tenants/{tenant_id}/locks/{field_path}\x12\x8a\x01\n\x0eListFieldLocks\x12\'.centralconfig.v1.ListFieldLocksRequest\x1a(.centralconfig.v1.ListFieldLocksResponse\"%\x82\xd3\xe4\x93\x02\x1f\x12\x1d/v1/tenants/{tenant_id}/locks\x12~\n\x0c\x45xportSchema\x12%.centralconfig.v1.ExportSchemaRequest\x1a&.centralconfig.v1.ExportSchemaResponse\"\x1f\x82\xd3\xe4\x93\x02\x19\x12\x17/v1/schemas/{id}/export\x12|\n\x0cImportSchema\x12%.centralconfig.v1.ImportSchemaRequest\x1a&.centralconfig.v1.ImportSchemaResponse\"\x1d\x82\xd3\xe4\x93\x02\x17\"\x12/v1/schemas/import:\x01*b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%centralconfig/v1/schema_service.proto\x12\x10\x63\x65ntralconfig.v1\x1a\x1c\x63\x65ntralconfig/v1/types.proto\x1a\x1cgoogle/api/annotations.proto\"|\n\x13\x43reateSchemaRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x18\n\x0b\x64\x65scription\x18\x02 \x01(\tH\x00\x88\x01\x01\x12-\n\x06\x66ields\x18\x03 \x03(\x0b\x32\x1d.centralconfig.v1.SchemaFieldB\x0e\n\x0c_description\"@\n\x14\x43reateSchemaResponse\x12(\n\x06schema\x18\x01 \x01(\x0b\x32\x18.centralconfig.v1.Schema\"@\n\x10GetSchemaRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x14\n\x07version\x18\x02 \x01(\x05H\x00\x88\x01\x01\x42\n\n\x08_version\"=\n\x11GetSchemaResponse\x12(\n\x06schema\x18\x01 \x01(\x0b\x32\x18.centralconfig.v1.Schema\"e\n\x12ListSchemasRequest\x12\x18\n\x0bname_filter\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\tB\x0e\n\x0c_name_filter\"Y\n\x13ListSchemasResponse\x12)\n\x07schemas\x18\x01 \x03(\x0b\x32\x18.centralconfig.v1.Schema\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"\xa1\x01\n\x13UpdateSchemaRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12 \n\x13version_description\x18\x02 \x01(\tH\x00\x88\x01\x01\x12-\n\x06\x66ields\x18\x03 \x03(\x0b\x32\x1d.centralconfig.v1.SchemaField\x12\x15\n\rremove_fields\x18\x04 \x03(\tB\x16\n\x14_version_description\"@\n\x14UpdateSchemaResponse\x12(\n\x06schema\x18\x01 \x01(\x0b\x32\x18.centralconfig.v1.Schema\"!\n\x13\x44\x65leteSchemaRequest\x12\n\n\x02id\x18\x01 \x01(\t\"\x16\n\x14\x44\x65leteSchemaResponse\"3\n\x14PublishSchemaRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\x05\"A\n\x15PublishSchemaResponse\x12(\n\x06schema\x18\x01 \x01(\x0b\x32\x18.centralconfig.v1.Schema\"N\n\x13\x43reateTenantRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tschema_id\x18\x02 \x01(\t\x12\x16\n\x0eschema_version\x18\x03 \x01(\x05\"@\n\x14\x43reateTenantResponse\x12(\n\x06tenant\x18\x01 \x01(\x0b\x32\x18.centralconfig.v1.Tenant\"\x1e\n\x10GetTenantRequest\x12\n\n\x02id\x18\x01 \x01(\t\"=\n\x11GetTenantResponse\x12(\n\x06tenant\x18\x01 \x01(\x0b\x32\x18.centralconfig.v1.Tenant\"a\n\x12ListTenantsRequest\x12\x16\n\tschema_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\tB\x0c\n\n_schema_id\"Y\n\x13ListTenantsResponse\x12)\n\x07tenants\x18\x01 \x03(\x0b\x32\x18.centralconfig.v1.Tenant\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"m\n\x13UpdateTenantRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\x04name\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x1b\n\x0eschema_version\x18\x03 \x01(\x05H\x01\x88\x01\x01\x42\x07\n\x05_nameB\x11\n\x0f_schema_version\"@\n\x14UpdateTenantResponse\x12(\n\x06tenant\x18\x01 \x01(\x0b\x32\x18.centralconfig.v1.Tenant\"!\n\x13\x44\x65leteTenantRequest\x12\n\n\x02id\x18\x01 \x01(\t\"\x16\n\x14\x44\x65leteTenantResponse\"P\n\x10LockFieldRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x12\n\nfield_path\x18\x02 \x01(\t\x12\x15\n\rlocked_values\x18\x03 \x03(\t\"\x13\n\x11LockFieldResponse\";\n\x12UnlockFieldRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x12\n\nfield_path\x18\x02 \x01(\t\"\x15\n\x13UnlockFieldResponse\"*\n\x15ListFieldLocksRequest\x12\x11\n\ttenant_id\x18\x01 \x01(\t\"D\n\x16ListFieldLocksResponse\x12*\n\x05locks\x18\x01 \x03(\x0b\x32\x1b.centralconfig.v1.FieldLock\"o\n\x13\x45xportSchemaRequest\x12\n\n\x02id\x18\x01 \x01(\t\x12\x14\n\x07version\x18\x02 \x01(\x05H\x00\x88\x01\x01\x12\x19\n\x0cspec_version\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\n\n\x08_versionB\x0f\n\r_spec_version\",\n\x14\x45xportSchemaResponse\x12\x14\n\x0cyaml_content\x18\x01 \x01(\x0c\"A\n\x13ImportSchemaRequest\x12\x14\n\x0cyaml_content\x18\x01 \x01(\x0c\x12\x14\n\x0c\x61uto_publish\x18\x02 \x01(\x08\"@\n\x14ImportSchemaResponse\x12(\n\x06schema\x18\x01 \x01(\x0b\x32\x18.centralconfig.v1.Schema2\xcd\x0f\n\rSchemaService\x12u\n\x0c\x43reateSchema\x12%.centralconfig.v1.CreateSchemaRequest\x1a&.centralconfig.v1.CreateSchemaResponse\"\x16\x82\xd3\xe4\x93\x02\x10\"\x0b/v1/schemas:\x01*\x12n\n\tGetSchema\x12\".centralconfig.v1.GetSchemaRequest\x1a#.centralconfig.v1.GetSchemaResponse\"\x18\x82\xd3\xe4\x93\x02\x12\x12\x10/v1/schemas/{id}\x12o\n\x0bListSchemas\x12$.centralconfig.v1.ListSchemasRequest\x1a%.centralconfig.v1.ListSchemasResponse\"\x13\x82\xd3\xe4\x93\x02\r\x12\x0b/v1/schemas\x12z\n\x0cUpdateSchema\x12%.centralconfig.v1.UpdateSchemaRequest\x1a&.centralconfig.v1.UpdateSchemaResponse\"\x1b\x82\xd3\xe4\x93\x02\x15\x32\x10/v1/schemas/{id}:\x01*\x12w\n\x0c\x44\x65leteSchema\x12%.centralconfig.v1.DeleteSchemaRequest\x1a&.centralconfig.v1.DeleteSchemaResponse\"\x18\x82\xd3\xe4\x93\x02\x12*\x10/v1/schemas/{id}\x12\x85\x01\n\rPublishSchema\x12&.centralconfig.v1.PublishSchemaRequest\x1a\'.centralconfig.v1.PublishSchemaResponse\"#\x82\xd3\xe4\x93\x02\x1d\"\x18/v1/schemas/{id}/publish:\x01*\x12u\n\x0c\x43reateTenant\x12%.centralconfig.v1.CreateTenantRequest\x1a&.centralconfig.v1.CreateTenantResponse\"\x16\x82\xd3\xe4\x93\x02\x10\"\x0b/v1/tenants:\x01*\x12n\n\tGetTenant\x12\".centralconfig.v1.GetTenantRequest\x1a#.centralconfig.v1.GetTenantResponse\"\x18\x82\xd3\xe4\x93\x02\x12\x12\x10/v1/tenants/{id}\x12o\n\x0bListTenants\x12$.centralconfig.v1.ListTenantsRequest\x1a%.centralconfig.v1.ListTenantsResponse\"\x13\x82\xd3\xe4\x93\x02\r\x12\x0b/v1/tenants\x12z\n\x0cUpdateTenant\x12%.centralconfig.v1.UpdateTenantRequest\x1a&.centralconfig.v1.UpdateTenantResponse\"\x1b\x82\xd3\xe4\x93\x02\x15\x32\x10/v1/tenants/{id}:\x01*\x12w\n\x0c\x44\x65leteTenant\x12%.centralconfig.v1.DeleteTenantRequest\x1a&.centralconfig.v1.DeleteTenantResponse\"\x18\x82\xd3\xe4\x93\x02\x12*\x10/v1/tenants/{id}\x12~\n\tLockField\x12\".centralconfig.v1.LockFieldRequest\x1a#.centralconfig.v1.LockFieldResponse\"(\x82\xd3\xe4\x93\x02\"\"\x1d/v1/tenants/{tenant_id}/locks:\x01*\x12\x8e\x01\n\x0bUnlockField\x12$.centralconfig.v1.UnlockFieldRequest\x1a%.centralconfig.v1.UnlockFieldResponse\"2\x82\xd3\xe4\x93\x02,**/v1/tenants/{tenant_id}/locks/{field_path}\x12\x8a\x01\n\x0eListFieldLocks\x12\'.centralconfig.v1.ListFieldLocksRequest\x1a(.centralconfig.v1.ListFieldLocksResponse\"%\x82\xd3\xe4\x93\x02\x1f\x12\x1d/v1/tenants/{tenant_id}/locks\x12~\n\x0c\x45xportSchema\x12%.centralconfig.v1.ExportSchemaRequest\x1a&.centralconfig.v1.ExportSchemaResponse\"\x1f\x82\xd3\xe4\x93\x02\x19\x12\x17/v1/schemas/{id}/export\x12|\n\x0cImportSchema\x12%.centralconfig.v1.ImportSchemaRequest\x1a&.centralconfig.v1.ImportSchemaResponse\"\x1d\x82\xd3\xe4\x93\x02\x17\"\x12/v1/schemas/import:\x01*b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -122,13 +122,13 @@ _globals['_LISTFIELDLOCKSRESPONSE']._serialized_start=1941 _globals['_LISTFIELDLOCKSRESPONSE']._serialized_end=2009 _globals['_EXPORTSCHEMAREQUEST']._serialized_start=2011 - _globals['_EXPORTSCHEMAREQUEST']._serialized_end=2078 - _globals['_EXPORTSCHEMARESPONSE']._serialized_start=2080 - _globals['_EXPORTSCHEMARESPONSE']._serialized_end=2124 - _globals['_IMPORTSCHEMAREQUEST']._serialized_start=2126 - _globals['_IMPORTSCHEMAREQUEST']._serialized_end=2191 - _globals['_IMPORTSCHEMARESPONSE']._serialized_start=2193 - _globals['_IMPORTSCHEMARESPONSE']._serialized_end=2257 - _globals['_SCHEMASERVICE']._serialized_start=2260 - _globals['_SCHEMASERVICE']._serialized_end=4257 + _globals['_EXPORTSCHEMAREQUEST']._serialized_end=2122 + _globals['_EXPORTSCHEMARESPONSE']._serialized_start=2124 + _globals['_EXPORTSCHEMARESPONSE']._serialized_end=2168 + _globals['_IMPORTSCHEMAREQUEST']._serialized_start=2170 + _globals['_IMPORTSCHEMAREQUEST']._serialized_end=2235 + _globals['_IMPORTSCHEMARESPONSE']._serialized_start=2237 + _globals['_IMPORTSCHEMARESPONSE']._serialized_end=2301 + _globals['_SCHEMASERVICE']._serialized_start=2304 + _globals['_SCHEMASERVICE']._serialized_end=4301 # @@protoc_insertion_point(module_scope) diff --git a/sdk/src/opendecree/_generated/centralconfig/v1/schema_service_pb2.pyi b/sdk/src/opendecree/_generated/centralconfig/v1/schema_service_pb2.pyi index 8e2c6c7..904e962 100644 --- a/sdk/src/opendecree/_generated/centralconfig/v1/schema_service_pb2.pyi +++ b/sdk/src/opendecree/_generated/centralconfig/v1/schema_service_pb2.pyi @@ -640,22 +640,34 @@ class ExportSchemaRequest(_message.Message): ID_FIELD_NUMBER: _builtins.int VERSION_FIELD_NUMBER: _builtins.int + SPEC_VERSION_FIELD_NUMBER: _builtins.int id: _builtins.str """Schema ID (UUID).""" version: _builtins.int """Schema version to export. If omitted, exports the latest version.""" + spec_version: _builtins.str + """Schema-format spec version to emit (e.g. "v1"). When omitted, defaults + to the highest version the server supports. The server returns + InvalidArgument if the requested version is not registered. + """ def __init__( self, *, id: _builtins.str = ..., version: _builtins.int | None = ..., + spec_version: _builtins.str | None = ..., ) -> None: ... - _HasFieldArgType: _TypeAlias = _typing.Literal["_version", b"_version", "version", b"version"] # noqa: Y015 + _HasFieldArgType: _TypeAlias = _typing.Literal["_spec_version", b"_spec_version", "_version", b"_version", "spec_version", b"spec_version", "version", b"version"] # noqa: Y015 def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... - _ClearFieldArgType: _TypeAlias = _typing.Literal["_version", b"_version", "id", b"id", "version", b"version"] # noqa: Y015 + _ClearFieldArgType: _TypeAlias = _typing.Literal["_spec_version", b"_spec_version", "_version", b"_version", "id", b"id", "spec_version", b"spec_version", "version", b"version"] # noqa: Y015 def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + _WhichOneofReturnType__spec_version: _TypeAlias = _typing.Literal["spec_version"] # noqa: Y015 + _WhichOneofArgType__spec_version: _TypeAlias = _typing.Literal["_spec_version", b"_spec_version"] # noqa: Y015 _WhichOneofReturnType__version: _TypeAlias = _typing.Literal["version"] # noqa: Y015 _WhichOneofArgType__version: _TypeAlias = _typing.Literal["_version", b"_version"] # noqa: Y015 + @_typing.overload + def WhichOneof(self, oneof_group: _WhichOneofArgType__spec_version) -> _WhichOneofReturnType__spec_version | None: ... + @_typing.overload def WhichOneof(self, oneof_group: _WhichOneofArgType__version) -> _WhichOneofReturnType__version | None: ... Global___ExportSchemaRequest: _TypeAlias = ExportSchemaRequest # noqa: Y015 @@ -666,7 +678,7 @@ class ExportSchemaResponse(_message.Message): YAML_CONTENT_FIELD_NUMBER: _builtins.int yaml_content: _builtins.bytes - """YAML-encoded schema (syntax v1). Includes schema name, description, + """YAML-encoded schema (spec_version v1). Includes schema name, description, version, and all field definitions with OAS-style constraint naming. Server-generated fields (id, checksum, published, created_at) are excluded. """ @@ -687,7 +699,7 @@ class ImportSchemaRequest(_message.Message): YAML_CONTENT_FIELD_NUMBER: _builtins.int AUTO_PUBLISH_FIELD_NUMBER: _builtins.int yaml_content: _builtins.bytes - """YAML-encoded schema (syntax v1). Must include `syntax`, `name`, and `fields`. + """YAML-encoded schema (spec_version v1). Must include `spec_version`, `name`, and `fields`. Import uses full-replace semantics: - If no schema with this name exists: creates a new schema with version 1. diff --git a/sdk/src/opendecree/_generated/centralconfig/v1/schema_service_pb2_grpc.py b/sdk/src/opendecree/_generated/centralconfig/v1/schema_service_pb2_grpc.py index fd9fdf8..65c42bc 100644 --- a/sdk/src/opendecree/_generated/centralconfig/v1/schema_service_pb2_grpc.py +++ b/sdk/src/opendecree/_generated/centralconfig/v1/schema_service_pb2_grpc.py @@ -238,7 +238,7 @@ def ListFieldLocks(self, request, context): def ExportSchema(self, request, context): """Import/export. - Schemas can be exported as YAML (syntax v1) for backup, review, or version control. + Schemas can be exported as YAML (spec_version v1) for backup, review, or version control. ExportSchema serializes a schema version to YAML. """ diff --git a/sdk/src/opendecree/_generated/centralconfig/v1/schema_service_pb2_grpc.pyi b/sdk/src/opendecree/_generated/centralconfig/v1/schema_service_pb2_grpc.pyi index 01e9b5c..ffaf907 100644 --- a/sdk/src/opendecree/_generated/centralconfig/v1/schema_service_pb2_grpc.pyi +++ b/sdk/src/opendecree/_generated/centralconfig/v1/schema_service_pb2_grpc.pyi @@ -79,7 +79,7 @@ class SchemaServiceStub: """ListFieldLocks returns all active field locks for a tenant.""" ExportSchema: _grpc.UnaryUnaryMultiCallable[_schema_service_pb2.ExportSchemaRequest, _schema_service_pb2.ExportSchemaResponse] """Import/export. - Schemas can be exported as YAML (syntax v1) for backup, review, or version control. + Schemas can be exported as YAML (spec_version v1) for backup, review, or version control. ExportSchema serializes a schema version to YAML. """ @@ -140,7 +140,7 @@ class SchemaServiceAsyncStub(SchemaServiceStub): """ListFieldLocks returns all active field locks for a tenant.""" ExportSchema: _aio.UnaryUnaryMultiCallable[_schema_service_pb2.ExportSchemaRequest, _schema_service_pb2.ExportSchemaResponse] # type: ignore[assignment] """Import/export. - Schemas can be exported as YAML (syntax v1) for backup, review, or version control. + Schemas can be exported as YAML (spec_version v1) for backup, review, or version control. ExportSchema serializes a schema version to YAML. """ @@ -288,7 +288,7 @@ class SchemaServiceServicer(metaclass=_abc_1.ABCMeta): context: _ServicerContext, ) -> _typing.Union[_schema_service_pb2.ExportSchemaResponse, _abc.Awaitable[_schema_service_pb2.ExportSchemaResponse]]: """Import/export. - Schemas can be exported as YAML (syntax v1) for backup, review, or version control. + Schemas can be exported as YAML (spec_version v1) for backup, review, or version control. ExportSchema serializes a schema version to YAML. """ diff --git a/sdk/src/opendecree/_generated/centralconfig/v1/types_pb2.py b/sdk/src/opendecree/_generated/centralconfig/v1/types_pb2.py index 8a2dd2f..417af9c 100644 --- a/sdk/src/opendecree/_generated/centralconfig/v1/types_pb2.py +++ b/sdk/src/opendecree/_generated/centralconfig/v1/types_pb2.py @@ -26,7 +26,7 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x63\x65ntralconfig/v1/types.proto\x12\x10\x63\x65ntralconfig.v1\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xcf\x02\n\x10\x46ieldConstraints\x12\x10\n\x03min\x18\x01 \x01(\x01H\x00\x88\x01\x01\x12\x10\n\x03max\x18\x02 \x01(\x01H\x01\x88\x01\x01\x12\x12\n\x05regex\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x13\n\x0b\x65num_values\x18\x04 \x03(\t\x12\x18\n\x0bjson_schema\x18\x05 \x01(\tH\x03\x88\x01\x01\x12\x1a\n\rexclusive_min\x18\x06 \x01(\x01H\x04\x88\x01\x01\x12\x1a\n\rexclusive_max\x18\x07 \x01(\x01H\x05\x88\x01\x01\x12\x17\n\nmin_length\x18\x08 \x01(\x05H\x06\x88\x01\x01\x12\x17\n\nmax_length\x18\t \x01(\x05H\x07\x88\x01\x01\x42\x06\n\x04_minB\x06\n\x04_maxB\x08\n\x06_regexB\x0e\n\x0c_json_schemaB\x10\n\x0e_exclusive_minB\x10\n\x0e_exclusive_maxB\r\n\x0b_min_lengthB\r\n\x0b_max_length\"\x96\x05\n\x0bSchemaField\x12\x0c\n\x04path\x18\x01 \x01(\t\x12)\n\x04type\x18\x02 \x01(\x0e\x32\x1b.centralconfig.v1.FieldType\x12\x37\n\x0b\x63onstraints\x18\x03 \x01(\x0b\x32\".centralconfig.v1.FieldConstraints\x12\x10\n\x08nullable\x18\x04 \x01(\x08\x12\x12\n\ndeprecated\x18\x05 \x01(\x08\x12\x18\n\x0bredirect_to\x18\x06 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rdefault_value\x18\x07 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x02\x88\x01\x01\x12\x12\n\x05title\x18\t \x01(\tH\x03\x88\x01\x01\x12\x14\n\x07\x65xample\x18\n \x01(\tH\x04\x88\x01\x01\x12=\n\x08\x65xamples\x18\x0b \x03(\x0b\x32+.centralconfig.v1.SchemaField.ExamplesEntry\x12\x35\n\rexternal_docs\x18\x0c \x01(\x0b\x32\x1e.centralconfig.v1.ExternalDocs\x12\x0c\n\x04tags\x18\r \x03(\t\x12\x13\n\x06\x66ormat\x18\x0e \x01(\tH\x05\x88\x01\x01\x12\x11\n\tread_only\x18\x0f \x01(\x08\x12\x12\n\nwrite_once\x18\x10 \x01(\x08\x12\x11\n\tsensitive\x18\x11 \x01(\x08\x1aO\n\rExamplesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12-\n\x05value\x18\x02 \x01(\x0b\x32\x1e.centralconfig.v1.FieldExample:\x02\x38\x01\x42\x0e\n\x0c_redirect_toB\x10\n\x0e_default_valueB\x0e\n\x0c_descriptionB\x08\n\x06_titleB\n\n\x08_exampleB\t\n\x07_format\".\n\x0c\x46ieldExample\x12\r\n\x05value\x18\x01 \x01(\t\x12\x0f\n\x07summary\x18\x02 \x01(\t\"0\n\x0c\x45xternalDocs\x12\x13\n\x0b\x64\x65scription\x18\x01 \x01(\t\x12\x0b\n\x03url\x18\x02 \x01(\t\"\xc6\x01\n\nSchemaInfo\x12\r\n\x05title\x18\x01 \x01(\t\x12\x0e\n\x06\x61uthor\x18\x02 \x01(\t\x12\x30\n\x07\x63ontact\x18\x03 \x01(\x0b\x32\x1f.centralconfig.v1.SchemaContact\x12\x38\n\x06labels\x18\x04 \x03(\x0b\x32(.centralconfig.v1.SchemaInfo.LabelsEntry\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"9\n\rSchemaContact\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05\x65mail\x18\x02 \x01(\t\x12\x0b\n\x03url\x18\x03 \x01(\t\"\xc5\x02\n\x06Schema\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x0f\n\x07version\x18\x04 \x01(\x05\x12\x1b\n\x0eparent_version\x18\x05 \x01(\x05H\x00\x88\x01\x01\x12\x1b\n\x13version_description\x18\x06 \x01(\t\x12\x10\n\x08\x63hecksum\x18\x07 \x01(\t\x12\x11\n\tpublished\x18\x08 \x01(\x08\x12-\n\x06\x66ields\x18\t \x03(\x0b\x32\x1d.centralconfig.v1.SchemaField\x12.\n\ncreated_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12*\n\x04info\x18\x0b \x01(\x0b\x32\x1c.centralconfig.v1.SchemaInfoB\x11\n\x0f_parent_version\"\xad\x01\n\x06Tenant\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x11\n\tschema_id\x18\x03 \x01(\t\x12\x16\n\x0eschema_version\x18\x04 \x01(\x05\x12.\n\ncreated_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"I\n\tFieldLock\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x12\n\nfield_path\x18\x02 \x01(\t\x12\x15\n\rlocked_values\x18\x03 \x03(\t\"\x85\x02\n\nTypedValue\x12\x17\n\rinteger_value\x18\x01 \x01(\x03H\x00\x12\x16\n\x0cnumber_value\x18\x02 \x01(\x01H\x00\x12\x16\n\x0cstring_value\x18\x03 \x01(\tH\x00\x12\x14\n\nbool_value\x18\x04 \x01(\x08H\x00\x12\x30\n\ntime_value\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00\x12\x33\n\x0e\x64uration_value\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00\x12\x13\n\turl_value\x18\x07 \x01(\tH\x00\x12\x14\n\njson_value\x18\x08 \x01(\tH\x00\x42\x06\n\x04kind\"\x8a\x01\n\x0b\x43onfigValue\x12\x12\n\nfield_path\x18\x01 \x01(\t\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.centralconfig.v1.TypedValue\x12\x10\n\x08\x63hecksum\x18\x03 \x01(\t\x12\x18\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"\x98\x01\n\rConfigVersion\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\ttenant_id\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\x05\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\x12\x12\n\ncreated_by\x18\x05 \x01(\t\x12.\n\ncreated_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"[\n\x06\x43onfig\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\x05\x12-\n\x06values\x18\x03 \x03(\x0b\x32\x1d.centralconfig.v1.ConfigValue\"\xec\x01\n\x0c\x43onfigChange\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\x05\x12\x12\n\nfield_path\x18\x03 \x01(\t\x12/\n\told_value\x18\x04 \x01(\x0b\x32\x1c.centralconfig.v1.TypedValue\x12/\n\tnew_value\x18\x05 \x01(\x0b\x32\x1c.centralconfig.v1.TypedValue\x12\x12\n\nchanged_by\x18\x06 \x01(\t\x12.\n\nchanged_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\x9e\x02\n\nAuditEntry\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\ttenant_id\x18\x02 \x01(\t\x12\r\n\x05\x61\x63tor\x18\x03 \x01(\t\x12\x0e\n\x06\x61\x63tion\x18\x04 \x01(\t\x12\x17\n\nfield_path\x18\x05 \x01(\tH\x00\x88\x01\x01\x12\x16\n\told_value\x18\x06 \x01(\tH\x01\x88\x01\x01\x12\x16\n\tnew_value\x18\x07 \x01(\tH\x02\x88\x01\x01\x12\x1b\n\x0e\x63onfig_version\x18\x08 \x01(\x05H\x03\x88\x01\x01\x12.\n\ncreated_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampB\r\n\x0b_field_pathB\x0c\n\n_old_valueB\x0c\n\n_new_valueB\x11\n\x0f_config_version\"\xbb\x01\n\nUsageStats\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x12\n\nfield_path\x18\x02 \x01(\t\x12\x12\n\nread_count\x18\x03 \x01(\x03\x12\x19\n\x0clast_read_by\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x35\n\x0clast_read_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01\x88\x01\x01\x42\x0f\n\r_last_read_byB\x0f\n\r_last_read_at*\xd5\x01\n\tFieldType\x12\x1a\n\x16\x46IELD_TYPE_UNSPECIFIED\x10\x00\x12\x12\n\x0e\x46IELD_TYPE_INT\x10\x01\x12\x15\n\x11\x46IELD_TYPE_STRING\x10\x02\x12\x13\n\x0f\x46IELD_TYPE_TIME\x10\x03\x12\x17\n\x13\x46IELD_TYPE_DURATION\x10\x04\x12\x12\n\x0e\x46IELD_TYPE_URL\x10\x05\x12\x13\n\x0f\x46IELD_TYPE_JSON\x10\x06\x12\x15\n\x11\x46IELD_TYPE_NUMBER\x10\x07\x12\x13\n\x0f\x46IELD_TYPE_BOOL\x10\x08\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1c\x63\x65ntralconfig/v1/types.proto\x12\x10\x63\x65ntralconfig.v1\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xcf\x02\n\x10\x46ieldConstraints\x12\x10\n\x03min\x18\x01 \x01(\x01H\x00\x88\x01\x01\x12\x10\n\x03max\x18\x02 \x01(\x01H\x01\x88\x01\x01\x12\x12\n\x05regex\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x13\n\x0b\x65num_values\x18\x04 \x03(\t\x12\x18\n\x0bjson_schema\x18\x05 \x01(\tH\x03\x88\x01\x01\x12\x1a\n\rexclusive_min\x18\x06 \x01(\x01H\x04\x88\x01\x01\x12\x1a\n\rexclusive_max\x18\x07 \x01(\x01H\x05\x88\x01\x01\x12\x17\n\nmin_length\x18\x08 \x01(\x05H\x06\x88\x01\x01\x12\x17\n\nmax_length\x18\t \x01(\x05H\x07\x88\x01\x01\x42\x06\n\x04_minB\x06\n\x04_maxB\x08\n\x06_regexB\x0e\n\x0c_json_schemaB\x10\n\x0e_exclusive_minB\x10\n\x0e_exclusive_maxB\r\n\x0b_min_lengthB\r\n\x0b_max_length\"\x96\x05\n\x0bSchemaField\x12\x0c\n\x04path\x18\x01 \x01(\t\x12)\n\x04type\x18\x02 \x01(\x0e\x32\x1b.centralconfig.v1.FieldType\x12\x37\n\x0b\x63onstraints\x18\x03 \x01(\x0b\x32\".centralconfig.v1.FieldConstraints\x12\x10\n\x08nullable\x18\x04 \x01(\x08\x12\x12\n\ndeprecated\x18\x05 \x01(\x08\x12\x18\n\x0bredirect_to\x18\x06 \x01(\tH\x00\x88\x01\x01\x12\x1a\n\rdefault_value\x18\x07 \x01(\tH\x01\x88\x01\x01\x12\x18\n\x0b\x64\x65scription\x18\x08 \x01(\tH\x02\x88\x01\x01\x12\x12\n\x05title\x18\t \x01(\tH\x03\x88\x01\x01\x12\x14\n\x07\x65xample\x18\n \x01(\tH\x04\x88\x01\x01\x12=\n\x08\x65xamples\x18\x0b \x03(\x0b\x32+.centralconfig.v1.SchemaField.ExamplesEntry\x12\x35\n\rexternal_docs\x18\x0c \x01(\x0b\x32\x1e.centralconfig.v1.ExternalDocs\x12\x0c\n\x04tags\x18\r \x03(\t\x12\x13\n\x06\x66ormat\x18\x0e \x01(\tH\x05\x88\x01\x01\x12\x11\n\tread_only\x18\x0f \x01(\x08\x12\x12\n\nwrite_once\x18\x10 \x01(\x08\x12\x11\n\tsensitive\x18\x11 \x01(\x08\x1aO\n\rExamplesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12-\n\x05value\x18\x02 \x01(\x0b\x32\x1e.centralconfig.v1.FieldExample:\x02\x38\x01\x42\x0e\n\x0c_redirect_toB\x10\n\x0e_default_valueB\x0e\n\x0c_descriptionB\x08\n\x06_titleB\n\n\x08_exampleB\t\n\x07_format\".\n\x0c\x46ieldExample\x12\r\n\x05value\x18\x01 \x01(\t\x12\x0f\n\x07summary\x18\x02 \x01(\t\"0\n\x0c\x45xternalDocs\x12\x13\n\x0b\x64\x65scription\x18\x01 \x01(\t\x12\x0b\n\x03url\x18\x02 \x01(\t\"\xc6\x01\n\nSchemaInfo\x12\r\n\x05title\x18\x01 \x01(\t\x12\x0e\n\x06\x61uthor\x18\x02 \x01(\t\x12\x30\n\x07\x63ontact\x18\x03 \x01(\x0b\x32\x1f.centralconfig.v1.SchemaContact\x12\x38\n\x06labels\x18\x04 \x03(\x0b\x32(.centralconfig.v1.SchemaInfo.LabelsEntry\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"9\n\rSchemaContact\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\r\n\x05\x65mail\x18\x02 \x01(\t\x12\x0b\n\x03url\x18\x03 \x01(\t\"\xc2\x03\n\x06Schema\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x0f\n\x07version\x18\x04 \x01(\x05\x12\x1b\n\x0eparent_version\x18\x05 \x01(\x05H\x00\x88\x01\x01\x12\x1b\n\x13version_description\x18\x06 \x01(\t\x12\x10\n\x08\x63hecksum\x18\x07 \x01(\t\x12\x11\n\tpublished\x18\x08 \x01(\x08\x12-\n\x06\x66ields\x18\t \x03(\x0b\x32\x1d.centralconfig.v1.SchemaField\x12.\n\ncreated_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12*\n\x04info\x18\x0b \x01(\x0b\x32\x1c.centralconfig.v1.SchemaInfo\x12\x44\n\x12\x64\x65pendent_required\x18\x0c \x03(\x0b\x32(.centralconfig.v1.DependentRequiredEntry\x12\x35\n\x0bvalidations\x18\r \x03(\x0b\x32 .centralconfig.v1.ValidationRuleB\x11\n\x0f_parent_version\"I\n\x16\x44\x65pendentRequiredEntry\x12\x15\n\rtrigger_field\x18\x01 \x01(\t\x12\x18\n\x10\x64\x65pendent_fields\x18\x02 \x03(\t\"_\n\x0eValidationRule\x12\x0c\n\x04path\x18\x01 \x01(\t\x12\x0c\n\x04rule\x18\x02 \x01(\t\x12\x0f\n\x07message\x18\x03 \x01(\t\x12\x10\n\x08severity\x18\x04 \x01(\t\x12\x0e\n\x06reason\x18\x05 \x01(\t\"\xad\x01\n\x06Tenant\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x11\n\tschema_id\x18\x03 \x01(\t\x12\x16\n\x0eschema_version\x18\x04 \x01(\x05\x12.\n\ncreated_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nupdated_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"I\n\tFieldLock\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x12\n\nfield_path\x18\x02 \x01(\t\x12\x15\n\rlocked_values\x18\x03 \x03(\t\"\x85\x02\n\nTypedValue\x12\x17\n\rinteger_value\x18\x01 \x01(\x03H\x00\x12\x16\n\x0cnumber_value\x18\x02 \x01(\x01H\x00\x12\x16\n\x0cstring_value\x18\x03 \x01(\tH\x00\x12\x14\n\nbool_value\x18\x04 \x01(\x08H\x00\x12\x30\n\ntime_value\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00\x12\x33\n\x0e\x64uration_value\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationH\x00\x12\x13\n\turl_value\x18\x07 \x01(\tH\x00\x12\x14\n\njson_value\x18\x08 \x01(\tH\x00\x42\x06\n\x04kind\"\x8a\x01\n\x0b\x43onfigValue\x12\x12\n\nfield_path\x18\x01 \x01(\t\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x1c.centralconfig.v1.TypedValue\x12\x10\n\x08\x63hecksum\x18\x03 \x01(\t\x12\x18\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_description\"\x98\x01\n\rConfigVersion\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\ttenant_id\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\x05\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\x12\x12\n\ncreated_by\x18\x05 \x01(\t\x12.\n\ncreated_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"[\n\x06\x43onfig\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\x05\x12-\n\x06values\x18\x03 \x03(\x0b\x32\x1d.centralconfig.v1.ConfigValue\"\xec\x01\n\x0c\x43onfigChange\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\x05\x12\x12\n\nfield_path\x18\x03 \x01(\t\x12/\n\told_value\x18\x04 \x01(\x0b\x32\x1c.centralconfig.v1.TypedValue\x12/\n\tnew_value\x18\x05 \x01(\x0b\x32\x1c.centralconfig.v1.TypedValue\x12\x12\n\nchanged_by\x18\x06 \x01(\t\x12.\n\nchanged_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\x9e\x02\n\nAuditEntry\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\ttenant_id\x18\x02 \x01(\t\x12\r\n\x05\x61\x63tor\x18\x03 \x01(\t\x12\x0e\n\x06\x61\x63tion\x18\x04 \x01(\t\x12\x17\n\nfield_path\x18\x05 \x01(\tH\x00\x88\x01\x01\x12\x16\n\told_value\x18\x06 \x01(\tH\x01\x88\x01\x01\x12\x16\n\tnew_value\x18\x07 \x01(\tH\x02\x88\x01\x01\x12\x1b\n\x0e\x63onfig_version\x18\x08 \x01(\x05H\x03\x88\x01\x01\x12.\n\ncreated_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampB\r\n\x0b_field_pathB\x0c\n\n_old_valueB\x0c\n\n_new_valueB\x11\n\x0f_config_version\"\xbb\x01\n\nUsageStats\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x12\n\nfield_path\x18\x02 \x01(\t\x12\x12\n\nread_count\x18\x03 \x01(\x03\x12\x19\n\x0clast_read_by\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x35\n\x0clast_read_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01\x88\x01\x01\x42\x0f\n\r_last_read_byB\x0f\n\r_last_read_at*\xd5\x01\n\tFieldType\x12\x1a\n\x16\x46IELD_TYPE_UNSPECIFIED\x10\x00\x12\x12\n\x0e\x46IELD_TYPE_INT\x10\x01\x12\x15\n\x11\x46IELD_TYPE_STRING\x10\x02\x12\x13\n\x0f\x46IELD_TYPE_TIME\x10\x03\x12\x17\n\x13\x46IELD_TYPE_DURATION\x10\x04\x12\x12\n\x0e\x46IELD_TYPE_URL\x10\x05\x12\x13\n\x0f\x46IELD_TYPE_JSON\x10\x06\x12\x15\n\x11\x46IELD_TYPE_NUMBER\x10\x07\x12\x13\n\x0f\x46IELD_TYPE_BOOL\x10\x08\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -37,8 +37,8 @@ _globals['_SCHEMAFIELD_EXAMPLESENTRY']._serialized_options = b'8\001' _globals['_SCHEMAINFO_LABELSENTRY']._loaded_options = None _globals['_SCHEMAINFO_LABELSENTRY']._serialized_options = b'8\001' - _globals['_FIELDTYPE']._serialized_start=3427 - _globals['_FIELDTYPE']._serialized_end=3640 + _globals['_FIELDTYPE']._serialized_start=3724 + _globals['_FIELDTYPE']._serialized_end=3937 _globals['_FIELDCONSTRAINTS']._serialized_start=116 _globals['_FIELDCONSTRAINTS']._serialized_end=451 _globals['_SCHEMAFIELD']._serialized_start=454 @@ -56,23 +56,27 @@ _globals['_SCHEMACONTACT']._serialized_start=1417 _globals['_SCHEMACONTACT']._serialized_end=1474 _globals['_SCHEMA']._serialized_start=1477 - _globals['_SCHEMA']._serialized_end=1802 - _globals['_TENANT']._serialized_start=1805 - _globals['_TENANT']._serialized_end=1978 - _globals['_FIELDLOCK']._serialized_start=1980 - _globals['_FIELDLOCK']._serialized_end=2053 - _globals['_TYPEDVALUE']._serialized_start=2056 - _globals['_TYPEDVALUE']._serialized_end=2317 - _globals['_CONFIGVALUE']._serialized_start=2320 - _globals['_CONFIGVALUE']._serialized_end=2458 - _globals['_CONFIGVERSION']._serialized_start=2461 - _globals['_CONFIGVERSION']._serialized_end=2613 - _globals['_CONFIG']._serialized_start=2615 - _globals['_CONFIG']._serialized_end=2706 - _globals['_CONFIGCHANGE']._serialized_start=2709 - _globals['_CONFIGCHANGE']._serialized_end=2945 - _globals['_AUDITENTRY']._serialized_start=2948 - _globals['_AUDITENTRY']._serialized_end=3234 - _globals['_USAGESTATS']._serialized_start=3237 - _globals['_USAGESTATS']._serialized_end=3424 + _globals['_SCHEMA']._serialized_end=1927 + _globals['_DEPENDENTREQUIREDENTRY']._serialized_start=1929 + _globals['_DEPENDENTREQUIREDENTRY']._serialized_end=2002 + _globals['_VALIDATIONRULE']._serialized_start=2004 + _globals['_VALIDATIONRULE']._serialized_end=2099 + _globals['_TENANT']._serialized_start=2102 + _globals['_TENANT']._serialized_end=2275 + _globals['_FIELDLOCK']._serialized_start=2277 + _globals['_FIELDLOCK']._serialized_end=2350 + _globals['_TYPEDVALUE']._serialized_start=2353 + _globals['_TYPEDVALUE']._serialized_end=2614 + _globals['_CONFIGVALUE']._serialized_start=2617 + _globals['_CONFIGVALUE']._serialized_end=2755 + _globals['_CONFIGVERSION']._serialized_start=2758 + _globals['_CONFIGVERSION']._serialized_end=2910 + _globals['_CONFIG']._serialized_start=2912 + _globals['_CONFIG']._serialized_end=3003 + _globals['_CONFIGCHANGE']._serialized_start=3006 + _globals['_CONFIGCHANGE']._serialized_end=3242 + _globals['_AUDITENTRY']._serialized_start=3245 + _globals['_AUDITENTRY']._serialized_end=3531 + _globals['_USAGESTATS']._serialized_start=3534 + _globals['_USAGESTATS']._serialized_end=3721 # @@protoc_insertion_point(module_scope) diff --git a/sdk/src/opendecree/_generated/centralconfig/v1/types_pb2.pyi b/sdk/src/opendecree/_generated/centralconfig/v1/types_pb2.pyi index 40a148f..fe1f225 100644 --- a/sdk/src/opendecree/_generated/centralconfig/v1/types_pb2.pyi +++ b/sdk/src/opendecree/_generated/centralconfig/v1/types_pb2.pyi @@ -505,6 +505,8 @@ class Schema(_message.Message): FIELDS_FIELD_NUMBER: _builtins.int CREATED_AT_FIELD_NUMBER: _builtins.int INFO_FIELD_NUMBER: _builtins.int + DEPENDENT_REQUIRED_FIELD_NUMBER: _builtins.int + VALIDATIONS_FIELD_NUMBER: _builtins.int id: _builtins.str """Server-assigned unique identifier (UUID).""" name: _builtins.str @@ -540,6 +542,26 @@ class Schema(_message.Message): def info(self) -> Global___SchemaInfo: """Optional schema metadata: ownership, contact, labels.""" + @_builtins.property + def dependent_required(self) -> _containers.RepeatedCompositeFieldContainer[Global___DependentRequiredEntry]: + """Cross-field "B required when A present" rules. Each entry declares one + trigger field whose presence (non-null value) makes a list of dependent + field paths required (also non-null). Equivalent to JSON Schema 2020-12 + dependentRequired, scoped to schema-level cross-field requirement. + Lint-checked at ImportSchema time (every path must reference a real + field; trigger may not appear in its own dependents). Enforced at every + config write against the post-merge snapshot. + """ + + @_builtins.property + def validations(self) -> _containers.RepeatedCompositeFieldContainer[Global___ValidationRule]: + """Cross-field rule expressions reserved for future Common Expression + Language (CEL) evaluation. Stored on the schema and round-tripped + through ImportSchema/GetSchema; the runtime engine ships separately + (see issue #76). Reserving the key in v0.1.0 of the schema spec + avoids a breaking meta-schema change later. + """ + def __init__( self, *, @@ -554,10 +576,12 @@ class Schema(_message.Message): fields: _abc.Iterable[Global___SchemaField] | None = ..., created_at: _timestamp_pb2.Timestamp | None = ..., info: Global___SchemaInfo | None = ..., + dependent_required: _abc.Iterable[Global___DependentRequiredEntry] | None = ..., + validations: _abc.Iterable[Global___ValidationRule] | None = ..., ) -> None: ... _HasFieldArgType: _TypeAlias = _typing.Literal["_parent_version", b"_parent_version", "created_at", b"created_at", "info", b"info", "parent_version", b"parent_version"] # noqa: Y015 def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ... - _ClearFieldArgType: _TypeAlias = _typing.Literal["_parent_version", b"_parent_version", "checksum", b"checksum", "created_at", b"created_at", "description", b"description", "fields", b"fields", "id", b"id", "info", b"info", "name", b"name", "parent_version", b"parent_version", "published", b"published", "version", b"version", "version_description", b"version_description"] # noqa: Y015 + _ClearFieldArgType: _TypeAlias = _typing.Literal["_parent_version", b"_parent_version", "checksum", b"checksum", "created_at", b"created_at", "dependent_required", b"dependent_required", "description", b"description", "fields", b"fields", "id", b"id", "info", b"info", "name", b"name", "parent_version", b"parent_version", "published", b"published", "validations", b"validations", "version", b"version", "version_description", b"version_description"] # noqa: Y015 def ClearField(self, field_name: _ClearFieldArgType) -> None: ... _WhichOneofReturnType__parent_version: _TypeAlias = _typing.Literal["parent_version"] # noqa: Y015 _WhichOneofArgType__parent_version: _TypeAlias = _typing.Literal["_parent_version", b"_parent_version"] # noqa: Y015 @@ -565,6 +589,94 @@ class Schema(_message.Message): Global___Schema: _TypeAlias = Schema # noqa: Y015 +@_typing.final +class DependentRequiredEntry(_message.Message): + """DependentRequiredEntry encodes one cross-field requirement: when the + trigger field has a non-null value, every dependent field path must also + have a non-null value. This is the proto wire form of JSON Schema 2020-12 + dependentRequired, which uses a `map>` shape — proto + maps cannot hold repeated values directly, so we use a repeated list of + entries. + """ + + DESCRIPTOR: _descriptor.Descriptor + + TRIGGER_FIELD_FIELD_NUMBER: _builtins.int + DEPENDENT_FIELDS_FIELD_NUMBER: _builtins.int + trigger_field: _builtins.str + """Field path whose presence triggers the requirement.""" + @_builtins.property + def dependent_fields(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: + """Field paths that must be present when the trigger has a non-null value.""" + + def __init__( + self, + *, + trigger_field: _builtins.str = ..., + dependent_fields: _abc.Iterable[_builtins.str] | None = ..., + ) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal["dependent_fields", b"dependent_fields", "trigger_field", b"trigger_field"] # noqa: Y015 + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + +Global___DependentRequiredEntry: _TypeAlias = DependentRequiredEntry # noqa: Y015 + +@_typing.final +class ValidationRule(_message.Message): + """ValidationRule encodes one cross-field rule expressed in Common + Expression Language (CEL). Reserved in v0.1.0 of the schema spec — the + parser accepts and persists rules, but the engine that compiles and + evaluates them ships separately (see issue #76 / .agents/context/cel-validation.md). + + Rules are scoped to a path prefix: an empty path means a schema-wide + rule; a non-empty path anchors the rule to a group for documentation + and UI grouping (the binding namespace itself always exposes every + field via `self`, regardless of path). + """ + + DESCRIPTOR: _descriptor.Descriptor + + PATH_FIELD_NUMBER: _builtins.int + RULE_FIELD_NUMBER: _builtins.int + MESSAGE_FIELD_NUMBER: _builtins.int + SEVERITY_FIELD_NUMBER: _builtins.int + REASON_FIELD_NUMBER: _builtins.int + path: _builtins.str + """Optional path prefix scoping the rule to a group of fields. Empty + string means the rule applies at schema scope. + """ + rule: _builtins.str + """The CEL expression source. Lint at ImportSchema in v0.1.0 only checks + that the string is non-empty; CEL compilation happens in Phase 2 once + the engine ships. + """ + message: _builtins.str + """Human-readable failure message shown to clients when the rule + rejects a write. Required. + """ + severity: _builtins.str + """Optional severity hint. Reserved values: "error" (default — write + rejected) and "warning" (write accepted, surfaced for UI). v0.1.0 + only validates the value is empty or one of the reserved set; the + warning path is not yet enforced. + """ + reason: _builtins.str + """Optional machine-readable failure code for SDK consumers that want + to branch on rule outcome without parsing the message text. + """ + def __init__( + self, + *, + path: _builtins.str = ..., + rule: _builtins.str = ..., + message: _builtins.str = ..., + severity: _builtins.str = ..., + reason: _builtins.str = ..., + ) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal["message", b"message", "path", b"path", "reason", b"reason", "rule", b"rule", "severity", b"severity"] # noqa: Y015 + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + +Global___ValidationRule: _TypeAlias = ValidationRule # noqa: Y015 + @_typing.final class Tenant(_message.Message): """Tenant represents an organization or entity that has its own configuration