- 后端: FastAPI + SQLAlchemy + SQLite, JWT认证, 代理支持的AirwallexClient - 前端: React 18 + Vite + Ant Design 5, 中文界面 - 功能: 卡片管理, 持卡人管理, 交易记录, API令牌, 系统设置, 审计日志 - 第三方API: X-API-Key认证, 权限控制 - Docker部署: docker-compose编排前后端
63 lines
3.1 KiB
Python
63 lines
3.1 KiB
Python
"""
|
|
Models for the Airwallex Issuing Config API.
|
|
"""
|
|
from typing import Optional, List, Dict, Any
|
|
from datetime import datetime
|
|
from pydantic import Field
|
|
from .base import AirwallexModel
|
|
from .issuing_common import TransactionUsage
|
|
|
|
|
|
class RemoteAuthSettings(AirwallexModel):
|
|
"""Model for remote auth settings."""
|
|
created_at: Optional[datetime] = Field(None, description="Creation timestamp")
|
|
default_action: Optional[str] = Field(None, description="Default action when remote auth fails")
|
|
enabled: Optional[bool] = Field(None, description="Whether remote auth is enabled")
|
|
shared_secret: Optional[str] = Field(None, description="Shared secret key")
|
|
updated_at: Optional[datetime] = Field(None, description="Last update timestamp")
|
|
url: Optional[str] = Field(None, description="Remote auth endpoint URL")
|
|
|
|
|
|
class RemoteCallMethod(AirwallexModel):
|
|
"""Model for remote call method."""
|
|
name: str = Field(..., description="Method name")
|
|
path: str = Field(..., description="Method path")
|
|
|
|
|
|
class RemoteCallConfig(AirwallexModel):
|
|
"""Model for remote call configuration."""
|
|
methods: List[RemoteCallMethod] = Field(..., description="Available methods")
|
|
shared_secret: Optional[str] = Field(None, description="Shared secret key")
|
|
url: str = Field(..., description="Base URL")
|
|
|
|
|
|
class RemoteProvisioningConfig(AirwallexModel):
|
|
"""Model for remote provisioning configuration."""
|
|
activated: Optional[bool] = Field(None, description="Whether remote provisioning is activated")
|
|
shared_secret: Optional[str] = Field(None, description="Shared secret key")
|
|
url: Optional[str] = Field(None, description="Remote provisioning endpoint URL")
|
|
|
|
|
|
class SpendingLimitSettings(AirwallexModel):
|
|
"""Model for spending limit settings."""
|
|
default_limits: Optional[Dict[str, Dict[str, float]]] = Field(None, description="Default limits")
|
|
maximum_limits: Optional[Dict[str, Dict[str, float]]] = Field(None, description="Maximum limits")
|
|
|
|
|
|
class IssuingConfig(AirwallexModel):
|
|
"""Model for issuing configuration."""
|
|
resource_name: str = "issuing/config"
|
|
|
|
blocked_transaction_usages: Optional[List[TransactionUsage]] = Field(None, description="Blocked transaction usages")
|
|
remote_auth_settings: Optional[RemoteAuthSettings] = Field(None, description="Remote authorization settings")
|
|
remote_call_config: Optional[RemoteCallConfig] = Field(None, description="Remote call configuration")
|
|
remote_provisioning_config: Optional[RemoteProvisioningConfig] = Field(None, description="Remote provisioning configuration")
|
|
spending_limit_settings: Optional[SpendingLimitSettings] = Field(None, description="Spending limit settings")
|
|
|
|
|
|
class IssuingConfigUpdateRequest(AirwallexModel):
|
|
"""Model for issuing config update request."""
|
|
remote_auth: Optional[RemoteAuthSettings] = Field(None, description="Remote authorization configuration")
|
|
remote_call_config: Optional[RemoteCallConfig] = Field(None, description="Remote call configuration")
|
|
remote_provisioning_config: Optional[RemoteProvisioningConfig] = Field(None, description="Remote provisioning configuration")
|