mixpeek 0.20.20__py3-none-any.whl → 0.21.1__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.
Files changed (228) hide show
  1. mixpeek/_version.py +3 -3
  2. mixpeek/{assets.py → bucket_objects.py} +309 -793
  3. mixpeek/buckets.py +1292 -0
  4. mixpeek/clusters.py +306 -0
  5. mixpeek/collection_cache.py +820 -0
  6. mixpeek/{taxonomyentities.py → collection_documents.py} +305 -559
  7. mixpeek/collections.py +122 -996
  8. mixpeek/features.py +45 -991
  9. mixpeek/models/__init__.py +625 -570
  10. mixpeek/models/aggregationtype.py +13 -0
  11. mixpeek/models/apikeyupdate.py +1 -1
  12. mixpeek/models/attributebasedconfig.py +21 -0
  13. mixpeek/models/automaticnaming.py +29 -0
  14. mixpeek/models/basicfeatureextractor.py +35 -0
  15. mixpeek/models/{classify_features_v1_entities_taxonomies_taxonomy_classify_postop.py → batch_delete_documents_v1_collections_collection_identifier_documents_batch_deleteop.py} +17 -15
  16. mixpeek/models/{update_collection_v1_collections_collection_putop.py → batch_update_documents_v1_collections_collection_identifier_documents_batch_putop.py} +29 -19
  17. mixpeek/models/blobdetails.py +72 -0
  18. mixpeek/models/blobmodel.py +107 -0
  19. mixpeek/models/bucketcreaterequest.py +75 -0
  20. mixpeek/models/bucketresponse.py +90 -0
  21. mixpeek/models/bucketschema_input.py +37 -0
  22. mixpeek/models/bucketschema_output.py +37 -0
  23. mixpeek/models/{featureresponse.py → bucketschemafield_input.py} +45 -18
  24. mixpeek/models/bucketschemafield_output.py +101 -0
  25. mixpeek/models/bucketschemafieldtype.py +29 -0
  26. mixpeek/models/bucketupdaterequest.py +68 -0
  27. mixpeek/models/cachestats.py +40 -0
  28. mixpeek/models/{list_collections_v1_collections_getop.py → cleanup_cache_v1_collections_cache_cleanup_postop.py} +23 -12
  29. mixpeek/models/{inputtype.py → clusteringmethod.py} +3 -5
  30. mixpeek/models/clustertype.py +9 -0
  31. mixpeek/models/collectioncacheconfig_input.py +92 -0
  32. mixpeek/models/collectioncacheconfig_output.py +92 -0
  33. mixpeek/models/collectionconfig.py +32 -0
  34. mixpeek/models/collectionmodel.py +79 -8
  35. mixpeek/models/{create_taxonomy_v1_entities_taxonomies_postop.py → create_bucket_v1_buckets_create_postop.py} +7 -7
  36. mixpeek/models/{search_assets_v1_assets_search_postop.py → create_cluster_v1_clusters_postop.py} +7 -7
  37. mixpeek/models/{create_collection_v1_collections_postop.py → create_collection_v1_collections_create_postop.py} +3 -3
  38. mixpeek/models/{ingest_video_url_v1_ingest_videos_url_postop.py → create_interaction_v1_retrievers_interactions_postop.py} +7 -7
  39. mixpeek/models/{partial_asset_update_v1_assets_asset_id_patchop.py → create_object_v1_buckets_bucket_identifier_objects_create_postop.py} +11 -9
  40. mixpeek/models/{ingest_text_v1_ingest_text_postop.py → create_retriever_v1_retrievers_retrievers_postop.py} +10 -7
  41. mixpeek/models/{ingest_image_url_v1_ingest_images_url_postop.py → create_taxonomy_v1_taxonomies_postop.py} +7 -7
  42. mixpeek/models/createblobrequest.py +80 -0
  43. mixpeek/models/createclusterrequest.py +74 -0
  44. mixpeek/models/createcollectionrequest.py +72 -3
  45. mixpeek/models/createnamespacerequest.py +14 -8
  46. mixpeek/models/createobjectrequest.py +75 -0
  47. mixpeek/models/createretrieverrequest.py +90 -0
  48. mixpeek/models/{taxonomyupdate.py → createtaxonomyrequest.py} +15 -13
  49. mixpeek/models/{delete_asset_v1_assets_asset_id_deleteop.py → delete_bucket_v1_buckets_bucket_identifier_deleteop.py} +5 -5
  50. mixpeek/models/{delete_classifications_v1_entities_taxonomies_taxonomy_classifications_classification_id_deleteop.py → delete_document_v1_collections_collection_identifier_documents_document_id_deleteop.py} +11 -11
  51. mixpeek/models/{get_taxonomy_v1_entities_taxonomies_taxonomy_getop.py → delete_interaction_v1_retrievers_interactions_interaction_id_deleteop.py} +7 -7
  52. mixpeek/models/delete_object_v1_buckets_bucket_identifier_objects_object_identifier_deleteop.py +70 -0
  53. mixpeek/models/{featureextractionembeddingrequest.py → documenthandlingconfig.py} +12 -15
  54. mixpeek/models/documentinputhandling.py +11 -0
  55. mixpeek/models/{jsontextoutputsettings.py → documentlistresponse.py} +15 -14
  56. mixpeek/models/documentoutputhandling.py +10 -0
  57. mixpeek/models/documentoutputtype.py +11 -0
  58. mixpeek/models/documentresponse.py +87 -0
  59. mixpeek/models/{nodeupdate.py → documentupdate.py} +22 -13
  60. mixpeek/models/enrichmentfield.py +25 -0
  61. mixpeek/models/errordetail.py +1 -1
  62. mixpeek/models/{update_node_v1_entities_taxonomies_nodes_node_patchop.py → execute_retriever_v1_retrievers_retrievers_retriever_id_execute_postop.py} +11 -11
  63. mixpeek/models/featureextractorconfig.py +116 -0
  64. mixpeek/models/featureextractordefinition.py +192 -0
  65. mixpeek/models/filtercondition.py +25 -25
  66. mixpeek/models/filteroperator.py +24 -0
  67. mixpeek/models/generativemodels.py +10 -0
  68. mixpeek/models/{delete_feature_v1_features_feature_id_deleteop.py → get_bucket_v1_buckets_bucket_identifier_getop.py} +5 -5
  69. mixpeek/models/{list_taxonomies_v1_entities_taxonomies_getop.py → get_cache_stats_v1_collections_cache_stats_getop.py} +16 -14
  70. mixpeek/models/get_collection_v1_collections_collection_id_getop.py +59 -0
  71. mixpeek/models/get_document_v1_collections_collection_identifier_documents_document_id_getop.py +70 -0
  72. mixpeek/models/get_feature_extractor_v1_features_extractors_feature_id_getop.py +16 -0
  73. mixpeek/models/get_interaction_v1_retrievers_interactions_interaction_id_getop.py +57 -0
  74. mixpeek/models/{delete_collection_v1_collections_collection_deleteop.py → get_object_v1_buckets_bucket_identifier_objects_object_identifier_getop.py} +16 -7
  75. mixpeek/models/get_research_v1_research_getop.py +52 -0
  76. mixpeek/models/get_retriever_stages_v1_retrievers_stages_getop.py +52 -0
  77. mixpeek/models/{delete_taxonomy_v1_entities_taxonomies_taxonomy_deleteop.py → get_retriever_v1_retrievers_retrievers_retriever_id_getop.py} +5 -7
  78. mixpeek/models/get_task_v1_tasks_task_id_getop.py +1 -1
  79. mixpeek/models/getusagerequestmodel.py +91 -0
  80. mixpeek/models/hdbscanparameters.py +26 -0
  81. mixpeek/models/interactionresponse.py +86 -0
  82. mixpeek/models/interactiontype.py +22 -0
  83. mixpeek/models/{search_features_v1_features_search_postop.py → invalidate_cache_v1_collections_cache_invalidate_postop.py} +60 -34
  84. mixpeek/models/invalidationevent.py +67 -0
  85. mixpeek/models/invalidationstrategy.py +12 -0
  86. mixpeek/models/kill_task_v1_tasks_task_id_deleteop.py +1 -1
  87. mixpeek/models/list_active_tasks_v1_tasks_getop.py +1 -1
  88. mixpeek/models/{list_assets_v1_assets_postop.py → list_buckets_v1_buckets_postop.py} +18 -18
  89. mixpeek/models/{list_features_v1_features_postop.py → list_documents_v1_collections_collection_identifier_documents_getop.py} +54 -19
  90. mixpeek/models/list_interactions_v1_retrievers_interactions_getop.py +96 -0
  91. mixpeek/models/{list_classifications_v1_entities_taxonomies_taxonomy_classifications_postop.py → list_objects_v1_buckets_bucket_identifier_objects_postop.py} +22 -29
  92. mixpeek/models/{groupbyoptionsasset.py → listbucketsrequest.py} +19 -28
  93. mixpeek/models/listbucketsresponse.py +23 -0
  94. mixpeek/models/{groupbyoptions.py → listobjectsrequest.py} +19 -28
  95. mixpeek/models/listobjectsresponse.py +25 -0
  96. mixpeek/models/listtasksresponse.py +3 -6
  97. mixpeek/models/{logicaloperator.py → logicaloperator_input.py} +42 -24
  98. mixpeek/models/logicaloperator_output.py +121 -0
  99. mixpeek/models/multivectorindex.py +25 -0
  100. mixpeek/models/namespaceresponse.py +1 -1
  101. mixpeek/models/namespaceusage.py +45 -0
  102. mixpeek/models/namingmethod.py +8 -0
  103. mixpeek/models/objectresponse.py +124 -0
  104. mixpeek/models/{db_model_paginationresponse.py → paginationresponse.py} +3 -3
  105. mixpeek/models/payloadindexconfig.py +1 -1
  106. mixpeek/models/plan.py +82 -0
  107. mixpeek/models/recomputestrategy.py +12 -0
  108. mixpeek/models/resourcetotals.py +39 -0
  109. mixpeek/models/{jsonvideooutputsettings.py → retrieverbinding.py} +19 -11
  110. mixpeek/models/{logodetectsettings.py → retrievercacheconfig.py} +20 -11
  111. mixpeek/models/retrievermodel.py +95 -0
  112. mixpeek/models/retrieverqueryrequest.py +114 -0
  113. mixpeek/models/retrieverresponse.py +24 -0
  114. mixpeek/models/searchinteraction.py +81 -0
  115. mixpeek/models/singlelineageentry.py +99 -0
  116. mixpeek/models/sortdirection.py +11 -0
  117. mixpeek/models/sortoption.py +20 -12
  118. mixpeek/models/sourceconfig_input.py +72 -0
  119. mixpeek/models/sourceconfig_output.py +75 -0
  120. mixpeek/models/sourcetype.py +11 -0
  121. mixpeek/models/stageconfig_input.py +111 -0
  122. mixpeek/models/stageconfig_output.py +114 -0
  123. mixpeek/models/stagedefinition.py +110 -0
  124. mixpeek/models/{jsonimageoutputsettings.py → stageresponse.py} +21 -11
  125. mixpeek/models/taskresponse.py +1 -1
  126. mixpeek/models/taskstatus.py +1 -0
  127. mixpeek/models/{assetfeatures.py → taxonomyapplicationconfig.py} +23 -15
  128. mixpeek/models/taxonomyconfig.py +19 -0
  129. mixpeek/models/timeseriesdatapoint.py +25 -0
  130. mixpeek/models/timeseriesusage.py +36 -0
  131. mixpeek/models/{full_asset_update_v1_assets_asset_id_putop.py → update_bucket_v1_buckets_bucket_identifier_putop.py} +9 -9
  132. mixpeek/models/{update_taxonomy_v1_entities_taxonomies_taxonomy_patchop.py → update_document_v1_collections_collection_identifier_documents_document_id_putop.py} +25 -13
  133. mixpeek/models/{full_feature_update_v1_features_feature_id_putop.py → update_object_v1_buckets_bucket_identifier_objects_object_identifier_putop.py} +20 -9
  134. mixpeek/models/updatenamespacerequest.py +1 -1
  135. mixpeek/models/updateobjectrequest.py +75 -0
  136. mixpeek/models/usageresponse.py +86 -0
  137. mixpeek/models/usagesummary.py +39 -0
  138. mixpeek/models/usagetimerange.py +16 -0
  139. mixpeek/models/usermodel_input.py +3 -0
  140. mixpeek/models/usermodel_output.py +3 -0
  141. mixpeek/models/vectorbasedconfig.py +60 -0
  142. mixpeek/models/{collectionresult.py → vectorindex.py} +20 -15
  143. mixpeek/models/vectorindexdefinition.py +43 -0
  144. mixpeek/models/vectortype.py +4 -1
  145. mixpeek/namespaces.py +26 -480
  146. mixpeek/organization_notifications.py +214 -0
  147. mixpeek/organizations.py +6 -210
  148. mixpeek/{featureextractors.py → organizations_usage.py} +31 -39
  149. mixpeek/research.py +228 -0
  150. mixpeek/retriever_interactions.py +1036 -0
  151. mixpeek/retriever_stages.py +232 -0
  152. mixpeek/{ingestassets.py → retrievers.py} +209 -271
  153. mixpeek/sdk.py +40 -23
  154. mixpeek/taxonomies.py +43 -513
  155. mixpeek/types/basemodel.py +3 -3
  156. mixpeek/utils/enums.py +67 -27
  157. {mixpeek-0.20.20.dist-info → mixpeek-0.21.1.dist-info}/METADATA +68 -50
  158. mixpeek-0.21.1.dist-info/RECORD +216 -0
  159. {mixpeek-0.20.20.dist-info → mixpeek-0.21.1.dist-info}/WHEEL +1 -1
  160. mixpeek/models/actionusage.py +0 -16
  161. mixpeek/models/assetresponse.py +0 -166
  162. mixpeek/models/assets_model_searchquery.py +0 -21
  163. mixpeek/models/assetupdate.py +0 -28
  164. mixpeek/models/assignmentconfig.py +0 -67
  165. mixpeek/models/assignmentmode.py +0 -11
  166. mixpeek/models/availablemodels.py +0 -16
  167. mixpeek/models/availablemodelsresponse.py +0 -27
  168. mixpeek/models/classificationmatch.py +0 -77
  169. mixpeek/models/classificationwithfeature.py +0 -73
  170. mixpeek/models/collectiondetailsresponse.py +0 -83
  171. mixpeek/models/dateusage.py +0 -22
  172. mixpeek/models/denseembedding.py +0 -16
  173. mixpeek/models/discoverrequest.py +0 -64
  174. mixpeek/models/embeddingconfig.py +0 -33
  175. mixpeek/models/embeddingrequest.py +0 -92
  176. mixpeek/models/embeddingresponse.py +0 -64
  177. mixpeek/models/entitysettings.py +0 -50
  178. mixpeek/models/featureoptions.py +0 -25
  179. mixpeek/models/features_model_paginationresponse.py +0 -59
  180. mixpeek/models/featureupdaterequest.py +0 -21
  181. mixpeek/models/get_asset_v1_assets_asset_id_getop.py +0 -73
  182. mixpeek/models/get_asset_with_features_v1_assets_asset_id_features_getop.py +0 -73
  183. mixpeek/models/get_collection_details_v1_collections_collection_details_getop.py +0 -59
  184. mixpeek/models/get_collection_details_v1_collections_collection_getop.py +0 -59
  185. mixpeek/models/get_feature_v1_features_feature_id_getop.py +0 -70
  186. mixpeek/models/get_taxonomy_node_v1_entities_taxonomies_nodes_node_getop.py +0 -59
  187. mixpeek/models/groupedassetdata.py +0 -18
  188. mixpeek/models/imagedescribesettings.py +0 -82
  189. mixpeek/models/imagedetectsettings.py +0 -47
  190. mixpeek/models/imagereadsettings.py +0 -71
  191. mixpeek/models/imagesettings.py +0 -92
  192. mixpeek/models/listassetsrequest.py +0 -75
  193. mixpeek/models/listassetsresponse.py +0 -22
  194. mixpeek/models/listclassificationsrequest.py +0 -69
  195. mixpeek/models/listclassificationsresponse.py +0 -31
  196. mixpeek/models/listcollectionsresponse.py +0 -22
  197. mixpeek/models/listfeaturesrequest.py +0 -77
  198. mixpeek/models/listfeaturesresponse.py +0 -22
  199. mixpeek/models/listtaxonomiesresponse.py +0 -24
  200. mixpeek/models/modality.py +0 -13
  201. mixpeek/models/modeldetails.py +0 -61
  202. mixpeek/models/nodeoptions.py +0 -16
  203. mixpeek/models/patch_namespace_v1_namespaces_namespace_patchop.py +0 -28
  204. mixpeek/models/payloadindextype.py +0 -17
  205. mixpeek/models/processimageurlinput.py +0 -87
  206. mixpeek/models/processtextinput.py +0 -82
  207. mixpeek/models/processvideourlinput.py +0 -87
  208. mixpeek/models/querysettings.py +0 -56
  209. mixpeek/models/rerankingoptions.py +0 -47
  210. mixpeek/models/search_model_searchquery.py +0 -76
  211. mixpeek/models/searchassetsrequest.py +0 -78
  212. mixpeek/models/searchrequestfeatures.py +0 -153
  213. mixpeek/models/sparseembedding.py +0 -21
  214. mixpeek/models/taxonomycreate.py +0 -20
  215. mixpeek/models/taxonomyextractionconfig.py +0 -26
  216. mixpeek/models/taxonomymodel.py +0 -27
  217. mixpeek/models/taxonomynode.py +0 -101
  218. mixpeek/models/taxonomynodecreate.py +0 -63
  219. mixpeek/models/textsettings.py +0 -67
  220. mixpeek/models/updateassetrequest.py +0 -60
  221. mixpeek/models/usage.py +0 -18
  222. mixpeek/models/vectormodel.py +0 -15
  223. mixpeek/models/videodescribesettings.py +0 -82
  224. mixpeek/models/videodetectsettings.py +0 -47
  225. mixpeek/models/videoreadsettings.py +0 -71
  226. mixpeek/models/videosettings.py +0 -115
  227. mixpeek/models/videotranscriptionsettings.py +0 -69
  228. mixpeek-0.20.20.dist-info/RECORD +0 -201
