Files
orion/app/modules/loyalty/schemas/__init__.py
Samir Boulahtit cb8e6a0ec3
Some checks failed
CI / ruff (push) Successful in 15s
CI / validate (push) Has been cancelled
CI / dependency-scanning (push) Has been cancelled
CI / docs (push) Has been cancelled
CI / deploy (push) Has been cancelled
CI / pytest (push) Has been cancelled
fix(loyalty): accept store_id in body for merchant PIN create
The merchant /pins POST was reading store_id as a query parameter, but
the shared loyalty pins JS factory sends the form (including store_id)
as a JSON body — matching the store-side endpoint, which gets store_id
from the JWT and ignores any body field. Result: a 422 "Field
required" on every PIN create from /merchants/loyalty/pins.

Add PinCreateForMerchant (PinCreate + store_id) and switch the
endpoint to it. Validation that the store belongs to the merchant is
unchanged.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 21:25:01 +02:00

151 lines
3.4 KiB
Python

# app/modules/loyalty/schemas/__init__.py
"""
Loyalty module Pydantic schemas.
Request and response models for the loyalty API endpoints.
Usage:
from app.modules.loyalty.schemas import (
# Program
ProgramCreate,
ProgramUpdate,
ProgramResponse,
# Card
CardEnrollRequest,
CardResponse,
# Stamp
StampRequest,
StampResponse,
# Points
PointsEarnRequest,
PointsRedeemRequest,
# PIN
PinCreate,
PinVerifyRequest,
)
"""
from app.modules.loyalty.schemas.card import (
CardDetailResponse,
# Card operations
CardEnrollRequest,
CardListResponse,
CardLookupResponse,
CardResponse,
TransactionListResponse,
# Transactions
TransactionResponse,
)
from app.modules.loyalty.schemas.pin import (
# Staff PIN
PinCreate,
PinCreateForMerchant,
PinDetailListResponse,
PinDetailResponse,
PinListResponse,
PinResponse,
PinUpdate,
PinVerifyRequest,
PinVerifyResponse,
)
from app.modules.loyalty.schemas.points import (
PointsAdjustRequest,
PointsAdjustResponse,
# Points operations
PointsEarnRequest,
PointsEarnResponse,
PointsRedeemRequest,
PointsRedeemResponse,
PointsVoidRequest,
PointsVoidResponse,
)
from app.modules.loyalty.schemas.program import (
# Merchant settings
MerchantSettingsResponse,
MerchantSettingsUpdate,
MerchantStatsResponse,
# Points rewards
PointsRewardConfig,
# Program CRUD
ProgramCreate,
ProgramListResponse,
ProgramResponse,
# Stats
ProgramStatsResponse,
ProgramUpdate,
TierConfig,
)
from app.modules.loyalty.schemas.stamp import (
StampRedeemRequest,
StampRedeemResponse,
# Stamp operations
StampRequest,
StampResponse,
StampVoidRequest,
StampVoidResponse,
)
from app.modules.loyalty.schemas.terminal_device import (
# Terminal device pairing & management
TerminalDeviceCreate,
TerminalDeviceListResponse,
TerminalDevicePairingResponse,
TerminalDeviceResponse,
TerminalDeviceRevoke,
TerminalDeviceUpdate,
)
__all__ = [
# Program
"ProgramCreate",
"ProgramUpdate",
"ProgramResponse",
"ProgramListResponse",
"PointsRewardConfig",
"TierConfig",
"ProgramStatsResponse",
"MerchantStatsResponse",
"MerchantSettingsResponse",
"MerchantSettingsUpdate",
# Card
"CardEnrollRequest",
"CardResponse",
"CardDetailResponse",
"CardListResponse",
"CardLookupResponse",
"TransactionResponse",
"TransactionListResponse",
# Stamp
"StampRequest",
"StampResponse",
"StampRedeemRequest",
"StampRedeemResponse",
"StampVoidRequest",
"StampVoidResponse",
# Points
"PointsEarnRequest",
"PointsEarnResponse",
"PointsRedeemRequest",
"PointsRedeemResponse",
"PointsVoidRequest",
"PointsVoidResponse",
"PointsAdjustRequest",
"PointsAdjustResponse",
# PIN
"PinCreate",
"PinCreateForMerchant",
"PinUpdate",
"PinResponse",
"PinDetailResponse",
"PinListResponse",
"PinDetailListResponse",
"PinVerifyRequest",
"PinVerifyResponse",
# Terminal device
"TerminalDeviceCreate",
"TerminalDeviceUpdate",
"TerminalDeviceRevoke",
"TerminalDeviceResponse",
"TerminalDevicePairingResponse",
"TerminalDeviceListResponse",
]