feat(files): orchestrate connector folder sync
Module Package Release / publish-packages (push) Successful in 12s

This commit is contained in:
2026-08-21 22:49:47 +02:00
parent a8c3192c3a
commit 378f4d6ac5
19 changed files with 1302 additions and 30 deletions
+54 -1
View File
@@ -530,7 +530,7 @@ class FileConnectorImportRequest(BaseModel):
target_folder: str | None = None
target_path: str | None = None
campaign_id: str | None = None
conflict_strategy: Literal["reject", "overwrite", "rename"] = "reject"
conflict_strategy: Literal["reject", "overwrite", "rename", "skip"] = "reject"
source_revision: str | None = None
metadata: dict[str, Any] = Field(default_factory=dict)
@@ -542,6 +542,59 @@ class FileConnectorSyncResponse(BaseModel):
current_version_id: str
class FileConnectorFolderSyncRequest(BaseModel):
path: str = ""
target_folder: str | None = None
recursive: bool = True
conflict_strategy: Literal["reject", "overwrite", "rename", "skip"] = "skip"
max_files: int = Field(default=100, ge=1, le=500)
max_depth: int = Field(default=12, ge=0, le=50)
metadata: dict[str, Any] = Field(default_factory=dict)
class FileConnectorFolderSyncItemResponse(BaseModel):
source_path: str
target_path: str | None = None
action: Literal[
"created",
"updated",
"unchanged",
"skipped",
"conflict",
"policy_denied",
"failed",
]
file: FileAssetResponse | None = None
previous_version_id: str | None = None
current_version_id: str | None = None
source_revision: str | None = None
detail: str | None = None
policy_decision: dict[str, Any] | None = None
class FileConnectorFolderSyncSummary(BaseModel):
discovered: int = 0
created: int = 0
updated: int = 0
unchanged: int = 0
skipped: int = 0
conflicts: int = 0
policy_denied: int = 0
failed: int = 0
class FileConnectorFolderSyncResponse(BaseModel):
connector_space_id: str
connector_profile_id: str
provider: str
remote_path: str
target_folder: str
recursive: bool
truncated: bool = False
summary: FileConnectorFolderSyncSummary
items: list[FileConnectorFolderSyncItemResponse] = Field(default_factory=list)
class FileConnectorWriteRequest(BaseModel):
file_id: str
remote_path: str