@@ -1,9 +1,24 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
+ from .bucketschema_output import BucketSchemaOutput, BucketSchemaOutputTypedDict
5
+ from .collectioncacheconfig_output import (
6
+ CollectionCacheConfigOutput,
7
+ CollectionCacheConfigOutputTypedDict,
8
+ )
9
+ from .featureextractorconfig import (
10
+ FeatureExtractorConfig,
11
+ FeatureExtractorConfigTypedDict,
12
+ )
13
+ from .singlelineageentry import SingleLineageEntry, SingleLineageEntryTypedDict
14
+ from .taskstatus import TaskStatus
15
+ from .taxonomyapplicationconfig import (
16
+ TaxonomyApplicationConfig,
17
+ TaxonomyApplicationConfigTypedDict,
18
+ )
4
19
  from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
5
20
  from pydantic import model_serializer
6
- from typing import Optional
21
+ from typing import List, Optional
7
22
  from typing_extensions import NotRequired, TypedDict
8
23
 
9
24
 
@@ -16,40 +31,96 @@ class CollectionModelMetadata(BaseModel):
16
31
 
17
32
 
18
33
  class CollectionModelTypedDict(TypedDict):
34
+ r"""Collection model defining the high-level structure and behavior of a collection.
35
+ Collections are created and modified through feature extractors, which define
36
+ their own document handling behavior (create/enrich/replace) through their
37
+ document_output_handling settings.
38
+ """
39
+
19
40
  collection_name: str
