Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "0.22.1"
".": "0.23.0"
}
2 changes: 1 addition & 1 deletion .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 49
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/mixedbread%2Fmixedbread-4983c57f5143aaeadfbb4af35595570e613035ae500ff1597fdf600cc2a48959.yml
openapi_spec_hash: ecc0a6cfe61c3c959d034d094f36befe
config_hash: 810d9712d3d0d6a1f50d71a25511d8a7
config_hash: ac27678c24558b71ee39b3db54fa12da
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Changelog

## 0.23.0 (2025-08-11)

Full Changelog: [v0.22.1...v0.23.0](https://github.com/mixedbread-ai/mixedbread-python/compare/v0.22.1...v0.23.0)

### Features

* **api:** update via SDK Studio ([a3e3b23](https://github.com/mixedbread-ai/mixedbread-python/commit/a3e3b23a5e9c95daaf19d1beb84a07a9a61bf2f3))

## 0.22.1 (2025-08-09)

Full Changelog: [v0.22.0...v0.22.1](https://github.com/mixedbread-ai/mixedbread-python/compare/v0.22.0...v0.22.1)
Expand Down
3 changes: 2 additions & 1 deletion api.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ from mixedbread.types.vector_stores import (
ScoredVectorStoreFile,
VectorStoreFileStatus,
VectorStoreFile,
FileListResponse,
FileDeleteResponse,
FileSearchResponse,
)
Expand All @@ -72,7 +73,7 @@ Methods:

- <code title="post /v1/vector_stores/{vector_store_identifier}/files">client.vector_stores.files.<a href="./src/mixedbread/resources/vector_stores/files.py">create</a>(vector_store_identifier, \*\*<a href="src/mixedbread/types/vector_stores/file_create_params.py">params</a>) -> <a href="./src/mixedbread/types/vector_stores/vector_store_file.py">VectorStoreFile</a></code>
- <code title="get /v1/vector_stores/{vector_store_identifier}/files/{file_id}">client.vector_stores.files.<a href="./src/mixedbread/resources/vector_stores/files.py">retrieve</a>(file_id, \*, vector_store_identifier, \*\*<a href="src/mixedbread/types/vector_stores/file_retrieve_params.py">params</a>) -> <a href="./src/mixedbread/types/vector_stores/vector_store_file.py">VectorStoreFile</a></code>
- <code title="get /v1/vector_stores/{vector_store_identifier}/files">client.vector_stores.files.<a href="./src/mixedbread/resources/vector_stores/files.py">list</a>(vector_store_identifier, \*\*<a href="src/mixedbread/types/vector_stores/file_list_params.py">params</a>) -> <a href="./src/mixedbread/types/vector_stores/vector_store_file.py">SyncCursor[VectorStoreFile]</a></code>
- <code title="post /v1/vector_stores/{vector_store_identifier}/files/list">client.vector_stores.files.<a href="./src/mixedbread/resources/vector_stores/files.py">list</a>(vector_store_identifier, \*\*<a href="src/mixedbread/types/vector_stores/file_list_params.py">params</a>) -> <a href="./src/mixedbread/types/vector_stores/file_list_response.py">FileListResponse</a></code>
- <code title="delete /v1/vector_stores/{vector_store_identifier}/files/{file_id}">client.vector_stores.files.<a href="./src/mixedbread/resources/vector_stores/files.py">delete</a>(file_id, \*, vector_store_identifier) -> <a href="./src/mixedbread/types/vector_stores/file_delete_response.py">FileDeleteResponse</a></code>
- <code title="post /v1/vector_stores/files/search">client.vector_stores.files.<a href="./src/mixedbread/resources/vector_stores/files.py">search</a>(\*\*<a href="src/mixedbread/types/vector_stores/file_search_params.py">params</a>) -> <a href="./src/mixedbread/types/vector_stores/file_search_response.py">FileSearchResponse</a></code>

Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "mixedbread"
version = "0.22.1"
version = "0.23.0"
description = "The official Python library for the Mixedbread API"
dynamic = ["readme"]
license = "Apache-2.0"
Expand Down
2 changes: 1 addition & 1 deletion src/mixedbread/_version.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

__title__ = "mixedbread"
__version__ = "0.22.1" # x-release-please-version
__version__ = "0.23.0" # x-release-please-version
90 changes: 45 additions & 45 deletions src/mixedbread/resources/vector_stores/files.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@
async_to_raw_response_wrapper,
async_to_streamed_response_wrapper,
)
from ...pagination import SyncCursor, AsyncCursor
from ..._base_client import AsyncPaginator, make_request_options
from ..._base_client import make_request_options
from ...types.vector_stores import file_list_params, file_create_params, file_search_params, file_retrieve_params
from ...types.vector_stores.vector_store_file import VectorStoreFile
from ...types.vector_stores.file_list_response import FileListResponse
from ...types.vector_stores.file_delete_response import FileDeleteResponse
from ...types.vector_stores.file_search_response import FileSearchResponse
from ...types.vector_stores.vector_store_file_status import VectorStoreFileStatus
Expand Down Expand Up @@ -171,18 +171,19 @@ def list(
before: Optional[str] | NotGiven = NOT_GIVEN,
include_total: bool | NotGiven = NOT_GIVEN,
statuses: Optional[List[VectorStoreFileStatus]] | NotGiven = NOT_GIVEN,
metadata_filter: Optional[file_list_params.MetadataFilter] | NotGiven = NOT_GIVEN,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> SyncCursor[VectorStoreFile]:
) -> FileListResponse:
"""
List files indexed in a vector store with pagination.
List files indexed in a vector store with pagination and metadata filter.

Args: vector_store_identifier: The ID or name of the vector store pagination:
Pagination parameters
Pagination parameters and metadata filter

Returns: VectorStoreFileListResponse: Paginated list of vector store files

Expand All @@ -201,6 +202,8 @@ def list(

statuses: Status to filter by

metadata_filter: Metadata filter to apply to the query

extra_headers: Send extra headers

extra_query: Add additional query parameters to the request
Expand All @@ -213,26 +216,23 @@ def list(
raise ValueError(
f"Expected a non-empty value for `vector_store_identifier` but received {vector_store_identifier!r}"
)
return self._get_api_list(
f"/v1/vector_stores/{vector_store_identifier}/files",
page=SyncCursor[VectorStoreFile],
return self._post(
f"/v1/vector_stores/{vector_store_identifier}/files/list",
body=maybe_transform(
{
"limit": limit,
"after": after,
"before": before,
"include_total": include_total,
"statuses": statuses,
"metadata_filter": metadata_filter,
},
file_list_params.FileListParams,
),
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
query=maybe_transform(
{
"limit": limit,
"after": after,
"before": before,
"include_total": include_total,
"statuses": statuses,
},
file_list_params.FileListParams,
),
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
model=VectorStoreFile,
cast_to=FileListResponse,
)

def delete(
Expand Down Expand Up @@ -600,7 +600,7 @@ async def retrieve(
cast_to=VectorStoreFile,
)

def list(
async def list(
self,
vector_store_identifier: str,
*,
Expand All @@ -609,18 +609,19 @@ def list(
before: Optional[str] | NotGiven = NOT_GIVEN,
include_total: bool | NotGiven = NOT_GIVEN,
statuses: Optional[List[VectorStoreFileStatus]] | NotGiven = NOT_GIVEN,
metadata_filter: Optional[file_list_params.MetadataFilter] | NotGiven = NOT_GIVEN,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> AsyncPaginator[VectorStoreFile, AsyncCursor[VectorStoreFile]]:
) -> FileListResponse:
"""
List files indexed in a vector store with pagination.
List files indexed in a vector store with pagination and metadata filter.

Args: vector_store_identifier: The ID or name of the vector store pagination:
Pagination parameters
Pagination parameters and metadata filter

Returns: VectorStoreFileListResponse: Paginated list of vector store files

Expand All @@ -639,6 +640,8 @@ def list(

statuses: Status to filter by

metadata_filter: Metadata filter to apply to the query

extra_headers: Send extra headers

extra_query: Add additional query parameters to the request
Expand All @@ -651,26 +654,23 @@ def list(
raise ValueError(
f"Expected a non-empty value for `vector_store_identifier` but received {vector_store_identifier!r}"
)
return self._get_api_list(
f"/v1/vector_stores/{vector_store_identifier}/files",
page=AsyncCursor[VectorStoreFile],
return await self._post(
f"/v1/vector_stores/{vector_store_identifier}/files/list",
body=await async_maybe_transform(
{
"limit": limit,
"after": after,
"before": before,
"include_total": include_total,
"statuses": statuses,
"metadata_filter": metadata_filter,
},
file_list_params.FileListParams,
),
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
query=maybe_transform(
{
"limit": limit,
"after": after,
"before": before,
"include_total": include_total,
"statuses": statuses,
},
file_list_params.FileListParams,
),
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
model=VectorStoreFile,
cast_to=FileListResponse,
)

async def delete(
Expand Down
1 change: 1 addition & 0 deletions src/mixedbread/types/vector_stores/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from .file_list_params import FileListParams as FileListParams
from .vector_store_file import VectorStoreFile as VectorStoreFile
from .file_create_params import FileCreateParams as FileCreateParams
from .file_list_response import FileListResponse as FileListResponse
from .file_search_params import FileSearchParams as FileSearchParams
from .rerank_config_param import RerankConfigParam as RerankConfigParam
from .file_delete_response import FileDeleteResponse as FileDeleteResponse
Expand Down
17 changes: 14 additions & 3 deletions src/mixedbread/types/vector_stores/file_list_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@

from __future__ import annotations

from typing import List, Optional
from typing_extensions import TypedDict
from typing import List, Union, Iterable, Optional
from typing_extensions import TypeAlias, TypedDict

from .vector_store_file_status import VectorStoreFileStatus
from ..shared_params.search_filter_condition import SearchFilterCondition

__all__ = ["FileListParams"]
__all__ = ["FileListParams", "MetadataFilter", "MetadataFilterUnionMember2"]


class FileListParams(TypedDict, total=False):
Expand All @@ -31,3 +32,13 @@ class FileListParams(TypedDict, total=False):

statuses: Optional[List[VectorStoreFileStatus]]
"""Status to filter by"""

metadata_filter: Optional[MetadataFilter]
"""Metadata filter to apply to the query"""


MetadataFilterUnionMember2: TypeAlias = Union["SearchFilter", SearchFilterCondition]

MetadataFilter: TypeAlias = Union["SearchFilter", SearchFilterCondition, Iterable[MetadataFilterUnionMember2]]

from ..shared_params.search_filter import SearchFilter
69 changes: 69 additions & 0 deletions src/mixedbread/types/vector_stores/file_list_response.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

from typing import List, Optional
from typing_extensions import Literal

from ..._models import BaseModel
from .vector_store_file import VectorStoreFile

__all__ = ["FileListResponse", "Pagination"]


class Pagination(BaseModel):
has_more: bool
"""
Contextual direction-aware flag: True if more items exist in the requested
pagination direction. For 'after': more items after this page. For 'before':
more items before this page.
"""

first_cursor: Optional[str] = None
"""Cursor of the first item in this page.

Use for backward pagination. None if page is empty.
"""

last_cursor: Optional[str] = None
"""Cursor of the last item in this page.

Use for forward pagination. None if page is empty.
"""

total: Optional[int] = None
"""Total number of items available across all pages.

Only included when include_total=true was requested. Expensive operation - use
sparingly.
"""


class FileListResponse(BaseModel):
pagination: Pagination
"""Response model for cursor-based pagination.

Examples: Forward pagination response: { "has_more": true, "first_cursor":
"eyJjcmVhdGVkX2F0IjoiMjAyNC0xMi0zMSIsImlkIjoiYWJjMTIzIn0=", "last_cursor":
"eyJjcmVhdGVkX2F0IjoiMjAyNC0xMi0zMCIsImlkIjoieHl6Nzg5In0=", "total": null }

Final page response:
{
"has_more": false,
"first_cursor": "eyJjcmVhdGVkX2F0IjoiMjAyNC0xMi0yOSIsImlkIjoibGFzdDEyMyJ9",
"last_cursor": "eyJjcmVhdGVkX2F0IjoiMjAyNC0xMi0yOCIsImlkIjoiZmluYWw0NTYifQ==",
"total": 42
}

Empty results:
{
"has_more": false,
"first_cursor": null,
"last_cursor": null,
"total": 0
}
"""

object: Optional[Literal["list"]] = None
"""The object type of the response"""

data: List[VectorStoreFile]
"""The list of vector store files"""
Loading