UncountablePythonSDK 0.0.25__py3-none-any.whl → 0.0.26__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.

Files changed (39) hide show
  1. {UncountablePythonSDK-0.0.25.dist-info → UncountablePythonSDK-0.0.26.dist-info}/METADATA +1 -1
  2. {UncountablePythonSDK-0.0.25.dist-info → UncountablePythonSDK-0.0.26.dist-info}/RECORD +39 -23
  3. examples/create_entity.py +1 -2
  4. pkgs/argument_parser/argument_parser.py +41 -6
  5. pkgs/type_spec/builder.py +6 -1
  6. pkgs/type_spec/emit_open_api.py +14 -5
  7. pkgs/type_spec/emit_open_api_util.py +1 -0
  8. type_spec/external/api/entity/list_entities.yaml +2 -2
  9. type_spec/external/api/entity/lock_entity.yaml +21 -0
  10. type_spec/external/api/entity/unlock_entity.yaml +18 -0
  11. type_spec/external/api/field_options/upsert_field_options.yaml +37 -0
  12. type_spec/external/api/id_source/list_id_source.yaml +2 -2
  13. type_spec/external/api/inputs/get_input_data.yaml +2 -2
  14. type_spec/external/api/inputs/get_input_names.yaml +2 -2
  15. type_spec/external/api/inputs/set_input_category.yaml +23 -0
  16. type_spec/external/api/inputs/set_input_subcategories.yaml +23 -0
  17. type_spec/external/api/material_families/update_entity_material_families.yaml +33 -0
  18. type_spec/external/api/outputs/get_output_data.yaml +2 -2
  19. type_spec/external/api/outputs/get_output_names.yaml +2 -2
  20. type_spec/external/api/project/get_projects_data.yaml +2 -2
  21. type_spec/external/api/recipe_metadata/get_recipe_metadata_data.yaml +2 -2
  22. type_spec/external/api/recipes/create_recipe.yaml +3 -0
  23. type_spec/external/api/recipes/get_recipes_data.yaml +2 -2
  24. type_spec/external/api/recipes/unarchive_recipes.yaml +17 -0
  25. uncountable/types/__init__.py +14 -0
  26. uncountable/types/api/entity/lock_entity.py +38 -0
  27. uncountable/types/api/entity/unlock_entity.py +37 -0
  28. uncountable/types/api/field_options/__init__.py +1 -0
  29. uncountable/types/api/field_options/upsert_field_options.py +45 -0
  30. uncountable/types/api/inputs/set_input_category.py +37 -0
  31. uncountable/types/api/inputs/set_input_subcategories.py +38 -0
  32. uncountable/types/api/material_families/__init__.py +1 -0
  33. uncountable/types/api/material_families/update_entity_material_families.py +41 -0
  34. uncountable/types/api/recipes/create_recipe.py +1 -0
  35. uncountable/types/api/recipes/unarchive_recipes.py +34 -0
  36. uncountable/types/async_batch_processor.py +3 -0
  37. uncountable/types/client_base.py +192 -18
  38. {UncountablePythonSDK-0.0.25.dist-info → UncountablePythonSDK-0.0.26.dist-info}/WHEEL +0 -0
  39. {UncountablePythonSDK-0.0.25.dist-info → UncountablePythonSDK-0.0.26.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.25
3
+ Version: 0.0.26
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
@@ -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=2ciY0Cy4McGmfyElFF19OyUrbAa7jOEG8PQfR7Hq6NI,636
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=MZ3fxClPErZVfg_Aq48ck32evHVuAzq9N_108nO6MIA,14677
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=9fEcZkasqovH8W4PtQvXtPu4psS_a-HAyu6Wsfk5L8w,43041
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=RJzzOZ7Ti1PNTPn42ZGW7OA6L9KRQhKOTw4elXzJKpE,23524
42
- pkgs/type_spec/emit_open_api_util.py,sha256=F6qouGVm2-WGYkoubbBtRu00V4e30bWJ0fDBhigBEfg,2248
41
+ pkgs/type_spec/emit_open_api.py,sha256=nDUlVSmzqc1GkbyND9rbeM2AHOO-mbtzRmdOqA6KKXE,23821
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=H2YVv6il-XVKd_7IipZqauTDvWCrvHok7z47bDH2sI4,1798
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/id_source/list_id_source.yaml,sha256=BuobTXCJJLp-ogkhkLXluJPQCvUBQ7O2E7Z20Sm1BK8,1020
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=kjX3VE0y2DxxfUk0J2kjnufSFVAbk_3v28EPuHBhvRE,3825
77
- type_spec/external/api/inputs/get_input_names.yaml,sha256=AgGcenh6wEbmhmx8i5CY-0hY0q5geZ04ECayE9Hr0Xw,1522
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/outputs/get_output_data.yaml,sha256=ABaKme64kFCZ-A11AUM5ARQs0Pb9f71atWx-QMYFNZs,3485
81
- type_spec/external/api/outputs/get_output_names.yaml,sha256=IqEYCOHeyHIu45Lf37sfzn-o_0VFk0u_Bqsb0NKHPzw,1334
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=8xQoyL8HlAropfZPYYcQ-W4fO4yuqueAWTKxRzTXAa0,1981
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=mJs82Ci8XSp2ng0W9MKqoeYwIjjgaVYmC5MWFmWFkR8,1759
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=mGLyKJI3pN_7nU4rcSqCO3WjuKhO_odZ2pewVgYcMUU,1322
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,11 +103,12 @@ 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=elCYKyxjw3Sbi66BuG92exn4gRPF6LagiSe1alAEOjo,11538
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
@@ -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=6XYh9ACSJRnbbTGfpQ69bLFfwyBiCG1ZlHqSAOugTG8,6111
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=YksvTyJaZ3rqpZx4UXofUf7XU1Br4aNBNPZXB3LLtkA,5940
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=EIsd-OoOglTX2tVgbWDosPlq7hAkB_Nlacr_e8epjb4,47949
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=Ni00efkcPkQ3WTIgDHzkfu1qoc52ReV9VT0wwwPOT4g,1364
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.25.dist-info/METADATA,sha256=LU2djI-Urro-UFLucKkSiaI6kq9ueCClAJhRDI2snAM,1613
214
- UncountablePythonSDK-0.0.25.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
215
- UncountablePythonSDK-0.0.25.dist-info/top_level.txt,sha256=HaMiBnH1wA7SG9-RVHIJPBH3l8X5gee2jUf-77Nz-Dk,41
216
- UncountablePythonSDK-0.0.25.dist-info/RECORD,,
229
+ UncountablePythonSDK-0.0.26.dist-info/METADATA,sha256=4LIsxPuj2u8AZ23XHXjF3L1mQdcVsa_renQYEwZhNJM,1613
230
+ UncountablePythonSDK-0.0.26.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
231
+ UncountablePythonSDK-0.0.26.dist-info/top_level.txt,sha256=HaMiBnH1wA7SG9-RVHIJPBH3l8X5gee2jUf-77Nz-Dk,41
232
+ UncountablePythonSDK-0.0.26.dist-info/RECORD,,
examples/create_entity.py CHANGED
@@ -1,5 +1,4 @@
1
- from uncountable.core import Client
2
- from uncountable.core.client import AuthDetailsOAuth
1
+ from uncountable.core import AuthDetailsOAuth, Client
3
2
  from uncountable.types import (
4
3
  entity_t,
5
4
  field_values_t,
@@ -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
- snake_to_camel_case(field.name)
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 requier a title in the meta section")
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,
@@ -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([_write_guide_as_html(guide) for guide in guides])
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(title=guide.title, html_content=guide.html_content)
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([_write_guide_as_html(guide) for guide in guides])
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
  )
@@ -45,6 +45,7 @@ class EmitOpenAPIServer:
45
45
 
46
46
  @dataclass(kw_only=True)
47
47
  class EmitOpenAPIGuide:
48
+ ref_name: str
48
49
  title: str
49
50
  html_content: str
50
51
 
@@ -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: "Used for pagination. Pagination is done based on the sorting of the config"
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: "The number of data points to return. If not filled in, it will be set to 100, and cannot be set higher than 100"
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: "Used for pagination. Pagination is done based on the sorting of the config"
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: "The number of data points to return. If not filled in, it will be set to 100, and cannot be set higher than 100"
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: "Used for pagination, where the number of results returned exceeds the limit. Results are always ordered by the input ID"
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: "The maximum number of results to return. By default this is set to 1,000 and it cannot be set higher than 1,000"
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: "Used for pagination, where the number of results returned exceeds the limit. Results are always ordered by the input ID"
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: "The maximum number of results to return. By default this is set to 20,000 and it cannot be set higher than 20,000"
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:
@@ -0,0 +1,33 @@
1
+ $endpoint:
2
+ is_sdk: true
3
+ method: post
4
+ path: ${external}/material_families/external_update_entity_material_families
5
+ function: main.site.app.external.material_families.update_entity_material_families.update_entity_material_families
6
+ desc: "Updates the material families that the entity is available in"
7
+
8
+ Arguments:
9
+ type: Object
10
+ properties:
11
+ entity_key:
12
+ type: identifier.IdentifierKey
13
+ desc: "The identifier for the entity to update across material families"
14
+ entity_type:
15
+ type: |
16
+ Union<
17
+ Literal<entity.EntityType.recipe_metadata>,
18
+ Literal<entity.EntityType.ingredient>,
19
+ Literal<entity.EntityType.output>,
20
+ Literal<entity.EntityType.condition_parameter>,
21
+ Literal<entity.EntityType.ingredient_attribute>
22
+ >
23
+ desc: "The type of the entities requested"
24
+ material_family_ids:
25
+ type: List<ObjectId>
26
+ desc: "The material families to update"
27
+ update_type:
28
+ type: post_base.UpdateType
29
+ desc: "The type of update to make"
30
+
31
+ Data:
32
+ type: response.Response
33
+ properties:
@@ -16,10 +16,10 @@ Arguments:
16
16
  desc: "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)."
17
17
  offset?:
18
18
  type: Integer
19
- desc: "Used for pagination, where the number of results returned exceeds the limit. Results are always ordered by the output ID"
19
+ desc: Used for pagination, where the number of results returned exceeds the limit. Results are always ordered by the output ID. [Pagination More Info](#pagination)
20
20
  limit?:
21
21
  type: Integer
22
- 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"
22
+ 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)
23
23
 
24
24
  OutputAttrVal:
25
25
  type: Object
@@ -13,10 +13,10 @@ Arguments:
13
13
  desc: "The material family ID to get the output values from"
14
14
  offset?:
15
15
  type: Integer
16
- desc: "Used for pagination, where the number of results returned exceeds the limit. Results are always ordered by the output ID"
16
+ desc: Used for pagination, where the number of results returned exceeds the limit. Results are always ordered by the output ID. [Pagination More Info](#pagination)
17
17
  limit?:
18
18
  type: Integer
19
- 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"
19
+ 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)
20
20
 
21
21
  OutputWithName:
22
22
  type: Object