Some checks failed
POST /api/v1/storefront/auth/forgot-password and .../reset-password were
both declared with bare `email: str` / `reset_token: str, new_password: str`
parameters. FastAPI treats unannotated str params as query parameters, so
the frontend's JSON body was ignored and the endpoint 422'd with
"missing query parameter 'email'". The docstrings on both endpoints
already said "Request Body" — intent was clear, implementation drifted.
Add two new Pydantic body schemas in tenancy/schemas/auth.py:
PasswordResetRequest { email: str } (forgot)
PasswordResetConfirm { reset_token: str, new_password: str } (reset)
Re-export from tenancy/schemas/__init__.py, import in
customers/routes/api/storefront.py, and switch both endpoint signatures
to take `body: <Schema>`. Internal usage reads body.email / body.reset_token
/ body.new_password.
Surfaced during Test 5 when user clicked "forgot password" on the customer
storefront login page to set a password for the first time after a
self-enrollment flow.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
276 lines
6.8 KiB
Python
276 lines
6.8 KiB
Python
# app/modules/tenancy/schemas/__init__.py
|
|
"""
|
|
Tenancy module Pydantic schemas.
|
|
|
|
Request/response schemas for platform, merchant, store, admin user, and team management.
|
|
"""
|
|
|
|
# Auth schemas
|
|
# Admin schemas
|
|
from app.modules.tenancy.schemas.admin import (
|
|
AdminAuditLogFilters,
|
|
AdminAuditLogListResponse,
|
|
AdminAuditLogResponse,
|
|
AdminDashboardStats,
|
|
AdminNotificationCreate,
|
|
AdminNotificationListResponse,
|
|
AdminNotificationResponse,
|
|
AdminNotificationUpdate,
|
|
AdminSessionListResponse,
|
|
AdminSessionResponse,
|
|
AdminSettingCreate,
|
|
AdminSettingDefaultResponse,
|
|
AdminSettingListResponse,
|
|
AdminSettingResponse,
|
|
AdminSettingUpdate,
|
|
ApplicationLogFilters,
|
|
ApplicationLogListResponse,
|
|
ApplicationLogResponse,
|
|
BulkStoreAction,
|
|
BulkStoreActionResponse,
|
|
BulkUserAction,
|
|
BulkUserActionResponse,
|
|
ComponentHealthStatus,
|
|
FileLogResponse,
|
|
LogCleanupResponse,
|
|
LogDeleteResponse,
|
|
LogFileInfo,
|
|
LogFileListResponse,
|
|
LogSettingsResponse,
|
|
LogSettingsUpdate,
|
|
LogSettingsUpdateResponse,
|
|
LogStatistics,
|
|
PlatformAlertCreate,
|
|
PlatformAlertListResponse,
|
|
PlatformAlertResolve,
|
|
PlatformAlertResponse,
|
|
PublicDisplaySettingsResponse,
|
|
RowsPerPageResponse,
|
|
RowsPerPageUpdateResponse,
|
|
SystemHealthResponse,
|
|
)
|
|
from app.modules.tenancy.schemas.auth import (
|
|
LoginResponse,
|
|
LogoutResponse,
|
|
OwnedMerchantSummary,
|
|
PasswordResetConfirm,
|
|
PasswordResetRequest,
|
|
PasswordResetRequestResponse,
|
|
PasswordResetResponse,
|
|
PlatformSelectResponse,
|
|
StoreMembershipSummary,
|
|
StoreUserResponse,
|
|
UserContext,
|
|
UserCreate,
|
|
UserDeleteResponse,
|
|
UserDetailResponse,
|
|
UserListResponse,
|
|
UserLogin,
|
|
UserResponse,
|
|
UserSearchItem,
|
|
UserSearchResponse,
|
|
UserStatusToggleResponse,
|
|
UserUpdate,
|
|
)
|
|
from app.modules.tenancy.schemas.merchant import (
|
|
MerchantBase,
|
|
MerchantCreate,
|
|
MerchantCreateResponse,
|
|
MerchantDetailResponse,
|
|
MerchantListResponse,
|
|
MerchantPortalProfileResponse,
|
|
MerchantPortalProfileUpdate,
|
|
MerchantPortalStoreListResponse,
|
|
MerchantResponse,
|
|
MerchantStoreCreate,
|
|
MerchantStoreDetailResponse,
|
|
MerchantStoreUpdate,
|
|
MerchantSummary,
|
|
MerchantTransferOwnership,
|
|
MerchantTransferOwnershipResponse,
|
|
MerchantUpdate,
|
|
)
|
|
|
|
# Store schemas
|
|
from app.modules.tenancy.schemas.store import (
|
|
StoreCreate,
|
|
StoreCreateResponse,
|
|
StoreDetailResponse,
|
|
StoreListResponse,
|
|
StoreResponse,
|
|
StoreSummary,
|
|
StoreUpdate,
|
|
)
|
|
|
|
# Store domain schemas
|
|
from app.modules.tenancy.schemas.store_domain import (
|
|
DomainDeletionResponse,
|
|
DomainVerificationInstructions,
|
|
DomainVerificationResponse,
|
|
StoreDomainCreate,
|
|
StoreDomainListResponse,
|
|
StoreDomainResponse,
|
|
StoreDomainUpdate,
|
|
)
|
|
|
|
# Team schemas
|
|
from app.modules.tenancy.schemas.team import (
|
|
BulkRemoveRequest,
|
|
BulkRemoveResponse,
|
|
InvitationAccept,
|
|
InvitationAcceptResponse,
|
|
InvitationResponse,
|
|
MerchantTeamInvite,
|
|
MerchantTeamInviteResponse,
|
|
MerchantTeamMemberResponse,
|
|
MerchantTeamMemberStoreInfo,
|
|
MerchantTeamOverviewResponse,
|
|
MerchantTeamStoreInfo,
|
|
PermissionCheckRequest,
|
|
PermissionCheckResponse,
|
|
RoleBase,
|
|
RoleCreate,
|
|
RoleListResponse,
|
|
RoleResponse,
|
|
RoleUpdate,
|
|
TeamErrorResponse,
|
|
TeamMemberBase,
|
|
TeamMemberInvite,
|
|
TeamMemberListResponse,
|
|
TeamMemberResponse,
|
|
TeamMemberUpdate,
|
|
TeamStatistics,
|
|
UserPermissionsResponse,
|
|
)
|
|
|
|
# User account (self-service) schemas
|
|
from app.modules.tenancy.schemas.user_account import (
|
|
UserAccountResponse,
|
|
UserAccountUpdate,
|
|
UserPasswordChange,
|
|
)
|
|
|
|
__all__ = [
|
|
# Auth
|
|
"LoginResponse",
|
|
"LogoutResponse",
|
|
"OwnedMerchantSummary",
|
|
"PasswordResetConfirm",
|
|
"PasswordResetRequest",
|
|
"PasswordResetRequestResponse",
|
|
"PasswordResetResponse",
|
|
"PlatformSelectResponse",
|
|
"StoreMembershipSummary",
|
|
"StoreUserResponse",
|
|
"UserContext",
|
|
"UserCreate",
|
|
"UserDeleteResponse",
|
|
"UserDetailResponse",
|
|
"UserListResponse",
|
|
"UserLogin",
|
|
"UserResponse",
|
|
"UserSearchItem",
|
|
"UserSearchResponse",
|
|
"UserStatusToggleResponse",
|
|
"UserUpdate",
|
|
# Merchant
|
|
"MerchantBase",
|
|
"MerchantCreate",
|
|
"MerchantCreateResponse",
|
|
"MerchantDetailResponse",
|
|
"MerchantListResponse",
|
|
"MerchantPortalProfileResponse",
|
|
"MerchantPortalProfileUpdate",
|
|
"MerchantPortalStoreListResponse",
|
|
"MerchantResponse",
|
|
"MerchantStoreCreate",
|
|
"MerchantStoreDetailResponse",
|
|
"MerchantStoreUpdate",
|
|
"MerchantSummary",
|
|
"MerchantTransferOwnership",
|
|
"MerchantTransferOwnershipResponse",
|
|
"MerchantUpdate",
|
|
# Store
|
|
"StoreCreate",
|
|
"StoreCreateResponse",
|
|
"StoreDetailResponse",
|
|
"StoreListResponse",
|
|
"StoreResponse",
|
|
"StoreSummary",
|
|
"StoreUpdate",
|
|
# Admin
|
|
"AdminAuditLogFilters",
|
|
"AdminAuditLogListResponse",
|
|
"AdminAuditLogResponse",
|
|
"AdminDashboardStats",
|
|
"AdminNotificationCreate",
|
|
"AdminNotificationListResponse",
|
|
"AdminNotificationResponse",
|
|
"AdminNotificationUpdate",
|
|
"AdminSessionListResponse",
|
|
"AdminSessionResponse",
|
|
"AdminSettingCreate",
|
|
"AdminSettingDefaultResponse",
|
|
"AdminSettingListResponse",
|
|
"AdminSettingResponse",
|
|
"AdminSettingUpdate",
|
|
"ApplicationLogFilters",
|
|
"ApplicationLogListResponse",
|
|
"ApplicationLogResponse",
|
|
"BulkUserAction",
|
|
"BulkUserActionResponse",
|
|
"BulkStoreAction",
|
|
"BulkStoreActionResponse",
|
|
"ComponentHealthStatus",
|
|
"FileLogResponse",
|
|
"LogCleanupResponse",
|
|
"LogDeleteResponse",
|
|
"LogFileInfo",
|
|
"LogFileListResponse",
|
|
"LogSettingsResponse",
|
|
"LogSettingsUpdate",
|
|
"LogSettingsUpdateResponse",
|
|
"LogStatistics",
|
|
"PlatformAlertCreate",
|
|
"PlatformAlertListResponse",
|
|
"PlatformAlertResolve",
|
|
"PlatformAlertResponse",
|
|
"PublicDisplaySettingsResponse",
|
|
"RowsPerPageResponse",
|
|
"RowsPerPageUpdateResponse",
|
|
"SystemHealthResponse",
|
|
# Team
|
|
"BulkRemoveRequest",
|
|
"BulkRemoveResponse",
|
|
"InvitationAccept",
|
|
"InvitationAcceptResponse",
|
|
"InvitationResponse",
|
|
"PermissionCheckRequest",
|
|
"PermissionCheckResponse",
|
|
"RoleBase",
|
|
"RoleCreate",
|
|
"RoleListResponse",
|
|
"RoleResponse",
|
|
"RoleUpdate",
|
|
"TeamErrorResponse",
|
|
"TeamMemberBase",
|
|
"TeamMemberInvite",
|
|
"TeamMemberListResponse",
|
|
"TeamMemberResponse",
|
|
"TeamMemberUpdate",
|
|
"TeamStatistics",
|
|
"UserPermissionsResponse",
|
|
# User Account
|
|
"UserAccountResponse",
|
|
"UserAccountUpdate",
|
|
"UserPasswordChange",
|
|
# Store Domain
|
|
"DomainDeletionResponse",
|
|
"DomainVerificationInstructions",
|
|
"DomainVerificationResponse",
|
|
"StoreDomainCreate",
|
|
"StoreDomainListResponse",
|
|
"StoreDomainResponse",
|
|
"StoreDomainUpdate",
|
|
]
|