78 lines
1.8 KiB
Python
78 lines
1.8 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
钉钉同步 Schema - 请求/响应模型
|
|
"""
|
|
from typing import Any, Dict, List, Optional
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
|
class TestConnectionRequest(BaseModel):
|
|
app_key: Optional[str] = None
|
|
app_secret: Optional[str] = None
|
|
|
|
|
|
class TestConnectionResponse(BaseModel):
|
|
success: bool
|
|
corp_name: Optional[str] = None
|
|
dept_id: Optional[int] = None
|
|
message: Optional[str] = None
|
|
|
|
|
|
class DingtalkSyncConfigUpdate(BaseModel):
|
|
corp_id: Optional[str] = None
|
|
app_key: Optional[str] = None
|
|
app_secret: Optional[str] = None
|
|
sync_dept_id: Optional[str] = None
|
|
sync_root_dept_id: Optional[str] = None
|
|
enable_dept_event: Optional[str] = None
|
|
enable_user_event: Optional[str] = None
|
|
callback_token: Optional[str] = None
|
|
callback_aes_key: Optional[str] = None
|
|
callback_url: Optional[str] = None
|
|
|
|
|
|
class SyncTypeStats(BaseModel):
|
|
total_count: int = 0
|
|
success_count: int = 0
|
|
fail_count: int = 0
|
|
not_synced: int = 0
|
|
status: Optional[str] = None
|
|
sync_time: Optional[str] = None
|
|
|
|
|
|
class SyncStatsResponse(BaseModel):
|
|
dept: SyncTypeStats
|
|
user: SyncTypeStats
|
|
|
|
|
|
class SyncLogItem(BaseModel):
|
|
id: str
|
|
sync_type: str
|
|
total_count: Optional[int] = 0
|
|
success_count: Optional[int] = 0
|
|
fail_count: Optional[int] = 0
|
|
status: Optional[str] = None
|
|
error_detail: Optional[str] = None
|
|
started_at: Optional[str] = None
|
|
finished_at: Optional[str] = None
|
|
|
|
|
|
class SyncLogListResponse(BaseModel):
|
|
items: List[SyncLogItem]
|
|
total: int
|
|
page: int
|
|
page_size: int
|
|
|
|
|
|
class DingtalkDeptTreeNode(BaseModel):
|
|
dept_id: int
|
|
name: str
|
|
children: List["DingtalkDeptTreeNode"] = []
|
|
|
|
|
|
class DeptTreeRequest(BaseModel):
|
|
app_key: Optional[str] = None
|
|
app_secret: Optional[str] = None
|