20
41
  r"""Name for the collection"""
42
+ feature_extractors: List[FeatureExtractorConfigTypedDict]
43
+ r"""List of feature extractor configurations used to create the collection"""
44
+ output_schema: BucketSchemaOutputTypedDict
45
+ r"""Schema definition for bucket objects"""
21
46
  collection_id: NotRequired[str]
22
47
  r"""Unique identifier for the collection"""
23
- namespace_id: NotRequired[Nullable[str]]
24
- r"""Namespace for the collection"""
48
+ description: NotRequired[Nullable[str]]
49
+ r"""Description for the collection"""
25
50
  metadata: NotRequired[Nullable[CollectionModelMetadataTypedDict]]
26
51
  r"""Optional metadata for the collection"""
52
+ enabled: NotRequired[bool]
53
+ r"""Enable or disable processing of this collection"""
54
+ source_lineage: NotRequired[List[SingleLineageEntryTypedDict]]
55
+ r"""Ordered list of lineage entries, from source to this collection"""
56
+ status: NotRequired[Nullable[TaskStatus]]
57
+ r"""Status of the feature extractors in this collection"""
58
+ taxonomy_applications: NotRequired[List[TaxonomyApplicationConfigTypedDict]]
59
+ r"""List of taxonomy application configurations"""
60
+ cache_config: NotRequired[Nullable[CollectionCacheConfigOutputTypedDict]]
61
+ r"""Configuration for collection-level caching"""
27
62
 
