syntax = "v1" info ( title: "Lottery Admin API" desc: "Admin-facing lottery endpoints for HIF-3 Stage 1" author: "hifast" version: "0.1.0" ) import "../types.api" @server ( prefix: v1/admin/lottery group: admin/lottery middleware: AuthMiddleware ) service ppanel { @doc "Create a new activity (status=draft)" @handler CreateLotteryActivity post /activities (CreateAdminLotteryActivityRequest) returns (AdminLotteryActivity) @doc "Update mutable activity fields" @handler UpdateLotteryActivity put /activities (UpdateAdminLotteryActivityRequest) returns (AdminLotteryActivity) @doc "List activities (paginated)" @handler ListLotteryActivities get /activities (ListAdminLotteryActivitiesRequest) returns (ListAdminLotteryActivitiesResponse) @doc "Get one activity" @handler GetLotteryActivity get /activities/detail (AdminActivityIdRequest) returns (AdminLotteryActivity) @doc "Publish (draft/paused → running)" @handler PublishLotteryActivity post /activities/publish (AdminActivityIdRequest) @doc "Pause (running → paused)" @handler PauseLotteryActivity post /activities/pause (AdminActivityIdRequest) @doc "Update eligibility/chance_sources (rule-caps enforced)" @handler UpdateLotteryRules put /activities/rules (UpdateAdminLotteryRulesRequest) @doc "Create prize" @handler CreateLotteryPrize post /prizes (CreateAdminLotteryPrizeRequest) returns (AdminLotteryPrize) @doc "Update prize" @handler UpdateLotteryPrize put /prizes (UpdateAdminLotteryPrizeRequest) returns (AdminLotteryPrize) @doc "Delete prize" @handler DeleteLotteryPrize delete /prizes (AdminPrizeIdRequest) @doc "List prizes on an activity" @handler ListLotteryPrizes get /prizes (ListAdminLotteryPrizesRequest) returns (ListAdminLotteryPrizesResponse) @doc "Manually grant N chances to a user (idempotent by source_ref)" @handler GrantLotteryChance post /chances/grant (GrantAdminLotteryChanceRequest) }