diff --git a/langfuse/api/blob_storage_integrations/client.py b/langfuse/api/blob_storage_integrations/client.py index bf7ab406d..9e8051d8c 100644 --- a/langfuse/api/blob_storage_integrations/client.py +++ b/langfuse/api/blob_storage_integrations/client.py @@ -144,7 +144,7 @@ def upsert_blob_storage_integration( Path prefix for exported files (must end with forward slash if provided) export_start_date : typing.Optional[dt.datetime] - Custom start date for exports (required when exportMode is FROM_CUSTOM_DATE) + Custom start date for exports (required when exportMode is FROM_CUSTOM_DATE). Must not be in the future (27 h tolerance for timezone differences). compressed : typing.Optional[bool] Enable gzip compression for exported files (.csv.gz, .json.gz, .jsonl.gz). Defaults to true. @@ -421,7 +421,7 @@ async def upsert_blob_storage_integration( Path prefix for exported files (must end with forward slash if provided) export_start_date : typing.Optional[dt.datetime] - Custom start date for exports (required when exportMode is FROM_CUSTOM_DATE) + Custom start date for exports (required when exportMode is FROM_CUSTOM_DATE). Must not be in the future (27 h tolerance for timezone differences). compressed : typing.Optional[bool] Enable gzip compression for exported files (.csv.gz, .json.gz, .jsonl.gz). Defaults to true. diff --git a/langfuse/api/blob_storage_integrations/raw_client.py b/langfuse/api/blob_storage_integrations/raw_client.py index 2899c8b7c..9eeb8c2f1 100644 --- a/langfuse/api/blob_storage_integrations/raw_client.py +++ b/langfuse/api/blob_storage_integrations/raw_client.py @@ -201,7 +201,7 @@ def upsert_blob_storage_integration( Path prefix for exported files (must end with forward slash if provided) export_start_date : typing.Optional[dt.datetime] - Custom start date for exports (required when exportMode is FROM_CUSTOM_DATE) + Custom start date for exports (required when exportMode is FROM_CUSTOM_DATE). Must not be in the future (27 h tolerance for timezone differences). compressed : typing.Optional[bool] Enable gzip compression for exported files (.csv.gz, .json.gz, .jsonl.gz). Defaults to true. @@ -696,7 +696,7 @@ async def upsert_blob_storage_integration( Path prefix for exported files (must end with forward slash if provided) export_start_date : typing.Optional[dt.datetime] - Custom start date for exports (required when exportMode is FROM_CUSTOM_DATE) + Custom start date for exports (required when exportMode is FROM_CUSTOM_DATE). Must not be in the future (27 h tolerance for timezone differences). compressed : typing.Optional[bool] Enable gzip compression for exported files (.csv.gz, .json.gz, .jsonl.gz). Defaults to true. diff --git a/langfuse/api/blob_storage_integrations/types/blob_storage_sync_status.py b/langfuse/api/blob_storage_integrations/types/blob_storage_sync_status.py index 559e41450..b0fc97524 100644 --- a/langfuse/api/blob_storage_integrations/types/blob_storage_sync_status.py +++ b/langfuse/api/blob_storage_integrations/types/blob_storage_sync_status.py @@ -12,8 +12,9 @@ class BlobStorageSyncStatus(enum.StrEnum): Sync status of the blob storage integration: - `disabled` — integration is not enabled - `error` — last export failed (see `lastError` for details) - - `idle` — enabled but has never exported yet + - `running` — an export job is currently being processed - `queued` — next export is overdue (`nextSyncAt` is in the past) and waiting to be picked up by the worker + - `idle` — enabled but has never exported yet and no export is queued - `up_to_date` — all available data has been exported; next export is scheduled for the future **ETL usage**: poll this endpoint and check for `up_to_date` status. Compare `lastSyncAt` against your @@ -22,6 +23,7 @@ class BlobStorageSyncStatus(enum.StrEnum): """ IDLE = "idle" + RUNNING = "running" QUEUED = "queued" UP_TO_DATE = "up_to_date" DISABLED = "disabled" @@ -30,6 +32,7 @@ class BlobStorageSyncStatus(enum.StrEnum): def visit( self, idle: typing.Callable[[], T_Result], + running: typing.Callable[[], T_Result], queued: typing.Callable[[], T_Result], up_to_date: typing.Callable[[], T_Result], disabled: typing.Callable[[], T_Result], @@ -37,6 +40,8 @@ def visit( ) -> T_Result: if self is BlobStorageSyncStatus.IDLE: return idle() + if self is BlobStorageSyncStatus.RUNNING: + return running() if self is BlobStorageSyncStatus.QUEUED: return queued() if self is BlobStorageSyncStatus.UP_TO_DATE: diff --git a/langfuse/api/blob_storage_integrations/types/create_blob_storage_integration_request.py b/langfuse/api/blob_storage_integrations/types/create_blob_storage_integration_request.py index bba3205f8..44d2d2dda 100644 --- a/langfuse/api/blob_storage_integrations/types/create_blob_storage_integration_request.py +++ b/langfuse/api/blob_storage_integrations/types/create_blob_storage_integration_request.py @@ -85,7 +85,7 @@ class CreateBlobStorageIntegrationRequest(UniversalBaseModel): typing.Optional[dt.datetime], FieldMetadata(alias="exportStartDate") ] = pydantic.Field(default=None) """ - Custom start date for exports (required when exportMode is FROM_CUSTOM_DATE) + Custom start date for exports (required when exportMode is FROM_CUSTOM_DATE). Must not be in the future (27 h tolerance for timezone differences). """ compressed: typing.Optional[bool] = pydantic.Field(default=None)