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,10 +1,7 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from .listclassificationsrequest import (
5
- ListClassificationsRequest,
6
- ListClassificationsRequestTypedDict,
7
- )
4
+ from .listobjectsrequest import ListObjectsRequest, ListObjectsRequestTypedDict
8
5
  from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
9
6
  from mixpeek.utils import (
10
7
  FieldMetadata,
@@ -19,40 +16,31 @@ from typing import Optional
19
16
  from typing_extensions import Annotated, NotRequired, TypedDict
20
17
 
21
18
 
22
- class ListClassificationsV1EntitiesTaxonomiesTaxonomyClassificationsPostRequestTypedDict(
23
- TypedDict
24
- ):
25
- taxonomy: str
26
- r"""The ID or name of the taxonomy"""
27
- list_classifications_request: ListClassificationsRequestTypedDict
28
- page: NotRequired[Nullable[int]]
29
- page_size: NotRequired[int]
19
+ class ListObjectsV1BucketsBucketIdentifierObjectsPostRequestTypedDict(TypedDict):
20
+ bucket_identifier: str
21
+ r"""Identifier of the bucket"""
22
+ limit: NotRequired[Nullable[int]]
23
+ offset: NotRequired[Nullable[int]]
30
24
  x_namespace: NotRequired[Nullable[str]]
31
25
  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."""
26
+ list_objects_request: NotRequired[ListObjectsRequestTypedDict]
32
27
 
33
28
 
34
- class ListClassificationsV1EntitiesTaxonomiesTaxonomyClassificationsPostRequest(
35
- BaseModel
36
- ):
37
- taxonomy: Annotated[
29
+ class ListObjectsV1BucketsBucketIdentifierObjectsPostRequest(BaseModel):
30
+ bucket_identifier: Annotated[
38
31
  str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
39
32
  ]
40
- r"""The ID or name of the taxonomy"""
41
-
42
- list_classifications_request: Annotated[
43
- ListClassificationsRequest,
44
- FieldMetadata(request=RequestMetadata(media_type="application/json")),
45
- ]
33
+ r"""Identifier of the bucket"""
46
34
 
47
- page: Annotated[
35
+ limit: Annotated[
48
36
  OptionalNullable[int],
49
37
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
50
38
  ] = UNSET
51
39
 
52
- page_size: Annotated[
53
- Optional[int],
40
+ offset: Annotated[
41
+ OptionalNullable[int],
54
42
  FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
55
- ] = 10
43
+ ] = UNSET
56
44
 
57
45
  x_namespace: Annotated[
58
46
  OptionalNullable[str],
@@ -61,17 +49,22 @@ class ListClassificationsV1EntitiesTaxonomiesTaxonomyClassificationsPostRequest(
61
49
  ] = UNSET
62
50
  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."""
63
51
 
52
+ list_objects_request: Annotated[
53
+ Optional[ListObjectsRequest],
54
+ FieldMetadata(request=RequestMetadata(media_type="application/json")),
55
+ ] = None
56
+
64
57
  @model_serializer(mode="wrap")
65
58
  def serialize_model(self, handler):
66
- optional_fields = ["page", "page_size", "X-Namespace"]
67
- nullable_fields = ["page", "X-Namespace"]
59
+ optional_fields = ["limit", "offset", "X-Namespace", "ListObjectsRequest"]
60
+ nullable_fields = ["limit", "offset", "X-Namespace"]
68
61
  null_default_fields = []
69
62
 
70
63
  serialized = handler(self)
71
64
 
72
65
  m = {}
73
66
 
74
- for n, f in self.model_fields.items():
67
+ for n, f in type(self).model_fields.items():
75
68
  k = f.alias or n
76
69
  val = serialized.get(k)
77
70
  serialized.pop(k, None)
@@ -1,56 +1,47 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
+ from .logicaloperator_input import LogicalOperatorInput, LogicalOperatorInputTypedDict
4
5
  from .sortoption import SortOption, SortOptionTypedDict
5
6
  from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
6
7
  from pydantic import model_serializer
7
8
  from typing_extensions import NotRequired, TypedDict
8
9
 
9
10
 
10
- class GroupByOptionsAssetTypedDict(TypedDict):
11
- field: NotRequired[Nullable[str]]
12
- r"""
13
- Field to group by
11
+ class ListBucketsRequestTypedDict(TypedDict):
12
+ r"""Request model for listing buckets"""
14
13
 
15
- Note: We currently do not support ad-hoc grouping.
16
- This means the field must be indexed separately.
17
- Please contact us to add additional fields for grouping.
18
-
19
- """
20
- max_assets: NotRequired[Nullable[int]]
21
- r"""Maximum number of assets to group"""
14
+ filters: NotRequired[Nullable[LogicalOperatorInputTypedDict]]
15
+ r"""Filters to apply to the bucket list"""
22
16
  sort: NotRequired[Nullable[SortOptionTypedDict]]
23
- r"""Sort options for ordering the inside of the groups"""
24
-
17
+ r"""Sort options for the bucket list"""
18
+ search: NotRequired[Nullable[str]]
19
+ r"""Search term to filter buckets by name or description"""
25
20
 
26
- class GroupByOptionsAsset(BaseModel):
27
- field: OptionalNullable[str] = UNSET
28
- r"""
29
- Field to group by
30
21
 
31
- Note: We currently do not support ad-hoc grouping.
32
- This means the field must be indexed separately.
33
- Please contact us to add additional fields for grouping.
22
+ class ListBucketsRequest(BaseModel):
23
+ r"""Request model for listing buckets"""
34
24
 
35
- """
36
-
37
- max_assets: OptionalNullable[int] = UNSET
38
- r"""Maximum number of assets to group"""
25
+ filters: OptionalNullable[LogicalOperatorInput] = UNSET
26
+ r"""Filters to apply to the bucket list"""
39
27
 
40
28
  sort: OptionalNullable[SortOption] = UNSET
41
- r"""Sort options for ordering the inside of the groups"""
29
+ r"""Sort options for the bucket list"""
30
+
31
+ search: OptionalNullable[str] = UNSET
32
+ r"""Search term to filter buckets by name or description"""
42
33
 
43
34
  @model_serializer(mode="wrap")
44
35
  def serialize_model(self, handler):
45
- optional_fields = ["field", "max_assets", "sort"]
46
- nullable_fields = ["field", "max_assets", "sort"]
36
+ optional_fields = ["filters", "sort", "search"]
37
+ nullable_fields = ["filters", "sort", "search"]
47
38
  null_default_fields = []
48
39
 
49
40
  serialized = handler(self)
50
41
 
51
42
  m = {}
52
43
 
53
- for n, f in self.model_fields.items():
44
+ for n, f in type(self).model_fields.items():
54
45
  k = f.alias or n
55
46
  val = serialized.get(k)
56
47
  serialized.pop(k, None)
@@ -0,0 +1,23 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .bucketresponse import BucketResponse, BucketResponseTypedDict
5
+ from .paginationresponse import PaginationResponse, PaginationResponseTypedDict
6
+ from mixpeek.types import BaseModel
7
+ from typing import List
8
+ from typing_extensions import TypedDict
9
+
10
+
11
+ class ListBucketsResponseTypedDict(TypedDict):
12
+ r"""Response model for listing buckets"""
13
+
14
+ results: List[BucketResponseTypedDict]
15
+ pagination: PaginationResponseTypedDict
16
+
17
+
18
+ class ListBucketsResponse(BaseModel):
19
+ r"""Response model for listing buckets"""
20
+
21
+ results: List[BucketResponse]
22
+
23
+ pagination: PaginationResponse
@@ -1,56 +1,47 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
+ from .logicaloperator_input import LogicalOperatorInput, LogicalOperatorInputTypedDict
4
5
  from .sortoption import SortOption, SortOptionTypedDict
5
6
  from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
6
7
  from pydantic import model_serializer
7
8
  from typing_extensions import NotRequired, TypedDict
8
9
 
9
10
 
10
- class GroupByOptionsTypedDict(TypedDict):
11
- field: NotRequired[Nullable[str]]
12
- r"""
13
- Field to group by
11
+ class ListObjectsRequestTypedDict(TypedDict):
12
+ r"""Request model for listing objects in a bucket"""
14
13
 
15
- Note: We currently do not support ad-hoc grouping.
16
- This means the field must be indexed separately.
17
- Please contact us to add additional fields for grouping.
18
-
19
- """
20
- max_features: NotRequired[Nullable[int]]
21
- r"""Maximum number of features to group"""
14
+ filters: NotRequired[Nullable[LogicalOperatorInputTypedDict]]
15
+ r"""Filters to apply to the object list"""
22
16
  sort: NotRequired[Nullable[SortOptionTypedDict]]
23
- r"""Sort options for ordering the inside of the groups"""
24
-
17
+ r"""Sort options for the object list"""
18
+ search: NotRequired[Nullable[str]]
19
+ r"""Search term to filter objects by key or metadata"""
25
20
 
26
- class GroupByOptions(BaseModel):
27
- field: OptionalNullable[str] = UNSET
28
- r"""
29
- Field to group by
30
21
 
31
- Note: We currently do not support ad-hoc grouping.
32
- This means the field must be indexed separately.
33
- Please contact us to add additional fields for grouping.
22
+ class ListObjectsRequest(BaseModel):
23
+ r"""Request model for listing objects in a bucket"""
34
24
 
35
- """
36
-
37
- max_features: OptionalNullable[int] = UNSET
38
- r"""Maximum number of features to group"""
25
+ filters: OptionalNullable[LogicalOperatorInput] = UNSET
26
+ r"""Filters to apply to the object list"""
39
27
 
40
28
  sort: OptionalNullable[SortOption] = UNSET
41
- r"""Sort options for ordering the inside of the groups"""
29
+ r"""Sort options for the object list"""
30
+
31
+ search: OptionalNullable[str] = UNSET
32
+ r"""Search term to filter objects by key or metadata"""
42
33
 
43
34
  @model_serializer(mode="wrap")
44
35
  def serialize_model(self, handler):
45
- optional_fields = ["field", "max_features", "sort"]
46
- nullable_fields = ["field", "max_features", "sort"]
36
+ optional_fields = ["filters", "sort", "search"]
37
+ nullable_fields = ["filters", "sort", "search"]
47
38
  null_default_fields = []
48
39
 
49
40
  serialized = handler(self)
50
41
 
51
42
  m = {}
52
43
 
53
- for n, f in self.model_fields.items():
44
+ for n, f in type(self).model_fields.items():
54
45
  k = f.alias or n
55
46
  val = serialized.get(k)
56
47
  serialized.pop(k, None)
@@ -0,0 +1,25 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .objectresponse import ObjectResponse, ObjectResponseTypedDict
5
+ from .paginationresponse import PaginationResponse, PaginationResponseTypedDict
6
+ from mixpeek.types import BaseModel
7
+ from typing import List
8
+ from typing_extensions import TypedDict
9
+
10
+
11
+ class ListObjectsResponseTypedDict(TypedDict):
12
+ r"""Response model for listing objects in a bucket"""
13
+
14
+ results: List[ObjectResponseTypedDict]
15
+ r"""List of objects matching the query"""
16
+ pagination: PaginationResponseTypedDict
17
+
18
+
19
+ class ListObjectsResponse(BaseModel):
20
+ r"""Response model for listing objects in a bucket"""
21
+
22
+ results: List[ObjectResponse]
23
+ r"""List of objects matching the query"""
24
+
25
+ pagination: PaginationResponse
@@ -1,10 +1,7 @@
1
1
  """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
2
 
3
3
  from __future__ import annotations
4
- from .db_model_paginationresponse import (
5
- DbModelPaginationResponse,
6
- DbModelPaginationResponseTypedDict,
7
- )
4
+ from .paginationresponse import PaginationResponse, PaginationResponseTypedDict
8
5
  from .taskresponse import TaskResponse, TaskResponseTypedDict
9
6
  from mixpeek.types import BaseModel
10
7
  from typing import List
@@ -13,10 +10,10 @@ from typing_extensions import TypedDict
13
10
 
14
11
  class ListTasksResponseTypedDict(TypedDict):
15
12
  results: List[TaskResponseTypedDict]
16
- pagination: DbModelPaginationResponseTypedDict
13
+ pagination: PaginationResponseTypedDict
17
14
 
18
15
 
19
16
  class ListTasksResponse(BaseModel):
20
17
  results: List[TaskResponse]
21
18
 
22
- pagination: DbModelPaginationResponse
19
+ pagination: PaginationResponse
@@ -9,41 +9,59 @@ from typing import List, Union
9
9
  from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
10
10
 
11
11
 
12
- class LogicalOperatorTypedDict(TypedDict):
13
- case_sensitive: NotRequired[Nullable[bool]]
14
- r"""Whether to perform case-sensitive matching"""
12
+ class LogicalOperatorInputTypedDict(TypedDict):
13
+ r"""Represents a logical operation (AND, OR, NOT) on filter conditions.
14
+
15
+ Attributes:
16
+ AND: List of conditions that must all be true
17
+ OR: List of conditions where at least one must be true
18
+ NOT: List of conditions that must all be false
19
+ case_sensitive: Whether string comparisons are case sensitive
20
+ """
21
+
15
22
  and_: NotRequired[Nullable[List[AndTypedDict]]]
16
- r"""Logical AND operation"""
23
+ r"""Logical AND operation - all conditions must be true"""
17
24
  or_: NotRequired[Nullable[List[OrTypedDict]]]
18
- r"""Logical OR operation"""
19
- nor: NotRequired[Nullable[List[NorTypedDict]]]
20
- r"""Logical NOR operation"""
25
+ r"""Logical OR operation - at least one condition must be true"""
26
+ not_: NotRequired[Nullable[List[NotTypedDict]]]
27
+ r"""Logical NOT operation - all conditions must be false"""
28
+ case_sensitive: NotRequired[Nullable[bool]]
29
+ r"""Whether to perform case-sensitive matching"""
21
30
 
22
31
 
23
- class LogicalOperator(BaseModel):
24
- case_sensitive: OptionalNullable[bool] = UNSET
25
- r"""Whether to perform case-sensitive matching"""
32
+ class LogicalOperatorInput(BaseModel):
33
+ r"""Represents a logical operation (AND, OR, NOT) on filter conditions.
34
+
35
+ Attributes:
36
+ AND: List of conditions that must all be true
37
+ OR: List of conditions where at least one must be true
38
+ NOT: List of conditions that must all be false
39
+ case_sensitive: Whether string comparisons are case sensitive
40
+ """
26
41
 
27
42
  and_: Annotated[OptionalNullable[List[And]], pydantic.Field(alias="AND")] = UNSET
28
- r"""Logical AND operation"""
43
+ r"""Logical AND operation - all conditions must be true"""
29
44
 
30
45
  or_: Annotated[OptionalNullable[List[Or]], pydantic.Field(alias="OR")] = UNSET
31
- r"""Logical OR operation"""
46
+ r"""Logical OR operation - at least one condition must be true"""
32
47
 
33
- nor: Annotated[OptionalNullable[List[Nor]], pydantic.Field(alias="NOR")] = UNSET
34
- r"""Logical NOR operation"""
48
+ not_: Annotated[OptionalNullable[List[Not]], pydantic.Field(alias="NOT")] = UNSET
49
+ r"""Logical NOT operation - all conditions must be false"""
50
+
51
+ case_sensitive: OptionalNullable[bool] = UNSET
52
+ r"""Whether to perform case-sensitive matching"""
35
53
 
36
54
  @model_serializer(mode="wrap")
37
55
  def serialize_model(self, handler):
38
- optional_fields = ["case_sensitive", "AND", "OR", "NOR"]
39
- nullable_fields = ["case_sensitive", "AND", "OR", "NOR"]
56
+ optional_fields = ["AND", "OR", "NOT", "case_sensitive"]
57
+ nullable_fields = ["AND", "OR", "NOT", "case_sensitive"]
40
58
  null_default_fields = []
41
59
 
42
60
  serialized = handler(self)
43
61
 
44
62
  m = {}
45
63
 
46
- for n, f in self.model_fields.items():
64
+ for n, f in type(self).model_fields.items():
47
65
  k = f.alias or n
48
66
  val = serialized.get(k)
49
67
  serialized.pop(k, None)
@@ -65,24 +83,24 @@ class LogicalOperator(BaseModel):
65
83
 
66
84
 
67
85
  AndTypedDict = TypeAliasType(
68
- "AndTypedDict", Union[FilterConditionTypedDict, "LogicalOperatorTypedDict"]
86
+ "AndTypedDict", Union[FilterConditionTypedDict, "LogicalOperatorInputTypedDict"]
69
87
  )
70
88
 
71
89
 
72
- And = TypeAliasType("And", Union[FilterCondition, "LogicalOperator"])
90
+ And = TypeAliasType("And", Union[FilterCondition, "LogicalOperatorInput"])
73
91
 
74
92
 
75
93
  OrTypedDict = TypeAliasType(
76
- "OrTypedDict", Union[FilterConditionTypedDict, "LogicalOperatorTypedDict"]
94
+ "OrTypedDict", Union[FilterConditionTypedDict, "LogicalOperatorInputTypedDict"]
77
95
  )
78
96
 
79
97
 
80
- Or = TypeAliasType("Or", Union[FilterCondition, "LogicalOperator"])
98
+ Or = TypeAliasType("Or", Union[FilterCondition, "LogicalOperatorInput"])
81
99
 
82
100
 
83
- NorTypedDict = TypeAliasType(
84
- "NorTypedDict", Union[FilterConditionTypedDict, "LogicalOperatorTypedDict"]
101
+ NotTypedDict = TypeAliasType(
102
+ "NotTypedDict", Union[FilterConditionTypedDict, "LogicalOperatorInputTypedDict"]
85
103
  )
86
104
 
87
105
 
88
- Nor = TypeAliasType("Nor", Union[FilterCondition, "LogicalOperator"])
106
+ Not = TypeAliasType("Not", Union[FilterCondition, "LogicalOperatorInput"])
@@ -0,0 +1,121 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .filtercondition import FilterCondition, FilterConditionTypedDict
5
+ from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
6
+ import pydantic
7
+ from pydantic import model_serializer
8
+ from typing import List, Union
9
+ from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
10
+
11
+
12
+ class LogicalOperatorOutputTypedDict(TypedDict):
13
+ r"""Represents a logical operation (AND, OR, NOT) on filter conditions.
14
+
15
+ Attributes:
16
+ AND: List of conditions that must all be true
17
+ OR: List of conditions where at least one must be true
18
+ NOT: List of conditions that must all be false
19
+ case_sensitive: Whether string comparisons are case sensitive
20
+ """
21
+
22
+ and_: NotRequired[Nullable[List[LogicalOperatorOutputANDTypedDict]]]
23
+ r"""Logical AND operation - all conditions must be true"""
24
+ or_: NotRequired[Nullable[List[LogicalOperatorOutputORTypedDict]]]
25
+ r"""Logical OR operation - at least one condition must be true"""
26
+ not_: NotRequired[Nullable[List[LogicalOperatorOutputNOTTypedDict]]]
27
+ r"""Logical NOT operation - all conditions must be false"""
28
+ case_sensitive: NotRequired[Nullable[bool]]
29
+ r"""Whether to perform case-sensitive matching"""
30
+
31
+
32
+ class LogicalOperatorOutput(BaseModel):
33
+ r"""Represents a logical operation (AND, OR, NOT) on filter conditions.
34
+
35
+ Attributes:
36
+ AND: List of conditions that must all be true
37
+ OR: List of conditions where at least one must be true
38
+ NOT: List of conditions that must all be false
39
+ case_sensitive: Whether string comparisons are case sensitive
40
+ """
41
+
42
+ and_: Annotated[
43
+ OptionalNullable[List[LogicalOperatorOutputAND]], pydantic.Field(alias="AND")
44
+ ] = UNSET
45
+ r"""Logical AND operation - all conditions must be true"""
46
+
47
+ or_: Annotated[
48
+ OptionalNullable[List[LogicalOperatorOutputOR]], pydantic.Field(alias="OR")
49
+ ] = UNSET
50
+ r"""Logical OR operation - at least one condition must be true"""
51
+
52
+ not_: Annotated[
53
+ OptionalNullable[List[LogicalOperatorOutputNOT]], pydantic.Field(alias="NOT")
54
+ ] = UNSET
55
+ r"""Logical NOT operation - all conditions must be false"""
56
+
57
+ case_sensitive: OptionalNullable[bool] = UNSET
58
+ r"""Whether to perform case-sensitive matching"""
59
+
60
+ @model_serializer(mode="wrap")
61
+ def serialize_model(self, handler):
62
+ optional_fields = ["AND", "OR", "NOT", "case_sensitive"]
63
+ nullable_fields = ["AND", "OR", "NOT", "case_sensitive"]
64
+ null_default_fields = []
65
+
66
+ serialized = handler(self)
67
+
68
+ m = {}
69
+
70
+ for n, f in type(self).model_fields.items():
71
+ k = f.alias or n
72
+ val = serialized.get(k)
73
+ serialized.pop(k, None)
74
+
75
+ optional_nullable = k in optional_fields and k in nullable_fields
76
+ is_set = (
77
+ self.__pydantic_fields_set__.intersection({n})
78
+ or k in null_default_fields
79
+ ) # pylint: disable=no-member
80
+
81
+ if val is not None and val != UNSET_SENTINEL:
82
+ m[k] = val
83
+ elif val != UNSET_SENTINEL and (
84
+ not k in optional_fields or (optional_nullable and is_set)
85
+ ):
86
+ m[k] = val
87
+
88
+ return m
89
+
90
+
91
+ LogicalOperatorOutputANDTypedDict = TypeAliasType(
92
+ "LogicalOperatorOutputANDTypedDict",
93
+ Union[FilterConditionTypedDict, "LogicalOperatorOutputTypedDict"],
94
+ )
95
+
96
+
97
+ LogicalOperatorOutputAND = TypeAliasType(
98
+ "LogicalOperatorOutputAND", Union[FilterCondition, "LogicalOperatorOutput"]
99
+ )
100
+
101
+
102
+ LogicalOperatorOutputORTypedDict = TypeAliasType(
103
+ "LogicalOperatorOutputORTypedDict",
104
+ Union[FilterConditionTypedDict, "LogicalOperatorOutputTypedDict"],
105
+ )
106
+
107
+
108
+ LogicalOperatorOutputOR = TypeAliasType(
109
+ "LogicalOperatorOutputOR", Union[FilterCondition, "LogicalOperatorOutput"]
110
+ )
111
+
112
+
113
+ LogicalOperatorOutputNOTTypedDict = TypeAliasType(
114
+ "LogicalOperatorOutputNOTTypedDict",
115
+ Union[FilterConditionTypedDict, "LogicalOperatorOutputTypedDict"],
116
+ )
117
+
118
+
119
+ LogicalOperatorOutputNOT = TypeAliasType(
120
+ "LogicalOperatorOutputNOT", Union[FilterCondition, "LogicalOperatorOutput"]
121
+ )
@@ -0,0 +1,25 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .vectorindex import VectorIndex, VectorIndexTypedDict
5
+ from mixpeek.types import BaseModel
6
+ from typing import Dict
7
+ from typing_extensions import TypedDict
8
+
9
+
10
+ class MultiVectorIndexTypedDict(TypedDict):
11
+ r"""Configuration for multi-vector indexes"""
12
+
13
+ name: str
14
+ description: str
15
+ vectors: Dict[str, VectorIndexTypedDict]
16
+
17
+
18
+ class MultiVectorIndex(BaseModel):
19
+ r"""Configuration for multi-vector indexes"""
20
+
21
+ name: str
22
+
23
+ description: str
24
+
25
+ vectors: Dict[str, VectorIndex]
@@ -33,7 +33,7 @@ class NamespaceResponse(BaseModel):
33
33
 
34
34
  m = {}
35
35
 
36
- for n, f in self.model_fields.items():
36
+ for n, f in type(self).model_fields.items():
37
37
  k = f.alias or n
38
38
  val = serialized.get(k)
39
39
  serialized.pop(k, None)
@@ -0,0 +1,45 @@
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 NamespaceUsageTypedDict(TypedDict):
10
+ r"""Usage statistics for a single namespace"""
11
+
12
+ namespace_id: str
13
+ r"""Namespace ID"""
14
+ namespace_name: str
15
+ r"""Namespace name"""
16
+ storage_used_gb: float
17
+ r"""Storage used in GB"""
18
+ api_calls_30d: int
19
+ r"""API calls in the last 30 days"""
20
+ documents_count: int
21
+ r"""Number of documents"""
22
+ last_activity: datetime
23
+ r"""Timestamp of last activity"""
24
+
25
+
26
+ class NamespaceUsage(BaseModel):
27
+ r"""Usage statistics for a single namespace"""
28
+
29
+ namespace_id: str
30
+ r"""Namespace ID"""
31
+
32
+ namespace_name: str
33
+ r"""Namespace name"""
34
+
35
+ storage_used_gb: float
36
+ r"""Storage used in GB"""
37
+
38
+ api_calls_30d: int
39
+ r"""API calls in the last 30 days"""
40
+
41
+ documents_count: int
42
+ r"""Number of documents"""
43
+
44
+ last_activity: datetime
45
+ r"""Timestamp of last activity"""
@@ -0,0 +1,8 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from enum import Enum
5
+
6
+
7
+ class NamingMethod(str, Enum):
8
+ CENTROID = "centroid"