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
@@ -0,0 +1,110 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .bucketschemafield_output import (
5
+ BucketSchemaFieldOutput,
6
+ BucketSchemaFieldOutputTypedDict,
7
+ )
8
+ from .vectorindexdefinition import VectorIndexDefinition, VectorIndexDefinitionTypedDict
9
+ from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
10
+ from pydantic import model_serializer
11
+ from typing import Any, Dict, List
12
+ from typing_extensions import NotRequired, TypedDict
13
+
14
+
15
+ class StageDefinitionDefaultParametersTypedDict(TypedDict):
16
+ pass
17
+
18
+
19
+ class StageDefinitionDefaultParameters(BaseModel):
20
+ pass
21
+
22
+
23
+ class StageDefinitionTypedDict(TypedDict):
24
+ r"""Model for retriever stage definition that describes how to process and search documents."""
25
+
26
+ stage_name: str
27
+ r"""Name of the stage"""
28
+ description: str
29
+ version: str
30
+ module_path: str
31
+ input_schema: Dict[str, BucketSchemaFieldOutputTypedDict]
32
+ output_schema: Dict[str, BucketSchemaFieldOutputTypedDict]
33
+ parameter_schema: Dict[str, BucketSchemaFieldOutputTypedDict]
34
+ supported_input_types: List[str]
35
+ max_inputs: Dict[str, int]
36
+ default_parameters: StageDefinitionDefaultParametersTypedDict
37
+ required_vector_indexes: NotRequired[Nullable[List[VectorIndexDefinitionTypedDict]]]
38
+ required_payload_indexes: NotRequired[Nullable[List[Any]]]
39
+ supported_filters: NotRequired[Nullable[List[str]]]
40
+ r"""List of filter operations supported by this stage"""
41
+
42
+
43
+ class StageDefinition(BaseModel):
44
+ r"""Model for retriever stage definition that describes how to process and search documents."""
45
+
46
+ stage_name: str
47
+ r"""Name of the stage"""
48
+
49
+ description: str
50
+
51
+ version: str
52
+
53
+ module_path: str
54
+
55
+ input_schema: Dict[str, BucketSchemaFieldOutput]
56
+
57
+ output_schema: Dict[str, BucketSchemaFieldOutput]
58
+
59
+ parameter_schema: Dict[str, BucketSchemaFieldOutput]
60
+
61
+ supported_input_types: List[str]
62
+
63
+ max_inputs: Dict[str, int]
64
+
65
+ default_parameters: StageDefinitionDefaultParameters
66
+
67
+ required_vector_indexes: OptionalNullable[List[VectorIndexDefinition]] = UNSET
68
+
69
+ required_payload_indexes: OptionalNullable[List[Any]] = UNSET
70
+
71
+ supported_filters: OptionalNullable[List[str]] = UNSET
72
+ r"""List of filter operations supported by this stage"""
73
+
74
+ @model_serializer(mode="wrap")
75
+ def serialize_model(self, handler):
76
+ optional_fields = [
77
+ "required_vector_indexes",
78
+ "required_payload_indexes",
79
+ "supported_filters",
80
+ ]
81
+ nullable_fields = [
82
+ "required_vector_indexes",
83
+ "required_payload_indexes",
84
+ "supported_filters",
85
+ ]
86
+ null_default_fields = []
87
+
88
+ serialized = handler(self)
89
+
90
+ m = {}
91
+
92
+ for n, f in type(self).model_fields.items():
93
+ k = f.alias or n
94
+ val = serialized.get(k)
95
+ serialized.pop(k, None)
96
+
97
+ optional_nullable = k in optional_fields and k in nullable_fields
98
+ is_set = (
99
+ self.__pydantic_fields_set__.intersection({n})
100
+ or k in null_default_fields
101
+ ) # pylint: disable=no-member
102
+
103
+ if val is not None and val != UNSET_SENTINEL:
104
+ m[k] = val
105
+ elif val != UNSET_SENTINEL and (
106
+ not k in optional_fields or (optional_nullable and is_set)
107
+ ):
108
+ m[k] = val
109
+
110
+ return m
@@ -3,38 +3,48 @@
3
3
  from __future__ import annotations
