mixpeek 0.12.0__py3-none-any.whl → 0.13__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 (270) hide show
  1. mixpeek/__init__.py +5 -79
  2. mixpeek/_hooks/__init__.py +5 -0
  3. mixpeek/_hooks/registration.py +13 -0
  4. mixpeek/_hooks/sdkhooks.py +76 -0
  5. mixpeek/_hooks/types.py +94 -0
  6. mixpeek/_version.py +11 -3
  7. mixpeek/assets.py +1561 -0
  8. mixpeek/basesdk.py +350 -0
  9. mixpeek/collections.py +1029 -0
  10. mixpeek/featureextractors.py +205 -0
  11. mixpeek/features.py +1181 -0
  12. mixpeek/health.py +167 -0
  13. mixpeek/httpclient.py +84 -0
  14. mixpeek/ingest.py +831 -0
  15. mixpeek/interactions.py +221 -0
  16. mixpeek/models/__init__.py +751 -0
  17. mixpeek/models/actionusage.py +16 -0
  18. mixpeek/models/apierror.py +22 -0
  19. mixpeek/models/apikey.py +25 -0
  20. mixpeek/models/apikeyupdate.py +49 -0
  21. mixpeek/models/assetfeatures.py +55 -0
  22. mixpeek/models/assetresponse.py +166 -0
  23. mixpeek/models/assets_model_searchquery.py +21 -0
  24. mixpeek/models/assetupdate.py +28 -0
  25. mixpeek/models/availableindexesresponse.py +23 -0
  26. mixpeek/models/availablemodels.py +12 -0
  27. mixpeek/models/boolindexparams.py +18 -0
  28. mixpeek/models/collectionmodel.py +70 -0
  29. mixpeek/models/collectionresult.py +73 -0
  30. mixpeek/models/create_api_key_organizations_users_user_email_api_keys_postop.py +23 -0
  31. mixpeek/models/create_collection_collections_postop.py +62 -0
  32. mixpeek/models/create_interaction_features_search_interactions_postop.py +59 -0
  33. mixpeek/models/createcollectionrequest.py +59 -0
  34. mixpeek/models/createnamespacerequest.py +62 -0
  35. mixpeek/models/datetimeindexparams.py +18 -0
  36. mixpeek/models/dateusage.py +22 -0
  37. mixpeek/models/db_model_paginationresponse.py +59 -0
  38. mixpeek/models/db_model_taskresponse.py +20 -0
  39. mixpeek/models/delete_api_key_organizations_users_user_email_api_keys_key_name_deleteop.py +23 -0
  40. mixpeek/models/delete_asset_assets_asset_id_deleteop.py +57 -0
  41. mixpeek/models/delete_collection_collections_collection_deleteop.py +59 -0
  42. mixpeek/models/delete_feature_features_feature_id_deleteop.py +57 -0
  43. mixpeek/models/delete_interaction_features_search_interactions_interaction_id_deleteop.py +59 -0
  44. mixpeek/models/delete_namespace_namespaces_namespace_deleteop.py +18 -0
  45. mixpeek/models/delete_user_organizations_users_user_email_deleteop.py +16 -0
  46. mixpeek/models/denseembedding.py +16 -0
  47. mixpeek/models/embeddingrequest.py +59 -0
  48. mixpeek/models/embeddingresponse.py +64 -0
  49. mixpeek/models/errormessage.py +13 -0
  50. mixpeek/models/errorresponse.py +21 -0
  51. mixpeek/models/facedetectsettings.py +52 -0
  52. mixpeek/models/featureextractionembeddingrequest.py +54 -0
  53. mixpeek/models/featureresponse.py +74 -0
  54. mixpeek/models/features_model_paginationresponse.py +59 -0
  55. mixpeek/models/featureupdaterequest.py +21 -0
  56. mixpeek/models/filtercondition.py +74 -0
  57. mixpeek/models/floatindexparams.py +18 -0
  58. mixpeek/models/full_asset_update_assets_asset_id_putop.py +69 -0
  59. mixpeek/models/full_feature_update_features_feature_id_putop.py +69 -0
  60. mixpeek/models/geoindexparams.py +18 -0
  61. mixpeek/models/get_asset_assets_asset_id_getop.py +73 -0
  62. mixpeek/models/get_asset_with_features_assets_asset_id_features_getop.py +73 -0
  63. mixpeek/models/get_collection_collections_collection_getop.py +59 -0
  64. mixpeek/models/get_feature_features_feature_id_getop.py +70 -0
  65. mixpeek/models/get_interaction_features_search_interactions_interaction_id_getop.py +59 -0
  66. mixpeek/models/get_namespace_namespaces_namespace_getop.py +18 -0
  67. mixpeek/models/get_task_tasks_task_id_getop.py +57 -0
  68. mixpeek/models/get_user_organizations_users_user_email_getop.py +16 -0
  69. mixpeek/models/groupbyoptions.py +71 -0
  70. mixpeek/models/groupbyoptionsasset.py +71 -0
  71. mixpeek/models/groupedassetdata.py +18 -0
  72. mixpeek/models/healthcheckresponse.py +13 -0
  73. mixpeek/models/httpvalidationerror.py +21 -0
  74. mixpeek/models/imagedescribesettings.py +82 -0
  75. mixpeek/models/imagedetectsettings.py +53 -0
  76. mixpeek/models/imagereadsettings.py +71 -0
  77. mixpeek/models/imagesettings.py +79 -0
  78. mixpeek/models/ingest_image_url_ingest_images_url_postop.py +59 -0
  79. mixpeek/models/ingest_text_ingest_text_postop.py +59 -0
  80. mixpeek/models/ingest_video_url_ingest_videos_url_postop.py +59 -0
  81. mixpeek/models/inputtype.py +11 -0
  82. mixpeek/models/integerindexparams.py +24 -0
  83. mixpeek/models/interactionresponse.py +87 -0
  84. mixpeek/models/interactiontype.py +11 -0
  85. mixpeek/models/jsonimageoutputsettings.py +55 -0
  86. mixpeek/models/jsontextoutputsettings.py +55 -0
  87. mixpeek/models/jsonvideooutputsettings.py +55 -0
  88. mixpeek/models/keywordindexparams.py +21 -0
  89. mixpeek/models/kill_task_tasks_task_id_deleteop.py +57 -0
  90. mixpeek/models/list_assets_assets_postop.py +77 -0
  91. mixpeek/models/list_collections_collections_getop.py +65 -0
  92. mixpeek/models/list_features_features_postop.py +79 -0
  93. mixpeek/models/list_interactions_features_search_interactions_getop.py +96 -0
  94. mixpeek/models/listassetsrequest.py +75 -0
  95. mixpeek/models/listassetsresponse.py +22 -0
  96. mixpeek/models/listcollectionsresponse.py +22 -0
  97. mixpeek/models/listfeaturesrequest.py +77 -0
  98. mixpeek/models/listfeaturesresponse.py +22 -0
  99. mixpeek/models/logicaloperator_input.py +88 -0
  100. mixpeek/models/logicaloperator_output.py +103 -0
  101. mixpeek/models/logodetectsettings.py +52 -0
  102. mixpeek/models/modality.py +13 -0
  103. mixpeek/models/modeldetails.py +57 -0
  104. mixpeek/models/namespaceresponse.py +54 -0
  105. mixpeek/models/organizationmodel.py +45 -0
  106. mixpeek/models/partial_asset_update_assets_asset_id_patchop.py +69 -0
  107. mixpeek/models/payloadindexconfig.py +94 -0
  108. mixpeek/models/payloadindextype.py +17 -0
  109. mixpeek/models/payloadschematype.py +15 -0
  110. mixpeek/models/percolaterequest.py +57 -0
  111. mixpeek/models/permission.py +10 -0
  112. mixpeek/models/processimageurlinput.py +99 -0
  113. mixpeek/models/processtextinput.py +94 -0
  114. mixpeek/models/processvideourlinput.py +99 -0
  115. mixpeek/models/querysettings.py +56 -0
  116. mixpeek/models/rerankingoptions.py +47 -0
  117. mixpeek/models/search_assets_assets_search_postop.py +59 -0
  118. mixpeek/models/search_features_features_search_postop.py +96 -0
  119. mixpeek/models/search_model_searchquery_input.py +76 -0
  120. mixpeek/models/searchassetsrequest.py +78 -0
  121. mixpeek/models/searchinteraction.py +82 -0
  122. mixpeek/models/searchquery_output.py +79 -0
  123. mixpeek/models/searchrequestfeatures_input.py +151 -0
  124. mixpeek/models/searchrequestfeatures_output.py +151 -0
  125. mixpeek/models/sortoption.py +28 -0
  126. mixpeek/models/sparseembedding.py +21 -0
  127. mixpeek/models/tasks_model_taskresponse.py +24 -0
  128. mixpeek/models/taskstatus.py +16 -0
  129. mixpeek/models/textindexparams.py +31 -0
  130. mixpeek/models/textsettings.py +61 -0
  131. mixpeek/models/tokenizertype.py +11 -0
  132. mixpeek/models/update_api_key_organizations_users_user_email_api_keys_key_name_patchop.py +30 -0
  133. mixpeek/models/update_collection_collections_collection_putop.py +74 -0
  134. mixpeek/models/update_namespace_namespaces_namespace_putop.py +28 -0
  135. mixpeek/models/updateassetrequest.py +60 -0
  136. mixpeek/models/updatenamespacerequest.py +26 -0
  137. mixpeek/models/usage.py +18 -0
  138. mixpeek/models/usermodel_input.py +36 -0
  139. mixpeek/models/usermodel_output.py +36 -0
  140. mixpeek/models/uuidindexparams.py +21 -0
  141. mixpeek/models/validationerror.py +26 -0
  142. mixpeek/models/vectormodel.py +11 -0
  143. mixpeek/models/vectortype.py +9 -0
  144. mixpeek/models/videodescribesettings.py +82 -0
  145. mixpeek/models/videodetectsettings.py +53 -0
  146. mixpeek/models/videoreadsettings.py +71 -0
  147. mixpeek/models/videosettings.py +101 -0
  148. mixpeek/models/videotranscriptionsettings.py +69 -0
  149. mixpeek/namespaces.py +1143 -0
  150. mixpeek/organizations.py +1508 -0
  151. mixpeek/py.typed +1 -0
  152. mixpeek/sdk.py +135 -0
  153. mixpeek/sdkconfiguration.py +45 -0
  154. mixpeek/searchinteractions.py +647 -0
  155. mixpeek/tasks.py +387 -0
  156. mixpeek/types/__init__.py +19 -29
  157. mixpeek/types/basemodel.py +39 -0
  158. mixpeek/utils/__init__.py +97 -0
  159. mixpeek/utils/annotations.py +55 -0
  160. mixpeek/utils/enums.py +34 -0
  161. mixpeek/utils/eventstreaming.py +238 -0
  162. mixpeek/utils/forms.py +202 -0
  163. mixpeek/utils/headers.py +136 -0
  164. mixpeek/utils/logger.py +27 -0
  165. mixpeek/utils/metadata.py +118 -0
  166. mixpeek/utils/queryparams.py +205 -0
  167. mixpeek/utils/requestbodies.py +66 -0
  168. mixpeek/utils/retries.py +217 -0
  169. mixpeek/utils/security.py +174 -0
  170. mixpeek/utils/serializers.py +215 -0
  171. mixpeek/utils/url.py +155 -0
  172. mixpeek/utils/values.py +134 -0
  173. mixpeek-0.13.dist-info/METADATA +439 -0
  174. mixpeek-0.13.dist-info/RECORD +176 -0
  175. {mixpeek-0.12.0.dist-info → mixpeek-0.13.dist-info}/WHEEL +1 -1
  176. py.typed +1 -0
  177. mixpeek/_base_client.py +0 -2041
  178. mixpeek/_client.py +0 -444
  179. mixpeek/_compat.py +0 -221
  180. mixpeek/_constants.py +0 -14
  181. mixpeek/_exceptions.py +0 -108
  182. mixpeek/_files.py +0 -123
  183. mixpeek/_models.py +0 -788
  184. mixpeek/_qs.py +0 -150
  185. mixpeek/_resource.py +0 -43
  186. mixpeek/_response.py +0 -824
  187. mixpeek/_streaming.py +0 -333
  188. mixpeek/_types.py +0 -219
  189. mixpeek/_utils/__init__.py +0 -56
  190. mixpeek/_utils/_logs.py +0 -25
  191. mixpeek/_utils/_proxy.py +0 -62
  192. mixpeek/_utils/_reflection.py +0 -42
  193. mixpeek/_utils/_streams.py +0 -12
  194. mixpeek/_utils/_sync.py +0 -81
  195. mixpeek/_utils/_transform.py +0 -387
  196. mixpeek/_utils/_typing.py +0 -120
  197. mixpeek/_utils/_utils.py +0 -414
  198. mixpeek/lib/.keep +0 -4
  199. mixpeek/resources/__init__.py +0 -117
  200. mixpeek/resources/accounts.py +0 -271
  201. mixpeek/resources/assets/__init__.py +0 -33
  202. mixpeek/resources/assets/assets.py +0 -708
  203. mixpeek/resources/assets/features.py +0 -172
  204. mixpeek/resources/collections.py +0 -283
  205. mixpeek/resources/entities/__init__.py +0 -47
  206. mixpeek/resources/entities/entities.py +0 -134
  207. mixpeek/resources/entities/faces.py +0 -514
  208. mixpeek/resources/entities/labels.py +0 -388
  209. mixpeek/resources/features/__init__.py +0 -33
  210. mixpeek/resources/features/features.py +0 -562
  211. mixpeek/resources/features/search.py +0 -731
  212. mixpeek/resources/healthcheck.py +0 -135
  213. mixpeek/resources/index/__init__.py +0 -47
  214. mixpeek/resources/index/images.py +0 -249
  215. mixpeek/resources/index/index.py +0 -289
  216. mixpeek/resources/index/videos.py +0 -249
  217. mixpeek/resources/tasks.py +0 -258
  218. mixpeek/types/account_update_params.py +0 -28
  219. mixpeek/types/asset_create_params.py +0 -36
  220. mixpeek/types/asset_create_response.py +0 -15
  221. mixpeek/types/asset_response.py +0 -46
  222. mixpeek/types/asset_search_params.py +0 -43
  223. mixpeek/types/asset_search_response.py +0 -15
  224. mixpeek/types/asset_update_params.py +0 -25
  225. mixpeek/types/asset_update_response.py +0 -11
  226. mixpeek/types/assets/__init__.py +0 -3
  227. mixpeek/types/collection_list_params.py +0 -19
  228. mixpeek/types/collection_list_response.py +0 -14
  229. mixpeek/types/entities/__init__.py +0 -13
  230. mixpeek/types/entities/face_create_params.py +0 -21
  231. mixpeek/types/entities/face_list_params.py +0 -18
  232. mixpeek/types/entities/face_list_response.py +0 -15
  233. mixpeek/types/entities/face_response.py +0 -17
  234. mixpeek/types/entities/face_update_params.py +0 -22
  235. mixpeek/types/entities/label_list_params.py +0 -18
  236. mixpeek/types/entities/label_list_response.py +0 -30
  237. mixpeek/types/entities/label_response.py +0 -30
  238. mixpeek/types/entities/label_update_params.py +0 -21
  239. mixpeek/types/feature.py +0 -32
  240. mixpeek/types/feature_list_params.py +0 -37
  241. mixpeek/types/feature_list_response.py +0 -28
  242. mixpeek/types/feature_retrieve_params.py +0 -18
  243. mixpeek/types/feature_update_params.py +0 -16
  244. mixpeek/types/features/__init__.py +0 -8
  245. mixpeek/types/features/search_feedback_params.py +0 -23
  246. mixpeek/types/features/search_file_params.py +0 -29
  247. mixpeek/types/features/search_text_params.py +0 -72
  248. mixpeek/types/features/search_url_params.py +0 -72
  249. mixpeek/types/grouped_asset_data.py +0 -24
  250. mixpeek/types/health_check_response.py +0 -10
  251. mixpeek/types/index/__init__.py +0 -8
  252. mixpeek/types/index/image_url_params.py +0 -135
  253. mixpeek/types/index/image_url_response.py +0 -20
  254. mixpeek/types/index/video_url_params.py +0 -154
  255. mixpeek/types/index/video_url_response.py +0 -20
  256. mixpeek/types/index_text_params.py +0 -77
  257. mixpeek/types/index_text_response.py +0 -14
  258. mixpeek/types/shared/__init__.py +0 -7
  259. mixpeek/types/shared/filter_condition.py +0 -19
  260. mixpeek/types/shared/logical_operator.py +0 -12
  261. mixpeek/types/shared/model_pagination_response.py +0 -21
  262. mixpeek/types/shared/sort_option.py +0 -15
  263. mixpeek/types/shared/task_response.py +0 -15
  264. mixpeek/types/shared_params/__init__.py +0 -4
  265. mixpeek/types/shared_params/logical_operator.py +0 -13
  266. mixpeek/types/shared_params/sort_option.py +0 -15
  267. mixpeek/types/user.py +0 -34
  268. mixpeek-0.12.0.dist-info/METADATA +0 -345
  269. mixpeek-0.12.0.dist-info/RECORD +0 -99
  270. mixpeek-0.12.0.dist-info/licenses/LICENSE +0 -201
