mixpeek 0.20.19__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.19.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.19.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.19.dist-info/RECORD +0 -201
mixpeek/clusters.py ADDED
@@ -0,0 +1,306 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from .basesdk import BaseSDK
4
+ from mixpeek import models, utils
5
+ from mixpeek._hooks import HookContext
6
+ from mixpeek.types import OptionalNullable, UNSET
7
+ from mixpeek.utils import get_security_from_env
8
+ from typing import Any, Mapping, Optional, Union
9
+
10
+
11
+ class Clusters(BaseSDK):
12
+ def create_cluster_v1_clusters_post(
13
+ self,
14
+ *,
15
+ collection_id: str,
16
+ x_namespace: OptionalNullable[str] = UNSET,
17
+ cluster_name: OptionalNullable[str] = UNSET,
18
+ cluster_type: Optional[models.ClusterType] = None,
19
+ vector_config: OptionalNullable[
20
+ Union[models.VectorBasedConfig, models.VectorBasedConfigTypedDict]
21
+ ] = UNSET,
22
+ attribute_config: OptionalNullable[
23
+ Union[models.AttributeBasedConfig, models.AttributeBasedConfigTypedDict]
24
+ ] = UNSET,
25
+ automatic_naming: Optional[
26
+ Union[models.AutomaticNaming, models.AutomaticNamingTypedDict]
27
+ ] = None,
28
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
29
+ server_url: Optional[str] = None,
30
+ timeout_ms: Optional[int] = None,
31
+ http_headers: Optional[Mapping[str, str]] = None,
32
+ ) -> models.TaskResponse:
33
+ r"""Create Cluster
34
+
35
+ :param collection_id: ID of the collection to cluster
36
+ :param x_namespace: 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.
37
+ :param cluster_name: Name for the cluster (auto-generated if empty)
38
+ :param cluster_type:
39
+ :param vector_config:
40
+ :param attribute_config:
41
+ :param automatic_naming:
42
+ :param retries: Override the default retry configuration for this method
43
+ :param server_url: Override the default server URL for this method
44
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
45
+ :param http_headers: Additional headers to set or replace on requests.
46
+ """
47
+ base_url = None
48
+ url_variables = None
49
+ if timeout_ms is None:
50
+ timeout_ms = self.sdk_configuration.timeout_ms
51
+
52
+ if server_url is not None:
53
+ base_url = server_url
54
+ else:
55
+ base_url = self._get_url(base_url, url_variables)
56
+
57
+ request = models.CreateClusterV1ClustersPostRequest(
58
+ x_namespace=x_namespace,
59
+ create_cluster_request=models.CreateClusterRequest(
60
+ cluster_name=cluster_name,
61
+ collection_id=collection_id,
62
+ cluster_type=cluster_type,
63
+ vector_config=utils.get_pydantic_model(
64
+ vector_config, OptionalNullable[models.VectorBasedConfig]
65
+ ),
66
+ attribute_config=utils.get_pydantic_model(
67
+ attribute_config, OptionalNullable[models.AttributeBasedConfig]
68
+ ),
69
+ automatic_naming=utils.get_pydantic_model(
70
+ automatic_naming, Optional[models.AutomaticNaming]
71
+ ),
72
+ ),
73
+ )
74
+
75
+ req = self._build_request(
76
+ method="POST",
77
+ path="/v1/clusters",
78
+ base_url=base_url,
79
+ url_variables=url_variables,
80
+ request=request,
81
+ request_body_required=True,
82
+ request_has_path_params=False,
83
+ request_has_query_params=True,
84
+ user_agent_header="user-agent",
85
+ accept_header_value="application/json",
86
+ http_headers=http_headers,
87
+ security=self.sdk_configuration.security,
88
+ get_serialized_body=lambda: utils.serialize_request_body(
89
+ request.create_cluster_request,
90
+ False,
91
+ False,
92
+ "json",
93
+ models.CreateClusterRequest,
94
+ ),
95
+ timeout_ms=timeout_ms,
96
+ )
97
+
98
+ if retries == UNSET:
99
+ if self.sdk_configuration.retry_config is not UNSET:
100
+ retries = self.sdk_configuration.retry_config
101
+
102
+ retry_config = None
103
+ if isinstance(retries, utils.RetryConfig):
104
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
105
+
106
+ http_res = self.do_request(
107
+ hook_ctx=HookContext(
108
+ base_url=base_url or "",
109
+ operation_id="create_cluster_v1_clusters_post",
110
+ oauth2_scopes=[],
111
+ security_source=get_security_from_env(
112
+ self.sdk_configuration.security, models.Security
113
+ ),
114
+ ),
115
+ request=req,
116
+ error_status_codes=["400", "401", "403", "404", "422", "4XX", "500", "5XX"],
117
+ retry_config=retry_config,
118
+ )
119
+
120
+ response_data: Any = None
121
+ if utils.match_response(http_res, "200", "application/json"):
122
+ return utils.unmarshal_json(http_res.text, models.TaskResponse)
123
+ if utils.match_response(
124
+ http_res, ["400", "401", "403", "404"], "application/json"
125
+ ):
126
+ response_data = utils.unmarshal_json(
127
+ http_res.text, models.ErrorResponseData
128
+ )
129
+ raise models.ErrorResponse(data=response_data)
130
+ if utils.match_response(http_res, "422", "application/json"):
131
+ response_data = utils.unmarshal_json(
132
+ http_res.text, models.HTTPValidationErrorData
133
+ )
134
+ raise models.HTTPValidationError(data=response_data)
135
+ if utils.match_response(http_res, "500", "application/json"):
136
+ response_data = utils.unmarshal_json(
137
+ http_res.text, models.ErrorResponseData
138
+ )
139
+ raise models.ErrorResponse(data=response_data)
140
+ if utils.match_response(http_res, "4XX", "*"):
141
+ http_res_text = utils.stream_to_text(http_res)
142
+ raise models.APIError(
143
+ "API error occurred", http_res.status_code, http_res_text, http_res
144
+ )
145
+ if utils.match_response(http_res, "5XX", "*"):
146
+ http_res_text = utils.stream_to_text(http_res)
147
+ raise models.APIError(
148
+ "API error occurred", http_res.status_code, http_res_text, http_res
149
+ )
150
+
151
+ content_type = http_res.headers.get("Content-Type")
152
+ http_res_text = utils.stream_to_text(http_res)
153
+ raise models.APIError(
154
+ f"Unexpected response received (code: {http_res.status_code}, type: {content_type})",
155
+ http_res.status_code,
156
+ http_res_text,
157
+ http_res,
158
+ )
159
+
160
+ async def create_cluster_v1_clusters_post_async(
161
+ self,
162
+ *,
163
+ collection_id: str,
164
+ x_namespace: OptionalNullable[str] = UNSET,
165
+ cluster_name: OptionalNullable[str] = UNSET,
166
+ cluster_type: Optional[models.ClusterType] = None,
167
+ vector_config: OptionalNullable[
168
+ Union[models.VectorBasedConfig, models.VectorBasedConfigTypedDict]
169
+ ] = UNSET,
170
+ attribute_config: OptionalNullable[
171
+ Union[models.AttributeBasedConfig, models.AttributeBasedConfigTypedDict]
172
+ ] = UNSET,
173
+ automatic_naming: Optional[
174
+ Union[models.AutomaticNaming, models.AutomaticNamingTypedDict]
175
+ ] = None,
176
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
177
+ server_url: Optional[str] = None,
178
+ timeout_ms: Optional[int] = None,
179
+ http_headers: Optional[Mapping[str, str]] = None,
180
+ ) -> models.TaskResponse:
181
+ r"""Create Cluster
182
+
183
+ :param collection_id: ID of the collection to cluster
184
+ :param x_namespace: 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.
185
+ :param cluster_name: Name for the cluster (auto-generated if empty)
186
+ :param cluster_type:
187
+ :param vector_config:
188
+ :param attribute_config:
189
+ :param automatic_naming:
190
+ :param retries: Override the default retry configuration for this method
191
+ :param server_url: Override the default server URL for this method
192
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
193
+ :param http_headers: Additional headers to set or replace on requests.
194
+ """
195
+ base_url = None
196
+ url_variables = None
197
+ if timeout_ms is None:
198
+ timeout_ms = self.sdk_configuration.timeout_ms
199
+
200
+ if server_url is not None:
201
+ base_url = server_url
202
+ else:
203
+ base_url = self._get_url(base_url, url_variables)
204
+
205
+ request = models.CreateClusterV1ClustersPostRequest(
206
+ x_namespace=x_namespace,
207
+ create_cluster_request=models.CreateClusterRequest(
208
+ cluster_name=cluster_name,
209
+ collection_id=collection_id,
210
+ cluster_type=cluster_type,
211
+ vector_config=utils.get_pydantic_model(
212
+ vector_config, OptionalNullable[models.VectorBasedConfig]
213
+ ),
214
+ attribute_config=utils.get_pydantic_model(
215
+ attribute_config, OptionalNullable[models.AttributeBasedConfig]
216
+ ),
217
+ automatic_naming=utils.get_pydantic_model(
218
+ automatic_naming, Optional[models.AutomaticNaming]
219
+ ),
220
+ ),
221
+ )
222
+
223
+ req = self._build_request_async(
224
+ method="POST",
225
+ path="/v1/clusters",
226
+ base_url=base_url,
227
+ url_variables=url_variables,
228
+ request=request,
229
+ request_body_required=True,
230
+ request_has_path_params=False,
231
+ request_has_query_params=True,
232
+ user_agent_header="user-agent",
233
+ accept_header_value="application/json",
234
+ http_headers=http_headers,
235
+ security=self.sdk_configuration.security,
236
+ get_serialized_body=lambda: utils.serialize_request_body(
237
+ request.create_cluster_request,
238
+ False,
239
+ False,
240
+ "json",
241
+ models.CreateClusterRequest,
242
+ ),
243
+ timeout_ms=timeout_ms,
244
+ )
245
+
246
+ if retries == UNSET:
247
+ if self.sdk_configuration.retry_config is not UNSET:
248
+ retries = self.sdk_configuration.retry_config
249
+
250
+ retry_config = None
251
+ if isinstance(retries, utils.RetryConfig):
252
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
253
+
254
+ http_res = await self.do_request_async(
255
+ hook_ctx=HookContext(
256
+ base_url=base_url or "",
257
+ operation_id="create_cluster_v1_clusters_post",
258
+ oauth2_scopes=[],
259
+ security_source=get_security_from_env(
260
+ self.sdk_configuration.security, models.Security
261
+ ),
262
+ ),
263
+ request=req,
264
+ error_status_codes=["400", "401", "403", "404", "422", "4XX", "500", "5XX"],
265
+ retry_config=retry_config,
266
+ )
267
+
268
+ response_data: Any = None
269
+ if utils.match_response(http_res, "200", "application/json"):
270
+ return utils.unmarshal_json(http_res.text, models.TaskResponse)
271
+ if utils.match_response(
272
+ http_res, ["400", "401", "403", "404"], "application/json"
273
+ ):
274
+ response_data = utils.unmarshal_json(
275
+ http_res.text, models.ErrorResponseData
276
+ )
277
+ raise models.ErrorResponse(data=response_data)
278
+ if utils.match_response(http_res, "422", "application/json"):
279
+ response_data = utils.unmarshal_json(
280
+ http_res.text, models.HTTPValidationErrorData
281
+ )
282
+ raise models.HTTPValidationError(data=response_data)
283
+ if utils.match_response(http_res, "500", "application/json"):
284
+ response_data = utils.unmarshal_json(
285
+ http_res.text, models.ErrorResponseData
286
+ )
287
+ raise models.ErrorResponse(data=response_data)
288
+ if utils.match_response(http_res, "4XX", "*"):
289
+ http_res_text = await utils.stream_to_text_async(http_res)
290
+ raise models.APIError(
291
+ "API error occurred", http_res.status_code, http_res_text, http_res
292
+ )
293
+ if utils.match_response(http_res, "5XX", "*"):
294
+ http_res_text = await utils.stream_to_text_async(http_res)
295
+ raise models.APIError(
296
+ "API error occurred", http_res.status_code, http_res_text, http_res
297
+ )
298
+
299
+ content_type = http_res.headers.get("Content-Type")
300
+ http_res_text = await utils.stream_to_text_async(http_res)
301
+ raise models.APIError(
302
+ f"Unexpected response received (code: {http_res.status_code}, type: {content_type})",
303
+ http_res.status_code,
304
+ http_res_text,
305
+ http_res,
306
+ )