mixpeek 0.15.1__py3-none-any.whl → 0.16.0__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.
- mixpeek/_hooks/__init__.py +0 -1
- mixpeek/_hooks/sdkhooks.py +0 -2
- mixpeek/_version.py +1 -1
- mixpeek/assets.py +74 -56
- mixpeek/collections.py +46 -40
- mixpeek/{featureextractors.py → feature_extractors.py} +6 -6
- mixpeek/feature_search.py +330 -0
- mixpeek/features.py +44 -356
- mixpeek/health.py +3 -15
- mixpeek/{ingest.py → ingest_assets.py} +43 -25
- mixpeek/models/__init__.py +291 -160
- mixpeek/models/assignmentconfig.py +25 -0
- mixpeek/models/availablemodels.py +2 -1
- mixpeek/models/{availableindexesresponse.py → availablemodelsresponse.py} +8 -4
- mixpeek/models/classificationmatch.py +72 -0
- mixpeek/models/classificationwithfeature.py +73 -0
- mixpeek/models/classify_features_v1_entities_taxonomies_taxonomy_classify_postop.py +73 -0
- mixpeek/models/{create_api_key_organizations_users_user_email_api_keys_postop.py → create_api_key_v1_organizations_users_user_email_api_keys_postop.py} +2 -2
- mixpeek/models/{create_collection_collections_postop.py → create_collection_v1_collections_postop.py} +2 -2
- mixpeek/models/create_taxonomy_v1_entities_taxonomies_postop.py +59 -0
- mixpeek/models/createnamespacerequest.py +2 -2
- mixpeek/models/{delete_api_key_organizations_users_user_email_api_keys_key_name_deleteop.py → delete_api_key_v1_organizations_users_user_email_api_keys_key_name_deleteop.py} +2 -2
- mixpeek/models/{delete_asset_assets_asset_id_deleteop.py → delete_asset_v1_assets_asset_id_deleteop.py} +2 -2
- mixpeek/models/delete_classifications_v1_entities_taxonomies_taxonomy_classifications_classification_id_deleteop.py +70 -0
- mixpeek/models/{delete_collection_collections_collection_deleteop.py → delete_collection_v1_collections_collection_deleteop.py} +2 -2
- mixpeek/models/{delete_feature_features_feature_id_deleteop.py → delete_feature_v1_features_feature_id_deleteop.py} +2 -2
- mixpeek/models/{delete_namespace_namespaces_namespace_deleteop.py → delete_namespace_v1_namespaces_namespace_deleteop.py} +2 -2
- mixpeek/models/delete_taxonomy_v1_entities_taxonomies_taxonomy_deleteop.py +59 -0
- mixpeek/models/{delete_user_organizations_users_user_email_deleteop.py → delete_user_v1_organizations_users_user_email_deleteop.py} +2 -2
- mixpeek/models/discoverrequest.py +74 -0
- mixpeek/models/embeddingconfig.py +33 -0
- mixpeek/models/embeddingrequest.py +40 -7
- mixpeek/models/featureoptions.py +25 -0
- mixpeek/models/{full_asset_update_assets_asset_id_putop.py → full_asset_update_v1_assets_asset_id_putop.py} +2 -2
- mixpeek/models/{full_feature_update_features_feature_id_putop.py → full_feature_update_v1_features_feature_id_putop.py} +2 -2
- mixpeek/models/genericsuccessresponse.py +17 -0
- mixpeek/models/{get_asset_assets_asset_id_getop.py → get_asset_v1_assets_asset_id_getop.py} +2 -2
- mixpeek/models/{get_asset_with_features_assets_asset_id_features_getop.py → get_asset_with_features_v1_assets_asset_id_features_getop.py} +2 -2
- mixpeek/models/{get_collection_collections_collection_getop.py → get_collection_v1_collections_collection_getop.py} +2 -2
- mixpeek/models/{get_feature_features_feature_id_getop.py → get_feature_v1_features_feature_id_getop.py} +2 -2
- mixpeek/models/{get_namespace_namespaces_namespace_getop.py → get_namespace_v1_namespaces_namespace_getop.py} +2 -2
- mixpeek/models/{get_task_tasks_task_id_getop.py → get_task_v1_tasks_task_id_getop.py} +2 -2
- mixpeek/models/get_taxonomy_node_v1_entities_taxonomies_nodes_node_getop.py +59 -0
- mixpeek/models/get_taxonomy_v1_entities_taxonomies_taxonomy_getop.py +59 -0
- mixpeek/models/{get_user_organizations_users_user_email_getop.py → get_user_v1_organizations_users_user_email_getop.py} +2 -2
- mixpeek/models/{ingest_image_url_ingest_images_url_postop.py → ingest_image_url_v1_ingest_images_url_postop.py} +2 -2
- mixpeek/models/{ingest_text_ingest_text_postop.py → ingest_text_v1_ingest_text_postop.py} +2 -2
- mixpeek/models/{ingest_video_url_ingest_videos_url_postop.py → ingest_video_url_v1_ingest_videos_url_postop.py} +2 -2
- mixpeek/models/{kill_task_tasks_task_id_deleteop.py → kill_task_v1_tasks_task_id_deleteop.py} +2 -2
- mixpeek/models/{list_assets_assets_postop.py → list_assets_v1_assets_postop.py} +2 -2
- mixpeek/models/list_classifications_v1_entities_taxonomies_taxonomy_classifications_postop.py +92 -0
- mixpeek/models/{list_collections_collections_getop.py → list_collections_v1_collections_getop.py} +2 -2
- mixpeek/models/{list_features_features_postop.py → list_features_v1_features_postop.py} +2 -2
- mixpeek/models/list_taxonomies_v1_entities_taxonomies_getop.py +67 -0
- mixpeek/models/listclassificationsrequest.py +69 -0
- mixpeek/models/listclassificationsresponse.py +31 -0
- mixpeek/models/listtaxonomiesresponse.py +24 -0
- mixpeek/models/modeldetails.py +9 -5
- mixpeek/models/nodeoptions.py +16 -0
- mixpeek/models/nodeupdate.py +51 -0
- mixpeek/models/{partial_asset_update_assets_asset_id_patchop.py → partial_asset_update_v1_assets_asset_id_patchop.py} +2 -2
- mixpeek/models/permission.py +12 -0
- mixpeek/models/{search_assets_assets_search_postop.py → search_assets_v1_assets_search_postop.py} +2 -2
- mixpeek/models/{search_features_features_search_postop.py → search_features_v1_features_search_postop.py} +4 -4
- mixpeek/models/taxonomycreate.py +20 -0
- mixpeek/models/taxonomymodel.py +27 -0
- mixpeek/models/taxonomynode.py +101 -0
- mixpeek/models/taxonomynodecreate.py +63 -0
- mixpeek/models/taxonomyupdate.py +55 -0
- mixpeek/models/{update_api_key_organizations_users_user_email_api_keys_key_name_patchop.py → update_api_key_v1_organizations_users_user_email_api_keys_key_name_patchop.py} +2 -2
- mixpeek/models/{update_collection_collections_collection_putop.py → update_collection_v1_collections_collection_putop.py} +2 -2
- mixpeek/models/{update_namespace_namespaces_namespace_putop.py → update_namespace_v1_namespaces_namespace_putop.py} +2 -2
- mixpeek/models/update_node_v1_entities_taxonomies_nodes_node_patchop.py +71 -0
- mixpeek/models/update_taxonomy_v1_entities_taxonomies_taxonomy_patchop.py +71 -0
- mixpeek/models/vectormodel.py +1 -0
- mixpeek/namespaces.py +56 -56
- mixpeek/organizations.py +82 -58
- mixpeek/sdk.py +12 -6
- mixpeek/sdkconfiguration.py +4 -4
- mixpeek/tasks.py +22 -16
- mixpeek/taxonomy_entities.py +2214 -0
- {mixpeek-0.15.1.dist-info → mixpeek-0.16.0.dist-info}/METADATA +64 -49
- {mixpeek-0.15.1.dist-info → mixpeek-0.16.0.dist-info}/RECORD +84 -55
- {mixpeek-0.15.1.dist-info → mixpeek-0.16.0.dist-info}/WHEEL +1 -1
@@ -0,0 +1,25 @@
|
|
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 AssignmentConfigTypedDict(TypedDict):
|
10
|
+
r"""Configuration for how classifications should be assigned to features"""
|
11
|
+
|
12
|
+
enabled: NotRequired[bool]
|
13
|
+
r"""Whether to assign the taxonomy to the feature"""
|
14
|
+
append: NotRequired[bool]
|
15
|
+
r"""Whether to append the classification to the feature, if false, replaces any existing classification"""
|
16
|
+
|
17
|
+
|
18
|
+
class AssignmentConfig(BaseModel):
|
19
|
+
r"""Configuration for how classifications should be assigned to features"""
|
20
|
+
|
21
|
+
enabled: Optional[bool] = False
|
22
|
+
r"""Whether to assign the taxonomy to the feature"""
|
23
|
+
|
24
|
+
append: Optional[bool] = False
|
25
|
+
r"""Whether to append the classification to the feature, if false, replaces any existing classification"""
|
@@ -11,6 +11,7 @@ class AvailableModels(str, Enum):
|
|
11
11
|
VIDEO = "video"
|
12
12
|
KEYWORD = "keyword"
|
13
13
|
NAVER_SPLADE_V3 = "naver-splade-v3"
|
14
|
-
|
14
|
+
VERTEX_MULTIMODAL = "vertex-multimodal"
|
15
15
|
OPENAI_CLIP_VIT_BASE_PATCH32 = "openai-clip-vit-base-patch32"
|
16
16
|
BAAI_BGE_M3 = "baai-bge-m3"
|
17
|
+
ANSWERAI_MODERNBERT_BASE = "answerai-modernbert-base"
|
@@ -8,16 +8,20 @@ from typing import Dict, List
|
|
8
8
|
from typing_extensions import TypedDict
|
9
9
|
|
10
10
|
|
11
|
-
class
|
12
|
-
r"""Response schema for available
|
11
|
+
class AvailableModelsResponseTypedDict(TypedDict):
|
12
|
+
r"""Response schema for available models endpoint"""
|
13
13
|
|
14
14
|
embedding_models: Dict[str, ModelDetailsTypedDict]
|
15
|
+
r"""Dictionary mapping model names to their detailed specifications"""
|
15
16
|
payload_indexes: List[PayloadIndexTypeTypedDict]
|
17
|
+
r"""List of available payload index types that can be used for filtering"""
|
16
18
|
|
17
19
|
|
18
|
-
class
|
19
|
-
r"""Response schema for available
|
20
|
+
class AvailableModelsResponse(BaseModel):
|
21
|
+
r"""Response schema for available models endpoint"""
|
20
22
|
|
21
23
|
embedding_models: Dict[str, ModelDetails]
|
24
|
+
r"""Dictionary mapping model names to their detailed specifications"""
|
22
25
|
|
23
26
|
payload_indexes: List[PayloadIndexType]
|
27
|
+
r"""List of available payload index types that can be used for filtering"""
|
@@ -0,0 +1,72 @@
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
2
|
+
|
3
|
+
from __future__ import annotations
|
4
|
+
from .taxonomynode import TaxonomyNode, TaxonomyNodeTypedDict
|
5
|
+
from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
|
6
|
+
from pydantic import model_serializer
|
7
|
+
from typing import List
|
8
|
+
from typing_extensions import NotRequired, TypedDict
|
9
|
+
|
10
|
+
|
11
|
+
class ClassificationMatchTypedDict(TypedDict):
|
12
|
+
r"""Individual node match with score"""
|
13
|
+
|
14
|
+
node_id: str
|
15
|
+
r"""ID of the matched taxonomy node"""
|
16
|
+
score: float
|
17
|
+
r"""Confidence score of the match"""
|
18
|
+
depth: int
|
19
|
+
r"""Depth of the node in the taxonomy"""
|
20
|
+
order: List[int]
|
21
|
+
r"""Order of the node in the taxonomy"""
|
22
|
+
node: NotRequired[Nullable[TaxonomyNodeTypedDict]]
|
23
|
+
r"""Full node object if requested"""
|
24
|
+
|
25
|
+
|
26
|
+
class ClassificationMatch(BaseModel):
|
27
|
+
r"""Individual node match with score"""
|
28
|
+
|
29
|
+
node_id: str
|
30
|
+
r"""ID of the matched taxonomy node"""
|
31
|
+
|
32
|
+
score: float
|
33
|
+
r"""Confidence score of the match"""
|
34
|
+
|
35
|
+
depth: int
|
36
|
+
r"""Depth of the node in the taxonomy"""
|
37
|
+
|
38
|
+
order: List[int]
|
39
|
+
r"""Order of the node in the taxonomy"""
|
40
|
+
|
41
|
+
node: OptionalNullable[TaxonomyNode] = UNSET
|
42
|
+
r"""Full node object if requested"""
|
43
|
+
|
44
|
+
@model_serializer(mode="wrap")
|
45
|
+
def serialize_model(self, handler):
|
46
|
+
optional_fields = ["node"]
|
47
|
+
nullable_fields = ["node"]
|
48
|
+
null_default_fields = []
|
49
|
+
|
50
|
+
serialized = handler(self)
|
51
|
+
|
52
|
+
m = {}
|
53
|
+
|
54
|
+
for n, f in self.model_fields.items():
|
55
|
+
k = f.alias or n
|
56
|
+
val = serialized.get(k)
|
57
|
+
serialized.pop(k, None)
|
58
|
+
|
59
|
+
optional_nullable = k in optional_fields and k in nullable_fields
|
60
|
+
is_set = (
|
61
|
+
self.__pydantic_fields_set__.intersection({n})
|
62
|
+
or k in null_default_fields
|
63
|
+
) # pylint: disable=no-member
|
64
|
+
|
65
|
+
if val is not None and val != UNSET_SENTINEL:
|
66
|
+
m[k] = val
|
67
|
+
elif val != UNSET_SENTINEL and (
|
68
|
+
not k in optional_fields or (optional_nullable and is_set)
|
69
|
+
):
|
70
|
+
m[k] = val
|
71
|
+
|
72
|
+
return m
|
@@ -0,0 +1,73 @@
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
2
|
+
|
3
|
+
from __future__ import annotations
|
4
|
+
from .classificationmatch import ClassificationMatch, ClassificationMatchTypedDict
|
5
|
+
from .featureresponse import FeatureResponse, FeatureResponseTypedDict
|
6
|
+
from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
|
7
|
+
from pydantic import model_serializer
|
8
|
+
from typing import List
|
9
|
+
from typing_extensions import NotRequired, TypedDict
|
10
|
+
|
11
|
+
|
12
|
+
class ClassificationWithFeatureTypedDict(TypedDict):
|
13
|
+
r"""Classification entry with optional full feature and node data"""
|
14
|
+
|
15
|
+
feature_id: str
|
16
|
+
r"""ID of the classified feature"""
|
17
|
+
classification_id: str
|
18
|
+
r"""ID of the classification run"""
|
19
|
+
taxonomy_id: str
|
20
|
+
r"""ID of the taxonomy used"""
|
21
|
+
matches: List[ClassificationMatchTypedDict]
|
22
|
+
r"""List of node matches with scores"""
|
23
|
+
feature: NotRequired[Nullable[FeatureResponseTypedDict]]
|
24
|
+
r"""Full feature object if requested"""
|
25
|
+
|
26
|
+
|
27
|
+
class ClassificationWithFeature(BaseModel):
|
28
|
+
r"""Classification entry with optional full feature and node data"""
|
29
|
+
|
30
|
+
feature_id: str
|
31
|
+
r"""ID of the classified feature"""
|
32
|
+
|
33
|
+
classification_id: str
|
34
|
+
r"""ID of the classification run"""
|
35
|
+
|
36
|
+
taxonomy_id: str
|
37
|
+
r"""ID of the taxonomy used"""
|
38
|
+
|
39
|
+
matches: List[ClassificationMatch]
|
40
|
+
r"""List of node matches with scores"""
|
41
|
+
|
42
|
+
feature: OptionalNullable[FeatureResponse] = UNSET
|
43
|
+
r"""Full feature object if requested"""
|
44
|
+
|
45
|
+
@model_serializer(mode="wrap")
|
46
|
+
def serialize_model(self, handler):
|
47
|
+
optional_fields = ["feature"]
|
48
|
+
nullable_fields = ["feature"]
|
49
|
+
null_default_fields = []
|
50
|
+
|
51
|
+
serialized = handler(self)
|
52
|
+
|
53
|
+
m = {}
|
54
|
+
|
55
|
+
for n, f in self.model_fields.items():
|
56
|
+
k = f.alias or n
|
57
|
+
val = serialized.get(k)
|
58
|
+
serialized.pop(k, None)
|
59
|
+
|
60
|
+
optional_nullable = k in optional_fields and k in nullable_fields
|
61
|
+
is_set = (
|
62
|
+
self.__pydantic_fields_set__.intersection({n})
|
63
|
+
or k in null_default_fields
|
64
|
+
) # pylint: disable=no-member
|
65
|
+
|
66
|
+
if val is not None and val != UNSET_SENTINEL:
|
67
|
+
m[k] = val
|
68
|
+
elif val != UNSET_SENTINEL and (
|
69
|
+
not k in optional_fields or (optional_nullable and is_set)
|
70
|
+
):
|
71
|
+
m[k] = val
|
72
|
+
|
73
|
+
return m
|
@@ -0,0 +1,73 @@
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
2
|
+
|
3
|
+
from __future__ import annotations
|
4
|
+
from .discoverrequest import DiscoverRequest, DiscoverRequestTypedDict
|
5
|
+
from mixpeek.types import BaseModel, Nullable, OptionalNullable, UNSET, UNSET_SENTINEL
|
6
|
+
from mixpeek.utils import (
|
7
|
+
FieldMetadata,
|
8
|
+
HeaderMetadata,
|
9
|
+
PathParamMetadata,
|
10
|
+
RequestMetadata,
|
11
|
+
)
|
12
|
+
import pydantic
|
13
|
+
from pydantic import model_serializer
|
14
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
15
|
+
|
16
|
+
|
17
|
+
class ClassifyFeaturesV1EntitiesTaxonomiesTaxonomyClassifyPostRequestTypedDict(
|
18
|
+
TypedDict
|
19
|
+
):
|
20
|
+
taxonomy: str
|
21
|
+
r"""The name or id of the taxonomy to use for discovery"""
|
22
|
+
discover_request: DiscoverRequestTypedDict
|
23
|
+
x_namespace: NotRequired[Nullable[str]]
|
24
|
+
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."""
|
25
|
+
|
26
|
+
|
27
|
+
class ClassifyFeaturesV1EntitiesTaxonomiesTaxonomyClassifyPostRequest(BaseModel):
|
28
|
+
taxonomy: Annotated[
|
29
|
+
str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
|
30
|
+
]
|
31
|
+
r"""The name or id of the taxonomy to use for discovery"""
|
32
|
+
|
33
|
+
discover_request: Annotated[
|
34
|
+
DiscoverRequest,
|
35
|
+
FieldMetadata(request=RequestMetadata(media_type="application/json")),
|
36
|
+
]
|
37
|
+
|
38
|
+
x_namespace: Annotated[
|
39
|
+
OptionalNullable[str],
|
40
|
+
pydantic.Field(alias="X-Namespace"),
|
41
|
+
FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
|
42
|
+
] = UNSET
|
43
|
+
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."""
|
44
|
+
|
45
|
+
@model_serializer(mode="wrap")
|
46
|
+
def serialize_model(self, handler):
|
47
|
+
optional_fields = ["X-Namespace"]
|
48
|
+
nullable_fields = ["X-Namespace"]
|
49
|
+
null_default_fields = []
|
50
|
+
|
51
|
+
serialized = handler(self)
|
52
|
+
|
53
|
+
m = {}
|
54
|
+
|
55
|
+
for n, f in self.model_fields.items():
|
56
|
+
k = f.alias or n
|
57
|
+
val = serialized.get(k)
|
58
|
+
serialized.pop(k, None)
|
59
|
+
|
60
|
+
optional_nullable = k in optional_fields and k in nullable_fields
|
61
|
+
is_set = (
|
62
|
+
self.__pydantic_fields_set__.intersection({n})
|
63
|
+
or k in null_default_fields
|
64
|
+
) # pylint: disable=no-member
|
65
|
+
|
66
|
+
if val is not None and val != UNSET_SENTINEL:
|
67
|
+
m[k] = val
|
68
|
+
elif val != UNSET_SENTINEL and (
|
69
|
+
not k in optional_fields or (optional_nullable and is_set)
|
70
|
+
):
|
71
|
+
m[k] = val
|
72
|
+
|
73
|
+
return m
|
@@ -7,12 +7,12 @@ from typing import Optional
|
|
7
7
|
from typing_extensions import Annotated, NotRequired, TypedDict
|
8
8
|
|
9
9
|
|
10
|
-
class
|
10
|
+
class CreateAPIKeyV1OrganizationsUsersUserEmailAPIKeysPostRequestTypedDict(TypedDict):
|
11
11
|
user_email: str
|
12
12
|
key_name: NotRequired[str]
|
13
13
|
|
14
14
|
|
15
|
-
class
|
15
|
+
class CreateAPIKeyV1OrganizationsUsersUserEmailAPIKeysPostRequest(BaseModel):
|
16
16
|
user_email: Annotated[
|
17
17
|
str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
|
18
18
|
]
|
@@ -12,13 +12,13 @@ from pydantic import model_serializer
|
|
12
12
|
from typing_extensions import Annotated, NotRequired, TypedDict
|
13
13
|
|
14
14
|
|
15
|
-
class
|
15
|
+
class CreateCollectionV1CollectionsPostRequestTypedDict(TypedDict):
|
16
16
|
create_collection_request: CreateCollectionRequestTypedDict
|
17
17
|
x_namespace: NotRequired[Nullable[str]]
|
18
18
|
r"""Optional namespace for data isolation. This can be a namespace name or namespace ID. Example: 'netflix_prod' or 'ns_1234567890'. To create a namespace, use the /namespaces endpoint."""
|
19
19
|
|
20
20
|
|
21
|
-
class
|
21
|
+
class CreateCollectionV1CollectionsPostRequest(BaseModel):
|
22
22
|
create_collection_request: Annotated[
|
23
23
|
CreateCollectionRequest,
|
24
24
|
FieldMetadata(request=RequestMetadata(media_type="application/json")),
|
@@ -0,0 +1,59 @@
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
2
|
+
|
3
|
+
from __future__ import annotations
|
4
|
+
from .taxonomycreate import TaxonomyCreate, TaxonomyCreateTypedDict
|
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 CreateTaxonomyV1EntitiesTaxonomiesPostRequestTypedDict(TypedDict):
|
13
|
+
taxonomy_create: TaxonomyCreateTypedDict
|
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 CreateTaxonomyV1EntitiesTaxonomiesPostRequest(BaseModel):
|
19
|
+
taxonomy_create: Annotated[
|
20
|
+
TaxonomyCreate,
|
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
|
@@ -14,7 +14,7 @@ class CreateNamespaceRequestTypedDict(TypedDict):
|
|
14
14
|
namespace_name: str
|
15
15
|
r"""Name of the namespace to create"""
|
16
16
|
embedding_models: List[str]
|
17
|
-
r"""List of vector indexes to be used within this namespace. Must be one of: 'image', 'openai-clip-vit-base-patch32', 'multimodal', 'vertex-multimodal', 'text', 'baai-bge-m3', 'keyword', 'naver-splade-v3'"""
|
17
|
+
r"""List of vector indexes to be used within this namespace. Must be one of: 'image', 'openai-clip-vit-base-patch32', 'multimodal', 'vertex-multimodal', 'text', 'baai-bge-m3', 'keyword', 'naver-splade-v3', 'answerai-modern-bert'"""
|
18
18
|
payload_indexes: NotRequired[Nullable[List[PayloadIndexConfigTypedDict]]]
|
19
19
|
r"""List of payload index configurations"""
|
20
20
|
|
@@ -26,7 +26,7 @@ class CreateNamespaceRequest(BaseModel):
|
|
26
26
|
r"""Name of the namespace to create"""
|
27
27
|
|
28
28
|
embedding_models: List[str]
|
29
|
-
r"""List of vector indexes to be used within this namespace. Must be one of: 'image', 'openai-clip-vit-base-patch32', 'multimodal', 'vertex-multimodal', 'text', 'baai-bge-m3', 'keyword', 'naver-splade-v3'"""
|
29
|
+
r"""List of vector indexes to be used within this namespace. Must be one of: 'image', 'openai-clip-vit-base-patch32', 'multimodal', 'vertex-multimodal', 'text', 'baai-bge-m3', 'keyword', 'naver-splade-v3', 'answerai-modern-bert'"""
|
30
30
|
|
31
31
|
payload_indexes: OptionalNullable[List[PayloadIndexConfig]] = UNSET
|
32
32
|
r"""List of payload index configurations"""
|
@@ -6,14 +6,14 @@ from mixpeek.utils import FieldMetadata, PathParamMetadata
|
|
6
6
|
from typing_extensions import Annotated, TypedDict
|
7
7
|
|
8
8
|
|
9
|
-
class
|
9
|
+
class DeleteAPIKeyV1OrganizationsUsersUserEmailAPIKeysKeyNameDeleteRequestTypedDict(
|
10
10
|
TypedDict
|
11
11
|
):
|
12
12
|
user_email: str
|
13
13
|
key_name: str
|
14
14
|
|
15
15
|
|
16
|
-
class
|
16
|
+
class DeleteAPIKeyV1OrganizationsUsersUserEmailAPIKeysKeyNameDeleteRequest(BaseModel):
|
17
17
|
user_email: Annotated[
|
18
18
|
str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
|
19
19
|
]
|
@@ -8,13 +8,13 @@ from pydantic import model_serializer
|
|
8
8
|
from typing_extensions import Annotated, NotRequired, TypedDict
|
9
9
|
|
10
10
|
|
11
|
-
class
|
11
|
+
class DeleteAssetV1AssetsAssetIDDeleteRequestTypedDict(TypedDict):
|
12
12
|
asset_id: str
|
13
13
|
x_namespace: NotRequired[Nullable[str]]
|
14
14
|
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."""
|
15
15
|
|
16
16
|
|
17
|
-
class
|
17
|
+
class DeleteAssetV1AssetsAssetIDDeleteRequest(BaseModel):
|
18
18
|
asset_id: Annotated[
|
19
19
|
str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
|
20
20
|
]
|
@@ -0,0 +1,70 @@
|
|
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 mixpeek.utils import FieldMetadata, HeaderMetadata, PathParamMetadata
|
6
|
+
import pydantic
|
7
|
+
from pydantic import model_serializer
|
8
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
9
|
+
|
10
|
+
|
11
|
+
class DeleteClassificationsV1EntitiesTaxonomiesTaxonomyClassificationsClassificationIDDeleteRequestTypedDict(
|
12
|
+
TypedDict
|
13
|
+
):
|
14
|
+
taxonomy: str
|
15
|
+
r"""The id or name of the taxonomy"""
|
16
|
+
classification_id: str
|
17
|
+
r"""The id of the classification to delete"""
|
18
|
+
x_namespace: NotRequired[Nullable[str]]
|
19
|
+
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."""
|
20
|
+
|
21
|
+
|
22
|
+
class DeleteClassificationsV1EntitiesTaxonomiesTaxonomyClassificationsClassificationIDDeleteRequest(
|
23
|
+
BaseModel
|
24
|
+
):
|
25
|
+
taxonomy: Annotated[
|
26
|
+
str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
|
27
|
+
]
|
28
|
+
r"""The id or name of the taxonomy"""
|
29
|
+
|
30
|
+
classification_id: Annotated[
|
31
|
+
str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
|
32
|
+
]
|
33
|
+
r"""The id of the classification to delete"""
|
34
|
+
|
35
|
+
x_namespace: Annotated[
|
36
|
+
OptionalNullable[str],
|
37
|
+
pydantic.Field(alias="X-Namespace"),
|
38
|
+
FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
|
39
|
+
] = UNSET
|
40
|
+
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."""
|
41
|
+
|
42
|
+
@model_serializer(mode="wrap")
|
43
|
+
def serialize_model(self, handler):
|
44
|
+
optional_fields = ["X-Namespace"]
|
45
|
+
nullable_fields = ["X-Namespace"]
|
46
|
+
null_default_fields = []
|
47
|
+
|
48
|
+
serialized = handler(self)
|
49
|
+
|
50
|
+
m = {}
|
51
|
+
|
52
|
+
for n, f in self.model_fields.items():
|
53
|
+
k = f.alias or n
|
54
|
+
val = serialized.get(k)
|
55
|
+
serialized.pop(k, None)
|
56
|
+
|
57
|
+
optional_nullable = k in optional_fields and k in nullable_fields
|
58
|
+
is_set = (
|
59
|
+
self.__pydantic_fields_set__.intersection({n})
|
60
|
+
or k in null_default_fields
|
61
|
+
) # pylint: disable=no-member
|
62
|
+
|
63
|
+
if val is not None and val != UNSET_SENTINEL:
|
64
|
+
m[k] = val
|
65
|
+
elif val != UNSET_SENTINEL and (
|
66
|
+
not k in optional_fields or (optional_nullable and is_set)
|
67
|
+
):
|
68
|
+
m[k] = val
|
69
|
+
|
70
|
+
return m
|
@@ -8,14 +8,14 @@ from pydantic import model_serializer
|
|
8
8
|
from typing_extensions import Annotated, NotRequired, TypedDict
|
9
9
|
|
10
10
|
|
11
|
-
class
|
11
|
+
class DeleteCollectionV1CollectionsCollectionDeleteRequestTypedDict(TypedDict):
|
12
12
|
collection: str
|
13
13
|
r"""Either the collection name or collection ID"""
|
14
14
|
x_namespace: NotRequired[Nullable[str]]
|
15
15
|
r"""Optional namespace for data isolation. This can be a namespace name or namespace ID. Example: 'netflix_prod' or 'ns_1234567890'. To create a namespace, use the /namespaces endpoint."""
|
16
16
|
|
17
17
|
|
18
|
-
class
|
18
|
+
class DeleteCollectionV1CollectionsCollectionDeleteRequest(BaseModel):
|
19
19
|
collection: Annotated[
|
20
20
|
str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
|
21
21
|
]
|
@@ -8,13 +8,13 @@ from pydantic import model_serializer
|
|
8
8
|
from typing_extensions import Annotated, NotRequired, TypedDict
|
9
9
|
|
10
10
|
|
11
|
-
class
|
11
|
+
class DeleteFeatureV1FeaturesFeatureIDDeleteRequestTypedDict(TypedDict):
|
12
12
|
feature_id: str
|
13
13
|
x_namespace: NotRequired[Nullable[str]]
|
14
14
|
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."""
|
15
15
|
|
16
16
|
|
17
|
-
class
|
17
|
+
class DeleteFeatureV1FeaturesFeatureIDDeleteRequest(BaseModel):
|
18
18
|
feature_id: Annotated[
|
19
19
|
str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
|
20
20
|
]
|
@@ -6,12 +6,12 @@ from mixpeek.utils import FieldMetadata, PathParamMetadata
|
|
6
6
|
from typing_extensions import Annotated, TypedDict
|
7
7
|
|
8
8
|
|
9
|
-
class
|
9
|
+
class DeleteNamespaceV1NamespacesNamespaceDeleteRequestTypedDict(TypedDict):
|
10
10
|
namespace: str
|
11
11
|
r"""Either the namespace name or namespace ID"""
|
12
12
|
|
13
13
|
|
14
|
-
class
|
14
|
+
class DeleteNamespaceV1NamespacesNamespaceDeleteRequest(BaseModel):
|
15
15
|
namespace: Annotated[
|
16
16
|
str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
|
17
17
|
]
|
@@ -0,0 +1,59 @@
|
|
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 mixpeek.utils import FieldMetadata, HeaderMetadata, PathParamMetadata
|
6
|
+
import pydantic
|
7
|
+
from pydantic import model_serializer
|
8
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
9
|
+
|
10
|
+
|
11
|
+
class DeleteTaxonomyV1EntitiesTaxonomiesTaxonomyDeleteRequestTypedDict(TypedDict):
|
12
|
+
taxonomy: str
|
13
|
+
r"""The ID or name of the taxonomy to delete"""
|
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 DeleteTaxonomyV1EntitiesTaxonomiesTaxonomyDeleteRequest(BaseModel):
|
19
|
+
taxonomy: Annotated[
|
20
|
+
str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
|
21
|
+
]
|
22
|
+
r"""The ID or name of the taxonomy to delete"""
|
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
|
@@ -6,11 +6,11 @@ from mixpeek.utils import FieldMetadata, PathParamMetadata
|
|
6
6
|
from typing_extensions import Annotated, TypedDict
|
7
7
|
|
8
8
|
|
9
|
-
class
|
9
|
+
class DeleteUserV1OrganizationsUsersUserEmailDeleteRequestTypedDict(TypedDict):
|
10
10
|
user_email: str
|
11
11
|
|
12
12
|
|
13
|
-
class
|
13
|
+
class DeleteUserV1OrganizationsUsersUserEmailDeleteRequest(BaseModel):
|
14
14
|
user_email: Annotated[
|
15
15
|
str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
|
16
16
|
]
|