@@ -0,0 +1,82 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .vectormodel import VectorModel
5
+ from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
6
+ from pydantic import model_serializer
7
+ from typing import Optional
8
+ from typing_extensions import NotRequired, TypedDict
9
+
10
+
11
+ class ImageDescribeSettingsJSONOutputTypedDict(TypedDict):
12
+ r"""JSON format for the response"""
13
+
14
+
15
+ class ImageDescribeSettingsJSONOutput(BaseModel):
16
+ r"""JSON format for the response"""
17
+
18
+
19
+ class ImageDescribeSettingsTypedDict(TypedDict):
20
+ prompt: NotRequired[Nullable[str]]
21
+ r"""Prompt for image description"""
22
+ enabled: NotRequired[bool]
23
+ r"""Enable image description"""
24
+ max_length: NotRequired[Nullable[int]]
25
+ r"""Maximum length of the description"""
26
+ json_output: NotRequired[ImageDescribeSettingsJSONOutputTypedDict]
27
+ r"""JSON format for the response"""
28
+ vector_index: NotRequired[Nullable[VectorModel]]
29
+ r"""Name of the vector model to use for embedding the text output. If vector_index is duplicated, the vector will be overwritten."""
30
+
31
+
32
+ class ImageDescribeSettings(BaseModel):
33
+ prompt: OptionalNullable[str] = UNSET
34
+ r"""Prompt for image description"""
35
+
36
+ enabled: Optional[bool] = True
37
+ r"""Enable image description"""
38
+
39
+ max_length: OptionalNullable[int] = UNSET
40
+ r"""Maximum length of the description"""
41
+
42
+ json_output: Optional[ImageDescribeSettingsJSONOutput] = None
43
+ r"""JSON format for the response"""
44
+
45
+ vector_index: OptionalNullable[VectorModel] = UNSET
46
+ r"""Name of the vector model to use for embedding the text output. If vector_index is duplicated, the vector will be overwritten."""
47
+
48
+ @model_serializer(mode="wrap")
49
+ def serialize_model(self, handler):
50
+ optional_fields = [
51
+ "prompt",
52
+ "enabled",
53
+ "max_length",
54
+ "json_output",
55
+ "vector_index",
56
+ ]
57
+ nullable_fields = ["prompt", "max_length", "vector_index"]
58
+ null_default_fields = []
59
+
60
+ serialized = handler(self)
61
+
62
+ m = {}
63
+
64
+ for n, f in self.model_fields.items():
65
+ k = f.alias or n
66
+ val = serialized.get(k)
67
+ serialized.pop(k, None)
68
+
69
+ optional_nullable = k in optional_fields and k in nullable_fields
70
+ is_set = (
71
+ self.__pydantic_fields_set__.intersection({n})
72
+ or k in null_default_fields
73
+ ) # pylint: disable=no-member
74
+
75
+ if val is not None and val != UNSET_SENTINEL:
76
+ m[k] = val
77
+ elif val != UNSET_SENTINEL and (
78
+ not k in optional_fields or (optional_nullable and is_set)
79
+ ):
80
+ m[k] = val
81
+
82
+ return m
@@ -0,0 +1,53 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .facedetectsettings import FaceDetectSettings, FaceDetectSettingsTypedDict
5
+ from .logodetectsettings import LogoDetectSettings, LogoDetectSettingsTypedDict
6
+ from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
7
+ from pydantic import model_serializer
8
+ from typing_extensions import NotRequired, TypedDict
9
+
10
+
11
+ class ImageDetectSettingsTypedDict(TypedDict):
12
+ faces: NotRequired[Nullable[FaceDetectSettingsTypedDict]]
13
+ r"""Settings for face detection"""
14
+ logos: NotRequired[Nullable[LogoDetectSettingsTypedDict]]
15
+ r"""Settings for logo detection"""
16
+
17
+
18
+ class ImageDetectSettings(BaseModel):
19
+ faces: OptionalNullable[FaceDetectSettings] = UNSET
20
+ r"""Settings for face detection"""
21
+
22
+ logos: OptionalNullable[LogoDetectSettings] = UNSET
23
+ r"""Settings for logo detection"""
24
+
25
+ @model_serializer(mode="wrap")
26
+ def serialize_model(self, handler):
27
+ optional_fields = ["faces", "logos"]
28
+ nullable_fields = ["faces", "logos"]
29
+ null_default_fields = []
30
+
31
+ serialized = handler(self)
32
+
33
+ m = {}
34
+
35
+ for n, f in self.model_fields.items():
36
+ k = f.alias or n
37
+ val = serialized.get(k)
38
+ serialized.pop(k, None)
39
+
40
+ optional_nullable = k in optional_fields and k in nullable_fields
41
+ is_set = (
42
+ self.__pydantic_fields_set__.intersection({n})
43
+ or k in null_default_fields
44
+ ) # pylint: disable=no-member
45
+
46
+ if val is not None and val != UNSET_SENTINEL:
47
+ m[k] = val
48
+ elif val != UNSET_SENTINEL and (
49
+ not k in optional_fields or (optional_nullable and is_set)
50
+ ):
51
+ m[k] = val
52
+
53
+ return m
@@ -0,0 +1,71 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .vectormodel import VectorModel
5
+ from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
6
+ from pydantic import model_serializer
7
+ from typing import Optional
8
+ from typing_extensions import NotRequired, TypedDict
9
+
10
+
11
+ class ImageReadSettingsJSONOutputTypedDict(TypedDict):
12
+ r"""JSON format for the response"""
13
+
14
+
15
+ class ImageReadSettingsJSONOutput(BaseModel):
16
+ r"""JSON format for the response"""
17
+
18
+
19
+ class ImageReadSettingsTypedDict(TypedDict):
20
+ enabled: NotRequired[bool]
21
+ r"""Enable image reading"""
22
+ prompt: NotRequired[Nullable[str]]
23
+ r"""Prompt for reading on-screen text"""
24
+ json_output: NotRequired[ImageReadSettingsJSONOutputTypedDict]
25
+ r"""JSON format for the response"""
26
+ vector_index: NotRequired[Nullable[VectorModel]]
27
+ r"""Name of the vector model to use for embedding the text output. If vector_index is duplicated, the vector will be overwritten."""
28
+
29
+
30
+ class ImageReadSettings(BaseModel):
31
+ enabled: Optional[bool] = True
32
+ r"""Enable image reading"""
33
+
34
+ prompt: OptionalNullable[str] = UNSET
35
+ r"""Prompt for reading on-screen text"""
36
+
37
+ json_output: Optional[ImageReadSettingsJSONOutput] = None
38
+ r"""JSON format for the response"""
39
+
40
+ vector_index: OptionalNullable[VectorModel] = UNSET
41
+ r"""Name of the vector model to use for embedding the text output. If vector_index is duplicated, the vector will be overwritten."""
42
+
43
+ @model_serializer(mode="wrap")
44
+ def serialize_model(self, handler):
45
+ optional_fields = ["enabled", "prompt", "json_output", "vector_index"]
46
+ nullable_fields = ["prompt", "vector_index"]
47
+ null_default_fields = []
48
+
49
+ serialized = handler(self)
50
+
51
+ m = {}
52
+
53
+ for n, f in self.model_fields.items():
54
+ k = f.alias or n
55
+ val = serialized.get(k)
56
+ serialized.pop(k, None)
57
+
58
+ optional_nullable = k in optional_fields and k in nullable_fields
59
+ is_set = (
60
+ self.__pydantic_fields_set__.intersection({n})
61
+ or k in null_default_fields
62
+ ) # pylint: disable=no-member
63
+
64
+ if val is not None and val != UNSET_SENTINEL:
65
+ m[k] = val
66
+ elif val != UNSET_SENTINEL and (
67
+ not k in optional_fields or (optional_nullable and is_set)
68
+ ):
69
+ m[k] = val
70
+
71
+ return m
@@ -0,0 +1,79 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .embeddingrequest import EmbeddingRequest, EmbeddingRequestTypedDict
5
+ from .imagedescribesettings import ImageDescribeSettings, ImageDescribeSettingsTypedDict
6
+ from .imagedetectsettings import ImageDetectSettings, ImageDetectSettingsTypedDict
7
+ from .imagereadsettings import ImageReadSettings, ImageReadSettingsTypedDict
8
+ from .jsonimageoutputsettings import (
9
+ JSONImageOutputSettings,
10
+ JSONImageOutputSettingsTypedDict,
11
+ )
12
+ from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
13
+ from pydantic import model_serializer
14
+ from typing import List, Optional
15
+ from typing_extensions import NotRequired, TypedDict
16
+
17
+
18
+ class ImageSettingsTypedDict(TypedDict):
19
+ read: NotRequired[Nullable[ImageReadSettingsTypedDict]]
20
+ r"""Settings for reading and analyzing image content."""
21
+ embed: NotRequired[List[EmbeddingRequestTypedDict]]
22
+ r"""List of embedding settings for generating multiple embeddings. If url is provided, value must be None.
23
+ Default: [{type: 'url', vector_index: 'multimodal'}] if none provided.
24
+ """
25
+ describe: NotRequired[Nullable[ImageDescribeSettingsTypedDict]]
26
+ r"""Settings for generating image descriptions."""
27
+ detect: NotRequired[Nullable[ImageDetectSettingsTypedDict]]
28
+ r"""Settings for object detection in images."""
29
+ json_output: NotRequired[Nullable[JSONImageOutputSettingsTypedDict]]
30
+ r"""Settings for structured JSON output of image analysis."""
31
+
32
+
33
+ class ImageSettings(BaseModel):
34
+ read: OptionalNullable[ImageReadSettings] = UNSET
35
+ r"""Settings for reading and analyzing image content."""
36
+
37
+ embed: Optional[List[EmbeddingRequest]] = None
38
+ r"""List of embedding settings for generating multiple embeddings. If url is provided, value must be None.
39
+ Default: [{type: 'url', vector_index: 'multimodal'}] if none provided.
40
+ """
41
+
42
+ describe: OptionalNullable[ImageDescribeSettings] = UNSET
43
+ r"""Settings for generating image descriptions."""
44
+
45
+ detect: OptionalNullable[ImageDetectSettings] = UNSET
46
+ r"""Settings for object detection in images."""
47
+
48
+ json_output: OptionalNullable[JSONImageOutputSettings] = UNSET
49
+ r"""Settings for structured JSON output of image analysis."""
50
+
51
+ @model_serializer(mode="wrap")
52
+ def serialize_model(self, handler):
53
+ optional_fields = ["read", "embed", "describe", "detect", "json_output"]
54
+ nullable_fields = ["read", "describe", "detect", "json_output"]
55
+ null_default_fields = []
56
+
57
+ serialized = handler(self)
58
+
59
+ m = {}
60
+
61
+ for n, f in self.model_fields.items():
62
+ k = f.alias or n
63
+ val = serialized.get(k)
64
+ serialized.pop(k, None)
65
+
66
+ optional_nullable = k in optional_fields and k in nullable_fields
67
+ is_set = (
68
+ self.__pydantic_fields_set__.intersection({n})
69
+ or k in null_default_fields
70
+ ) # pylint: disable=no-member
71
+
72
+ if val is not None and val != UNSET_SENTINEL:
73
+ m[k] = val
74
+ elif val != UNSET_SENTINEL and (
75
+ not k in optional_fields or (optional_nullable and is_set)
76
+ ):
77
+ m[k] = val
78
+
79
+ return m
@@ -0,0 +1,59 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .processimageurlinput import ProcessImageURLInput, ProcessImageURLInputTypedDict
5
+ from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
6
+ from mixpeek.utils import FieldMetadata, HeaderMetadata, RequestMetadata
7
+ import pydantic
8
+ from pydantic import model_serializer
9
+ from typing_extensions import Annotated, NotRequired, TypedDict
10
+
11
+
12
+ class IngestImageURLIngestImagesURLPostRequestTypedDict(TypedDict):
13
+ process_image_url_input: ProcessImageURLInputTypedDict
14
+ x_namespace: NotRequired[Nullable[str]]
15
+ r"""Optional namespace for data isolation. This can be a namespace name or namespace ID. Example: 'netflix_prod' or 'ns_1234567890'. To create a namespace, use the /namespaces endpoint."""
16
+
17
+
18
+ class IngestImageURLIngestImagesURLPostRequest(BaseModel):
19
+ process_image_url_input: Annotated[
20
+ ProcessImageURLInput,
21
+ FieldMetadata(request=RequestMetadata(media_type="application/json")),
22
+ ]
23
+
24
+ x_namespace: Annotated[
25
+ OptionalNullable[str],
26
+ pydantic.Field(alias="X-Namespace"),
27
+ FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
28
+ ] = UNSET
29
+ 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."""
30
+
31
+ @model_serializer(mode="wrap")
32
+ def serialize_model(self, handler):
33
+ optional_fields = ["X-Namespace"]
34
+ nullable_fields = ["X-Namespace"]
35
+ null_default_fields = []
36
+
37
+ serialized = handler(self)
38
+
39
+ m = {}
40
+
41
+ for n, f in self.model_fields.items():
42
+ k = f.alias or n
43
+ val = serialized.get(k)
44
+ serialized.pop(k, None)
45
+
46
+ optional_nullable = k in optional_fields and k in nullable_fields
47
+ is_set = (
48
+ self.__pydantic_fields_set__.intersection({n})
49
+ or k in null_default_fields
50
+ ) # pylint: disable=no-member
51
+
52
+ if val is not None and val != UNSET_SENTINEL:
53
+ m[k] = val
54
+ elif val != UNSET_SENTINEL and (
55
+ not k in optional_fields or (optional_nullable and is_set)
56
+ ):
57
+ m[k] = val
58
+
59
+ return m
@@ -0,0 +1,59 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .processtextinput import ProcessTextInput, ProcessTextInputTypedDict
5
+ from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
6
+ from mixpeek.utils import FieldMetadata, HeaderMetadata, RequestMetadata
7
+ import pydantic
8
+ from pydantic import model_serializer
9
+ from typing_extensions import Annotated, NotRequired, TypedDict
10
+
11
+
12
+ class IngestTextIngestTextPostRequestTypedDict(TypedDict):
13
+ process_text_input: ProcessTextInputTypedDict
14
+ x_namespace: NotRequired[Nullable[str]]
15
+ r"""Optional namespace for data isolation. This can be a namespace name or namespace ID. Example: 'netflix_prod' or 'ns_1234567890'. To create a namespace, use the /namespaces endpoint."""
16
+
17
+
18
+ class IngestTextIngestTextPostRequest(BaseModel):
19
+ process_text_input: Annotated[
20
+ ProcessTextInput,
21
+ FieldMetadata(request=RequestMetadata(media_type="application/json")),
22
+ ]
23
+
24
+ x_namespace: Annotated[
25
+ OptionalNullable[str],
26
+ pydantic.Field(alias="X-Namespace"),
27
+ FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
28
+ ] = UNSET
29
+ 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."""
30
+
31
+ @model_serializer(mode="wrap")
32
+ def serialize_model(self, handler):
33
+ optional_fields = ["X-Namespace"]
34
+ nullable_fields = ["X-Namespace"]
35
+ null_default_fields = []
36
+
37
+ serialized = handler(self)
38
+
39
+ m = {}
40
+
41
+ for n, f in self.model_fields.items():
42
+ k = f.alias or n
43
+ val = serialized.get(k)
44
+ serialized.pop(k, None)
45
+
46
+ optional_nullable = k in optional_fields and k in nullable_fields
47
+ is_set = (
48
+ self.__pydantic_fields_set__.intersection({n})
49
+ or k in null_default_fields
50
+ ) # pylint: disable=no-member
51
+
52
+ if val is not None and val != UNSET_SENTINEL:
53
+ m[k] = val
54
+ elif val != UNSET_SENTINEL and (
55
+ not k in optional_fields or (optional_nullable and is_set)
56
+ ):
57
+ m[k] = val
58
+
59
+ return m
@@ -0,0 +1,59 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .processvideourlinput import ProcessVideoURLInput, ProcessVideoURLInputTypedDict
5
+ from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
6
+ from mixpeek.utils import FieldMetadata, HeaderMetadata, RequestMetadata
7
+ import pydantic
8
+ from pydantic import model_serializer
9
+ from typing_extensions import Annotated, NotRequired, TypedDict
10
+
11
+
12
+ class IngestVideoURLIngestVideosURLPostRequestTypedDict(TypedDict):
13
+ process_video_url_input: ProcessVideoURLInputTypedDict
14
+ x_namespace: NotRequired[Nullable[str]]
15
+ r"""Optional namespace for data isolation. This can be a namespace name or namespace ID. Example: 'netflix_prod' or 'ns_1234567890'. To create a namespace, use the /namespaces endpoint."""
16
+
17
+
18
+ class IngestVideoURLIngestVideosURLPostRequest(BaseModel):
19
+ process_video_url_input: Annotated[
20
+ ProcessVideoURLInput,
21
+ FieldMetadata(request=RequestMetadata(media_type="application/json")),
22
+ ]
23
+
24
+ x_namespace: Annotated[
25
+ OptionalNullable[str],
26
+ pydantic.Field(alias="X-Namespace"),
27
+ FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
28
+ ] = UNSET
29
+ 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."""
30
+
31
+ @model_serializer(mode="wrap")
32
+ def serialize_model(self, handler):
33
+ optional_fields = ["X-Namespace"]
34
+ nullable_fields = ["X-Namespace"]
35
+ null_default_fields = []
36
+
37
+ serialized = handler(self)
38
+
39
+ m = {}
40
+
41
+ for n, f in self.model_fields.items():
42
+ k = f.alias or n
43
+ val = serialized.get(k)
44
+ serialized.pop(k, None)
45
+
46
+ optional_nullable = k in optional_fields and k in nullable_fields
47
+ is_set = (
48
+ self.__pydantic_fields_set__.intersection({n})
49
+ or k in null_default_fields
50
+ ) # pylint: disable=no-member
51
+
52
+ if val is not None and val != UNSET_SENTINEL:
53
+ m[k] = val
54
+ elif val != UNSET_SENTINEL and (
55
+ not k in optional_fields or (optional_nullable and is_set)
56
+ ):
57
+ m[k] = val
58
+
59
+ return m
@@ -0,0 +1,11 @@
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 InputType(str, Enum):
8
+ URL = "url"
9
+ TEXT = "text"
10
+ FILE = "file"
11
+ BASE64 = "base64"
@@ -0,0 +1,24 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from mixpeek.types import BaseModel
5
+ from typing import Optional
6
+ from typing_extensions import NotRequired, TypedDict
7
+
8
+
9
+ class IntegerIndexParamsTypedDict(TypedDict):
10
+ r"""Configuration for integer index"""
11
+
12
+ type: NotRequired[str]
13
+ lookup: NotRequired[bool]
14
+ range: NotRequired[bool]
15
+
16
+
17
+ class IntegerIndexParams(BaseModel):
18
+ r"""Configuration for integer index"""
19
+
20
+ type: Optional[str] = "integer"
21
+
22
+ lookup: Optional[bool] = True
23
+
24
+ range: Optional[bool] = True
@@ -0,0 +1,87 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .interactiontype import InteractionType
5
+ from .searchrequestfeatures_output import (
6
+ SearchRequestFeaturesOutput,
7
+ SearchRequestFeaturesOutputTypedDict,
8
+ )
9
+ from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
10
+ from pydantic import model_serializer
11
+ from typing_extensions import NotRequired, TypedDict
12
+
13
+
14
+ class InteractionResponseMetadataTypedDict(TypedDict):
15
+ pass
16
+
17
+
18
+ class InteractionResponseMetadata(BaseModel):
19
+ pass
20
+
21
+
22
+ class InteractionResponseTypedDict(TypedDict):
23
+ feature_id: str
24
+ r"""ID of the item that was interacted with"""
25
+ interaction_type: InteractionType
26
+ interaction_id: str
27
+ r"""Unique identifier for this interaction"""
28
+ search_request: NotRequired[Nullable[SearchRequestFeaturesOutputTypedDict]]
29
+ r"""The search request that led to this interaction"""
30
+ position: NotRequired[Nullable[int]]
31
+ r"""Position in search results where interaction occurred"""
32
+ metadata: NotRequired[Nullable[InteractionResponseMetadataTypedDict]]
33
+ r"""Additional context about the interaction"""
34
+ session_id: NotRequired[Nullable[str]]
35
+ r"""Search session identifier"""
36
+
37
+
38
+ class InteractionResponse(BaseModel):
39
+ feature_id: str
40
+ r"""ID of the item that was interacted with"""
41
+
42
+ interaction_type: InteractionType
43
+
44
+ interaction_id: str
45
+ r"""Unique identifier for this interaction"""
46
+
47
+ search_request: OptionalNullable[SearchRequestFeaturesOutput] = UNSET
48
+ r"""The search request that led to this interaction"""
49
+
50
+ position: OptionalNullable[int] = UNSET
51
+ r"""Position in search results where interaction occurred"""
52
+
53
+ metadata: OptionalNullable[InteractionResponseMetadata] = UNSET
54
+ r"""Additional context about the interaction"""
55
+
56
+ session_id: OptionalNullable[str] = UNSET
57
+ r"""Search session identifier"""
58
+
59
+ @model_serializer(mode="wrap")
60
+ def serialize_model(self, handler):
61
+ optional_fields = ["search_request", "position", "metadata", "session_id"]
62
+ nullable_fields = ["search_request", "position", "metadata", "session_id"]
63
+ null_default_fields = []
64
+
65
+ serialized = handler(self)
66
+
67
+ m = {}
68
+
69
+ for n, f in self.model_fields.items():
70
+ k = f.alias or n
71
+ val = serialized.get(k)
72
+ serialized.pop(k, None)
73
+
74
+ optional_nullable = k in optional_fields and k in nullable_fields
75
+ is_set = (
76
+ self.__pydantic_fields_set__.intersection({n})
77
+ or k in null_default_fields
78
+ ) # pylint: disable=no-member
79
+
80
+ if val is not None and val != UNSET_SENTINEL:
81
+ m[k] = val
82
+ elif val != UNSET_SENTINEL and (
83
+ not k in optional_fields or (optional_nullable and is_set)
84
+ ):
85
+ m[k] = val
86
+
87
+ return m
@@ -0,0 +1,11 @@
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 InteractionType(str, Enum):
8
+ VIEW = "view"
9
+ CLICK = "click"
10
+ POSITIVE_FEEDBACK = "positive_feedback"
11
+ NEGATIVE_FEEDBACK = "negative_feedback"
@@ -0,0 +1,55 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
5
+ from pydantic import model_serializer
6
+ from typing_extensions import NotRequired, TypedDict
7
+
8
+
9
+ class JSONImageOutputSettingsResponseShapeTypedDict(TypedDict):
10
+ pass
11
+
12
+
13
+ class JSONImageOutputSettingsResponseShape(BaseModel):
14
+ pass
15
+
16
+
17
+ class JSONImageOutputSettingsTypedDict(TypedDict):
18
+ response_shape: NotRequired[Nullable[JSONImageOutputSettingsResponseShapeTypedDict]]
19
+ prompt: NotRequired[Nullable[str]]
20
+
21
+
22
+ class JSONImageOutputSettings(BaseModel):
23
+ response_shape: OptionalNullable[JSONImageOutputSettingsResponseShape] = UNSET
24
+
25
+ prompt: OptionalNullable[str] = UNSET
26
+
27
+ @model_serializer(mode="wrap")
28
+ def serialize_model(self, handler):
29
+ optional_fields = ["response_shape", "prompt"]
30
+ nullable_fields = ["response_shape", "prompt"]
31
+ null_default_fields = []
32
+
33
+ serialized = handler(self)
34
+
35
+ m = {}
36
+
37
+ for n, f in self.model_fields.items():
38
+ k = f.alias or n
39
+ val = serialized.get(k)
40
+ serialized.pop(k, None)
41
+
42
+ optional_nullable = k in optional_fields and k in nullable_fields
43
+ is_set = (
44
+ self.__pydantic_fields_set__.intersection({n})
45
+ or k in null_default_fields
46
+ ) # pylint: disable=no-member
47
+
48
+ if val is not None and val != UNSET_SENTINEL:
49
+ m[k] = val
50
+ elif val != UNSET_SENTINEL and (
51
+ not k in optional_fields or (optional_nullable and is_set)
52
+ ):
53
+ m[k] = val
54
+
55
+ return m