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.25.0"
".": "0.26.0"
}
4 changes: 2 additions & 2 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 48
configured_endpoints: 49
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/mixedbread%2Fmixedbread-4983c57f5143aaeadfbb4af35595570e613035ae500ff1597fdf600cc2a48959.yml
openapi_spec_hash: ecc0a6cfe61c3c959d034d094f36befe
config_hash: d98614cc5eec7ec8807fcc86c1799d62
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.26.0 (2025-08-11)

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

### Features

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

## 0.25.0 (2025-08-11)

Full Changelog: [v0.24.0...v0.25.0](https://github.com/mixedbread-ai/mixedbread-python/compare/v0.24.0...v0.25.0)
Expand Down
2 changes: 2 additions & 0 deletions 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,6 +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="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.25.0"
version = "0.26.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.25.0" # x-release-please-version
__version__ = "0.26.0" # x-release-please-version
162 changes: 161 additions & 1 deletion src/mixedbread/resources/vector_stores/files.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,12 @@
async_to_streamed_response_wrapper,
)
from ..._base_client import make_request_options
from ...types.vector_stores import file_create_params, file_search_params, file_retrieve_params
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

__all__ = ["FilesResource", "AsyncFilesResource"]

Expand Down Expand Up @@ -160,6 +162,79 @@ def retrieve(
cast_to=VectorStoreFile,
)

def list(
self,
vector_store_identifier: str,
*,
limit: int | NotGiven = NOT_GIVEN,
after: Optional[str] | NotGiven = NOT_GIVEN,
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,
) -> FileListResponse:
"""
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 and metadata filter

Returns: VectorStoreFileListResponse: Paginated list of vector store files

Args:
vector_store_identifier: The ID or name of the vector store

limit: Maximum number of items to return per page (1-100)

after: Cursor for forward pagination - get items after this position. Use last_cursor
from previous response.

before: Cursor for backward pagination - get items before this position. Use
first_cursor from previous response.

include_total: Whether to include total count in response (expensive operation)

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

extra_body: Add additional JSON properties to the request

timeout: Override the client-level default timeout for this request, in seconds
"""
if not vector_store_identifier:
raise ValueError(
f"Expected a non-empty value for `vector_store_identifier` but received {vector_store_identifier!r}"
)
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
),
cast_to=FileListResponse,
)

def delete(
self,
file_id: str,
Expand Down Expand Up @@ -525,6 +600,79 @@ async def retrieve(
cast_to=VectorStoreFile,
)

async def list(
self,
vector_store_identifier: str,
*,
limit: int | NotGiven = NOT_GIVEN,
after: Optional[str] | NotGiven = NOT_GIVEN,
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,
) -> FileListResponse:
"""
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 and metadata filter

Returns: VectorStoreFileListResponse: Paginated list of vector store files

Args:
vector_store_identifier: The ID or name of the vector store

limit: Maximum number of items to return per page (1-100)

after: Cursor for forward pagination - get items after this position. Use last_cursor
from previous response.

before: Cursor for backward pagination - get items before this position. Use
first_cursor from previous response.

include_total: Whether to include total count in response (expensive operation)

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

extra_body: Add additional JSON properties to the request

timeout: Override the client-level default timeout for this request, in seconds
"""
if not vector_store_identifier:
raise ValueError(
f"Expected a non-empty value for `vector_store_identifier` but received {vector_store_identifier!r}"
)
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
),
cast_to=FileListResponse,
)

async def delete(
self,
file_id: str,
Expand Down Expand Up @@ -769,6 +917,9 @@ def __init__(self, files: FilesResource) -> None:
self.retrieve = to_raw_response_wrapper(
files.retrieve,
)
self.list = to_raw_response_wrapper(
files.list,
)
self.delete = to_raw_response_wrapper(
files.delete,
)
Expand All @@ -787,6 +938,9 @@ def __init__(self, files: AsyncFilesResource) -> None:
self.retrieve = async_to_raw_response_wrapper(
files.retrieve,
)
self.list = async_to_raw_response_wrapper(
files.list,
)
self.delete = async_to_raw_response_wrapper(
files.delete,
)
Expand All @@ -805,6 +959,9 @@ def __init__(self, files: FilesResource) -> None:
self.retrieve = to_streamed_response_wrapper(
files.retrieve,
)
self.list = to_streamed_response_wrapper(
files.list,
)
self.delete = to_streamed_response_wrapper(
files.delete,
)
Expand All @@ -823,6 +980,9 @@ def __init__(self, files: AsyncFilesResource) -> None:
self.retrieve = async_to_streamed_response_wrapper(
files.retrieve,
)
self.list = async_to_streamed_response_wrapper(
files.list,
)
self.delete = async_to_streamed_response_wrapper(
files.delete,
)
Expand Down
2 changes: 2 additions & 0 deletions src/mixedbread/types/vector_stores/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@

from __future__ import annotations

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
44 changes: 44 additions & 0 deletions src/mixedbread/types/vector_stores/file_list_params.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

from __future__ import annotations

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", "MetadataFilter", "MetadataFilterUnionMember2"]


class FileListParams(TypedDict, total=False):
limit: int
"""Maximum number of items to return per page (1-100)"""

after: Optional[str]
"""Cursor for forward pagination - get items after this position.

Use last_cursor from previous response.
"""

before: Optional[str]
"""Cursor for backward pagination - get items before this position.

Use first_cursor from previous response.
"""

include_total: bool
"""Whether to include total count in response (expensive operation)"""

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