MimironsGoldOMatic.Backend.Api and related Backend.* projects) and Desktop app.PayoutDto and CreatePayoutRequest; CharacterNameRules for format checks.PayoutDto, CreatePayoutRequest are record types in this assembly.HandlerResult<T> and ApiErrorDto are intentionally outside this library.Pending (Initial)InProgress (Explicitly claimed by Desktop when streamer clicks Sync/Inject)Sent (Mail-send confirmed via [MGM_CONFIRM:UUID] in WoWChatLog.txt → Desktop/Backend, or manually marked)Failed (Error occurred)Cancelled (Streamer cancelled)Expired (Older than 24h; closed permanently)Guid Idstring TwitchUserId (logic: limits, concurrency)string TwitchDisplayName (UX: shown in Desktop)string CharacterNamelong GoldAmount (MVP fixed at 1,000g)string EnrollmentRequestId (links payout to pool enrollment / audit trail where stored)PayoutStatus StatusDateTime CreatedAtbool IsRewardSentAnnouncedToChat (read/API shape; Helix §11 at-most-once flag per docs/overview/SPEC.md §6 — defaults to false in Shared)string CharacterNamestring EnrollmentRequestIdShared validation for CharacterName enforces length 2–12 (after trim) and letters-only input in Latin/Cyrillic Unicode script blocks (no digits, punctuation, or spaces), implemented in CharacterNameRules and FluentValidation (docs/overview/SPEC.md §4).
PayoutEconomics.MvpWinningPayoutGold: fixed 1,000g per winning payout on PayoutDto (SPEC §2); validated in PayoutDtoValidator.
Other MVP business rules (lifetime caps, concurrency limits, roulette gating) are enforced in Backend domain/application layers.
Status and API semantics are normative in docs/overview/SPEC.md:
POST /api/payouts/claim: 201 for new creation, 200 for idempotent duplicate replay.GET /api/payouts/my-last: 404 when no payout exists for caller.Field labels and validation-driven UX are aligned with docs/reference/UI_SPEC.md (hub) and client docs/components/*/UI_SPEC.md. Enrollment is primarily via Twitch chat !twgold <CharacterName>; optional CreatePayoutRequest / EnrollmentRequestId applies to Extension/Dev Rig paths only (see docs/overview/SPEC.md).