4
4
  from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
5
5
  from pydantic import model_serializer
6
+ from typing import List
6
7
  from typing_extensions import NotRequired, TypedDict
7
8
 
8
9
 
9
- class JSONImageOutputSettingsResponseShapeTypedDict(TypedDict):
10
+ class ResultsTypedDict(TypedDict):
10
11
  pass
11
12
 
12
13
 
13
- class JSONImageOutputSettingsResponseShape(BaseModel):
14
+ class Results(BaseModel):
14
15
  pass
15
16
 
16
17
 
17
- class JSONImageOutputSettingsTypedDict(TypedDict):
18
- response_shape: NotRequired[Nullable[JSONImageOutputSettingsResponseShapeTypedDict]]
19
- prompt: NotRequired[Nullable[str]]
18
+ class StageResponseTypedDict(TypedDict):
19
+ r"""Output from a retriever stage"""
20
20
 
21
+ results: List[ResultsTypedDict]
22
+ execution_time: float
23
+ total_results: NotRequired[Nullable[int]]
24
+ r"""Total number of results not filtered by pagination"""
21
25
 
22
- class JSONImageOutputSettings(BaseModel):
23
- response_shape: OptionalNullable[JSONImageOutputSettingsResponseShape] = UNSET
24
26
 
25
- prompt: OptionalNullable[str] = UNSET
27
+ class StageResponse(BaseModel):
28
+ r"""Output from a retriever stage"""
29
+
30
+ results: List[Results]
31
+
32
+ execution_time: float
33
+
34
+ total_results: OptionalNullable[int] = UNSET
35
+ r"""Total number of results not filtered by pagination"""
26
36
 
27
37
  @model_serializer(mode="wrap")
28
38
  def serialize_model(self, handler):
29
- optional_fields = ["response_shape", "prompt"]
30
- nullable_fields = ["response_shape", "prompt"]
39
+ optional_fields = ["total_results"]
40
+ nullable_fields = ["total_results"]
31
41
  null_default_fields = []
32
42
 
33
43
  serialized = handler(self)
34
44
 
35
45
  m = {}
36
46
 
37
- for n, f in self.model_fields.items():
47
+ for n, f in type(self).model_fields.items():
38
48
  k = f.alias or n
39
49
  val = serialized.get(k)
40
50
  serialized.pop(k, None)
@@ -34,7 +34,7 @@ class TaskResponse(BaseModel):
34
34
 
35
35
  m = {}
36
36
 
37
- for n, f in self.model_fields.items():
37
+ for n, f in type(self).model_fields.items():
38
38
  k = f.alias or n
39
39
  val = serialized.get(k)
40
40
  serialized.pop(k, None)
@@ -15,3 +15,4 @@ class TaskStatus(str, Enum):
15
15
  UPLOADING = "UPLOADING"
16
16
  QUEUED = "QUEUED"
17
17
  PENDING = "PENDING"
18
+ CONVERTING = "CONVERTING"
@@ -1,40 +1,48 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from .featureresponse import FeatureResponse, FeatureResponseTypedDict
5
4
  from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
6
5
  from pydantic import model_serializer
7
- from typing import List
8
6
  from typing_extensions import NotRequired, TypedDict
9
7
 
10
8
 
11
- class AssetFeaturesTypedDict(TypedDict):
12
- video: NotRequired[Nullable[List[FeatureResponseTypedDict]]]
13
- image: NotRequired[Nullable[List[FeatureResponseTypedDict]]]
14
- text: NotRequired[Nullable[List[FeatureResponseTypedDict]]]
15
- audio: NotRequired[Nullable[List[FeatureResponseTypedDict]]]
9
+ class TaxonomyApplicationConfigTypedDict(TypedDict):
10
+ r"""Configuration for how a taxonomy should be applied and materialized"""
16
11
 