28
63
 
29
64
  class CollectionModel(BaseModel):
65
+ r"""Collection model defining the high-level structure and behavior of a collection.
66
+ Collections are created and modified through feature extractors, which define
67
+ their own document handling behavior (create/enrich/replace) through their
68
+ document_output_handling settings.
69
+ """
70
+
30
71
  collection_name: str
31
72
  r"""Name for the collection"""
32
73
 
74
+ feature_extractors: List[FeatureExtractorConfig]
75
+ r"""List of feature extractor configurations used to create the collection"""
76
+
77
+ output_schema: BucketSchemaOutput
78
+ r"""Schema definition for bucket objects"""
79
+
33
80
  collection_id: Optional[str] = None
34
81
  r"""Unique identifier for the collection"""
35
82
 
36
- namespace_id: OptionalNullable[str] = UNSET
37
- r"""Namespace for the collection"""
83
+ description: OptionalNullable[str] = UNSET
84
+ r"""Description for the collection"""
38
85
 
39
86
  metadata: OptionalNullable[CollectionModelMetadata] = UNSET
40
87
  r"""Optional metadata for the collection"""
41
88
 
89
+ enabled: Optional[bool] = True
90
+ r"""Enable or disable processing of this collection"""
91
+
92
+ source_lineage: Optional[List[SingleLineageEntry]] = None
93
+ r"""Ordered list of lineage entries, from source to this collection"""
94
+
95
+ status: OptionalNullable[TaskStatus] = UNSET
96
+ r"""Status of the feature extractors in this collection"""
97
+
98
+ taxonomy_applications: Optional[List[TaxonomyApplicationConfig]] = None
99
+ r"""List of taxonomy application configurations"""
100
+
101
+ cache_config: OptionalNullable[CollectionCacheConfigOutput] = UNSET
102
+ r"""Configuration for collection-level caching"""
103
+
42
104
  @model_serializer(mode="wrap")
43
105
  def serialize_model(self, handler):
44
- optional_fields = ["collection_id", "namespace_id", "metadata"]
45
- nullable_fields = ["namespace_id", "metadata"]
106
+ optional_fields = [
107
+ "collection_id",
108
+ "description",
109
+ "metadata",
110
+ "enabled",
111
+ "source_lineage",
112
+ "status",
113
+ "taxonomy_applications",
114
+ "cache_config",
115
+ ]
116
+ nullable_fields = ["description", "metadata", "status", "cache_config"]
46
117
  null_default_fields = []
47
118
 
48
119
  serialized = handler(self)
49
120
 
50
121
  m = {}
51
122
 
52
- for n, f in self.model_fields.items():
123
+ for n, f in type(self).model_fields.items():
53
124
  k = f.alias or n
54
125
  val = serialized.get(k)
55
126
  serialized.pop(k, None)
@@ -1,7 +1,7 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from .taxonomycreate import TaxonomyCreate, TaxonomyCreateTypedDict
4
+ from .bucketcreaterequest import BucketCreateRequest, BucketCreateRequestTypedDict
5
5
  from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
