Files
Airwallex/airwallex-sdk/airwallex/models/issuing_config.py
zqq61 4f53889a8e feat: Airwallex 发卡管理后台完整实现
- 后端: FastAPI + SQLAlchemy + SQLite, JWT认证, 代理支持的AirwallexClient
- 前端: React 18 + Vite + Ant Design 5, 中文界面
- 功能: 卡片管理, 持卡人管理, 交易记录, API令牌, 系统设置, 审计日志
- 第三方API: X-API-Key认证, 权限控制
- Docker部署: docker-compose编排前后端
2026-03-15 23:05:08 +08:00

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")