UncountablePythonSDK 0.0.24__py3-none-any.whl → 0.0.131__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of UncountablePythonSDK might be problematic. Click here for more details.
- docs/conf.py +60 -8
- docs/index.md +107 -4
- docs/integration_examples/create_ingredient.md +43 -0
- docs/integration_examples/create_output.md +56 -0
- docs/integration_examples/index.md +6 -0
- docs/justfile +2 -2
- docs/requirements.txt +7 -5
- examples/async_batch.py +5 -6
- examples/basic_auth.py +7 -0
- examples/create_entity.py +4 -6
- examples/create_ingredient_sdk.py +34 -0
- examples/download_files.py +26 -0
- examples/edit_recipe_inputs.py +50 -0
- examples/integration-server/jobs/materials_auto/concurrent_cron.py +11 -0
- examples/integration-server/jobs/materials_auto/example_cron.py +21 -0
- examples/integration-server/jobs/materials_auto/example_http.py +47 -0
- examples/integration-server/jobs/materials_auto/example_instrument.py +100 -0
- examples/integration-server/jobs/materials_auto/example_parse.py +140 -0
- examples/integration-server/jobs/materials_auto/example_predictions.py +61 -0
- examples/integration-server/jobs/materials_auto/example_runsheet_wh.py +39 -0
- examples/integration-server/jobs/materials_auto/example_wh.py +23 -0
- examples/integration-server/jobs/materials_auto/profile.yaml +104 -0
- examples/integration-server/pyproject.toml +224 -0
- examples/invoke_uploader.py +26 -0
- examples/oauth.py +7 -0
- examples/set_recipe_metadata_file.py +40 -0
- examples/set_recipe_output_file_sdk.py +26 -0
- examples/upload_files.py +2 -3
- pkgs/argument_parser/__init__.py +9 -0
- pkgs/argument_parser/_is_namedtuple.py +3 -0
- pkgs/argument_parser/argument_parser.py +295 -74
- pkgs/argument_parser/case_convert.py +4 -3
- pkgs/filesystem_utils/__init__.py +20 -0
- pkgs/filesystem_utils/_blob_session.py +144 -0
- pkgs/filesystem_utils/_gdrive_session.py +309 -0
- pkgs/filesystem_utils/_local_session.py +69 -0
- pkgs/filesystem_utils/_s3_session.py +118 -0
- pkgs/filesystem_utils/_sftp_session.py +151 -0
- pkgs/filesystem_utils/file_type_utils.py +91 -0
- pkgs/filesystem_utils/filesystem_session.py +39 -0
- pkgs/py.typed +0 -0
- pkgs/serialization/__init__.py +8 -1
- pkgs/serialization/annotation.py +64 -0
- pkgs/serialization/missing_sentry.py +1 -1
- pkgs/serialization/opaque_key.py +1 -1
- pkgs/serialization/serial_alias.py +47 -0
- pkgs/serialization/serial_class.py +69 -54
- pkgs/serialization/serial_generic.py +16 -0
- pkgs/serialization/serial_union.py +84 -0
- pkgs/serialization/yaml.py +57 -0
- pkgs/serialization_util/__init__.py +7 -7
- pkgs/serialization_util/convert_to_snakecase.py +27 -0
- pkgs/serialization_util/dataclasses.py +14 -0
- pkgs/serialization_util/serialization_helpers.py +117 -71
- pkgs/type_spec/actions_registry/__main__.py +0 -4
- pkgs/type_spec/actions_registry/emit_typescript.py +5 -5
- pkgs/type_spec/builder.py +438 -109
- pkgs/type_spec/builder_types.py +9 -0
- pkgs/type_spec/config.py +52 -24
- pkgs/type_spec/cross_output_links.py +99 -0
- pkgs/type_spec/emit_io_ts.py +1 -1
- pkgs/type_spec/emit_open_api.py +160 -41
- pkgs/type_spec/emit_open_api_util.py +13 -7
- pkgs/type_spec/emit_python.py +450 -136
- pkgs/type_spec/emit_typescript.py +117 -250
- pkgs/type_spec/emit_typescript_util.py +293 -4
- pkgs/type_spec/load_types.py +20 -5
- pkgs/type_spec/non_discriminated_union_exceptions.py +14 -0
- pkgs/type_spec/open_api_util.py +29 -4
- pkgs/type_spec/parts/base.py.prepart +13 -10
- pkgs/type_spec/parts/base.ts.prepart +4 -0
- pkgs/type_spec/type_info/__main__.py +3 -1
- pkgs/type_spec/type_info/emit_type_info.py +161 -32
- pkgs/type_spec/ui_entry_actions/__init__.py +4 -0
- pkgs/type_spec/ui_entry_actions/generate_ui_entry_actions.py +308 -0
- pkgs/type_spec/util.py +4 -4
- pkgs/type_spec/value_spec/__main__.py +27 -10
- pkgs/type_spec/value_spec/convert_type.py +21 -1
- pkgs/type_spec/value_spec/emit_python.py +25 -7
- pkgs/type_spec/value_spec/types.py +1 -1
- uncountable/__init__.py +1 -2
- uncountable/core/__init__.py +11 -3
- uncountable/core/async_batch.py +16 -1
- uncountable/core/client.py +247 -52
- uncountable/core/environment.py +41 -0
- uncountable/core/file_upload.py +67 -22
- uncountable/core/types.py +8 -13
- uncountable/integration/cli.py +142 -0
- uncountable/integration/construct_client.py +43 -27
- uncountable/integration/cron.py +12 -11
- uncountable/integration/db/connect.py +12 -2
- uncountable/integration/db/session.py +25 -0
- uncountable/integration/entrypoint.py +4 -34
- uncountable/integration/executors/executors.py +147 -0
- uncountable/integration/executors/generic_upload_executor.py +336 -0
- uncountable/integration/executors/script_executor.py +15 -9
- uncountable/integration/http_server/__init__.py +5 -0
- uncountable/integration/http_server/types.py +69 -0
- uncountable/integration/job.py +246 -19
- uncountable/integration/queue_runner/__init__.py +0 -0
- uncountable/integration/queue_runner/command_server/__init__.py +28 -0
- uncountable/integration/queue_runner/command_server/command_client.py +133 -0
- uncountable/integration/queue_runner/command_server/command_server.py +142 -0
- uncountable/integration/queue_runner/command_server/constants.py +4 -0
- uncountable/integration/queue_runner/command_server/protocol/__init__.py +0 -0
- uncountable/integration/queue_runner/command_server/protocol/command_server.proto +58 -0
- uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.py +57 -0
- uncountable/integration/queue_runner/command_server/protocol/command_server_pb2.pyi +114 -0
- uncountable/integration/queue_runner/command_server/protocol/command_server_pb2_grpc.py +264 -0
- uncountable/integration/queue_runner/command_server/types.py +75 -0
- uncountable/integration/queue_runner/datastore/__init__.py +3 -0
- uncountable/integration/queue_runner/datastore/datastore_sqlite.py +250 -0
- uncountable/integration/queue_runner/datastore/interface.py +29 -0
- uncountable/integration/queue_runner/datastore/model.py +24 -0
- uncountable/integration/queue_runner/job_scheduler.py +200 -0
- uncountable/integration/queue_runner/queue_runner.py +34 -0
- uncountable/integration/queue_runner/types.py +7 -0
- uncountable/integration/queue_runner/worker.py +116 -0
- uncountable/integration/scan_profiles.py +67 -0
- uncountable/integration/scheduler.py +199 -0
- uncountable/integration/secret_retrieval/__init__.py +3 -0
- uncountable/integration/secret_retrieval/retrieve_secret.py +93 -0
- uncountable/integration/server.py +103 -54
- uncountable/integration/telemetry.py +251 -0
- uncountable/integration/webhook_server/entrypoint.py +97 -0
- uncountable/types/__init__.py +149 -30
- uncountable/types/api/batch/execute_batch.py +16 -9
- uncountable/types/api/batch/execute_batch_load_async.py +13 -7
- uncountable/types/api/chemical/convert_chemical_formats.py +20 -8
- uncountable/types/api/condition_parameters/__init__.py +1 -0
- uncountable/types/api/condition_parameters/upsert_condition_match.py +72 -0
- uncountable/types/api/entity/create_entities.py +24 -12
- uncountable/types/api/entity/create_entity.py +22 -13
- uncountable/types/api/entity/create_or_update_entity.py +48 -0
- uncountable/types/api/entity/export_entities.py +59 -0
- uncountable/types/api/entity/get_entities_data.py +18 -9
- uncountable/types/api/entity/grant_entity_permissions.py +48 -0
- uncountable/types/api/entity/list_aggregate.py +79 -0
- uncountable/types/api/entity/list_entities.py +53 -14
- uncountable/types/api/entity/lock_entity.py +45 -0
- uncountable/types/api/entity/lookup_entity.py +116 -0
- uncountable/types/api/entity/resolve_entity_ids.py +19 -10
- uncountable/types/api/entity/set_entity_field_values.py +44 -0
- uncountable/types/api/entity/set_values.py +15 -8
- uncountable/types/api/entity/transition_entity_phase.py +27 -12
- uncountable/types/api/entity/unlock_entity.py +44 -0
- uncountable/types/api/equipment/__init__.py +1 -0
- uncountable/types/api/equipment/associate_equipment_input.py +43 -0
- uncountable/types/api/field_options/__init__.py +1 -0
- uncountable/types/api/field_options/upsert_field_options.py +55 -0
- uncountable/types/api/files/__init__.py +1 -0
- uncountable/types/api/files/download_file.py +77 -0
- uncountable/types/api/id_source/list_id_source.py +20 -11
- uncountable/types/api/id_source/match_id_source.py +15 -10
- uncountable/types/api/input_groups/get_input_group_names.py +16 -7
- uncountable/types/api/inputs/create_inputs.py +28 -14
- uncountable/types/api/inputs/get_input_data.py +34 -16
- uncountable/types/api/inputs/get_input_names.py +19 -10
- uncountable/types/api/inputs/get_inputs_data.py +29 -11
- uncountable/types/api/inputs/set_input_attribute_values.py +16 -10
- uncountable/types/api/inputs/set_input_category.py +44 -0
- uncountable/types/api/inputs/set_input_subcategories.py +45 -0
- uncountable/types/api/inputs/set_intermediate_type.py +50 -0
- uncountable/types/api/integrations/__init__.py +1 -0
- uncountable/types/api/integrations/publish_realtime_data.py +41 -0
- uncountable/types/api/integrations/push_notification.py +49 -0
- uncountable/types/api/integrations/register_sockets_token.py +41 -0
- uncountable/types/api/listing/__init__.py +1 -0
- uncountable/types/api/listing/fetch_listing.py +58 -0
- uncountable/types/api/material_families/__init__.py +1 -0
- uncountable/types/api/material_families/update_entity_material_families.py +47 -0
- uncountable/types/api/notebooks/__init__.py +1 -0
- uncountable/types/api/notebooks/add_notebook_content.py +119 -0
- uncountable/types/api/outputs/get_output_data.py +32 -17
- uncountable/types/api/outputs/get_output_names.py +18 -9
- uncountable/types/api/outputs/get_output_organization.py +173 -0
- uncountable/types/api/outputs/resolve_output_conditions.py +23 -11
- uncountable/types/api/permissions/set_core_permissions.py +31 -15
- uncountable/types/api/project/get_projects.py +20 -11
- uncountable/types/api/project/get_projects_data.py +23 -14
- uncountable/types/api/recipe_links/create_recipe_link.py +17 -10
- uncountable/types/api/recipe_links/remove_recipe_link.py +45 -0
- uncountable/types/api/recipe_metadata/get_recipe_metadata_data.py +19 -10
- uncountable/types/api/recipes/add_recipe_to_project.py +42 -0
- uncountable/types/api/recipes/add_time_series_data.py +64 -0
- uncountable/types/api/recipes/archive_recipes.py +14 -7
- uncountable/types/api/recipes/associate_recipe_as_input.py +16 -8
- uncountable/types/api/recipes/associate_recipe_as_lot.py +14 -7
- uncountable/types/api/recipes/clear_recipe_outputs.py +42 -0
- uncountable/types/api/recipes/create_mix_order.py +44 -0
- uncountable/types/api/recipes/create_recipe.py +21 -14
- uncountable/types/api/recipes/create_recipes.py +25 -13
- uncountable/types/api/recipes/disassociate_recipe_as_input.py +14 -7
- uncountable/types/api/recipes/edit_recipe_inputs.py +208 -19
- uncountable/types/api/recipes/get_column_calculation_values.py +57 -0
- uncountable/types/api/recipes/get_curve.py +15 -9
- uncountable/types/api/recipes/get_recipe_calculations.py +17 -11
- uncountable/types/api/recipes/get_recipe_links.py +14 -8
- uncountable/types/api/recipes/get_recipe_names.py +16 -7
- uncountable/types/api/recipes/get_recipe_output_metadata.py +16 -10
- uncountable/types/api/recipes/get_recipes_data.py +96 -45
- uncountable/types/api/recipes/lock_recipes.py +64 -0
- uncountable/types/api/recipes/remove_recipe_from_project.py +42 -0
- uncountable/types/api/recipes/set_recipe_inputs.py +19 -13
- uncountable/types/api/recipes/set_recipe_metadata.py +14 -7
- uncountable/types/api/recipes/set_recipe_output_annotations.py +114 -0
- uncountable/types/api/recipes/set_recipe_output_file.py +55 -0
- uncountable/types/api/recipes/set_recipe_outputs.py +40 -15
- uncountable/types/api/recipes/set_recipe_tags.py +30 -13
- uncountable/types/api/recipes/set_recipe_total.py +59 -0
- uncountable/types/api/recipes/unarchive_recipes.py +41 -0
- uncountable/types/api/recipes/unlock_recipes.py +51 -0
- uncountable/types/api/runsheet/__init__.py +1 -0
- uncountable/types/api/runsheet/complete_async_upload.py +41 -0
- uncountable/types/api/triggers/run_trigger.py +15 -8
- uncountable/types/api/uploader/__init__.py +1 -0
- uncountable/types/api/uploader/complete_async_parse.py +46 -0
- uncountable/types/api/uploader/invoke_uploader.py +46 -0
- uncountable/types/api/user/__init__.py +1 -0
- uncountable/types/api/user/get_current_user_info.py +40 -0
- uncountable/types/async_batch.py +8 -52
- uncountable/types/async_batch_processor.py +694 -18
- uncountable/types/async_batch_t.py +108 -0
- uncountable/types/async_jobs.py +8 -0
- uncountable/types/async_jobs_t.py +52 -0
- uncountable/types/auth_retrieval.py +11 -0
- uncountable/types/auth_retrieval_t.py +75 -0
- uncountable/types/base.py +5 -80
- uncountable/types/base_t.py +87 -0
- uncountable/types/calculations.py +3 -19
- uncountable/types/calculations_t.py +26 -0
- uncountable/types/chemical_structure.py +3 -23
- uncountable/types/chemical_structure_t.py +28 -0
- uncountable/types/client_base.py +1170 -88
- uncountable/types/client_config.py +8 -0
- uncountable/types/client_config_t.py +36 -0
- uncountable/types/curves.py +5 -43
- uncountable/types/curves_t.py +50 -0
- uncountable/types/data.py +12 -0
- uncountable/types/data_t.py +103 -0
- uncountable/types/entity.py +8 -270
- uncountable/types/entity_t.py +446 -0
- uncountable/types/experiment_groups.py +3 -19
- uncountable/types/experiment_groups_t.py +26 -0
- uncountable/types/exports.py +8 -0
- uncountable/types/exports_t.py +34 -0
- uncountable/types/field_values.py +25 -61
- uncountable/types/field_values_t.py +302 -0
- uncountable/types/fields.py +3 -20
- uncountable/types/fields_t.py +27 -0
- uncountable/types/generic_upload.py +14 -0
- uncountable/types/generic_upload_t.py +119 -0
- uncountable/types/id_source.py +7 -45
- uncountable/types/id_source_t.py +68 -0
- uncountable/types/identifier.py +6 -50
- uncountable/types/identifier_t.py +62 -0
- uncountable/types/input_attributes.py +3 -25
- uncountable/types/input_attributes_t.py +29 -0
- uncountable/types/inputs.py +6 -57
- uncountable/types/inputs_t.py +82 -0
- uncountable/types/integration_server.py +8 -0
- uncountable/types/integration_server_t.py +46 -0
- uncountable/types/integration_session.py +10 -0
- uncountable/types/integration_session_t.py +60 -0
- uncountable/types/integrations.py +10 -0
- uncountable/types/integrations_t.py +62 -0
- uncountable/types/job_definition.py +28 -0
- uncountable/types/job_definition_t.py +285 -0
- uncountable/types/listing.py +9 -0
- uncountable/types/listing_t.py +51 -0
- uncountable/types/notices.py +8 -0
- uncountable/types/notices_t.py +37 -0
- uncountable/types/notifications.py +11 -0
- uncountable/types/notifications_t.py +74 -0
- uncountable/types/outputs.py +3 -22
- uncountable/types/outputs_t.py +29 -0
- uncountable/types/overrides.py +9 -0
- uncountable/types/overrides_t.py +49 -0
- uncountable/types/permissions.py +3 -42
- uncountable/types/permissions_t.py +45 -0
- uncountable/types/phases.py +3 -19
- uncountable/types/phases_t.py +26 -0
- uncountable/types/post_base.py +3 -26
- uncountable/types/post_base_t.py +29 -0
- uncountable/types/queued_job.py +17 -0
- uncountable/types/queued_job_t.py +140 -0
- uncountable/types/recipe_identifiers.py +7 -58
- uncountable/types/recipe_identifiers_t.py +75 -0
- uncountable/types/recipe_inputs.py +4 -26
- uncountable/types/recipe_inputs_t.py +29 -0
- uncountable/types/recipe_links.py +4 -46
- uncountable/types/recipe_links_t.py +53 -0
- uncountable/types/recipe_metadata.py +5 -48
- uncountable/types/recipe_metadata_t.py +57 -0
- uncountable/types/recipe_output_metadata.py +3 -20
- uncountable/types/recipe_output_metadata_t.py +27 -0
- uncountable/types/recipe_tags.py +3 -19
- uncountable/types/recipe_tags_t.py +26 -0
- uncountable/types/recipe_workflow_steps.py +9 -73
- uncountable/types/recipe_workflow_steps_t.py +95 -0
- uncountable/types/recipes.py +7 -0
- uncountable/types/recipes_t.py +25 -0
- uncountable/types/response.py +3 -21
- uncountable/types/response_t.py +26 -0
- uncountable/types/secret_retrieval.py +11 -0
- uncountable/types/secret_retrieval_t.py +75 -0
- uncountable/types/sockets.py +20 -0
- uncountable/types/sockets_t.py +169 -0
- uncountable/types/structured_filters.py +25 -0
- uncountable/types/structured_filters_t.py +248 -0
- uncountable/types/units.py +3 -19
- uncountable/types/units_t.py +26 -0
- uncountable/types/uploader.py +24 -0
- uncountable/types/uploader_t.py +222 -0
- uncountable/types/users.py +3 -20
- uncountable/types/users_t.py +27 -0
- uncountable/types/webhook_job.py +9 -0
- uncountable/types/webhook_job_t.py +48 -0
- uncountable/types/workflows.py +4 -28
- uncountable/types/workflows_t.py +38 -0
- uncountablepythonsdk-0.0.131.dist-info/METADATA +64 -0
- uncountablepythonsdk-0.0.131.dist-info/RECORD +363 -0
- {UncountablePythonSDK-0.0.24.dist-info → uncountablepythonsdk-0.0.131.dist-info}/WHEEL +1 -1
- {UncountablePythonSDK-0.0.24.dist-info → uncountablepythonsdk-0.0.131.dist-info}/top_level.txt +0 -1
- UncountablePythonSDK-0.0.24.dist-info/METADATA +0 -47
- UncountablePythonSDK-0.0.24.dist-info/RECORD +0 -216
- docs/quickstart.md +0 -19
- examples/recipe-import/importer.py +0 -39
- type_spec/external/api/batch/execute_batch.yaml +0 -56
- type_spec/external/api/batch/execute_batch_load_async.yaml +0 -18
- type_spec/external/api/chemical/convert_chemical_formats.yaml +0 -33
- type_spec/external/api/entity/create_entities.yaml +0 -45
- type_spec/external/api/entity/create_entity.yaml +0 -51
- type_spec/external/api/entity/get_entities_data.yaml +0 -29
- type_spec/external/api/entity/list_entities.yaml +0 -52
- type_spec/external/api/entity/resolve_entity_ids.yaml +0 -29
- type_spec/external/api/entity/set_values.yaml +0 -18
- type_spec/external/api/entity/transition_entity_phase.yaml +0 -44
- type_spec/external/api/id_source/list_id_source.yaml +0 -35
- type_spec/external/api/id_source/match_id_source.yaml +0 -32
- type_spec/external/api/input_groups/get_input_group_names.yaml +0 -29
- type_spec/external/api/inputs/create_inputs.yaml +0 -48
- type_spec/external/api/inputs/get_input_data.yaml +0 -95
- type_spec/external/api/inputs/get_input_names.yaml +0 -38
- type_spec/external/api/inputs/get_inputs_data.yaml +0 -82
- type_spec/external/api/inputs/set_input_attribute_values.yaml +0 -33
- type_spec/external/api/outputs/get_output_data.yaml +0 -92
- type_spec/external/api/outputs/get_output_names.yaml +0 -35
- type_spec/external/api/outputs/resolve_output_conditions.yaml +0 -50
- type_spec/external/api/permissions/set_core_permissions.yaml +0 -69
- type_spec/external/api/project/get_projects.yaml +0 -42
- type_spec/external/api/project/get_projects_data.yaml +0 -50
- type_spec/external/api/recipe_links/create_recipe_link.yaml +0 -25
- type_spec/external/api/recipe_metadata/get_recipe_metadata_data.yaml +0 -41
- type_spec/external/api/recipes/archive_recipes.yaml +0 -20
- type_spec/external/api/recipes/associate_recipe_as_input.yaml +0 -19
- type_spec/external/api/recipes/associate_recipe_as_lot.yaml +0 -19
- type_spec/external/api/recipes/create_recipe.yaml +0 -39
- type_spec/external/api/recipes/create_recipes.yaml +0 -47
- type_spec/external/api/recipes/disassociate_recipe_as_input.yaml +0 -16
- type_spec/external/api/recipes/edit_recipe_inputs.yaml +0 -85
- type_spec/external/api/recipes/get_curve.yaml +0 -21
- type_spec/external/api/recipes/get_recipe_calculations.yaml +0 -39
- type_spec/external/api/recipes/get_recipe_links.yaml +0 -26
- type_spec/external/api/recipes/get_recipe_names.yaml +0 -29
- type_spec/external/api/recipes/get_recipe_output_metadata.yaml +0 -36
- type_spec/external/api/recipes/get_recipes_data.yaml +0 -244
- type_spec/external/api/recipes/set_recipe_inputs.yaml +0 -42
- type_spec/external/api/recipes/set_recipe_metadata.yaml +0 -20
- type_spec/external/api/recipes/set_recipe_outputs.yaml +0 -52
- type_spec/external/api/recipes/set_recipe_tags.yaml +0 -62
- type_spec/external/api/triggers/run_trigger.yaml +0 -18
- uncountable/integration/types.py +0 -89
uncountable/types/client_base.py
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
# DO NOT MODIFY -- This file is generated by type_spec
|
|
2
|
-
#
|
|
3
|
-
# ruff: noqa: E402
|
|
2
|
+
# ruff: noqa: E402 Q003
|
|
4
3
|
# fmt: off
|
|
5
4
|
# isort: skip_file
|
|
6
5
|
# ruff: noqa: PLR0904
|
|
@@ -9,24 +8,40 @@ import typing # noqa: F401
|
|
|
9
8
|
import datetime # noqa: F401
|
|
10
9
|
from decimal import Decimal # noqa: F401
|
|
11
10
|
from pkgs.serialization import OpaqueKey
|
|
11
|
+
import uncountable.types.api.notebooks.add_notebook_content as add_notebook_content_t
|
|
12
|
+
import uncountable.types.api.recipes.add_recipe_to_project as add_recipe_to_project_t
|
|
13
|
+
import uncountable.types.api.recipes.add_time_series_data as add_time_series_data_t
|
|
12
14
|
import uncountable.types.api.recipes.archive_recipes as archive_recipes_t
|
|
15
|
+
import uncountable.types.api.equipment.associate_equipment_input as associate_equipment_input_t
|
|
13
16
|
import uncountable.types.api.recipes.associate_recipe_as_input as associate_recipe_as_input_t
|
|
14
17
|
import uncountable.types.api.recipes.associate_recipe_as_lot as associate_recipe_as_lot_t
|
|
15
|
-
from uncountable.types import
|
|
16
|
-
from uncountable.types import
|
|
18
|
+
from uncountable.types import async_batch_t
|
|
19
|
+
from uncountable.types import base_t
|
|
20
|
+
import uncountable.types.api.recipes.clear_recipe_outputs as clear_recipe_outputs_t
|
|
21
|
+
from uncountable.types import client_config_t
|
|
22
|
+
import uncountable.types.api.uploader.complete_async_parse as complete_async_parse_t
|
|
23
|
+
import uncountable.types.api.runsheet.complete_async_upload as complete_async_upload_t
|
|
17
24
|
import uncountable.types.api.chemical.convert_chemical_formats as convert_chemical_formats_t
|
|
18
25
|
import uncountable.types.api.entity.create_entities as create_entities_t
|
|
19
26
|
import uncountable.types.api.entity.create_entity as create_entity_t
|
|
20
27
|
import uncountable.types.api.inputs.create_inputs as create_inputs_t
|
|
28
|
+
import uncountable.types.api.recipes.create_mix_order as create_mix_order_t
|
|
29
|
+
import uncountable.types.api.entity.create_or_update_entity as create_or_update_entity_t
|
|
21
30
|
import uncountable.types.api.recipes.create_recipe as create_recipe_t
|
|
22
31
|
import uncountable.types.api.recipe_links.create_recipe_link as create_recipe_link_t
|
|
23
32
|
import uncountable.types.api.recipes.create_recipes as create_recipes_t
|
|
24
33
|
import uncountable.types.api.recipes.disassociate_recipe_as_input as disassociate_recipe_as_input_t
|
|
25
34
|
import uncountable.types.api.recipes.edit_recipe_inputs as edit_recipe_inputs_t
|
|
26
|
-
from uncountable.types import
|
|
35
|
+
from uncountable.types import entity_t
|
|
27
36
|
import uncountable.types.api.batch.execute_batch as execute_batch_t
|
|
28
37
|
import uncountable.types.api.batch.execute_batch_load_async as execute_batch_load_async_t
|
|
29
|
-
|
|
38
|
+
import uncountable.types.api.entity.export_entities as export_entities_t
|
|
39
|
+
from uncountable.types import exports_t
|
|
40
|
+
import uncountable.types.api.listing.fetch_listing as fetch_listing_t
|
|
41
|
+
from uncountable.types import field_values_t
|
|
42
|
+
from uncountable.types import generic_upload_t
|
|
43
|
+
import uncountable.types.api.recipes.get_column_calculation_values as get_column_calculation_values_t
|
|
44
|
+
import uncountable.types.api.user.get_current_user_info as get_current_user_info_t
|
|
30
45
|
import uncountable.types.api.recipes.get_curve as get_curve_t
|
|
31
46
|
import uncountable.types.api.entity.get_entities_data as get_entities_data_t
|
|
32
47
|
import uncountable.types.api.inputs.get_input_data as get_input_data_t
|
|
@@ -43,39 +58,69 @@ import uncountable.types.api.recipe_metadata.get_recipe_metadata_data as get_rec
|
|
|
43
58
|
import uncountable.types.api.recipes.get_recipe_names as get_recipe_names_t
|
|
44
59
|
import uncountable.types.api.recipes.get_recipe_output_metadata as get_recipe_output_metadata_t
|
|
45
60
|
import uncountable.types.api.recipes.get_recipes_data as get_recipes_data_t
|
|
46
|
-
|
|
47
|
-
from uncountable.types import
|
|
61
|
+
import uncountable.types.api.entity.grant_entity_permissions as grant_entity_permissions_t
|
|
62
|
+
from uncountable.types import id_source_t
|
|
63
|
+
from uncountable.types import identifier_t
|
|
64
|
+
import uncountable.types.api.uploader.invoke_uploader as invoke_uploader_t
|
|
65
|
+
import uncountable.types.api.entity.list_aggregate as list_aggregate_t
|
|
48
66
|
import uncountable.types.api.entity.list_entities as list_entities_t
|
|
49
67
|
import uncountable.types.api.id_source.list_id_source as list_id_source_t
|
|
68
|
+
from uncountable.types import listing_t
|
|
69
|
+
import uncountable.types.api.entity.lock_entity as lock_entity_t
|
|
70
|
+
import uncountable.types.api.recipes.lock_recipes as lock_recipes_t
|
|
71
|
+
import uncountable.types.api.entity.lookup_entity as lookup_entity_t
|
|
50
72
|
import uncountable.types.api.id_source.match_id_source as match_id_source_t
|
|
51
|
-
from uncountable.types import
|
|
52
|
-
from uncountable.types import
|
|
53
|
-
from uncountable.types import
|
|
54
|
-
from uncountable.types import
|
|
55
|
-
|
|
56
|
-
from uncountable.types import
|
|
73
|
+
from uncountable.types import notices_t
|
|
74
|
+
from uncountable.types import notifications_t
|
|
75
|
+
from uncountable.types import permissions_t
|
|
76
|
+
from uncountable.types import post_base_t
|
|
77
|
+
import uncountable.types.api.integrations.push_notification as push_notification_t
|
|
78
|
+
from uncountable.types import recipe_identifiers_t
|
|
79
|
+
from uncountable.types import recipe_links_t
|
|
80
|
+
from uncountable.types import recipe_metadata_t
|
|
81
|
+
from uncountable.types import recipe_workflow_steps_t
|
|
82
|
+
import uncountable.types.api.integrations.register_sockets_token as register_sockets_token_t
|
|
83
|
+
import uncountable.types.api.recipes.remove_recipe_from_project as remove_recipe_from_project_t
|
|
84
|
+
import uncountable.types.api.recipe_links.remove_recipe_link as remove_recipe_link_t
|
|
57
85
|
import uncountable.types.api.entity.resolve_entity_ids as resolve_entity_ids_t
|
|
58
86
|
import uncountable.types.api.outputs.resolve_output_conditions as resolve_output_conditions_t
|
|
59
87
|
import uncountable.types.api.triggers.run_trigger as run_trigger_t
|
|
60
88
|
import uncountable.types.api.permissions.set_core_permissions as set_core_permissions_t
|
|
89
|
+
import uncountable.types.api.entity.set_entity_field_values as set_entity_field_values_t
|
|
61
90
|
import uncountable.types.api.inputs.set_input_attribute_values as set_input_attribute_values_t
|
|
91
|
+
import uncountable.types.api.inputs.set_input_category as set_input_category_t
|
|
92
|
+
import uncountable.types.api.inputs.set_input_subcategories as set_input_subcategories_t
|
|
93
|
+
import uncountable.types.api.inputs.set_intermediate_type as set_intermediate_type_t
|
|
62
94
|
import uncountable.types.api.recipes.set_recipe_inputs as set_recipe_inputs_t
|
|
63
95
|
import uncountable.types.api.recipes.set_recipe_metadata as set_recipe_metadata_t
|
|
96
|
+
import uncountable.types.api.recipes.set_recipe_output_annotations as set_recipe_output_annotations_t
|
|
97
|
+
import uncountable.types.api.recipes.set_recipe_output_file as set_recipe_output_file_t
|
|
64
98
|
import uncountable.types.api.recipes.set_recipe_outputs as set_recipe_outputs_t
|
|
65
99
|
import uncountable.types.api.recipes.set_recipe_tags as set_recipe_tags_t
|
|
100
|
+
import uncountable.types.api.recipes.set_recipe_total as set_recipe_total_t
|
|
66
101
|
import uncountable.types.api.entity.set_values as set_values_t
|
|
102
|
+
from uncountable.types import sockets_t
|
|
103
|
+
from uncountable.types import structured_filters_t
|
|
67
104
|
import uncountable.types.api.entity.transition_entity_phase as transition_entity_phase_t
|
|
105
|
+
import uncountable.types.api.recipes.unarchive_recipes as unarchive_recipes_t
|
|
106
|
+
import uncountable.types.api.entity.unlock_entity as unlock_entity_t
|
|
107
|
+
import uncountable.types.api.recipes.unlock_recipes as unlock_recipes_t
|
|
108
|
+
import uncountable.types.api.material_families.update_entity_material_families as update_entity_material_families_t
|
|
109
|
+
from uncountable.types import uploader_t
|
|
110
|
+
import uncountable.types.api.condition_parameters.upsert_condition_match as upsert_condition_match_t
|
|
111
|
+
import uncountable.types.api.field_options.upsert_field_options as upsert_field_options_t
|
|
68
112
|
from abc import ABC, abstractmethod
|
|
69
|
-
|
|
113
|
+
import dataclasses
|
|
70
114
|
|
|
71
115
|
DT = typing.TypeVar("DT")
|
|
72
116
|
|
|
73
117
|
|
|
74
|
-
@dataclass(kw_only=True)
|
|
118
|
+
@dataclasses.dataclass(kw_only=True)
|
|
75
119
|
class APIRequest:
|
|
76
120
|
method: str
|
|
77
121
|
endpoint: str
|
|
78
122
|
args: typing.Any
|
|
123
|
+
request_options: client_config_t.RequestOptions | None = None
|
|
79
124
|
|
|
80
125
|
|
|
81
126
|
class ClientMethods(ABC):
|
|
@@ -84,11 +129,90 @@ class ClientMethods(ABC):
|
|
|
84
129
|
def do_request(self, *, api_request: APIRequest, return_type: type[DT]) -> DT:
|
|
85
130
|
...
|
|
86
131
|
|
|
132
|
+
def add_notebook_content(
|
|
133
|
+
self,
|
|
134
|
+
*,
|
|
135
|
+
notebook_key: identifier_t.IdentifierKey,
|
|
136
|
+
location: add_notebook_content_t.Location,
|
|
137
|
+
contents: list[add_notebook_content_t.InputContent],
|
|
138
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
139
|
+
) -> add_notebook_content_t.Data:
|
|
140
|
+
"""Adds content to an existing notebook
|
|
141
|
+
|
|
142
|
+
:param notebook_key: Key of the notebook to add the content to
|
|
143
|
+
:param location: The location to add the content to in the notebook
|
|
144
|
+
:param contents: List of input content to add to the notebook
|
|
145
|
+
"""
|
|
146
|
+
args = add_notebook_content_t.Arguments(
|
|
147
|
+
notebook_key=notebook_key,
|
|
148
|
+
location=location,
|
|
149
|
+
contents=contents,
|
|
150
|
+
)
|
|
151
|
+
api_request = APIRequest(
|
|
152
|
+
method=add_notebook_content_t.ENDPOINT_METHOD,
|
|
153
|
+
endpoint=add_notebook_content_t.ENDPOINT_PATH,
|
|
154
|
+
args=args,
|
|
155
|
+
request_options=_request_options,
|
|
156
|
+
)
|
|
157
|
+
return self.do_request(api_request=api_request, return_type=add_notebook_content_t.Data)
|
|
158
|
+
|
|
159
|
+
def add_recipe_to_project(
|
|
160
|
+
self,
|
|
161
|
+
*,
|
|
162
|
+
recipe_key: identifier_t.IdentifierKey,
|
|
163
|
+
project_key: identifier_t.IdentifierKey,
|
|
164
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
165
|
+
) -> add_recipe_to_project_t.Data:
|
|
166
|
+
"""Adds a recipe to a project
|
|
167
|
+
|
|
168
|
+
:param recipe_key: The identifier key of the recipe to add to the project
|
|
169
|
+
:param project_key: The identifier key of the project to add the recipe to
|
|
170
|
+
"""
|
|
171
|
+
args = add_recipe_to_project_t.Arguments(
|
|
172
|
+
recipe_key=recipe_key,
|
|
173
|
+
project_key=project_key,
|
|
174
|
+
)
|
|
175
|
+
api_request = APIRequest(
|
|
176
|
+
method=add_recipe_to_project_t.ENDPOINT_METHOD,
|
|
177
|
+
endpoint=add_recipe_to_project_t.ENDPOINT_PATH,
|
|
178
|
+
args=args,
|
|
179
|
+
request_options=_request_options,
|
|
180
|
+
)
|
|
181
|
+
return self.do_request(api_request=api_request, return_type=add_recipe_to_project_t.Data)
|
|
182
|
+
|
|
183
|
+
def external_add_time_series_data(
|
|
184
|
+
self,
|
|
185
|
+
*,
|
|
186
|
+
time_series_segment_key: identifier_t.IdentifierKey,
|
|
187
|
+
time_series_data: list[add_time_series_data_t.TimeSeriesDatum],
|
|
188
|
+
on_conflict: add_time_series_data_t.OnTimepointConflict = add_time_series_data_t.OnTimepointConflict.ERROR,
|
|
189
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
190
|
+
) -> add_time_series_data_t.Data:
|
|
191
|
+
"""Add timepoint data to a time series segment.
|
|
192
|
+
|
|
193
|
+
:param time_series_segment_key: The time series segment to add data to
|
|
194
|
+
:param time_series_data: The data to add to the time series segment
|
|
195
|
+
:param on_conflict: What to do if a TimeSeriesDatum already exists at the same timestamp
|
|
196
|
+
"""
|
|
197
|
+
args = add_time_series_data_t.Arguments(
|
|
198
|
+
time_series_segment_key=time_series_segment_key,
|
|
199
|
+
time_series_data=time_series_data,
|
|
200
|
+
on_conflict=on_conflict,
|
|
201
|
+
)
|
|
202
|
+
api_request = APIRequest(
|
|
203
|
+
method=add_time_series_data_t.ENDPOINT_METHOD,
|
|
204
|
+
endpoint=add_time_series_data_t.ENDPOINT_PATH,
|
|
205
|
+
args=args,
|
|
206
|
+
request_options=_request_options,
|
|
207
|
+
)
|
|
208
|
+
return self.do_request(api_request=api_request, return_type=add_time_series_data_t.Data)
|
|
209
|
+
|
|
87
210
|
def archive_recipes(
|
|
88
211
|
self,
|
|
89
212
|
*,
|
|
90
213
|
recipes: list[identifier_t.IdentifierKey],
|
|
91
|
-
reason:
|
|
214
|
+
reason: str | None = None,
|
|
215
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
92
216
|
) -> archive_recipes_t.Data:
|
|
93
217
|
"""Archive the provided recipes and their children
|
|
94
218
|
|
|
@@ -103,28 +227,58 @@ class ClientMethods(ABC):
|
|
|
103
227
|
method=archive_recipes_t.ENDPOINT_METHOD,
|
|
104
228
|
endpoint=archive_recipes_t.ENDPOINT_PATH,
|
|
105
229
|
args=args,
|
|
230
|
+
request_options=_request_options,
|
|
106
231
|
)
|
|
107
232
|
return self.do_request(api_request=api_request, return_type=archive_recipes_t.Data)
|
|
108
233
|
|
|
234
|
+
def associate_equipment_input(
|
|
235
|
+
self,
|
|
236
|
+
*,
|
|
237
|
+
equipment_key: identifier_t.IdentifierKey,
|
|
238
|
+
material_family_ids: list[base_t.ObjectId],
|
|
239
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
240
|
+
) -> associate_equipment_input_t.Data:
|
|
241
|
+
"""Create or return the input association for equipment
|
|
242
|
+
|
|
243
|
+
:param equipment_key: Identifier of the equipment to associate
|
|
244
|
+
:param material_family_ids: The list of material families to add the input to. This must be non-empty
|
|
245
|
+
"""
|
|
246
|
+
args = associate_equipment_input_t.Arguments(
|
|
247
|
+
equipment_key=equipment_key,
|
|
248
|
+
material_family_ids=material_family_ids,
|
|
249
|
+
)
|
|
250
|
+
api_request = APIRequest(
|
|
251
|
+
method=associate_equipment_input_t.ENDPOINT_METHOD,
|
|
252
|
+
endpoint=associate_equipment_input_t.ENDPOINT_PATH,
|
|
253
|
+
args=args,
|
|
254
|
+
request_options=_request_options,
|
|
255
|
+
)
|
|
256
|
+
return self.do_request(api_request=api_request, return_type=associate_equipment_input_t.Data)
|
|
257
|
+
|
|
109
258
|
def associate_recipe_as_input(
|
|
110
259
|
self,
|
|
111
260
|
*,
|
|
112
261
|
recipe_key: identifier_t.IdentifierKey,
|
|
113
|
-
input_key:
|
|
262
|
+
input_key: identifier_t.IdentifierKey | None = None,
|
|
263
|
+
show_in_listings: bool | None = None,
|
|
264
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
114
265
|
) -> associate_recipe_as_input_t.Data:
|
|
115
266
|
"""Create or return the input association for a recipe
|
|
116
267
|
|
|
117
268
|
:param recipe_key: Identifier for the recipe
|
|
118
269
|
:param input_key: Identifier for an input to use for the association. Optionally supplied. If not supplied, one is created
|
|
270
|
+
:param show_in_listings: After associating the input should it be present in listings
|
|
119
271
|
"""
|
|
120
272
|
args = associate_recipe_as_input_t.Arguments(
|
|
121
273
|
recipe_key=recipe_key,
|
|
122
274
|
input_key=input_key,
|
|
275
|
+
show_in_listings=show_in_listings,
|
|
123
276
|
)
|
|
124
277
|
api_request = APIRequest(
|
|
125
278
|
method=associate_recipe_as_input_t.ENDPOINT_METHOD,
|
|
126
279
|
endpoint=associate_recipe_as_input_t.ENDPOINT_PATH,
|
|
127
280
|
args=args,
|
|
281
|
+
request_options=_request_options,
|
|
128
282
|
)
|
|
129
283
|
return self.do_request(api_request=api_request, return_type=associate_recipe_as_input_t.Data)
|
|
130
284
|
|
|
@@ -133,6 +287,7 @@ class ClientMethods(ABC):
|
|
|
133
287
|
*,
|
|
134
288
|
recipe_key: identifier_t.IdentifierKey,
|
|
135
289
|
ingredient_key: identifier_t.IdentifierKey,
|
|
290
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
136
291
|
) -> associate_recipe_as_lot_t.Data:
|
|
137
292
|
"""Create a new lot association for the provided recipe with the provided ingredient
|
|
138
293
|
|
|
@@ -147,13 +302,82 @@ class ClientMethods(ABC):
|
|
|
147
302
|
method=associate_recipe_as_lot_t.ENDPOINT_METHOD,
|
|
148
303
|
endpoint=associate_recipe_as_lot_t.ENDPOINT_PATH,
|
|
149
304
|
args=args,
|
|
305
|
+
request_options=_request_options,
|
|
150
306
|
)
|
|
151
307
|
return self.do_request(api_request=api_request, return_type=associate_recipe_as_lot_t.Data)
|
|
152
308
|
|
|
309
|
+
def clear_recipe_outputs(
|
|
310
|
+
self,
|
|
311
|
+
*,
|
|
312
|
+
recipe_key: identifier_t.IdentifierKey,
|
|
313
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
314
|
+
) -> clear_recipe_outputs_t.Data:
|
|
315
|
+
"""Clears all output values & output metadata for a given recipe
|
|
316
|
+
|
|
317
|
+
:param recipe_key: The identifier of the recipe
|
|
318
|
+
"""
|
|
319
|
+
args = clear_recipe_outputs_t.Arguments(
|
|
320
|
+
recipe_key=recipe_key,
|
|
321
|
+
)
|
|
322
|
+
api_request = APIRequest(
|
|
323
|
+
method=clear_recipe_outputs_t.ENDPOINT_METHOD,
|
|
324
|
+
endpoint=clear_recipe_outputs_t.ENDPOINT_PATH,
|
|
325
|
+
args=args,
|
|
326
|
+
request_options=_request_options,
|
|
327
|
+
)
|
|
328
|
+
return self.do_request(api_request=api_request, return_type=clear_recipe_outputs_t.Data)
|
|
329
|
+
|
|
330
|
+
def complete_async_parse(
|
|
331
|
+
self,
|
|
332
|
+
*,
|
|
333
|
+
parsed_file_data: list[uploader_t.ParsedFileData],
|
|
334
|
+
async_job_key: identifier_t.IdentifierKey,
|
|
335
|
+
upload_destination: generic_upload_t.UploadDestinationRecipe,
|
|
336
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
337
|
+
) -> complete_async_parse_t.Data:
|
|
338
|
+
"""Parses uploaded files asynchronously
|
|
339
|
+
|
|
340
|
+
"""
|
|
341
|
+
args = complete_async_parse_t.Arguments(
|
|
342
|
+
parsed_file_data=parsed_file_data,
|
|
343
|
+
async_job_key=async_job_key,
|
|
344
|
+
upload_destination=upload_destination,
|
|
345
|
+
)
|
|
346
|
+
api_request = APIRequest(
|
|
347
|
+
method=complete_async_parse_t.ENDPOINT_METHOD,
|
|
348
|
+
endpoint=complete_async_parse_t.ENDPOINT_PATH,
|
|
349
|
+
args=args,
|
|
350
|
+
request_options=_request_options,
|
|
351
|
+
)
|
|
352
|
+
return self.do_request(api_request=api_request, return_type=complete_async_parse_t.Data)
|
|
353
|
+
|
|
354
|
+
def complete_async_upload(
|
|
355
|
+
self,
|
|
356
|
+
*,
|
|
357
|
+
async_job_id: base_t.ObjectId,
|
|
358
|
+
file_id: base_t.ObjectId,
|
|
359
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
360
|
+
) -> complete_async_upload_t.Data:
|
|
361
|
+
"""Processes an file id with a given async job id to be uploaded asynchronously
|
|
362
|
+
|
|
363
|
+
"""
|
|
364
|
+
args = complete_async_upload_t.Arguments(
|
|
365
|
+
async_job_id=async_job_id,
|
|
366
|
+
file_id=file_id,
|
|
367
|
+
)
|
|
368
|
+
api_request = APIRequest(
|
|
369
|
+
method=complete_async_upload_t.ENDPOINT_METHOD,
|
|
370
|
+
endpoint=complete_async_upload_t.ENDPOINT_PATH,
|
|
371
|
+
args=args,
|
|
372
|
+
request_options=_request_options,
|
|
373
|
+
)
|
|
374
|
+
return self.do_request(api_request=api_request, return_type=complete_async_upload_t.Data)
|
|
375
|
+
|
|
153
376
|
def convert_chemical_formats(
|
|
154
377
|
self,
|
|
155
378
|
*,
|
|
156
379
|
source_chemical_structures: list[convert_chemical_formats_t.ChemicalStructureFile],
|
|
380
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
157
381
|
) -> convert_chemical_formats_t.Data:
|
|
158
382
|
"""Converts chemical formats, into the format used by Uncountable and usable in other APIs for eg. set_input_attribute_values
|
|
159
383
|
|
|
@@ -165,24 +389,29 @@ class ClientMethods(ABC):
|
|
|
165
389
|
method=convert_chemical_formats_t.ENDPOINT_METHOD,
|
|
166
390
|
endpoint=convert_chemical_formats_t.ENDPOINT_PATH,
|
|
167
391
|
args=args,
|
|
392
|
+
request_options=_request_options,
|
|
168
393
|
)
|
|
169
394
|
return self.do_request(api_request=api_request, return_type=convert_chemical_formats_t.Data)
|
|
170
395
|
|
|
171
396
|
def create_entities(
|
|
172
397
|
self,
|
|
173
398
|
*,
|
|
174
|
-
|
|
175
|
-
entity_type: typing.Union[typing.Literal[entity_t.EntityType.LAB_REQUEST], typing.Literal[entity_t.EntityType.APPROVAL], typing.Literal[entity_t.EntityType.CUSTOM_ENTITY], typing.Literal[entity_t.EntityType.INVENTORY_AMOUNT], typing.Literal[entity_t.EntityType.TASK], typing.Literal[entity_t.EntityType.PROJECT], typing.Literal[entity_t.EntityType.EQUIPMENT], typing.Literal[entity_t.EntityType.INV_LOCAL_LOCATIONS], typing.Literal[entity_t.EntityType.FIELD_OPTION_SET], typing.Literal[entity_t.EntityType.WEBHOOK]],
|
|
399
|
+
entity_type: entity_t.LimitedEntityType,
|
|
176
400
|
entities_to_create: list[create_entities_t.EntityToCreate],
|
|
401
|
+
definition_id: base_t.ObjectId | None = None,
|
|
402
|
+
definition_key: identifier_t.IdentifierKey | None = None,
|
|
403
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
177
404
|
) -> create_entities_t.Data:
|
|
178
405
|
"""Creates new Uncountable entities
|
|
179
406
|
|
|
180
407
|
:param definition_id: Definition id for the entities to create
|
|
408
|
+
:param definition_key: Key for the definition of the entities to create
|
|
181
409
|
:param entity_type: The type of the entities to create
|
|
182
410
|
:param entities_to_create: A list of the entities to create
|
|
183
411
|
"""
|
|
184
412
|
args = create_entities_t.Arguments(
|
|
185
413
|
definition_id=definition_id,
|
|
414
|
+
definition_key=definition_key,
|
|
186
415
|
entity_type=entity_type,
|
|
187
416
|
entities_to_create=entities_to_create,
|
|
188
417
|
)
|
|
@@ -190,30 +419,39 @@ class ClientMethods(ABC):
|
|
|
190
419
|
method=create_entities_t.ENDPOINT_METHOD,
|
|
191
420
|
endpoint=create_entities_t.ENDPOINT_PATH,
|
|
192
421
|
args=args,
|
|
422
|
+
request_options=_request_options,
|
|
193
423
|
)
|
|
194
424
|
return self.do_request(api_request=api_request, return_type=create_entities_t.Data)
|
|
195
425
|
|
|
196
426
|
def create_entity(
|
|
197
427
|
self,
|
|
198
428
|
*,
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
429
|
+
entity_type: entity_t.LimitedEntityType,
|
|
430
|
+
definition_id: base_t.ObjectId | None = None,
|
|
431
|
+
definition_key: identifier_t.IdentifierKey | None = None,
|
|
432
|
+
field_values: list[field_values_t.FieldRefNameValue] | None = None,
|
|
433
|
+
parent_entity: entity_t.Entity | None = None,
|
|
434
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
202
435
|
) -> create_entity_t.Data:
|
|
203
436
|
"""Creates a new Uncountable entity
|
|
204
437
|
|
|
205
438
|
:param definition_id: Definition id of the entity to create
|
|
439
|
+
:param definition_key: Key for the definition of the entity to create
|
|
206
440
|
:param entity_type: The type of the entities requested
|
|
441
|
+
:param parent_entity: The parent entity associated for this new entity. This only applies if there is a pre-defined relationship.
|
|
207
442
|
"""
|
|
208
443
|
args = create_entity_t.Arguments(
|
|
209
444
|
definition_id=definition_id,
|
|
445
|
+
definition_key=definition_key,
|
|
210
446
|
entity_type=entity_type,
|
|
211
447
|
field_values=field_values,
|
|
448
|
+
parent_entity=parent_entity,
|
|
212
449
|
)
|
|
213
450
|
api_request = APIRequest(
|
|
214
451
|
method=create_entity_t.ENDPOINT_METHOD,
|
|
215
452
|
endpoint=create_entity_t.ENDPOINT_PATH,
|
|
216
453
|
args=args,
|
|
454
|
+
request_options=_request_options,
|
|
217
455
|
)
|
|
218
456
|
return self.do_request(api_request=api_request, return_type=create_entity_t.Data)
|
|
219
457
|
|
|
@@ -221,6 +459,7 @@ class ClientMethods(ABC):
|
|
|
221
459
|
self,
|
|
222
460
|
*,
|
|
223
461
|
inputs_to_create: list[create_inputs_t.InputToCreate],
|
|
462
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
224
463
|
) -> create_inputs_t.Data:
|
|
225
464
|
"""Creates new inputs
|
|
226
465
|
|
|
@@ -233,24 +472,79 @@ class ClientMethods(ABC):
|
|
|
233
472
|
method=create_inputs_t.ENDPOINT_METHOD,
|
|
234
473
|
endpoint=create_inputs_t.ENDPOINT_PATH,
|
|
235
474
|
args=args,
|
|
475
|
+
request_options=_request_options,
|
|
236
476
|
)
|
|
237
477
|
return self.do_request(api_request=api_request, return_type=create_inputs_t.Data)
|
|
238
478
|
|
|
479
|
+
def create_mix_order(
|
|
480
|
+
self,
|
|
481
|
+
*,
|
|
482
|
+
recipe_key: identifier_t.IdentifierKey,
|
|
483
|
+
recipe_workflow_step_identifier: recipe_workflow_steps_t.RecipeWorkflowStepIdentifier,
|
|
484
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
485
|
+
) -> create_mix_order_t.Data:
|
|
486
|
+
"""Creates mix order on a recipe workflow step
|
|
487
|
+
|
|
488
|
+
"""
|
|
489
|
+
args = create_mix_order_t.Arguments(
|
|
490
|
+
recipe_key=recipe_key,
|
|
491
|
+
recipe_workflow_step_identifier=recipe_workflow_step_identifier,
|
|
492
|
+
)
|
|
493
|
+
api_request = APIRequest(
|
|
494
|
+
method=create_mix_order_t.ENDPOINT_METHOD,
|
|
495
|
+
endpoint=create_mix_order_t.ENDPOINT_PATH,
|
|
496
|
+
args=args,
|
|
497
|
+
request_options=_request_options,
|
|
498
|
+
)
|
|
499
|
+
return self.do_request(api_request=api_request, return_type=create_mix_order_t.Data)
|
|
500
|
+
|
|
501
|
+
def create_or_update_entity(
|
|
502
|
+
self,
|
|
503
|
+
*,
|
|
504
|
+
entity_type: entity_t.EntityType,
|
|
505
|
+
definition_key: identifier_t.IdentifierKey,
|
|
506
|
+
field_values: list[field_values_t.FieldArgumentValue],
|
|
507
|
+
entity_key: identifier_t.IdentifierKey | None = None,
|
|
508
|
+
on_create_init_field_values: list[field_values_t.FieldArgumentValue] | None = None,
|
|
509
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
510
|
+
) -> create_or_update_entity_t.Data:
|
|
511
|
+
"""Creates or updates field values for an entity
|
|
512
|
+
|
|
513
|
+
:param on_create_init_field_values: Field values set only when the entity is created (will be ignored if entity already exists)
|
|
514
|
+
"""
|
|
515
|
+
args = create_or_update_entity_t.Arguments(
|
|
516
|
+
entity_key=entity_key,
|
|
517
|
+
entity_type=entity_type,
|
|
518
|
+
definition_key=definition_key,
|
|
519
|
+
field_values=field_values,
|
|
520
|
+
on_create_init_field_values=on_create_init_field_values,
|
|
521
|
+
)
|
|
522
|
+
api_request = APIRequest(
|
|
523
|
+
method=create_or_update_entity_t.ENDPOINT_METHOD,
|
|
524
|
+
endpoint=create_or_update_entity_t.ENDPOINT_PATH,
|
|
525
|
+
args=args,
|
|
526
|
+
request_options=_request_options,
|
|
527
|
+
)
|
|
528
|
+
return self.do_request(api_request=api_request, return_type=create_or_update_entity_t.Data)
|
|
529
|
+
|
|
239
530
|
def create_recipe(
|
|
240
531
|
self,
|
|
241
532
|
*,
|
|
242
533
|
material_family_id: base_t.ObjectId,
|
|
243
534
|
workflow_id: base_t.ObjectId,
|
|
244
|
-
name:
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
535
|
+
name: str | None = None,
|
|
536
|
+
project_id: base_t.ObjectId | None = None,
|
|
537
|
+
workflow_variant_id: base_t.ObjectId | None = None,
|
|
538
|
+
recipe_metadata: list[recipe_metadata_t.MetadataValue] | None = None,
|
|
539
|
+
identifiers: recipe_identifiers_t.RecipeIdentifiers | None = None,
|
|
540
|
+
definition_key: identifier_t.IdentifierKey | None = None,
|
|
541
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
249
542
|
) -> create_recipe_t.Data:
|
|
250
543
|
"""Returns the id of the recipe being created.
|
|
251
544
|
|
|
252
545
|
:param name: The name for the recipe
|
|
253
546
|
:param material_family_id: The material family for the recipe
|
|
547
|
+
:param project_id: The identifier of the project to create the recipe in
|
|
254
548
|
:param workflow_id: The identifier of the workflow to create the recipe with
|
|
255
549
|
:param workflow_variant_id: The identifier of the workflow variant to create the recipe with
|
|
256
550
|
:param recipe_metadata: Metadata values to populate the recipe with
|
|
@@ -260,6 +554,7 @@ class ClientMethods(ABC):
|
|
|
260
554
|
args = create_recipe_t.Arguments(
|
|
261
555
|
name=name,
|
|
262
556
|
material_family_id=material_family_id,
|
|
557
|
+
project_id=project_id,
|
|
263
558
|
workflow_id=workflow_id,
|
|
264
559
|
workflow_variant_id=workflow_variant_id,
|
|
265
560
|
recipe_metadata=recipe_metadata,
|
|
@@ -270,6 +565,7 @@ class ClientMethods(ABC):
|
|
|
270
565
|
method=create_recipe_t.ENDPOINT_METHOD,
|
|
271
566
|
endpoint=create_recipe_t.ENDPOINT_PATH,
|
|
272
567
|
args=args,
|
|
568
|
+
request_options=_request_options,
|
|
273
569
|
)
|
|
274
570
|
return self.do_request(api_request=api_request, return_type=create_recipe_t.Data)
|
|
275
571
|
|
|
@@ -278,8 +574,9 @@ class ClientMethods(ABC):
|
|
|
278
574
|
*,
|
|
279
575
|
recipe_from_key: identifier_t.IdentifierKey,
|
|
280
576
|
recipe_to_key: identifier_t.IdentifierKey,
|
|
281
|
-
link_type: typing.
|
|
282
|
-
name: str,
|
|
577
|
+
link_type: typing.Literal[recipe_links_t.RecipeLinkType.CHILD] | typing.Literal[recipe_links_t.RecipeLinkType.CONTROL] | typing.Literal[recipe_links_t.RecipeLinkType.USER_LINK] | typing.Literal[recipe_links_t.RecipeLinkType.PREVIOUS_EXPERIMENT],
|
|
578
|
+
name: str | None = None,
|
|
579
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
283
580
|
) -> create_recipe_link_t.Data:
|
|
284
581
|
"""Create a link between two recipes. Skip if the link already exists
|
|
285
582
|
|
|
@@ -298,6 +595,7 @@ class ClientMethods(ABC):
|
|
|
298
595
|
method=create_recipe_link_t.ENDPOINT_METHOD,
|
|
299
596
|
endpoint=create_recipe_link_t.ENDPOINT_PATH,
|
|
300
597
|
args=args,
|
|
598
|
+
request_options=_request_options,
|
|
301
599
|
)
|
|
302
600
|
return self.do_request(api_request=api_request, return_type=create_recipe_link_t.Data)
|
|
303
601
|
|
|
@@ -306,9 +604,10 @@ class ClientMethods(ABC):
|
|
|
306
604
|
*,
|
|
307
605
|
material_family_id: base_t.ObjectId,
|
|
308
606
|
recipe_definitions: list[create_recipes_t.CreateRecipeDefinition],
|
|
309
|
-
project_id:
|
|
607
|
+
project_id: base_t.ObjectId | None = None,
|
|
608
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
310
609
|
) -> create_recipes_t.Data:
|
|
311
|
-
"""
|
|
610
|
+
"""Creates recipes in Uncountable, optionally with metadata values, and returns the resulting ids in corresponding order
|
|
312
611
|
|
|
313
612
|
:param material_family_id: The identifier of the material family to create the recipes in
|
|
314
613
|
:param project_id: The identifier of the project to create the recipes in
|
|
@@ -322,6 +621,7 @@ class ClientMethods(ABC):
|
|
|
322
621
|
method=create_recipes_t.ENDPOINT_METHOD,
|
|
323
622
|
endpoint=create_recipes_t.ENDPOINT_PATH,
|
|
324
623
|
args=args,
|
|
624
|
+
request_options=_request_options,
|
|
325
625
|
)
|
|
326
626
|
return self.do_request(api_request=api_request, return_type=create_recipes_t.Data)
|
|
327
627
|
|
|
@@ -329,6 +629,7 @@ class ClientMethods(ABC):
|
|
|
329
629
|
self,
|
|
330
630
|
*,
|
|
331
631
|
recipe_key: identifier_t.IdentifierKey,
|
|
632
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
332
633
|
) -> disassociate_recipe_as_input_t.Data:
|
|
333
634
|
"""Remove any association between a recipe and ingredients
|
|
334
635
|
|
|
@@ -341,6 +642,7 @@ class ClientMethods(ABC):
|
|
|
341
642
|
method=disassociate_recipe_as_input_t.ENDPOINT_METHOD,
|
|
342
643
|
endpoint=disassociate_recipe_as_input_t.ENDPOINT_PATH,
|
|
343
644
|
args=args,
|
|
645
|
+
request_options=_request_options,
|
|
344
646
|
)
|
|
345
647
|
return self.do_request(api_request=api_request, return_type=disassociate_recipe_as_input_t.Data)
|
|
346
648
|
|
|
@@ -350,6 +652,7 @@ class ClientMethods(ABC):
|
|
|
350
652
|
recipe_key: identifier_t.IdentifierKey,
|
|
351
653
|
recipe_workflow_step_identifier: recipe_workflow_steps_t.RecipeWorkflowStepIdentifier,
|
|
352
654
|
edits: list[edit_recipe_inputs_t.RecipeInputEdit],
|
|
655
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
353
656
|
) -> edit_recipe_inputs_t.Data:
|
|
354
657
|
"""Clear, update, or add inputs on a recipe
|
|
355
658
|
|
|
@@ -364,6 +667,7 @@ class ClientMethods(ABC):
|
|
|
364
667
|
method=edit_recipe_inputs_t.ENDPOINT_METHOD,
|
|
365
668
|
endpoint=edit_recipe_inputs_t.ENDPOINT_PATH,
|
|
366
669
|
args=args,
|
|
670
|
+
request_options=_request_options,
|
|
367
671
|
)
|
|
368
672
|
return self.do_request(api_request=api_request, return_type=edit_recipe_inputs_t.Data)
|
|
369
673
|
|
|
@@ -371,6 +675,7 @@ class ClientMethods(ABC):
|
|
|
371
675
|
self,
|
|
372
676
|
*,
|
|
373
677
|
requests: list[execute_batch_t.BatchRequest],
|
|
678
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
374
679
|
) -> execute_batch_t.Data:
|
|
375
680
|
"""Run multiple API calls via one request
|
|
376
681
|
|
|
@@ -382,6 +687,7 @@ class ClientMethods(ABC):
|
|
|
382
687
|
method=execute_batch_t.ENDPOINT_METHOD,
|
|
383
688
|
endpoint=execute_batch_t.ENDPOINT_PATH,
|
|
384
689
|
args=args,
|
|
690
|
+
request_options=_request_options,
|
|
385
691
|
)
|
|
386
692
|
return self.do_request(api_request=api_request, return_type=execute_batch_t.Data)
|
|
387
693
|
|
|
@@ -389,6 +695,7 @@ class ClientMethods(ABC):
|
|
|
389
695
|
self,
|
|
390
696
|
*,
|
|
391
697
|
requests: list[async_batch_t.AsyncBatchRequest],
|
|
698
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
392
699
|
) -> execute_batch_load_async_t.Data:
|
|
393
700
|
"""Run multiple API calls via one request
|
|
394
701
|
|
|
@@ -400,14 +707,120 @@ class ClientMethods(ABC):
|
|
|
400
707
|
method=execute_batch_load_async_t.ENDPOINT_METHOD,
|
|
401
708
|
endpoint=execute_batch_load_async_t.ENDPOINT_PATH,
|
|
402
709
|
args=args,
|
|
710
|
+
request_options=_request_options,
|
|
403
711
|
)
|
|
404
712
|
return self.do_request(api_request=api_request, return_type=execute_batch_load_async_t.Data)
|
|
405
713
|
|
|
714
|
+
def export_entities(
|
|
715
|
+
self,
|
|
716
|
+
*,
|
|
717
|
+
config_key: identifier_t.IdentifierKey,
|
|
718
|
+
type: exports_t.ExportType = exports_t.ExportType.EXCEL,
|
|
719
|
+
client_timezone: exports_t.ListingExportUserTimezone | None = None,
|
|
720
|
+
limit: int | None = None,
|
|
721
|
+
attributes: list[export_entities_t.ListingAttribute] | None = None,
|
|
722
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
723
|
+
) -> export_entities_t.Data:
|
|
724
|
+
"""Uses a structured loading configuration to export entities in the system. This endpoint is asynchronous, and returns the job ID that can be used to query the status of the export.
|
|
725
|
+
|
|
726
|
+
:param config_key: The configuration reference for the listing config
|
|
727
|
+
:param limit: The number of data points to return. If not filled in, all filtered entities will be included in the export.
|
|
728
|
+
"""
|
|
729
|
+
args = export_entities_t.Arguments(
|
|
730
|
+
config_key=config_key,
|
|
731
|
+
client_timezone=client_timezone,
|
|
732
|
+
limit=limit,
|
|
733
|
+
type=type,
|
|
734
|
+
attributes=attributes,
|
|
735
|
+
)
|
|
736
|
+
api_request = APIRequest(
|
|
737
|
+
method=export_entities_t.ENDPOINT_METHOD,
|
|
738
|
+
endpoint=export_entities_t.ENDPOINT_PATH,
|
|
739
|
+
args=args,
|
|
740
|
+
request_options=_request_options,
|
|
741
|
+
)
|
|
742
|
+
return self.do_request(api_request=api_request, return_type=export_entities_t.Data)
|
|
743
|
+
|
|
744
|
+
def fetch_listing(
|
|
745
|
+
self,
|
|
746
|
+
*,
|
|
747
|
+
entity_type: entity_t.EntityType,
|
|
748
|
+
columns: list[listing_t.ColumnIdentifier],
|
|
749
|
+
filters: structured_filters_t.FilterNode | None = None,
|
|
750
|
+
limit: int | None = None,
|
|
751
|
+
offset: int | None = None,
|
|
752
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
753
|
+
) -> fetch_listing_t.Data:
|
|
754
|
+
"""External API for fetching a listing based on some structured columns and filters
|
|
755
|
+
|
|
756
|
+
:param entity_type: The entity type to fetch listing entries for
|
|
757
|
+
:param columns: The columns to include in the results
|
|
758
|
+
:param filters: Structured filters to apply to the listing, represented by a FilterNode object
|
|
759
|
+
:param limit: The number of entries to return. If not provided, defaults to 100. Note a maximum of 100 entries can be returned.
|
|
760
|
+
:param offset: The number of entries to skip for pagination
|
|
761
|
+
"""
|
|
762
|
+
args = fetch_listing_t.Arguments(
|
|
763
|
+
entity_type=entity_type,
|
|
764
|
+
columns=columns,
|
|
765
|
+
filters=filters,
|
|
766
|
+
limit=limit,
|
|
767
|
+
offset=offset,
|
|
768
|
+
)
|
|
769
|
+
api_request = APIRequest(
|
|
770
|
+
method=fetch_listing_t.ENDPOINT_METHOD,
|
|
771
|
+
endpoint=fetch_listing_t.ENDPOINT_PATH,
|
|
772
|
+
args=args,
|
|
773
|
+
request_options=_request_options,
|
|
774
|
+
)
|
|
775
|
+
return self.do_request(api_request=api_request, return_type=fetch_listing_t.Data)
|
|
776
|
+
|
|
777
|
+
def get_column_calculation_values(
|
|
778
|
+
self,
|
|
779
|
+
*,
|
|
780
|
+
recipe_keys: list[identifier_t.IdentifierKey],
|
|
781
|
+
calculation_key: identifier_t.IdentifierKey,
|
|
782
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
783
|
+
) -> get_column_calculation_values_t.Data:
|
|
784
|
+
"""Get the values for a column calculations for recipes
|
|
785
|
+
|
|
786
|
+
:param recipe_keys: Required: The recipe keys to load values for
|
|
787
|
+
:param calculation_key: Required: The calculation key to get the values for
|
|
788
|
+
"""
|
|
789
|
+
args = get_column_calculation_values_t.Arguments(
|
|
790
|
+
recipe_keys=recipe_keys,
|
|
791
|
+
calculation_key=calculation_key,
|
|
792
|
+
)
|
|
793
|
+
api_request = APIRequest(
|
|
794
|
+
method=get_column_calculation_values_t.ENDPOINT_METHOD,
|
|
795
|
+
endpoint=get_column_calculation_values_t.ENDPOINT_PATH,
|
|
796
|
+
args=args,
|
|
797
|
+
request_options=_request_options,
|
|
798
|
+
)
|
|
799
|
+
return self.do_request(api_request=api_request, return_type=get_column_calculation_values_t.Data)
|
|
800
|
+
|
|
801
|
+
def get_current_user_info(
|
|
802
|
+
self,
|
|
803
|
+
*,
|
|
804
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
805
|
+
) -> get_current_user_info_t.Data:
|
|
806
|
+
"""Return information about the current user
|
|
807
|
+
|
|
808
|
+
"""
|
|
809
|
+
args = get_current_user_info_t.Arguments()
|
|
810
|
+
api_request = APIRequest(
|
|
811
|
+
method=get_current_user_info_t.ENDPOINT_METHOD,
|
|
812
|
+
endpoint=get_current_user_info_t.ENDPOINT_PATH,
|
|
813
|
+
args=args,
|
|
814
|
+
request_options=_request_options,
|
|
815
|
+
)
|
|
816
|
+
return self.do_request(api_request=api_request, return_type=get_current_user_info_t.Data)
|
|
817
|
+
|
|
406
818
|
def get_curve(
|
|
407
819
|
self,
|
|
408
820
|
*,
|
|
409
|
-
recipe_output_id:
|
|
410
|
-
recipe_input_id:
|
|
821
|
+
recipe_output_id: base_t.ObjectId | None = None,
|
|
822
|
+
recipe_input_id: base_t.ObjectId | None = None,
|
|
823
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
411
824
|
) -> get_curve_t.Data:
|
|
412
825
|
"""Returns an array of values for the specified curve id.
|
|
413
826
|
|
|
@@ -422,6 +835,7 @@ class ClientMethods(ABC):
|
|
|
422
835
|
method=get_curve_t.ENDPOINT_METHOD,
|
|
423
836
|
endpoint=get_curve_t.ENDPOINT_PATH,
|
|
424
837
|
args=args,
|
|
838
|
+
request_options=_request_options,
|
|
425
839
|
)
|
|
426
840
|
return self.do_request(api_request=api_request, return_type=get_curve_t.Data)
|
|
427
841
|
|
|
@@ -430,6 +844,7 @@ class ClientMethods(ABC):
|
|
|
430
844
|
*,
|
|
431
845
|
entity_ids: list[base_t.ObjectId],
|
|
432
846
|
entity_type: entity_t.EntityType,
|
|
847
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
433
848
|
) -> get_entities_data_t.Data:
|
|
434
849
|
"""Gets the details for a passed entity
|
|
435
850
|
|
|
@@ -444,6 +859,7 @@ class ClientMethods(ABC):
|
|
|
444
859
|
method=get_entities_data_t.ENDPOINT_METHOD,
|
|
445
860
|
endpoint=get_entities_data_t.ENDPOINT_PATH,
|
|
446
861
|
args=args,
|
|
862
|
+
request_options=_request_options,
|
|
447
863
|
)
|
|
448
864
|
return self.do_request(api_request=api_request, return_type=get_entities_data_t.Data)
|
|
449
865
|
|
|
@@ -451,18 +867,19 @@ class ClientMethods(ABC):
|
|
|
451
867
|
self,
|
|
452
868
|
*,
|
|
453
869
|
material_family_id: base_t.ObjectId,
|
|
454
|
-
input_ids:
|
|
455
|
-
is_parameter:
|
|
456
|
-
offset:
|
|
457
|
-
limit:
|
|
870
|
+
input_ids: list[base_t.ObjectId] | None,
|
|
871
|
+
is_parameter: bool | None,
|
|
872
|
+
offset: int | None = None,
|
|
873
|
+
limit: int | None = None,
|
|
874
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
458
875
|
) -> get_input_data_t.Data:
|
|
459
876
|
"""Gets the attribute, categorization and other metadata associated with a set of inputs. An input is either an ingredient or process parameter, with metadata and calculations assigned separately
|
|
460
877
|
|
|
461
878
|
:param material_family_id: The material family ID to get the input values from.
|
|
462
879
|
:param input_ids: The input IDs to get the data from. If this is not filled in, all inputs from a material family will be returned (in paginated form).
|
|
463
|
-
:param offset: Used for pagination, where the number of results returned exceeds the limit. Results are always ordered by the input ID
|
|
880
|
+
:param offset: Used for pagination, where the number of results returned exceeds the limit. Results are always ordered by the input ID. [Pagination More Info](#pagination)
|
|
464
881
|
:param is_parameter: Whether to get parameters or ingredients. By default both are returned. When set to true, only parameters are returned, and when set to false, only ingredients are returned
|
|
465
|
-
:param limit: The maximum number of results to return. By default this is set to 1,000 and it cannot be set higher than 1,000
|
|
882
|
+
:param limit: The maximum number of results to return. By default this is set to 1,000 and it cannot be set higher than 1,000. [Pagination More Info](#pagination)
|
|
466
883
|
"""
|
|
467
884
|
args = get_input_data_t.Arguments(
|
|
468
885
|
material_family_id=material_family_id,
|
|
@@ -475,6 +892,7 @@ class ClientMethods(ABC):
|
|
|
475
892
|
method=get_input_data_t.ENDPOINT_METHOD,
|
|
476
893
|
endpoint=get_input_data_t.ENDPOINT_PATH,
|
|
477
894
|
args=args,
|
|
895
|
+
request_options=_request_options,
|
|
478
896
|
)
|
|
479
897
|
return self.do_request(api_request=api_request, return_type=get_input_data_t.Data)
|
|
480
898
|
|
|
@@ -482,6 +900,7 @@ class ClientMethods(ABC):
|
|
|
482
900
|
self,
|
|
483
901
|
*,
|
|
484
902
|
material_family_id: base_t.ObjectId,
|
|
903
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
485
904
|
) -> get_input_group_names_t.Data:
|
|
486
905
|
"""Gets the name of all input groups in a material family that either the user created, or are shared to all users.
|
|
487
906
|
|
|
@@ -494,6 +913,7 @@ class ClientMethods(ABC):
|
|
|
494
913
|
method=get_input_group_names_t.ENDPOINT_METHOD,
|
|
495
914
|
endpoint=get_input_group_names_t.ENDPOINT_PATH,
|
|
496
915
|
args=args,
|
|
916
|
+
request_options=_request_options,
|
|
497
917
|
)
|
|
498
918
|
return self.do_request(api_request=api_request, return_type=get_input_group_names_t.Data)
|
|
499
919
|
|
|
@@ -501,16 +921,17 @@ class ClientMethods(ABC):
|
|
|
501
921
|
self,
|
|
502
922
|
*,
|
|
503
923
|
material_family_id: base_t.ObjectId,
|
|
504
|
-
is_parameter:
|
|
505
|
-
offset:
|
|
506
|
-
limit:
|
|
924
|
+
is_parameter: bool | None,
|
|
925
|
+
offset: int | None = None,
|
|
926
|
+
limit: int | None = None,
|
|
927
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
507
928
|
) -> get_input_names_t.Data:
|
|
508
929
|
"""Gets the name of all inputs for a material family. An input is either an ingredient or process parameter, with metadata and calculations assigned separately
|
|
509
930
|
|
|
510
931
|
:param material_family_id: The material family ID to get the input values from
|
|
511
|
-
:param offset: Used for pagination, where the number of results returned exceeds the limit. Results are always ordered by the input ID
|
|
932
|
+
:param offset: Used for pagination, where the number of results returned exceeds the limit. Results are always ordered by the input ID. [Pagination More Info](#pagination)
|
|
512
933
|
:param is_parameter: Whether to get parameters or ingredients. By default both are returned. When set to true, only parameters are returned, and when set to false, only ingredients are returned
|
|
513
|
-
:param limit: The maximum number of results to return. By default this is set to 20,000 and it cannot be set higher than 20,000
|
|
934
|
+
:param limit: The maximum number of results to return. By default this is set to 20,000 and it cannot be set higher than 20,000. [Pagination More Info](#pagination)
|
|
514
935
|
"""
|
|
515
936
|
args = get_input_names_t.Arguments(
|
|
516
937
|
material_family_id=material_family_id,
|
|
@@ -522,6 +943,7 @@ class ClientMethods(ABC):
|
|
|
522
943
|
method=get_input_names_t.ENDPOINT_METHOD,
|
|
523
944
|
endpoint=get_input_names_t.ENDPOINT_PATH,
|
|
524
945
|
args=args,
|
|
946
|
+
request_options=_request_options,
|
|
525
947
|
)
|
|
526
948
|
return self.do_request(api_request=api_request, return_type=get_input_names_t.Data)
|
|
527
949
|
|
|
@@ -529,6 +951,7 @@ class ClientMethods(ABC):
|
|
|
529
951
|
self,
|
|
530
952
|
*,
|
|
531
953
|
input_ids: list[base_t.ObjectId],
|
|
954
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
532
955
|
) -> get_inputs_data_t.Data:
|
|
533
956
|
"""Gets the details for passed input ids
|
|
534
957
|
|
|
@@ -541,6 +964,7 @@ class ClientMethods(ABC):
|
|
|
541
964
|
method=get_inputs_data_t.ENDPOINT_METHOD,
|
|
542
965
|
endpoint=get_inputs_data_t.ENDPOINT_PATH,
|
|
543
966
|
args=args,
|
|
967
|
+
request_options=_request_options,
|
|
544
968
|
)
|
|
545
969
|
return self.do_request(api_request=api_request, return_type=get_inputs_data_t.Data)
|
|
546
970
|
|
|
@@ -548,16 +972,17 @@ class ClientMethods(ABC):
|
|
|
548
972
|
self,
|
|
549
973
|
*,
|
|
550
974
|
material_family_id: base_t.ObjectId,
|
|
551
|
-
output_ids:
|
|
552
|
-
offset:
|
|
553
|
-
limit:
|
|
975
|
+
output_ids: list[base_t.ObjectId] | None = None,
|
|
976
|
+
offset: int | None = None,
|
|
977
|
+
limit: int | None = None,
|
|
978
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
554
979
|
) -> get_output_data_t.Data:
|
|
555
980
|
"""Gets the attribute, categorization and other metadata associated with a set of outputs
|
|
556
981
|
|
|
557
982
|
:param material_family_id: The material family ID to get the output values from.
|
|
558
983
|
:param output_ids: The output IDs to get the data from. If this is not filled in, all outputs from a material family will be returned (in paginated form).
|
|
559
|
-
:param offset: Used for pagination, where the number of results returned exceeds the limit. Results are always ordered by the output ID
|
|
560
|
-
:param limit: The maximum number of results to return. By default this is set to 1,000 and it cannot be set higher than 1,000
|
|
984
|
+
:param offset: Used for pagination, where the number of results returned exceeds the limit. Results are always ordered by the output ID. [Pagination More Info](#pagination)
|
|
985
|
+
:param limit: The maximum number of results to return. By default this is set to 1,000 and it cannot be set higher than 1,000. [Pagination More Info](#pagination)
|
|
561
986
|
"""
|
|
562
987
|
args = get_output_data_t.Arguments(
|
|
563
988
|
material_family_id=material_family_id,
|
|
@@ -569,6 +994,7 @@ class ClientMethods(ABC):
|
|
|
569
994
|
method=get_output_data_t.ENDPOINT_METHOD,
|
|
570
995
|
endpoint=get_output_data_t.ENDPOINT_PATH,
|
|
571
996
|
args=args,
|
|
997
|
+
request_options=_request_options,
|
|
572
998
|
)
|
|
573
999
|
return self.do_request(api_request=api_request, return_type=get_output_data_t.Data)
|
|
574
1000
|
|
|
@@ -576,14 +1002,15 @@ class ClientMethods(ABC):
|
|
|
576
1002
|
self,
|
|
577
1003
|
*,
|
|
578
1004
|
material_family_id: base_t.ObjectId,
|
|
579
|
-
offset:
|
|
580
|
-
limit:
|
|
1005
|
+
offset: int | None = None,
|
|
1006
|
+
limit: int | None = None,
|
|
1007
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
581
1008
|
) -> get_output_names_t.Data:
|
|
582
1009
|
"""Gets the name of all outputs for a material family. An output represents a measurement value of any time (numeric, text, curve, etc). This includes calculations based off of other outputs, such as a calculated change over time
|
|
583
1010
|
|
|
584
1011
|
:param material_family_id: The material family ID to get the output values from
|
|
585
|
-
:param offset: Used for pagination, where the number of results returned exceeds the limit. Results are always ordered by the output ID
|
|
586
|
-
:param limit: The maximum number of results to return. By default this is set to 20,000 and it cannot be set higher than 20,000
|
|
1012
|
+
:param offset: Used for pagination, where the number of results returned exceeds the limit. Results are always ordered by the output ID. [Pagination More Info](#pagination)
|
|
1013
|
+
:param limit: The maximum number of results to return. By default this is set to 20,000 and it cannot be set higher than 20,000. [Pagination More Info](#pagination)
|
|
587
1014
|
"""
|
|
588
1015
|
args = get_output_names_t.Arguments(
|
|
589
1016
|
material_family_id=material_family_id,
|
|
@@ -594,6 +1021,7 @@ class ClientMethods(ABC):
|
|
|
594
1021
|
method=get_output_names_t.ENDPOINT_METHOD,
|
|
595
1022
|
endpoint=get_output_names_t.ENDPOINT_PATH,
|
|
596
1023
|
args=args,
|
|
1024
|
+
request_options=_request_options,
|
|
597
1025
|
)
|
|
598
1026
|
return self.do_request(api_request=api_request, return_type=get_output_names_t.Data)
|
|
599
1027
|
|
|
@@ -601,7 +1029,8 @@ class ClientMethods(ABC):
|
|
|
601
1029
|
self,
|
|
602
1030
|
*,
|
|
603
1031
|
all_material_families: bool,
|
|
604
|
-
material_family_id:
|
|
1032
|
+
material_family_id: base_t.ObjectId | None,
|
|
1033
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
605
1034
|
) -> get_projects_t.Data:
|
|
606
1035
|
"""Gets either all projects created in the platform, or the projects associated with a material family ID. Projects are where experiments are placed in Uncountable, similar to folders in a directory structure
|
|
607
1036
|
|
|
@@ -616,6 +1045,7 @@ class ClientMethods(ABC):
|
|
|
616
1045
|
method=get_projects_t.ENDPOINT_METHOD,
|
|
617
1046
|
endpoint=get_projects_t.ENDPOINT_PATH,
|
|
618
1047
|
args=args,
|
|
1048
|
+
request_options=_request_options,
|
|
619
1049
|
)
|
|
620
1050
|
return self.do_request(api_request=api_request, return_type=get_projects_t.Data)
|
|
621
1051
|
|
|
@@ -623,14 +1053,15 @@ class ClientMethods(ABC):
|
|
|
623
1053
|
self,
|
|
624
1054
|
*,
|
|
625
1055
|
project_ids: list[base_t.ObjectId],
|
|
626
|
-
offset:
|
|
627
|
-
limit:
|
|
1056
|
+
offset: int | None = None,
|
|
1057
|
+
limit: int | None = None,
|
|
1058
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
628
1059
|
) -> get_projects_data_t.Data:
|
|
629
1060
|
"""Gets either all data associated with a set of projects created in the platform. Because Uncountables recipe structure is complex, various data values are exploded out to increase efficiency in parsing, and this page is paginated to prevent too large of return values
|
|
630
1061
|
|
|
631
1062
|
:param project_ids: The projects to get the data from
|
|
632
|
-
:param offset: Used for pagination. All pagination is done in order of Project ID
|
|
633
|
-
:param limit: The number of data points to return. If not filled in, it will be set to 100, and cannot be set higher than 100
|
|
1063
|
+
:param offset: Used for pagination. All pagination is done in order of Project ID. [Pagination More Info](#pagination)
|
|
1064
|
+
:param limit: The number of data points to return. If not filled in, it will be set to 100, and cannot be set higher than 100. [Pagination More Info](#pagination)
|
|
634
1065
|
"""
|
|
635
1066
|
args = get_projects_data_t.Arguments(
|
|
636
1067
|
project_ids=project_ids,
|
|
@@ -641,6 +1072,7 @@ class ClientMethods(ABC):
|
|
|
641
1072
|
method=get_projects_data_t.ENDPOINT_METHOD,
|
|
642
1073
|
endpoint=get_projects_data_t.ENDPOINT_PATH,
|
|
643
1074
|
args=args,
|
|
1075
|
+
request_options=_request_options,
|
|
644
1076
|
)
|
|
645
1077
|
return self.do_request(api_request=api_request, return_type=get_projects_data_t.Data)
|
|
646
1078
|
|
|
@@ -648,7 +1080,8 @@ class ClientMethods(ABC):
|
|
|
648
1080
|
self,
|
|
649
1081
|
*,
|
|
650
1082
|
recipe_ids: list[base_t.ObjectId],
|
|
651
|
-
calculation_ids:
|
|
1083
|
+
calculation_ids: list[base_t.ObjectId] | None = None,
|
|
1084
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
652
1085
|
) -> get_recipe_calculations_t.Data:
|
|
653
1086
|
"""Gets the calculations for the passed recipes
|
|
654
1087
|
|
|
@@ -663,6 +1096,7 @@ class ClientMethods(ABC):
|
|
|
663
1096
|
method=get_recipe_calculations_t.ENDPOINT_METHOD,
|
|
664
1097
|
endpoint=get_recipe_calculations_t.ENDPOINT_PATH,
|
|
665
1098
|
args=args,
|
|
1099
|
+
request_options=_request_options,
|
|
666
1100
|
)
|
|
667
1101
|
return self.do_request(api_request=api_request, return_type=get_recipe_calculations_t.Data)
|
|
668
1102
|
|
|
@@ -671,7 +1105,8 @@ class ClientMethods(ABC):
|
|
|
671
1105
|
*,
|
|
672
1106
|
recipe_ids: list[base_t.ObjectId],
|
|
673
1107
|
depth: int = 1,
|
|
674
|
-
link_types:
|
|
1108
|
+
link_types: list[recipe_links_t.RecipeLinkType] | None,
|
|
1109
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
675
1110
|
) -> get_recipe_links_t.Data:
|
|
676
1111
|
"""Gets the links for the passed recipes
|
|
677
1112
|
|
|
@@ -688,6 +1123,7 @@ class ClientMethods(ABC):
|
|
|
688
1123
|
method=get_recipe_links_t.ENDPOINT_METHOD,
|
|
689
1124
|
endpoint=get_recipe_links_t.ENDPOINT_PATH,
|
|
690
1125
|
args=args,
|
|
1126
|
+
request_options=_request_options,
|
|
691
1127
|
)
|
|
692
1128
|
return self.do_request(api_request=api_request, return_type=get_recipe_links_t.Data)
|
|
693
1129
|
|
|
@@ -695,16 +1131,17 @@ class ClientMethods(ABC):
|
|
|
695
1131
|
self,
|
|
696
1132
|
*,
|
|
697
1133
|
material_family_id: base_t.ObjectId,
|
|
698
|
-
recipe_metadata_ids:
|
|
699
|
-
offset:
|
|
700
|
-
limit:
|
|
1134
|
+
recipe_metadata_ids: list[base_t.ObjectId] | None,
|
|
1135
|
+
offset: int | None = None,
|
|
1136
|
+
limit: int | None = None,
|
|
1137
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
701
1138
|
) -> get_recipe_metadata_data_t.Data:
|
|
702
1139
|
"""Gets the recipe metadata. Recipe metadata is data associated with experiments that is not an input, output or calculation, such as a sample ID.
|
|
703
1140
|
|
|
704
1141
|
:param material_family_id: The material family ID to get the recipe metadata values from.
|
|
705
1142
|
:param recipe_metadata_ids: The recipe metadata IDs to get the data from. If this is not filled in, all metadata from a material family will be returned (in paginated form).
|
|
706
|
-
:param offset: Used for pagination, where the number of results returned exceeds the limit. Results are always ordered by the metadata ID
|
|
707
|
-
:param limit: The maximum number of results to return. By default this is set to 1,000 and it cannot be set higher than 1,000
|
|
1143
|
+
:param offset: Used for pagination, where the number of results returned exceeds the limit. Results are always ordered by the metadata ID. [Pagination More Info](#pagination)
|
|
1144
|
+
:param limit: The maximum number of results to return. By default this is set to 1,000 and it cannot be set higher than 1,000. [Pagination More Info](#pagination)
|
|
708
1145
|
"""
|
|
709
1146
|
args = get_recipe_metadata_data_t.Arguments(
|
|
710
1147
|
material_family_id=material_family_id,
|
|
@@ -716,6 +1153,7 @@ class ClientMethods(ABC):
|
|
|
716
1153
|
method=get_recipe_metadata_data_t.ENDPOINT_METHOD,
|
|
717
1154
|
endpoint=get_recipe_metadata_data_t.ENDPOINT_PATH,
|
|
718
1155
|
args=args,
|
|
1156
|
+
request_options=_request_options,
|
|
719
1157
|
)
|
|
720
1158
|
return self.do_request(api_request=api_request, return_type=get_recipe_metadata_data_t.Data)
|
|
721
1159
|
|
|
@@ -723,6 +1161,7 @@ class ClientMethods(ABC):
|
|
|
723
1161
|
self,
|
|
724
1162
|
*,
|
|
725
1163
|
project_id: base_t.ObjectId,
|
|
1164
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
726
1165
|
) -> get_recipe_names_t.Data:
|
|
727
1166
|
"""Gets the name of all recipes (or experiments, used as synonyms by Uncountable) for a project. The call external_get_projects can be used to find projects
|
|
728
1167
|
|
|
@@ -735,6 +1174,7 @@ class ClientMethods(ABC):
|
|
|
735
1174
|
method=get_recipe_names_t.ENDPOINT_METHOD,
|
|
736
1175
|
endpoint=get_recipe_names_t.ENDPOINT_PATH,
|
|
737
1176
|
args=args,
|
|
1177
|
+
request_options=_request_options,
|
|
738
1178
|
)
|
|
739
1179
|
return self.do_request(api_request=api_request, return_type=get_recipe_names_t.Data)
|
|
740
1180
|
|
|
@@ -742,6 +1182,7 @@ class ClientMethods(ABC):
|
|
|
742
1182
|
self,
|
|
743
1183
|
*,
|
|
744
1184
|
recipe_output_ids: list[base_t.ObjectId],
|
|
1185
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
745
1186
|
) -> get_recipe_output_metadata_t.Data:
|
|
746
1187
|
"""Gets the metadata values for the passed recipe outputs
|
|
747
1188
|
|
|
@@ -754,53 +1195,149 @@ class ClientMethods(ABC):
|
|
|
754
1195
|
method=get_recipe_output_metadata_t.ENDPOINT_METHOD,
|
|
755
1196
|
endpoint=get_recipe_output_metadata_t.ENDPOINT_PATH,
|
|
756
1197
|
args=args,
|
|
1198
|
+
request_options=_request_options,
|
|
757
1199
|
)
|
|
758
1200
|
return self.do_request(api_request=api_request, return_type=get_recipe_output_metadata_t.Data)
|
|
759
1201
|
|
|
760
1202
|
def get_recipes_data(
|
|
761
1203
|
self,
|
|
762
1204
|
*,
|
|
763
|
-
recipe_ids:
|
|
764
|
-
project_id:
|
|
765
|
-
offset:
|
|
766
|
-
limit:
|
|
1205
|
+
recipe_ids: list[base_t.ObjectId] | None = None,
|
|
1206
|
+
project_id: base_t.ObjectId | None = None,
|
|
1207
|
+
offset: int | None = None,
|
|
1208
|
+
limit: int | None = None,
|
|
1209
|
+
empty_output_behavior: get_recipes_data_t.RecipeOutputInclusion | None = None,
|
|
1210
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
767
1211
|
) -> get_recipes_data_t.Data:
|
|
768
1212
|
"""Gets all data associated with a set of recipes. Because Uncountables recipe structure is complex, various data values are exploded out to increase efficiency in parsing, and this page is paginated to prevent too large of return values
|
|
769
1213
|
|
|
770
1214
|
:param recipe_ids: The recipes to get the data from. Either these or project_id must be filled in
|
|
771
1215
|
:param project_id: The projects to get the data from. Either these or recipe_ids must be filled in
|
|
772
|
-
:param offset: Used for pagination. All pagination is done in order of Recipe ID
|
|
773
|
-
:param limit: The number of data points to return. If not filled in, it will be set to 100, and cannot be set higher than 100
|
|
1216
|
+
:param offset: Used for pagination. All pagination is done in order of Recipe ID. [Pagination More Info](#pagination)
|
|
1217
|
+
:param limit: The number of data points to return. If not filled in, it will be set to 100, and cannot be set higher than 100. [Pagination More Info](#pagination)
|
|
1218
|
+
:param empty_output_behavior: Recipe output inclusion behavior for empty outputs. Empty recipe outputs are outputs added to the experiment that do not have a value associated with them.
|
|
774
1219
|
"""
|
|
775
1220
|
args = get_recipes_data_t.Arguments(
|
|
776
1221
|
recipe_ids=recipe_ids,
|
|
777
1222
|
project_id=project_id,
|
|
778
1223
|
offset=offset,
|
|
779
1224
|
limit=limit,
|
|
1225
|
+
empty_output_behavior=empty_output_behavior,
|
|
780
1226
|
)
|
|
781
1227
|
api_request = APIRequest(
|
|
782
1228
|
method=get_recipes_data_t.ENDPOINT_METHOD,
|
|
783
1229
|
endpoint=get_recipes_data_t.ENDPOINT_PATH,
|
|
784
1230
|
args=args,
|
|
1231
|
+
request_options=_request_options,
|
|
785
1232
|
)
|
|
786
1233
|
return self.do_request(api_request=api_request, return_type=get_recipes_data_t.Data)
|
|
787
1234
|
|
|
1235
|
+
def grant_entity_permissions(
|
|
1236
|
+
self,
|
|
1237
|
+
*,
|
|
1238
|
+
entity_type: entity_t.LimitedEntityType,
|
|
1239
|
+
entity_key: identifier_t.IdentifierKey,
|
|
1240
|
+
permission_types: list[entity_t.GrantableEntityPermissionType],
|
|
1241
|
+
user_keys: list[identifier_t.IdentifierKey] | None = None,
|
|
1242
|
+
user_group_keys: list[identifier_t.IdentifierKey] | None = None,
|
|
1243
|
+
all_users: bool | None = None,
|
|
1244
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1245
|
+
) -> grant_entity_permissions_t.Data:
|
|
1246
|
+
"""Grant entity permissions to a list of users or user groups or to all users.
|
|
1247
|
+
|
|
1248
|
+
"""
|
|
1249
|
+
args = grant_entity_permissions_t.Arguments(
|
|
1250
|
+
entity_type=entity_type,
|
|
1251
|
+
entity_key=entity_key,
|
|
1252
|
+
permission_types=permission_types,
|
|
1253
|
+
user_keys=user_keys,
|
|
1254
|
+
user_group_keys=user_group_keys,
|
|
1255
|
+
all_users=all_users,
|
|
1256
|
+
)
|
|
1257
|
+
api_request = APIRequest(
|
|
1258
|
+
method=grant_entity_permissions_t.ENDPOINT_METHOD,
|
|
1259
|
+
endpoint=grant_entity_permissions_t.ENDPOINT_PATH,
|
|
1260
|
+
args=args,
|
|
1261
|
+
request_options=_request_options,
|
|
1262
|
+
)
|
|
1263
|
+
return self.do_request(api_request=api_request, return_type=grant_entity_permissions_t.Data)
|
|
1264
|
+
|
|
1265
|
+
def invoke_uploader(
|
|
1266
|
+
self,
|
|
1267
|
+
*,
|
|
1268
|
+
uploader_key: identifier_t.IdentifierKey,
|
|
1269
|
+
destination: generic_upload_t.UploadDestination,
|
|
1270
|
+
file_id: base_t.ObjectId | None = None,
|
|
1271
|
+
file_ids: list[base_t.ObjectId] | None = None,
|
|
1272
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1273
|
+
) -> invoke_uploader_t.Data:
|
|
1274
|
+
"""Runs a file through an uploader.
|
|
1275
|
+
|
|
1276
|
+
:param file_id: DEPRECATED: use file_ids
|
|
1277
|
+
"""
|
|
1278
|
+
args = invoke_uploader_t.Arguments(
|
|
1279
|
+
file_id=file_id,
|
|
1280
|
+
file_ids=file_ids,
|
|
1281
|
+
uploader_key=uploader_key,
|
|
1282
|
+
destination=destination,
|
|
1283
|
+
)
|
|
1284
|
+
api_request = APIRequest(
|
|
1285
|
+
method=invoke_uploader_t.ENDPOINT_METHOD,
|
|
1286
|
+
endpoint=invoke_uploader_t.ENDPOINT_PATH,
|
|
1287
|
+
args=args,
|
|
1288
|
+
request_options=_request_options,
|
|
1289
|
+
)
|
|
1290
|
+
return self.do_request(api_request=api_request, return_type=invoke_uploader_t.Data)
|
|
1291
|
+
|
|
1292
|
+
def list_aggregate(
|
|
1293
|
+
self,
|
|
1294
|
+
*,
|
|
1295
|
+
config_reference: str,
|
|
1296
|
+
attribute_values: list[list_aggregate_t.AttributeValue] | None = None,
|
|
1297
|
+
offset: int | None = None,
|
|
1298
|
+
limit: int | None = None,
|
|
1299
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1300
|
+
) -> list_aggregate_t.Data:
|
|
1301
|
+
"""Uses a structured loading configuration to list aggregated data from the platform
|
|
1302
|
+
|
|
1303
|
+
:param config_reference: The configuration reference name for the listing config
|
|
1304
|
+
:param attribute_values: Attributes to pass to the configuration for parameterizing filters
|
|
1305
|
+
:param offset: Used for pagination. Pagination is done based on the sorting of the config. [Pagination More Info](#pagination)
|
|
1306
|
+
:param limit: The number of data points to return. If not filled in, it will be set to 100, and cannot be set higher than 100. [Pagination More Info](#pagination)
|
|
1307
|
+
"""
|
|
1308
|
+
args = list_aggregate_t.Arguments(
|
|
1309
|
+
config_reference=config_reference,
|
|
1310
|
+
attribute_values=attribute_values,
|
|
1311
|
+
offset=offset,
|
|
1312
|
+
limit=limit,
|
|
1313
|
+
)
|
|
1314
|
+
api_request = APIRequest(
|
|
1315
|
+
method=list_aggregate_t.ENDPOINT_METHOD,
|
|
1316
|
+
endpoint=list_aggregate_t.ENDPOINT_PATH,
|
|
1317
|
+
args=args,
|
|
1318
|
+
request_options=_request_options,
|
|
1319
|
+
)
|
|
1320
|
+
return self.do_request(api_request=api_request, return_type=list_aggregate_t.Data)
|
|
1321
|
+
|
|
788
1322
|
def list_entities(
|
|
789
1323
|
self,
|
|
790
1324
|
*,
|
|
791
|
-
entity_type: entity_t.EntityType,
|
|
792
1325
|
config_reference: str,
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
1326
|
+
entity_type: entity_t.EntityType | None = None,
|
|
1327
|
+
attributes: dict[OpaqueKey, base_t.JsonValue] | None = None,
|
|
1328
|
+
offset: int | None = None,
|
|
1329
|
+
limit: int | None = None,
|
|
1330
|
+
additional_filter_configs: list[list_entities_t.AdditionalFilterConfig] | None = None,
|
|
1331
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
796
1332
|
) -> list_entities_t.Data:
|
|
797
1333
|
"""Uses a structured loading configuration to list entities in the system
|
|
798
1334
|
|
|
799
|
-
:param entity_type: The type of the entities requested, e.g. lab_request, recipe
|
|
1335
|
+
:param entity_type: DEPRECATED: The type of the entities requested, e.g. lab_request, recipe
|
|
800
1336
|
:param config_reference: The configuration reference name for the listing config
|
|
801
1337
|
:param attributes: Attributes to pass to the configuration for parameterizing filters
|
|
802
|
-
:param offset: Used for pagination. Pagination is done based on the sorting of the config
|
|
803
|
-
:param limit: The number of data points to return. If not filled in, it will be set to 100, and cannot be set higher than 100
|
|
1338
|
+
:param offset: Used for pagination. Pagination is done based on the sorting of the config. [Pagination More Info](#pagination)
|
|
1339
|
+
:param limit: The number of data points to return. If not filled in, it will be set to 100, and cannot be set higher than 100. [Pagination More Info](#pagination)
|
|
1340
|
+
:param additional_filter_configs: Advanced property: Additional filter configurations to apply to the listing. A maximum of 10 additional filter configs are supported.
|
|
804
1341
|
"""
|
|
805
1342
|
args = list_entities_t.Arguments(
|
|
806
1343
|
entity_type=entity_type,
|
|
@@ -808,11 +1345,13 @@ class ClientMethods(ABC):
|
|
|
808
1345
|
attributes=attributes,
|
|
809
1346
|
offset=offset,
|
|
810
1347
|
limit=limit,
|
|
1348
|
+
additional_filter_configs=additional_filter_configs,
|
|
811
1349
|
)
|
|
812
1350
|
api_request = APIRequest(
|
|
813
1351
|
method=list_entities_t.ENDPOINT_METHOD,
|
|
814
1352
|
endpoint=list_entities_t.ENDPOINT_PATH,
|
|
815
1353
|
args=args,
|
|
1354
|
+
request_options=_request_options,
|
|
816
1355
|
)
|
|
817
1356
|
return self.do_request(api_request=api_request, return_type=list_entities_t.Data)
|
|
818
1357
|
|
|
@@ -821,15 +1360,16 @@ class ClientMethods(ABC):
|
|
|
821
1360
|
*,
|
|
822
1361
|
spec: id_source_t.IdSourceSpec,
|
|
823
1362
|
search_label: str,
|
|
824
|
-
offset:
|
|
825
|
-
limit:
|
|
1363
|
+
offset: int | None = None,
|
|
1364
|
+
limit: int | None = None,
|
|
1365
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
826
1366
|
) -> list_id_source_t.Data:
|
|
827
1367
|
"""Lists id and label pairs
|
|
828
1368
|
|
|
829
1369
|
:param spec: The id source spec to use
|
|
830
1370
|
:param search_label: Text to search within the labels to search matches
|
|
831
|
-
:param offset: Used for pagination. Pagination is done based on the sorting of the config
|
|
832
|
-
:param limit: The number of data points to return. If not filled in, it will be set to 100, and cannot be set higher than 100
|
|
1371
|
+
:param offset: Used for pagination. Pagination is done based on the sorting of the config. [Pagination More Info](#pagination)
|
|
1372
|
+
:param limit: The number of data points to return. If not filled in, it will be set to 100, and cannot be set higher than 100. [Pagination More Info](#pagination)
|
|
833
1373
|
"""
|
|
834
1374
|
args = list_id_source_t.Arguments(
|
|
835
1375
|
spec=spec,
|
|
@@ -841,14 +1381,100 @@ class ClientMethods(ABC):
|
|
|
841
1381
|
method=list_id_source_t.ENDPOINT_METHOD,
|
|
842
1382
|
endpoint=list_id_source_t.ENDPOINT_PATH,
|
|
843
1383
|
args=args,
|
|
1384
|
+
request_options=_request_options,
|
|
844
1385
|
)
|
|
845
1386
|
return self.do_request(api_request=api_request, return_type=list_id_source_t.Data)
|
|
846
1387
|
|
|
1388
|
+
def external_lock_entity(
|
|
1389
|
+
self,
|
|
1390
|
+
*,
|
|
1391
|
+
entity_key: identifier_t.IdentifierKey,
|
|
1392
|
+
entity_type: entity_t.EntityType,
|
|
1393
|
+
globally_removable: bool | None = None,
|
|
1394
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1395
|
+
) -> lock_entity_t.Data:
|
|
1396
|
+
"""Lock an entity
|
|
1397
|
+
|
|
1398
|
+
:param entity_key: Identifier for the entity
|
|
1399
|
+
:param globally_removable: Should the lock be removable by any user or just admins
|
|
1400
|
+
"""
|
|
1401
|
+
args = lock_entity_t.Arguments(
|
|
1402
|
+
entity_key=entity_key,
|
|
1403
|
+
entity_type=entity_type,
|
|
1404
|
+
globally_removable=globally_removable,
|
|
1405
|
+
)
|
|
1406
|
+
api_request = APIRequest(
|
|
1407
|
+
method=lock_entity_t.ENDPOINT_METHOD,
|
|
1408
|
+
endpoint=lock_entity_t.ENDPOINT_PATH,
|
|
1409
|
+
args=args,
|
|
1410
|
+
request_options=_request_options,
|
|
1411
|
+
)
|
|
1412
|
+
return self.do_request(api_request=api_request, return_type=lock_entity_t.Data)
|
|
1413
|
+
|
|
1414
|
+
def lock_recipes(
|
|
1415
|
+
self,
|
|
1416
|
+
*,
|
|
1417
|
+
type: lock_recipes_t.RecipeLockType = lock_recipes_t.RecipeLockType.ALL,
|
|
1418
|
+
recipes: list[identifier_t.IdentifierKey],
|
|
1419
|
+
globally_removable: bool,
|
|
1420
|
+
lock_samples: bool | None = None,
|
|
1421
|
+
comments: str | None = None,
|
|
1422
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1423
|
+
) -> lock_recipes_t.Data:
|
|
1424
|
+
"""Lock experiments. Experiments will require unlocking to be editable. Edits to the experiments are blocked while they are locked.
|
|
1425
|
+
|
|
1426
|
+
:param type: The type of lock to set.
|
|
1427
|
+
All = both inputs and measurements are locked.
|
|
1428
|
+
Inputs Only = only inputs are locked from editing.
|
|
1429
|
+
|
|
1430
|
+
:param recipes: The recipes to lock, a maximum of 100 can be sent
|
|
1431
|
+
:param globally_removable: If true any user can unlock the experiment. If false the locking user is the only user that can unlock.
|
|
1432
|
+
:param lock_samples: Should associated experiment test samples also be locked.
|
|
1433
|
+
:param comments: Optional comment describing the purpose of locking
|
|
1434
|
+
"""
|
|
1435
|
+
args = lock_recipes_t.Arguments(
|
|
1436
|
+
type=type,
|
|
1437
|
+
recipes=recipes,
|
|
1438
|
+
globally_removable=globally_removable,
|
|
1439
|
+
lock_samples=lock_samples,
|
|
1440
|
+
comments=comments,
|
|
1441
|
+
)
|
|
1442
|
+
api_request = APIRequest(
|
|
1443
|
+
method=lock_recipes_t.ENDPOINT_METHOD,
|
|
1444
|
+
endpoint=lock_recipes_t.ENDPOINT_PATH,
|
|
1445
|
+
args=args,
|
|
1446
|
+
request_options=_request_options,
|
|
1447
|
+
)
|
|
1448
|
+
return self.do_request(api_request=api_request, return_type=lock_recipes_t.Data)
|
|
1449
|
+
|
|
1450
|
+
def lookup_entity(
|
|
1451
|
+
self,
|
|
1452
|
+
*,
|
|
1453
|
+
entity_type: entity_t.EntityType,
|
|
1454
|
+
query: lookup_entity_t.LookupEntityQuery,
|
|
1455
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1456
|
+
) -> lookup_entity_t.Data:
|
|
1457
|
+
"""Look up an entity based on an identifier or field values
|
|
1458
|
+
|
|
1459
|
+
"""
|
|
1460
|
+
args = lookup_entity_t.Arguments(
|
|
1461
|
+
entity_type=entity_type,
|
|
1462
|
+
query=query,
|
|
1463
|
+
)
|
|
1464
|
+
api_request = APIRequest(
|
|
1465
|
+
method=lookup_entity_t.ENDPOINT_METHOD,
|
|
1466
|
+
endpoint=lookup_entity_t.ENDPOINT_PATH,
|
|
1467
|
+
args=args,
|
|
1468
|
+
request_options=_request_options,
|
|
1469
|
+
)
|
|
1470
|
+
return self.do_request(api_request=api_request, return_type=lookup_entity_t.Data)
|
|
1471
|
+
|
|
847
1472
|
def match_id_source(
|
|
848
1473
|
self,
|
|
849
1474
|
*,
|
|
850
1475
|
spec: id_source_t.IdSourceSpec,
|
|
851
1476
|
names: list[str],
|
|
1477
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
852
1478
|
) -> match_id_source_t.Data:
|
|
853
1479
|
"""Lists id and label pairs
|
|
854
1480
|
|
|
@@ -863,14 +1489,117 @@ class ClientMethods(ABC):
|
|
|
863
1489
|
method=match_id_source_t.ENDPOINT_METHOD,
|
|
864
1490
|
endpoint=match_id_source_t.ENDPOINT_PATH,
|
|
865
1491
|
args=args,
|
|
1492
|
+
request_options=_request_options,
|
|
866
1493
|
)
|
|
867
1494
|
return self.do_request(api_request=api_request, return_type=match_id_source_t.Data)
|
|
868
1495
|
|
|
1496
|
+
def push_notification(
|
|
1497
|
+
self,
|
|
1498
|
+
*,
|
|
1499
|
+
notification_targets: list[notifications_t.NotificationTarget],
|
|
1500
|
+
subject: str,
|
|
1501
|
+
message: str,
|
|
1502
|
+
display_notice: bool = False,
|
|
1503
|
+
entity: entity_t.EntityIdentifier | None = None,
|
|
1504
|
+
notice_configuration: notices_t.NotificationNoticeConfiguration | None = None,
|
|
1505
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1506
|
+
) -> push_notification_t.Data:
|
|
1507
|
+
"""Push a notification to a user or user group
|
|
1508
|
+
|
|
1509
|
+
"""
|
|
1510
|
+
args = push_notification_t.Arguments(
|
|
1511
|
+
notification_targets=notification_targets,
|
|
1512
|
+
subject=subject,
|
|
1513
|
+
message=message,
|
|
1514
|
+
entity=entity,
|
|
1515
|
+
display_notice=display_notice,
|
|
1516
|
+
notice_configuration=notice_configuration,
|
|
1517
|
+
)
|
|
1518
|
+
api_request = APIRequest(
|
|
1519
|
+
method=push_notification_t.ENDPOINT_METHOD,
|
|
1520
|
+
endpoint=push_notification_t.ENDPOINT_PATH,
|
|
1521
|
+
args=args,
|
|
1522
|
+
request_options=_request_options,
|
|
1523
|
+
)
|
|
1524
|
+
return self.do_request(api_request=api_request, return_type=push_notification_t.Data)
|
|
1525
|
+
|
|
1526
|
+
def register_sockets_token(
|
|
1527
|
+
self,
|
|
1528
|
+
*,
|
|
1529
|
+
socket_request: sockets_t.SocketTokenRequest,
|
|
1530
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1531
|
+
) -> register_sockets_token_t.Data:
|
|
1532
|
+
"""Request token for connecting to sockets server
|
|
1533
|
+
|
|
1534
|
+
"""
|
|
1535
|
+
args = register_sockets_token_t.Arguments(
|
|
1536
|
+
socket_request=socket_request,
|
|
1537
|
+
)
|
|
1538
|
+
api_request = APIRequest(
|
|
1539
|
+
method=register_sockets_token_t.ENDPOINT_METHOD,
|
|
1540
|
+
endpoint=register_sockets_token_t.ENDPOINT_PATH,
|
|
1541
|
+
args=args,
|
|
1542
|
+
request_options=_request_options,
|
|
1543
|
+
)
|
|
1544
|
+
return self.do_request(api_request=api_request, return_type=register_sockets_token_t.Data)
|
|
1545
|
+
|
|
1546
|
+
def remove_recipe_from_project(
|
|
1547
|
+
self,
|
|
1548
|
+
*,
|
|
1549
|
+
recipe_key: identifier_t.IdentifierKey,
|
|
1550
|
+
project_key: identifier_t.IdentifierKey,
|
|
1551
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1552
|
+
) -> remove_recipe_from_project_t.Data:
|
|
1553
|
+
"""Removes a recipe from a project
|
|
1554
|
+
|
|
1555
|
+
:param recipe_key: The identifier key of the recipe to remove from the project
|
|
1556
|
+
:param project_key: The identifier key of the project to remove the recipe from
|
|
1557
|
+
"""
|
|
1558
|
+
args = remove_recipe_from_project_t.Arguments(
|
|
1559
|
+
recipe_key=recipe_key,
|
|
1560
|
+
project_key=project_key,
|
|
1561
|
+
)
|
|
1562
|
+
api_request = APIRequest(
|
|
1563
|
+
method=remove_recipe_from_project_t.ENDPOINT_METHOD,
|
|
1564
|
+
endpoint=remove_recipe_from_project_t.ENDPOINT_PATH,
|
|
1565
|
+
args=args,
|
|
1566
|
+
request_options=_request_options,
|
|
1567
|
+
)
|
|
1568
|
+
return self.do_request(api_request=api_request, return_type=remove_recipe_from_project_t.Data)
|
|
1569
|
+
|
|
1570
|
+
def remove_recipe_link(
|
|
1571
|
+
self,
|
|
1572
|
+
*,
|
|
1573
|
+
recipe_from_key: identifier_t.IdentifierKey,
|
|
1574
|
+
recipe_to_key: identifier_t.IdentifierKey,
|
|
1575
|
+
link_type: typing.Literal[recipe_links_t.RecipeLinkType.CHILD] | typing.Literal[recipe_links_t.RecipeLinkType.CONTROL] | typing.Literal[recipe_links_t.RecipeLinkType.USER_LINK] | typing.Literal[recipe_links_t.RecipeLinkType.PREVIOUS_EXPERIMENT],
|
|
1576
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1577
|
+
) -> remove_recipe_link_t.Data:
|
|
1578
|
+
"""Remove a link between two recipes. Skip if the link doesn't already exist
|
|
1579
|
+
|
|
1580
|
+
:param recipe_from_key: Identifier for the recipe the link comes from
|
|
1581
|
+
:param recipe_to_key: Identifier for the recipe the link goes to
|
|
1582
|
+
:param link_type: The type of link being removed
|
|
1583
|
+
"""
|
|
1584
|
+
args = remove_recipe_link_t.Arguments(
|
|
1585
|
+
recipe_from_key=recipe_from_key,
|
|
1586
|
+
recipe_to_key=recipe_to_key,
|
|
1587
|
+
link_type=link_type,
|
|
1588
|
+
)
|
|
1589
|
+
api_request = APIRequest(
|
|
1590
|
+
method=remove_recipe_link_t.ENDPOINT_METHOD,
|
|
1591
|
+
endpoint=remove_recipe_link_t.ENDPOINT_PATH,
|
|
1592
|
+
args=args,
|
|
1593
|
+
request_options=_request_options,
|
|
1594
|
+
)
|
|
1595
|
+
return self.do_request(api_request=api_request, return_type=remove_recipe_link_t.Data)
|
|
1596
|
+
|
|
869
1597
|
def resolve_entity_ids(
|
|
870
1598
|
self,
|
|
871
1599
|
*,
|
|
872
|
-
entity_ids: list[
|
|
1600
|
+
entity_ids: list[str | base_t.ObjectId],
|
|
873
1601
|
entity_type: entity_t.EntityType,
|
|
1602
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
874
1603
|
) -> resolve_entity_ids_t.Data:
|
|
875
1604
|
"""Gets the names for passed in ids
|
|
876
1605
|
|
|
@@ -885,6 +1614,7 @@ class ClientMethods(ABC):
|
|
|
885
1614
|
method=resolve_entity_ids_t.ENDPOINT_METHOD,
|
|
886
1615
|
endpoint=resolve_entity_ids_t.ENDPOINT_PATH,
|
|
887
1616
|
args=args,
|
|
1617
|
+
request_options=_request_options,
|
|
888
1618
|
)
|
|
889
1619
|
return self.do_request(api_request=api_request, return_type=resolve_entity_ids_t.Data)
|
|
890
1620
|
|
|
@@ -892,6 +1622,7 @@ class ClientMethods(ABC):
|
|
|
892
1622
|
self,
|
|
893
1623
|
*,
|
|
894
1624
|
requested_conditions: list[resolve_output_conditions_t.ConditionRequest],
|
|
1625
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
895
1626
|
) -> resolve_output_conditions_t.Data:
|
|
896
1627
|
"""For the provided set of condition parameter id and values, returns the existing or newly created output condition id for that value and id pair.
|
|
897
1628
|
|
|
@@ -903,6 +1634,7 @@ class ClientMethods(ABC):
|
|
|
903
1634
|
method=resolve_output_conditions_t.ENDPOINT_METHOD,
|
|
904
1635
|
endpoint=resolve_output_conditions_t.ENDPOINT_PATH,
|
|
905
1636
|
args=args,
|
|
1637
|
+
request_options=_request_options,
|
|
906
1638
|
)
|
|
907
1639
|
return self.do_request(api_request=api_request, return_type=resolve_output_conditions_t.Data)
|
|
908
1640
|
|
|
@@ -910,7 +1642,8 @@ class ClientMethods(ABC):
|
|
|
910
1642
|
self,
|
|
911
1643
|
*,
|
|
912
1644
|
trigger_ref_name: str,
|
|
913
|
-
entity:
|
|
1645
|
+
entity: entity_t.Entity | None = None,
|
|
1646
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
914
1647
|
) -> run_trigger_t.Data:
|
|
915
1648
|
"""Runs a trigger. Requires admin access
|
|
916
1649
|
|
|
@@ -923,6 +1656,7 @@ class ClientMethods(ABC):
|
|
|
923
1656
|
method=run_trigger_t.ENDPOINT_METHOD,
|
|
924
1657
|
endpoint=run_trigger_t.ENDPOINT_PATH,
|
|
925
1658
|
args=args,
|
|
1659
|
+
request_options=_request_options,
|
|
926
1660
|
)
|
|
927
1661
|
return self.do_request(api_request=api_request, return_type=run_trigger_t.Data)
|
|
928
1662
|
|
|
@@ -932,8 +1666,9 @@ class ClientMethods(ABC):
|
|
|
932
1666
|
scope: set_core_permissions_t.PermissionsScope,
|
|
933
1667
|
permissions_types: list[permissions_t.CorePermissionType],
|
|
934
1668
|
update_type: post_base_t.UpdateType,
|
|
935
|
-
user_group_ids:
|
|
936
|
-
user_ids:
|
|
1669
|
+
user_group_ids: list[int] | None = None,
|
|
1670
|
+
user_ids: list[int] | None = None,
|
|
1671
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
937
1672
|
) -> set_core_permissions_t.Data:
|
|
938
1673
|
"""Sets recipe related permissions
|
|
939
1674
|
|
|
@@ -953,13 +1688,39 @@ class ClientMethods(ABC):
|
|
|
953
1688
|
method=set_core_permissions_t.ENDPOINT_METHOD,
|
|
954
1689
|
endpoint=set_core_permissions_t.ENDPOINT_PATH,
|
|
955
1690
|
args=args,
|
|
1691
|
+
request_options=_request_options,
|
|
956
1692
|
)
|
|
957
1693
|
return self.do_request(api_request=api_request, return_type=set_core_permissions_t.Data)
|
|
958
1694
|
|
|
1695
|
+
def set_entity_field_values(
|
|
1696
|
+
self,
|
|
1697
|
+
*,
|
|
1698
|
+
entity_identifier: entity_t.EntityIdentifier,
|
|
1699
|
+
field_values: list[field_values_t.FieldArgumentValue],
|
|
1700
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1701
|
+
) -> set_entity_field_values_t.Data:
|
|
1702
|
+
"""Sets field values for an entity
|
|
1703
|
+
|
|
1704
|
+
:param entity_identifier: Entity to update
|
|
1705
|
+
:param field_values: Field values to set
|
|
1706
|
+
"""
|
|
1707
|
+
args = set_entity_field_values_t.Arguments(
|
|
1708
|
+
entity_identifier=entity_identifier,
|
|
1709
|
+
field_values=field_values,
|
|
1710
|
+
)
|
|
1711
|
+
api_request = APIRequest(
|
|
1712
|
+
method=set_entity_field_values_t.ENDPOINT_METHOD,
|
|
1713
|
+
endpoint=set_entity_field_values_t.ENDPOINT_PATH,
|
|
1714
|
+
args=args,
|
|
1715
|
+
request_options=_request_options,
|
|
1716
|
+
)
|
|
1717
|
+
return self.do_request(api_request=api_request, return_type=set_entity_field_values_t.Data)
|
|
1718
|
+
|
|
959
1719
|
def set_input_attribute_values(
|
|
960
1720
|
self,
|
|
961
1721
|
*,
|
|
962
1722
|
attribute_values: list[set_input_attribute_values_t.InputAttributeValue],
|
|
1723
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
963
1724
|
) -> set_input_attribute_values_t.Data:
|
|
964
1725
|
"""Sets attribute values for an input
|
|
965
1726
|
|
|
@@ -972,13 +1733,93 @@ class ClientMethods(ABC):
|
|
|
972
1733
|
method=set_input_attribute_values_t.ENDPOINT_METHOD,
|
|
973
1734
|
endpoint=set_input_attribute_values_t.ENDPOINT_PATH,
|
|
974
1735
|
args=args,
|
|
1736
|
+
request_options=_request_options,
|
|
975
1737
|
)
|
|
976
1738
|
return self.do_request(api_request=api_request, return_type=set_input_attribute_values_t.Data)
|
|
977
1739
|
|
|
1740
|
+
def external_set_input_category(
|
|
1741
|
+
self,
|
|
1742
|
+
*,
|
|
1743
|
+
input_key: identifier_t.IdentifierKey,
|
|
1744
|
+
category_id: int | None,
|
|
1745
|
+
material_family_ids: list[int] | None = None,
|
|
1746
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1747
|
+
) -> set_input_category_t.Data:
|
|
1748
|
+
"""Sets subcategories for an input
|
|
1749
|
+
|
|
1750
|
+
:param input_key: Identifier for the input
|
|
1751
|
+
:param category_id: The category identifier to set. Null unsets the current category.
|
|
1752
|
+
:param material_family_ids: The material families to perform the update in
|
|
1753
|
+
"""
|
|
1754
|
+
args = set_input_category_t.Arguments(
|
|
1755
|
+
input_key=input_key,
|
|
1756
|
+
category_id=category_id,
|
|
1757
|
+
material_family_ids=material_family_ids,
|
|
1758
|
+
)
|
|
1759
|
+
api_request = APIRequest(
|
|
1760
|
+
method=set_input_category_t.ENDPOINT_METHOD,
|
|
1761
|
+
endpoint=set_input_category_t.ENDPOINT_PATH,
|
|
1762
|
+
args=args,
|
|
1763
|
+
request_options=_request_options,
|
|
1764
|
+
)
|
|
1765
|
+
return self.do_request(api_request=api_request, return_type=set_input_category_t.Data)
|
|
1766
|
+
|
|
1767
|
+
def external_set_input_subcategories(
|
|
1768
|
+
self,
|
|
1769
|
+
*,
|
|
1770
|
+
input_key: identifier_t.IdentifierKey,
|
|
1771
|
+
subcategory_ids: list[int],
|
|
1772
|
+
update_type: post_base_t.UpdateType,
|
|
1773
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1774
|
+
) -> set_input_subcategories_t.Data:
|
|
1775
|
+
"""Sets subcategories for an input
|
|
1776
|
+
|
|
1777
|
+
:param input_key: Identifier for the input
|
|
1778
|
+
:param subcategory_ids: The subcategory identifiers to set
|
|
1779
|
+
:param update_type: The type of update to perform
|
|
1780
|
+
"""
|
|
1781
|
+
args = set_input_subcategories_t.Arguments(
|
|
1782
|
+
input_key=input_key,
|
|
1783
|
+
subcategory_ids=subcategory_ids,
|
|
1784
|
+
update_type=update_type,
|
|
1785
|
+
)
|
|
1786
|
+
api_request = APIRequest(
|
|
1787
|
+
method=set_input_subcategories_t.ENDPOINT_METHOD,
|
|
1788
|
+
endpoint=set_input_subcategories_t.ENDPOINT_PATH,
|
|
1789
|
+
args=args,
|
|
1790
|
+
request_options=_request_options,
|
|
1791
|
+
)
|
|
1792
|
+
return self.do_request(api_request=api_request, return_type=set_input_subcategories_t.Data)
|
|
1793
|
+
|
|
1794
|
+
def set_intermediate_type(
|
|
1795
|
+
self,
|
|
1796
|
+
*,
|
|
1797
|
+
input_key: identifier_t.IdentifierKey,
|
|
1798
|
+
intermediate_type: set_intermediate_type_t.IntermediateType,
|
|
1799
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1800
|
+
) -> set_intermediate_type_t.Data:
|
|
1801
|
+
"""Sets the type of an intermediate ingredient.
|
|
1802
|
+
|
|
1803
|
+
:param input_key: The identifier key of the intermediate ingredient
|
|
1804
|
+
:param intermediate_type: The new type of the intermediate ingredient
|
|
1805
|
+
"""
|
|
1806
|
+
args = set_intermediate_type_t.Arguments(
|
|
1807
|
+
input_key=input_key,
|
|
1808
|
+
intermediate_type=intermediate_type,
|
|
1809
|
+
)
|
|
1810
|
+
api_request = APIRequest(
|
|
1811
|
+
method=set_intermediate_type_t.ENDPOINT_METHOD,
|
|
1812
|
+
endpoint=set_intermediate_type_t.ENDPOINT_PATH,
|
|
1813
|
+
args=args,
|
|
1814
|
+
request_options=_request_options,
|
|
1815
|
+
)
|
|
1816
|
+
return self.do_request(api_request=api_request, return_type=set_intermediate_type_t.Data)
|
|
1817
|
+
|
|
978
1818
|
def set_recipe_inputs(
|
|
979
1819
|
self,
|
|
980
1820
|
*,
|
|
981
1821
|
input_data: list[set_recipe_inputs_t.RecipeInputValue],
|
|
1822
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
982
1823
|
) -> set_recipe_inputs_t.Data:
|
|
983
1824
|
"""Sets inputs values for an experiment. Values set can be numeric, text or categorical types in the Uncountable system
|
|
984
1825
|
|
|
@@ -991,6 +1832,7 @@ class ClientMethods(ABC):
|
|
|
991
1832
|
method=set_recipe_inputs_t.ENDPOINT_METHOD,
|
|
992
1833
|
endpoint=set_recipe_inputs_t.ENDPOINT_PATH,
|
|
993
1834
|
args=args,
|
|
1835
|
+
request_options=_request_options,
|
|
994
1836
|
)
|
|
995
1837
|
return self.do_request(api_request=api_request, return_type=set_recipe_inputs_t.Data)
|
|
996
1838
|
|
|
@@ -999,6 +1841,7 @@ class ClientMethods(ABC):
|
|
|
999
1841
|
*,
|
|
1000
1842
|
recipe_key: identifier_t.IdentifierKey,
|
|
1001
1843
|
recipe_metadata: list[recipe_metadata_t.MetadataValue],
|
|
1844
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1002
1845
|
) -> set_recipe_metadata_t.Data:
|
|
1003
1846
|
"""Set metadata values on a recipe
|
|
1004
1847
|
|
|
@@ -1013,13 +1856,57 @@ class ClientMethods(ABC):
|
|
|
1013
1856
|
method=set_recipe_metadata_t.ENDPOINT_METHOD,
|
|
1014
1857
|
endpoint=set_recipe_metadata_t.ENDPOINT_PATH,
|
|
1015
1858
|
args=args,
|
|
1859
|
+
request_options=_request_options,
|
|
1016
1860
|
)
|
|
1017
1861
|
return self.do_request(api_request=api_request, return_type=set_recipe_metadata_t.Data)
|
|
1018
1862
|
|
|
1863
|
+
def set_recipe_output_annotations(
|
|
1864
|
+
self,
|
|
1865
|
+
*,
|
|
1866
|
+
updates: list[set_recipe_output_annotations_t.RecipeOutputUpdateAnnotations],
|
|
1867
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1868
|
+
) -> set_recipe_output_annotations_t.Data:
|
|
1869
|
+
"""Update annotations for an experiments outputs
|
|
1870
|
+
|
|
1871
|
+
:param updates: The output edits to perform. Must be at most 100 entries long
|
|
1872
|
+
"""
|
|
1873
|
+
args = set_recipe_output_annotations_t.Arguments(
|
|
1874
|
+
updates=updates,
|
|
1875
|
+
)
|
|
1876
|
+
api_request = APIRequest(
|
|
1877
|
+
method=set_recipe_output_annotations_t.ENDPOINT_METHOD,
|
|
1878
|
+
endpoint=set_recipe_output_annotations_t.ENDPOINT_PATH,
|
|
1879
|
+
args=args,
|
|
1880
|
+
request_options=_request_options,
|
|
1881
|
+
)
|
|
1882
|
+
return self.do_request(api_request=api_request, return_type=set_recipe_output_annotations_t.Data)
|
|
1883
|
+
|
|
1884
|
+
def set_recipe_output_file(
|
|
1885
|
+
self,
|
|
1886
|
+
*,
|
|
1887
|
+
output_file_data: set_recipe_output_file_t.RecipeOutputFileValue,
|
|
1888
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1889
|
+
) -> set_recipe_output_file_t.Data:
|
|
1890
|
+
"""Sets output file value for an experiment. Include a single file as part of the FormData of the request with the filename as the key
|
|
1891
|
+
|
|
1892
|
+
:param output_file_data: The output file to set
|
|
1893
|
+
"""
|
|
1894
|
+
args = set_recipe_output_file_t.Arguments(
|
|
1895
|
+
output_file_data=output_file_data,
|
|
1896
|
+
)
|
|
1897
|
+
api_request = APIRequest(
|
|
1898
|
+
method=set_recipe_output_file_t.ENDPOINT_METHOD,
|
|
1899
|
+
endpoint=set_recipe_output_file_t.ENDPOINT_PATH,
|
|
1900
|
+
args=args,
|
|
1901
|
+
request_options=_request_options,
|
|
1902
|
+
)
|
|
1903
|
+
return self.do_request(api_request=api_request, return_type=set_recipe_output_file_t.Data)
|
|
1904
|
+
|
|
1019
1905
|
def set_recipe_outputs(
|
|
1020
1906
|
self,
|
|
1021
1907
|
*,
|
|
1022
1908
|
output_data: list[set_recipe_outputs_t.RecipeOutputValue],
|
|
1909
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1023
1910
|
) -> set_recipe_outputs_t.Data:
|
|
1024
1911
|
"""Sets output values for an experiment. Values set can be numeric, text or categorical types in the Uncountable system
|
|
1025
1912
|
|
|
@@ -1032,6 +1919,7 @@ class ClientMethods(ABC):
|
|
|
1032
1919
|
method=set_recipe_outputs_t.ENDPOINT_METHOD,
|
|
1033
1920
|
endpoint=set_recipe_outputs_t.ENDPOINT_PATH,
|
|
1034
1921
|
args=args,
|
|
1922
|
+
request_options=_request_options,
|
|
1035
1923
|
)
|
|
1036
1924
|
return self.do_request(api_request=api_request, return_type=set_recipe_outputs_t.Data)
|
|
1037
1925
|
|
|
@@ -1040,6 +1928,7 @@ class ClientMethods(ABC):
|
|
|
1040
1928
|
*,
|
|
1041
1929
|
recipe_key: identifier_t.IdentifierKey,
|
|
1042
1930
|
recipe_tag_update: set_recipe_tags_t.RecipeTagUpdate,
|
|
1931
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1043
1932
|
) -> set_recipe_tags_t.Data:
|
|
1044
1933
|
"""Modifies recipes tags for a recipe
|
|
1045
1934
|
|
|
@@ -1054,14 +1943,46 @@ class ClientMethods(ABC):
|
|
|
1054
1943
|
method=set_recipe_tags_t.ENDPOINT_METHOD,
|
|
1055
1944
|
endpoint=set_recipe_tags_t.ENDPOINT_PATH,
|
|
1056
1945
|
args=args,
|
|
1946
|
+
request_options=_request_options,
|
|
1057
1947
|
)
|
|
1058
1948
|
return self.do_request(api_request=api_request, return_type=set_recipe_tags_t.Data)
|
|
1059
1949
|
|
|
1950
|
+
def set_recipe_total(
|
|
1951
|
+
self,
|
|
1952
|
+
*,
|
|
1953
|
+
recipe_key: identifier_t.IdentifierKey,
|
|
1954
|
+
value: set_recipe_total_t.ValueNumeric,
|
|
1955
|
+
recipe_workflow_step_identifier: recipe_workflow_steps_t.RecipeWorkflowStepIdentifier | None = None,
|
|
1956
|
+
calculation_key: identifier_t.IdentifierKey | None = None,
|
|
1957
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1958
|
+
) -> set_recipe_total_t.Data:
|
|
1959
|
+
"""Updates the Set Total value for a recipe or one of its workflow steps
|
|
1960
|
+
|
|
1961
|
+
:param recipe_key: Identifier for the recipe
|
|
1962
|
+
:param recipe_workflow_step_identifier: Identifier for the recipe workflow step
|
|
1963
|
+
:param value: The quantity in mass, volume, or moles to set for the total
|
|
1964
|
+
:param calculation_key: The linked basis calculation to set
|
|
1965
|
+
"""
|
|
1966
|
+
args = set_recipe_total_t.Arguments(
|
|
1967
|
+
recipe_key=recipe_key,
|
|
1968
|
+
recipe_workflow_step_identifier=recipe_workflow_step_identifier,
|
|
1969
|
+
value=value,
|
|
1970
|
+
calculation_key=calculation_key,
|
|
1971
|
+
)
|
|
1972
|
+
api_request = APIRequest(
|
|
1973
|
+
method=set_recipe_total_t.ENDPOINT_METHOD,
|
|
1974
|
+
endpoint=set_recipe_total_t.ENDPOINT_PATH,
|
|
1975
|
+
args=args,
|
|
1976
|
+
request_options=_request_options,
|
|
1977
|
+
)
|
|
1978
|
+
return self.do_request(api_request=api_request, return_type=set_recipe_total_t.Data)
|
|
1979
|
+
|
|
1060
1980
|
def set_values(
|
|
1061
1981
|
self,
|
|
1062
1982
|
*,
|
|
1063
1983
|
entity: entity_t.Entity,
|
|
1064
1984
|
values: list[field_values_t.ArgumentValueRefName],
|
|
1985
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1065
1986
|
) -> set_values_t.Data:
|
|
1066
1987
|
"""Sets field values for an entity
|
|
1067
1988
|
|
|
@@ -1074,25 +1995,186 @@ class ClientMethods(ABC):
|
|
|
1074
1995
|
method=set_values_t.ENDPOINT_METHOD,
|
|
1075
1996
|
endpoint=set_values_t.ENDPOINT_PATH,
|
|
1076
1997
|
args=args,
|
|
1998
|
+
request_options=_request_options,
|
|
1077
1999
|
)
|
|
1078
2000
|
return self.do_request(api_request=api_request, return_type=set_values_t.Data)
|
|
1079
2001
|
|
|
1080
2002
|
def transition_entity_phase(
|
|
1081
2003
|
self,
|
|
1082
2004
|
*,
|
|
1083
|
-
entity: entity_t.Entity,
|
|
1084
2005
|
transition: transition_entity_phase_t.TransitionIdentifier,
|
|
2006
|
+
entity: entity_t.Entity | None = None,
|
|
2007
|
+
entity_identifier: entity_t.EntityIdentifier | None = None,
|
|
2008
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
1085
2009
|
) -> transition_entity_phase_t.Data:
|
|
1086
2010
|
"""Transitions an entity from one phase to another
|
|
1087
2011
|
|
|
2012
|
+
:param entity: Entity to transition. If entity_identifier is provided, this should be omitted.
|
|
2013
|
+
:param entity_identifier: Identifier of the entity to transition. If entity is provided, this should be omitted.
|
|
2014
|
+
:param transition: Identifier of the transition to perform
|
|
1088
2015
|
"""
|
|
1089
2016
|
args = transition_entity_phase_t.Arguments(
|
|
1090
2017
|
entity=entity,
|
|
2018
|
+
entity_identifier=entity_identifier,
|
|
1091
2019
|
transition=transition,
|
|
1092
2020
|
)
|
|
1093
2021
|
api_request = APIRequest(
|
|
1094
2022
|
method=transition_entity_phase_t.ENDPOINT_METHOD,
|
|
1095
2023
|
endpoint=transition_entity_phase_t.ENDPOINT_PATH,
|
|
1096
2024
|
args=args,
|
|
2025
|
+
request_options=_request_options,
|
|
1097
2026
|
)
|
|
1098
2027
|
return self.do_request(api_request=api_request, return_type=transition_entity_phase_t.Data)
|
|
2028
|
+
|
|
2029
|
+
def unarchive_recipes(
|
|
2030
|
+
self,
|
|
2031
|
+
*,
|
|
2032
|
+
recipes: list[identifier_t.IdentifierKey],
|
|
2033
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
2034
|
+
) -> unarchive_recipes_t.Data:
|
|
2035
|
+
"""Unarchive/restore the provided recipes
|
|
2036
|
+
|
|
2037
|
+
:param recipes: Identifier for the recipe
|
|
2038
|
+
"""
|
|
2039
|
+
args = unarchive_recipes_t.Arguments(
|
|
2040
|
+
recipes=recipes,
|
|
2041
|
+
)
|
|
2042
|
+
api_request = APIRequest(
|
|
2043
|
+
method=unarchive_recipes_t.ENDPOINT_METHOD,
|
|
2044
|
+
endpoint=unarchive_recipes_t.ENDPOINT_PATH,
|
|
2045
|
+
args=args,
|
|
2046
|
+
request_options=_request_options,
|
|
2047
|
+
)
|
|
2048
|
+
return self.do_request(api_request=api_request, return_type=unarchive_recipes_t.Data)
|
|
2049
|
+
|
|
2050
|
+
def external_unlock_entity(
|
|
2051
|
+
self,
|
|
2052
|
+
*,
|
|
2053
|
+
entity_key: identifier_t.IdentifierKey,
|
|
2054
|
+
entity_type: entity_t.EntityType,
|
|
2055
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
2056
|
+
) -> unlock_entity_t.Data:
|
|
2057
|
+
"""Unlock an entity
|
|
2058
|
+
|
|
2059
|
+
:param entity_key: Identifier for the entity
|
|
2060
|
+
"""
|
|
2061
|
+
args = unlock_entity_t.Arguments(
|
|
2062
|
+
entity_key=entity_key,
|
|
2063
|
+
entity_type=entity_type,
|
|
2064
|
+
)
|
|
2065
|
+
api_request = APIRequest(
|
|
2066
|
+
method=unlock_entity_t.ENDPOINT_METHOD,
|
|
2067
|
+
endpoint=unlock_entity_t.ENDPOINT_PATH,
|
|
2068
|
+
args=args,
|
|
2069
|
+
request_options=_request_options,
|
|
2070
|
+
)
|
|
2071
|
+
return self.do_request(api_request=api_request, return_type=unlock_entity_t.Data)
|
|
2072
|
+
|
|
2073
|
+
def unlock_recipes(
|
|
2074
|
+
self,
|
|
2075
|
+
*,
|
|
2076
|
+
type: unlock_recipes_t.RecipeUnlockType = unlock_recipes_t.RecipeUnlockType.STANDARD,
|
|
2077
|
+
recipes: list[identifier_t.IdentifierKey],
|
|
2078
|
+
unlock_samples: bool | None = None,
|
|
2079
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
2080
|
+
) -> unlock_recipes_t.Data:
|
|
2081
|
+
"""Unlock experiments. Experiments will edtiable after unlocking if they are currently locked.
|
|
2082
|
+
|
|
2083
|
+
:param type: The method to unlock recipes. Default is standard.
|
|
2084
|
+
:param recipes: The recipes to unlock, a maximum of 100 can be sent
|
|
2085
|
+
:param unlock_samples: Should associated experiment test samples also be unlocked.
|
|
2086
|
+
"""
|
|
2087
|
+
args = unlock_recipes_t.Arguments(
|
|
2088
|
+
type=type,
|
|
2089
|
+
recipes=recipes,
|
|
2090
|
+
unlock_samples=unlock_samples,
|
|
2091
|
+
)
|
|
2092
|
+
api_request = APIRequest(
|
|
2093
|
+
method=unlock_recipes_t.ENDPOINT_METHOD,
|
|
2094
|
+
endpoint=unlock_recipes_t.ENDPOINT_PATH,
|
|
2095
|
+
args=args,
|
|
2096
|
+
request_options=_request_options,
|
|
2097
|
+
)
|
|
2098
|
+
return self.do_request(api_request=api_request, return_type=unlock_recipes_t.Data)
|
|
2099
|
+
|
|
2100
|
+
def update_entity_material_families(
|
|
2101
|
+
self,
|
|
2102
|
+
*,
|
|
2103
|
+
entity_key: identifier_t.IdentifierKey,
|
|
2104
|
+
entity_type: typing.Literal[entity_t.EntityType.RECIPE_METADATA] | typing.Literal[entity_t.EntityType.INGREDIENT] | typing.Literal[entity_t.EntityType.OUTPUT] | typing.Literal[entity_t.EntityType.CONDITION_PARAMETER] | typing.Literal[entity_t.EntityType.INGREDIENT_ATTRIBUTE] | typing.Literal[entity_t.EntityType.INGREDIENT_CATEGORY_ALL],
|
|
2105
|
+
material_family_ids: list[base_t.ObjectId],
|
|
2106
|
+
update_type: post_base_t.UpdateType,
|
|
2107
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
2108
|
+
) -> update_entity_material_families_t.Data:
|
|
2109
|
+
"""Updates the material families that the entity is available in
|
|
2110
|
+
|
|
2111
|
+
:param entity_key: The identifier for the entity to update across material families
|
|
2112
|
+
:param entity_type: The type of the entities requested
|
|
2113
|
+
:param material_family_ids: The material families to update
|
|
2114
|
+
:param update_type: The type of update to make
|
|
2115
|
+
"""
|
|
2116
|
+
args = update_entity_material_families_t.Arguments(
|
|
2117
|
+
entity_key=entity_key,
|
|
2118
|
+
entity_type=entity_type,
|
|
2119
|
+
material_family_ids=material_family_ids,
|
|
2120
|
+
update_type=update_type,
|
|
2121
|
+
)
|
|
2122
|
+
api_request = APIRequest(
|
|
2123
|
+
method=update_entity_material_families_t.ENDPOINT_METHOD,
|
|
2124
|
+
endpoint=update_entity_material_families_t.ENDPOINT_PATH,
|
|
2125
|
+
args=args,
|
|
2126
|
+
request_options=_request_options,
|
|
2127
|
+
)
|
|
2128
|
+
return self.do_request(api_request=api_request, return_type=update_entity_material_families_t.Data)
|
|
2129
|
+
|
|
2130
|
+
def upsert_condition_match(
|
|
2131
|
+
self,
|
|
2132
|
+
*,
|
|
2133
|
+
explicit_name: bool = False,
|
|
2134
|
+
name: str | None = None,
|
|
2135
|
+
condition_parameters: list[upsert_condition_match_t.ConditionParameter] | None = None,
|
|
2136
|
+
output_conditions: list[identifier_t.IdentifierKey] | None = None,
|
|
2137
|
+
existing_condition_match: identifier_t.IdentifierKey | None = None,
|
|
2138
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
2139
|
+
) -> upsert_condition_match_t.Data:
|
|
2140
|
+
"""Creates or updates condition match
|
|
2141
|
+
|
|
2142
|
+
"""
|
|
2143
|
+
args = upsert_condition_match_t.Arguments(
|
|
2144
|
+
name=name,
|
|
2145
|
+
condition_parameters=condition_parameters,
|
|
2146
|
+
output_conditions=output_conditions,
|
|
2147
|
+
explicit_name=explicit_name,
|
|
2148
|
+
existing_condition_match=existing_condition_match,
|
|
2149
|
+
)
|
|
2150
|
+
api_request = APIRequest(
|
|
2151
|
+
method=upsert_condition_match_t.ENDPOINT_METHOD,
|
|
2152
|
+
endpoint=upsert_condition_match_t.ENDPOINT_PATH,
|
|
2153
|
+
args=args,
|
|
2154
|
+
request_options=_request_options,
|
|
2155
|
+
)
|
|
2156
|
+
return self.do_request(api_request=api_request, return_type=upsert_condition_match_t.Data)
|
|
2157
|
+
|
|
2158
|
+
def upsert_field_options(
|
|
2159
|
+
self,
|
|
2160
|
+
*,
|
|
2161
|
+
option_set_key: identifier_t.IdentifierKey,
|
|
2162
|
+
field_options: list[upsert_field_options_t.FieldOption],
|
|
2163
|
+
_request_options: client_config_t.RequestOptions | None = None,
|
|
2164
|
+
) -> upsert_field_options_t.Data:
|
|
2165
|
+
"""Creates or updates field options for an option set
|
|
2166
|
+
|
|
2167
|
+
:param option_set_key: Identifier for the field option set
|
|
2168
|
+
:param field_options: Field options to upsert
|
|
2169
|
+
"""
|
|
2170
|
+
args = upsert_field_options_t.Arguments(
|
|
2171
|
+
option_set_key=option_set_key,
|
|
2172
|
+
field_options=field_options,
|
|
2173
|
+
)
|
|
2174
|
+
api_request = APIRequest(
|
|
2175
|
+
method=upsert_field_options_t.ENDPOINT_METHOD,
|
|
2176
|
+
endpoint=upsert_field_options_t.ENDPOINT_PATH,
|
|
2177
|
+
args=args,
|
|
2178
|
+
request_options=_request_options,
|
|
2179
|
+
)
|
|
2180
|
+
return self.do_request(api_request=api_request, return_type=upsert_field_options_t.Data)
|