6
6
  from mixpeek.utils import FieldMetadata, HeaderMetadata, RequestMetadata
7
7
  import pydantic
@@ -9,15 +9,15 @@ from pydantic import model_serializer
9
9
  from typing_extensions import Annotated, NotRequired, TypedDict
10
10
 
11
11
 
12
- class CreateTaxonomyV1EntitiesTaxonomiesPostRequestTypedDict(TypedDict):
13
- taxonomy_create: TaxonomyCreateTypedDict
12
+ class CreateBucketV1BucketsCreatePostRequestTypedDict(TypedDict):
13
+ bucket_create_request: BucketCreateRequestTypedDict
14
14
  x_namespace: NotRequired[Nullable[str]]
15
15
  r"""Optional namespace for data isolation. This can be a namespace name or namespace ID. Example: 'netflix_prod' or 'ns_1234567890'. To create a namespace, use the /namespaces endpoint."""
16
16
 
17
17
 
18
- class CreateTaxonomyV1EntitiesTaxonomiesPostRequest(BaseModel):
19
- taxonomy_create: Annotated[
20
- TaxonomyCreate,
18
+ class CreateBucketV1BucketsCreatePostRequest(BaseModel):
19
+ bucket_create_request: Annotated[
20
+ BucketCreateRequest,
21
21
  FieldMetadata(request=RequestMetadata(media_type="application/json")),
22
22
  ]
23
23
 
@@ -38,7 +38,7 @@ class CreateTaxonomyV1EntitiesTaxonomiesPostRequest(BaseModel):
38
38
 
39
39
  m = {}
40
40
 
41
- for n, f in self.model_fields.items():
41
+ for n, f in type(self).model_fields.items():
42
42
  k = f.alias or n
43
43
  val = serialized.get(k)
44
44
  serialized.pop(k, None)
@@ -1,7 +1,7 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from .searchassetsrequest import SearchAssetsRequest, SearchAssetsRequestTypedDict
4
+ from .createclusterrequest import CreateClusterRequest, CreateClusterRequestTypedDict
5
5
  from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
6
6
  from mixpeek.utils import FieldMetadata, HeaderMetadata, RequestMetadata
7
7
  import pydantic
@@ -9,15 +9,15 @@ from pydantic import model_serializer
9
9
  from typing_extensions import Annotated, NotRequired, TypedDict
10
10
 
11
11
 
12
- class SearchAssetsV1AssetsSearchPostRequestTypedDict(TypedDict):
13
- search_assets_request: SearchAssetsRequestTypedDict
12
+ class CreateClusterV1ClustersPostRequestTypedDict(TypedDict):
13
+ create_cluster_request: CreateClusterRequestTypedDict
14
14
  x_namespace: NotRequired[Nullable[str]]
15
15
  r"""Optional namespace for data isolation. This can be a namespace name or namespace ID. Example: 'netflix_prod' or 'ns_1234567890'. To create a namespace, use the /namespaces endpoint."""
16
16
 
17
17
 
18
- class SearchAssetsV1AssetsSearchPostRequest(BaseModel):
19
- search_assets_request: Annotated[
20
- SearchAssetsRequest,
18
+ class CreateClusterV1ClustersPostRequest(BaseModel):
19
+ create_cluster_request: Annotated[
20
+ CreateClusterRequest,
21
21
  FieldMetadata(request=RequestMetadata(media_type="application/json")),
22
22
  ]
23
23
 
@@ -38,7 +38,7 @@ class SearchAssetsV1AssetsSearchPostRequest(BaseModel):
38
38
 
39
39
  m = {}
40
40
 
41
- for n, f in self.model_fields.items():
41
+ for n, f in type(self).model_fields.items():
42
42
  k = f.alias or n
43
43
  val = serialized.get(k)
44
44
  serialized.pop(k, None)
@@ -12,13 +12,13 @@ from pydantic import model_serializer
12
12
  from typing_extensions import Annotated, NotRequired, TypedDict
13
13
 
14
14
 
15
- class CreateCollectionV1CollectionsPostRequestTypedDict(TypedDict):
15
+ class CreateCollectionV1CollectionsCreatePostRequestTypedDict(TypedDict):
16
16
  create_collection_request: CreateCollectionRequestTypedDict
17
17
  x_namespace: NotRequired[Nullable[str]]
18
18
  r"""Optional namespace for data isolation. This can be a namespace name or namespace ID. Example: 'netflix_prod' or 'ns_1234567890'. To create a namespace, use the /namespaces endpoint."""
19
19
 
20
20
 
21
- class CreateCollectionV1CollectionsPostRequest(BaseModel):
21
+ class CreateCollectionV1CollectionsCreatePostRequest(BaseModel):
22
22
  create_collection_request: Annotated[
23
23
  CreateCollectionRequest,
24
24
  FieldMetadata(request=RequestMetadata(media_type="application/json")),
@@ -41,7 +41,7 @@ class CreateCollectionV1CollectionsPostRequest(BaseModel):
41
41
 
42
42
  m = {}
43
43
 
44
- for n, f in self.model_fields.items():
44
+ for n, f in type(self).model_fields.items():
45
45
  k = f.alias or n
46
46
  val = serialized.get(k)
47
47
  serialized.pop(k, None)
@@ -1,7 +1,7 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from .processvideourlinput import ProcessVideoURLInput, ProcessVideoURLInputTypedDict
4
+ from .searchinteraction import SearchInteraction, SearchInteractionTypedDict
5
5
  from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
6
6
  from mixpeek.utils import FieldMetadata, HeaderMetadata, RequestMetadata
7
7
  import pydantic
@@ -9,15 +9,15 @@ from pydantic import model_serializer
9
9
  from typing_extensions import Annotated, NotRequired, TypedDict
10
10
 
11
11
 
12
- class IngestVideoURLV1IngestVideosURLPostRequestTypedDict(TypedDict):
13
- process_video_url_input: ProcessVideoURLInputTypedDict
12
+ class CreateInteractionV1RetrieversInteractionsPostRequestTypedDict(TypedDict):
13
+ search_interaction: SearchInteractionTypedDict
14
14
  x_namespace: NotRequired[Nullable[str]]
15
15
  r"""Optional namespace for data isolation. This can be a namespace name or namespace ID. Example: 'netflix_prod' or 'ns_1234567890'. To create a namespace, use the /namespaces endpoint."""
16
16
 
17
17
 
18
- class IngestVideoURLV1IngestVideosURLPostRequest(BaseModel):
19
- process_video_url_input: Annotated[
20
- ProcessVideoURLInput,
18
+ class CreateInteractionV1RetrieversInteractionsPostRequest(BaseModel):
19
+ search_interaction: Annotated[
20
+ SearchInteraction,
21
21
  FieldMetadata(request=RequestMetadata(media_type="application/json")),
22
22
  ]
23
23
 
@@ -38,7 +38,7 @@ class IngestVideoURLV1IngestVideosURLPostRequest(BaseModel):
38
38
 
39
39
  m = {}
40
40
 
41
- for n, f in self.model_fields.items():
41
+ for n, f in type(self).model_fields.items():
42
42
  k = f.alias or n
43
43
  val = serialized.get(k)
44
44
  serialized.pop(k, None)
@@ -1,7 +1,7 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from .updateassetrequest import UpdateAssetRequest, UpdateAssetRequestTypedDict
4
+ from .createobjectrequest import CreateObjectRequest, CreateObjectRequestTypedDict
5
5
  from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
6
6
  from mixpeek.utils import (
7
7
  FieldMetadata,
@@ -14,20 +14,22 @@ from pydantic import model_serializer
14
14
  from typing_extensions import Annotated, NotRequired, TypedDict
15
15
 
16
16
 
17
- class PartialAssetUpdateV1AssetsAssetIDPatchRequestTypedDict(TypedDict):
18
- asset_id: str
19
- update_asset_request: UpdateAssetRequestTypedDict
17
+ class CreateObjectV1BucketsBucketIdentifierObjectsCreatePostRequestTypedDict(TypedDict):
18
+ bucket_identifier: str
19
+ r"""Identifier of the bucket"""
20
+ create_object_request: CreateObjectRequestTypedDict
20
21
  x_namespace: NotRequired[Nullable[str]]
21
22
  r"""Optional namespace for data isolation. This can be a namespace name or namespace ID. Example: 'netflix_prod' or 'ns_1234567890'. To create a namespace, use the /namespaces endpoint."""
22
23
 
23
24
 
24
- class PartialAssetUpdateV1AssetsAssetIDPatchRequest(BaseModel):
25
- asset_id: Annotated[
25
+ class CreateObjectV1BucketsBucketIdentifierObjectsCreatePostRequest(BaseModel):
26
+ bucket_identifier: Annotated[
26
27
  str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
27
28
  ]
29
+ r"""Identifier of the bucket"""
28
30
 
29
- update_asset_request: Annotated[
30
- UpdateAssetRequest,
31
+ create_object_request: Annotated[
32
+ CreateObjectRequest,
31
33
  FieldMetadata(request=RequestMetadata(media_type="application/json")),
32
34
  ]
33
35
 
@@ -48,7 +50,7 @@ class PartialAssetUpdateV1AssetsAssetIDPatchRequest(BaseModel):
48
50
 
49
51
  m = {}
50
52
 
51
- for n, f in self.model_fields.items():
53
+ for n, f in type(self).model_fields.items():
52
54
  k = f.alias or n
53
55
  val = serialized.get(k)
54
56
  serialized.pop(k, None)
@@ -1,7 +1,10 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from .processtextinput import ProcessTextInput, ProcessTextInputTypedDict
4
+ from .createretrieverrequest import (
5
+ CreateRetrieverRequest,
6
+ CreateRetrieverRequestTypedDict,
7
+ )
5
8
  from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
6
9
  from mixpeek.utils import FieldMetadata, HeaderMetadata, RequestMetadata
7
10
  import pydantic
@@ -9,15 +12,15 @@ from pydantic import model_serializer
9
12
  from typing_extensions import Annotated, NotRequired, TypedDict
10
13
 
11
14
 
12
- class IngestTextV1IngestTextPostRequestTypedDict(TypedDict):
13
- process_text_input: ProcessTextInputTypedDict
15
+ class CreateRetrieverV1RetrieversRetrieversPostRequestTypedDict(TypedDict):
16
+ create_retriever_request: CreateRetrieverRequestTypedDict
14
17
  x_namespace: NotRequired[Nullable[str]]
15
18
  r"""Optional namespace for data isolation. This can be a namespace name or namespace ID. Example: 'netflix_prod' or 'ns_1234567890'. To create a namespace, use the /namespaces endpoint."""
16
19
 
17
20
 
18
- class IngestTextV1IngestTextPostRequest(BaseModel):
19
- process_text_input: Annotated[
20
- ProcessTextInput,
21
+ class CreateRetrieverV1RetrieversRetrieversPostRequest(BaseModel):
22
+ create_retriever_request: Annotated[
23
+ CreateRetrieverRequest,
21
24
  FieldMetadata(request=RequestMetadata(media_type="application/json")),
22
25
  ]
23
26
 
@@ -38,7 +41,7 @@ class IngestTextV1IngestTextPostRequest(BaseModel):
38
41
 
39
42
  m = {}
40
43
 
41
- for n, f in self.model_fields.items():
44
+ for n, f in type(self).model_fields.items():
42
45
  k = f.alias or n
43
46
  val = serialized.get(k)
44
47
  serialized.pop(k, None)
@@ -1,7 +1,7 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from .processimageurlinput import ProcessImageURLInput, ProcessImageURLInputTypedDict
4
+ from .createtaxonomyrequest import CreateTaxonomyRequest, CreateTaxonomyRequestTypedDict
5
5
  from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
6
6
  from mixpeek.utils import FieldMetadata, HeaderMetadata, RequestMetadata
7
7
  import pydantic
@@ -9,15 +9,15 @@ from pydantic import model_serializer
9
9
  from typing_extensions import Annotated, NotRequired, TypedDict
10
10
 
11
11
 
12
- class IngestImageURLV1IngestImagesURLPostRequestTypedDict(TypedDict):
13
- process_image_url_input: ProcessImageURLInputTypedDict
12
+ class CreateTaxonomyV1TaxonomiesPostRequestTypedDict(TypedDict):
13
+ create_taxonomy_request: CreateTaxonomyRequestTypedDict
14
14
  x_namespace: NotRequired[Nullable[str]]
15
15
  r"""Optional namespace for data isolation. This can be a namespace name or namespace ID. Example: 'netflix_prod' or 'ns_1234567890'. To create a namespace, use the /namespaces endpoint."""
16
16
 
17
17
 
18
- class IngestImageURLV1IngestImagesURLPostRequest(BaseModel):
19
- process_image_url_input: Annotated[
20
- ProcessImageURLInput,
18
+ class CreateTaxonomyV1TaxonomiesPostRequest(BaseModel):
19
+ create_taxonomy_request: Annotated[
20
+ CreateTaxonomyRequest,
21
21
  FieldMetadata(request=RequestMetadata(media_type="application/json")),
22
22
  ]
23
23
 
@@ -38,7 +38,7 @@ class IngestImageURLV1IngestImagesURLPostRequest(BaseModel):
38
38
 
39
39
  m = {}
40
40
 
41
- for n, f in self.model_fields.items():
41
+ for n, f in type(self).model_fields.items():
42
42
  k = f.alias or n
43
43
  val = serialized.get(k)
44
44
  serialized.pop(k, None)
@@ -0,0 +1,80 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .bucketschemafieldtype import BucketSchemaFieldType
5
+ from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
6
+ from pydantic import model_serializer
7
+ from typing import Any
8
+ from typing_extensions import NotRequired, TypedDict
9
+
10
+
11
+ class CreateBlobRequestMetadataTypedDict(TypedDict):
12
+ pass
13
+
14
+
15
+ class CreateBlobRequestMetadata(BaseModel):
16
+ pass
17
+
18
+
19
+ class CreateBlobRequestTypedDict(TypedDict):
20
+ r"""Request model for creating a new blob"""
21
+
22
+ property: str
23
+ r"""Property name in the schema that this blob belongs to"""
24
+ type: BucketSchemaFieldType
25
+ r"""Enum for field types in bucket schemas"""
26
+ data: Any
27
+ r"""Data for the blob, this will only be applied to the documents that use this blob"""
28
+ key_prefix: NotRequired[Nullable[str]]
29
+ r"""Optional prefix for the blob key"""
30
+ metadata: NotRequired[Nullable[CreateBlobRequestMetadataTypedDict]]
31
+ r"""Metadata for the blob, this will only be applied to the documents that use this blob"""
32
+
33
+
34
+ class CreateBlobRequest(BaseModel):
35
+ r"""Request model for creating a new blob"""
36
+
37
+ property: str
38
+ r"""Property name in the schema that this blob belongs to"""
39
+
40
+ type: BucketSchemaFieldType
41
+ r"""Enum for field types in bucket schemas"""
42
+
43
+ data: Any
44
+ r"""Data for the blob, this will only be applied to the documents that use this blob"""
45
+
46
+ key_prefix: OptionalNullable[str] = UNSET
47
+ r"""Optional prefix for the blob key"""
48
+
49
+ metadata: OptionalNullable[CreateBlobRequestMetadata] = UNSET
50
+ r"""Metadata for the blob, this will only be applied to the documents that use this blob"""
51
+
52
+ @model_serializer(mode="wrap")
53
+ def serialize_model(self, handler):
54
+ optional_fields = ["key_prefix", "metadata"]
55
+ nullable_fields = ["key_prefix", "metadata"]
56
+ null_default_fields = []
57
+
58
+ serialized = handler(self)
59
+
60
+ m = {}
61
+
62
+ for n, f in type(self).model_fields.items():
63
+ k = f.alias or n
64
+ val = serialized.get(k)
65
+ serialized.pop(k, None)
66
+
67
+ optional_nullable = k in optional_fields and k in nullable_fields
68
+ is_set = (
69
+ self.__pydantic_fields_set__.intersection({n})
70
+ or k in null_default_fields
71
+ ) # pylint: disable=no-member
72
+
73
+ if val is not None and val != UNSET_SENTINEL:
74
+ m[k] = val
75
+ elif val != UNSET_SENTINEL and (
76
+ not k in optional_fields or (optional_nullable and is_set)
77
+ ):
78
+ m[k] = val
79
+
80
+ return m
@@ -0,0 +1,74 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .attributebasedconfig import AttributeBasedConfig, AttributeBasedConfigTypedDict
5
+ from .automaticnaming import AutomaticNaming, AutomaticNamingTypedDict
6
+ from .clustertype import ClusterType
7
+ from .vectorbasedconfig import VectorBasedConfig, VectorBasedConfigTypedDict
8
+ from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
9
+ from pydantic import model_serializer
10
+ from typing import Optional
11
+ from typing_extensions import NotRequired, TypedDict
12
+
13
+
14
+ class CreateClusterRequestTypedDict(TypedDict):
15
+ collection_id: str
16
+ r"""ID of the collection to cluster"""
17
+ cluster_name: NotRequired[Nullable[str]]
18
+ r"""Name for the cluster (auto-generated if empty)"""
19
+ cluster_type: NotRequired[ClusterType]
20
+ vector_config: NotRequired[Nullable[VectorBasedConfigTypedDict]]
21
+ attribute_config: NotRequired[Nullable[AttributeBasedConfigTypedDict]]
22
+ automatic_naming: NotRequired[AutomaticNamingTypedDict]
23
+
24
+
25
+ class CreateClusterRequest(BaseModel):
26
+ collection_id: str
27
+ r"""ID of the collection to cluster"""
28
+
29
+ cluster_name: OptionalNullable[str] = UNSET
30
+ r"""Name for the cluster (auto-generated if empty)"""
31
+
32
+ cluster_type: Optional[ClusterType] = None
33
+
34
+ vector_config: OptionalNullable[VectorBasedConfig] = UNSET
35
+
36
+ attribute_config: OptionalNullable[AttributeBasedConfig] = UNSET
37
+
38
+ automatic_naming: Optional[AutomaticNaming] = None
39
+
40
+ @model_serializer(mode="wrap")
41
+ def serialize_model(self, handler):
42
+ optional_fields = [
43
+ "cluster_name",
44
+ "cluster_type",
45
+ "vector_config",
46
+ "attribute_config",
47
+ "automatic_naming",
48
+ ]
49
+ nullable_fields = ["cluster_name", "vector_config", "attribute_config"]
50
+ null_default_fields = []
51
+
52
+ serialized = handler(self)
53
+
54
+ m = {}
55
+
56
+ for n, f in type(self).model_fields.items():
57
+ k = f.alias or n
58
+ val = serialized.get(k)
59
+ serialized.pop(k, None)
60
+
61
+ optional_nullable = k in optional_fields and k in nullable_fields
62
+ is_set = (
63
+ self.__pydantic_fields_set__.intersection({n})
64
+ or k in null_default_fields
65
+ ) # pylint: disable=no-member
66
+
67
+ if val is not None and val != UNSET_SENTINEL:
68
+ m[k] = val
69
+ elif val != UNSET_SENTINEL and (
70
+ not k in optional_fields or (optional_nullable and is_set)
71
+ ):
72
+ m[k] = val
73
+
74
+ return m
@@ -1,8 +1,26 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
+ from .collectioncacheconfig_input import (
5
+ CollectionCacheConfigInput,
6
+ CollectionCacheConfigInputTypedDict,
7
+ )
8
+ from .documenthandlingconfig import (
9
+ DocumentHandlingConfig,
10
+ DocumentHandlingConfigTypedDict,
11
+ )
12
+ from .featureextractorconfig import (
13
+ FeatureExtractorConfig,
14
+ FeatureExtractorConfigTypedDict,
15
+ )
16
+ from .sourceconfig_input import SourceConfigInput, SourceConfigInputTypedDict
17
+ from .taxonomyapplicationconfig import (
18
+ TaxonomyApplicationConfig,
19
+ TaxonomyApplicationConfigTypedDict,
20
+ )
4
21
  from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
5
22
  from pydantic import model_serializer
23
+ from typing import List, Optional
6
24
  from typing_extensions import NotRequired, TypedDict
7
25
 
8
26
 
@@ -15,30 +33,81 @@ class CreateCollectionRequestMetadata(BaseModel):
15
33
 
16
34
 
17
35
  class CreateCollectionRequestTypedDict(TypedDict):
36
+ r"""Request model for creating a new collection"""
37
+
18
38
  collection_name: str
19
39
  r"""Name for the collection"""
40
+ source: SourceConfigInputTypedDict
41
+ r"""Configuration for a collection source"""
42
+ feature_extractors: List[FeatureExtractorConfigTypedDict]
43
+ r"""List of feature extractor configurations to use"""
44
+ description: NotRequired[Nullable[str]]
45
+ r"""Description for the collection"""
46
+ taxonomy_applications: NotRequired[List[TaxonomyApplicationConfigTypedDict]]
47
+ r"""List of taxonomy application configurations. there are two options: on ingestion store the taxonomy application results to this collection, or on demand compute the taxonomy application results at query time"""
48
+ enabled: NotRequired[bool]
49
+ r"""Enable or disable processing of this collection"""
20
50
  metadata: NotRequired[Nullable[CreateCollectionRequestMetadataTypedDict]]
21
51
  r"""Optional metadata for the collection"""
52
+ document_handling: NotRequired[Nullable[DocumentHandlingConfigTypedDict]]
53
+ r"""Configuration for how documents are handled by this extractor"""
54
+ cache_config: NotRequired[Nullable[CollectionCacheConfigInputTypedDict]]
55
+ r"""Configuration for collection-level caching"""
22
56
 
23
57
 
24
58
  class CreateCollectionRequest(BaseModel):
59
+ r"""Request model for creating a new collection"""
60
+
25
61
  collection_name: str
26
62
  r"""Name for the collection"""
27
63
 
64
+ source: SourceConfigInput
65
+ r"""Configuration for a collection source"""
66
+
67
+ feature_extractors: List[FeatureExtractorConfig]
68
+ r"""List of feature extractor configurations to use"""
69
+
70
+ description: OptionalNullable[str] = UNSET
71
+ r"""Description for the collection"""
72
+
73
+ taxonomy_applications: Optional[List[TaxonomyApplicationConfig]] = None
74
+ r"""List of taxonomy application configurations. there are two options: on ingestion store the taxonomy application results to this collection, or on demand compute the taxonomy application results at query time"""
75
+
76
+ enabled: Optional[bool] = True
77
+ r"""Enable or disable processing of this collection"""
78
+
28
79
  metadata: OptionalNullable[CreateCollectionRequestMetadata] = UNSET
29
80
  r"""Optional metadata for the collection"""
30
81
 
82
+ document_handling: OptionalNullable[DocumentHandlingConfig] = UNSET
83
+ r"""Configuration for how documents are handled by this extractor"""
84
+
85
+ cache_config: OptionalNullable[CollectionCacheConfigInput] = UNSET
86
+ r"""Configuration for collection-level caching"""
87
+
31
88
  @model_serializer(mode="wrap")
32
89
  def serialize_model(self, handler):
33
- optional_fields = ["metadata"]
34
- nullable_fields = ["metadata"]
90
+ optional_fields = [
91
+ "description",
92
+ "taxonomy_applications",
93
+ "enabled",
94
+ "metadata",
95
+ "document_handling",
96
+ "cache_config",
97
+ ]
98
+ nullable_fields = [
99
+ "description",
100
+ "metadata",
101
+ "document_handling",
102
+ "cache_config",
103
+ ]
35
104
  null_default_fields = []
36
105
 
37
106
  serialized = handler(self)
38
107
 
39
108
  m = {}
40
109
 
41
- for n, f in self.model_fields.items():
110
+ for n, f in type(self).model_fields.items():
42
111
  k = f.alias or n
43
112
  val = serialized.get(k)
44
113
  serialized.pop(k, None)