UncountablePythonSDK 0.0.25__py3-none-any.whl → 0.0.27__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.
- {UncountablePythonSDK-0.0.25.dist-info → UncountablePythonSDK-0.0.27.dist-info}/METADATA +15 -15
- {UncountablePythonSDK-0.0.25.dist-info → UncountablePythonSDK-0.0.27.dist-info}/RECORD +42 -26
- examples/create_entity.py +1 -2
- pkgs/argument_parser/argument_parser.py +41 -6
- pkgs/type_spec/builder.py +6 -1
- pkgs/type_spec/emit_open_api.py +15 -6
- pkgs/type_spec/emit_open_api_util.py +1 -0
- type_spec/external/api/entity/list_entities.yaml +2 -2
- type_spec/external/api/entity/lock_entity.yaml +21 -0
- type_spec/external/api/entity/unlock_entity.yaml +18 -0
- type_spec/external/api/field_options/upsert_field_options.yaml +37 -0
- type_spec/external/api/id_source/list_id_source.yaml +2 -2
- type_spec/external/api/inputs/get_input_data.yaml +2 -2
- type_spec/external/api/inputs/get_input_names.yaml +2 -2
- type_spec/external/api/inputs/set_input_category.yaml +23 -0
- type_spec/external/api/inputs/set_input_subcategories.yaml +23 -0
- type_spec/external/api/material_families/update_entity_material_families.yaml +33 -0
- type_spec/external/api/outputs/get_output_data.yaml +2 -2
- type_spec/external/api/outputs/get_output_names.yaml +2 -2
- type_spec/external/api/project/get_projects_data.yaml +2 -2
- type_spec/external/api/recipe_metadata/get_recipe_metadata_data.yaml +2 -2
- type_spec/external/api/recipes/create_recipe.yaml +3 -0
- type_spec/external/api/recipes/get_recipes_data.yaml +2 -2
- type_spec/external/api/recipes/unarchive_recipes.yaml +17 -0
- uncountable/core/client.py +3 -3
- uncountable/core/file_upload.py +7 -4
- uncountable/core/types.py +2 -1
- uncountable/types/__init__.py +14 -0
- uncountable/types/api/entity/lock_entity.py +38 -0
- uncountable/types/api/entity/unlock_entity.py +37 -0
- uncountable/types/api/field_options/__init__.py +1 -0
- uncountable/types/api/field_options/upsert_field_options.py +45 -0
- uncountable/types/api/inputs/set_input_category.py +37 -0
- uncountable/types/api/inputs/set_input_subcategories.py +38 -0
- uncountable/types/api/material_families/__init__.py +1 -0
- uncountable/types/api/material_families/update_entity_material_families.py +41 -0
- uncountable/types/api/recipes/create_recipe.py +1 -0
- uncountable/types/api/recipes/unarchive_recipes.py +34 -0
- uncountable/types/async_batch_processor.py +3 -0
- uncountable/types/client_base.py +192 -18
- {UncountablePythonSDK-0.0.25.dist-info → UncountablePythonSDK-0.0.27.dist-info}/WHEEL +0 -0
- {UncountablePythonSDK-0.0.25.dist-info → UncountablePythonSDK-0.0.27.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: UncountablePythonSDK
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.27
|
|
4
4
|
Summary: Uncountable SDK
|
|
5
5
|
Project-URL: Homepage, https://github.com/uncountableinc/uncountable-python-sdk
|
|
6
6
|
Project-URL: Repository, https://github.com/uncountableinc/uncountable-python-sdk.git
|
|
@@ -16,21 +16,21 @@ Classifier: Topic :: Utilities
|
|
|
16
16
|
Classifier: Typing :: Typed
|
|
17
17
|
Requires-Python: >=3.11
|
|
18
18
|
Description-Content-Type: text/markdown
|
|
19
|
-
Requires-Dist: aiotus ==0
|
|
20
|
-
Requires-Dist: aiohttp ==3
|
|
21
|
-
Requires-Dist: requests ==2
|
|
22
|
-
Requires-Dist: SQLAlchemy ==1.4
|
|
23
|
-
Requires-Dist: APScheduler ==3
|
|
24
|
-
Requires-Dist: python-dateutil ==2
|
|
25
|
-
Requires-Dist: shelljob ==0
|
|
26
|
-
Requires-Dist: PyYAML ==6
|
|
19
|
+
Requires-Dist: aiotus ==0.*
|
|
20
|
+
Requires-Dist: aiohttp ==3.*
|
|
21
|
+
Requires-Dist: requests ==2.*
|
|
22
|
+
Requires-Dist: SQLAlchemy ==1.4.*
|
|
23
|
+
Requires-Dist: APScheduler ==3.*
|
|
24
|
+
Requires-Dist: python-dateutil ==2.*
|
|
25
|
+
Requires-Dist: shelljob ==0.*
|
|
26
|
+
Requires-Dist: PyYAML ==6.*
|
|
27
27
|
Provides-Extra: test
|
|
28
|
-
Requires-Dist: mypy
|
|
29
|
-
Requires-Dist: ruff
|
|
30
|
-
Requires-Dist: pytest
|
|
31
|
-
Requires-Dist: coverage[toml]
|
|
32
|
-
Requires-Dist: pytest-cov
|
|
33
|
-
Requires-Dist: pytest-xdist
|
|
28
|
+
Requires-Dist: mypy ==1.* ; extra == 'test'
|
|
29
|
+
Requires-Dist: ruff ==0.* ; extra == 'test'
|
|
30
|
+
Requires-Dist: pytest ==7.* ; extra == 'test'
|
|
31
|
+
Requires-Dist: coverage[toml] ==6.* ; extra == 'test'
|
|
32
|
+
Requires-Dist: pytest-cov ==4.* ; extra == 'test'
|
|
33
|
+
Requires-Dist: pytest-xdist ==3.* ; extra == 'test'
|
|
34
34
|
|
|
35
35
|
# Uncountable Python SDK
|
|
36
36
|
|
|
@@ -15,14 +15,14 @@ docs/static/favicons/manifest.json,sha256=6q_3nZkcg_x0xut4eE-xpdeMY1TydwiZIcbXlL
|
|
|
15
15
|
docs/static/favicons/mstile-150x150.png,sha256=eAK4QdEofhdLtfmjuPTpnX3MJqYnvGXsHYUjlcQekyY,1035
|
|
16
16
|
docs/static/favicons/safari-pinned-tab.svg,sha256=S84fRnz0ZxLnQrKtmmFZytiRyu1xLtMR_RVy5jmwU7k,1926
|
|
17
17
|
examples/async_batch.py,sha256=wpf_3P547375vTIO4pKv5vw6WCkUnzqvw_S3idfhjvM,1122
|
|
18
|
-
examples/create_entity.py,sha256=
|
|
18
|
+
examples/create_entity.py,sha256=j5dUB46_awRIsyiExE4sy4NqA9-wobAV41InQiLDgu4,601
|
|
19
19
|
examples/upload_files.py,sha256=ZsMChgOioraVHv207YREpivAOf4dq3IxGIBoROoDX_4,482
|
|
20
20
|
examples/recipe-import/importer.py,sha256=baD71xuNibxDTe3bGHsMEIZEf9Xtb-IumBNpCEV0RZU,1134
|
|
21
21
|
pkgs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
22
|
pkgs/argument_parser/__init__.py,sha256=CsQ6QoPKSLLRVl-z6URAmPkiUL9ZPZoV4rJHgy_-RjA,385
|
|
23
23
|
pkgs/argument_parser/_is_enum.py,sha256=Gw6jJa8nBwYGqXwwCZbSnWL8Rvr5alkg5lSVAqXtOZM,257
|
|
24
24
|
pkgs/argument_parser/_is_namedtuple.py,sha256=Rjc1bKanIPPogl3qG5JPBxglG1TqWYOo1nxxhBASQWY,265
|
|
25
|
-
pkgs/argument_parser/argument_parser.py,sha256=
|
|
25
|
+
pkgs/argument_parser/argument_parser.py,sha256=eqw4ge9Sh9z35Vztq_dUQUvVMluo7YgnmMjHNMhrhVw,15937
|
|
26
26
|
pkgs/argument_parser/case_convert.py,sha256=J9wahIE-P95LvTqn4M4gDUx_RXeiW2SRo9i_1bz1E6A,558
|
|
27
27
|
pkgs/serialization/__init__.py,sha256=quvXMSl1szddLTr4Yxo9KA9oBMoeX7qGpFkkAplFBbY,603
|
|
28
28
|
pkgs/serialization/missing_sentry.py,sha256=aM_9KxbCk9dVvXvcOKgkIQBqFWvLhv8QlIUCiuFEXMo,806
|
|
@@ -35,11 +35,11 @@ pkgs/strenum_compat/__init__.py,sha256=wXRFeNvBm8RU6dy1PFJ5sRLgUIEeH_DVR95Sv5qpG
|
|
|
35
35
|
pkgs/strenum_compat/strenum_compat.py,sha256=uOUAgpYTjHs1MX8dG81jRlyTkt3KNbkV_25zp7xTX2s,36
|
|
36
36
|
pkgs/type_spec/__init__.py,sha256=h5DmJTca4QVV10sZR1x0-MlkZfuGYDfapR3zHvXfzto,19
|
|
37
37
|
pkgs/type_spec/__main__.py,sha256=5bJaX9Y_-FavP0qwzhk-z-V97UY7uaezJTa1zhO_HHQ,1048
|
|
38
|
-
pkgs/type_spec/builder.py,sha256=
|
|
38
|
+
pkgs/type_spec/builder.py,sha256=S7lZCbGbeQ9cUQHnhY9vvpgFUQj8DjsOaNBVqRUff6Y,43253
|
|
39
39
|
pkgs/type_spec/config.py,sha256=INfEiDcUsZFUKasHprsE6i33siPB0RnfmTKOsWcGnQ8,5043
|
|
40
40
|
pkgs/type_spec/emit_io_ts.py,sha256=Ghd8XYqyNYldHQDepwa9GLfHXcoi48ztBw84K28ETic,5707
|
|
41
|
-
pkgs/type_spec/emit_open_api.py,sha256=
|
|
42
|
-
pkgs/type_spec/emit_open_api_util.py,sha256=
|
|
41
|
+
pkgs/type_spec/emit_open_api.py,sha256=rAxfPVsqJU7ass76dPhImgPao6AW6xyz-rMaQDhSp1I,23822
|
|
42
|
+
pkgs/type_spec/emit_open_api_util.py,sha256=XAA6zH59aZWLVl0BvKAICXXl4sdBqx01QAtv5oB0bMI,2266
|
|
43
43
|
pkgs/type_spec/emit_python.py,sha256=aGPnp86DZN0N7c5eiBHVAT_smDf1uCLmRldDhxmWx9g,42673
|
|
44
44
|
pkgs/type_spec/emit_typescript.py,sha256=4hpCJwiDf-v8LJaNFVfFtf8zvtG73YNPFwwa_5NuffI,17729
|
|
45
45
|
pkgs/type_spec/emit_typescript_util.py,sha256=93FzJnpYse4PKFzgdw4DGV4zFTi5tF4WR-CIi7cW498,873
|
|
@@ -65,30 +65,36 @@ type_spec/external/api/chemical/convert_chemical_formats.yaml,sha256=EidTxMCRs-k
|
|
|
65
65
|
type_spec/external/api/entity/create_entities.yaml,sha256=RKjmb_iY4dVHf3aQUCU-OrlbTLLsCkULQ9uEfa8BMFY,1506
|
|
66
66
|
type_spec/external/api/entity/create_entity.yaml,sha256=Orz-3RZsNy5cWXlA3BKVQDYGnGGXlCXOtsOxDSm_nRY,1701
|
|
67
67
|
type_spec/external/api/entity/get_entities_data.yaml,sha256=3XujG7bOpuBQlfFrYtG3L4fBk7LsmdSekmP9iU0zjF0,796
|
|
68
|
-
type_spec/external/api/entity/list_entities.yaml,sha256=
|
|
68
|
+
type_spec/external/api/entity/list_entities.yaml,sha256=l3QtxIRyDzXrSKsa1PNY7fHYRG7yx0Lf_bFEQMQ67n8,1868
|
|
69
|
+
type_spec/external/api/entity/lock_entity.yaml,sha256=jjTlsjbOgiW3qpN7HBn_1OsMKFxAQiE-5mlEjgD2Xic,598
|
|
69
70
|
type_spec/external/api/entity/resolve_entity_ids.yaml,sha256=Zf3OhAohwLJO7wWj0e-sK5lhIsXlD8A5Bu3OGjY4-tA,732
|
|
70
71
|
type_spec/external/api/entity/set_values.yaml,sha256=_UDxSk09Ke0KDABt8ldOScC2CLrbAhBPArZvno5iD4I,422
|
|
71
72
|
type_spec/external/api/entity/transition_entity_phase.yaml,sha256=2JyaP-5Kn75mnBMy58plJsbQnVH2ildcMWcy6nRD6yY,1013
|
|
72
|
-
type_spec/external/api/
|
|
73
|
+
type_spec/external/api/entity/unlock_entity.yaml,sha256=EFmmrhbJSKGqyLdEA0fw0Dk9WaHN8TbEcfAh6eYE0ps,475
|
|
74
|
+
type_spec/external/api/field_options/upsert_field_options.yaml,sha256=21aW5jnNwJUX_dMwNpwbij1bRN72PrbOesDi6Xqv22U,1246
|
|
75
|
+
type_spec/external/api/id_source/list_id_source.yaml,sha256=V0KfzWGBwBkErKCMGhI8w7ZVbw98zaPuUWQxTfpsONU,1090
|
|
73
76
|
type_spec/external/api/id_source/match_id_source.yaml,sha256=j4jDdmElYyY_ZLJQrx66ddy4JYV_9GMWQNi0G8SwY08,837
|
|
74
77
|
type_spec/external/api/input_groups/get_input_group_names.yaml,sha256=LYgnm2Or7ZWCzDGjl53Y1PcHvej8G7Mpp5H96Z4UZCg,913
|
|
75
78
|
type_spec/external/api/inputs/create_inputs.yaml,sha256=pX8jatpve4iJxK7kYw7SBlQXlVHJVfLDCOrDdpn8Gsw,1561
|
|
76
|
-
type_spec/external/api/inputs/get_input_data.yaml,sha256=
|
|
77
|
-
type_spec/external/api/inputs/get_input_names.yaml,sha256=
|
|
79
|
+
type_spec/external/api/inputs/get_input_data.yaml,sha256=sQdju--rKG0-kKgT9MHYbX5JMPmVIFXPHVKchyrykp8,3895
|
|
80
|
+
type_spec/external/api/inputs/get_input_names.yaml,sha256=b_kLmhe-H06J73cUrVg-O2m5K6Uj9WjC6XIUUdiObpU,1592
|
|
78
81
|
type_spec/external/api/inputs/get_inputs_data.yaml,sha256=9wKwnOXC_KokThWnz5Me5RzIcGlxffwcKJtgFow-kvU,2368
|
|
79
82
|
type_spec/external/api/inputs/set_input_attribute_values.yaml,sha256=RpOtVIWBlOp_Nd5Xp67IaQmCzGnLkNwFKQDi4WD8oX4,1021
|
|
80
|
-
type_spec/external/api/
|
|
81
|
-
type_spec/external/api/
|
|
83
|
+
type_spec/external/api/inputs/set_input_category.yaml,sha256=2zcDYw_WzBfzFNkhfDDer45MgRxGnzOBLFicDWrvN80,676
|
|
84
|
+
type_spec/external/api/inputs/set_input_subcategories.yaml,sha256=xbydzqVHIktslueosU3dJxdAu4a8uc5jQc5Cccdw7i8,682
|
|
85
|
+
type_spec/external/api/material_families/update_entity_material_families.yaml,sha256=2WjU7XycTHEaZ2YA_FhwzndVN-PqWsyPCJhBE1WRKvQ,1231
|
|
86
|
+
type_spec/external/api/outputs/get_output_data.yaml,sha256=N884q2C1xLQfFxsmjKr8MJ23IU4q2ORCVJh5y5h6ePE,3555
|
|
87
|
+
type_spec/external/api/outputs/get_output_names.yaml,sha256=p-3ubOjEFNjV746zpAkXurCu0yVUvonDssJKk48ueVM,1404
|
|
82
88
|
type_spec/external/api/outputs/resolve_output_conditions.yaml,sha256=lGrG6XPGiQtHx24GccPcO18xxAoMynTSC_2WwxCjFrc,1640
|
|
83
89
|
type_spec/external/api/permissions/set_core_permissions.yaml,sha256=SDM_3FE-ur00dv6Na9HlaJBIvSPgnfqRieGDKnBR1UY,1632
|
|
84
90
|
type_spec/external/api/project/get_projects.yaml,sha256=pQXGGPHenmFWYUuzEmZ-ORf0_d6lpQkTrXXMRrEqvDI,1676
|
|
85
|
-
type_spec/external/api/project/get_projects_data.yaml,sha256=
|
|
91
|
+
type_spec/external/api/project/get_projects_data.yaml,sha256=9Ns-KOP1qVhBaqMRCsEG6960V5mJW16TD0qRsTHznjQ,2051
|
|
86
92
|
type_spec/external/api/recipe_links/create_recipe_link.yaml,sha256=7b2p7Ei4LnQXqccHsOVAfYyNK4WXm0n1IqxPG-qQDh0,941
|
|
87
|
-
type_spec/external/api/recipe_metadata/get_recipe_metadata_data.yaml,sha256=
|
|
93
|
+
type_spec/external/api/recipe_metadata/get_recipe_metadata_data.yaml,sha256=3C7lCYWI1yX57lhcxU7kPPx-K6DI18CXGxQredSf-lA,1829
|
|
88
94
|
type_spec/external/api/recipes/archive_recipes.yaml,sha256=Oe-NIFwERiG1DwgzsWj3ouKVdnRDTelrgqE5b9Bt_vQ,515
|
|
89
95
|
type_spec/external/api/recipes/associate_recipe_as_input.yaml,sha256=7t0jto37RyLjl63-GK3mLC2uFiX1gd8vPwTwnobxkeI,654
|
|
90
96
|
type_spec/external/api/recipes/associate_recipe_as_lot.yaml,sha256=8wzeJg5njt4qG2kavA6Jpo9PkWE6rIbuA4IPNdhcwEg,605
|
|
91
|
-
type_spec/external/api/recipes/create_recipe.yaml,sha256=
|
|
97
|
+
type_spec/external/api/recipes/create_recipe.yaml,sha256=L9McbFT0fxQc8G1oepWVMbPBc3w_9HSjfhmorIWQDNc,1442
|
|
92
98
|
type_spec/external/api/recipes/create_recipes.yaml,sha256=eXMlXRpB5TFt1mUTECBa4aAIG3KrxYT2mJ5vxmZ9Q3A,1503
|
|
93
99
|
type_spec/external/api/recipes/disassociate_recipe_as_input.yaml,sha256=qTKQCNBNwLnbr22DQVLA6b80BdBhwnDbX1c4KoCKUm8,477
|
|
94
100
|
type_spec/external/api/recipes/edit_recipe_inputs.yaml,sha256=ljewBw77ucvl_m_KWmSJp-nVQGvVG6cb7xVOgPIlueU,2573
|
|
@@ -97,19 +103,20 @@ type_spec/external/api/recipes/get_recipe_calculations.yaml,sha256=ZE7PzfWrjS7Ti
|
|
|
97
103
|
type_spec/external/api/recipes/get_recipe_links.yaml,sha256=Vwm0OVWl3VvDaI7chY_oZQqD8xZ1u09iFWKkZKn1ITo,766
|
|
98
104
|
type_spec/external/api/recipes/get_recipe_names.yaml,sha256=4tqcVj-xLeEu0lhdm8NpLYmAvfkmq08GZ0Mr59I5nLI,896
|
|
99
105
|
type_spec/external/api/recipes/get_recipe_output_metadata.yaml,sha256=YImW94JXVKR6Wz_7R7sRbhD9Ul51Ba-j-x9vJB__AAU,1216
|
|
100
|
-
type_spec/external/api/recipes/get_recipes_data.yaml,sha256=
|
|
106
|
+
type_spec/external/api/recipes/get_recipes_data.yaml,sha256=NQTI4k7IgtXMfcOxcKjPzrvHGkPGuiLQj7GZuHqumUI,11608
|
|
101
107
|
type_spec/external/api/recipes/set_recipe_inputs.yaml,sha256=MvnHuzI9JKfkYZb-pC4jeE7FRpGeacJKXd5_GImsDiY,1747
|
|
102
108
|
type_spec/external/api/recipes/set_recipe_metadata.yaml,sha256=5N9AIY9x3pZhDXyzpM__e7pyKNTI2RS7OeBmwmj5nEs,585
|
|
103
109
|
type_spec/external/api/recipes/set_recipe_outputs.yaml,sha256=Oe8XGYXbPNmrbEDXk3qucfS1L3P9TnXI5cxaNAl6x5A,1875
|
|
104
110
|
type_spec/external/api/recipes/set_recipe_tags.yaml,sha256=IrdkbryxZjNy8n4aMNLRTYbm27cRDfXxItk_kFgDaMM,1399
|
|
111
|
+
type_spec/external/api/recipes/unarchive_recipes.yaml,sha256=m9WwmTHtIMVQOmX7CpbKbnuPsnTVII-4Jr9JffxMUXg,393
|
|
105
112
|
type_spec/external/api/triggers/run_trigger.yaml,sha256=c8xDV3bQRjcRRDG4Y7kdQmMMu1fj3ae5eUi-Sdbsi54,405
|
|
106
113
|
uncountable/__init__.py,sha256=281cC2hs8pbrD0jVKMol-tbWSh7Zcsc8oRT42dKteyE,102
|
|
107
114
|
uncountable/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
108
115
|
uncountable/core/__init__.py,sha256=J0CeeztqyJe7klvHM-8fwSivN1sud6xZThOdaThnQrU,314
|
|
109
116
|
uncountable/core/async_batch.py,sha256=0cRmCr6Z9sNxZyfY9Dl8wlCA4anISVZuHGgBegHhUbc,749
|
|
110
|
-
uncountable/core/client.py,sha256=
|
|
111
|
-
uncountable/core/file_upload.py,sha256=
|
|
112
|
-
uncountable/core/types.py,sha256=
|
|
117
|
+
uncountable/core/client.py,sha256=1a8vstovmqsRvrE4YsKCoZAKDNWXMECnR-BlKEWsxoY,9033
|
|
118
|
+
uncountable/core/file_upload.py,sha256=YWOay69i_-sNGBNnwzKb3bY3OMaV4lRsdVZZK-ScXVc,2829
|
|
119
|
+
uncountable/core/types.py,sha256=zM_FqVT41qqZAhXxKSK_kQccArfw6B_p2qMYBRKJHqE,332
|
|
113
120
|
uncountable/integration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
114
121
|
uncountable/integration/construct_client.py,sha256=r6M5pnIO0fKcjf5d_AREPtWZ6AkWgcjkdu_jHQEYlT8,1084
|
|
115
122
|
uncountable/integration/cron.py,sha256=TIPqMPMSMtMJTu4aXwLf6QY-OLrpmyITLDp48UIr4Ok,919
|
|
@@ -121,13 +128,13 @@ uncountable/integration/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJ
|
|
|
121
128
|
uncountable/integration/db/connect.py,sha256=iI9e8a2hfbFP-dvH0MGLsrG-RpM0dHKCL-oCLkah9hs,181
|
|
122
129
|
uncountable/integration/executors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
123
130
|
uncountable/integration/executors/script_executor.py,sha256=6oMPAFe0PUdqt76e8jMi4vXszGVsVHLULob7Qbl3o38,816
|
|
124
|
-
uncountable/types/__init__.py,sha256=
|
|
131
|
+
uncountable/types/__init__.py,sha256=ziCs6fh_WzMhHPGwFi7xCdFQoNT6PBzZyfrMANEm8g0,6816
|
|
125
132
|
uncountable/types/async_batch.py,sha256=aWiul1fK3-cXaCESUUJ_92FF-NuuwxSjn9n3jC9vY5o,1618
|
|
126
|
-
uncountable/types/async_batch_processor.py,sha256=
|
|
133
|
+
uncountable/types/async_batch_processor.py,sha256=jwN5BOcBSejce0RqNOYWW3sZIv5Oj2Aip1dbzAgGh6A,6117
|
|
127
134
|
uncountable/types/base.py,sha256=w3BRf8SAvYPlKrcJtJcQ_WhCU3A9zy0VuRTRWRFKVUA,2709
|
|
128
135
|
uncountable/types/calculations.py,sha256=16J-KKMp-I8ZQUkYNmKCHfAn6DGb99cFinALcDIdGHY,562
|
|
129
136
|
uncountable/types/chemical_structure.py,sha256=zQKl53DGtQQONIUHFXuwjWLQaG7FPZY7x6SBSOzkGV0,758
|
|
130
|
-
uncountable/types/client_base.py,sha256=
|
|
137
|
+
uncountable/types/client_base.py,sha256=RRf9_k0U4PBYrdKGu0YEZa_cWxImwyg6fayqj6yISPY,55671
|
|
131
138
|
uncountable/types/curves.py,sha256=qYyRntMmFNonEwTrGhquMLbgMqjyP1moQflNTP0FMec,1308
|
|
132
139
|
uncountable/types/entity.py,sha256=NjMZrqBwQ7sZe_oUuJqy9IEG7dWZmFMkQQXJ0_odcnA,11637
|
|
133
140
|
uncountable/types/experiment_groups.py,sha256=ZBEk06F4n98Jz3oEA09WaDmw5rqPs7iVAm_Ysr4gc_o,599
|
|
@@ -163,9 +170,13 @@ uncountable/types/api/entity/create_entities.py,sha256=vzo5hS1qcmjQdfyCMarSu8MRc
|
|
|
163
170
|
uncountable/types/api/entity/create_entity.py,sha256=ausozCQ3qPM9YUQ87bOTCKOm-zkhn4CSLJr9jLc9n2U,1873
|
|
164
171
|
uncountable/types/api/entity/get_entities_data.py,sha256=XjrJGZucIn1TYUlDLRnRA0JTQw-vXHIAT-m0H9hk37A,1170
|
|
165
172
|
uncountable/types/api/entity/list_entities.py,sha256=_bIIZJj3N0E6YiHgqzfCOKxD1fQW6biWJQMp5wIVbBw,1514
|
|
173
|
+
uncountable/types/api/entity/lock_entity.py,sha256=SbRaKDbJfoPD9uVYiGlnrsPF_HZ_6m0hPAlalZwGyag,1029
|
|
166
174
|
uncountable/types/api/entity/resolve_entity_ids.py,sha256=AidGpPmI9ATDv0E7vd9LDOl3n3beGxUlRojh5uZrkl4,1086
|
|
167
175
|
uncountable/types/api/entity/set_values.py,sha256=LcYrKQm5ItYLK1Vx7rRq5i6jkMLDhfEBhF0FD1GowQs,958
|
|
168
176
|
uncountable/types/api/entity/transition_entity_phase.py,sha256=kSRtj7aCReXnS1mWecd0W8N9aC_ahZZxdiQNC6taqF4,1803
|
|
177
|
+
uncountable/types/api/entity/unlock_entity.py,sha256=7KVzm1SYkRlRMqvH4aaMWs5R9GaM0Q4ZfGjoZXUE1SU,978
|
|
178
|
+
uncountable/types/api/field_options/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
|
|
179
|
+
uncountable/types/api/field_options/upsert_field_options.py,sha256=xYtC68AabmTrYn_yV19C91yZv9tfohaRxmvCjMQ5vy8,1144
|
|
169
180
|
uncountable/types/api/id_source/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
|
|
170
181
|
uncountable/types/api/id_source/list_id_source.py,sha256=S_NdAd1FIgMtCfpRK9bs4ZIJH7HdyHWImD1qiPuAKMg,1157
|
|
171
182
|
uncountable/types/api/id_source/match_id_source.py,sha256=1Mlw0XGBw7UeWxmwelUEi7Co8Oy15jyhetfKG1BFpIM,1145
|
|
@@ -177,6 +188,10 @@ uncountable/types/api/inputs/get_input_data.py,sha256=RrgmS4QORMrm1HTNey-A3zzCdY
|
|
|
177
188
|
uncountable/types/api/inputs/get_input_names.py,sha256=8vUA9maZdogngeYbr-DpifNrokJ16BgDN5LQvTrEvSc,1153
|
|
178
189
|
uncountable/types/api/inputs/get_inputs_data.py,sha256=sqZ6xEjzQqRQYMaKXLGWR8WPhWbO6J6zZT8zSTEer84,1841
|
|
179
190
|
uncountable/types/api/inputs/set_input_attribute_values.py,sha256=yvWgIVzl818ewhUA4v3ldSBfmZKngdWTtFn7fqk-dOE,1341
|
|
191
|
+
uncountable/types/api/inputs/set_input_category.py,sha256=ymjMoIiWTtygwI67aVgcw6FyjWW31zBxZb78-YTNs1Y,967
|
|
192
|
+
uncountable/types/api/inputs/set_input_subcategories.py,sha256=hRS1FcFWPaenO_08Ihtfy_v7MUbpiFefdK2AMv16HaI,1004
|
|
193
|
+
uncountable/types/api/material_families/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
|
|
194
|
+
uncountable/types/api/material_families/update_entity_material_families.py,sha256=h-vkua57yCNSO6P1akIxmmaFdwzOXPxm2s3Xt6x1c7c,1396
|
|
180
195
|
uncountable/types/api/outputs/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
|
|
181
196
|
uncountable/types/api/outputs/get_output_data.py,sha256=CpYlXNGWWNTiMgDPBRwucSseSrX4gnLuLIp2ljiONrI,2216
|
|
182
197
|
uncountable/types/api/outputs/get_output_names.py,sha256=Id_ApombSzzFdq5rD4uOfWIKzthic6KBAeyqcrhsx18,1086
|
|
@@ -194,7 +209,7 @@ uncountable/types/api/recipes/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8
|
|
|
194
209
|
uncountable/types/api/recipes/archive_recipes.py,sha256=XFCqBa90bG4Tpxu6fhUqzl7PWlY35bbzOmJf5EOviRM,852
|
|
195
210
|
uncountable/types/api/recipes/associate_recipe_as_input.py,sha256=88a2lirEgrodyyE6og0oYtkGAWih2uJCZRmy45kTBow,976
|
|
196
211
|
uncountable/types/api/recipes/associate_recipe_as_lot.py,sha256=bTYjbnY3B7GKz4MV4UGn7vPjaqMkAfUTio8872d4iws,955
|
|
197
|
-
uncountable/types/api/recipes/create_recipe.py,sha256=
|
|
212
|
+
uncountable/types/api/recipes/create_recipe.py,sha256=jizKdsc761zrJXOi0xlmge7-Z9QlzRQdbLNtUoVLQCI,1420
|
|
198
213
|
uncountable/types/api/recipes/create_recipes.py,sha256=qwIYa8hfcjY7_VOFt9lxmVtJ-HOJqQN3GDNSbZsRCZU,1544
|
|
199
214
|
uncountable/types/api/recipes/disassociate_recipe_as_input.py,sha256=L25fpiK1Y5PByPVVgsZy9t4podz3xSSLIwKHj8CUrSg,913
|
|
200
215
|
uncountable/types/api/recipes/edit_recipe_inputs.py,sha256=pTw606AgLhb-oJjfj1WPyEcJ4B0tgZsvEKeqP5VZ1gY,3281
|
|
@@ -208,9 +223,10 @@ uncountable/types/api/recipes/set_recipe_inputs.py,sha256=lFVfv-o_O5wHuMZdH63qlG
|
|
|
208
223
|
uncountable/types/api/recipes/set_recipe_metadata.py,sha256=Ba6ttd1JuS_Ypt-KpckSviWtOcQ-OTdTEJiaSYyoQL8,933
|
|
209
224
|
uncountable/types/api/recipes/set_recipe_outputs.py,sha256=QYq39TNchQ80ET1C77OE9fwhbu_HmIoEDmrQJHkkCu0,1609
|
|
210
225
|
uncountable/types/api/recipes/set_recipe_tags.py,sha256=U710hgq9-t6QZGRB-ZGHskpt4iXwYEjIRb67eh3P518,2453
|
|
226
|
+
uncountable/types/api/recipes/unarchive_recipes.py,sha256=WcwFYbBsX2SKXnoBQ8locnRn7Bj1rHdtrURQVOfqgfU,814
|
|
211
227
|
uncountable/types/api/triggers/__init__.py,sha256=gCgbynxG3jA8FQHzercKtrHKHkiIKr8APdZYUniAor8,55
|
|
212
228
|
uncountable/types/api/triggers/run_trigger.py,sha256=9m9M8-nlGB_sAU2Qm2lWugp4h4Osqj6QpjNfU8osd1U,901
|
|
213
|
-
UncountablePythonSDK-0.0.
|
|
214
|
-
UncountablePythonSDK-0.0.
|
|
215
|
-
UncountablePythonSDK-0.0.
|
|
216
|
-
UncountablePythonSDK-0.0.
|
|
229
|
+
UncountablePythonSDK-0.0.27.dist-info/METADATA,sha256=yVmNKAUq4GanaGOubm1rLlAzKLIxqJjgU0hFWmbCv_w,1577
|
|
230
|
+
UncountablePythonSDK-0.0.27.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
231
|
+
UncountablePythonSDK-0.0.27.dist-info/top_level.txt,sha256=HaMiBnH1wA7SG9-RVHIJPBH3l8X5gee2jUf-77Nz-Dk,41
|
|
232
|
+
UncountablePythonSDK-0.0.27.dist-info/RECORD,,
|
examples/create_entity.py
CHANGED
|
@@ -24,6 +24,7 @@ ParserCache = dict[type[typing.Any], ParserFunction[typing.Any]]
|
|
|
24
24
|
@dataclass(frozen=True, eq=True)
|
|
25
25
|
class ParserOptions:
|
|
26
26
|
convert_to_snake_case: bool
|
|
27
|
+
strict_property_parsing: bool = False
|
|
27
28
|
|
|
28
29
|
|
|
29
30
|
@dataclass(frozen=True)
|
|
@@ -32,6 +33,19 @@ class ParserContext:
|
|
|
32
33
|
cache: ParserCache
|
|
33
34
|
|
|
34
35
|
|
|
36
|
+
class ParserError(BaseException): ...
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class ParserExtraFieldsError(ParserError):
|
|
40
|
+
extra_fields: set[str]
|
|
41
|
+
|
|
42
|
+
def __init__(self, extra_fields: set[str]) -> None:
|
|
43
|
+
self.extra_fields = extra_fields
|
|
44
|
+
|
|
45
|
+
def __str__(self) -> str:
|
|
46
|
+
return f"extra fields were provided: {', '.join(self.extra_fields)}"
|
|
47
|
+
|
|
48
|
+
|
|
35
49
|
def is_optional(field_type: typing.Any) -> bool:
|
|
36
50
|
return typing.get_origin(field_type) is typing.Union and type(
|
|
37
51
|
None
|
|
@@ -280,18 +294,23 @@ def _build_parser_dataclass(
|
|
|
280
294
|
|
|
281
295
|
serial_class_data = get_serial_class_data(parsed_type)
|
|
282
296
|
|
|
297
|
+
def resolve_serialized_field_name(*, field_name: str) -> str:
|
|
298
|
+
return (
|
|
299
|
+
snake_to_camel_case(field_name)
|
|
300
|
+
if (
|
|
301
|
+
context.options.convert_to_snake_case
|
|
302
|
+
and not serial_class_data.has_unconverted_key(field_name)
|
|
303
|
+
)
|
|
304
|
+
else field_name
|
|
305
|
+
)
|
|
306
|
+
|
|
283
307
|
def parse(value: typing.Any) -> typing.Any:
|
|
284
308
|
data: dict[typing.Any, typing.Any] = {}
|
|
285
309
|
for field, field_type, field_parser in dc_field_parsers:
|
|
286
310
|
field_raw_value = None
|
|
287
311
|
try:
|
|
288
312
|
field_raw_value = value.get(
|
|
289
|
-
|
|
290
|
-
if (
|
|
291
|
-
context.options.convert_to_snake_case
|
|
292
|
-
and not serial_class_data.has_unconverted_key(field.name)
|
|
293
|
-
)
|
|
294
|
-
else field.name,
|
|
313
|
+
resolve_serialized_field_name(field_name=field.name),
|
|
295
314
|
MISSING,
|
|
296
315
|
)
|
|
297
316
|
field_value: typing.Any
|
|
@@ -325,6 +344,18 @@ def _build_parser_dataclass(
|
|
|
325
344
|
f"unable to parse field:{field.name}", field_raw_value
|
|
326
345
|
) from e
|
|
327
346
|
|
|
347
|
+
if context.options.strict_property_parsing:
|
|
348
|
+
all_allowed_field_names = set(
|
|
349
|
+
resolve_serialized_field_name(field_name=field.name)
|
|
350
|
+
for (field, _, _) in dc_field_parsers
|
|
351
|
+
)
|
|
352
|
+
passed_field_names = set(value.keys())
|
|
353
|
+
disallowed_field_names = passed_field_names.difference(
|
|
354
|
+
all_allowed_field_names
|
|
355
|
+
)
|
|
356
|
+
if len(disallowed_field_names) > 0:
|
|
357
|
+
raise ParserExtraFieldsError(disallowed_field_names)
|
|
358
|
+
|
|
328
359
|
return parsed_type(**data)
|
|
329
360
|
|
|
330
361
|
# Add to cache before building inner types, to support recursion
|
|
@@ -372,10 +403,12 @@ class CachedParser(typing.Generic[T]):
|
|
|
372
403
|
def __init__(
|
|
373
404
|
self,
|
|
374
405
|
args: type[T],
|
|
406
|
+
strict_property_parsing: bool = False,
|
|
375
407
|
):
|
|
376
408
|
self.arguments = args
|
|
377
409
|
self.parser_api: typing.Optional[ParserFunction[T]] = None
|
|
378
410
|
self.parser_storage: typing.Optional[ParserFunction[T]] = None
|
|
411
|
+
self.strict_property_parsing = strict_property_parsing
|
|
379
412
|
|
|
380
413
|
def parse_api(self, args: typing.Any) -> T:
|
|
381
414
|
"""
|
|
@@ -390,6 +423,7 @@ class CachedParser(typing.Generic[T]):
|
|
|
390
423
|
self.arguments,
|
|
391
424
|
ParserOptions(
|
|
392
425
|
convert_to_snake_case=True,
|
|
426
|
+
strict_property_parsing=self.strict_property_parsing,
|
|
393
427
|
),
|
|
394
428
|
)
|
|
395
429
|
assert self.parser_api is not None
|
|
@@ -404,6 +438,7 @@ class CachedParser(typing.Generic[T]):
|
|
|
404
438
|
self.arguments,
|
|
405
439
|
ParserOptions(
|
|
406
440
|
convert_to_snake_case=False,
|
|
441
|
+
strict_property_parsing=self.strict_property_parsing,
|
|
407
442
|
),
|
|
408
443
|
)
|
|
409
444
|
assert self.parser_storage is not None
|
pkgs/type_spec/builder.py
CHANGED
|
@@ -195,6 +195,7 @@ class SpecEndpointExample:
|
|
|
195
195
|
|
|
196
196
|
@dataclass(kw_only=True)
|
|
197
197
|
class SpecGuide:
|
|
198
|
+
ref_name: str
|
|
198
199
|
title: str
|
|
199
200
|
markdown_content: str
|
|
200
201
|
html_content: str
|
|
@@ -1287,7 +1288,10 @@ class SpecBuilder:
|
|
|
1287
1288
|
meta: dict[str, list[str]] = md.Meta # type: ignore[attr-defined]
|
|
1288
1289
|
title_meta: list[str] | None = meta.get("title")
|
|
1289
1290
|
if title_meta is None:
|
|
1290
|
-
raise Exception("guides
|
|
1291
|
+
raise Exception("guides require a title in the meta section")
|
|
1292
|
+
id_meta: list[str] | None = meta.get("id")
|
|
1293
|
+
if id_meta is None:
|
|
1294
|
+
raise Exception("guides require an id in the meta section")
|
|
1291
1295
|
|
|
1292
1296
|
path_meta: list[str] | None = meta.get("path")
|
|
1293
1297
|
guide_key: SpecGuideKey = RootGuideKey()
|
|
@@ -1297,6 +1301,7 @@ class SpecBuilder:
|
|
|
1297
1301
|
|
|
1298
1302
|
self.guides[guide_key].append(
|
|
1299
1303
|
SpecGuide(
|
|
1304
|
+
ref_name="".join(id_meta),
|
|
1300
1305
|
title="".join(title_meta),
|
|
1301
1306
|
html_content=html,
|
|
1302
1307
|
markdown_content=file_content,
|
pkgs/type_spec/emit_open_api.py
CHANGED
|
@@ -63,7 +63,7 @@ base_name_map = {
|
|
|
63
63
|
def _rewrite_with_notice(
|
|
64
64
|
file_path: str, file_content: str, *, notice: str = MODIFY_NOTICE
|
|
65
65
|
) -> bool:
|
|
66
|
-
pattern = re.compile("^\S", re.MULTILINE)
|
|
66
|
+
pattern = re.compile(r"^\S", re.MULTILINE)
|
|
67
67
|
|
|
68
68
|
file_lines = file_content.split("\n")
|
|
69
69
|
comment_lines = []
|
|
@@ -78,9 +78,9 @@ def _rewrite_with_notice(
|
|
|
78
78
|
return util.rewrite_file(file_path, f"{notice}\n{modified_file_content}")
|
|
79
79
|
|
|
80
80
|
|
|
81
|
-
def _write_guide_as_html(guide: EmitOpenAPIGuide) -> str:
|
|
81
|
+
def _write_guide_as_html(guide: EmitOpenAPIGuide, *, is_open: bool) -> str:
|
|
82
82
|
return f"""
|
|
83
|
-
<details>
|
|
83
|
+
<details id="{guide.ref_name}" {"open" if is_open else ""}>
|
|
84
84
|
<summary>{guide.title}</summary>
|
|
85
85
|
{guide.html_content}
|
|
86
86
|
</details>"""
|
|
@@ -89,7 +89,10 @@ def _write_guide_as_html(guide: EmitOpenAPIGuide) -> str:
|
|
|
89
89
|
def _open_api_info(
|
|
90
90
|
config: OpenAPIConfig, guides: list[EmitOpenAPIGuide]
|
|
91
91
|
) -> GlobalContextInfo:
|
|
92
|
-
full_guides = "<br/>".join([
|
|
92
|
+
full_guides = "<br/>".join([
|
|
93
|
+
_write_guide_as_html(guide, is_open=True)
|
|
94
|
+
for guide in sorted(guides, key=lambda g: g.ref_name)
|
|
95
|
+
])
|
|
93
96
|
full_description = f"{config.description}<br/>{full_guides}"
|
|
94
97
|
info: GlobalContextInfo = dict()
|
|
95
98
|
info["version"] = "1.0.0"
|
|
@@ -107,7 +110,9 @@ def _open_api_servers(config: OpenAPIConfig) -> list[EmitOpenAPIServer]:
|
|
|
107
110
|
def emit_open_api(builder: builder.SpecBuilder, *, config: OpenAPIConfig) -> None:
|
|
108
111
|
root_guides = builder.guides.get(RootGuideKey(), [])
|
|
109
112
|
openapi_guides = [
|
|
110
|
-
EmitOpenAPIGuide(
|
|
113
|
+
EmitOpenAPIGuide(
|
|
114
|
+
ref_name=guide.ref_name, title=guide.title, html_content=guide.html_content
|
|
115
|
+
)
|
|
111
116
|
for guide in root_guides
|
|
112
117
|
]
|
|
113
118
|
gctx = EmitOpenAPIGlobalContext(
|
|
@@ -299,7 +304,10 @@ def _emit_endpoint_response_examples(
|
|
|
299
304
|
def _emit_endpoint_description(
|
|
300
305
|
description: str, guides: list[EmitOpenAPIGuide]
|
|
301
306
|
) -> dict[str, str]:
|
|
302
|
-
full_guides = "<br/>".join([
|
|
307
|
+
full_guides = "<br/>".join([
|
|
308
|
+
_write_guide_as_html(guide, is_open=False)
|
|
309
|
+
for guide in sorted(guides, key=lambda g: g.ref_name)
|
|
310
|
+
])
|
|
303
311
|
return {
|
|
304
312
|
"description": description
|
|
305
313
|
if len(guides) == 0
|
|
@@ -562,6 +570,7 @@ def _emit_endpoint(
|
|
|
562
570
|
],
|
|
563
571
|
guides=[
|
|
564
572
|
EmitOpenAPIGuide(
|
|
573
|
+
ref_name=guide.ref_name,
|
|
565
574
|
title=guide.title,
|
|
566
575
|
html_content=guide.html_content,
|
|
567
576
|
)
|
|
@@ -18,10 +18,10 @@ Arguments:
|
|
|
18
18
|
desc: "Attributes to pass to the configuration for parameterizing filters"
|
|
19
19
|
offset?:
|
|
20
20
|
type: Optional<Integer>
|
|
21
|
-
desc:
|
|
21
|
+
desc: Used for pagination. Pagination is done based on the sorting of the config. [Pagination More Info](#pagination)
|
|
22
22
|
limit?:
|
|
23
23
|
type: Optional<Integer>
|
|
24
|
-
desc:
|
|
24
|
+
desc: 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)
|
|
25
25
|
|
|
26
26
|
EntityResult:
|
|
27
27
|
type: Object
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
$endpoint:
|
|
2
|
+
is_sdk: true
|
|
3
|
+
method: post
|
|
4
|
+
path: ${external}/entity/external_lock_entity
|
|
5
|
+
function: main.site.app.external.entity.external_lock_entity.external_lock_entity
|
|
6
|
+
desc: Lock an entity
|
|
7
|
+
|
|
8
|
+
Arguments:
|
|
9
|
+
type: Object
|
|
10
|
+
properties:
|
|
11
|
+
entity_key:
|
|
12
|
+
type: identifier.IdentifierKey
|
|
13
|
+
desc: "Identifier for the entity"
|
|
14
|
+
entity_type:
|
|
15
|
+
type: entity.EntityType
|
|
16
|
+
globally_removable?:
|
|
17
|
+
type: Boolean
|
|
18
|
+
desc: "Should the lock be removable by any user or just admins"
|
|
19
|
+
|
|
20
|
+
Data:
|
|
21
|
+
type: async_batch.AsyncBatchActionReturn
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
$endpoint:
|
|
2
|
+
is_sdk: true
|
|
3
|
+
method: post
|
|
4
|
+
path: ${external}/entity/external_unlock_entity
|
|
5
|
+
function: main.site.app.external.entity.external_unlock_entity.external_unlock_entity
|
|
6
|
+
desc: Unlock an entity
|
|
7
|
+
|
|
8
|
+
Arguments:
|
|
9
|
+
type: Object
|
|
10
|
+
properties:
|
|
11
|
+
entity_key:
|
|
12
|
+
type: identifier.IdentifierKey
|
|
13
|
+
desc: "Identifier for the entity"
|
|
14
|
+
entity_type:
|
|
15
|
+
type: entity.EntityType
|
|
16
|
+
|
|
17
|
+
Data:
|
|
18
|
+
type: async_batch.AsyncBatchActionReturn
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
$endpoint:
|
|
2
|
+
is_sdk: true
|
|
3
|
+
method: post
|
|
4
|
+
path: ${external}/field_options/upsert_field_options
|
|
5
|
+
function: main.site.app.external.field_options.upsert_field_options.upsert_field_options
|
|
6
|
+
desc: "Creates or updates field options for an option set"
|
|
7
|
+
is_sdk: true
|
|
8
|
+
|
|
9
|
+
FieldOption:
|
|
10
|
+
type: Object
|
|
11
|
+
properties:
|
|
12
|
+
option_id:
|
|
13
|
+
type: String
|
|
14
|
+
desc: "A unique identifer for the option. This is required to be a string with no symbols"
|
|
15
|
+
option_value?:
|
|
16
|
+
type: String
|
|
17
|
+
desc: "The label for the option. If none is set, then the existing value will be used. If there is no existing value, then the option id will be used."
|
|
18
|
+
archived?:
|
|
19
|
+
type: Boolean
|
|
20
|
+
desc: "If included, whether to set the option to be archived or unarchived"
|
|
21
|
+
subsets?:
|
|
22
|
+
type: List<String>
|
|
23
|
+
desc: "If included, what subsets to include the option in"
|
|
24
|
+
|
|
25
|
+
Arguments:
|
|
26
|
+
type: Object
|
|
27
|
+
properties:
|
|
28
|
+
option_set_key:
|
|
29
|
+
type: identifier.IdentifierKey
|
|
30
|
+
desc: "Identifier for the field option set"
|
|
31
|
+
field_options:
|
|
32
|
+
type: List<FieldOption>
|
|
33
|
+
desc: Field options to upsert
|
|
34
|
+
|
|
35
|
+
Data:
|
|
36
|
+
type: Object
|
|
37
|
+
properties:
|
|
@@ -15,10 +15,10 @@ Arguments:
|
|
|
15
15
|
desc: Text to search within the labels to search matches
|
|
16
16
|
offset?:
|
|
17
17
|
type: Optional<Integer>
|
|
18
|
-
desc:
|
|
18
|
+
desc: Used for pagination. Pagination is done based on the sorting of the config. [Pagination More Info](#pagination)
|
|
19
19
|
limit?:
|
|
20
20
|
type: Optional<Integer>
|
|
21
|
-
desc:
|
|
21
|
+
desc: 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)
|
|
22
22
|
|
|
23
23
|
IdName:
|
|
24
24
|
type: Object
|
|
@@ -16,13 +16,13 @@ Arguments:
|
|
|
16
16
|
desc: "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)."
|
|
17
17
|
offset?:
|
|
18
18
|
type: Optional<Integer>
|
|
19
|
-
desc:
|
|
19
|
+
desc: Used for pagination, where the number of results returned exceeds the limit. Results are always ordered by the input ID. [Pagination More Info](#pagination)
|
|
20
20
|
is_parameter:
|
|
21
21
|
type: Optional<Boolean>
|
|
22
22
|
desc: "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"
|
|
23
23
|
limit?:
|
|
24
24
|
type: Optional<Integer>
|
|
25
|
-
desc:
|
|
25
|
+
desc: 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)
|
|
26
26
|
|
|
27
27
|
SimpleInputAttr:
|
|
28
28
|
type: Object
|
|
@@ -13,13 +13,13 @@ Arguments:
|
|
|
13
13
|
desc: "The material family ID to get the input values from"
|
|
14
14
|
offset?:
|
|
15
15
|
type: Optional<Integer>
|
|
16
|
-
desc:
|
|
16
|
+
desc: Used for pagination, where the number of results returned exceeds the limit. Results are always ordered by the input ID. [Pagination More Info](#pagination)
|
|
17
17
|
is_parameter:
|
|
18
18
|
type: Optional<Boolean>
|
|
19
19
|
desc: "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"
|
|
20
20
|
limit?:
|
|
21
21
|
type: Optional<Integer>
|
|
22
|
-
desc:
|
|
22
|
+
desc: 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)
|
|
23
23
|
|
|
24
24
|
InputWithName:
|
|
25
25
|
type: Object
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
$endpoint:
|
|
2
|
+
is_sdk: true
|
|
3
|
+
method: post
|
|
4
|
+
path: ${external}/inputs/external_set_input_category
|
|
5
|
+
function: main.site.app.external.inputs.external_set_input_category.external_set_input_category
|
|
6
|
+
desc: "Sets subcategories for an input"
|
|
7
|
+
|
|
8
|
+
Arguments:
|
|
9
|
+
type: Object
|
|
10
|
+
properties:
|
|
11
|
+
input_key:
|
|
12
|
+
type: identifier.IdentifierKey
|
|
13
|
+
desc: "Identifier for the input"
|
|
14
|
+
category_id:
|
|
15
|
+
type: Integer
|
|
16
|
+
desc: The subcategory identifiers to set
|
|
17
|
+
material_family_ids?:
|
|
18
|
+
type: List<Integer>
|
|
19
|
+
desc: The material families to perform the update in
|
|
20
|
+
|
|
21
|
+
Data:
|
|
22
|
+
type: response.Response
|
|
23
|
+
properties:
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
$endpoint:
|
|
2
|
+
is_sdk: true
|
|
3
|
+
method: post
|
|
4
|
+
path: ${external}/inputs/external_set_input_subcategories
|
|
5
|
+
function: main.site.app.external.inputs.external_set_input_subcategories.external_set_input_subcategories
|
|
6
|
+
desc: "Sets subcategories for an input"
|
|
7
|
+
|
|
8
|
+
Arguments:
|
|
9
|
+
type: Object
|
|
10
|
+
properties:
|
|
11
|
+
input_key:
|
|
12
|
+
type: identifier.IdentifierKey
|
|
13
|
+
desc: "Identifier for the input"
|
|
14
|
+
subcategory_ids:
|
|
15
|
+
type: List<Integer>
|
|
16
|
+
desc: The subcategory identifiers to set
|
|
17
|
+
update_type:
|
|
18
|
+
type: post_base.UpdateType
|
|
19
|
+
desc: The type of update to perform
|
|
20
|
+
|
|
21
|
+
Data:
|
|
22
|
+
type: response.Response
|
|
23
|
+
properties:
|