12
+ taxonomy_id: str
13
+ r"""ID of the taxonomy to apply"""
14
+ output_collection: NotRequired[Nullable[str]]
15
+ r"""
16
+ ID or name of the collection to store enriched documents, if none exists, it will be created.
17
+ If set to None, it will be treated as a temporary enrichment and not stored.
17
18
 
18
- class AssetFeatures(BaseModel):
19
- video: OptionalNullable[List[FeatureResponse]] = UNSET
19
+ """
20
20
 
21
- image: OptionalNullable[List[FeatureResponse]] = UNSET
22
21
 
23
- text: OptionalNullable[List[FeatureResponse]] = UNSET
22
+ class TaxonomyApplicationConfig(BaseModel):
23
+ r"""Configuration for how a taxonomy should be applied and materialized"""
24
24
 
25
- audio: OptionalNullable[List[FeatureResponse]] = UNSET
25
+ taxonomy_id: str
26
+ r"""ID of the taxonomy to apply"""
27
+
28
+ output_collection: OptionalNullable[str] = UNSET
29
+ r"""
30
+ ID or name of the collection to store enriched documents, if none exists, it will be created.
31
+ If set to None, it will be treated as a temporary enrichment and not stored.
32
+
33
+ """
26
34
 
27
35
  @model_serializer(mode="wrap")
28
36
  def serialize_model(self, handler):
29
- optional_fields = ["video", "image", "text", "audio"]
30
- nullable_fields = ["video", "image", "text", "audio"]
37
+ optional_fields = ["output_collection"]
38
+ nullable_fields = ["output_collection"]
31
39
  null_default_fields = []
32
40
 
33
41
  serialized = handler(self)
34
42
 
35
43
  m = {}
36
44
 
37
- for n, f in self.model_fields.items():
45
+ for n, f in type(self).model_fields.items():
38
46
  k = f.alias or n
39
47
  val = serialized.get(k)
40
48
  serialized.pop(k, None)
@@ -0,0 +1,19 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .collectionconfig import CollectionConfig, CollectionConfigTypedDict
5
+ from mixpeek.types import BaseModel
6
+ from typing import List
7
+ from typing_extensions import TypedDict
8
+
9
+
10
+ class TaxonomyConfigTypedDict(TypedDict):
11
+ r"""Base configuration for all taxonomy types"""
12
+
13
+ source_collections: List[CollectionConfigTypedDict]
14
+
15
+
16
+ class TaxonomyConfig(BaseModel):
17
+ r"""Base configuration for all taxonomy types"""
18
+
19
+ source_collections: List[CollectionConfig]
@@ -0,0 +1,25 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from datetime import datetime
5
+ from mixpeek.types import BaseModel
6
+ from typing_extensions import TypedDict
7
+
8
+
9
+ class TimeseriesDataPointTypedDict(TypedDict):
10
+ r"""Single data point for timeseries data"""
11
+
12
+ timestamp: datetime
13
+ r"""Timestamp of the data point"""
14
+ value: float
15
+ r"""Value of the metric"""
16
+
17
+
18
+ class TimeseriesDataPoint(BaseModel):
19
+ r"""Single data point for timeseries data"""
20
+
21
+ timestamp: datetime
22
+ r"""Timestamp of the data point"""
23
+
24
+ value: float
25
+ r"""Value of the metric"""
@@ -0,0 +1,36 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .timeseriesdatapoint import TimeseriesDataPoint, TimeseriesDataPointTypedDict
5
+ from mixpeek.types import BaseModel
6
+ from typing import List, Optional
7
+ from typing_extensions import NotRequired, TypedDict
8
+
9
+
10
+ class TimeseriesUsageTypedDict(TypedDict):
11
+ r"""Timeseries usage data for various metrics"""
12
+
13
+ api_calls: NotRequired[List[TimeseriesDataPointTypedDict]]
14
+ r"""API calls over time"""
15
+ storage_used: NotRequired[List[TimeseriesDataPointTypedDict]]
16
+ r"""Storage used over time"""
17
+ documents_processed: NotRequired[List[TimeseriesDataPointTypedDict]]
18
+ r"""Documents processed over time"""
19
+ credits_used: NotRequired[List[TimeseriesDataPointTypedDict]]
20
+ r"""Credits used over time"""
21
+
22
+
23
+ class TimeseriesUsage(BaseModel):
24
+ r"""Timeseries usage data for various metrics"""
25
+
26
+ api_calls: Optional[List[TimeseriesDataPoint]] = None
27
+ r"""API calls over time"""
28
+
29
+ storage_used: Optional[List[TimeseriesDataPoint]] = None
30
+ r"""Storage used over time"""
31
+
32
+ documents_processed: Optional[List[TimeseriesDataPoint]] = None
33
+ r"""Documents processed over time"""
34
+
35
+ credits_used: Optional[List[TimeseriesDataPoint]] = None
36
+ r"""Credits used over time"""
@@ -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 .bucketupdaterequest import BucketUpdateRequest, BucketUpdateRequestTypedDict
5
5
  from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
6
6
  from mixpeek.utils import (
7
7
  FieldMetadata,
@@ -14,20 +14,20 @@ from pydantic import model_serializer
14
14
  from typing_extensions import Annotated, NotRequired, TypedDict
15
15
 
16
16
 
17
- class FullAssetUpdateV1AssetsAssetIDPutRequestTypedDict(TypedDict):
18
- asset_id: str
19
- update_asset_request: UpdateAssetRequestTypedDict
17
+ class UpdateBucketV1BucketsBucketIdentifierPutRequestTypedDict(TypedDict):
18
+ bucket_identifier: str
19
+ bucket_update_request: BucketUpdateRequestTypedDict
20
20
  x_namespace: NotRequired[Nullable[str]]
21
21
  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
22
 
23
23
 
24
- class FullAssetUpdateV1AssetsAssetIDPutRequest(BaseModel):
25
- asset_id: Annotated[
24
+ class UpdateBucketV1BucketsBucketIdentifierPutRequest(BaseModel):
25
+ bucket_identifier: Annotated[
26
26
  str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
27
27
  ]
28
28
 
29
- update_asset_request: Annotated[
30
- UpdateAssetRequest,
29
+ bucket_update_request: Annotated[
30
+ BucketUpdateRequest,
31
31
  FieldMetadata(request=RequestMetadata(media_type="application/json")),
32
32
  ]
33
33
 
@@ -48,7 +48,7 @@ class FullAssetUpdateV1AssetsAssetIDPutRequest(BaseModel):
48
48
 
49
49
  m = {}
50
50
 
51
- for n, f in self.model_fields.items():
51
+ for n, f in type(self).model_fields.items():
52
52
  k = f.alias or n
53
53
  val = serialized.get(k)
54
54
  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 .taxonomyupdate import TaxonomyUpdate, TaxonomyUpdateTypedDict
4
+ from .documentupdate import DocumentUpdate, DocumentUpdateTypedDict
5
5
  from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
6
6
  from mixpeek.utils import (
7
7
  FieldMetadata,
@@ -11,27 +11,34 @@ from mixpeek.utils import (
11
11
  )
12
12
  import pydantic
13
13
  from pydantic import model_serializer
14
+ from typing import Optional
14
15
  from typing_extensions import Annotated, NotRequired, TypedDict
15
16
 
16
17
 
17
- class UpdateTaxonomyV1EntitiesTaxonomiesTaxonomyPatchRequestTypedDict(TypedDict):
18
- taxonomy: str
19
- r"""The ID or name of the taxonomy to update"""
20
- taxonomy_update: TaxonomyUpdateTypedDict
18
+ class UpdateDocumentV1CollectionsCollectionIdentifierDocumentsDocumentIDPutRequestTypedDict(
19
+ TypedDict
20
+ ):
21
+ collection_identifier: str
22
+ r"""The ID of the collection"""
23
+ document_id: str
24
+ r"""The ID of the document to update"""
21
25
  x_namespace: NotRequired[Nullable[str]]
22
26
  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."""
27
+ document_update: NotRequired[DocumentUpdateTypedDict]
23
28
 
24
29
 
25
- class UpdateTaxonomyV1EntitiesTaxonomiesTaxonomyPatchRequest(BaseModel):
26
- taxonomy: Annotated[
30
+ class UpdateDocumentV1CollectionsCollectionIdentifierDocumentsDocumentIDPutRequest(
31
+ BaseModel
32
+ ):
33
+ collection_identifier: Annotated[
27
34
  str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
28
35
  ]
29
- r"""The ID or name of the taxonomy to update"""
36
+ r"""The ID of the collection"""
30
37
 
31
- taxonomy_update: Annotated[
32
- TaxonomyUpdate,
33
- FieldMetadata(request=RequestMetadata(media_type="application/json")),
38
+ document_id: Annotated[
39
+ str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
34
40
  ]
41
+ r"""The ID of the document to update"""
35
42
 
36
43
  x_namespace: Annotated[
37
44
  OptionalNullable[str],
@@ -40,9 +47,14 @@ class UpdateTaxonomyV1EntitiesTaxonomiesTaxonomyPatchRequest(BaseModel):
40
47
  ] = UNSET
41
48
  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."""
42
49
 
50
+ document_update: Annotated[
51
+ Optional[DocumentUpdate],
52
+ FieldMetadata(request=RequestMetadata(media_type="application/json")),
53
+ ] = None
54
+
43
55
  @model_serializer(mode="wrap")
44
56
  def serialize_model(self, handler):
45
- optional_fields = ["X-Namespace"]
57
+ optional_fields = ["X-Namespace", "DocumentUpdate"]
46
58
  nullable_fields = ["X-Namespace"]
47
59
  null_default_fields = []
48
60
 
@@ -50,7 +62,7 @@ class UpdateTaxonomyV1EntitiesTaxonomiesTaxonomyPatchRequest(BaseModel):
50
62
 
51
63
  m = {}
52
64
 
53
- for n, f in self.model_fields.items():
65
+ for n, f in type(self).model_fields.items():
54
66
  k = f.alias or n
55
67
  val = serialized.get(k)
56
68
  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 .featureupdaterequest import FeatureUpdateRequest, FeatureUpdateRequestTypedDict
4
+ from .updateobjectrequest import UpdateObjectRequest, UpdateObjectRequestTypedDict
5
5
  from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
6
6
  from mixpeek.utils import (
7
7
  FieldMetadata,
@@ -14,20 +14,31 @@ from pydantic import model_serializer
14
14
  from typing_extensions import Annotated, NotRequired, TypedDict
15
15
 
16
16
 
17
- class FullFeatureUpdateV1FeaturesFeatureIDPutRequestTypedDict(TypedDict):
18
- feature_id: str
19
- feature_update_request: FeatureUpdateRequestTypedDict
17
+ class UpdateObjectV1BucketsBucketIdentifierObjectsObjectIdentifierPutRequestTypedDict(
18
+ TypedDict
19
+ ):
20
+ bucket_identifier: str
21
+ r"""Identifier of the bucket"""
22
+ object_identifier: str
23
+ r"""Identifier of the object"""
24
+ update_object_request: UpdateObjectRequestTypedDict
20
25
  x_namespace: NotRequired[Nullable[str]]
21
26
  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
27
 
23
28
 
24
- class FullFeatureUpdateV1FeaturesFeatureIDPutRequest(BaseModel):
25
- feature_id: Annotated[
29
+ class UpdateObjectV1BucketsBucketIdentifierObjectsObjectIdentifierPutRequest(BaseModel):
30
+ bucket_identifier: Annotated[
26
31
  str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
27
32
  ]
33
+ r"""Identifier of the bucket"""
28
34
 
29
- feature_update_request: Annotated[
30
- FeatureUpdateRequest,
35
+ object_identifier: Annotated[
36
+ str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
37
+ ]
38
+ r"""Identifier of the object"""
39
+
40
+ update_object_request: Annotated[
41
+ UpdateObjectRequest,
31
42
  FieldMetadata(request=RequestMetadata(media_type="application/json")),
32
43
  ]
33
44
 
@@ -48,7 +59,7 @@ class FullFeatureUpdateV1FeaturesFeatureIDPutRequest(BaseModel):
48
59
 
49
60
  m = {}
50
61
 
51
- for n, f in self.model_fields.items():
62
+ for n, f in type(self).model_fields.items():
52
63
  k = f.alias or n
53
64
  val = serialized.get(k)
54
65
  serialized.pop(k, None)
@@ -36,7 +36,7 @@ class UpdateNamespaceRequest(BaseModel):
36
36
 
37
37
  m = {}
38
38
 
39
- for n, f in self.model_fields.items():
39
+ for n, f in type(self).model_fields.items():
40
40
  k = f.alias or n
41
41
  val = serialized.get(k)
42
42
  serialized.pop(k, None)
@@ -0,0 +1,75 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .createblobrequest import CreateBlobRequest, CreateBlobRequestTypedDict
5
+ from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
6
+ from pydantic import model_serializer
7
+ from typing import List
8
+ from typing_extensions import NotRequired, TypedDict
9
+
10
+
11
+ class UpdateObjectRequestMetadataTypedDict(TypedDict):
12
+ pass
13
+
14
+
15
+ class UpdateObjectRequestMetadata(BaseModel):
16
+ pass
17
+
18
+
19
+ class UpdateObjectRequestTypedDict(TypedDict):
20
+ r"""Request model for updating an existing bucket object"""
21
+
22
+ key_prefix: NotRequired[Nullable[str]]
23
+ r"""Updated storage key/path prefix of the object, this will be used to retrieve the object from the storage. It's at the root of the object."""
24
+ blobs: NotRequired[Nullable[List[CreateBlobRequestTypedDict]]]
25
+ r"""List of new or updated blobs for this object"""
26
+ metadata: NotRequired[Nullable[UpdateObjectRequestMetadataTypedDict]]
27
+ r"""Updated metadata for the object, this will be merged with existing metadata."""
28
+ skip_duplicates: NotRequired[Nullable[bool]]
29
+ r"""Skip duplicate blobs, if a blob with the same hash already exists, it will be skipped."""
30
+
31
+
32
+ class UpdateObjectRequest(BaseModel):
33
+ r"""Request model for updating an existing bucket object"""
34
+
35
+ key_prefix: OptionalNullable[str] = UNSET
36
+ r"""Updated storage key/path prefix of the object, this will be used to retrieve the object from the storage. It's at the root of the object."""
37
+
38
+ blobs: OptionalNullable[List[CreateBlobRequest]] = UNSET
39
+ r"""List of new or updated blobs for this object"""
40
+
41
+ metadata: OptionalNullable[UpdateObjectRequestMetadata] = UNSET
42
+ r"""Updated metadata for the object, this will be merged with existing metadata."""
43
+
44
+ skip_duplicates: OptionalNullable[bool] = UNSET
45
+ r"""Skip duplicate blobs, if a blob with the same hash already exists, it will be skipped."""
46
+
47
+ @model_serializer(mode="wrap")
48
+ def serialize_model(self, handler):
49
+ optional_fields = ["key_prefix", "blobs", "metadata", "skip_duplicates"]
50
+ nullable_fields = ["key_prefix", "blobs", "metadata", "skip_duplicates"]
51
+ null_default_fields = []
52
+
53
+ serialized = handler(self)
54
+
55
+ m = {}
56
+
57
+ for n, f in type(self).model_fields.items():
58
+ k = f.alias or n
59
+ val = serialized.get(k)
60
+ serialized.pop(k, None)
61
+
62
+ optional_nullable = k in optional_fields and k in nullable_fields
63
+ is_set = (
64
+ self.__pydantic_fields_set__.intersection({n})
65
+ or k in null_default_fields
66
+ ) # pylint: disable=no-member
67
+
68
+ if val is not None and val != UNSET_SENTINEL:
69
+ m[k] = val
70
+ elif val != UNSET_SENTINEL and (
71
+ not k in optional_fields or (optional_nullable and is_set)
72
+ ):
73
+ m[k] = val
74
+
75
+ return m