diff --git a/contracts/admin-openapi.json b/contracts/admin-openapi.json index 4fdee98..8900b6d 100644 --- a/contracts/admin-openapi.json +++ b/contracts/admin-openapi.json @@ -1622,6 +1622,129 @@ "x-permissions": ["coin-seller:update"] } }, + "/admin/coin-sellers/{user_id}/sub-sellers": { + "get": { + "operationId": "listCoinSellerSubSellers", + "parameters": [ + { + "in": "path", + "name": "user_id", + "required": true, + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/Page" + }, + { + "$ref": "#/components/parameters/PageSize" + } + ], + "responses": { + "200": { + "$ref": "#/components/responses/CoinSellerPageResponse" + } + }, + "x-permission": "coin-seller:view", + "x-permissions": ["coin-seller:view"] + } + }, + "/admin/coin-seller-sub-applications": { + "get": { + "operationId": "listCoinSellerSubApplications", + "parameters": [ + { + "$ref": "#/components/parameters/Page" + }, + { + "$ref": "#/components/parameters/PageSize" + }, + { + "$ref": "#/components/parameters/Keyword" + }, + { + "in": "query", + "name": "status", + "schema": { + "type": "string", + "enum": ["pending", "approved", "rejected"] + } + }, + { + "in": "query", + "name": "parent_user_id", + "schema": { + "type": "string" + } + }, + { + "in": "query", + "name": "target_user_id", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "$ref": "#/components/responses/CoinSellerSubApplicationPageResponse" + } + }, + "x-permission": "coin-seller-sub-application:view", + "x-permissions": ["coin-seller-sub-application:view"] + } + }, + "/admin/coin-seller-sub-applications/{application_id}/approve": { + "post": { + "operationId": "approveCoinSellerSubApplication", + "requestBody": { + "$ref": "#/components/requestBodies/CoinSellerSubApplicationReviewRequest" + }, + "responses": { + "200": { + "$ref": "#/components/responses/CoinSellerSubApplicationReviewResponse" + } + }, + "parameters": [ + { + "in": "path", + "name": "application_id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "x-permission": "coin-seller-sub-application:audit", + "x-permissions": ["coin-seller-sub-application:audit"] + } + }, + "/admin/coin-seller-sub-applications/{application_id}/reject": { + "post": { + "operationId": "rejectCoinSellerSubApplication", + "requestBody": { + "$ref": "#/components/requestBodies/CoinSellerSubApplicationReviewRequest" + }, + "responses": { + "200": { + "$ref": "#/components/responses/CoinSellerSubApplicationReviewResponse" + } + }, + "parameters": [ + { + "in": "path", + "name": "application_id", + "required": true, + "schema": { + "type": "string" + } + } + ], + "x-permission": "coin-seller-sub-application:audit", + "x-permissions": ["coin-seller-sub-application:audit"] + } + }, "/admin/coin-sellers/{user_id}/stock-credits": { "post": { "operationId": "creditCoinSellerStock", @@ -2887,7 +3010,12 @@ "in": "query", "schema": { "type": "string", - "enum": ["admin_stock_credit", "seller_transfer", "sub_seller_transfer", "salary_transfer_received"] + "enum": [ + "admin_stock_credit", + "seller_transfer", + "sub_seller_transfer", + "salary_transfer_received" + ] } }, { @@ -2975,7 +3103,12 @@ "in": "query", "schema": { "type": "string", - "enum": ["admin_stock_credit", "seller_transfer", "sub_seller_transfer", "salary_transfer_received"] + "enum": [ + "admin_stock_credit", + "seller_transfer", + "sub_seller_transfer", + "salary_transfer_received" + ] } }, { @@ -3083,7 +3216,11 @@ { "in": "query", "name": "keyword", "schema": { "type": "string" } }, { "in": "query", "name": "status", "schema": { "type": "string", "enum": ["active", "disabled"] } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 } }, - { "in": "query", "name": "page_size", "schema": { "type": "integer", "minimum": 1, "maximum": 100 } } + { + "in": "query", + "name": "page_size", + "schema": { "type": "integer", "minimum": 1, "maximum": 100 } + } ], "responses": { "200": { @@ -3161,7 +3298,11 @@ { "in": "query", "name": "keyword", "schema": { "type": "string" } }, { "in": "query", "name": "status", "schema": { "type": "string", "enum": ["active", "disabled"] } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 } }, - { "in": "query", "name": "page_size", "schema": { "type": "integer", "minimum": 1, "maximum": 100 } } + { + "in": "query", + "name": "page_size", + "schema": { "type": "integer", "minimum": 1, "maximum": 100 } + } ], "responses": { "200": { @@ -3718,7 +3859,12 @@ { "in": "query", "name": "end_ms", "schema": { "type": "integer", "format": "int64" } }, { "in": "query", "name": "app_codes", "schema": { "type": "string" } }, { "in": "query", "name": "region_id", "schema": { "type": "integer", "format": "int64" } }, - { "in": "query", "name": "region_ids", "description": "逗号分隔的大区 ID;用于 Social BI 顶栏多选区域。", "schema": { "type": "string" } }, + { + "in": "query", + "name": "region_ids", + "description": "逗号分隔的大区 ID;用于 Social BI 顶栏多选区域。", + "schema": { "type": "string" } + }, { "in": "query", "name": "section", @@ -6728,6 +6874,16 @@ } } }, + "CoinSellerSubApplicationReviewRequest": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CoinSellerSubApplicationReviewPayload" + } + } + } + }, "CountryCreateRequest": { "required": true, "content": { @@ -7061,6 +7217,26 @@ } } }, + "CoinSellerSubApplicationPageResponse": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResponseCoinSellerSubApplicationPage" + } + } + } + }, + "CoinSellerSubApplicationReviewResponse": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResponseCoinSellerSubApplicationReview" + } + } + } + }, "CoinSellerLedgerPageResponse": { "description": "OK", "content": { @@ -7517,6 +7693,27 @@ } } }, + "ApiPageCoinSellerSubApplication": { + "type": "object", + "required": ["items", "page", "pageSize", "total"], + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CoinSellerSubApplication" + } + }, + "page": { + "type": "integer" + }, + "pageSize": { + "type": "integer" + }, + "total": { + "type": "integer" + } + } + }, "ApiPageCoinSellerLedger": { "type": "object", "required": ["items", "page", "pageSize", "total"], @@ -7894,6 +8091,36 @@ } ] }, + "ApiResponseCoinSellerSubApplicationPage": { + "allOf": [ + { + "$ref": "#/components/schemas/Envelope" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/ApiPageCoinSellerSubApplication" + } + } + } + ] + }, + "ApiResponseCoinSellerSubApplicationReview": { + "allOf": [ + { + "$ref": "#/components/schemas/Envelope" + }, + { + "type": "object", + "properties": { + "data": { + "$ref": "#/components/schemas/CoinSellerSubApplicationReviewResult" + } + } + } + ] + }, "ApiResponseCoinSellerLedgerPage": { "allOf": [ { @@ -8780,6 +9007,9 @@ "type": "string", "enum": ["active", "disabled"] }, + "subCoinSellerCount": { + "type": "integer" + }, "totalRechargeUsdtMicro": { "type": "integer" }, @@ -8794,6 +9024,204 @@ } } }, + "CoinSellerSubApplicationUser": { + "type": "object", + "required": ["userId"], + "properties": { + "avatar": { + "type": "string" + }, + "displayUserId": { + "type": "string" + }, + "regionId": { + "type": "integer" + }, + "regionName": { + "type": "string" + }, + "userId": { + "type": "string" + }, + "username": { + "type": "string" + } + } + }, + "CoinSellerSubApplication": { + "type": "object", + "required": ["applicationId", "parent", "target", "status"], + "properties": { + "applicationId": { + "type": "string" + }, + "commandId": { + "type": "string" + }, + "createdAtMs": { + "type": "integer" + }, + "parent": { + "$ref": "#/components/schemas/CoinSellerSubApplicationUser" + }, + "relationId": { + "type": "string" + }, + "reviewedAtMs": { + "type": "integer" + }, + "reviewedByAdminId": { + "type": "string" + }, + "reviewReason": { + "type": "string" + }, + "status": { + "type": "string", + "enum": ["pending", "approved", "rejected"] + }, + "target": { + "$ref": "#/components/schemas/CoinSellerSubApplicationUser" + }, + "updatedAtMs": { + "type": "integer" + } + } + }, + "CoinSellerSubApplicationReviewApplication": { + "type": "object", + "required": ["applicationId", "parentUserId", "targetUserId", "status"], + "properties": { + "applicationId": { + "type": "string" + }, + "commandId": { + "type": "string" + }, + "createdAtMs": { + "type": "integer" + }, + "parentUserId": { + "type": "string" + }, + "relationId": { + "type": "string" + }, + "reviewedAtMs": { + "type": "integer" + }, + "reviewedByAdminId": { + "type": "string" + }, + "reviewReason": { + "type": "string" + }, + "status": { + "type": "string", + "enum": ["pending", "approved", "rejected"] + }, + "targetUserId": { + "type": "string" + }, + "updatedAtMs": { + "type": "integer" + } + } + }, + "CoinSellerSubRelation": { + "type": "object", + "required": ["relationId", "parentUserId", "childUserId", "status"], + "properties": { + "childUserId": { + "type": "string" + }, + "createdAtMs": { + "type": "integer" + }, + "createdByUserId": { + "type": "string" + }, + "parentUserId": { + "type": "string" + }, + "relationId": { + "type": "string" + }, + "status": { + "type": "string" + }, + "updatedAtMs": { + "type": "integer" + } + } + }, + "CoinSellerSubApplicationReviewChild": { + "type": "object", + "required": ["userId"], + "properties": { + "avatar": { + "type": "string" + }, + "canManageSubCoinSellers": { + "type": "boolean" + }, + "contactInfo": { + "type": "string" + }, + "displayUserId": { + "type": "string" + }, + "merchantAssetType": { + "type": "string" + }, + "regionId": { + "type": "integer" + }, + "regionName": { + "type": "string" + }, + "status": { + "type": "string" + }, + "updatedAtMs": { + "type": "integer" + }, + "userId": { + "type": "string" + }, + "username": { + "type": "string" + } + } + }, + "CoinSellerSubApplicationReviewPayload": { + "type": "object", + "required": ["commandId"], + "properties": { + "commandId": { + "type": "string", + "maxLength": 120 + }, + "reason": { + "type": "string", + "maxLength": 200 + } + } + }, + "CoinSellerSubApplicationReviewResult": { + "type": "object", + "properties": { + "application": { + "$ref": "#/components/schemas/CoinSellerSubApplicationReviewApplication" + }, + "child": { + "$ref": "#/components/schemas/CoinSellerSubApplicationReviewChild" + }, + "relation": { + "$ref": "#/components/schemas/CoinSellerSubRelation" + } + } + }, "CoinLedgerUser": { "type": "object", "required": ["userId"], @@ -8814,7 +9242,19 @@ }, "CoinSellerLedger": { "type": "object", - "required": ["entryId", "transactionId", "ledgerType", "bizType", "seller", "receiver", "amount", "direction", "availableDelta", "sellerBalanceAfter", "createdAtMs"], + "required": [ + "entryId", + "transactionId", + "ledgerType", + "bizType", + "seller", + "receiver", + "amount", + "direction", + "availableDelta", + "sellerBalanceAfter", + "createdAtMs" + ], "properties": { "amount": { "type": "integer", @@ -8857,7 +9297,12 @@ }, "ledgerType": { "type": "string", - "enum": ["admin_stock_credit", "seller_transfer", "sub_seller_transfer", "salary_transfer_received"] + "enum": [ + "admin_stock_credit", + "seller_transfer", + "sub_seller_transfer", + "salary_transfer_received" + ] }, "metadata": { "type": "object", @@ -10132,6 +10577,13 @@ "externalOrderNo": { "type": "string" }, + "providerCurrencyCode": { + "type": "string" + }, + "providerAmountMinor": { + "type": "integer", + "minimum": 1 + }, "chain": { "type": "string", "enum": ["TRON", "BSC"] @@ -10210,6 +10662,13 @@ "usdMinorAmount": { "type": "integer", "minimum": 0 + }, + "providerCurrencyCode": { + "type": "string" + }, + "providerAmountMinor": { + "type": "integer", + "minimum": 1 } } }, diff --git a/finance/src/api.test.js b/finance/src/api.test.js index 8175a5c..9133dd7 100644 --- a/finance/src/api.test.js +++ b/finance/src/api.test.js @@ -113,14 +113,18 @@ test("finance coin seller recharge order APIs use generated endpoint paths", asy appCode: "lalu", coinAmount: 100000, externalOrderNo: "MIFA-001", + providerAmountMinor: 125050, providerCode: "mifapay", + providerCurrencyCode: "PHP", targetUserId: "10001", usdAmount: 10 }); await verifyFinanceCoinSellerRechargeReceipt({ appCode: "lalu", externalOrderNo: "MIFA-001", + providerAmountMinor: 125050, providerCode: "mifapay", + providerCurrencyCode: "PHP", usdAmount: 10 }); await verifyFinanceCoinSellerRechargeOrder("order-1"); @@ -132,13 +136,24 @@ test("finance coin seller recharge order APIs use generated endpoint paths", asy expect(calls[0][1]?.method).toBe("GET"); expect(String(calls[1][0])).toContain("/api/v1/admin/finance/orders/coin-seller-recharges"); expect(calls[1][1]?.method).toBe("POST"); - expect(JSON.parse(String(calls[1][1]?.body))).toMatchObject({ externalOrderNo: "MIFA-001", providerCode: "mifapay" }); + expect(JSON.parse(String(calls[1][1]?.body))).toEqual({ + appCode: "lalu", + coinAmount: 100000, + externalOrderNo: "MIFA-001", + providerAmountMinor: 125050, + providerCode: "mifapay", + providerCurrencyCode: "PHP", + targetUserId: "10001", + usdAmount: 10 + }); expect(String(calls[2][0])).toContain("/api/v1/admin/finance/orders/coin-seller-recharges/receipt-verifications"); expect(calls[2][1]?.method).toBe("POST"); expect(JSON.parse(String(calls[2][1]?.body))).toEqual({ appCode: "lalu", externalOrderNo: "MIFA-001", + providerAmountMinor: 125050, providerCode: "mifapay", + providerCurrencyCode: "PHP", usdAmount: 10 }); expect(String(calls[3][0])).toContain("/api/v1/admin/finance/orders/coin-seller-recharges/order-1/verify"); diff --git a/finance/src/components/FinanceCoinSellerRechargeOrderList.jsx b/finance/src/components/FinanceCoinSellerRechargeOrderList.jsx index d54f93e..dd85083 100644 --- a/finance/src/components/FinanceCoinSellerRechargeOrderList.jsx +++ b/finance/src/components/FinanceCoinSellerRechargeOrderList.jsx @@ -3,6 +3,7 @@ import FactCheckOutlined from "@mui/icons-material/FactCheckOutlined"; import PaidOutlined from "@mui/icons-material/PaidOutlined"; import RefreshOutlined from "@mui/icons-material/RefreshOutlined"; import Alert from "@mui/material/Alert"; +import Autocomplete from "@mui/material/Autocomplete"; import Button from "@mui/material/Button"; import Dialog from "@mui/material/Dialog"; import DialogActions from "@mui/material/DialogActions"; @@ -14,6 +15,7 @@ import TextField from "@mui/material/TextField"; import { useState } from "react"; import { COIN_SELLER_RECHARGE_CHAINS, + COIN_SELLER_RECHARGE_PROVIDER_CURRENCIES, COIN_SELLER_RECHARGE_PROVIDERS, COIN_SELLER_RECHARGE_STATUS, DEFAULT_COIN_SELLER_RECHARGE_ORDER_FORM, @@ -78,7 +80,9 @@ export function FinanceCoinSellerRechargeOrderList({ setForm((current) => ({ ...current, chain: "", + providerAmount: "", providerCode: value, + providerCurrencyCode: "", })); setFormError(""); setReceiptVerification(null); @@ -201,7 +205,12 @@ export function FinanceCoinSellerRechargeOrderList({ - @@ -234,7 +243,10 @@ export function FinanceCoinSellerRechargeOrderList({ {item.id || "-"} {appName(item.appCode, apps)} - + - + - + {item.remark || "-"} @@ -266,7 +284,8 @@ export function FinanceCoinSellerRechargeOrderList({ primary={item.operatorName || "-"} secondary={[ item.verifiedByName && `校验:${item.verifiedByName}`, - item.grantedByName && `${isZeroCoinMakeupOrder(item) ? "补单" : "发放"}:${item.grantedByName}`, + item.grantedByName && + `${isZeroCoinMakeupOrder(item) ? "补单" : "发放"}:${item.grantedByName}`, ] .filter(Boolean) .join(" / ")} @@ -277,7 +296,8 @@ export function FinanceCoinSellerRechargeOrderList({ primary={formatTime(item.createdAtMs)} secondary={[ item.verifiedAtMs && `校验 ${formatTime(item.verifiedAtMs)}`, - item.grantedAtMs && `${isZeroCoinMakeupOrder(item) ? "补单" : "发放"} ${formatTime(item.grantedAtMs)}`, + item.grantedAtMs && + `${isZeroCoinMakeupOrder(item) ? "补单" : "发放"} ${formatTime(item.grantedAtMs)}`, ] .filter(Boolean) .join(" / ")} @@ -330,13 +350,21 @@ export function FinanceCoinSellerRechargeOrderList({ ) : null} {total > pageSize ? (
- 第 {page} 页 / 共 {total} 条 -
@@ -379,14 +407,37 @@ function CreateDialog({ const canCreate = receiptVerification?.verified === true && !disabled; return ( - + 创建币商充值 -
+ {formError ? {formError} : null} -
+
{apps.length ? ( - onChange("appCode", event.target.value)}> + onChange("appCode", event.target.value)} + > {apps.map((app) => ( {app.appName || app.appCode} @@ -394,9 +445,21 @@ function CreateDialog({ ))} ) : ( - onChange("appCode", event.target.value)} /> + onChange("appCode", event.target.value)} + /> )} - onChange("targetUserId", event.target.value)} /> + onChange("targetUserId", event.target.value)} + /> USD }} @@ -417,7 +480,14 @@ function CreateDialog({ value={form.coinAmount} onChange={(event) => onChange("coinAmount", event.target.value)} /> - onChange("providerCode", event.target.value)}> + onChange("providerCode", event.target.value)} + > {COIN_SELLER_RECHARGE_PROVIDERS.map(([value, label]) => ( {label} @@ -425,7 +495,14 @@ function CreateDialog({ ))} {form.providerCode === "usdt" ? ( - onChange("chain", event.target.value)}> + onChange("chain", event.target.value)} + > {COIN_SELLER_RECHARGE_CHAINS.map(([value, label]) => ( {label} @@ -433,9 +510,45 @@ function CreateDialog({ ))} ) : null} + {form.providerCode !== "usdt" ? ( + <> + option === value} + noOptionsText="无匹配币种" + options={providerCurrencyOptions(form.providerCode)} + renderInput={(params) => ( + + )} + value={form.providerCurrencyCode || null} + onChange={(_, value) => onChange("providerCurrencyCode", value || "")} + /> + onChange("providerAmount", event.target.value)} + /> + + ) : null}
- onChange("externalOrderNo", event.target.value)} /> -
@@ -466,6 +579,14 @@ function isZeroCoinMakeupOrder(order) { return Number(order?.coinAmount || 0) === 0; } +function providerCurrencyOptions(providerCode) { + return COIN_SELLER_RECHARGE_PROVIDER_CURRENCIES[providerCode] || []; +} + +function currencyOptionLabel(option) { + return option || ""; +} + function ReceiptVerificationBanner({ verification }) { const detail = [ verification.status && `状态 ${verification.status}`, @@ -486,7 +607,11 @@ function ReceiptVerificationBanner({ verification }) { } function StatusBadge({ status }) { - return {coinSellerRechargeStatusLabel(status)}; + return ( + + {coinSellerRechargeStatusLabel(status)} + + ); } function Stacked({ primary, secondary }) { @@ -523,7 +648,9 @@ function providerMeta(item) { return [item.providerStatus, item.providerOrderId].filter(Boolean).join(" / ") || "-"; } if (item.providerCode === "v5pay") { - return [item.providerStatus, item.providerCurrencyCode, item.providerOrderId].filter(Boolean).join(" / ") || "-"; + return ( + [item.providerStatus, item.providerCurrencyCode, item.providerOrderId].filter(Boolean).join(" / ") || "-" + ); } return "-"; } @@ -531,8 +658,12 @@ function providerMeta(item) { function walletMeta(item) { return [ item.walletAssetType, - item.walletAmountDelta === null || item.walletAmountDelta === undefined ? "" : `变动 ${formatAmount(item.walletAmountDelta)}`, - item.walletBalanceAfter === null || item.walletBalanceAfter === undefined ? "" : `余额 ${formatAmount(item.walletBalanceAfter)}`, + item.walletAmountDelta === null || item.walletAmountDelta === undefined + ? "" + : `变动 ${formatAmount(item.walletAmountDelta)}`, + item.walletBalanceAfter === null || item.walletBalanceAfter === undefined + ? "" + : `余额 ${formatAmount(item.walletBalanceAfter)}`, ] .filter(Boolean) .join(" / "); diff --git a/finance/src/components/FinanceCoinSellerRechargeOrderList.test.jsx b/finance/src/components/FinanceCoinSellerRechargeOrderList.test.jsx index 9af7750..1a4ce3a 100644 --- a/finance/src/components/FinanceCoinSellerRechargeOrderList.test.jsx +++ b/finance/src/components/FinanceCoinSellerRechargeOrderList.test.jsx @@ -9,26 +9,31 @@ afterEach(() => { test("coin seller recharge order create dialog verifies receipt before create", async () => { const onCreate = vi.fn(async () => ({ id: "order-2" })); const onVerifyReceipt = vi.fn(async () => ({ - currencyCode: "USD", - providerAmountMinor: 1000, + currencyCode: "PHP", + providerAmountMinor: 4800, providerOrderId: "V5-001", status: "paid", verified: true, })); - render(); + render( + , + ); fireEvent.click(screen.getByRole("button", { name: "创建币商充值" })); fireEvent.mouseDown(screen.getByRole("combobox", { name: "支付渠道" })); fireEvent.click(screen.getByRole("option", { name: "V5Pay" })); - expect(screen.queryByRole("textbox", { name: "三方国家码" })).not.toBeInTheDocument(); - expect(screen.queryByRole("textbox", { name: "三方币种" })).not.toBeInTheDocument(); + expect(screen.getByRole("combobox", { name: "币种" })).toBeInTheDocument(); + expect(screen.getByRole("spinbutton", { name: "币种金额" })).toBeInTheDocument(); expect(screen.queryByRole("textbox", { name: "支付类型" })).not.toBeInTheDocument(); expect(screen.queryByRole("textbox", { name: "订单日期" })).not.toBeInTheDocument(); fireEvent.change(screen.getByRole("textbox", { name: "目标用户 ID" }), { target: { value: "10001" } }); fireEvent.change(screen.getByRole("spinbutton", { name: "USD 金额" }), { target: { value: "10" } }); fireEvent.change(screen.getByRole("spinbutton", { name: "充值金币" }), { target: { value: "0" } }); + fireEvent.mouseDown(screen.getByRole("combobox", { name: "币种" })); + fireEvent.click(await screen.findByRole("option", { name: "PHP" })); + fireEvent.change(screen.getByRole("spinbutton", { name: "币种金额" }), { target: { value: "48" } }); fireEvent.change(screen.getByRole("textbox", { name: "三方订单号" }), { target: { value: "V5-001" } }); fireEvent.change(screen.getByRole("textbox", { name: "备注" }), { target: { value: "补单,不发金币" } }); expect(screen.getByRole("button", { name: "创建" })).toBeDisabled(); @@ -39,7 +44,9 @@ test("coin seller recharge order create dialog verifies receipt before create", expect(onVerifyReceipt).toHaveBeenCalledWith({ appCode: "lalu", externalOrderNo: "V5-001", + providerAmountMinor: 4800, providerCode: "v5pay", + providerCurrencyCode: "PHP", usdAmount: 10, }); fireEvent.click(screen.getByRole("button", { name: "创建" })); @@ -48,7 +55,9 @@ test("coin seller recharge order create dialog verifies receipt before create", appCode: "lalu", coinAmount: 0, externalOrderNo: "V5-001", + providerAmountMinor: 4800, providerCode: "v5pay", + providerCurrencyCode: "PHP", remark: "补单,不发金币", targetUserId: "10001", usdAmount: 10, @@ -59,7 +68,10 @@ test("coin seller recharge order create dialog verifies receipt before create", test("coin seller recharge order actions follow verify and grant status", () => { const onVerify = vi.fn(); const onGrant = vi.fn(); - vi.stubGlobal("confirm", vi.fn(() => true)); + vi.stubGlobal( + "confirm", + vi.fn(() => true), + ); render( { value !== ""), ); @@ -178,6 +186,14 @@ export function validateCoinSellerRechargeOrderPayload(payload) { if (payload.providerCode === "usdt" && !payload.chain) { return "请选择 USDT 链"; } + if (requiresThirdPartyProviderAmount(payload.providerCode)) { + if (!payload.providerCurrencyCode) { + return "请填写币种"; + } + if (!Number.isInteger(payload.providerAmountMinor) || payload.providerAmountMinor <= 0) { + return "请填写大于 0 的币种金额"; + } + } if (payload.remark && payload.remark.length > 512) { return "备注不能超过 512 字"; } @@ -642,6 +658,26 @@ function numberOrNull(value) { return Number.isFinite(nextValue) ? nextValue : null; } +function providerMoneyToMinor(value) { + const number = numberValue(value); + if (!Number.isFinite(number)) { + return Number.NaN; + } + return Math.round(number * 100); +} + +function providerAmountMinorFromForm(form) { + // 表单输入是常规金额,已构建 payload 重用时则直接沿用 minor,避免校验请求二次放大金额。 + if (stringValue(form.providerAmount) !== "") { + return providerMoneyToMinor(form.providerAmount); + } + return numberValue(form.providerAmountMinor); +} + +function requiresThirdPartyProviderAmount(providerCode) { + return ["mifapay", "v5pay"].includes(stringValue(providerCode).toLowerCase()); +} + function stringValue(value) { return String(value ?? "").trim(); } diff --git a/finance/src/format.test.js b/finance/src/format.test.js index 89b0224..7c7aee4 100644 --- a/finance/src/format.test.js +++ b/finance/src/format.test.js @@ -170,7 +170,9 @@ test("builds validates and normalizes coin seller recharge orders", () => { appCode: " lalu ", coinAmount: "100000", externalOrderNo: " MIFA-001 ", + providerAmount: "1250.5", providerCode: "mifapay", + providerCurrencyCode: " php ", remark: " 人工补单 ", targetUserId: " 10001 ", usdAmount: "10.5", @@ -180,7 +182,9 @@ test("builds validates and normalizes coin seller recharge orders", () => { appCode: "lalu", coinAmount: 100000, externalOrderNo: "MIFA-001", + providerAmountMinor: 125050, providerCode: "mifapay", + providerCurrencyCode: "PHP", remark: "人工补单", targetUserId: "10001", usdAmount: 10.5, @@ -194,16 +198,90 @@ test("builds validates and normalizes coin seller recharge orders", () => { ).toEqual({ appCode: "lalu", externalOrderNo: "MIFA-001", + providerAmountMinor: 125050, providerCode: "mifapay", + providerCurrencyCode: "PHP", usdAmount: 10.5, }); expect(validateCoinSellerRechargeOrderPayload(payload)).toBe(""); + expect(validateCoinSellerRechargeOrderPayload({ ...payload, providerCurrencyCode: "" })).toBe("请填写币种"); + expect(validateCoinSellerRechargeOrderPayload({ ...payload, providerAmountMinor: 0 })).toBe( + "请填写大于 0 的币种金额", + ); expect(validateCoinSellerRechargeOrderPayload({ ...payload, coinAmount: 0 })).toBe(""); expect(validateCoinSellerRechargeOrderPayload({ ...payload, coinAmount: -1 })).toBe("请填写不小于 0 的整数金币"); expect(validateCoinSellerRechargeOrderPayload({ ...payload, remark: "x".repeat(513) })).toBe("备注不能超过 512 字"); expect(validateCoinSellerRechargeOrderPayload({ ...payload, providerCode: "usdt", chain: "" })).toBe( "请选择 USDT 链", ); + const boundaryPayload = buildCoinSellerRechargeOrderPayload({ + ...payload, + externalOrderNo: "V5-001", + providerAmount: "0.01", + providerCode: "v5pay", + providerCurrencyCode: "try", + }); + expect(boundaryPayload).toMatchObject({ + externalOrderNo: "V5-001", + providerAmountMinor: 1, + providerCode: "v5pay", + providerCurrencyCode: "TRY", + }); + expect(validateCoinSellerRechargeOrderPayload(boundaryPayload)).toBe(""); + expect( + validateCoinSellerRechargeOrderPayload( + buildCoinSellerRechargeOrderPayload({ + ...payload, + providerAmount: "abc", + providerCode: "v5pay", + providerCurrencyCode: "TRY", + }), + ), + ).toBe("请填写大于 0 的币种金额"); + expect( + validateCoinSellerRechargeOrderPayload( + buildCoinSellerRechargeOrderPayload({ + ...payload, + providerAmount: "", + providerAmountMinor: undefined, + providerCode: "v5pay", + providerCurrencyCode: "TRY", + }), + ), + ).toBe("请填写大于 0 的币种金额"); + expect( + buildCoinSellerRechargeOrderPayload({ + ...payload, + chain: "tron", + providerAmount: "48", + providerCode: "usdt", + providerCurrencyCode: "PHP", + }), + ).toEqual({ + appCode: "lalu", + chain: "TRON", + coinAmount: 100000, + externalOrderNo: "MIFA-001", + providerCode: "usdt", + remark: "人工补单", + targetUserId: "10001", + usdAmount: 10.5, + }); + expect( + buildCoinSellerRechargeReceiptPayload({ + ...payload, + chain: "bsc", + providerAmount: "48", + providerCode: "usdt", + providerCurrencyCode: "PHP", + }), + ).toEqual({ + appCode: "lalu", + chain: "BSC", + externalOrderNo: "MIFA-001", + providerCode: "usdt", + usdAmount: 10.5, + }); const page = normalizeCoinSellerRechargeOrderPage({ items: [ diff --git a/src/app/navigation/menu.js b/src/app/navigation/menu.js index aa91db2..b2ad44b 100644 --- a/src/app/navigation/menu.js +++ b/src/app/navigation/menu.js @@ -134,6 +134,7 @@ export const fallbackNavigation = [ routeNavItem("host-agency-policy", { icon: WalletOutlined }), routeNavItem("host-salary-settlement", { icon: ReceiptLongOutlined }), routeNavItem("host-org-coin-sellers", { icon: WalletOutlined }), + routeNavItem("host-org-coin-seller-sub-applications", { icon: ReceiptLongOutlined }), routeNavItem("host-withdrawals", { icon: ReceiptLongOutlined }), ], }, diff --git a/src/app/permissions.ts b/src/app/permissions.ts index 04592ce..b6e861d 100644 --- a/src/app/permissions.ts +++ b/src/app/permissions.ts @@ -43,6 +43,8 @@ export const PERMISSIONS = { coinSellerUpdate: "coin-seller:update", coinSellerStockCredit: "coin-seller:stock-credit", coinSellerExchangeRate: "coin-seller:exchange-rate", + coinSellerSubApplicationView: "coin-seller-sub-application:view", + coinSellerSubApplicationAudit: "coin-seller-sub-application:audit", hostWithdrawalView: "host-withdrawal:view", financeView: "finance:view", financeApplicationCreate: "finance-application:create", @@ -286,6 +288,7 @@ export const MENU_CODES = { hostAgencyPolicy: "host-agency-policy", hostSalarySettlement: "host-salary-settlement", hostOrgCoinSellers: "host-org-coin-sellers", + hostOrgCoinSellerSubApplications: "host-org-coin-seller-sub-applications", hostWithdrawals: "host-withdrawals", payment: "payment", paymentBillList: "payment-bill-list", diff --git a/src/features/host-org/api.test.ts b/src/features/host-org/api.test.ts index 18ef54f..dd49640 100644 --- a/src/features/host-org/api.test.ts +++ b/src/features/host-org/api.test.ts @@ -13,6 +13,8 @@ import { disableRegion, listAgencies, listBDs, + listCoinSellerSubApplications, + listCoinSellerSubSellers, listCoinSellers, listCountries, listHosts, @@ -21,6 +23,8 @@ import { getJob, renameCountryCode, replaceRegionCountries, + approveCoinSellerSubApplication, + rejectCoinSellerSubApplication, setCoinSellerStatus, updateBDLeaderPositionAlias, updateCountry, @@ -206,6 +210,54 @@ test("host org list APIs use generated admin paths and filters", async () => { expect(JSON.parse(String(agencyDeleteInit?.body))).toMatchObject({ commandId: "agency-delete-test" }); }); +test("coin seller sub application APIs use generated admin paths", async () => { + vi.stubGlobal( + "fetch", + vi.fn( + async () => new Response(JSON.stringify({ code: 0, data: { items: [], page: 1, pageSize: 10, total: 0 } })), + ), + ); + + await listCoinSellerSubSellers("3001", { page: 1, page_size: 10 }); + await listCoinSellerSubApplications({ + keyword: "163001", + page: 2, + page_size: 10, + parent_user_id: "3001", + status: "pending", + target_user_id: "3002", + }); + await approveCoinSellerSubApplication("sub-app-1", { + commandId: "approve-sub-app-test", + reason: "ok", + }); + await rejectCoinSellerSubApplication("sub-app-2", { + commandId: "reject-sub-app-test", + reason: "bad", + }); + + const [subSellerUrl, subSellerInit] = vi.mocked(fetch).mock.calls[0]; + const [applicationUrl, applicationInit] = vi.mocked(fetch).mock.calls[1]; + const [approveUrl, approveInit] = vi.mocked(fetch).mock.calls[2]; + const [rejectUrl, rejectInit] = vi.mocked(fetch).mock.calls[3]; + + expect(String(subSellerUrl)).toContain("/api/v1/admin/coin-sellers/3001/sub-sellers?"); + expect(String(subSellerUrl)).toContain("page=1"); + expect(subSellerInit?.method).toBe("GET"); + expect(String(applicationUrl)).toContain("/api/v1/admin/coin-seller-sub-applications?"); + expect(String(applicationUrl)).toContain("keyword=163001"); + expect(String(applicationUrl)).toContain("parent_user_id=3001"); + expect(String(applicationUrl)).toContain("target_user_id=3002"); + expect(String(applicationUrl)).toContain("status=pending"); + expect(applicationInit?.method).toBe("GET"); + expect(String(approveUrl)).toContain("/api/v1/admin/coin-seller-sub-applications/sub-app-1/approve"); + expect(approveInit?.method).toBe("POST"); + expect(JSON.parse(String(approveInit?.body))).toMatchObject({ commandId: "approve-sub-app-test" }); + expect(String(rejectUrl)).toContain("/api/v1/admin/coin-seller-sub-applications/sub-app-2/reject"); + expect(rejectInit?.method).toBe("POST"); + expect(JSON.parse(String(rejectInit?.body))).toMatchObject({ commandId: "reject-sub-app-test" }); +}); + test("country and region APIs use generated admin paths", async () => { vi.stubGlobal( "fetch", diff --git a/src/features/host-org/api.ts b/src/features/host-org/api.ts index f780761..0eaa930 100644 --- a/src/features/host-org/api.ts +++ b/src/features/host-org/api.ts @@ -15,6 +15,9 @@ import type { CoinSellerDto, CoinSellerSalaryRatesDto, CoinSellerSalaryRatesPayload, + CoinSellerSubApplicationDto, + CoinSellerSubApplicationReviewPayload, + CoinSellerSubApplicationReviewResultDto, CoinSellerStockCreditDto, CoinSellerStockCreditPayload, CoinSellerStockDebitDto, @@ -241,6 +244,28 @@ export function listCoinSellers(query: PageQuery = {}): Promise> { + const endpoint = API_ENDPOINTS.listCoinSellerSubSellers; + return apiRequest>( + apiEndpointPath(API_OPERATIONS.listCoinSellerSubSellers, { user_id: userId }), + { + method: endpoint.method, + query, + }, + ); +} + +export function listCoinSellerSubApplications(query: PageQuery = {}): Promise> { + const endpoint = API_ENDPOINTS.listCoinSellerSubApplications; + return apiRequest>( + apiEndpointPath(API_OPERATIONS.listCoinSellerSubApplications), + { + method: endpoint.method, + query, + }, + ); +} + export function listHostWithdrawals(query: PageQuery = {}): Promise> { const endpoint = API_ENDPOINTS.listHostWithdrawals; return apiRequest>(apiEndpointPath(API_OPERATIONS.listHostWithdrawals), { @@ -339,6 +364,34 @@ export function setCoinSellerStatus(userId: EntityId, payload: CoinSellerStatusP ); } +export function approveCoinSellerSubApplication( + applicationId: EntityId, + payload: CoinSellerSubApplicationReviewPayload, +): Promise { + const endpoint = API_ENDPOINTS.approveCoinSellerSubApplication; + return apiRequest( + apiEndpointPath(API_OPERATIONS.approveCoinSellerSubApplication, { application_id: applicationId }), + { + body: payload, + method: endpoint.method, + }, + ); +} + +export function rejectCoinSellerSubApplication( + applicationId: EntityId, + payload: CoinSellerSubApplicationReviewPayload, +): Promise { + const endpoint = API_ENDPOINTS.rejectCoinSellerSubApplication; + return apiRequest( + apiEndpointPath(API_OPERATIONS.rejectCoinSellerSubApplication, { application_id: applicationId }), + { + body: payload, + method: endpoint.method, + }, + ); +} + export function creditCoinSellerStock( userId: EntityId, payload: CoinSellerStockCreditPayload, diff --git a/src/features/host-org/components/HostOrgStatus.jsx b/src/features/host-org/components/HostOrgStatus.jsx index deb4892..70c7071 100644 --- a/src/features/host-org/components/HostOrgStatus.jsx +++ b/src/features/host-org/components/HostOrgStatus.jsx @@ -13,10 +13,13 @@ export function HostOrgStatus({ value }) { } function getStatusTone(status) { - if (status === "active") { + if (status === "active" || status === "approved") { return "running"; } - if (status === "closed" || status === "disabled") { + if (status === "pending") { + return "warning"; + } + if (status === "closed" || status === "disabled" || status === "rejected") { return "danger"; } return "stopped"; diff --git a/src/features/host-org/constants.js b/src/features/host-org/constants.js index 5898127..4e4c3f6 100644 --- a/src/features/host-org/constants.js +++ b/src/features/host-org/constants.js @@ -1,53 +1,69 @@ export const agencyStatusFilters = [ - ["", "全部"], - ["active", "启用"], - ["closed", "已关闭"] + ["", "全部"], + ["active", "启用"], + ["closed", "已关闭"], ]; export const countryEnabledFilters = [ - ["", "全部"], - ["enabled", "启用"], - ["disabled", "停用"] + ["", "全部"], + ["enabled", "启用"], + ["disabled", "停用"], ]; export const regionStatusFilters = [ - ["", "全部"], - ["active", "启用"], - ["disabled", "停用"] + ["", "全部"], + ["active", "启用"], + ["disabled", "停用"], ]; export const bdStatusFilters = [ - ["", "全部"], - ["active", "启用"], - ["disabled", "停用"] + ["", "全部"], + ["active", "启用"], + ["disabled", "停用"], ]; export const managerStatusFilters = [ - ["", "全部"], - ["active", "启用"], - ["disabled", "停用"] + ["", "全部"], + ["active", "启用"], + ["disabled", "停用"], ]; export const hostStatusFilters = [ - ["", "全部"], - ["active", "启用"], - ["disabled", "停用"] + ["", "全部"], + ["active", "启用"], + ["disabled", "停用"], ]; export const coinSellerStatusFilters = [ - ["", "全部"], - ["active", "启用"], - ["disabled", "停用"] + ["", "全部"], + ["active", "启用"], + ["disabled", "停用"], ]; +export const coinSellerSubApplicationStatusFilters = [ + ["", "全部"], + ["pending", "待审核"], + ["approved", "已通过"], + ["rejected", "已拒绝"], +]; + +export const coinSellerSubApplicationStatusLabels = { + approved: "已通过", + pending: "待审核", + rejected: "已拒绝", +}; + export const hostSourceLabels = { - agency_application: "Agency 申请", - agency_invitation: "Agency 邀请", - admin_create_agency: "后台创建 Agency" + agency_application: "Agency 申请", + agency_invitation: "Agency 邀请", + admin_create_agency: "后台创建 Agency", }; export const statusLabels = { - active: "启用", - closed: "已关闭", - disabled: "停用" + active: "启用", + approved: "已通过", + closed: "已关闭", + disabled: "停用", + pending: "待审核", + rejected: "已拒绝", }; diff --git a/src/features/host-org/hooks/useHostCoinSellersPage.js b/src/features/host-org/hooks/useHostCoinSellersPage.js index 23e1039..d7ecbca 100644 --- a/src/features/host-org/hooks/useHostCoinSellersPage.js +++ b/src/features/host-org/hooks/useHostCoinSellersPage.js @@ -10,6 +10,7 @@ import { debitCoinSellerStock, getCoinSellerSalaryRates, listCoinSellers, + listCoinSellerSubSellers, replaceCoinSellerSalaryRates, setCoinSellerStatus, } from "@/features/host-org/api"; @@ -79,6 +80,9 @@ export function useHostCoinSellersPage() { const [loadingRates, setLoadingRates] = useState(false); const [selectedSeller, setSelectedSeller] = useState(null); const [loadingAction, setLoadingAction] = useState(""); + const [loadingSubSellers, setLoadingSubSellers] = useState(false); + const [subSellerData, setSubSellerData] = useState(emptyData); + const [subSellerPage, setSubSellerPageState] = useState(1); const [contactSavingIds, setContactSavingIds] = useState({}); const [sellerRowPatches, setSellerRowPatches] = useState({}); const filters = useMemo( @@ -193,6 +197,15 @@ export function useHostCoinSellersPage() { setActiveAction("ledger"); }; + const openSubSellerList = async (seller) => { + if (!seller?.userId || !abilities.canView) { + return; + } + setSelectedSeller(seller); + setActiveAction("sub-sellers"); + await loadSubSellers(seller.userId, 1); + }; + const openRateSettings = async () => { if (!abilities.canExchangeRate) { return; @@ -212,6 +225,31 @@ export function useHostCoinSellersPage() { setSelectedSeller(null); }; + const loadSubSellers = async (sellerUserId = selectedSeller?.userId, nextPage = subSellerPage) => { + if (!sellerUserId) { + setSubSellerData(emptyData); + return; + } + setLoadingSubSellers(true); + try { + const nextData = await listCoinSellerSubSellers(sellerUserId, { + page: nextPage, + page_size: pageSize, + }); + setSubSellerData(nextData || emptyData); + setSubSellerPageState(nextPage); + } catch (err) { + setSubSellerData(emptyData); + showToast(err.message || "加载子币商列表失败", "error"); + } finally { + setLoadingSubSellers(false); + } + }; + + const setSubSellerPage = async (nextPage) => { + await loadSubSellers(selectedSeller?.userId, nextPage); + }; + const changeRateRegionId = async (value) => { setRateRegionId(value); if (value) { @@ -453,6 +491,7 @@ export function useHostCoinSellersPage() { error, loading, loadingAction, + loadingSubSellers, loadingRates, loadingRegions, openRateSettings, @@ -461,6 +500,7 @@ export function useHostCoinSellersPage() { openSellerLedger, openStockCredit, openStockDebit, + openSubSellerList, page, regionId, regionOptions, @@ -478,9 +518,12 @@ export function useHostCoinSellersPage() { setPage, setStockForm, setStockDebitForm, + setSubSellerPage, status, stockDebitForm, stockForm, + subSellerData, + subSellerPage, sortBy, sortDirection, submitRateSettings, diff --git a/src/features/host-org/hooks/useHostSubCoinSellerApplicationsPage.js b/src/features/host-org/hooks/useHostSubCoinSellerApplicationsPage.js new file mode 100644 index 0000000..7ade336 --- /dev/null +++ b/src/features/host-org/hooks/useHostSubCoinSellerApplicationsPage.js @@ -0,0 +1,152 @@ +import { useMemo, useState } from "react"; +import { parseForm } from "@/shared/forms/validation"; +import { usePaginatedQuery } from "@/shared/hooks/usePaginatedQuery.js"; +import { useToast } from "@/shared/ui/ToastProvider.jsx"; +import { + approveCoinSellerSubApplication, + listCoinSellerSubApplications, + rejectCoinSellerSubApplication, +} from "@/features/host-org/api"; +import { useCoinSellerSubApplicationAbilities } from "@/features/host-org/permissions.js"; +import { coinSellerSubApplicationReviewSchema } from "@/features/host-org/schema"; + +const pageSize = 50; +const emptyData = { items: [], page: 1, pageSize, total: 0 }; + +const emptyReviewForm = (decision = "approved") => ({ + commandId: makeCommandId(`coin-seller-sub-${decision}`), + reason: "", +}); + +export function useHostSubCoinSellerApplicationsPage() { + const abilities = useCoinSellerSubApplicationAbilities(); + const { showToast } = useToast(); + const [keyword, setKeyword] = useState(""); + const [status, setStatus] = useState("pending"); + const [parentUserId, setParentUserId] = useState(""); + const [targetUserId, setTargetUserId] = useState(""); + const [page, setPage] = useState(1); + const [activeAction, setActiveAction] = useState(""); + const [selectedApplication, setSelectedApplication] = useState(null); + const [reviewDecision, setReviewDecision] = useState("approved"); + const [reviewForm, setReviewForm] = useState(emptyReviewForm); + const [loadingAction, setLoadingAction] = useState(""); + const filters = useMemo( + () => ({ + keyword, + parent_user_id: parentUserId, + status, + target_user_id: targetUserId, + }), + [keyword, parentUserId, status, targetUserId], + ); + const { + data = emptyData, + error, + loading, + reload, + } = usePaginatedQuery({ + errorMessage: "加载子币商申请列表失败", + fetcher: listCoinSellerSubApplications, + filters, + page, + pageSize, + queryKey: ["host-org", "coin-seller-sub-applications", filters, page], + }); + + const changeKeyword = (value) => { + setKeyword(value); + setPage(1); + }; + + const changeStatus = (value) => { + setStatus(value); + setPage(1); + }; + + const changeParentUserId = (value) => { + setParentUserId(String(value || "").trim()); + setPage(1); + }; + + const changeTargetUserId = (value) => { + setTargetUserId(String(value || "").trim()); + setPage(1); + }; + + const resetFilters = () => { + setKeyword(""); + setStatus(""); + setParentUserId(""); + setTargetUserId(""); + setPage(1); + }; + + const openReview = (application, decision) => { + if (!application?.applicationId || !abilities.canAudit || application.status !== "pending") { + return; + } + // 审核 commandId 与列表刷新分离,避免弹窗重复提交时把另一次审核误认为同一请求。 + setSelectedApplication(application); + setReviewDecision(decision); + setReviewForm(emptyReviewForm(decision)); + setActiveAction("review"); + }; + + const closeAction = () => { + setActiveAction(""); + setSelectedApplication(null); + }; + + const submitReview = async (event) => { + event.preventDefault(); + if (!selectedApplication?.applicationId || !abilities.canAudit) { + return; + } + const payload = parseForm(coinSellerSubApplicationReviewSchema, reviewForm); + const submitter = + reviewDecision === "approved" ? approveCoinSellerSubApplication : rejectCoinSellerSubApplication; + setLoadingAction(`review-${selectedApplication.applicationId}`); + try { + await submitter(selectedApplication.applicationId, payload); + showToast(reviewDecision === "approved" ? "子币商申请已通过" : "子币商申请已拒绝", "success"); + closeAction(); + await reload(); + } catch (err) { + showToast(err.message || "审核子币商申请失败", "error"); + } finally { + setLoadingAction(""); + } + }; + + return { + abilities, + activeAction, + changeKeyword, + changeParentUserId, + changeStatus, + changeTargetUserId, + closeAction, + data, + error, + keyword, + loading, + loadingAction, + openReview, + page, + parentUserId, + resetFilters, + reviewDecision, + reviewForm, + selectedApplication, + setPage, + setReviewForm, + status, + submitReview, + targetUserId, + }; +} + +function makeCommandId(prefix) { + return `${prefix}-${Date.now()}`; +} diff --git a/src/features/host-org/pages/HostCoinSellersPage.jsx b/src/features/host-org/pages/HostCoinSellersPage.jsx index 643f3ed..9879fcd 100644 --- a/src/features/host-org/pages/HostCoinSellersPage.jsx +++ b/src/features/host-org/pages/HostCoinSellersPage.jsx @@ -78,6 +78,39 @@ const baseColumns = [ }, ]; +const subSellerColumns = [ + { + key: "seller", + label: "子币商", + render: (item) => , + width: "minmax(220px, 1.3fr)", + }, + { + key: "regionId", + label: "区域", + render: (item, _index, context) => regionName(item, context?.regionOptions), + width: "minmax(140px, 0.8fr)", + }, + { + key: "status", + label: "状态", + render: (item) => item.status || "-", + width: "minmax(90px, 0.5fr)", + }, + { + key: "merchantBalance", + label: "币商余额", + render: (item) => formatNumber(item.merchantBalance), + width: "minmax(120px, 0.8fr)", + }, + { + key: "updatedAtMs", + label: "更新时间", + render: (item) => formatMillis(item.updatedAtMs), + width: "minmax(170px, 1fr)", + }, +]; + export function HostCoinSellersPage() { const page = useHostCoinSellersPage(); const items = page.data.items || []; @@ -99,6 +132,12 @@ export function HostCoinSellersPage() { render: (item) => , width: "minmax(120px, 0.7fr)", }, + { + key: "subCoinSellerCount", + label: "子币商数量", + render: (item) => , + width: "minmax(120px, 0.7fr)", + }, ...baseColumns.slice(2), page.abilities.canUpdate || page.abilities.canStockCredit || page.abilities.canLedger ? { @@ -220,9 +259,7 @@ export function HostCoinSellersPage() { checked={page.createForm.canManageSubCoinSellers !== false} disabled={createDisabled} label="子币商权限" - onChange={(checked) => - page.setCreateForm({ ...page.createForm, canManageSubCoinSellers: checked }) - } + onChange={(checked) => page.setCreateForm({ ...page.createForm, canManageSubCoinSellers: checked })} /> @@ -380,7 +417,9 @@ export function HostCoinSellersPage() { required minRows={2} value={stockDebitForm.reason} - onChange={(event) => page.setStockDebitForm?.({ ...stockDebitForm, reason: event.target.value })} + onChange={(event) => + page.setStockDebitForm?.({ ...stockDebitForm, reason: event.target.value }) + } /> @@ -401,6 +440,35 @@ export function HostCoinSellersPage() { ) : null} + + + 0 + ? { + page: page.subSellerPage, + pageSize: page.subSellerData.pageSize || 50, + total: page.subSellerData.total, + onPageChange: page.setSubSellerPage, + } + : undefined + } + rowKey={(item) => item.userId} + /> + + + @@ -509,9 +577,7 @@ function SubCoinSellerPermissionSwitch({ item, page }) { page.toggleSubCoinSellerPermission(item, event.target.checked)} @@ -519,6 +585,20 @@ function SubCoinSellerPermissionSwitch({ item, page }) { ); } +function SubCoinSellerCountButton({ item, page }) { + const count = Number(item.subCoinSellerCount || 0); + return ( + + ); +} + function SellerContact({ item, page }) { const contact = String(item.contact || "").trim(); return ( diff --git a/src/features/host-org/pages/HostCoinSellersPage.test.jsx b/src/features/host-org/pages/HostCoinSellersPage.test.jsx index 34b636b..51573eb 100644 --- a/src/features/host-org/pages/HostCoinSellersPage.test.jsx +++ b/src/features/host-org/pages/HostCoinSellersPage.test.jsx @@ -6,6 +6,7 @@ import { useHostCoinSellersPage } from "@/features/host-org/hooks/useHostCoinSel const mocks = vi.hoisted(() => ({ ledgerTable: vi.fn(), openSellerLedger: vi.fn(), + openSubSellerList: vi.fn(), toggleSubCoinSellerPermission: vi.fn(), })); @@ -43,9 +44,25 @@ test("coin seller table shows cumulative USDT and hides creator id column", () = expect(screen.queryByText("创建人 ID")).not.toBeInTheDocument(); expect(screen.getByText("累充USDT")).toBeInTheDocument(); expect(screen.getByText("子币商权限")).toBeInTheDocument(); + expect(screen.getByText("子币商数量")).toBeInTheDocument(); expect(screen.getByText("12.5")).toBeInTheDocument(); }); +test("coin seller sub seller count opens direct child seller drawer", () => { + const seller = sellerFixture({ subCoinSellerCount: 2 }); + vi.mocked(useHostCoinSellersPage).mockReturnValue( + pageFixture({ + data: { items: [seller], page: 1, pageSize: 50, total: 1 }, + }), + ); + + render(); + + fireEvent.click(screen.getByRole("button", { name: "2" })); + + expect(mocks.openSubSellerList).toHaveBeenCalledWith(seller); +}); + test("coin seller sub permission switch toggles through the page hook", () => { const seller = sellerFixture(); vi.mocked(useHostCoinSellersPage).mockReturnValue( @@ -104,7 +121,34 @@ test("coin seller ledger drawer passes locked seller id to shared table", () => render(); expect(screen.getByTestId("coin-seller-ledger-table")).toHaveTextContent("3001"); - expect(mocks.ledgerTable).toHaveBeenCalledWith(expect.objectContaining({ lockedSeller: seller, sellerUserId: "3001" })); + expect(mocks.ledgerTable).toHaveBeenCalledWith( + expect.objectContaining({ lockedSeller: seller, sellerUserId: "3001" }), + ); +}); + +test("coin seller sub seller drawer renders approved direct children", () => { + const seller = sellerFixture({ subCoinSellerCount: 1 }); + const child = sellerFixture({ + displayUserId: "168933", + merchantBalance: 1200, + subCoinSellerCount: 0, + userId: "3002", + username: "Child seller", + }); + vi.mocked(useHostCoinSellersPage).mockReturnValue( + pageFixture({ + activeAction: "sub-sellers", + data: { items: [seller], page: 1, pageSize: 50, total: 1 }, + selectedSeller: seller, + subSellerData: { items: [child], page: 1, pageSize: 50, total: 1 }, + }), + ); + + render(); + + expect(screen.getByText("子币商列表 - Flower92 / 164425")).toBeInTheDocument(); + expect(screen.getByText("Child seller")).toBeInTheDocument(); + expect(screen.getByText("168933")).toBeInTheDocument(); }); test("coin seller create form includes sub permission switch", () => { @@ -189,6 +233,7 @@ function pageFixture(patch = {}) { openRateSettings: vi.fn(), openSellerLedger: mocks.openSellerLedger, openStockCredit: vi.fn(), + openSubSellerList: mocks.openSubSellerList, page: 1, query: "", rateRegionId: "", @@ -203,8 +248,11 @@ function pageFixture(patch = {}) { setCreateForm: vi.fn(), setEditForm: vi.fn(), setPage: vi.fn(), + setSubSellerPage: vi.fn(), setStockForm: vi.fn(), status: "", + subSellerData: { items: [], page: 1, pageSize: 50, total: 0 }, + subSellerPage: 1, stockDebitForm: { coinAmount: "", reason: "", rechargeAmount: "" }, stockForm: { coinAmount: "", reason: "", rechargeAmount: "", type: "usdt_purchase" }, sortBy: "", @@ -220,7 +268,7 @@ function pageFixture(patch = {}) { }; } -function sellerFixture() { +function sellerFixture(patch = {}) { return { avatar: "", canManageSubCoinSellers: true, @@ -230,9 +278,11 @@ function sellerFixture() { merchantBalance: 9400000, regionId: 1, status: "active", + subCoinSellerCount: 2, totalRechargeUsdtMicro: 12500000, updatedAtMs: 1760000000000, userId: "3001", username: "Flower92", + ...patch, }; } diff --git a/src/features/host-org/pages/HostSubCoinSellerApplicationsPage.jsx b/src/features/host-org/pages/HostSubCoinSellerApplicationsPage.jsx new file mode 100644 index 0000000..fb10091 --- /dev/null +++ b/src/features/host-org/pages/HostSubCoinSellerApplicationsPage.jsx @@ -0,0 +1,205 @@ +import CheckCircleOutlineOutlined from "@mui/icons-material/CheckCircleOutlineOutlined"; +import HighlightOffOutlined from "@mui/icons-material/HighlightOffOutlined"; +import MenuItem from "@mui/material/MenuItem"; +import TextField from "@mui/material/TextField"; +import { AdminActionIconButton, AdminRowActions } from "@/shared/ui/AdminListLayout.jsx"; +import { AdminUserIdentity } from "@/shared/ui/AdminUserIdentity.jsx"; +import { Button } from "@/shared/ui/Button.jsx"; +import { DataState } from "@/shared/ui/DataState.jsx"; +import { formatMillis } from "@/shared/utils/time.js"; +import { + coinSellerSubApplicationStatusFilters, + coinSellerSubApplicationStatusLabels, +} from "@/features/host-org/constants.js"; +import { HostOrgActionModal } from "@/features/host-org/components/HostOrgActionModal.jsx"; +import { HostOrgStatus } from "@/features/host-org/components/HostOrgStatus.jsx"; +import { HostOrgTable } from "@/features/host-org/components/HostOrgTable.jsx"; +import { useHostSubCoinSellerApplicationsPage } from "@/features/host-org/hooks/useHostSubCoinSellerApplicationsPage.js"; +import styles from "@/features/host-org/host-org.module.css"; + +const columns = [ + { + key: "parent", + label: "父币商", + render: (item) => , + width: "minmax(220px, 1.2fr)", + }, + { + key: "target", + label: "申请子币商", + render: (item) => , + width: "minmax(220px, 1.2fr)", + }, + { + key: "status", + label: "状态", + render: (item) => , + width: "minmax(120px, 0.6fr)", + }, + { + key: "createdAtMs", + label: "申请时间", + render: (item) => formatMillis(item.createdAtMs), + width: "minmax(170px, 0.9fr)", + }, + { + key: "reviewedAtMs", + label: "审核时间", + render: (item) => (Number(item.reviewedAtMs || 0) > 0 ? formatMillis(item.reviewedAtMs) : "-"), + width: "minmax(170px, 0.9fr)", + }, + { + key: "reviewedByAdminId", + label: "审核人", + render: (item) => item.reviewedByAdminId || "-", + width: "minmax(120px, 0.6fr)", + }, + { + key: "reviewReason", + label: "审核备注", + render: (item) => item.reviewReason || "-", + width: "minmax(180px, 1fr)", + }, + { + key: "actions", + label: "操作", + render: (item, _index, context) => , + width: "minmax(120px, 0.7fr)", + }, +]; + +export function HostSubCoinSellerApplicationsPage() { + const page = useHostSubCoinSellerApplicationsPage(); + const items = page.data.items || []; + const total = page.data.total || 0; + const reviewTitle = page.reviewDecision === "approved" ? "通过子币商申请" : "拒绝子币商申请"; + + return ( +
+
+
+
+ page.changeKeyword(event.target.value)} + /> + page.changeStatus(event.target.value)} + > + {coinSellerSubApplicationStatusFilters.map(([value, label]) => ( + + {label} + + ))} + + page.changeParentUserId(event.target.value)} + /> + page.changeTargetUserId(event.target.value)} + /> + +
+
+ + +
+ 0 + ? { + page: page.page, + pageSize: page.data.pageSize || 50, + total, + onPageChange: page.setPage, + } + : undefined + } + rowKey={(item) => item.applicationId} + /> +
+
+
+ + + + + page.setReviewForm({ ...page.reviewForm, reason: event.target.value })} + /> + +
+ ); +} + +function ApplicationUserIdentity({ user }) { + return ( + + ); +} + +function ApplicationActions({ item, page }) { + if (!page?.abilities.canAudit || item.status !== "pending") { + return -; + } + const loading = page.loadingAction === `review-${item.applicationId}`; + return ( + + page.openReview(item, "approved")} + > + + + page.openReview(item, "rejected")}> + + + + ); +} + +function statusText(status) { + return coinSellerSubApplicationStatusLabels[status] || status || "-"; +} diff --git a/src/features/host-org/pages/HostSubCoinSellerApplicationsPage.test.jsx b/src/features/host-org/pages/HostSubCoinSellerApplicationsPage.test.jsx new file mode 100644 index 0000000..16df130 --- /dev/null +++ b/src/features/host-org/pages/HostSubCoinSellerApplicationsPage.test.jsx @@ -0,0 +1,110 @@ +import { fireEvent, render, screen } from "@testing-library/react"; +import { afterEach, expect, test, vi } from "vitest"; +import { HostSubCoinSellerApplicationsPage } from "./HostSubCoinSellerApplicationsPage.jsx"; +import { useHostSubCoinSellerApplicationsPage } from "@/features/host-org/hooks/useHostSubCoinSellerApplicationsPage.js"; + +const mocks = vi.hoisted(() => ({ + openReview: vi.fn(), + resetFilters: vi.fn(), +})); + +vi.mock("@/features/host-org/hooks/useHostSubCoinSellerApplicationsPage.js", () => ({ + useHostSubCoinSellerApplicationsPage: vi.fn(), +})); + +afterEach(() => { + vi.clearAllMocks(); +}); + +test("sub coin seller application page renders pending applications with audit actions", () => { + const application = applicationFixture(); + vi.mocked(useHostSubCoinSellerApplicationsPage).mockReturnValue(pageFixture({ data: pageData([application]) })); + + render(); + + expect(screen.getByText("父币商")).toBeInTheDocument(); + expect(screen.getByText("申请子币商")).toBeInTheDocument(); + expect(screen.getByText("Parent seller")).toBeInTheDocument(); + expect(screen.getByText("Target user")).toBeInTheDocument(); + + fireEvent.click(screen.getAllByLabelText("通过").find((node) => node.tagName.toLowerCase() === "button")); + fireEvent.click(screen.getAllByLabelText("拒绝").find((node) => node.tagName.toLowerCase() === "button")); + + expect(mocks.openReview).toHaveBeenCalledWith(application, "approved"); + expect(mocks.openReview).toHaveBeenCalledWith(application, "rejected"); +}); + +test("sub coin seller application page hides audit actions for reviewed rows", () => { + vi.mocked(useHostSubCoinSellerApplicationsPage).mockReturnValue( + pageFixture({ data: pageData([applicationFixture({ status: "approved" })]) }), + ); + + render(); + + expect(screen.queryByLabelText("通过")).not.toBeInTheDocument(); + expect(screen.queryByLabelText("拒绝")).not.toBeInTheDocument(); +}); + +function pageFixture(patch = {}) { + return { + abilities: { canAudit: true, canView: true }, + activeAction: "", + changeKeyword: vi.fn(), + changeParentUserId: vi.fn(), + changeStatus: vi.fn(), + changeTargetUserId: vi.fn(), + closeAction: vi.fn(), + data: pageData([applicationFixture()]), + error: null, + keyword: "", + loading: false, + loadingAction: "", + openReview: mocks.openReview, + page: 1, + parentUserId: "", + resetFilters: mocks.resetFilters, + reviewDecision: "approved", + reviewForm: { commandId: "coin-seller-sub-approved-test", reason: "" }, + selectedApplication: null, + setPage: vi.fn(), + setReviewForm: vi.fn(), + status: "pending", + submitReview: vi.fn((event) => event.preventDefault()), + targetUserId: "", + ...patch, + }; +} + +function pageData(items) { + return { items, page: 1, pageSize: 50, total: items.length }; +} + +function applicationFixture(patch = {}) { + return { + applicationId: "sub-app-1", + createdAtMs: 1760000000000, + parent: { + avatar: "", + displayUserId: "163001", + regionName: "中东区", + userId: "3001", + username: "Parent seller", + }, + parentUserId: "3001", + relationId: "", + reviewReason: "", + reviewedAtMs: 0, + reviewedByAdminId: "", + status: "pending", + target: { + avatar: "", + displayUserId: "168933", + regionName: "中东区", + userId: "3002", + username: "Target user", + }, + targetUserId: "3002", + updatedAtMs: 1760000000000, + ...patch, + }; +} diff --git a/src/features/host-org/permissions.js b/src/features/host-org/permissions.js index c3efd71..71668a6 100644 --- a/src/features/host-org/permissions.js +++ b/src/features/host-org/permissions.js @@ -68,6 +68,15 @@ export function useCoinSellerAbilities() { }; } +export function useCoinSellerSubApplicationAbilities() { + const { can } = useAuth(); + + return { + canAudit: can(PERMISSIONS.coinSellerSubApplicationAudit), + canView: can(PERMISSIONS.coinSellerSubApplicationView), + }; +} + export function useHostWithdrawalAbilities() { const { can } = useAuth(); diff --git a/src/features/host-org/routes.js b/src/features/host-org/routes.js index 30e4a1c..da219bc 100644 --- a/src/features/host-org/routes.js +++ b/src/features/host-org/routes.js @@ -65,6 +65,17 @@ export const hostOrgRoutes = [ path: "/host/coin-sellers", permission: PERMISSIONS.coinSellerView, }, + { + label: "Sub Coin Seller 申请列表", + loader: () => + import("./pages/HostSubCoinSellerApplicationsPage.jsx").then( + (module) => module.HostSubCoinSellerApplicationsPage, + ), + menuCode: MENU_CODES.hostOrgCoinSellerSubApplications, + pageKey: "host-org-coin-seller-sub-applications", + path: "/host/coin-seller-sub-applications", + permission: PERMISSIONS.coinSellerSubApplicationView, + }, { label: "主播提现", loader: () => import("./pages/HostWithdrawalsPage.jsx").then((module) => module.HostWithdrawalsPage), diff --git a/src/features/host-org/schema.test.ts b/src/features/host-org/schema.test.ts index bf3d8e5..279c900 100644 --- a/src/features/host-org/schema.test.ts +++ b/src/features/host-org/schema.test.ts @@ -3,6 +3,7 @@ import { agencyCloseSchema, agencyJoinEnabledSchema, coinSellerStatusSchema, + coinSellerSubApplicationReviewSchema, createCoinSellerSchema, createManagerSchema, countryRenameCodeSchema, @@ -56,6 +57,19 @@ test("coin seller schemas preserve sub seller permission defaults and explicit f } }); +test("coin seller sub application review schema keeps command id and reason", () => { + const result = coinSellerSubApplicationReviewSchema.safeParse({ + commandId: "coin-seller-sub-application-review-test", + reason: "same region and profile is active", + }); + + expect(result.success).toBe(true); + if (result.success) { + expect(result.data.commandId).toBe("coin-seller-sub-application-review-test"); + expect(result.data.reason).toBe("same region and profile is active"); + } +}); + test("agency action schemas preserve large agency ids as strings", () => { const agencyId = "321170072154411009"; const closeResult = agencyCloseSchema.safeParse({ diff --git a/src/features/host-org/schema.ts b/src/features/host-org/schema.ts index 47fd81c..0b587d0 100644 --- a/src/features/host-org/schema.ts +++ b/src/features/host-org/schema.ts @@ -130,6 +130,8 @@ export const coinSellerStatusSchema = commandContactSchema.extend({ targetUserId: entityIdSchema, }); +export const coinSellerSubApplicationReviewSchema = commandBaseSchema; + export const coinSellerStockCreditSchema = z .object({ coinAmount: z.coerce.number().int().positive("请输入充值金币"), @@ -219,6 +221,7 @@ export type CreateBDForm = z.infer; export type BDStatusForm = z.infer; export type CreateCoinSellerForm = z.infer; export type CoinSellerStatusForm = z.infer; +export type CoinSellerSubApplicationReviewForm = z.infer; export type CoinSellerStockCreditForm = z.infer; export type CoinSellerStockDebitForm = z.infer; export type CreateAgencyForm = z.infer; diff --git a/src/shared/api/generated/endpoints.ts b/src/shared/api/generated/endpoints.ts index 164996d..9c1279a 100644 --- a/src/shared/api/generated/endpoints.ts +++ b/src/shared/api/generated/endpoints.ts @@ -5,2775 +5,2807 @@ import type { PermissionCode } from "@/app/permissions"; export type ApiHttpMethod = "DELETE" | "GET" | "PATCH" | "POST" | "PUT"; export interface ApiEndpoint { - method: ApiHttpMethod; - operationId: string; - path: string; - permission?: PermissionCode; - permissions?: PermissionCode[]; + method: ApiHttpMethod; + operationId: string; + path: string; + permission?: PermissionCode; + permissions?: PermissionCode[]; } export const API_OPERATIONS = { - adjustDicePool: "adjustDicePool", - adminAddAgencyHost: "adminAddAgencyHost", - appBanUser: "appBanUser", - appGetUser: "appGetUser", - appListBannedUsers: "appListBannedUsers", - appListLoginLogs: "appListLoginLogs", - appListUserLoginLogs: "appListUserLoginLogs", - appListUsers: "appListUsers", - approveFinanceApplication: "approveFinanceApplication", - approveFinanceWithdrawalApplication: "approveFinanceWithdrawalApplication", - appSetPassword: "appSetPassword", - appUnbanUser: "appUnbanUser", - appUpdateUser: "appUpdateUser", - batchCreateGifts: "batchCreateGifts", - batchDeleteResources: "batchDeleteResources", - batchUpdateUserStatus: "batchUpdateUserStatus", - cancelJob: "cancelJob", - cancelRoomPin: "cancelRoomPin", - changePassword: "changePassword", - closeAgency: "closeAgency", - createAchievementDefinition: "createAchievementDefinition", - createAgency: "createAgency", - createAppVersion: "createAppVersion", - createBanner: "createBanner", - createBD: "createBD", - createBDLeader: "createBDLeader", - createCatalog: "createCatalog", - createCoinAdjustment: "createCoinAdjustment", - createCoinSeller: "createCoinSeller", - createCountry: "createCountry", - createEmojiPack: "createEmojiPack", - createExploreTab: "createExploreTab", - createFinanceApplication: "createFinanceApplication", - createFinanceCoinSellerRechargeOrder: "createFinanceCoinSellerRechargeOrder", - createFullServerNoticeFanout: "createFullServerNoticeFanout", - createGift: "createGift", - createH5Link: "createH5Link", - createHostAgencyPolicy: "createHostAgencyPolicy", - createManager: "createManager", - createMenu: "createMenu", - createPermission: "createPermission", - createPlatform: "createPlatform", - createPolicyInstance: "createPolicyInstance", - createPopup: "createPopup", - createPrettyIdPool: "createPrettyIdPool", - createRechargeProduct: "createRechargeProduct", - createRegion: "createRegion", - createResource: "createResource", - createResourceGroup: "createResourceGroup", - createRobotRoom: "createRobotRoom", - createRole: "createRole", - createRoomPin: "createRoomPin", - createSplashScreen: "createSplashScreen", - createTaskDefinition: "createTaskDefinition", - createTeam: "createTeam", - createTeamSalaryPolicy: "createTeamSalaryPolicy", - createTemporaryPaymentLink: "createTemporaryPaymentLink", - createTier: "createTier", - createUser: "createUser", - createWeeklyStarCycle: "createWeeklyStarCycle", - creditCoinSellerStock: "creditCoinSellerStock", - dashboardOverview: "dashboardOverview", - debitCoinSellerStock: "debitCoinSellerStock", - deleteAchievementDefinition: "deleteAchievementDefinition", - deleteAgency: "deleteAgency", - deleteAppVersion: "deleteAppVersion", - deleteBanner: "deleteBanner", - deleteBDLeader: "deleteBDLeader", - deleteCatalog: "deleteCatalog", - deleteCountry: "deleteCountry", - deleteDiceRobot: "deleteDiceRobot", - deleteExploreTab: "deleteExploreTab", - deleteGift: "deleteGift", - deleteH5Link: "deleteH5Link", - deleteHostAgencyPolicy: "deleteHostAgencyPolicy", - deleteMenu: "deleteMenu", - deletePermission: "deletePermission", - deletePopup: "deletePopup", - deleteRechargeProduct: "deleteRechargeProduct", - deleteResource: "deleteResource", - deleteRole: "deleteRole", - deleteRoom: "deleteRoom", - deleteSplashScreen: "deleteSplashScreen", - deleteTeamSalaryPolicy: "deleteTeamSalaryPolicy", - disableCountry: "disableCountry", - disableGift: "disableGift", - disableRegion: "disableRegion", - disableResource: "disableResource", - disableResourceGroup: "disableResourceGroup", - disableResourceShopItem: "disableResourceShopItem", - enableCountry: "enableCountry", - enableGift: "enableGift", - enableRegion: "enableRegion", - enableResource: "enableResource", - enableResourceGroup: "enableResourceGroup", - enableResourceShopItem: "enableResourceShopItem", - expireRoomRpsChallenge: "expireRoomRpsChallenge", - exportCoinSellerLedger: "exportCoinSellerLedger", - exportLoginLogs: "exportLoginLogs", - exportOperationLogs: "exportOperationLogs", - exportRechargeBills: "exportRechargeBills", - exportUsers: "exportUsers", - generateDiceRobots: "generateDiceRobots", - generatePrettyIds: "generatePrettyIds", - getCoinSellerSalaryRates: "getCoinSellerSalaryRates", - getCountry: "getCountry", - getCPConfig: "getCPConfig", - getCPWeeklyRankConfig: "getCPWeeklyRankConfig", - getCumulativeRechargeRewardConfig: "getCumulativeRechargeRewardConfig", - getFinanceScope: "getFinanceScope", - getFirstRechargeRewardConfig: "getFirstRechargeRewardConfig", - getHumanRoomRobotConfig: "getHumanRoomRobotConfig", - getInviteActivityRewardConfig: "getInviteActivityRewardConfig", - getJob: "getJob", - getLuckyGiftConfig: "getLuckyGiftConfig", - getLuckyGiftDrawSummary: "getLuckyGiftDrawSummary", - getRechargeBillOverview: "getRechargeBillOverview", - getRechargeBillSummary: "getRechargeBillSummary", - getRedPacket: "getRedPacket", - getRedPacketConfig: "getRedPacketConfig", - getRegion: "getRegion", - getRegistrationRewardConfig: "getRegistrationRewardConfig", - getResource: "getResource", - getResourceGroup: "getResourceGroup", - getResourceIdentityAutoGrantConfig: "getResourceIdentityAutoGrantConfig", - getRiskConfig: "getRiskConfig", - getRoleDataScopes: "getRoleDataScopes", - getRoomConfig: "getRoomConfig", - getRoomRocketConfig: "getRoomRocketConfig", - getRoomRpsChallenge: "getRoomRpsChallenge", - getRoomRpsConfig: "getRoomRpsConfig", - getRoomTurnoverRewardConfig: "getRoomTurnoverRewardConfig", - getRoomWhitelistConfig: "getRoomWhitelistConfig", - getSevenDayCheckInConfig: "getSevenDayCheckInConfig", - getSocialBiFunnel: "getSocialBiFunnel", - getSocialBiKpi: "getSocialBiKpi", - getSocialBiMaster: "getSocialBiMaster", - getSocialBiOverview: "getSocialBiOverview", - getSocialBiRequirements: "getSocialBiRequirements", - getTemporaryPaymentLink: "getTemporaryPaymentLink", - getUser: "getUser", - getWeeklyStarCycle: "getWeeklyStarCycle", - getWheelConfig: "getWheelConfig", - getWheelDrawSummary: "getWheelDrawSummary", - grantFinanceCoinSellerRechargeOrder: "grantFinanceCoinSellerRechargeOrder", - grantPrettyId: "grantPrettyId", - grantResource: "grantResource", - grantResourceGroup: "grantResourceGroup", - listAchievementDefinitions: "listAchievementDefinitions", - listAgencies: "listAgencies", - listApps: "listApps", - listAppVersions: "listAppVersions", - listAvailableRoomRobots: "listAvailableRoomRobots", - listBanners: "listBanners", - listBDLeaders: "listBDLeaders", - listBDs: "listBDs", - listCatalog: "listCatalog", - listCoinAdjustments: "listCoinAdjustments", - listCoinLedger: "listCoinLedger", - listCoinSellerLedger: "listCoinSellerLedger", - listCoinSellers: "listCoinSellers", - listCountries: "listCountries", - listCPApplications: "listCPApplications", - listCPRelationships: "listCPRelationships", - listCPWeeklyRankSettlements: "listCPWeeklyRankSettlements", - listCumulativeRechargeRewardGrants: "listCumulativeRechargeRewardGrants", - listDiceRobots: "listDiceRobots", - listEmojiPackCategories: "listEmojiPackCategories", - listEmojiPacks: "listEmojiPacks", - listExploreTabs: "listExploreTabs", - listFinanceApplications: "listFinanceApplications", - listFinanceCoinSellerRechargeOrders: "listFinanceCoinSellerRechargeOrders", - listFinanceWithdrawalApplications: "listFinanceWithdrawalApplications", - listFirstRechargeRewardClaims: "listFirstRechargeRewardClaims", - listGifts: "listGifts", - listGiftTypes: "listGiftTypes", - listH5Links: "listH5Links", - listHostAgencyPolicies: "listHostAgencyPolicies", - listHosts: "listHosts", - listHostSalarySettlements: "listHostSalarySettlements", - listHostWithdrawals: "listHostWithdrawals", - listInviteActivityRewardClaims: "listInviteActivityRewardClaims", - listJobs: "listJobs", - listLevelConfig: "listLevelConfig", - listLoginLogs: "listLoginLogs", - listLuckyGiftConfigs: "listLuckyGiftConfigs", - listLuckyGiftDraws: "listLuckyGiftDraws", - listManagers: "listManagers", - listMyFinanceApplications: "listMyFinanceApplications", - listOperationLogs: "listOperationLogs", - listPermissions: "listPermissions", - listPlatformGrantRecords: "listPlatformGrantRecords", - listPlatformGrantUsers: "listPlatformGrantUsers", - listPlatforms: "listPlatforms", - listPolicyInstances: "listPolicyInstances", - listPolicyTemplates: "listPolicyTemplates", - listPopups: "listPopups", - listPrettyIdPools: "listPrettyIdPools", - listPrettyIds: "listPrettyIds", - listRechargeApps: "listRechargeApps", - listRechargeBills: "listRechargeBills", - listRechargeProducts: "listRechargeProducts", - listRechargeRegions: "listRechargeRegions", - listRedPackets: "listRedPackets", - listRegionBlocks: "listRegionBlocks", - listRegions: "listRegions", - listRegistrationRewardClaims: "listRegistrationRewardClaims", - listReports: "listReports", - listResourceGrants: "listResourceGrants", - listResourceGroups: "listResourceGroups", - listResources: "listResources", - listResourceShopItems: "listResourceShopItems", - listResourceShopPurchaseOrders: "listResourceShopPurchaseOrders", - listRobotRooms: "listRobotRooms", - listRoles: "listRoles", - listRoomPins: "listRoomPins", - listRoomRpsChallenges: "listRoomRpsChallenges", - listRooms: "listRooms", - listRoomTurnoverRewardSettlements: "listRoomTurnoverRewardSettlements", - listSelfGames: "listSelfGames", - listSevenDayCheckInClaims: "listSevenDayCheckInClaims", - listSplashScreens: "listSplashScreens", - listSystemMenus: "listSystemMenus", - listTaskDefinitions: "listTaskDefinitions", - listTeams: "listTeams", - listTeamSalaryPolicies: "listTeamSalaryPolicies", - listTeamUsers: "listTeamUsers", - listTemporaryPaymentLinks: "listTemporaryPaymentLinks", - listThirdPartyPaymentChannels: "listThirdPartyPaymentChannels", - listUserFinanceScopes: "listUserFinanceScopes", - listUserLeaderboards: "listUserLeaderboards", - listUsers: "listUsers", - listWeeklyStarCycles: "listWeeklyStarCycles", - listWeeklyStarLeaderboard: "listWeeklyStarLeaderboard", - listWeeklyStarSettlements: "listWeeklyStarSettlements", - listWheelDraws: "listWheelDraws", - login: "login", - logout: "logout", - lookupCoinAdjustmentTarget: "lookupCoinAdjustmentTarget", - lookupResourceGrantTarget: "lookupResourceGrantTarget", - me: "me", - navigationMenus: "navigationMenus", - publishHostAgencyPolicy: "publishHostAgencyPolicy", - publishPolicyInstance: "publishPolicyInstance", - recyclePrettyId: "recyclePrettyId", - refresh: "refresh", - refreshGoogleRechargePaid: "refreshGoogleRechargePaid", - rejectFinanceApplication: "rejectFinanceApplication", - rejectFinanceWithdrawalApplication: "rejectFinanceWithdrawalApplication", - renameCountryCode: "renameCountryCode", - replaceCoinSellerSalaryRates: "replaceCoinSellerSalaryRates", - replaceRegionBlocks: "replaceRegionBlocks", - replaceRegionCountries: "replaceRegionCountries", - replaceRoleDataScopes: "replaceRoleDataScopes", - replaceRolePermissions: "replaceRolePermissions", - replaceUserFinanceScopes: "replaceUserFinanceScopes", - resetUserPassword: "resetUserPassword", - retryRedPacketRefund: "retryRedPacketRefund", - retryRoomRpsSettlement: "retryRoomRpsSettlement", - retryRoomTurnoverRewardSettlement: "retryRoomTurnoverRewardSettlement", - revokeResourceGrant: "revokeResourceGrant", - savePolicyTemplate: "savePolicyTemplate", - search: "search", - selfGameStatisticsOverview: "selfGameStatisticsOverview", - setAgencyJoinEnabled: "setAgencyJoinEnabled", - setAgencyStatus: "setAgencyStatus", - setBDLeaderStatus: "setBDLeaderStatus", - setBDStatus: "setBDStatus", - setCoinSellerStatus: "setCoinSellerStatus", - setDiceRobotStatus: "setDiceRobotStatus", - setGameStatus: "setGameStatus", - setPrettyIdStatus: "setPrettyIdStatus", - setTaskDefinitionStatus: "setTaskDefinitionStatus", - setThirdPartyPaymentMethodStatus: "setThirdPartyPaymentMethodStatus", - setWeeklyStarCycleStatus: "setWeeklyStarCycleStatus", - sortMenus: "sortMenus", - startRobotRoom: "startRobotRoom", - statisticsOverview: "statisticsOverview", - stopRobotRoom: "stopRobotRoom", - syncPermissions: "syncPermissions", - syncThirdPartyPaymentMethods: "syncThirdPartyPaymentMethods", - syncThirdPartyPaymentRates: "syncThirdPartyPaymentRates", - updateAchievementDefinition: "updateAchievementDefinition", - updateAppVersion: "updateAppVersion", - updateBanner: "updateBanner", - updateCatalog: "updateCatalog", - updateCountry: "updateCountry", - updateCPConfig: "updateCPConfig", - updateCPWeeklyRankConfig: "updateCPWeeklyRankConfig", - updateCumulativeRechargeRewardConfig: "updateCumulativeRechargeRewardConfig", - updateDiceConfig: "updateDiceConfig", - updateExploreTab: "updateExploreTab", - updateFirstRechargeRewardConfig: "updateFirstRechargeRewardConfig", - updateGift: "updateGift", - updateGiftType: "updateGiftType", - updateGiftTypes: "updateGiftTypes", - updateH5Link: "updateH5Link", - updateH5Links: "updateH5Links", - updateHostAgencyPolicy: "updateHostAgencyPolicy", - updateHumanRoomRobotConfig: "updateHumanRoomRobotConfig", - updateInviteActivityRewardConfig: "updateInviteActivityRewardConfig", - updateManager: "updateManager", - updateMenu: "updateMenu", - updateMenuVisible: "updateMenuVisible", - updatePermission: "updatePermission", - updatePlatform: "updatePlatform", - updatePolicyInstanceStatus: "updatePolicyInstanceStatus", - updatePopup: "updatePopup", - updatePrettyIdPool: "updatePrettyIdPool", - updateRechargeProduct: "updateRechargeProduct", - updateRedPacketConfig: "updateRedPacketConfig", - updateRegion: "updateRegion", - updateRegistrationRewardConfig: "updateRegistrationRewardConfig", - updateResource: "updateResource", - updateResourceGroup: "updateResourceGroup", - updateResourceGroupItems: "updateResourceGroupItems", - updateResourceIdentityAutoGrantConfig: "updateResourceIdentityAutoGrantConfig", - updateRiskConfig: "updateRiskConfig", - updateRole: "updateRole", - updateRoom: "updateRoom", - updateRoomConfig: "updateRoomConfig", - updateRoomRocketConfig: "updateRoomRocketConfig", - updateRoomRpsConfig: "updateRoomRpsConfig", - updateRoomTurnoverRewardConfig: "updateRoomTurnoverRewardConfig", - updateRoomWhitelistConfig: "updateRoomWhitelistConfig", - updateSevenDayCheckInConfig: "updateSevenDayCheckInConfig", - updateSplashScreen: "updateSplashScreen", - updateTaskDefinition: "updateTaskDefinition", - updateTeam: "updateTeam", - updateTeamSalaryPolicy: "updateTeamSalaryPolicy", - updateThirdPartyPaymentRate: "updateThirdPartyPaymentRate", - updateTier: "updateTier", - updateTrack: "updateTrack", - updateUser: "updateUser", - updateUserStatus: "updateUserStatus", - updateWeeklyStarCycle: "updateWeeklyStarCycle", - uploadFile: "uploadFile", - uploadImage: "uploadImage", - upsertLuckyGiftConfig: "upsertLuckyGiftConfig", - upsertResourceShopItems: "upsertResourceShopItems", - upsertRule: "upsertRule", - upsertWheelConfig: "upsertWheelConfig", - verifyFinanceCoinSellerRechargeOrder: "verifyFinanceCoinSellerRechargeOrder", - verifyFinanceCoinSellerRechargeReceipt: "verifyFinanceCoinSellerRechargeReceipt" + adjustDicePool: "adjustDicePool", + adminAddAgencyHost: "adminAddAgencyHost", + appBanUser: "appBanUser", + appGetUser: "appGetUser", + appListBannedUsers: "appListBannedUsers", + appListLoginLogs: "appListLoginLogs", + appListUserLoginLogs: "appListUserLoginLogs", + appListUsers: "appListUsers", + approveCoinSellerSubApplication: "approveCoinSellerSubApplication", + approveFinanceApplication: "approveFinanceApplication", + approveFinanceWithdrawalApplication: "approveFinanceWithdrawalApplication", + appSetPassword: "appSetPassword", + appUnbanUser: "appUnbanUser", + appUpdateUser: "appUpdateUser", + batchCreateGifts: "batchCreateGifts", + batchDeleteResources: "batchDeleteResources", + batchUpdateUserStatus: "batchUpdateUserStatus", + cancelJob: "cancelJob", + cancelRoomPin: "cancelRoomPin", + changePassword: "changePassword", + closeAgency: "closeAgency", + createAchievementDefinition: "createAchievementDefinition", + createAgency: "createAgency", + createAppVersion: "createAppVersion", + createBanner: "createBanner", + createBD: "createBD", + createBDLeader: "createBDLeader", + createCatalog: "createCatalog", + createCoinAdjustment: "createCoinAdjustment", + createCoinSeller: "createCoinSeller", + createCountry: "createCountry", + createEmojiPack: "createEmojiPack", + createExploreTab: "createExploreTab", + createFinanceApplication: "createFinanceApplication", + createFinanceCoinSellerRechargeOrder: "createFinanceCoinSellerRechargeOrder", + createFullServerNoticeFanout: "createFullServerNoticeFanout", + createGift: "createGift", + createH5Link: "createH5Link", + createHostAgencyPolicy: "createHostAgencyPolicy", + createManager: "createManager", + createMenu: "createMenu", + createPermission: "createPermission", + createPlatform: "createPlatform", + createPolicyInstance: "createPolicyInstance", + createPopup: "createPopup", + createPrettyIdPool: "createPrettyIdPool", + createRechargeProduct: "createRechargeProduct", + createRegion: "createRegion", + createResource: "createResource", + createResourceGroup: "createResourceGroup", + createRobotRoom: "createRobotRoom", + createRole: "createRole", + createRoomPin: "createRoomPin", + createSplashScreen: "createSplashScreen", + createTaskDefinition: "createTaskDefinition", + createTeam: "createTeam", + createTeamSalaryPolicy: "createTeamSalaryPolicy", + createTemporaryPaymentLink: "createTemporaryPaymentLink", + createTier: "createTier", + createUser: "createUser", + createWeeklyStarCycle: "createWeeklyStarCycle", + creditCoinSellerStock: "creditCoinSellerStock", + dashboardOverview: "dashboardOverview", + debitCoinSellerStock: "debitCoinSellerStock", + deleteAchievementDefinition: "deleteAchievementDefinition", + deleteAgency: "deleteAgency", + deleteAppVersion: "deleteAppVersion", + deleteBanner: "deleteBanner", + deleteBDLeader: "deleteBDLeader", + deleteCatalog: "deleteCatalog", + deleteCountry: "deleteCountry", + deleteDiceRobot: "deleteDiceRobot", + deleteExploreTab: "deleteExploreTab", + deleteGift: "deleteGift", + deleteH5Link: "deleteH5Link", + deleteHostAgencyPolicy: "deleteHostAgencyPolicy", + deleteMenu: "deleteMenu", + deletePermission: "deletePermission", + deletePopup: "deletePopup", + deleteRechargeProduct: "deleteRechargeProduct", + deleteResource: "deleteResource", + deleteRole: "deleteRole", + deleteRoom: "deleteRoom", + deleteSplashScreen: "deleteSplashScreen", + deleteTeamSalaryPolicy: "deleteTeamSalaryPolicy", + disableCountry: "disableCountry", + disableGift: "disableGift", + disableRegion: "disableRegion", + disableResource: "disableResource", + disableResourceGroup: "disableResourceGroup", + disableResourceShopItem: "disableResourceShopItem", + enableCountry: "enableCountry", + enableGift: "enableGift", + enableRegion: "enableRegion", + enableResource: "enableResource", + enableResourceGroup: "enableResourceGroup", + enableResourceShopItem: "enableResourceShopItem", + expireRoomRpsChallenge: "expireRoomRpsChallenge", + exportCoinSellerLedger: "exportCoinSellerLedger", + exportLoginLogs: "exportLoginLogs", + exportOperationLogs: "exportOperationLogs", + exportRechargeBills: "exportRechargeBills", + exportUsers: "exportUsers", + generateDiceRobots: "generateDiceRobots", + generatePrettyIds: "generatePrettyIds", + getCoinSellerSalaryRates: "getCoinSellerSalaryRates", + getCountry: "getCountry", + getCPConfig: "getCPConfig", + getCPWeeklyRankConfig: "getCPWeeklyRankConfig", + getCumulativeRechargeRewardConfig: "getCumulativeRechargeRewardConfig", + getFinanceScope: "getFinanceScope", + getFirstRechargeRewardConfig: "getFirstRechargeRewardConfig", + getHumanRoomRobotConfig: "getHumanRoomRobotConfig", + getInviteActivityRewardConfig: "getInviteActivityRewardConfig", + getJob: "getJob", + getLuckyGiftConfig: "getLuckyGiftConfig", + getLuckyGiftDrawSummary: "getLuckyGiftDrawSummary", + getRechargeBillOverview: "getRechargeBillOverview", + getRechargeBillSummary: "getRechargeBillSummary", + getRedPacket: "getRedPacket", + getRedPacketConfig: "getRedPacketConfig", + getRegion: "getRegion", + getRegistrationRewardConfig: "getRegistrationRewardConfig", + getResource: "getResource", + getResourceGroup: "getResourceGroup", + getResourceIdentityAutoGrantConfig: "getResourceIdentityAutoGrantConfig", + getRiskConfig: "getRiskConfig", + getRoleDataScopes: "getRoleDataScopes", + getRoomConfig: "getRoomConfig", + getRoomRocketConfig: "getRoomRocketConfig", + getRoomRpsChallenge: "getRoomRpsChallenge", + getRoomRpsConfig: "getRoomRpsConfig", + getRoomTurnoverRewardConfig: "getRoomTurnoverRewardConfig", + getRoomWhitelistConfig: "getRoomWhitelistConfig", + getSevenDayCheckInConfig: "getSevenDayCheckInConfig", + getSocialBiFunnel: "getSocialBiFunnel", + getSocialBiKpi: "getSocialBiKpi", + getSocialBiMaster: "getSocialBiMaster", + getSocialBiOverview: "getSocialBiOverview", + getSocialBiRequirements: "getSocialBiRequirements", + getTemporaryPaymentLink: "getTemporaryPaymentLink", + getUser: "getUser", + getWeeklyStarCycle: "getWeeklyStarCycle", + getWheelConfig: "getWheelConfig", + getWheelDrawSummary: "getWheelDrawSummary", + grantFinanceCoinSellerRechargeOrder: "grantFinanceCoinSellerRechargeOrder", + grantPrettyId: "grantPrettyId", + grantResource: "grantResource", + grantResourceGroup: "grantResourceGroup", + listAchievementDefinitions: "listAchievementDefinitions", + listAgencies: "listAgencies", + listApps: "listApps", + listAppVersions: "listAppVersions", + listAvailableRoomRobots: "listAvailableRoomRobots", + listBanners: "listBanners", + listBDLeaders: "listBDLeaders", + listBDs: "listBDs", + listCatalog: "listCatalog", + listCoinAdjustments: "listCoinAdjustments", + listCoinLedger: "listCoinLedger", + listCoinSellerLedger: "listCoinSellerLedger", + listCoinSellers: "listCoinSellers", + listCoinSellerSubApplications: "listCoinSellerSubApplications", + listCoinSellerSubSellers: "listCoinSellerSubSellers", + listCountries: "listCountries", + listCPApplications: "listCPApplications", + listCPRelationships: "listCPRelationships", + listCPWeeklyRankSettlements: "listCPWeeklyRankSettlements", + listCumulativeRechargeRewardGrants: "listCumulativeRechargeRewardGrants", + listDiceRobots: "listDiceRobots", + listEmojiPackCategories: "listEmojiPackCategories", + listEmojiPacks: "listEmojiPacks", + listExploreTabs: "listExploreTabs", + listFinanceApplications: "listFinanceApplications", + listFinanceCoinSellerRechargeOrders: "listFinanceCoinSellerRechargeOrders", + listFinanceWithdrawalApplications: "listFinanceWithdrawalApplications", + listFirstRechargeRewardClaims: "listFirstRechargeRewardClaims", + listGifts: "listGifts", + listGiftTypes: "listGiftTypes", + listH5Links: "listH5Links", + listHostAgencyPolicies: "listHostAgencyPolicies", + listHosts: "listHosts", + listHostSalarySettlements: "listHostSalarySettlements", + listHostWithdrawals: "listHostWithdrawals", + listInviteActivityRewardClaims: "listInviteActivityRewardClaims", + listJobs: "listJobs", + listLevelConfig: "listLevelConfig", + listLoginLogs: "listLoginLogs", + listLuckyGiftConfigs: "listLuckyGiftConfigs", + listLuckyGiftDraws: "listLuckyGiftDraws", + listManagers: "listManagers", + listMyFinanceApplications: "listMyFinanceApplications", + listOperationLogs: "listOperationLogs", + listPermissions: "listPermissions", + listPlatformGrantRecords: "listPlatformGrantRecords", + listPlatformGrantUsers: "listPlatformGrantUsers", + listPlatforms: "listPlatforms", + listPolicyInstances: "listPolicyInstances", + listPolicyTemplates: "listPolicyTemplates", + listPopups: "listPopups", + listPrettyIdPools: "listPrettyIdPools", + listPrettyIds: "listPrettyIds", + listRechargeApps: "listRechargeApps", + listRechargeBills: "listRechargeBills", + listRechargeProducts: "listRechargeProducts", + listRechargeRegions: "listRechargeRegions", + listRedPackets: "listRedPackets", + listRegionBlocks: "listRegionBlocks", + listRegions: "listRegions", + listRegistrationRewardClaims: "listRegistrationRewardClaims", + listReports: "listReports", + listResourceGrants: "listResourceGrants", + listResourceGroups: "listResourceGroups", + listResources: "listResources", + listResourceShopItems: "listResourceShopItems", + listResourceShopPurchaseOrders: "listResourceShopPurchaseOrders", + listRobotRooms: "listRobotRooms", + listRoles: "listRoles", + listRoomPins: "listRoomPins", + listRoomRpsChallenges: "listRoomRpsChallenges", + listRooms: "listRooms", + listRoomTurnoverRewardSettlements: "listRoomTurnoverRewardSettlements", + listSelfGames: "listSelfGames", + listSevenDayCheckInClaims: "listSevenDayCheckInClaims", + listSplashScreens: "listSplashScreens", + listSystemMenus: "listSystemMenus", + listTaskDefinitions: "listTaskDefinitions", + listTeams: "listTeams", + listTeamSalaryPolicies: "listTeamSalaryPolicies", + listTeamUsers: "listTeamUsers", + listTemporaryPaymentLinks: "listTemporaryPaymentLinks", + listThirdPartyPaymentChannels: "listThirdPartyPaymentChannels", + listUserFinanceScopes: "listUserFinanceScopes", + listUserLeaderboards: "listUserLeaderboards", + listUsers: "listUsers", + listWeeklyStarCycles: "listWeeklyStarCycles", + listWeeklyStarLeaderboard: "listWeeklyStarLeaderboard", + listWeeklyStarSettlements: "listWeeklyStarSettlements", + listWheelDraws: "listWheelDraws", + login: "login", + logout: "logout", + lookupCoinAdjustmentTarget: "lookupCoinAdjustmentTarget", + lookupResourceGrantTarget: "lookupResourceGrantTarget", + me: "me", + navigationMenus: "navigationMenus", + publishHostAgencyPolicy: "publishHostAgencyPolicy", + publishPolicyInstance: "publishPolicyInstance", + recyclePrettyId: "recyclePrettyId", + refresh: "refresh", + refreshGoogleRechargePaid: "refreshGoogleRechargePaid", + rejectCoinSellerSubApplication: "rejectCoinSellerSubApplication", + rejectFinanceApplication: "rejectFinanceApplication", + rejectFinanceWithdrawalApplication: "rejectFinanceWithdrawalApplication", + renameCountryCode: "renameCountryCode", + replaceCoinSellerSalaryRates: "replaceCoinSellerSalaryRates", + replaceRegionBlocks: "replaceRegionBlocks", + replaceRegionCountries: "replaceRegionCountries", + replaceRoleDataScopes: "replaceRoleDataScopes", + replaceRolePermissions: "replaceRolePermissions", + replaceUserFinanceScopes: "replaceUserFinanceScopes", + resetUserPassword: "resetUserPassword", + retryRedPacketRefund: "retryRedPacketRefund", + retryRoomRpsSettlement: "retryRoomRpsSettlement", + retryRoomTurnoverRewardSettlement: "retryRoomTurnoverRewardSettlement", + revokeResourceGrant: "revokeResourceGrant", + savePolicyTemplate: "savePolicyTemplate", + search: "search", + selfGameStatisticsOverview: "selfGameStatisticsOverview", + setAgencyJoinEnabled: "setAgencyJoinEnabled", + setAgencyStatus: "setAgencyStatus", + setBDLeaderStatus: "setBDLeaderStatus", + setBDStatus: "setBDStatus", + setCoinSellerStatus: "setCoinSellerStatus", + setDiceRobotStatus: "setDiceRobotStatus", + setGameStatus: "setGameStatus", + setPrettyIdStatus: "setPrettyIdStatus", + setTaskDefinitionStatus: "setTaskDefinitionStatus", + setThirdPartyPaymentMethodStatus: "setThirdPartyPaymentMethodStatus", + setWeeklyStarCycleStatus: "setWeeklyStarCycleStatus", + sortMenus: "sortMenus", + startRobotRoom: "startRobotRoom", + statisticsOverview: "statisticsOverview", + stopRobotRoom: "stopRobotRoom", + syncPermissions: "syncPermissions", + syncThirdPartyPaymentMethods: "syncThirdPartyPaymentMethods", + syncThirdPartyPaymentRates: "syncThirdPartyPaymentRates", + updateAchievementDefinition: "updateAchievementDefinition", + updateAppVersion: "updateAppVersion", + updateBanner: "updateBanner", + updateCatalog: "updateCatalog", + updateCountry: "updateCountry", + updateCPConfig: "updateCPConfig", + updateCPWeeklyRankConfig: "updateCPWeeklyRankConfig", + updateCumulativeRechargeRewardConfig: "updateCumulativeRechargeRewardConfig", + updateDiceConfig: "updateDiceConfig", + updateExploreTab: "updateExploreTab", + updateFirstRechargeRewardConfig: "updateFirstRechargeRewardConfig", + updateGift: "updateGift", + updateGiftType: "updateGiftType", + updateGiftTypes: "updateGiftTypes", + updateH5Link: "updateH5Link", + updateH5Links: "updateH5Links", + updateHostAgencyPolicy: "updateHostAgencyPolicy", + updateHumanRoomRobotConfig: "updateHumanRoomRobotConfig", + updateInviteActivityRewardConfig: "updateInviteActivityRewardConfig", + updateManager: "updateManager", + updateMenu: "updateMenu", + updateMenuVisible: "updateMenuVisible", + updatePermission: "updatePermission", + updatePlatform: "updatePlatform", + updatePolicyInstanceStatus: "updatePolicyInstanceStatus", + updatePopup: "updatePopup", + updatePrettyIdPool: "updatePrettyIdPool", + updateRechargeProduct: "updateRechargeProduct", + updateRedPacketConfig: "updateRedPacketConfig", + updateRegion: "updateRegion", + updateRegistrationRewardConfig: "updateRegistrationRewardConfig", + updateResource: "updateResource", + updateResourceGroup: "updateResourceGroup", + updateResourceGroupItems: "updateResourceGroupItems", + updateResourceIdentityAutoGrantConfig: "updateResourceIdentityAutoGrantConfig", + updateRiskConfig: "updateRiskConfig", + updateRole: "updateRole", + updateRoom: "updateRoom", + updateRoomConfig: "updateRoomConfig", + updateRoomRocketConfig: "updateRoomRocketConfig", + updateRoomRpsConfig: "updateRoomRpsConfig", + updateRoomTurnoverRewardConfig: "updateRoomTurnoverRewardConfig", + updateRoomWhitelistConfig: "updateRoomWhitelistConfig", + updateSevenDayCheckInConfig: "updateSevenDayCheckInConfig", + updateSplashScreen: "updateSplashScreen", + updateTaskDefinition: "updateTaskDefinition", + updateTeam: "updateTeam", + updateTeamSalaryPolicy: "updateTeamSalaryPolicy", + updateThirdPartyPaymentRate: "updateThirdPartyPaymentRate", + updateTier: "updateTier", + updateTrack: "updateTrack", + updateUser: "updateUser", + updateUserStatus: "updateUserStatus", + updateWeeklyStarCycle: "updateWeeklyStarCycle", + uploadFile: "uploadFile", + uploadImage: "uploadImage", + upsertLuckyGiftConfig: "upsertLuckyGiftConfig", + upsertResourceShopItems: "upsertResourceShopItems", + upsertRule: "upsertRule", + upsertWheelConfig: "upsertWheelConfig", + verifyFinanceCoinSellerRechargeOrder: "verifyFinanceCoinSellerRechargeOrder", + verifyFinanceCoinSellerRechargeReceipt: "verifyFinanceCoinSellerRechargeReceipt", } as const; export type ApiOperationId = (typeof API_OPERATIONS)[keyof typeof API_OPERATIONS]; export const API_ENDPOINTS: Record = { - adjustDicePool: { - method: "POST", - operationId: API_OPERATIONS.adjustDicePool, - path: "/v1/admin/game/self-games/{game_id}/pool/adjust", - permission: "game:update", - permissions: ["game:update"] - }, - adminAddAgencyHost: { - method: "POST", - operationId: API_OPERATIONS.adminAddAgencyHost, - path: "/v1/admin/agencies/{agency_id}/hosts", - permission: "agency:create", - permissions: ["agency:create"] - }, - appBanUser: { - method: "POST", - operationId: API_OPERATIONS.appBanUser, - path: "/v1/app/users/{id}/ban", - permission: "app-user:status", - permissions: ["app-user:status"] - }, - appGetUser: { - method: "GET", - operationId: API_OPERATIONS.appGetUser, - path: "/v1/app/users/{id}", - permission: "app-user:view", - permissions: ["app-user:view"] - }, - appListBannedUsers: { - method: "GET", - operationId: API_OPERATIONS.appListBannedUsers, - path: "/v1/app/users/bans", - permission: "app-user:view", - permissions: ["app-user:view"] - }, - appListLoginLogs: { - method: "GET", - operationId: API_OPERATIONS.appListLoginLogs, - path: "/v1/app/users/login-logs", - permission: "app-user:view", - permissions: ["app-user:view"] - }, - appListUserLoginLogs: { - method: "GET", - operationId: API_OPERATIONS.appListUserLoginLogs, - path: "/v1/app/users/{id}/login-logs", - permission: "app-user:view", - permissions: ["app-user:view"] - }, - appListUsers: { - method: "GET", - operationId: API_OPERATIONS.appListUsers, - path: "/v1/app/users", - permission: "app-user:view", - permissions: ["app-user:view"] - }, - approveFinanceApplication: { - method: "POST", - operationId: API_OPERATIONS.approveFinanceApplication, - path: "/v1/admin/finance/applications/{application_id}/approve", - permission: "finance-application:audit", - permissions: ["finance-application:audit"] - }, - approveFinanceWithdrawalApplication: { - method: "POST", - operationId: API_OPERATIONS.approveFinanceWithdrawalApplication, - path: "/v1/admin/finance/withdrawal-applications/{application_id}/approve", - permission: "finance-withdrawal:audit", - permissions: ["finance-withdrawal:audit","finance-application:audit"] - }, - appSetPassword: { - method: "POST", - operationId: API_OPERATIONS.appSetPassword, - path: "/v1/app/users/{id}/password", - permission: "app-user:password", - permissions: ["app-user:password"] - }, - appUnbanUser: { - method: "POST", - operationId: API_OPERATIONS.appUnbanUser, - path: "/v1/app/users/{id}/unban", - permission: "app-user:status", - permissions: ["app-user:status"] - }, - appUpdateUser: { - method: "PATCH", - operationId: API_OPERATIONS.appUpdateUser, - path: "/v1/app/users/{id}", - permission: "app-user:update", - permissions: ["app-user:update"] - }, - batchCreateGifts: { - method: "POST", - operationId: API_OPERATIONS.batchCreateGifts, - path: "/v1/admin/gifts/batch", - permission: "gift:create", - permissions: ["gift:create"] - }, - batchDeleteResources: { - method: "POST", - operationId: API_OPERATIONS.batchDeleteResources, - path: "/v1/admin/resources/batch-delete", - permission: "resource:delete", - permissions: ["resource:delete"] - }, - batchUpdateUserStatus: { - method: "POST", - operationId: API_OPERATIONS.batchUpdateUserStatus, - path: "/v1/users/batch/status", - permission: "user:status", - permissions: ["user:status"] - }, - cancelJob: { - method: "POST", - operationId: API_OPERATIONS.cancelJob, - path: "/v1/jobs/{id}/cancel", - permission: "job:cancel", - permissions: ["job:cancel"] - }, - cancelRoomPin: { - method: "DELETE", - operationId: API_OPERATIONS.cancelRoomPin, - path: "/v1/admin/rooms/pins/{pin_id}", - permission: "room-pin:cancel", - permissions: ["room-pin:cancel"] - }, - changePassword: { - method: "POST", - operationId: API_OPERATIONS.changePassword, - path: "/v1/auth/change-password" - }, - closeAgency: { - method: "POST", - operationId: API_OPERATIONS.closeAgency, - path: "/v1/admin/agencies/{agency_id}/close", - permission: "agency:status", - permissions: ["agency:status"] - }, - createAchievementDefinition: { - method: "POST", - operationId: API_OPERATIONS.createAchievementDefinition, - path: "/v1/admin/activity/achievements", - permission: "achievement:create", - permissions: ["achievement:create"] - }, - createAgency: { - method: "POST", - operationId: API_OPERATIONS.createAgency, - path: "/v1/admin/agencies", - permission: "agency:create", - permissions: ["agency:create"] - }, - createAppVersion: { - method: "POST", - operationId: API_OPERATIONS.createAppVersion, - path: "/v1/admin/app-config/versions", - permission: "app-version:create", - permissions: ["app-version:create"] - }, - createBanner: { - method: "POST", - operationId: API_OPERATIONS.createBanner, - path: "/v1/admin/app-config/banners", - permission: "app-config:update", - permissions: ["app-config:update"] - }, - createBD: { - method: "POST", - operationId: API_OPERATIONS.createBD, - path: "/v1/admin/bds", - permission: "bd:create", - permissions: ["bd:create"] - }, - createBDLeader: { - method: "POST", - operationId: API_OPERATIONS.createBDLeader, - path: "/v1/admin/bd-leaders", - permission: "bd:create", - permissions: ["bd:create"] - }, - createCatalog: { - method: "POST", - operationId: API_OPERATIONS.createCatalog, - path: "/v1/admin/game/games", - permission: "game:create", - permissions: ["game:create"] - }, - createCoinAdjustment: { - method: "POST", - operationId: API_OPERATIONS.createCoinAdjustment, - path: "/v1/admin/operations/coin-adjustments", - permission: "coin-adjustment:create", - permissions: ["coin-adjustment:create"] - }, - createCoinSeller: { - method: "POST", - operationId: API_OPERATIONS.createCoinSeller, - path: "/v1/admin/coin-sellers", - permission: "coin-seller:create", - permissions: ["coin-seller:create"] - }, - createCountry: { - method: "POST", - operationId: API_OPERATIONS.createCountry, - path: "/v1/admin/countries", - permission: "country:create", - permissions: ["country:create"] - }, - createEmojiPack: { - method: "POST", - operationId: API_OPERATIONS.createEmojiPack, - path: "/v1/admin/emoji-packs", - permission: "emoji-pack:create", - permissions: ["emoji-pack:create"] - }, - createExploreTab: { - method: "POST", - operationId: API_OPERATIONS.createExploreTab, - path: "/v1/admin/app-config/explore-tabs", - permission: "app-config:update", - permissions: ["app-config:update"] - }, - createFinanceApplication: { - method: "POST", - operationId: API_OPERATIONS.createFinanceApplication, - path: "/v1/admin/finance/applications", - permission: "finance-application:create", - permissions: ["finance-application:create"] - }, - createFinanceCoinSellerRechargeOrder: { - method: "POST", - operationId: API_OPERATIONS.createFinanceCoinSellerRechargeOrder, - path: "/v1/admin/finance/orders/coin-seller-recharges", - permission: "finance-order:coin-seller-recharge:create", - permissions: ["finance-order:coin-seller-recharge:create"] - }, - createFullServerNoticeFanout: { - method: "POST", - operationId: API_OPERATIONS.createFullServerNoticeFanout, - path: "/v1/admin/operations/full-server-notices/fanout", - permission: "full-server-notice:send", - permissions: ["full-server-notice:send"] - }, - createGift: { - method: "POST", - operationId: API_OPERATIONS.createGift, - path: "/v1/admin/gifts", - permission: "gift:create", - permissions: ["gift:create"] - }, - createH5Link: { - method: "POST", - operationId: API_OPERATIONS.createH5Link, - path: "/v1/admin/app-config/h5-links", - permission: "app-config:update", - permissions: ["app-config:update"] - }, - createHostAgencyPolicy: { - method: "POST", - operationId: API_OPERATIONS.createHostAgencyPolicy, - path: "/v1/admin/host-agency-policies", - permission: "host-agency-policy:create", - permissions: ["host-agency-policy:create"] - }, - createManager: { - method: "POST", - operationId: API_OPERATIONS.createManager, - path: "/v1/admin/managers", - permission: "bd:create", - permissions: ["bd:create"] - }, - createMenu: { - method: "POST", - operationId: API_OPERATIONS.createMenu, - path: "/v1/system/menus", - permission: "menu:create", - permissions: ["menu:create"] - }, - createPermission: { - method: "POST", - operationId: API_OPERATIONS.createPermission, - path: "/v1/permissions", - permission: "permission:create", - permissions: ["permission:create"] - }, - createPlatform: { - method: "POST", - operationId: API_OPERATIONS.createPlatform, - path: "/v1/admin/game/platforms", - permission: "game:update", - permissions: ["game:update"] - }, - createPolicyInstance: { - method: "POST", - operationId: API_OPERATIONS.createPolicyInstance, - path: "/v1/admin/policy-instances", - permission: "policy-instance:create", - permissions: ["policy-instance:create"] - }, - createPopup: { - method: "POST", - operationId: API_OPERATIONS.createPopup, - path: "/v1/admin/app-config/popups", - permission: "app-config:update", - permissions: ["app-config:update"] - }, - createPrettyIdPool: { - method: "POST", - operationId: API_OPERATIONS.createPrettyIdPool, - path: "/v1/admin/users/pretty-id-pools", - permission: "pretty-id:update", - permissions: ["pretty-id:update"] - }, - createRechargeProduct: { - method: "POST", - operationId: API_OPERATIONS.createRechargeProduct, - path: "/v1/admin/payment/recharge-products", - permission: "payment-product:create", - permissions: ["payment-product:create"] - }, - createRegion: { - method: "POST", - operationId: API_OPERATIONS.createRegion, - path: "/v1/admin/regions", - permission: "region:create", - permissions: ["region:create"] - }, - createResource: { - method: "POST", - operationId: API_OPERATIONS.createResource, - path: "/v1/admin/resources", - permission: "resource:create", - permissions: ["resource:create"] - }, - createResourceGroup: { - method: "POST", - operationId: API_OPERATIONS.createResourceGroup, - path: "/v1/admin/resource-groups", - permission: "resource-group:create", - permissions: ["resource-group:create"] - }, - createRobotRoom: { - method: "POST", - operationId: API_OPERATIONS.createRobotRoom, - path: "/v1/admin/rooms/robot-rooms", - permission: "room-robot:create", - permissions: ["room-robot:create"] - }, - createRole: { - method: "POST", - operationId: API_OPERATIONS.createRole, - path: "/v1/roles", - permission: "role:create", - permissions: ["role:create","role:manage"] - }, - createRoomPin: { - method: "POST", - operationId: API_OPERATIONS.createRoomPin, - path: "/v1/admin/rooms/pins", - permission: "room-pin:create", - permissions: ["room-pin:create"] - }, - createSplashScreen: { - method: "POST", - operationId: API_OPERATIONS.createSplashScreen, - path: "/v1/admin/app-config/splash-screens", - permission: "app-config:update", - permissions: ["app-config:update"] - }, - createTaskDefinition: { - method: "POST", - operationId: API_OPERATIONS.createTaskDefinition, - path: "/v1/admin/activity/daily-tasks", - permission: "daily-task:create", - permissions: ["daily-task:create"] - }, - createTeam: { - method: "POST", - operationId: API_OPERATIONS.createTeam, - path: "/v1/teams", - permission: "team:create", - permissions: ["team:create"] - }, - createTeamSalaryPolicy: { - method: "POST", - operationId: API_OPERATIONS.createTeamSalaryPolicy, - path: "/v1/admin/team-salary-policies", - permission: "team-salary-policy:create", - permissions: ["team-salary-policy:create"] - }, - createTemporaryPaymentLink: { - method: "POST", - operationId: API_OPERATIONS.createTemporaryPaymentLink, - path: "/v1/admin/payment/temporary-links", - permission: "payment-temporary-link:create", - permissions: ["payment-temporary-link:create"] - }, - createTier: { - method: "POST", - operationId: API_OPERATIONS.createTier, - path: "/v1/admin/users/level-config/tiers", - permission: "level-config:update", - permissions: ["level-config:update"] - }, - createUser: { - method: "POST", - operationId: API_OPERATIONS.createUser, - path: "/v1/users", - permission: "user:create", - permissions: ["user:create"] - }, - createWeeklyStarCycle: { - method: "POST", - operationId: API_OPERATIONS.createWeeklyStarCycle, - path: "/v1/admin/activity/weekly-star/cycles", - permission: "weekly-star:create", - permissions: ["weekly-star:create"] - }, - creditCoinSellerStock: { - method: "POST", - operationId: API_OPERATIONS.creditCoinSellerStock, - path: "/v1/admin/coin-sellers/{user_id}/stock-credits", - permission: "coin-seller:stock-credit", - permissions: ["coin-seller:stock-credit"] - }, - dashboardOverview: { - method: "GET", - operationId: API_OPERATIONS.dashboardOverview, - path: "/v1/dashboard/overview", - permission: "overview:view", - permissions: ["overview:view"] - }, - debitCoinSellerStock: { - method: "POST", - operationId: API_OPERATIONS.debitCoinSellerStock, - path: "/v1/admin/coin-sellers/{user_id}/stock-debits", - permission: "coin-seller:stock-credit", - permissions: ["coin-seller:stock-credit"] - }, - deleteAchievementDefinition: { - method: "DELETE", - operationId: API_OPERATIONS.deleteAchievementDefinition, - path: "/v1/admin/activity/achievements/{achievement_id}", - permission: "achievement:update", - permissions: ["achievement:update"] - }, - deleteAgency: { - method: "POST", - operationId: API_OPERATIONS.deleteAgency, - path: "/v1/admin/agencies/{agency_id}/delete", - permission: "agency:delete", - permissions: ["agency:delete"] - }, - deleteAppVersion: { - method: "DELETE", - operationId: API_OPERATIONS.deleteAppVersion, - path: "/v1/admin/app-config/versions/{version_id}", - permission: "app-version:delete", - permissions: ["app-version:delete"] - }, - deleteBanner: { - method: "DELETE", - operationId: API_OPERATIONS.deleteBanner, - path: "/v1/admin/app-config/banners/{banner_id}", - permission: "app-config:update", - permissions: ["app-config:update"] - }, - deleteBDLeader: { - method: "DELETE", - operationId: API_OPERATIONS.deleteBDLeader, - path: "/v1/admin/bd-leaders/{user_id}", - permission: "bd:update", - permissions: ["bd:update"] - }, - deleteCatalog: { - method: "DELETE", - operationId: API_OPERATIONS.deleteCatalog, - path: "/v1/admin/game/games/{game_id}", - permission: "game:delete", - permissions: ["game:delete"] - }, - deleteCountry: { - method: "DELETE", - operationId: API_OPERATIONS.deleteCountry, - path: "/v1/admin/countries/{country_id}", - permission: "country:status", - permissions: ["country:status"] - }, - deleteDiceRobot: { - method: "DELETE", - operationId: API_OPERATIONS.deleteDiceRobot, - path: "/v1/admin/game/robots/{user_id}", - permission: "game:delete", - permissions: ["game:delete"] - }, - deleteExploreTab: { - method: "DELETE", - operationId: API_OPERATIONS.deleteExploreTab, - path: "/v1/admin/app-config/explore-tabs/{tab_id}", - permission: "app-config:update", - permissions: ["app-config:update"] - }, - deleteGift: { - method: "DELETE", - operationId: API_OPERATIONS.deleteGift, - path: "/v1/admin/gifts/{gift_id}", - permission: "gift:delete", - permissions: ["gift:delete"] - }, - deleteH5Link: { - method: "DELETE", - operationId: API_OPERATIONS.deleteH5Link, - path: "/v1/admin/app-config/h5-links/{key}", - permission: "app-config:update", - permissions: ["app-config:update"] - }, - deleteHostAgencyPolicy: { - method: "DELETE", - operationId: API_OPERATIONS.deleteHostAgencyPolicy, - path: "/v1/admin/host-agency-policies/{policy_id}", - permission: "host-agency-policy:delete", - permissions: ["host-agency-policy:delete"] - }, - deleteMenu: { - method: "DELETE", - operationId: API_OPERATIONS.deleteMenu, - path: "/v1/system/menus/{id}", - permission: "menu:delete", - permissions: ["menu:delete"] - }, - deletePermission: { - method: "DELETE", - operationId: API_OPERATIONS.deletePermission, - path: "/v1/permissions/{id}", - permission: "permission:delete", - permissions: ["permission:delete"] - }, - deletePopup: { - method: "DELETE", - operationId: API_OPERATIONS.deletePopup, - path: "/v1/admin/app-config/popups/{popup_id}", - permission: "app-config:update", - permissions: ["app-config:update"] - }, - deleteRechargeProduct: { - method: "DELETE", - operationId: API_OPERATIONS.deleteRechargeProduct, - path: "/v1/admin/payment/recharge-products/{product_id}", - permission: "payment-product:delete", - permissions: ["payment-product:delete"] - }, - deleteResource: { - method: "DELETE", - operationId: API_OPERATIONS.deleteResource, - path: "/v1/admin/resources/{resource_id}", - permission: "resource:delete", - permissions: ["resource:delete"] - }, - deleteRole: { - method: "DELETE", - operationId: API_OPERATIONS.deleteRole, - path: "/v1/roles/{id}", - permission: "role:delete", - permissions: ["role:delete","role:manage"] - }, - deleteRoom: { - method: "DELETE", - operationId: API_OPERATIONS.deleteRoom, - path: "/v1/admin/rooms/{room_id}", - permission: "room:delete", - permissions: ["room:delete"] - }, - deleteSplashScreen: { - method: "DELETE", - operationId: API_OPERATIONS.deleteSplashScreen, - path: "/v1/admin/app-config/splash-screens/{splash_id}", - permission: "app-config:update", - permissions: ["app-config:update"] - }, - deleteTeamSalaryPolicy: { - method: "DELETE", - operationId: API_OPERATIONS.deleteTeamSalaryPolicy, - path: "/v1/admin/team-salary-policies/{policy_id}", - permission: "team-salary-policy:delete", - permissions: ["team-salary-policy:delete"] - }, - disableCountry: { - method: "POST", - operationId: API_OPERATIONS.disableCountry, - path: "/v1/admin/countries/{country_id}/disable", - permission: "country:status", - permissions: ["country:status"] - }, - disableGift: { - method: "POST", - operationId: API_OPERATIONS.disableGift, - path: "/v1/admin/gifts/{gift_id}/disable", - permission: "gift:status", - permissions: ["gift:status"] - }, - disableRegion: { - method: "DELETE", - operationId: API_OPERATIONS.disableRegion, - path: "/v1/admin/regions/{region_id}", - permission: "region:status", - permissions: ["region:status"] - }, - disableResource: { - method: "POST", - operationId: API_OPERATIONS.disableResource, - path: "/v1/admin/resources/{resource_id}/disable", - permission: "resource:update", - permissions: ["resource:update"] - }, - disableResourceGroup: { - method: "POST", - operationId: API_OPERATIONS.disableResourceGroup, - path: "/v1/admin/resource-groups/{group_id}/disable", - permission: "resource-group:update", - permissions: ["resource-group:update"] - }, - disableResourceShopItem: { - method: "POST", - operationId: API_OPERATIONS.disableResourceShopItem, - path: "/v1/admin/resource-shop/items/{shop_item_id}/disable", - permission: "resource-shop:update", - permissions: ["resource-shop:update"] - }, - enableCountry: { - method: "POST", - operationId: API_OPERATIONS.enableCountry, - path: "/v1/admin/countries/{country_id}/enable", - permission: "country:status", - permissions: ["country:status"] - }, - enableGift: { - method: "POST", - operationId: API_OPERATIONS.enableGift, - path: "/v1/admin/gifts/{gift_id}/enable", - permission: "gift:status", - permissions: ["gift:status"] - }, - enableRegion: { - method: "POST", - operationId: API_OPERATIONS.enableRegion, - path: "/v1/admin/regions/{region_id}/enable", - permission: "region:status", - permissions: ["region:status"] - }, - enableResource: { - method: "POST", - operationId: API_OPERATIONS.enableResource, - path: "/v1/admin/resources/{resource_id}/enable", - permission: "resource:update", - permissions: ["resource:update"] - }, - enableResourceGroup: { - method: "POST", - operationId: API_OPERATIONS.enableResourceGroup, - path: "/v1/admin/resource-groups/{group_id}/enable", - permission: "resource-group:update", - permissions: ["resource-group:update"] - }, - enableResourceShopItem: { - method: "POST", - operationId: API_OPERATIONS.enableResourceShopItem, - path: "/v1/admin/resource-shop/items/{shop_item_id}/enable", - permission: "resource-shop:update", - permissions: ["resource-shop:update"] - }, - expireRoomRpsChallenge: { - method: "POST", - operationId: API_OPERATIONS.expireRoomRpsChallenge, - path: "/v1/admin/game/room-rps/challenges/{challenge_id}/expire", - permission: "game:update", - permissions: ["game:update"] - }, - exportCoinSellerLedger: { - method: "GET", - operationId: API_OPERATIONS.exportCoinSellerLedger, - path: "/v1/admin/operations/coin-seller-ledger/export", - permission: "coin-seller-ledger:view", - permissions: ["coin-seller-ledger:view"] - }, - exportLoginLogs: { - method: "GET", - operationId: API_OPERATIONS.exportLoginLogs, - path: "/v1/logs/login/export", - permission: "log:export", - permissions: ["log:export"] - }, - exportOperationLogs: { - method: "GET", - operationId: API_OPERATIONS.exportOperationLogs, - path: "/v1/logs/operations/export", - permission: "log:export", - permissions: ["log:export"] - }, - exportRechargeBills: { - method: "GET", - operationId: API_OPERATIONS.exportRechargeBills, - path: "/v1/admin/payment/recharge-bills/export", - permission: "payment-bill:view", - permissions: ["payment-bill:view"] - }, - exportUsers: { - method: "GET", - operationId: API_OPERATIONS.exportUsers, - path: "/v1/users/export", - permission: "user:export", - permissions: ["user:export"] - }, - generateDiceRobots: { - method: "POST", - operationId: API_OPERATIONS.generateDiceRobots, - path: "/v1/admin/game/robots/generate", - permission: "game:create", - permissions: ["game:create"] - }, - generatePrettyIds: { - method: "POST", - operationId: API_OPERATIONS.generatePrettyIds, - path: "/v1/admin/users/pretty-id-pools/{pool_id}/generate", - permission: "pretty-id:generate", - permissions: ["pretty-id:generate"] - }, - getCoinSellerSalaryRates: { - method: "GET", - operationId: API_OPERATIONS.getCoinSellerSalaryRates, - path: "/v1/admin/coin-seller-salary-rates/{region_id}", - permission: "coin-seller:exchange-rate", - permissions: ["coin-seller:exchange-rate"] - }, - getCountry: { - method: "GET", - operationId: API_OPERATIONS.getCountry, - path: "/v1/admin/countries/{country_id}", - permission: "country:view", - permissions: ["country:view"] - }, - getCPConfig: { - method: "GET", - operationId: API_OPERATIONS.getCPConfig, - path: "/v1/admin/activity/cp/config", - permission: "cp-config:view", - permissions: ["cp-config:view"] - }, - getCPWeeklyRankConfig: { - method: "GET", - operationId: API_OPERATIONS.getCPWeeklyRankConfig, - path: "/v1/admin/activity/cp-weekly-rank/config", - permission: "cp-weekly-rank:view", - permissions: ["cp-weekly-rank:view"] - }, - getCumulativeRechargeRewardConfig: { - method: "GET", - operationId: API_OPERATIONS.getCumulativeRechargeRewardConfig, - path: "/v1/admin/activity/cumulative-recharge-reward/config", - permission: "cumulative-recharge-reward:view", - permissions: ["cumulative-recharge-reward:view"] - }, - getFinanceScope: { - method: "GET", - operationId: API_OPERATIONS.getFinanceScope, - path: "/v1/admin/finance/scope", - permission: "finance:view", - permissions: ["finance:view"] - }, - getFirstRechargeRewardConfig: { - method: "GET", - operationId: API_OPERATIONS.getFirstRechargeRewardConfig, - path: "/v1/admin/activity/first-recharge-reward/config", - permission: "first-recharge-reward:view", - permissions: ["first-recharge-reward:view"] - }, - getHumanRoomRobotConfig: { - method: "GET", - operationId: API_OPERATIONS.getHumanRoomRobotConfig, - path: "/v1/admin/rooms/robot-rooms/human-config", - permission: "room-robot:view", - permissions: ["room-robot:view"] - }, - getInviteActivityRewardConfig: { - method: "GET", - operationId: API_OPERATIONS.getInviteActivityRewardConfig, - path: "/v1/admin/activity/invite-reward/config", - permission: "invite-activity-reward:view", - permissions: ["invite-activity-reward:view"] - }, - getJob: { - method: "GET", - operationId: API_OPERATIONS.getJob, - path: "/v1/jobs/{id}", - permission: "job:view", - permissions: ["job:view","country:update"] - }, - getLuckyGiftConfig: { - method: "GET", - operationId: API_OPERATIONS.getLuckyGiftConfig, - path: "/v1/admin/activity/lucky-gifts/v2/config", - permission: "lucky-gift:view", - permissions: ["lucky-gift:view"] - }, - getLuckyGiftDrawSummary: { - method: "GET", - operationId: API_OPERATIONS.getLuckyGiftDrawSummary, - path: "/v1/admin/activity/lucky-gifts/v2/draw-summary", - permission: "lucky-gift:view", - permissions: ["lucky-gift:view"] - }, - getRechargeBillOverview: { - method: "GET", - operationId: API_OPERATIONS.getRechargeBillOverview, - path: "/v1/admin/payment/recharge-bills/overview", - permission: "payment-bill:view", - permissions: ["payment-bill:view"] - }, - getRechargeBillSummary: { - method: "GET", - operationId: API_OPERATIONS.getRechargeBillSummary, - path: "/v1/admin/payment/recharge-bills/summary", - permission: "payment-bill:view", - permissions: ["payment-bill:view"] - }, - getRedPacket: { - method: "GET", - operationId: API_OPERATIONS.getRedPacket, - path: "/v1/admin/activity/red-packets/{packet_id}", - permission: "red-packet:view", - permissions: ["red-packet:view"] - }, - getRedPacketConfig: { - method: "GET", - operationId: API_OPERATIONS.getRedPacketConfig, - path: "/v1/admin/activity/red-packets/config", - permission: "red-packet:view", - permissions: ["red-packet:view"] - }, - getRegion: { - method: "GET", - operationId: API_OPERATIONS.getRegion, - path: "/v1/admin/regions/{region_id}", - permission: "region:view", - permissions: ["region:view"] - }, - getRegistrationRewardConfig: { - method: "GET", - operationId: API_OPERATIONS.getRegistrationRewardConfig, - path: "/v1/admin/activity/registration-reward/config", - permission: "registration-reward:view", - permissions: ["registration-reward:view"] - }, - getResource: { - method: "GET", - operationId: API_OPERATIONS.getResource, - path: "/v1/admin/resources/{resource_id}", - permission: "resource:view", - permissions: ["resource:view"] - }, - getResourceGroup: { - method: "GET", - operationId: API_OPERATIONS.getResourceGroup, - path: "/v1/admin/resource-groups/{group_id}", - permission: "resource-group:view", - permissions: ["resource-group:view"] - }, - getResourceIdentityAutoGrantConfig: { - method: "GET", - operationId: API_OPERATIONS.getResourceIdentityAutoGrantConfig, - path: "/v1/admin/resource-groups/identity-auto-grant-config", - permission: "resource-group:view", - permissions: ["resource-group:view"] - }, - getRiskConfig: { - method: "GET", - operationId: API_OPERATIONS.getRiskConfig, - path: "/v1/admin/users/risk-config", - permission: "risk-config:view", - permissions: ["risk-config:view"] - }, - getRoleDataScopes: { - method: "GET", - operationId: API_OPERATIONS.getRoleDataScopes, - path: "/v1/roles/{id}/data-scopes", - permission: "role:data-scope", - permissions: ["role:data-scope"] - }, - getRoomConfig: { - method: "GET", - operationId: API_OPERATIONS.getRoomConfig, - path: "/v1/admin/rooms/config", - permission: "room-config:view", - permissions: ["room-config:view"] - }, - getRoomRocketConfig: { - method: "GET", - operationId: API_OPERATIONS.getRoomRocketConfig, - path: "/v1/admin/activity/room-rocket/config", - permission: "room-rocket:view", - permissions: ["room-rocket:view"] - }, - getRoomRpsChallenge: { - method: "GET", - operationId: API_OPERATIONS.getRoomRpsChallenge, - path: "/v1/admin/game/room-rps/challenges/{challenge_id}", - permission: "game:view", - permissions: ["game:view"] - }, - getRoomRpsConfig: { - method: "GET", - operationId: API_OPERATIONS.getRoomRpsConfig, - path: "/v1/admin/game/room-rps/config", - permission: "game:view", - permissions: ["game:view"] - }, - getRoomTurnoverRewardConfig: { - method: "GET", - operationId: API_OPERATIONS.getRoomTurnoverRewardConfig, - path: "/v1/admin/activity/room-turnover-reward/config", - permission: "room-turnover-reward:view", - permissions: ["room-turnover-reward:view"] - }, - getRoomWhitelistConfig: { - method: "GET", - operationId: API_OPERATIONS.getRoomWhitelistConfig, - path: "/v1/admin/rooms/whitelist", - permission: "room-whitelist:view", - permissions: ["room-whitelist:view"] - }, - getSevenDayCheckInConfig: { - method: "GET", - operationId: API_OPERATIONS.getSevenDayCheckInConfig, - path: "/v1/admin/activity/seven-day-checkin/config", - permission: "seven-day-checkin:view", - permissions: ["seven-day-checkin:view"] - }, - getSocialBiFunnel: { - method: "GET", - operationId: API_OPERATIONS.getSocialBiFunnel, - path: "/v1/admin/databi/social/funnel", - permission: "overview:view", - permissions: ["overview:view"] - }, - getSocialBiKpi: { - method: "GET", - operationId: API_OPERATIONS.getSocialBiKpi, - path: "/v1/admin/databi/social/kpi", - permission: "overview:view", - permissions: ["overview:view"] - }, - getSocialBiMaster: { - method: "GET", - operationId: API_OPERATIONS.getSocialBiMaster, - path: "/v1/admin/databi/social/master", - permission: "overview:view", - permissions: ["overview:view"] - }, - getSocialBiOverview: { - method: "GET", - operationId: API_OPERATIONS.getSocialBiOverview, - path: "/v1/admin/databi/social/overview", - permission: "overview:view", - permissions: ["overview:view"] - }, - getSocialBiRequirements: { - method: "GET", - operationId: API_OPERATIONS.getSocialBiRequirements, - path: "/v1/admin/databi/social/requirements", - permission: "overview:view", - permissions: ["overview:view"] - }, - getTemporaryPaymentLink: { - method: "GET", - operationId: API_OPERATIONS.getTemporaryPaymentLink, - path: "/v1/admin/payment/temporary-links/{order_id}", - permission: "payment-temporary-link:view", - permissions: ["payment-temporary-link:view"] - }, - getUser: { - method: "GET", - operationId: API_OPERATIONS.getUser, - path: "/v1/users/{id}", - permission: "user:view", - permissions: ["user:view"] - }, - getWeeklyStarCycle: { - method: "GET", - operationId: API_OPERATIONS.getWeeklyStarCycle, - path: "/v1/admin/activity/weekly-star/cycles/{cycle_id}", - permission: "weekly-star:view", - permissions: ["weekly-star:view"] - }, - getWheelConfig: { - method: "GET", - operationId: API_OPERATIONS.getWheelConfig, - path: "/v1/admin/activity/wheel/config", - permission: "wheel:view", - permissions: ["wheel:view"] - }, - getWheelDrawSummary: { - method: "GET", - operationId: API_OPERATIONS.getWheelDrawSummary, - path: "/v1/admin/activity/wheel/draw-summary", - permission: "wheel:view", - permissions: ["wheel:view"] - }, - grantFinanceCoinSellerRechargeOrder: { - method: "POST", - operationId: API_OPERATIONS.grantFinanceCoinSellerRechargeOrder, - path: "/v1/admin/finance/orders/coin-seller-recharges/{order_id}/grant", - permission: "finance-order:coin-seller-recharge:grant", - permissions: ["finance-order:coin-seller-recharge:grant"] - }, - grantPrettyId: { - method: "POST", - operationId: API_OPERATIONS.grantPrettyId, - path: "/v1/admin/users/pretty-ids/grant", - permission: "pretty-id:grant", - permissions: ["pretty-id:grant"] - }, - grantResource: { - method: "POST", - operationId: API_OPERATIONS.grantResource, - path: "/v1/admin/resource-grants/resource", - permission: "resource-grant:create", - permissions: ["resource-grant:create"] - }, - grantResourceGroup: { - method: "POST", - operationId: API_OPERATIONS.grantResourceGroup, - path: "/v1/admin/resource-grants/group", - permission: "resource-grant:create", - permissions: ["resource-grant:create"] - }, - listAchievementDefinitions: { - method: "GET", - operationId: API_OPERATIONS.listAchievementDefinitions, - path: "/v1/admin/activity/achievements", - permission: "achievement:view", - permissions: ["achievement:view"] - }, - listAgencies: { - method: "GET", - operationId: API_OPERATIONS.listAgencies, - path: "/v1/admin/agencies", - permission: "agency:view", - permissions: ["agency:view"] - }, - listApps: { - method: "GET", - operationId: API_OPERATIONS.listApps, - path: "/v1/admin/apps" - }, - listAppVersions: { - method: "GET", - operationId: API_OPERATIONS.listAppVersions, - path: "/v1/admin/app-config/versions", - permission: "app-version:view", - permissions: ["app-version:view"] - }, - listAvailableRoomRobots: { - method: "GET", - operationId: API_OPERATIONS.listAvailableRoomRobots, - path: "/v1/admin/rooms/robot-rooms/available-robots", - permission: "room-robot:view", - permissions: ["room-robot:view"] - }, - listBanners: { - method: "GET", - operationId: API_OPERATIONS.listBanners, - path: "/v1/admin/app-config/banners", - permission: "app-config:view", - permissions: ["app-config:view"] - }, - listBDLeaders: { - method: "GET", - operationId: API_OPERATIONS.listBDLeaders, - path: "/v1/admin/bd-leaders", - permission: "bd:view", - permissions: ["bd:view"] - }, - listBDs: { - method: "GET", - operationId: API_OPERATIONS.listBDs, - path: "/v1/admin/bds", - permission: "bd:view", - permissions: ["bd:view"] - }, - listCatalog: { - method: "GET", - operationId: API_OPERATIONS.listCatalog, - path: "/v1/admin/game/games", - permission: "game:view", - permissions: ["game:view"] - }, - listCoinAdjustments: { - method: "GET", - operationId: API_OPERATIONS.listCoinAdjustments, - path: "/v1/admin/operations/coin-adjustments", - permission: "coin-adjustment:view", - permissions: ["coin-adjustment:view"] - }, - listCoinLedger: { - method: "GET", - operationId: API_OPERATIONS.listCoinLedger, - path: "/v1/admin/operations/coin-ledger", - permission: "coin-ledger:view", - permissions: ["coin-ledger:view"] - }, - listCoinSellerLedger: { - method: "GET", - operationId: API_OPERATIONS.listCoinSellerLedger, - path: "/v1/admin/operations/coin-seller-ledger", - permission: "coin-seller-ledger:view", - permissions: ["coin-seller-ledger:view"] - }, - listCoinSellers: { - method: "GET", - operationId: API_OPERATIONS.listCoinSellers, - path: "/v1/admin/coin-sellers", - permission: "coin-seller:view", - permissions: ["coin-seller:view"] - }, - listCountries: { - method: "GET", - operationId: API_OPERATIONS.listCountries, - path: "/v1/admin/countries", - permission: "country:view", - permissions: ["country:view"] - }, - listCPApplications: { - method: "GET", - operationId: API_OPERATIONS.listCPApplications, - path: "/v1/admin/activity/cp/applications", - permission: "cp-config:view", - permissions: ["cp-config:view"] - }, - listCPRelationships: { - method: "GET", - operationId: API_OPERATIONS.listCPRelationships, - path: "/v1/admin/activity/cp/relationships", - permission: "cp-config:view", - permissions: ["cp-config:view"] - }, - listCPWeeklyRankSettlements: { - method: "GET", - operationId: API_OPERATIONS.listCPWeeklyRankSettlements, - path: "/v1/admin/activity/cp-weekly-rank/settlements", - permission: "cp-weekly-rank:view", - permissions: ["cp-weekly-rank:view"] - }, - listCumulativeRechargeRewardGrants: { - method: "GET", - operationId: API_OPERATIONS.listCumulativeRechargeRewardGrants, - path: "/v1/admin/activity/cumulative-recharge-reward/grants", - permission: "cumulative-recharge-reward:view", - permissions: ["cumulative-recharge-reward:view"] - }, - listDiceRobots: { - method: "GET", - operationId: API_OPERATIONS.listDiceRobots, - path: "/v1/admin/game/robots", - permission: "game:view", - permissions: ["game:view"] - }, - listEmojiPackCategories: { - method: "GET", - operationId: API_OPERATIONS.listEmojiPackCategories, - path: "/v1/admin/emoji-packs/categories", - permission: "emoji-pack:view", - permissions: ["emoji-pack:view"] - }, - listEmojiPacks: { - method: "GET", - operationId: API_OPERATIONS.listEmojiPacks, - path: "/v1/admin/emoji-packs", - permission: "emoji-pack:view", - permissions: ["emoji-pack:view"] - }, - listExploreTabs: { - method: "GET", - operationId: API_OPERATIONS.listExploreTabs, - path: "/v1/admin/app-config/explore-tabs", - permission: "app-config:view", - permissions: ["app-config:view"] - }, - listFinanceApplications: { - method: "GET", - operationId: API_OPERATIONS.listFinanceApplications, - path: "/v1/admin/finance/applications", - permission: "finance-application:audit", - permissions: ["finance-application:audit"] - }, - listFinanceCoinSellerRechargeOrders: { - method: "GET", - operationId: API_OPERATIONS.listFinanceCoinSellerRechargeOrders, - path: "/v1/admin/finance/orders/coin-seller-recharges", - permission: "finance-order:coin-seller-recharge:view", - permissions: ["finance-order:coin-seller-recharge:view"] - }, - listFinanceWithdrawalApplications: { - method: "GET", - operationId: API_OPERATIONS.listFinanceWithdrawalApplications, - path: "/v1/admin/finance/withdrawal-applications", - permission: "finance-withdrawal:view", - permissions: ["finance-withdrawal:view","finance-withdrawal:audit","finance-application:audit"] - }, - listFirstRechargeRewardClaims: { - method: "GET", - operationId: API_OPERATIONS.listFirstRechargeRewardClaims, - path: "/v1/admin/activity/first-recharge-reward/claims", - permission: "first-recharge-reward:view", - permissions: ["first-recharge-reward:view"] - }, - listGifts: { - method: "GET", - operationId: API_OPERATIONS.listGifts, - path: "/v1/admin/gifts", - permission: "gift:view", - permissions: ["gift:view"] - }, - listGiftTypes: { - method: "GET", - operationId: API_OPERATIONS.listGiftTypes, - path: "/v1/admin/gift-types", - permission: "gift:view", - permissions: ["gift:view"] - }, - listH5Links: { - method: "GET", - operationId: API_OPERATIONS.listH5Links, - path: "/v1/admin/app-config/h5-links", - permission: "app-config:view", - permissions: ["app-config:view"] - }, - listHostAgencyPolicies: { - method: "GET", - operationId: API_OPERATIONS.listHostAgencyPolicies, - path: "/v1/admin/host-agency-policies", - permission: "host-agency-policy:view", - permissions: ["host-agency-policy:view"] - }, - listHosts: { - method: "GET", - operationId: API_OPERATIONS.listHosts, - path: "/v1/admin/hosts", - permission: "host:view", - permissions: ["host:view"] - }, - listHostSalarySettlements: { - method: "GET", - operationId: API_OPERATIONS.listHostSalarySettlements, - path: "/v1/admin/host-salary-settlements", - permission: "host-salary-settlement:view", - permissions: ["host-salary-settlement:view"] - }, - listHostWithdrawals: { - method: "GET", - operationId: API_OPERATIONS.listHostWithdrawals, - path: "/v1/admin/host-withdrawals", - permission: "host-withdrawal:view", - permissions: ["host-withdrawal:view"] - }, - listInviteActivityRewardClaims: { - method: "GET", - operationId: API_OPERATIONS.listInviteActivityRewardClaims, - path: "/v1/admin/activity/invite-reward/claims", - permission: "invite-activity-reward:view", - permissions: ["invite-activity-reward:view"] - }, - listJobs: { - method: "GET", - operationId: API_OPERATIONS.listJobs, - path: "/v1/jobs", - permission: "job:view", - permissions: ["job:view"] - }, - listLevelConfig: { - method: "GET", - operationId: API_OPERATIONS.listLevelConfig, - path: "/v1/admin/users/level-config", - permission: "level-config:view", - permissions: ["level-config:view"] - }, - listLoginLogs: { - method: "GET", - operationId: API_OPERATIONS.listLoginLogs, - path: "/v1/logs/login", - permission: "log:view", - permissions: ["log:view"] - }, - listLuckyGiftConfigs: { - method: "GET", - operationId: API_OPERATIONS.listLuckyGiftConfigs, - path: "/v1/admin/activity/lucky-gifts/v2/configs", - permission: "lucky-gift:view", - permissions: ["lucky-gift:view"] - }, - listLuckyGiftDraws: { - method: "GET", - operationId: API_OPERATIONS.listLuckyGiftDraws, - path: "/v1/admin/activity/lucky-gifts/v2/draws", - permission: "lucky-gift:view", - permissions: ["lucky-gift:view"] - }, - listManagers: { - method: "GET", - operationId: API_OPERATIONS.listManagers, - path: "/v1/admin/managers", - permission: "bd:view", - permissions: ["bd:view"] - }, - listMyFinanceApplications: { - method: "GET", - operationId: API_OPERATIONS.listMyFinanceApplications, - path: "/v1/admin/finance/applications/mine", - permission: "finance-application:create", - permissions: ["finance-application:create"] - }, - listOperationLogs: { - method: "GET", - operationId: API_OPERATIONS.listOperationLogs, - path: "/v1/logs/operations", - permission: "log:view", - permissions: ["log:view"] - }, - listPermissions: { - method: "GET", - operationId: API_OPERATIONS.listPermissions, - path: "/v1/permissions", - permission: "permission:view", - permissions: ["permission:view","role:permission","role:manage"] - }, - listPlatformGrantRecords: { - method: "GET", - operationId: API_OPERATIONS.listPlatformGrantRecords, - path: "/v1/statistics/platform-grants/records", - permission: "overview:view", - permissions: ["overview:view"] - }, - listPlatformGrantUsers: { - method: "GET", - operationId: API_OPERATIONS.listPlatformGrantUsers, - path: "/v1/statistics/platform-grants/users", - permission: "overview:view", - permissions: ["overview:view"] - }, - listPlatforms: { - method: "GET", - operationId: API_OPERATIONS.listPlatforms, - path: "/v1/admin/game/platforms", - permission: "game:view", - permissions: ["game:view"] - }, - listPolicyInstances: { - method: "GET", - operationId: API_OPERATIONS.listPolicyInstances, - path: "/v1/admin/policy-instances", - permission: "policy-template:view", - permissions: ["policy-template:view"] - }, - listPolicyTemplates: { - method: "GET", - operationId: API_OPERATIONS.listPolicyTemplates, - path: "/v1/admin/policy-templates", - permission: "policy-template:view", - permissions: ["policy-template:view"] - }, - listPopups: { - method: "GET", - operationId: API_OPERATIONS.listPopups, - path: "/v1/admin/app-config/popups", - permission: "app-config:view", - permissions: ["app-config:view"] - }, - listPrettyIdPools: { - method: "GET", - operationId: API_OPERATIONS.listPrettyIdPools, - path: "/v1/admin/users/pretty-id-pools", - permission: "pretty-id:view", - permissions: ["pretty-id:view"] - }, - listPrettyIds: { - method: "GET", - operationId: API_OPERATIONS.listPrettyIds, - path: "/v1/admin/users/pretty-ids", - permission: "pretty-id:view", - permissions: ["pretty-id:view"] - }, - listRechargeApps: { - method: "GET", - operationId: API_OPERATIONS.listRechargeApps, - path: "/v1/admin/payment/recharge-apps", - permission: "payment-bill:view", - permissions: ["payment-bill:view"] - }, - listRechargeBills: { - method: "GET", - operationId: API_OPERATIONS.listRechargeBills, - path: "/v1/admin/payment/recharge-bills", - permission: "payment-bill:view", - permissions: ["payment-bill:view"] - }, - listRechargeProducts: { - method: "GET", - operationId: API_OPERATIONS.listRechargeProducts, - path: "/v1/admin/payment/recharge-products", - permission: "payment-product:view", - permissions: ["payment-product:view"] - }, - listRechargeRegions: { - method: "GET", - operationId: API_OPERATIONS.listRechargeRegions, - path: "/v1/admin/payment/recharge-regions", - permission: "payment-bill:view", - permissions: ["payment-bill:view"] - }, - listRedPackets: { - method: "GET", - operationId: API_OPERATIONS.listRedPackets, - path: "/v1/admin/activity/red-packets", - permission: "red-packet:view", - permissions: ["red-packet:view"] - }, - listRegionBlocks: { - method: "GET", - operationId: API_OPERATIONS.listRegionBlocks, - path: "/v1/admin/users/region-blocks", - permission: "region-block:view", - permissions: ["region-block:view"] - }, - listRegions: { - method: "GET", - operationId: API_OPERATIONS.listRegions, - path: "/v1/admin/regions", - permission: "region:view", - permissions: ["region:view"] - }, - listRegistrationRewardClaims: { - method: "GET", - operationId: API_OPERATIONS.listRegistrationRewardClaims, - path: "/v1/admin/activity/registration-reward/claims", - permission: "registration-reward:view", - permissions: ["registration-reward:view"] - }, - listReports: { - method: "GET", - operationId: API_OPERATIONS.listReports, - path: "/v1/admin/operations/reports", - permission: "report:view", - permissions: ["report:view"] - }, - listResourceGrants: { - method: "GET", - operationId: API_OPERATIONS.listResourceGrants, - path: "/v1/admin/resource-grants", - permission: "resource-grant:view", - permissions: ["resource-grant:view"] - }, - listResourceGroups: { - method: "GET", - operationId: API_OPERATIONS.listResourceGroups, - path: "/v1/admin/resource-groups", - permission: "resource-group:view", - permissions: ["resource-group:view"] - }, - listResources: { - method: "GET", - operationId: API_OPERATIONS.listResources, - path: "/v1/admin/resources", - permission: "resource:view", - permissions: ["resource:view"] - }, - listResourceShopItems: { - method: "GET", - operationId: API_OPERATIONS.listResourceShopItems, - path: "/v1/admin/resource-shop/items", - permission: "resource-shop:view", - permissions: ["resource-shop:view"] - }, - listResourceShopPurchaseOrders: { - method: "GET", - operationId: API_OPERATIONS.listResourceShopPurchaseOrders, - path: "/v1/admin/resource-shop/purchase-orders", - permission: "resource-shop:view", - permissions: ["resource-shop:view"] - }, - listRobotRooms: { - method: "GET", - operationId: API_OPERATIONS.listRobotRooms, - path: "/v1/admin/rooms/robot-rooms", - permission: "room-robot:view", - permissions: ["room-robot:view"] - }, - listRoles: { - method: "GET", - operationId: API_OPERATIONS.listRoles, - path: "/v1/roles", - permission: "role:view", - permissions: ["role:view"] - }, - listRoomPins: { - method: "GET", - operationId: API_OPERATIONS.listRoomPins, - path: "/v1/admin/rooms/pins", - permission: "room-pin:view", - permissions: ["room-pin:view"] - }, - listRoomRpsChallenges: { - method: "GET", - operationId: API_OPERATIONS.listRoomRpsChallenges, - path: "/v1/admin/game/room-rps/challenges", - permission: "game:view", - permissions: ["game:view"] - }, - listRooms: { - method: "GET", - operationId: API_OPERATIONS.listRooms, - path: "/v1/admin/rooms", - permission: "room:view", - permissions: ["room:view"] - }, - listRoomTurnoverRewardSettlements: { - method: "GET", - operationId: API_OPERATIONS.listRoomTurnoverRewardSettlements, - path: "/v1/admin/activity/room-turnover-reward/settlements", - permission: "room-turnover-reward:view", - permissions: ["room-turnover-reward:view"] - }, - listSelfGames: { - method: "GET", - operationId: API_OPERATIONS.listSelfGames, - path: "/v1/admin/game/self-games", - permission: "game:view", - permissions: ["game:view"] - }, - listSevenDayCheckInClaims: { - method: "GET", - operationId: API_OPERATIONS.listSevenDayCheckInClaims, - path: "/v1/admin/activity/seven-day-checkin/claims", - permission: "seven-day-checkin:view", - permissions: ["seven-day-checkin:view"] - }, - listSplashScreens: { - method: "GET", - operationId: API_OPERATIONS.listSplashScreens, - path: "/v1/admin/app-config/splash-screens", - permission: "app-config:view", - permissions: ["app-config:view"] - }, - listSystemMenus: { - method: "GET", - operationId: API_OPERATIONS.listSystemMenus, - path: "/v1/system/menus", - permission: "menu:view", - permissions: ["menu:view"] - }, - listTaskDefinitions: { - method: "GET", - operationId: API_OPERATIONS.listTaskDefinitions, - path: "/v1/admin/activity/daily-tasks", - permission: "daily-task:view", - permissions: ["daily-task:view"] - }, - listTeams: { - method: "GET", - operationId: API_OPERATIONS.listTeams, - path: "/v1/teams", - permission: "team:view", - permissions: ["team:view"] - }, - listTeamSalaryPolicies: { - method: "GET", - operationId: API_OPERATIONS.listTeamSalaryPolicies, - path: "/v1/admin/team-salary-policies", - permission: "team-salary-policy:view", - permissions: ["team-salary-policy:view"] - }, - listTeamUsers: { - method: "GET", - operationId: API_OPERATIONS.listTeamUsers, - path: "/v1/teams/{team_id}/users", - permission: "user:view", - permissions: ["user:view"] - }, - listTemporaryPaymentLinks: { - method: "GET", - operationId: API_OPERATIONS.listTemporaryPaymentLinks, - path: "/v1/admin/payment/temporary-links", - permission: "payment-temporary-link:view", - permissions: ["payment-temporary-link:view"] - }, - listThirdPartyPaymentChannels: { - method: "GET", - operationId: API_OPERATIONS.listThirdPartyPaymentChannels, - path: "/v1/admin/payment/third-party-channels", - permission: "payment-third-party:view", - permissions: ["payment-third-party:view"] - }, - listUserFinanceScopes: { - method: "GET", - operationId: API_OPERATIONS.listUserFinanceScopes, - path: "/v1/users/{id}/finance-scopes", - permission: "user:view", - permissions: ["user:view"] - }, - listUserLeaderboards: { - method: "GET", - operationId: API_OPERATIONS.listUserLeaderboards, - path: "/v1/admin/activity/user-leaderboards", - permission: "user-leaderboard:view", - permissions: ["user-leaderboard:view"] - }, - listUsers: { - method: "GET", - operationId: API_OPERATIONS.listUsers, - path: "/v1/users", - permission: "user:view", - permissions: ["user:view"] - }, - listWeeklyStarCycles: { - method: "GET", - operationId: API_OPERATIONS.listWeeklyStarCycles, - path: "/v1/admin/activity/weekly-star/cycles", - permission: "weekly-star:view", - permissions: ["weekly-star:view"] - }, - listWeeklyStarLeaderboard: { - method: "GET", - operationId: API_OPERATIONS.listWeeklyStarLeaderboard, - path: "/v1/admin/activity/weekly-star/cycles/{cycle_id}/leaderboard", - permission: "weekly-star:view", - permissions: ["weekly-star:view"] - }, - listWeeklyStarSettlements: { - method: "GET", - operationId: API_OPERATIONS.listWeeklyStarSettlements, - path: "/v1/admin/activity/weekly-star/cycles/{cycle_id}/settlements", - permission: "weekly-star:settle", - permissions: ["weekly-star:settle"] - }, - listWheelDraws: { - method: "GET", - operationId: API_OPERATIONS.listWheelDraws, - path: "/v1/admin/activity/wheel/draws", - permission: "wheel:view", - permissions: ["wheel:view"] - }, - login: { - method: "POST", - operationId: API_OPERATIONS.login, - path: "/v1/auth/login" - }, - logout: { - method: "POST", - operationId: API_OPERATIONS.logout, - path: "/v1/auth/logout" - }, - lookupCoinAdjustmentTarget: { - method: "GET", - operationId: API_OPERATIONS.lookupCoinAdjustmentTarget, - path: "/v1/admin/operations/coin-adjustments/target", - permission: "coin-adjustment:create", - permissions: ["coin-adjustment:create"] - }, - lookupResourceGrantTarget: { - method: "GET", - operationId: API_OPERATIONS.lookupResourceGrantTarget, - path: "/v1/admin/resource-grants/target", - permission: "resource-grant:create", - permissions: ["resource-grant:create"] - }, - me: { - method: "GET", - operationId: API_OPERATIONS.me, - path: "/v1/auth/me" - }, - navigationMenus: { - method: "GET", - operationId: API_OPERATIONS.navigationMenus, - path: "/v1/navigation/menus" - }, - publishHostAgencyPolicy: { - method: "POST", - operationId: API_OPERATIONS.publishHostAgencyPolicy, - path: "/v1/admin/host-agency-policies/{policy_id}/publish", - permission: "host-agency-policy:publish", - permissions: ["host-agency-policy:publish"] - }, - publishPolicyInstance: { - method: "POST", - operationId: API_OPERATIONS.publishPolicyInstance, - path: "/v1/admin/policy-instances/{instance_id}/publish", - permission: "policy-instance:publish", - permissions: ["policy-instance:publish"] - }, - recyclePrettyId: { - method: "POST", - operationId: API_OPERATIONS.recyclePrettyId, - path: "/v1/admin/users/pretty-ids/{pretty_id}/recycle", - permission: "pretty-id:update", - permissions: ["pretty-id:update"] - }, - refresh: { - method: "POST", - operationId: API_OPERATIONS.refresh, - path: "/v1/auth/refresh" - }, - refreshGoogleRechargePaid: { - method: "POST", - operationId: API_OPERATIONS.refreshGoogleRechargePaid, - path: "/v1/admin/payment/recharge-bills/google-paid/refresh", - permission: "payment-bill:view", - permissions: ["payment-bill:view"] - }, - rejectFinanceApplication: { - method: "POST", - operationId: API_OPERATIONS.rejectFinanceApplication, - path: "/v1/admin/finance/applications/{application_id}/reject", - permission: "finance-application:audit", - permissions: ["finance-application:audit"] - }, - rejectFinanceWithdrawalApplication: { - method: "POST", - operationId: API_OPERATIONS.rejectFinanceWithdrawalApplication, - path: "/v1/admin/finance/withdrawal-applications/{application_id}/reject", - permission: "finance-withdrawal:audit", - permissions: ["finance-withdrawal:audit","finance-application:audit"] - }, - renameCountryCode: { - method: "POST", - operationId: API_OPERATIONS.renameCountryCode, - path: "/v1/admin/countries/{country_id}/rename-code", - permission: "country:update", - permissions: ["country:update"] - }, - replaceCoinSellerSalaryRates: { - method: "PUT", - operationId: API_OPERATIONS.replaceCoinSellerSalaryRates, - path: "/v1/admin/coin-seller-salary-rates/{region_id}", - permission: "coin-seller:exchange-rate", - permissions: ["coin-seller:exchange-rate"] - }, - replaceRegionBlocks: { - method: "PUT", - operationId: API_OPERATIONS.replaceRegionBlocks, - path: "/v1/admin/users/region-blocks", - permission: "region-block:update", - permissions: ["region-block:update"] - }, - replaceRegionCountries: { - method: "PUT", - operationId: API_OPERATIONS.replaceRegionCountries, - path: "/v1/admin/regions/{region_id}/countries", - permission: "region:update", - permissions: ["region:update"] - }, - replaceRoleDataScopes: { - method: "PUT", - operationId: API_OPERATIONS.replaceRoleDataScopes, - path: "/v1/roles/{id}/data-scopes", - permission: "role:data-scope", - permissions: ["role:data-scope"] - }, - replaceRolePermissions: { - method: "PUT", - operationId: API_OPERATIONS.replaceRolePermissions, - path: "/v1/roles/{id}/permissions", - permission: "role:permission", - permissions: ["role:permission","role:manage"] - }, - replaceUserFinanceScopes: { - method: "PUT", - operationId: API_OPERATIONS.replaceUserFinanceScopes, - path: "/v1/users/{id}/finance-scopes", - permission: "user:update", - permissions: ["user:update"] - }, - resetUserPassword: { - method: "POST", - operationId: API_OPERATIONS.resetUserPassword, - path: "/v1/users/{id}/reset-password", - permission: "user:reset-password", - permissions: ["user:reset-password"] - }, - retryRedPacketRefund: { - method: "POST", - operationId: API_OPERATIONS.retryRedPacketRefund, - path: "/v1/admin/activity/red-packets/refund/retry", - permission: "red-packet:update", - permissions: ["red-packet:update"] - }, - retryRoomRpsSettlement: { - method: "POST", - operationId: API_OPERATIONS.retryRoomRpsSettlement, - path: "/v1/admin/game/room-rps/challenges/{challenge_id}/retry-settlement", - permission: "game:update", - permissions: ["game:update"] - }, - retryRoomTurnoverRewardSettlement: { - method: "POST", - operationId: API_OPERATIONS.retryRoomTurnoverRewardSettlement, - path: "/v1/admin/activity/room-turnover-reward/settlements/{settlement_id}/retry", - permission: "room-turnover-reward:retry", - permissions: ["room-turnover-reward:retry"] - }, - revokeResourceGrant: { - method: "POST", - operationId: API_OPERATIONS.revokeResourceGrant, - path: "/v1/admin/resource-grants/{grant_id}/revoke", - permission: "resource-grant:revoke", - permissions: ["resource-grant:revoke"] - }, - savePolicyTemplate: { - method: "POST", - operationId: API_OPERATIONS.savePolicyTemplate, - path: "/v1/admin/policy-templates", - permission: "policy-template:create", - permissions: ["policy-template:create"] - }, - search: { - method: "GET", - operationId: API_OPERATIONS.search, - path: "/v1/search" - }, - selfGameStatisticsOverview: { - method: "GET", - operationId: API_OPERATIONS.selfGameStatisticsOverview, - path: "/v1/statistics/self-games/overview", - permission: "overview:view", - permissions: ["overview:view"] - }, - setAgencyJoinEnabled: { - method: "POST", - operationId: API_OPERATIONS.setAgencyJoinEnabled, - path: "/v1/admin/agencies/{agency_id}/join-enabled", - permission: "agency:status", - permissions: ["agency:status"] - }, - setAgencyStatus: { - method: "PATCH", - operationId: API_OPERATIONS.setAgencyStatus, - path: "/v1/admin/agencies/{agency_id}/status", - permission: "agency:status", - permissions: ["agency:status"] - }, - setBDLeaderStatus: { - method: "PATCH", - operationId: API_OPERATIONS.setBDLeaderStatus, - path: "/v1/admin/bd-leaders/{user_id}/status", - permission: "bd:update", - permissions: ["bd:update"] - }, - setBDStatus: { - method: "PATCH", - operationId: API_OPERATIONS.setBDStatus, - path: "/v1/admin/bds/{user_id}/status", - permission: "bd:update", - permissions: ["bd:update"] - }, - setCoinSellerStatus: { - method: "PATCH", - operationId: API_OPERATIONS.setCoinSellerStatus, - path: "/v1/admin/coin-sellers/{user_id}/status", - permission: "coin-seller:update", - permissions: ["coin-seller:update"] - }, - setDiceRobotStatus: { - method: "PATCH", - operationId: API_OPERATIONS.setDiceRobotStatus, - path: "/v1/admin/game/robots/{user_id}/status", - permission: "game:update", - permissions: ["game:update"] - }, - setGameStatus: { - method: "PATCH", - operationId: API_OPERATIONS.setGameStatus, - path: "/v1/admin/game/games/{game_id}/status", - permission: "game:status", - permissions: ["game:status"] - }, - setPrettyIdStatus: { - method: "POST", - operationId: API_OPERATIONS.setPrettyIdStatus, - path: "/v1/admin/users/pretty-ids/{pretty_id}/status", - permission: "pretty-id:update", - permissions: ["pretty-id:update"] - }, - setTaskDefinitionStatus: { - method: "POST", - operationId: API_OPERATIONS.setTaskDefinitionStatus, - path: "/v1/admin/activity/daily-tasks/{task_id}/status", - permission: "daily-task:status", - permissions: ["daily-task:status"] - }, - setThirdPartyPaymentMethodStatus: { - method: "PATCH", - operationId: API_OPERATIONS.setThirdPartyPaymentMethodStatus, - path: "/v1/admin/payment/third-party-methods/{method_id}/status", - permission: "payment-third-party:update", - permissions: ["payment-third-party:update"] - }, - setWeeklyStarCycleStatus: { - method: "PATCH", - operationId: API_OPERATIONS.setWeeklyStarCycleStatus, - path: "/v1/admin/activity/weekly-star/cycles/{cycle_id}/status", - permission: "weekly-star:update", - permissions: ["weekly-star:update"] - }, - sortMenus: { - method: "PUT", - operationId: API_OPERATIONS.sortMenus, - path: "/v1/system/menus/sort", - permission: "menu:sort", - permissions: ["menu:sort"] - }, - startRobotRoom: { - method: "POST", - operationId: API_OPERATIONS.startRobotRoom, - path: "/v1/admin/rooms/robot-rooms/{room_id}/start", - permission: "room-robot:update", - permissions: ["room-robot:update"] - }, - statisticsOverview: { - method: "GET", - operationId: API_OPERATIONS.statisticsOverview, - path: "/v1/statistics/overview", - permission: "overview:view", - permissions: ["overview:view"] - }, - stopRobotRoom: { - method: "POST", - operationId: API_OPERATIONS.stopRobotRoom, - path: "/v1/admin/rooms/robot-rooms/{room_id}/stop", - permission: "room-robot:update", - permissions: ["room-robot:update"] - }, - syncPermissions: { - method: "POST", - operationId: API_OPERATIONS.syncPermissions, - path: "/v1/permissions/sync", - permission: "permission:sync", - permissions: ["permission:sync"] - }, - syncThirdPartyPaymentMethods: { - method: "POST", - operationId: API_OPERATIONS.syncThirdPartyPaymentMethods, - path: "/v1/admin/payment/third-party-methods/sync", - permission: "payment-third-party:update", - permissions: ["payment-third-party:update"] - }, - syncThirdPartyPaymentRates: { - method: "POST", - operationId: API_OPERATIONS.syncThirdPartyPaymentRates, - path: "/v1/admin/payment/third-party-rates/sync", - permission: "payment-third-party:update", - permissions: ["payment-third-party:update"] - }, - updateAchievementDefinition: { - method: "PUT", - operationId: API_OPERATIONS.updateAchievementDefinition, - path: "/v1/admin/activity/achievements/{achievement_id}", - permission: "achievement:update", - permissions: ["achievement:update"] - }, - updateAppVersion: { - method: "PUT", - operationId: API_OPERATIONS.updateAppVersion, - path: "/v1/admin/app-config/versions/{version_id}", - permission: "app-version:update", - permissions: ["app-version:update"] - }, - updateBanner: { - method: "PUT", - operationId: API_OPERATIONS.updateBanner, - path: "/v1/admin/app-config/banners/{banner_id}", - permission: "app-config:update", - permissions: ["app-config:update"] - }, - updateCatalog: { - method: "PATCH", - operationId: API_OPERATIONS.updateCatalog, - path: "/v1/admin/game/games/{game_id}", - permission: "game:update", - permissions: ["game:update"] - }, - updateCountry: { - method: "PATCH", - operationId: API_OPERATIONS.updateCountry, - path: "/v1/admin/countries/{country_id}", - permission: "country:update", - permissions: ["country:update"] - }, - updateCPConfig: { - method: "PUT", - operationId: API_OPERATIONS.updateCPConfig, - path: "/v1/admin/activity/cp/config", - permission: "cp-config:update", - permissions: ["cp-config:update"] - }, - updateCPWeeklyRankConfig: { - method: "PUT", - operationId: API_OPERATIONS.updateCPWeeklyRankConfig, - path: "/v1/admin/activity/cp-weekly-rank/config", - permission: "cp-weekly-rank:update", - permissions: ["cp-weekly-rank:update"] - }, - updateCumulativeRechargeRewardConfig: { - method: "PUT", - operationId: API_OPERATIONS.updateCumulativeRechargeRewardConfig, - path: "/v1/admin/activity/cumulative-recharge-reward/config", - permission: "cumulative-recharge-reward:update", - permissions: ["cumulative-recharge-reward:update"] - }, - updateDiceConfig: { - method: "PATCH", - operationId: API_OPERATIONS.updateDiceConfig, - path: "/v1/admin/game/self-games/{game_id}/config", - permission: "game:update", - permissions: ["game:update"] - }, - updateExploreTab: { - method: "PUT", - operationId: API_OPERATIONS.updateExploreTab, - path: "/v1/admin/app-config/explore-tabs/{tab_id}", - permission: "app-config:update", - permissions: ["app-config:update"] - }, - updateFirstRechargeRewardConfig: { - method: "PUT", - operationId: API_OPERATIONS.updateFirstRechargeRewardConfig, - path: "/v1/admin/activity/first-recharge-reward/config", - permission: "first-recharge-reward:update", - permissions: ["first-recharge-reward:update"] - }, - updateGift: { - method: "PUT", - operationId: API_OPERATIONS.updateGift, - path: "/v1/admin/gifts/{gift_id}", - permission: "gift:update", - permissions: ["gift:update"] - }, - updateGiftType: { - method: "PUT", - operationId: API_OPERATIONS.updateGiftType, - path: "/v1/admin/gift-types/{type_code}", - permission: "gift:update", - permissions: ["gift:update"] - }, - updateGiftTypes: { - method: "PUT", - operationId: API_OPERATIONS.updateGiftTypes, - path: "/v1/admin/gift-types", - permission: "gift:update", - permissions: ["gift:update"] - }, - updateH5Link: { - method: "PUT", - operationId: API_OPERATIONS.updateH5Link, - path: "/v1/admin/app-config/h5-links/{key}", - permission: "app-config:update", - permissions: ["app-config:update"] - }, - updateH5Links: { - method: "PUT", - operationId: API_OPERATIONS.updateH5Links, - path: "/v1/admin/app-config/h5-links", - permission: "app-config:update", - permissions: ["app-config:update"] - }, - updateHostAgencyPolicy: { - method: "PUT", - operationId: API_OPERATIONS.updateHostAgencyPolicy, - path: "/v1/admin/host-agency-policies/{policy_id}", - permission: "host-agency-policy:update", - permissions: ["host-agency-policy:update"] - }, - updateHumanRoomRobotConfig: { - method: "PUT", - operationId: API_OPERATIONS.updateHumanRoomRobotConfig, - path: "/v1/admin/rooms/robot-rooms/human-config", - permission: "room-robot:update", - permissions: ["room-robot:update"] - }, - updateInviteActivityRewardConfig: { - method: "PUT", - operationId: API_OPERATIONS.updateInviteActivityRewardConfig, - path: "/v1/admin/activity/invite-reward/config", - permission: "invite-activity-reward:update", - permissions: ["invite-activity-reward:update"] - }, - updateManager: { - method: "PUT", - operationId: API_OPERATIONS.updateManager, - path: "/v1/admin/managers/{user_id}", - permission: "bd:update", - permissions: ["bd:update"] - }, - updateMenu: { - method: "PATCH", - operationId: API_OPERATIONS.updateMenu, - path: "/v1/system/menus/{id}", - permission: "menu:update", - permissions: ["menu:update"] - }, - updateMenuVisible: { - method: "PATCH", - operationId: API_OPERATIONS.updateMenuVisible, - path: "/v1/system/menus/{id}/visible", - permission: "menu:visible", - permissions: ["menu:visible"] - }, - updatePermission: { - method: "PATCH", - operationId: API_OPERATIONS.updatePermission, - path: "/v1/permissions/{id}", - permission: "permission:update", - permissions: ["permission:update"] - }, - updatePlatform: { - method: "PATCH", - operationId: API_OPERATIONS.updatePlatform, - path: "/v1/admin/game/platforms/{platform_code}", - permission: "game:update", - permissions: ["game:update"] - }, - updatePolicyInstanceStatus: { - method: "PUT", - operationId: API_OPERATIONS.updatePolicyInstanceStatus, - path: "/v1/admin/policy-instances/{instance_id}/status", - permission: "policy-instance:update", - permissions: ["policy-instance:update"] - }, - updatePopup: { - method: "PUT", - operationId: API_OPERATIONS.updatePopup, - path: "/v1/admin/app-config/popups/{popup_id}", - permission: "app-config:update", - permissions: ["app-config:update"] - }, - updatePrettyIdPool: { - method: "PUT", - operationId: API_OPERATIONS.updatePrettyIdPool, - path: "/v1/admin/users/pretty-id-pools/{pool_id}", - permission: "pretty-id:update", - permissions: ["pretty-id:update"] - }, - updateRechargeProduct: { - method: "PUT", - operationId: API_OPERATIONS.updateRechargeProduct, - path: "/v1/admin/payment/recharge-products/{product_id}", - permission: "payment-product:update", - permissions: ["payment-product:update"] - }, - updateRedPacketConfig: { - method: "PUT", - operationId: API_OPERATIONS.updateRedPacketConfig, - path: "/v1/admin/activity/red-packets/config", - permission: "red-packet:update", - permissions: ["red-packet:update"] - }, - updateRegion: { - method: "PATCH", - operationId: API_OPERATIONS.updateRegion, - path: "/v1/admin/regions/{region_id}", - permission: "region:update", - permissions: ["region:update"] - }, - updateRegistrationRewardConfig: { - method: "PUT", - operationId: API_OPERATIONS.updateRegistrationRewardConfig, - path: "/v1/admin/activity/registration-reward/config", - permission: "registration-reward:update", - permissions: ["registration-reward:update"] - }, - updateResource: { - method: "PUT", - operationId: API_OPERATIONS.updateResource, - path: "/v1/admin/resources/{resource_id}", - permission: "resource:update", - permissions: ["resource:update"] - }, - updateResourceGroup: { - method: "PUT", - operationId: API_OPERATIONS.updateResourceGroup, - path: "/v1/admin/resource-groups/{group_id}", - permission: "resource-group:update", - permissions: ["resource-group:update"] - }, - updateResourceGroupItems: { - method: "PUT", - operationId: API_OPERATIONS.updateResourceGroupItems, - path: "/v1/admin/resource-groups/{group_id}/items", - permission: "resource-group:update", - permissions: ["resource-group:update"] - }, - updateResourceIdentityAutoGrantConfig: { - method: "PUT", - operationId: API_OPERATIONS.updateResourceIdentityAutoGrantConfig, - path: "/v1/admin/resource-groups/identity-auto-grant-config", - permission: "resource-group:update", - permissions: ["resource-group:update"] - }, - updateRiskConfig: { - method: "PUT", - operationId: API_OPERATIONS.updateRiskConfig, - path: "/v1/admin/users/risk-config", - permission: "risk-config:update", - permissions: ["risk-config:update"] - }, - updateRole: { - method: "PATCH", - operationId: API_OPERATIONS.updateRole, - path: "/v1/roles/{id}", - permission: "role:update", - permissions: ["role:update","role:manage"] - }, - updateRoom: { - method: "PATCH", - operationId: API_OPERATIONS.updateRoom, - path: "/v1/admin/rooms/{room_id}", - permission: "room:update", - permissions: ["room:update"] - }, - updateRoomConfig: { - method: "PUT", - operationId: API_OPERATIONS.updateRoomConfig, - path: "/v1/admin/rooms/config", - permission: "room-config:update", - permissions: ["room-config:update"] - }, - updateRoomRocketConfig: { - method: "PUT", - operationId: API_OPERATIONS.updateRoomRocketConfig, - path: "/v1/admin/activity/room-rocket/config", - permission: "room-rocket:update", - permissions: ["room-rocket:update"] - }, - updateRoomRpsConfig: { - method: "PATCH", - operationId: API_OPERATIONS.updateRoomRpsConfig, - path: "/v1/admin/game/room-rps/config", - permission: "game:update", - permissions: ["game:update"] - }, - updateRoomTurnoverRewardConfig: { - method: "PUT", - operationId: API_OPERATIONS.updateRoomTurnoverRewardConfig, - path: "/v1/admin/activity/room-turnover-reward/config", - permission: "room-turnover-reward:update", - permissions: ["room-turnover-reward:update"] - }, - updateRoomWhitelistConfig: { - method: "PUT", - operationId: API_OPERATIONS.updateRoomWhitelistConfig, - path: "/v1/admin/rooms/whitelist", - permission: "room-whitelist:update", - permissions: ["room-whitelist:update"] - }, - updateSevenDayCheckInConfig: { - method: "PUT", - operationId: API_OPERATIONS.updateSevenDayCheckInConfig, - path: "/v1/admin/activity/seven-day-checkin/config", - permission: "seven-day-checkin:update", - permissions: ["seven-day-checkin:update"] - }, - updateSplashScreen: { - method: "PUT", - operationId: API_OPERATIONS.updateSplashScreen, - path: "/v1/admin/app-config/splash-screens/{splash_id}", - permission: "app-config:update", - permissions: ["app-config:update"] - }, - updateTaskDefinition: { - method: "PUT", - operationId: API_OPERATIONS.updateTaskDefinition, - path: "/v1/admin/activity/daily-tasks/{task_id}", - permission: "daily-task:update", - permissions: ["daily-task:update"] - }, - updateTeam: { - method: "PATCH", - operationId: API_OPERATIONS.updateTeam, - path: "/v1/teams/{team_id}", - permission: "team:update", - permissions: ["team:update"] - }, - updateTeamSalaryPolicy: { - method: "PUT", - operationId: API_OPERATIONS.updateTeamSalaryPolicy, - path: "/v1/admin/team-salary-policies/{policy_id}", - permission: "team-salary-policy:update", - permissions: ["team-salary-policy:update"] - }, - updateThirdPartyPaymentRate: { - method: "PATCH", - operationId: API_OPERATIONS.updateThirdPartyPaymentRate, - path: "/v1/admin/payment/third-party-rates/{method_id}", - permission: "payment-third-party:update", - permissions: ["payment-third-party:update"] - }, - updateTier: { - method: "PUT", - operationId: API_OPERATIONS.updateTier, - path: "/v1/admin/users/level-config/tiers/{tier_id}", - permission: "level-config:update", - permissions: ["level-config:update"] - }, - updateTrack: { - method: "PUT", - operationId: API_OPERATIONS.updateTrack, - path: "/v1/admin/users/level-config/tracks/{track}", - permission: "level-config:update", - permissions: ["level-config:update"] - }, - updateUser: { - method: "PATCH", - operationId: API_OPERATIONS.updateUser, - path: "/v1/users/{id}", - permission: "user:update", - permissions: ["user:update"] - }, - updateUserStatus: { - method: "PATCH", - operationId: API_OPERATIONS.updateUserStatus, - path: "/v1/users/{id}/status", - permission: "user:status", - permissions: ["user:status"] - }, - updateWeeklyStarCycle: { - method: "PUT", - operationId: API_OPERATIONS.updateWeeklyStarCycle, - path: "/v1/admin/activity/weekly-star/cycles/{cycle_id}", - permission: "weekly-star:update", - permissions: ["weekly-star:update"] - }, - uploadFile: { - method: "POST", - operationId: API_OPERATIONS.uploadFile, - path: "/v1/admin/files/upload", - permission: "upload:create", - permissions: ["upload:create"] - }, - uploadImage: { - method: "POST", - operationId: API_OPERATIONS.uploadImage, - path: "/v1/admin/files/image/upload", - permission: "upload:create", - permissions: ["upload:create"] - }, - upsertLuckyGiftConfig: { - method: "PUT", - operationId: API_OPERATIONS.upsertLuckyGiftConfig, - path: "/v1/admin/activity/lucky-gifts/v2/config", - permission: "lucky-gift:update", - permissions: ["lucky-gift:update"] - }, - upsertResourceShopItems: { - method: "POST", - operationId: API_OPERATIONS.upsertResourceShopItems, - path: "/v1/admin/resource-shop/items", - permission: "resource-shop:update", - permissions: ["resource-shop:update"] - }, - upsertRule: { - method: "PUT", - operationId: API_OPERATIONS.upsertRule, - path: "/v1/admin/users/level-config/rules/{track}/{level}", - permission: "level-config:update", - permissions: ["level-config:update"] - }, - upsertWheelConfig: { - method: "PUT", - operationId: API_OPERATIONS.upsertWheelConfig, - path: "/v1/admin/activity/wheel/config", - permission: "wheel:update", - permissions: ["wheel:update"] - }, - verifyFinanceCoinSellerRechargeOrder: { - method: "POST", - operationId: API_OPERATIONS.verifyFinanceCoinSellerRechargeOrder, - path: "/v1/admin/finance/orders/coin-seller-recharges/{order_id}/verify", - permission: "finance-order:coin-seller-recharge:verify", - permissions: ["finance-order:coin-seller-recharge:verify"] - }, - verifyFinanceCoinSellerRechargeReceipt: { - method: "POST", - operationId: API_OPERATIONS.verifyFinanceCoinSellerRechargeReceipt, - path: "/v1/admin/finance/orders/coin-seller-recharges/receipt-verifications", - permission: "finance-order:coin-seller-recharge:verify", - permissions: ["finance-order:coin-seller-recharge:verify"] - } + adjustDicePool: { + method: "POST", + operationId: API_OPERATIONS.adjustDicePool, + path: "/v1/admin/game/self-games/{game_id}/pool/adjust", + permission: "game:update", + permissions: ["game:update"], + }, + adminAddAgencyHost: { + method: "POST", + operationId: API_OPERATIONS.adminAddAgencyHost, + path: "/v1/admin/agencies/{agency_id}/hosts", + permission: "agency:create", + permissions: ["agency:create"], + }, + appBanUser: { + method: "POST", + operationId: API_OPERATIONS.appBanUser, + path: "/v1/app/users/{id}/ban", + permission: "app-user:status", + permissions: ["app-user:status"], + }, + appGetUser: { + method: "GET", + operationId: API_OPERATIONS.appGetUser, + path: "/v1/app/users/{id}", + permission: "app-user:view", + permissions: ["app-user:view"], + }, + appListBannedUsers: { + method: "GET", + operationId: API_OPERATIONS.appListBannedUsers, + path: "/v1/app/users/bans", + permission: "app-user:view", + permissions: ["app-user:view"], + }, + appListLoginLogs: { + method: "GET", + operationId: API_OPERATIONS.appListLoginLogs, + path: "/v1/app/users/login-logs", + permission: "app-user:view", + permissions: ["app-user:view"], + }, + appListUserLoginLogs: { + method: "GET", + operationId: API_OPERATIONS.appListUserLoginLogs, + path: "/v1/app/users/{id}/login-logs", + permission: "app-user:view", + permissions: ["app-user:view"], + }, + appListUsers: { + method: "GET", + operationId: API_OPERATIONS.appListUsers, + path: "/v1/app/users", + permission: "app-user:view", + permissions: ["app-user:view"], + }, + approveCoinSellerSubApplication: { + method: "POST", + operationId: API_OPERATIONS.approveCoinSellerSubApplication, + path: "/v1/admin/coin-seller-sub-applications/{application_id}/approve", + permission: "coin-seller-sub-application:audit", + permissions: ["coin-seller-sub-application:audit"], + }, + approveFinanceApplication: { + method: "POST", + operationId: API_OPERATIONS.approveFinanceApplication, + path: "/v1/admin/finance/applications/{application_id}/approve", + permission: "finance-application:audit", + permissions: ["finance-application:audit"], + }, + approveFinanceWithdrawalApplication: { + method: "POST", + operationId: API_OPERATIONS.approveFinanceWithdrawalApplication, + path: "/v1/admin/finance/withdrawal-applications/{application_id}/approve", + permission: "finance-withdrawal:audit", + permissions: ["finance-withdrawal:audit", "finance-application:audit"], + }, + appSetPassword: { + method: "POST", + operationId: API_OPERATIONS.appSetPassword, + path: "/v1/app/users/{id}/password", + permission: "app-user:password", + permissions: ["app-user:password"], + }, + appUnbanUser: { + method: "POST", + operationId: API_OPERATIONS.appUnbanUser, + path: "/v1/app/users/{id}/unban", + permission: "app-user:status", + permissions: ["app-user:status"], + }, + appUpdateUser: { + method: "PATCH", + operationId: API_OPERATIONS.appUpdateUser, + path: "/v1/app/users/{id}", + permission: "app-user:update", + permissions: ["app-user:update"], + }, + batchCreateGifts: { + method: "POST", + operationId: API_OPERATIONS.batchCreateGifts, + path: "/v1/admin/gifts/batch", + permission: "gift:create", + permissions: ["gift:create"], + }, + batchDeleteResources: { + method: "POST", + operationId: API_OPERATIONS.batchDeleteResources, + path: "/v1/admin/resources/batch-delete", + permission: "resource:delete", + permissions: ["resource:delete"], + }, + batchUpdateUserStatus: { + method: "POST", + operationId: API_OPERATIONS.batchUpdateUserStatus, + path: "/v1/users/batch/status", + permission: "user:status", + permissions: ["user:status"], + }, + cancelJob: { + method: "POST", + operationId: API_OPERATIONS.cancelJob, + path: "/v1/jobs/{id}/cancel", + permission: "job:cancel", + permissions: ["job:cancel"], + }, + cancelRoomPin: { + method: "DELETE", + operationId: API_OPERATIONS.cancelRoomPin, + path: "/v1/admin/rooms/pins/{pin_id}", + permission: "room-pin:cancel", + permissions: ["room-pin:cancel"], + }, + changePassword: { + method: "POST", + operationId: API_OPERATIONS.changePassword, + path: "/v1/auth/change-password", + }, + closeAgency: { + method: "POST", + operationId: API_OPERATIONS.closeAgency, + path: "/v1/admin/agencies/{agency_id}/close", + permission: "agency:status", + permissions: ["agency:status"], + }, + createAchievementDefinition: { + method: "POST", + operationId: API_OPERATIONS.createAchievementDefinition, + path: "/v1/admin/activity/achievements", + permission: "achievement:create", + permissions: ["achievement:create"], + }, + createAgency: { + method: "POST", + operationId: API_OPERATIONS.createAgency, + path: "/v1/admin/agencies", + permission: "agency:create", + permissions: ["agency:create"], + }, + createAppVersion: { + method: "POST", + operationId: API_OPERATIONS.createAppVersion, + path: "/v1/admin/app-config/versions", + permission: "app-version:create", + permissions: ["app-version:create"], + }, + createBanner: { + method: "POST", + operationId: API_OPERATIONS.createBanner, + path: "/v1/admin/app-config/banners", + permission: "app-config:update", + permissions: ["app-config:update"], + }, + createBD: { + method: "POST", + operationId: API_OPERATIONS.createBD, + path: "/v1/admin/bds", + permission: "bd:create", + permissions: ["bd:create"], + }, + createBDLeader: { + method: "POST", + operationId: API_OPERATIONS.createBDLeader, + path: "/v1/admin/bd-leaders", + permission: "bd:create", + permissions: ["bd:create"], + }, + createCatalog: { + method: "POST", + operationId: API_OPERATIONS.createCatalog, + path: "/v1/admin/game/games", + permission: "game:create", + permissions: ["game:create"], + }, + createCoinAdjustment: { + method: "POST", + operationId: API_OPERATIONS.createCoinAdjustment, + path: "/v1/admin/operations/coin-adjustments", + permission: "coin-adjustment:create", + permissions: ["coin-adjustment:create"], + }, + createCoinSeller: { + method: "POST", + operationId: API_OPERATIONS.createCoinSeller, + path: "/v1/admin/coin-sellers", + permission: "coin-seller:create", + permissions: ["coin-seller:create"], + }, + createCountry: { + method: "POST", + operationId: API_OPERATIONS.createCountry, + path: "/v1/admin/countries", + permission: "country:create", + permissions: ["country:create"], + }, + createEmojiPack: { + method: "POST", + operationId: API_OPERATIONS.createEmojiPack, + path: "/v1/admin/emoji-packs", + permission: "emoji-pack:create", + permissions: ["emoji-pack:create"], + }, + createExploreTab: { + method: "POST", + operationId: API_OPERATIONS.createExploreTab, + path: "/v1/admin/app-config/explore-tabs", + permission: "app-config:update", + permissions: ["app-config:update"], + }, + createFinanceApplication: { + method: "POST", + operationId: API_OPERATIONS.createFinanceApplication, + path: "/v1/admin/finance/applications", + permission: "finance-application:create", + permissions: ["finance-application:create"], + }, + createFinanceCoinSellerRechargeOrder: { + method: "POST", + operationId: API_OPERATIONS.createFinanceCoinSellerRechargeOrder, + path: "/v1/admin/finance/orders/coin-seller-recharges", + permission: "finance-order:coin-seller-recharge:create", + permissions: ["finance-order:coin-seller-recharge:create"], + }, + createFullServerNoticeFanout: { + method: "POST", + operationId: API_OPERATIONS.createFullServerNoticeFanout, + path: "/v1/admin/operations/full-server-notices/fanout", + permission: "full-server-notice:send", + permissions: ["full-server-notice:send"], + }, + createGift: { + method: "POST", + operationId: API_OPERATIONS.createGift, + path: "/v1/admin/gifts", + permission: "gift:create", + permissions: ["gift:create"], + }, + createH5Link: { + method: "POST", + operationId: API_OPERATIONS.createH5Link, + path: "/v1/admin/app-config/h5-links", + permission: "app-config:update", + permissions: ["app-config:update"], + }, + createHostAgencyPolicy: { + method: "POST", + operationId: API_OPERATIONS.createHostAgencyPolicy, + path: "/v1/admin/host-agency-policies", + permission: "host-agency-policy:create", + permissions: ["host-agency-policy:create"], + }, + createManager: { + method: "POST", + operationId: API_OPERATIONS.createManager, + path: "/v1/admin/managers", + permission: "bd:create", + permissions: ["bd:create"], + }, + createMenu: { + method: "POST", + operationId: API_OPERATIONS.createMenu, + path: "/v1/system/menus", + permission: "menu:create", + permissions: ["menu:create"], + }, + createPermission: { + method: "POST", + operationId: API_OPERATIONS.createPermission, + path: "/v1/permissions", + permission: "permission:create", + permissions: ["permission:create"], + }, + createPlatform: { + method: "POST", + operationId: API_OPERATIONS.createPlatform, + path: "/v1/admin/game/platforms", + permission: "game:update", + permissions: ["game:update"], + }, + createPolicyInstance: { + method: "POST", + operationId: API_OPERATIONS.createPolicyInstance, + path: "/v1/admin/policy-instances", + permission: "policy-instance:create", + permissions: ["policy-instance:create"], + }, + createPopup: { + method: "POST", + operationId: API_OPERATIONS.createPopup, + path: "/v1/admin/app-config/popups", + permission: "app-config:update", + permissions: ["app-config:update"], + }, + createPrettyIdPool: { + method: "POST", + operationId: API_OPERATIONS.createPrettyIdPool, + path: "/v1/admin/users/pretty-id-pools", + permission: "pretty-id:update", + permissions: ["pretty-id:update"], + }, + createRechargeProduct: { + method: "POST", + operationId: API_OPERATIONS.createRechargeProduct, + path: "/v1/admin/payment/recharge-products", + permission: "payment-product:create", + permissions: ["payment-product:create"], + }, + createRegion: { + method: "POST", + operationId: API_OPERATIONS.createRegion, + path: "/v1/admin/regions", + permission: "region:create", + permissions: ["region:create"], + }, + createResource: { + method: "POST", + operationId: API_OPERATIONS.createResource, + path: "/v1/admin/resources", + permission: "resource:create", + permissions: ["resource:create"], + }, + createResourceGroup: { + method: "POST", + operationId: API_OPERATIONS.createResourceGroup, + path: "/v1/admin/resource-groups", + permission: "resource-group:create", + permissions: ["resource-group:create"], + }, + createRobotRoom: { + method: "POST", + operationId: API_OPERATIONS.createRobotRoom, + path: "/v1/admin/rooms/robot-rooms", + permission: "room-robot:create", + permissions: ["room-robot:create"], + }, + createRole: { + method: "POST", + operationId: API_OPERATIONS.createRole, + path: "/v1/roles", + permission: "role:create", + permissions: ["role:create", "role:manage"], + }, + createRoomPin: { + method: "POST", + operationId: API_OPERATIONS.createRoomPin, + path: "/v1/admin/rooms/pins", + permission: "room-pin:create", + permissions: ["room-pin:create"], + }, + createSplashScreen: { + method: "POST", + operationId: API_OPERATIONS.createSplashScreen, + path: "/v1/admin/app-config/splash-screens", + permission: "app-config:update", + permissions: ["app-config:update"], + }, + createTaskDefinition: { + method: "POST", + operationId: API_OPERATIONS.createTaskDefinition, + path: "/v1/admin/activity/daily-tasks", + permission: "daily-task:create", + permissions: ["daily-task:create"], + }, + createTeam: { + method: "POST", + operationId: API_OPERATIONS.createTeam, + path: "/v1/teams", + permission: "team:create", + permissions: ["team:create"], + }, + createTeamSalaryPolicy: { + method: "POST", + operationId: API_OPERATIONS.createTeamSalaryPolicy, + path: "/v1/admin/team-salary-policies", + permission: "team-salary-policy:create", + permissions: ["team-salary-policy:create"], + }, + createTemporaryPaymentLink: { + method: "POST", + operationId: API_OPERATIONS.createTemporaryPaymentLink, + path: "/v1/admin/payment/temporary-links", + permission: "payment-temporary-link:create", + permissions: ["payment-temporary-link:create"], + }, + createTier: { + method: "POST", + operationId: API_OPERATIONS.createTier, + path: "/v1/admin/users/level-config/tiers", + permission: "level-config:update", + permissions: ["level-config:update"], + }, + createUser: { + method: "POST", + operationId: API_OPERATIONS.createUser, + path: "/v1/users", + permission: "user:create", + permissions: ["user:create"], + }, + createWeeklyStarCycle: { + method: "POST", + operationId: API_OPERATIONS.createWeeklyStarCycle, + path: "/v1/admin/activity/weekly-star/cycles", + permission: "weekly-star:create", + permissions: ["weekly-star:create"], + }, + creditCoinSellerStock: { + method: "POST", + operationId: API_OPERATIONS.creditCoinSellerStock, + path: "/v1/admin/coin-sellers/{user_id}/stock-credits", + permission: "coin-seller:stock-credit", + permissions: ["coin-seller:stock-credit"], + }, + dashboardOverview: { + method: "GET", + operationId: API_OPERATIONS.dashboardOverview, + path: "/v1/dashboard/overview", + permission: "overview:view", + permissions: ["overview:view"], + }, + debitCoinSellerStock: { + method: "POST", + operationId: API_OPERATIONS.debitCoinSellerStock, + path: "/v1/admin/coin-sellers/{user_id}/stock-debits", + permission: "coin-seller:stock-credit", + permissions: ["coin-seller:stock-credit"], + }, + deleteAchievementDefinition: { + method: "DELETE", + operationId: API_OPERATIONS.deleteAchievementDefinition, + path: "/v1/admin/activity/achievements/{achievement_id}", + permission: "achievement:update", + permissions: ["achievement:update"], + }, + deleteAgency: { + method: "POST", + operationId: API_OPERATIONS.deleteAgency, + path: "/v1/admin/agencies/{agency_id}/delete", + permission: "agency:delete", + permissions: ["agency:delete"], + }, + deleteAppVersion: { + method: "DELETE", + operationId: API_OPERATIONS.deleteAppVersion, + path: "/v1/admin/app-config/versions/{version_id}", + permission: "app-version:delete", + permissions: ["app-version:delete"], + }, + deleteBanner: { + method: "DELETE", + operationId: API_OPERATIONS.deleteBanner, + path: "/v1/admin/app-config/banners/{banner_id}", + permission: "app-config:update", + permissions: ["app-config:update"], + }, + deleteBDLeader: { + method: "DELETE", + operationId: API_OPERATIONS.deleteBDLeader, + path: "/v1/admin/bd-leaders/{user_id}", + permission: "bd:update", + permissions: ["bd:update"], + }, + deleteCatalog: { + method: "DELETE", + operationId: API_OPERATIONS.deleteCatalog, + path: "/v1/admin/game/games/{game_id}", + permission: "game:delete", + permissions: ["game:delete"], + }, + deleteCountry: { + method: "DELETE", + operationId: API_OPERATIONS.deleteCountry, + path: "/v1/admin/countries/{country_id}", + permission: "country:status", + permissions: ["country:status"], + }, + deleteDiceRobot: { + method: "DELETE", + operationId: API_OPERATIONS.deleteDiceRobot, + path: "/v1/admin/game/robots/{user_id}", + permission: "game:delete", + permissions: ["game:delete"], + }, + deleteExploreTab: { + method: "DELETE", + operationId: API_OPERATIONS.deleteExploreTab, + path: "/v1/admin/app-config/explore-tabs/{tab_id}", + permission: "app-config:update", + permissions: ["app-config:update"], + }, + deleteGift: { + method: "DELETE", + operationId: API_OPERATIONS.deleteGift, + path: "/v1/admin/gifts/{gift_id}", + permission: "gift:delete", + permissions: ["gift:delete"], + }, + deleteH5Link: { + method: "DELETE", + operationId: API_OPERATIONS.deleteH5Link, + path: "/v1/admin/app-config/h5-links/{key}", + permission: "app-config:update", + permissions: ["app-config:update"], + }, + deleteHostAgencyPolicy: { + method: "DELETE", + operationId: API_OPERATIONS.deleteHostAgencyPolicy, + path: "/v1/admin/host-agency-policies/{policy_id}", + permission: "host-agency-policy:delete", + permissions: ["host-agency-policy:delete"], + }, + deleteMenu: { + method: "DELETE", + operationId: API_OPERATIONS.deleteMenu, + path: "/v1/system/menus/{id}", + permission: "menu:delete", + permissions: ["menu:delete"], + }, + deletePermission: { + method: "DELETE", + operationId: API_OPERATIONS.deletePermission, + path: "/v1/permissions/{id}", + permission: "permission:delete", + permissions: ["permission:delete"], + }, + deletePopup: { + method: "DELETE", + operationId: API_OPERATIONS.deletePopup, + path: "/v1/admin/app-config/popups/{popup_id}", + permission: "app-config:update", + permissions: ["app-config:update"], + }, + deleteRechargeProduct: { + method: "DELETE", + operationId: API_OPERATIONS.deleteRechargeProduct, + path: "/v1/admin/payment/recharge-products/{product_id}", + permission: "payment-product:delete", + permissions: ["payment-product:delete"], + }, + deleteResource: { + method: "DELETE", + operationId: API_OPERATIONS.deleteResource, + path: "/v1/admin/resources/{resource_id}", + permission: "resource:delete", + permissions: ["resource:delete"], + }, + deleteRole: { + method: "DELETE", + operationId: API_OPERATIONS.deleteRole, + path: "/v1/roles/{id}", + permission: "role:delete", + permissions: ["role:delete", "role:manage"], + }, + deleteRoom: { + method: "DELETE", + operationId: API_OPERATIONS.deleteRoom, + path: "/v1/admin/rooms/{room_id}", + permission: "room:delete", + permissions: ["room:delete"], + }, + deleteSplashScreen: { + method: "DELETE", + operationId: API_OPERATIONS.deleteSplashScreen, + path: "/v1/admin/app-config/splash-screens/{splash_id}", + permission: "app-config:update", + permissions: ["app-config:update"], + }, + deleteTeamSalaryPolicy: { + method: "DELETE", + operationId: API_OPERATIONS.deleteTeamSalaryPolicy, + path: "/v1/admin/team-salary-policies/{policy_id}", + permission: "team-salary-policy:delete", + permissions: ["team-salary-policy:delete"], + }, + disableCountry: { + method: "POST", + operationId: API_OPERATIONS.disableCountry, + path: "/v1/admin/countries/{country_id}/disable", + permission: "country:status", + permissions: ["country:status"], + }, + disableGift: { + method: "POST", + operationId: API_OPERATIONS.disableGift, + path: "/v1/admin/gifts/{gift_id}/disable", + permission: "gift:status", + permissions: ["gift:status"], + }, + disableRegion: { + method: "DELETE", + operationId: API_OPERATIONS.disableRegion, + path: "/v1/admin/regions/{region_id}", + permission: "region:status", + permissions: ["region:status"], + }, + disableResource: { + method: "POST", + operationId: API_OPERATIONS.disableResource, + path: "/v1/admin/resources/{resource_id}/disable", + permission: "resource:update", + permissions: ["resource:update"], + }, + disableResourceGroup: { + method: "POST", + operationId: API_OPERATIONS.disableResourceGroup, + path: "/v1/admin/resource-groups/{group_id}/disable", + permission: "resource-group:update", + permissions: ["resource-group:update"], + }, + disableResourceShopItem: { + method: "POST", + operationId: API_OPERATIONS.disableResourceShopItem, + path: "/v1/admin/resource-shop/items/{shop_item_id}/disable", + permission: "resource-shop:update", + permissions: ["resource-shop:update"], + }, + enableCountry: { + method: "POST", + operationId: API_OPERATIONS.enableCountry, + path: "/v1/admin/countries/{country_id}/enable", + permission: "country:status", + permissions: ["country:status"], + }, + enableGift: { + method: "POST", + operationId: API_OPERATIONS.enableGift, + path: "/v1/admin/gifts/{gift_id}/enable", + permission: "gift:status", + permissions: ["gift:status"], + }, + enableRegion: { + method: "POST", + operationId: API_OPERATIONS.enableRegion, + path: "/v1/admin/regions/{region_id}/enable", + permission: "region:status", + permissions: ["region:status"], + }, + enableResource: { + method: "POST", + operationId: API_OPERATIONS.enableResource, + path: "/v1/admin/resources/{resource_id}/enable", + permission: "resource:update", + permissions: ["resource:update"], + }, + enableResourceGroup: { + method: "POST", + operationId: API_OPERATIONS.enableResourceGroup, + path: "/v1/admin/resource-groups/{group_id}/enable", + permission: "resource-group:update", + permissions: ["resource-group:update"], + }, + enableResourceShopItem: { + method: "POST", + operationId: API_OPERATIONS.enableResourceShopItem, + path: "/v1/admin/resource-shop/items/{shop_item_id}/enable", + permission: "resource-shop:update", + permissions: ["resource-shop:update"], + }, + expireRoomRpsChallenge: { + method: "POST", + operationId: API_OPERATIONS.expireRoomRpsChallenge, + path: "/v1/admin/game/room-rps/challenges/{challenge_id}/expire", + permission: "game:update", + permissions: ["game:update"], + }, + exportCoinSellerLedger: { + method: "GET", + operationId: API_OPERATIONS.exportCoinSellerLedger, + path: "/v1/admin/operations/coin-seller-ledger/export", + permission: "coin-seller-ledger:view", + permissions: ["coin-seller-ledger:view"], + }, + exportLoginLogs: { + method: "GET", + operationId: API_OPERATIONS.exportLoginLogs, + path: "/v1/logs/login/export", + permission: "log:export", + permissions: ["log:export"], + }, + exportOperationLogs: { + method: "GET", + operationId: API_OPERATIONS.exportOperationLogs, + path: "/v1/logs/operations/export", + permission: "log:export", + permissions: ["log:export"], + }, + exportRechargeBills: { + method: "GET", + operationId: API_OPERATIONS.exportRechargeBills, + path: "/v1/admin/payment/recharge-bills/export", + permission: "payment-bill:view", + permissions: ["payment-bill:view"], + }, + exportUsers: { + method: "GET", + operationId: API_OPERATIONS.exportUsers, + path: "/v1/users/export", + permission: "user:export", + permissions: ["user:export"], + }, + generateDiceRobots: { + method: "POST", + operationId: API_OPERATIONS.generateDiceRobots, + path: "/v1/admin/game/robots/generate", + permission: "game:create", + permissions: ["game:create"], + }, + generatePrettyIds: { + method: "POST", + operationId: API_OPERATIONS.generatePrettyIds, + path: "/v1/admin/users/pretty-id-pools/{pool_id}/generate", + permission: "pretty-id:generate", + permissions: ["pretty-id:generate"], + }, + getCoinSellerSalaryRates: { + method: "GET", + operationId: API_OPERATIONS.getCoinSellerSalaryRates, + path: "/v1/admin/coin-seller-salary-rates/{region_id}", + permission: "coin-seller:exchange-rate", + permissions: ["coin-seller:exchange-rate"], + }, + getCountry: { + method: "GET", + operationId: API_OPERATIONS.getCountry, + path: "/v1/admin/countries/{country_id}", + permission: "country:view", + permissions: ["country:view"], + }, + getCPConfig: { + method: "GET", + operationId: API_OPERATIONS.getCPConfig, + path: "/v1/admin/activity/cp/config", + permission: "cp-config:view", + permissions: ["cp-config:view"], + }, + getCPWeeklyRankConfig: { + method: "GET", + operationId: API_OPERATIONS.getCPWeeklyRankConfig, + path: "/v1/admin/activity/cp-weekly-rank/config", + permission: "cp-weekly-rank:view", + permissions: ["cp-weekly-rank:view"], + }, + getCumulativeRechargeRewardConfig: { + method: "GET", + operationId: API_OPERATIONS.getCumulativeRechargeRewardConfig, + path: "/v1/admin/activity/cumulative-recharge-reward/config", + permission: "cumulative-recharge-reward:view", + permissions: ["cumulative-recharge-reward:view"], + }, + getFinanceScope: { + method: "GET", + operationId: API_OPERATIONS.getFinanceScope, + path: "/v1/admin/finance/scope", + permission: "finance:view", + permissions: ["finance:view"], + }, + getFirstRechargeRewardConfig: { + method: "GET", + operationId: API_OPERATIONS.getFirstRechargeRewardConfig, + path: "/v1/admin/activity/first-recharge-reward/config", + permission: "first-recharge-reward:view", + permissions: ["first-recharge-reward:view"], + }, + getHumanRoomRobotConfig: { + method: "GET", + operationId: API_OPERATIONS.getHumanRoomRobotConfig, + path: "/v1/admin/rooms/robot-rooms/human-config", + permission: "room-robot:view", + permissions: ["room-robot:view"], + }, + getInviteActivityRewardConfig: { + method: "GET", + operationId: API_OPERATIONS.getInviteActivityRewardConfig, + path: "/v1/admin/activity/invite-reward/config", + permission: "invite-activity-reward:view", + permissions: ["invite-activity-reward:view"], + }, + getJob: { + method: "GET", + operationId: API_OPERATIONS.getJob, + path: "/v1/jobs/{id}", + permission: "job:view", + permissions: ["job:view", "country:update"], + }, + getLuckyGiftConfig: { + method: "GET", + operationId: API_OPERATIONS.getLuckyGiftConfig, + path: "/v1/admin/activity/lucky-gifts/v2/config", + permission: "lucky-gift:view", + permissions: ["lucky-gift:view"], + }, + getLuckyGiftDrawSummary: { + method: "GET", + operationId: API_OPERATIONS.getLuckyGiftDrawSummary, + path: "/v1/admin/activity/lucky-gifts/v2/draw-summary", + permission: "lucky-gift:view", + permissions: ["lucky-gift:view"], + }, + getRechargeBillOverview: { + method: "GET", + operationId: API_OPERATIONS.getRechargeBillOverview, + path: "/v1/admin/payment/recharge-bills/overview", + permission: "payment-bill:view", + permissions: ["payment-bill:view"], + }, + getRechargeBillSummary: { + method: "GET", + operationId: API_OPERATIONS.getRechargeBillSummary, + path: "/v1/admin/payment/recharge-bills/summary", + permission: "payment-bill:view", + permissions: ["payment-bill:view"], + }, + getRedPacket: { + method: "GET", + operationId: API_OPERATIONS.getRedPacket, + path: "/v1/admin/activity/red-packets/{packet_id}", + permission: "red-packet:view", + permissions: ["red-packet:view"], + }, + getRedPacketConfig: { + method: "GET", + operationId: API_OPERATIONS.getRedPacketConfig, + path: "/v1/admin/activity/red-packets/config", + permission: "red-packet:view", + permissions: ["red-packet:view"], + }, + getRegion: { + method: "GET", + operationId: API_OPERATIONS.getRegion, + path: "/v1/admin/regions/{region_id}", + permission: "region:view", + permissions: ["region:view"], + }, + getRegistrationRewardConfig: { + method: "GET", + operationId: API_OPERATIONS.getRegistrationRewardConfig, + path: "/v1/admin/activity/registration-reward/config", + permission: "registration-reward:view", + permissions: ["registration-reward:view"], + }, + getResource: { + method: "GET", + operationId: API_OPERATIONS.getResource, + path: "/v1/admin/resources/{resource_id}", + permission: "resource:view", + permissions: ["resource:view"], + }, + getResourceGroup: { + method: "GET", + operationId: API_OPERATIONS.getResourceGroup, + path: "/v1/admin/resource-groups/{group_id}", + permission: "resource-group:view", + permissions: ["resource-group:view"], + }, + getResourceIdentityAutoGrantConfig: { + method: "GET", + operationId: API_OPERATIONS.getResourceIdentityAutoGrantConfig, + path: "/v1/admin/resource-groups/identity-auto-grant-config", + permission: "resource-group:view", + permissions: ["resource-group:view"], + }, + getRiskConfig: { + method: "GET", + operationId: API_OPERATIONS.getRiskConfig, + path: "/v1/admin/users/risk-config", + permission: "risk-config:view", + permissions: ["risk-config:view"], + }, + getRoleDataScopes: { + method: "GET", + operationId: API_OPERATIONS.getRoleDataScopes, + path: "/v1/roles/{id}/data-scopes", + permission: "role:data-scope", + permissions: ["role:data-scope"], + }, + getRoomConfig: { + method: "GET", + operationId: API_OPERATIONS.getRoomConfig, + path: "/v1/admin/rooms/config", + permission: "room-config:view", + permissions: ["room-config:view"], + }, + getRoomRocketConfig: { + method: "GET", + operationId: API_OPERATIONS.getRoomRocketConfig, + path: "/v1/admin/activity/room-rocket/config", + permission: "room-rocket:view", + permissions: ["room-rocket:view"], + }, + getRoomRpsChallenge: { + method: "GET", + operationId: API_OPERATIONS.getRoomRpsChallenge, + path: "/v1/admin/game/room-rps/challenges/{challenge_id}", + permission: "game:view", + permissions: ["game:view"], + }, + getRoomRpsConfig: { + method: "GET", + operationId: API_OPERATIONS.getRoomRpsConfig, + path: "/v1/admin/game/room-rps/config", + permission: "game:view", + permissions: ["game:view"], + }, + getRoomTurnoverRewardConfig: { + method: "GET", + operationId: API_OPERATIONS.getRoomTurnoverRewardConfig, + path: "/v1/admin/activity/room-turnover-reward/config", + permission: "room-turnover-reward:view", + permissions: ["room-turnover-reward:view"], + }, + getRoomWhitelistConfig: { + method: "GET", + operationId: API_OPERATIONS.getRoomWhitelistConfig, + path: "/v1/admin/rooms/whitelist", + permission: "room-whitelist:view", + permissions: ["room-whitelist:view"], + }, + getSevenDayCheckInConfig: { + method: "GET", + operationId: API_OPERATIONS.getSevenDayCheckInConfig, + path: "/v1/admin/activity/seven-day-checkin/config", + permission: "seven-day-checkin:view", + permissions: ["seven-day-checkin:view"], + }, + getSocialBiFunnel: { + method: "GET", + operationId: API_OPERATIONS.getSocialBiFunnel, + path: "/v1/admin/databi/social/funnel", + permission: "overview:view", + permissions: ["overview:view"], + }, + getSocialBiKpi: { + method: "GET", + operationId: API_OPERATIONS.getSocialBiKpi, + path: "/v1/admin/databi/social/kpi", + permission: "overview:view", + permissions: ["overview:view"], + }, + getSocialBiMaster: { + method: "GET", + operationId: API_OPERATIONS.getSocialBiMaster, + path: "/v1/admin/databi/social/master", + permission: "overview:view", + permissions: ["overview:view"], + }, + getSocialBiOverview: { + method: "GET", + operationId: API_OPERATIONS.getSocialBiOverview, + path: "/v1/admin/databi/social/overview", + permission: "overview:view", + permissions: ["overview:view"], + }, + getSocialBiRequirements: { + method: "GET", + operationId: API_OPERATIONS.getSocialBiRequirements, + path: "/v1/admin/databi/social/requirements", + permission: "overview:view", + permissions: ["overview:view"], + }, + getTemporaryPaymentLink: { + method: "GET", + operationId: API_OPERATIONS.getTemporaryPaymentLink, + path: "/v1/admin/payment/temporary-links/{order_id}", + permission: "payment-temporary-link:view", + permissions: ["payment-temporary-link:view"], + }, + getUser: { + method: "GET", + operationId: API_OPERATIONS.getUser, + path: "/v1/users/{id}", + permission: "user:view", + permissions: ["user:view"], + }, + getWeeklyStarCycle: { + method: "GET", + operationId: API_OPERATIONS.getWeeklyStarCycle, + path: "/v1/admin/activity/weekly-star/cycles/{cycle_id}", + permission: "weekly-star:view", + permissions: ["weekly-star:view"], + }, + getWheelConfig: { + method: "GET", + operationId: API_OPERATIONS.getWheelConfig, + path: "/v1/admin/activity/wheel/config", + permission: "wheel:view", + permissions: ["wheel:view"], + }, + getWheelDrawSummary: { + method: "GET", + operationId: API_OPERATIONS.getWheelDrawSummary, + path: "/v1/admin/activity/wheel/draw-summary", + permission: "wheel:view", + permissions: ["wheel:view"], + }, + grantFinanceCoinSellerRechargeOrder: { + method: "POST", + operationId: API_OPERATIONS.grantFinanceCoinSellerRechargeOrder, + path: "/v1/admin/finance/orders/coin-seller-recharges/{order_id}/grant", + permission: "finance-order:coin-seller-recharge:grant", + permissions: ["finance-order:coin-seller-recharge:grant"], + }, + grantPrettyId: { + method: "POST", + operationId: API_OPERATIONS.grantPrettyId, + path: "/v1/admin/users/pretty-ids/grant", + permission: "pretty-id:grant", + permissions: ["pretty-id:grant"], + }, + grantResource: { + method: "POST", + operationId: API_OPERATIONS.grantResource, + path: "/v1/admin/resource-grants/resource", + permission: "resource-grant:create", + permissions: ["resource-grant:create"], + }, + grantResourceGroup: { + method: "POST", + operationId: API_OPERATIONS.grantResourceGroup, + path: "/v1/admin/resource-grants/group", + permission: "resource-grant:create", + permissions: ["resource-grant:create"], + }, + listAchievementDefinitions: { + method: "GET", + operationId: API_OPERATIONS.listAchievementDefinitions, + path: "/v1/admin/activity/achievements", + permission: "achievement:view", + permissions: ["achievement:view"], + }, + listAgencies: { + method: "GET", + operationId: API_OPERATIONS.listAgencies, + path: "/v1/admin/agencies", + permission: "agency:view", + permissions: ["agency:view"], + }, + listApps: { + method: "GET", + operationId: API_OPERATIONS.listApps, + path: "/v1/admin/apps", + }, + listAppVersions: { + method: "GET", + operationId: API_OPERATIONS.listAppVersions, + path: "/v1/admin/app-config/versions", + permission: "app-version:view", + permissions: ["app-version:view"], + }, + listAvailableRoomRobots: { + method: "GET", + operationId: API_OPERATIONS.listAvailableRoomRobots, + path: "/v1/admin/rooms/robot-rooms/available-robots", + permission: "room-robot:view", + permissions: ["room-robot:view"], + }, + listBanners: { + method: "GET", + operationId: API_OPERATIONS.listBanners, + path: "/v1/admin/app-config/banners", + permission: "app-config:view", + permissions: ["app-config:view"], + }, + listBDLeaders: { + method: "GET", + operationId: API_OPERATIONS.listBDLeaders, + path: "/v1/admin/bd-leaders", + permission: "bd:view", + permissions: ["bd:view"], + }, + listBDs: { + method: "GET", + operationId: API_OPERATIONS.listBDs, + path: "/v1/admin/bds", + permission: "bd:view", + permissions: ["bd:view"], + }, + listCatalog: { + method: "GET", + operationId: API_OPERATIONS.listCatalog, + path: "/v1/admin/game/games", + permission: "game:view", + permissions: ["game:view"], + }, + listCoinAdjustments: { + method: "GET", + operationId: API_OPERATIONS.listCoinAdjustments, + path: "/v1/admin/operations/coin-adjustments", + permission: "coin-adjustment:view", + permissions: ["coin-adjustment:view"], + }, + listCoinLedger: { + method: "GET", + operationId: API_OPERATIONS.listCoinLedger, + path: "/v1/admin/operations/coin-ledger", + permission: "coin-ledger:view", + permissions: ["coin-ledger:view"], + }, + listCoinSellerLedger: { + method: "GET", + operationId: API_OPERATIONS.listCoinSellerLedger, + path: "/v1/admin/operations/coin-seller-ledger", + permission: "coin-seller-ledger:view", + permissions: ["coin-seller-ledger:view"], + }, + listCoinSellers: { + method: "GET", + operationId: API_OPERATIONS.listCoinSellers, + path: "/v1/admin/coin-sellers", + permission: "coin-seller:view", + permissions: ["coin-seller:view"], + }, + listCoinSellerSubApplications: { + method: "GET", + operationId: API_OPERATIONS.listCoinSellerSubApplications, + path: "/v1/admin/coin-seller-sub-applications", + permission: "coin-seller-sub-application:view", + permissions: ["coin-seller-sub-application:view"], + }, + listCoinSellerSubSellers: { + method: "GET", + operationId: API_OPERATIONS.listCoinSellerSubSellers, + path: "/v1/admin/coin-sellers/{user_id}/sub-sellers", + permission: "coin-seller:view", + permissions: ["coin-seller:view"], + }, + listCountries: { + method: "GET", + operationId: API_OPERATIONS.listCountries, + path: "/v1/admin/countries", + permission: "country:view", + permissions: ["country:view"], + }, + listCPApplications: { + method: "GET", + operationId: API_OPERATIONS.listCPApplications, + path: "/v1/admin/activity/cp/applications", + permission: "cp-config:view", + permissions: ["cp-config:view"], + }, + listCPRelationships: { + method: "GET", + operationId: API_OPERATIONS.listCPRelationships, + path: "/v1/admin/activity/cp/relationships", + permission: "cp-config:view", + permissions: ["cp-config:view"], + }, + listCPWeeklyRankSettlements: { + method: "GET", + operationId: API_OPERATIONS.listCPWeeklyRankSettlements, + path: "/v1/admin/activity/cp-weekly-rank/settlements", + permission: "cp-weekly-rank:view", + permissions: ["cp-weekly-rank:view"], + }, + listCumulativeRechargeRewardGrants: { + method: "GET", + operationId: API_OPERATIONS.listCumulativeRechargeRewardGrants, + path: "/v1/admin/activity/cumulative-recharge-reward/grants", + permission: "cumulative-recharge-reward:view", + permissions: ["cumulative-recharge-reward:view"], + }, + listDiceRobots: { + method: "GET", + operationId: API_OPERATIONS.listDiceRobots, + path: "/v1/admin/game/robots", + permission: "game:view", + permissions: ["game:view"], + }, + listEmojiPackCategories: { + method: "GET", + operationId: API_OPERATIONS.listEmojiPackCategories, + path: "/v1/admin/emoji-packs/categories", + permission: "emoji-pack:view", + permissions: ["emoji-pack:view"], + }, + listEmojiPacks: { + method: "GET", + operationId: API_OPERATIONS.listEmojiPacks, + path: "/v1/admin/emoji-packs", + permission: "emoji-pack:view", + permissions: ["emoji-pack:view"], + }, + listExploreTabs: { + method: "GET", + operationId: API_OPERATIONS.listExploreTabs, + path: "/v1/admin/app-config/explore-tabs", + permission: "app-config:view", + permissions: ["app-config:view"], + }, + listFinanceApplications: { + method: "GET", + operationId: API_OPERATIONS.listFinanceApplications, + path: "/v1/admin/finance/applications", + permission: "finance-application:audit", + permissions: ["finance-application:audit"], + }, + listFinanceCoinSellerRechargeOrders: { + method: "GET", + operationId: API_OPERATIONS.listFinanceCoinSellerRechargeOrders, + path: "/v1/admin/finance/orders/coin-seller-recharges", + permission: "finance-order:coin-seller-recharge:view", + permissions: ["finance-order:coin-seller-recharge:view"], + }, + listFinanceWithdrawalApplications: { + method: "GET", + operationId: API_OPERATIONS.listFinanceWithdrawalApplications, + path: "/v1/admin/finance/withdrawal-applications", + permission: "finance-withdrawal:view", + permissions: ["finance-withdrawal:view", "finance-withdrawal:audit", "finance-application:audit"], + }, + listFirstRechargeRewardClaims: { + method: "GET", + operationId: API_OPERATIONS.listFirstRechargeRewardClaims, + path: "/v1/admin/activity/first-recharge-reward/claims", + permission: "first-recharge-reward:view", + permissions: ["first-recharge-reward:view"], + }, + listGifts: { + method: "GET", + operationId: API_OPERATIONS.listGifts, + path: "/v1/admin/gifts", + permission: "gift:view", + permissions: ["gift:view"], + }, + listGiftTypes: { + method: "GET", + operationId: API_OPERATIONS.listGiftTypes, + path: "/v1/admin/gift-types", + permission: "gift:view", + permissions: ["gift:view"], + }, + listH5Links: { + method: "GET", + operationId: API_OPERATIONS.listH5Links, + path: "/v1/admin/app-config/h5-links", + permission: "app-config:view", + permissions: ["app-config:view"], + }, + listHostAgencyPolicies: { + method: "GET", + operationId: API_OPERATIONS.listHostAgencyPolicies, + path: "/v1/admin/host-agency-policies", + permission: "host-agency-policy:view", + permissions: ["host-agency-policy:view"], + }, + listHosts: { + method: "GET", + operationId: API_OPERATIONS.listHosts, + path: "/v1/admin/hosts", + permission: "host:view", + permissions: ["host:view"], + }, + listHostSalarySettlements: { + method: "GET", + operationId: API_OPERATIONS.listHostSalarySettlements, + path: "/v1/admin/host-salary-settlements", + permission: "host-salary-settlement:view", + permissions: ["host-salary-settlement:view"], + }, + listHostWithdrawals: { + method: "GET", + operationId: API_OPERATIONS.listHostWithdrawals, + path: "/v1/admin/host-withdrawals", + permission: "host-withdrawal:view", + permissions: ["host-withdrawal:view"], + }, + listInviteActivityRewardClaims: { + method: "GET", + operationId: API_OPERATIONS.listInviteActivityRewardClaims, + path: "/v1/admin/activity/invite-reward/claims", + permission: "invite-activity-reward:view", + permissions: ["invite-activity-reward:view"], + }, + listJobs: { + method: "GET", + operationId: API_OPERATIONS.listJobs, + path: "/v1/jobs", + permission: "job:view", + permissions: ["job:view"], + }, + listLevelConfig: { + method: "GET", + operationId: API_OPERATIONS.listLevelConfig, + path: "/v1/admin/users/level-config", + permission: "level-config:view", + permissions: ["level-config:view"], + }, + listLoginLogs: { + method: "GET", + operationId: API_OPERATIONS.listLoginLogs, + path: "/v1/logs/login", + permission: "log:view", + permissions: ["log:view"], + }, + listLuckyGiftConfigs: { + method: "GET", + operationId: API_OPERATIONS.listLuckyGiftConfigs, + path: "/v1/admin/activity/lucky-gifts/v2/configs", + permission: "lucky-gift:view", + permissions: ["lucky-gift:view"], + }, + listLuckyGiftDraws: { + method: "GET", + operationId: API_OPERATIONS.listLuckyGiftDraws, + path: "/v1/admin/activity/lucky-gifts/v2/draws", + permission: "lucky-gift:view", + permissions: ["lucky-gift:view"], + }, + listManagers: { + method: "GET", + operationId: API_OPERATIONS.listManagers, + path: "/v1/admin/managers", + permission: "bd:view", + permissions: ["bd:view"], + }, + listMyFinanceApplications: { + method: "GET", + operationId: API_OPERATIONS.listMyFinanceApplications, + path: "/v1/admin/finance/applications/mine", + permission: "finance-application:create", + permissions: ["finance-application:create"], + }, + listOperationLogs: { + method: "GET", + operationId: API_OPERATIONS.listOperationLogs, + path: "/v1/logs/operations", + permission: "log:view", + permissions: ["log:view"], + }, + listPermissions: { + method: "GET", + operationId: API_OPERATIONS.listPermissions, + path: "/v1/permissions", + permission: "permission:view", + permissions: ["permission:view", "role:permission", "role:manage"], + }, + listPlatformGrantRecords: { + method: "GET", + operationId: API_OPERATIONS.listPlatformGrantRecords, + path: "/v1/statistics/platform-grants/records", + permission: "overview:view", + permissions: ["overview:view"], + }, + listPlatformGrantUsers: { + method: "GET", + operationId: API_OPERATIONS.listPlatformGrantUsers, + path: "/v1/statistics/platform-grants/users", + permission: "overview:view", + permissions: ["overview:view"], + }, + listPlatforms: { + method: "GET", + operationId: API_OPERATIONS.listPlatforms, + path: "/v1/admin/game/platforms", + permission: "game:view", + permissions: ["game:view"], + }, + listPolicyInstances: { + method: "GET", + operationId: API_OPERATIONS.listPolicyInstances, + path: "/v1/admin/policy-instances", + permission: "policy-template:view", + permissions: ["policy-template:view"], + }, + listPolicyTemplates: { + method: "GET", + operationId: API_OPERATIONS.listPolicyTemplates, + path: "/v1/admin/policy-templates", + permission: "policy-template:view", + permissions: ["policy-template:view"], + }, + listPopups: { + method: "GET", + operationId: API_OPERATIONS.listPopups, + path: "/v1/admin/app-config/popups", + permission: "app-config:view", + permissions: ["app-config:view"], + }, + listPrettyIdPools: { + method: "GET", + operationId: API_OPERATIONS.listPrettyIdPools, + path: "/v1/admin/users/pretty-id-pools", + permission: "pretty-id:view", + permissions: ["pretty-id:view"], + }, + listPrettyIds: { + method: "GET", + operationId: API_OPERATIONS.listPrettyIds, + path: "/v1/admin/users/pretty-ids", + permission: "pretty-id:view", + permissions: ["pretty-id:view"], + }, + listRechargeApps: { + method: "GET", + operationId: API_OPERATIONS.listRechargeApps, + path: "/v1/admin/payment/recharge-apps", + permission: "payment-bill:view", + permissions: ["payment-bill:view"], + }, + listRechargeBills: { + method: "GET", + operationId: API_OPERATIONS.listRechargeBills, + path: "/v1/admin/payment/recharge-bills", + permission: "payment-bill:view", + permissions: ["payment-bill:view"], + }, + listRechargeProducts: { + method: "GET", + operationId: API_OPERATIONS.listRechargeProducts, + path: "/v1/admin/payment/recharge-products", + permission: "payment-product:view", + permissions: ["payment-product:view"], + }, + listRechargeRegions: { + method: "GET", + operationId: API_OPERATIONS.listRechargeRegions, + path: "/v1/admin/payment/recharge-regions", + permission: "payment-bill:view", + permissions: ["payment-bill:view"], + }, + listRedPackets: { + method: "GET", + operationId: API_OPERATIONS.listRedPackets, + path: "/v1/admin/activity/red-packets", + permission: "red-packet:view", + permissions: ["red-packet:view"], + }, + listRegionBlocks: { + method: "GET", + operationId: API_OPERATIONS.listRegionBlocks, + path: "/v1/admin/users/region-blocks", + permission: "region-block:view", + permissions: ["region-block:view"], + }, + listRegions: { + method: "GET", + operationId: API_OPERATIONS.listRegions, + path: "/v1/admin/regions", + permission: "region:view", + permissions: ["region:view"], + }, + listRegistrationRewardClaims: { + method: "GET", + operationId: API_OPERATIONS.listRegistrationRewardClaims, + path: "/v1/admin/activity/registration-reward/claims", + permission: "registration-reward:view", + permissions: ["registration-reward:view"], + }, + listReports: { + method: "GET", + operationId: API_OPERATIONS.listReports, + path: "/v1/admin/operations/reports", + permission: "report:view", + permissions: ["report:view"], + }, + listResourceGrants: { + method: "GET", + operationId: API_OPERATIONS.listResourceGrants, + path: "/v1/admin/resource-grants", + permission: "resource-grant:view", + permissions: ["resource-grant:view"], + }, + listResourceGroups: { + method: "GET", + operationId: API_OPERATIONS.listResourceGroups, + path: "/v1/admin/resource-groups", + permission: "resource-group:view", + permissions: ["resource-group:view"], + }, + listResources: { + method: "GET", + operationId: API_OPERATIONS.listResources, + path: "/v1/admin/resources", + permission: "resource:view", + permissions: ["resource:view"], + }, + listResourceShopItems: { + method: "GET", + operationId: API_OPERATIONS.listResourceShopItems, + path: "/v1/admin/resource-shop/items", + permission: "resource-shop:view", + permissions: ["resource-shop:view"], + }, + listResourceShopPurchaseOrders: { + method: "GET", + operationId: API_OPERATIONS.listResourceShopPurchaseOrders, + path: "/v1/admin/resource-shop/purchase-orders", + permission: "resource-shop:view", + permissions: ["resource-shop:view"], + }, + listRobotRooms: { + method: "GET", + operationId: API_OPERATIONS.listRobotRooms, + path: "/v1/admin/rooms/robot-rooms", + permission: "room-robot:view", + permissions: ["room-robot:view"], + }, + listRoles: { + method: "GET", + operationId: API_OPERATIONS.listRoles, + path: "/v1/roles", + permission: "role:view", + permissions: ["role:view"], + }, + listRoomPins: { + method: "GET", + operationId: API_OPERATIONS.listRoomPins, + path: "/v1/admin/rooms/pins", + permission: "room-pin:view", + permissions: ["room-pin:view"], + }, + listRoomRpsChallenges: { + method: "GET", + operationId: API_OPERATIONS.listRoomRpsChallenges, + path: "/v1/admin/game/room-rps/challenges", + permission: "game:view", + permissions: ["game:view"], + }, + listRooms: { + method: "GET", + operationId: API_OPERATIONS.listRooms, + path: "/v1/admin/rooms", + permission: "room:view", + permissions: ["room:view"], + }, + listRoomTurnoverRewardSettlements: { + method: "GET", + operationId: API_OPERATIONS.listRoomTurnoverRewardSettlements, + path: "/v1/admin/activity/room-turnover-reward/settlements", + permission: "room-turnover-reward:view", + permissions: ["room-turnover-reward:view"], + }, + listSelfGames: { + method: "GET", + operationId: API_OPERATIONS.listSelfGames, + path: "/v1/admin/game/self-games", + permission: "game:view", + permissions: ["game:view"], + }, + listSevenDayCheckInClaims: { + method: "GET", + operationId: API_OPERATIONS.listSevenDayCheckInClaims, + path: "/v1/admin/activity/seven-day-checkin/claims", + permission: "seven-day-checkin:view", + permissions: ["seven-day-checkin:view"], + }, + listSplashScreens: { + method: "GET", + operationId: API_OPERATIONS.listSplashScreens, + path: "/v1/admin/app-config/splash-screens", + permission: "app-config:view", + permissions: ["app-config:view"], + }, + listSystemMenus: { + method: "GET", + operationId: API_OPERATIONS.listSystemMenus, + path: "/v1/system/menus", + permission: "menu:view", + permissions: ["menu:view"], + }, + listTaskDefinitions: { + method: "GET", + operationId: API_OPERATIONS.listTaskDefinitions, + path: "/v1/admin/activity/daily-tasks", + permission: "daily-task:view", + permissions: ["daily-task:view"], + }, + listTeams: { + method: "GET", + operationId: API_OPERATIONS.listTeams, + path: "/v1/teams", + permission: "team:view", + permissions: ["team:view"], + }, + listTeamSalaryPolicies: { + method: "GET", + operationId: API_OPERATIONS.listTeamSalaryPolicies, + path: "/v1/admin/team-salary-policies", + permission: "team-salary-policy:view", + permissions: ["team-salary-policy:view"], + }, + listTeamUsers: { + method: "GET", + operationId: API_OPERATIONS.listTeamUsers, + path: "/v1/teams/{team_id}/users", + permission: "user:view", + permissions: ["user:view"], + }, + listTemporaryPaymentLinks: { + method: "GET", + operationId: API_OPERATIONS.listTemporaryPaymentLinks, + path: "/v1/admin/payment/temporary-links", + permission: "payment-temporary-link:view", + permissions: ["payment-temporary-link:view"], + }, + listThirdPartyPaymentChannels: { + method: "GET", + operationId: API_OPERATIONS.listThirdPartyPaymentChannels, + path: "/v1/admin/payment/third-party-channels", + permission: "payment-third-party:view", + permissions: ["payment-third-party:view"], + }, + listUserFinanceScopes: { + method: "GET", + operationId: API_OPERATIONS.listUserFinanceScopes, + path: "/v1/users/{id}/finance-scopes", + permission: "user:view", + permissions: ["user:view"], + }, + listUserLeaderboards: { + method: "GET", + operationId: API_OPERATIONS.listUserLeaderboards, + path: "/v1/admin/activity/user-leaderboards", + permission: "user-leaderboard:view", + permissions: ["user-leaderboard:view"], + }, + listUsers: { + method: "GET", + operationId: API_OPERATIONS.listUsers, + path: "/v1/users", + permission: "user:view", + permissions: ["user:view"], + }, + listWeeklyStarCycles: { + method: "GET", + operationId: API_OPERATIONS.listWeeklyStarCycles, + path: "/v1/admin/activity/weekly-star/cycles", + permission: "weekly-star:view", + permissions: ["weekly-star:view"], + }, + listWeeklyStarLeaderboard: { + method: "GET", + operationId: API_OPERATIONS.listWeeklyStarLeaderboard, + path: "/v1/admin/activity/weekly-star/cycles/{cycle_id}/leaderboard", + permission: "weekly-star:view", + permissions: ["weekly-star:view"], + }, + listWeeklyStarSettlements: { + method: "GET", + operationId: API_OPERATIONS.listWeeklyStarSettlements, + path: "/v1/admin/activity/weekly-star/cycles/{cycle_id}/settlements", + permission: "weekly-star:settle", + permissions: ["weekly-star:settle"], + }, + listWheelDraws: { + method: "GET", + operationId: API_OPERATIONS.listWheelDraws, + path: "/v1/admin/activity/wheel/draws", + permission: "wheel:view", + permissions: ["wheel:view"], + }, + login: { + method: "POST", + operationId: API_OPERATIONS.login, + path: "/v1/auth/login", + }, + logout: { + method: "POST", + operationId: API_OPERATIONS.logout, + path: "/v1/auth/logout", + }, + lookupCoinAdjustmentTarget: { + method: "GET", + operationId: API_OPERATIONS.lookupCoinAdjustmentTarget, + path: "/v1/admin/operations/coin-adjustments/target", + permission: "coin-adjustment:create", + permissions: ["coin-adjustment:create"], + }, + lookupResourceGrantTarget: { + method: "GET", + operationId: API_OPERATIONS.lookupResourceGrantTarget, + path: "/v1/admin/resource-grants/target", + permission: "resource-grant:create", + permissions: ["resource-grant:create"], + }, + me: { + method: "GET", + operationId: API_OPERATIONS.me, + path: "/v1/auth/me", + }, + navigationMenus: { + method: "GET", + operationId: API_OPERATIONS.navigationMenus, + path: "/v1/navigation/menus", + }, + publishHostAgencyPolicy: { + method: "POST", + operationId: API_OPERATIONS.publishHostAgencyPolicy, + path: "/v1/admin/host-agency-policies/{policy_id}/publish", + permission: "host-agency-policy:publish", + permissions: ["host-agency-policy:publish"], + }, + publishPolicyInstance: { + method: "POST", + operationId: API_OPERATIONS.publishPolicyInstance, + path: "/v1/admin/policy-instances/{instance_id}/publish", + permission: "policy-instance:publish", + permissions: ["policy-instance:publish"], + }, + recyclePrettyId: { + method: "POST", + operationId: API_OPERATIONS.recyclePrettyId, + path: "/v1/admin/users/pretty-ids/{pretty_id}/recycle", + permission: "pretty-id:update", + permissions: ["pretty-id:update"], + }, + refresh: { + method: "POST", + operationId: API_OPERATIONS.refresh, + path: "/v1/auth/refresh", + }, + refreshGoogleRechargePaid: { + method: "POST", + operationId: API_OPERATIONS.refreshGoogleRechargePaid, + path: "/v1/admin/payment/recharge-bills/google-paid/refresh", + permission: "payment-bill:view", + permissions: ["payment-bill:view"], + }, + rejectCoinSellerSubApplication: { + method: "POST", + operationId: API_OPERATIONS.rejectCoinSellerSubApplication, + path: "/v1/admin/coin-seller-sub-applications/{application_id}/reject", + permission: "coin-seller-sub-application:audit", + permissions: ["coin-seller-sub-application:audit"], + }, + rejectFinanceApplication: { + method: "POST", + operationId: API_OPERATIONS.rejectFinanceApplication, + path: "/v1/admin/finance/applications/{application_id}/reject", + permission: "finance-application:audit", + permissions: ["finance-application:audit"], + }, + rejectFinanceWithdrawalApplication: { + method: "POST", + operationId: API_OPERATIONS.rejectFinanceWithdrawalApplication, + path: "/v1/admin/finance/withdrawal-applications/{application_id}/reject", + permission: "finance-withdrawal:audit", + permissions: ["finance-withdrawal:audit", "finance-application:audit"], + }, + renameCountryCode: { + method: "POST", + operationId: API_OPERATIONS.renameCountryCode, + path: "/v1/admin/countries/{country_id}/rename-code", + permission: "country:update", + permissions: ["country:update"], + }, + replaceCoinSellerSalaryRates: { + method: "PUT", + operationId: API_OPERATIONS.replaceCoinSellerSalaryRates, + path: "/v1/admin/coin-seller-salary-rates/{region_id}", + permission: "coin-seller:exchange-rate", + permissions: ["coin-seller:exchange-rate"], + }, + replaceRegionBlocks: { + method: "PUT", + operationId: API_OPERATIONS.replaceRegionBlocks, + path: "/v1/admin/users/region-blocks", + permission: "region-block:update", + permissions: ["region-block:update"], + }, + replaceRegionCountries: { + method: "PUT", + operationId: API_OPERATIONS.replaceRegionCountries, + path: "/v1/admin/regions/{region_id}/countries", + permission: "region:update", + permissions: ["region:update"], + }, + replaceRoleDataScopes: { + method: "PUT", + operationId: API_OPERATIONS.replaceRoleDataScopes, + path: "/v1/roles/{id}/data-scopes", + permission: "role:data-scope", + permissions: ["role:data-scope"], + }, + replaceRolePermissions: { + method: "PUT", + operationId: API_OPERATIONS.replaceRolePermissions, + path: "/v1/roles/{id}/permissions", + permission: "role:permission", + permissions: ["role:permission", "role:manage"], + }, + replaceUserFinanceScopes: { + method: "PUT", + operationId: API_OPERATIONS.replaceUserFinanceScopes, + path: "/v1/users/{id}/finance-scopes", + permission: "user:update", + permissions: ["user:update"], + }, + resetUserPassword: { + method: "POST", + operationId: API_OPERATIONS.resetUserPassword, + path: "/v1/users/{id}/reset-password", + permission: "user:reset-password", + permissions: ["user:reset-password"], + }, + retryRedPacketRefund: { + method: "POST", + operationId: API_OPERATIONS.retryRedPacketRefund, + path: "/v1/admin/activity/red-packets/refund/retry", + permission: "red-packet:update", + permissions: ["red-packet:update"], + }, + retryRoomRpsSettlement: { + method: "POST", + operationId: API_OPERATIONS.retryRoomRpsSettlement, + path: "/v1/admin/game/room-rps/challenges/{challenge_id}/retry-settlement", + permission: "game:update", + permissions: ["game:update"], + }, + retryRoomTurnoverRewardSettlement: { + method: "POST", + operationId: API_OPERATIONS.retryRoomTurnoverRewardSettlement, + path: "/v1/admin/activity/room-turnover-reward/settlements/{settlement_id}/retry", + permission: "room-turnover-reward:retry", + permissions: ["room-turnover-reward:retry"], + }, + revokeResourceGrant: { + method: "POST", + operationId: API_OPERATIONS.revokeResourceGrant, + path: "/v1/admin/resource-grants/{grant_id}/revoke", + permission: "resource-grant:revoke", + permissions: ["resource-grant:revoke"], + }, + savePolicyTemplate: { + method: "POST", + operationId: API_OPERATIONS.savePolicyTemplate, + path: "/v1/admin/policy-templates", + permission: "policy-template:create", + permissions: ["policy-template:create"], + }, + search: { + method: "GET", + operationId: API_OPERATIONS.search, + path: "/v1/search", + }, + selfGameStatisticsOverview: { + method: "GET", + operationId: API_OPERATIONS.selfGameStatisticsOverview, + path: "/v1/statistics/self-games/overview", + permission: "overview:view", + permissions: ["overview:view"], + }, + setAgencyJoinEnabled: { + method: "POST", + operationId: API_OPERATIONS.setAgencyJoinEnabled, + path: "/v1/admin/agencies/{agency_id}/join-enabled", + permission: "agency:status", + permissions: ["agency:status"], + }, + setAgencyStatus: { + method: "PATCH", + operationId: API_OPERATIONS.setAgencyStatus, + path: "/v1/admin/agencies/{agency_id}/status", + permission: "agency:status", + permissions: ["agency:status"], + }, + setBDLeaderStatus: { + method: "PATCH", + operationId: API_OPERATIONS.setBDLeaderStatus, + path: "/v1/admin/bd-leaders/{user_id}/status", + permission: "bd:update", + permissions: ["bd:update"], + }, + setBDStatus: { + method: "PATCH", + operationId: API_OPERATIONS.setBDStatus, + path: "/v1/admin/bds/{user_id}/status", + permission: "bd:update", + permissions: ["bd:update"], + }, + setCoinSellerStatus: { + method: "PATCH", + operationId: API_OPERATIONS.setCoinSellerStatus, + path: "/v1/admin/coin-sellers/{user_id}/status", + permission: "coin-seller:update", + permissions: ["coin-seller:update"], + }, + setDiceRobotStatus: { + method: "PATCH", + operationId: API_OPERATIONS.setDiceRobotStatus, + path: "/v1/admin/game/robots/{user_id}/status", + permission: "game:update", + permissions: ["game:update"], + }, + setGameStatus: { + method: "PATCH", + operationId: API_OPERATIONS.setGameStatus, + path: "/v1/admin/game/games/{game_id}/status", + permission: "game:status", + permissions: ["game:status"], + }, + setPrettyIdStatus: { + method: "POST", + operationId: API_OPERATIONS.setPrettyIdStatus, + path: "/v1/admin/users/pretty-ids/{pretty_id}/status", + permission: "pretty-id:update", + permissions: ["pretty-id:update"], + }, + setTaskDefinitionStatus: { + method: "POST", + operationId: API_OPERATIONS.setTaskDefinitionStatus, + path: "/v1/admin/activity/daily-tasks/{task_id}/status", + permission: "daily-task:status", + permissions: ["daily-task:status"], + }, + setThirdPartyPaymentMethodStatus: { + method: "PATCH", + operationId: API_OPERATIONS.setThirdPartyPaymentMethodStatus, + path: "/v1/admin/payment/third-party-methods/{method_id}/status", + permission: "payment-third-party:update", + permissions: ["payment-third-party:update"], + }, + setWeeklyStarCycleStatus: { + method: "PATCH", + operationId: API_OPERATIONS.setWeeklyStarCycleStatus, + path: "/v1/admin/activity/weekly-star/cycles/{cycle_id}/status", + permission: "weekly-star:update", + permissions: ["weekly-star:update"], + }, + sortMenus: { + method: "PUT", + operationId: API_OPERATIONS.sortMenus, + path: "/v1/system/menus/sort", + permission: "menu:sort", + permissions: ["menu:sort"], + }, + startRobotRoom: { + method: "POST", + operationId: API_OPERATIONS.startRobotRoom, + path: "/v1/admin/rooms/robot-rooms/{room_id}/start", + permission: "room-robot:update", + permissions: ["room-robot:update"], + }, + statisticsOverview: { + method: "GET", + operationId: API_OPERATIONS.statisticsOverview, + path: "/v1/statistics/overview", + permission: "overview:view", + permissions: ["overview:view"], + }, + stopRobotRoom: { + method: "POST", + operationId: API_OPERATIONS.stopRobotRoom, + path: "/v1/admin/rooms/robot-rooms/{room_id}/stop", + permission: "room-robot:update", + permissions: ["room-robot:update"], + }, + syncPermissions: { + method: "POST", + operationId: API_OPERATIONS.syncPermissions, + path: "/v1/permissions/sync", + permission: "permission:sync", + permissions: ["permission:sync"], + }, + syncThirdPartyPaymentMethods: { + method: "POST", + operationId: API_OPERATIONS.syncThirdPartyPaymentMethods, + path: "/v1/admin/payment/third-party-methods/sync", + permission: "payment-third-party:update", + permissions: ["payment-third-party:update"], + }, + syncThirdPartyPaymentRates: { + method: "POST", + operationId: API_OPERATIONS.syncThirdPartyPaymentRates, + path: "/v1/admin/payment/third-party-rates/sync", + permission: "payment-third-party:update", + permissions: ["payment-third-party:update"], + }, + updateAchievementDefinition: { + method: "PUT", + operationId: API_OPERATIONS.updateAchievementDefinition, + path: "/v1/admin/activity/achievements/{achievement_id}", + permission: "achievement:update", + permissions: ["achievement:update"], + }, + updateAppVersion: { + method: "PUT", + operationId: API_OPERATIONS.updateAppVersion, + path: "/v1/admin/app-config/versions/{version_id}", + permission: "app-version:update", + permissions: ["app-version:update"], + }, + updateBanner: { + method: "PUT", + operationId: API_OPERATIONS.updateBanner, + path: "/v1/admin/app-config/banners/{banner_id}", + permission: "app-config:update", + permissions: ["app-config:update"], + }, + updateCatalog: { + method: "PATCH", + operationId: API_OPERATIONS.updateCatalog, + path: "/v1/admin/game/games/{game_id}", + permission: "game:update", + permissions: ["game:update"], + }, + updateCountry: { + method: "PATCH", + operationId: API_OPERATIONS.updateCountry, + path: "/v1/admin/countries/{country_id}", + permission: "country:update", + permissions: ["country:update"], + }, + updateCPConfig: { + method: "PUT", + operationId: API_OPERATIONS.updateCPConfig, + path: "/v1/admin/activity/cp/config", + permission: "cp-config:update", + permissions: ["cp-config:update"], + }, + updateCPWeeklyRankConfig: { + method: "PUT", + operationId: API_OPERATIONS.updateCPWeeklyRankConfig, + path: "/v1/admin/activity/cp-weekly-rank/config", + permission: "cp-weekly-rank:update", + permissions: ["cp-weekly-rank:update"], + }, + updateCumulativeRechargeRewardConfig: { + method: "PUT", + operationId: API_OPERATIONS.updateCumulativeRechargeRewardConfig, + path: "/v1/admin/activity/cumulative-recharge-reward/config", + permission: "cumulative-recharge-reward:update", + permissions: ["cumulative-recharge-reward:update"], + }, + updateDiceConfig: { + method: "PATCH", + operationId: API_OPERATIONS.updateDiceConfig, + path: "/v1/admin/game/self-games/{game_id}/config", + permission: "game:update", + permissions: ["game:update"], + }, + updateExploreTab: { + method: "PUT", + operationId: API_OPERATIONS.updateExploreTab, + path: "/v1/admin/app-config/explore-tabs/{tab_id}", + permission: "app-config:update", + permissions: ["app-config:update"], + }, + updateFirstRechargeRewardConfig: { + method: "PUT", + operationId: API_OPERATIONS.updateFirstRechargeRewardConfig, + path: "/v1/admin/activity/first-recharge-reward/config", + permission: "first-recharge-reward:update", + permissions: ["first-recharge-reward:update"], + }, + updateGift: { + method: "PUT", + operationId: API_OPERATIONS.updateGift, + path: "/v1/admin/gifts/{gift_id}", + permission: "gift:update", + permissions: ["gift:update"], + }, + updateGiftType: { + method: "PUT", + operationId: API_OPERATIONS.updateGiftType, + path: "/v1/admin/gift-types/{type_code}", + permission: "gift:update", + permissions: ["gift:update"], + }, + updateGiftTypes: { + method: "PUT", + operationId: API_OPERATIONS.updateGiftTypes, + path: "/v1/admin/gift-types", + permission: "gift:update", + permissions: ["gift:update"], + }, + updateH5Link: { + method: "PUT", + operationId: API_OPERATIONS.updateH5Link, + path: "/v1/admin/app-config/h5-links/{key}", + permission: "app-config:update", + permissions: ["app-config:update"], + }, + updateH5Links: { + method: "PUT", + operationId: API_OPERATIONS.updateH5Links, + path: "/v1/admin/app-config/h5-links", + permission: "app-config:update", + permissions: ["app-config:update"], + }, + updateHostAgencyPolicy: { + method: "PUT", + operationId: API_OPERATIONS.updateHostAgencyPolicy, + path: "/v1/admin/host-agency-policies/{policy_id}", + permission: "host-agency-policy:update", + permissions: ["host-agency-policy:update"], + }, + updateHumanRoomRobotConfig: { + method: "PUT", + operationId: API_OPERATIONS.updateHumanRoomRobotConfig, + path: "/v1/admin/rooms/robot-rooms/human-config", + permission: "room-robot:update", + permissions: ["room-robot:update"], + }, + updateInviteActivityRewardConfig: { + method: "PUT", + operationId: API_OPERATIONS.updateInviteActivityRewardConfig, + path: "/v1/admin/activity/invite-reward/config", + permission: "invite-activity-reward:update", + permissions: ["invite-activity-reward:update"], + }, + updateManager: { + method: "PUT", + operationId: API_OPERATIONS.updateManager, + path: "/v1/admin/managers/{user_id}", + permission: "bd:update", + permissions: ["bd:update"], + }, + updateMenu: { + method: "PATCH", + operationId: API_OPERATIONS.updateMenu, + path: "/v1/system/menus/{id}", + permission: "menu:update", + permissions: ["menu:update"], + }, + updateMenuVisible: { + method: "PATCH", + operationId: API_OPERATIONS.updateMenuVisible, + path: "/v1/system/menus/{id}/visible", + permission: "menu:visible", + permissions: ["menu:visible"], + }, + updatePermission: { + method: "PATCH", + operationId: API_OPERATIONS.updatePermission, + path: "/v1/permissions/{id}", + permission: "permission:update", + permissions: ["permission:update"], + }, + updatePlatform: { + method: "PATCH", + operationId: API_OPERATIONS.updatePlatform, + path: "/v1/admin/game/platforms/{platform_code}", + permission: "game:update", + permissions: ["game:update"], + }, + updatePolicyInstanceStatus: { + method: "PUT", + operationId: API_OPERATIONS.updatePolicyInstanceStatus, + path: "/v1/admin/policy-instances/{instance_id}/status", + permission: "policy-instance:update", + permissions: ["policy-instance:update"], + }, + updatePopup: { + method: "PUT", + operationId: API_OPERATIONS.updatePopup, + path: "/v1/admin/app-config/popups/{popup_id}", + permission: "app-config:update", + permissions: ["app-config:update"], + }, + updatePrettyIdPool: { + method: "PUT", + operationId: API_OPERATIONS.updatePrettyIdPool, + path: "/v1/admin/users/pretty-id-pools/{pool_id}", + permission: "pretty-id:update", + permissions: ["pretty-id:update"], + }, + updateRechargeProduct: { + method: "PUT", + operationId: API_OPERATIONS.updateRechargeProduct, + path: "/v1/admin/payment/recharge-products/{product_id}", + permission: "payment-product:update", + permissions: ["payment-product:update"], + }, + updateRedPacketConfig: { + method: "PUT", + operationId: API_OPERATIONS.updateRedPacketConfig, + path: "/v1/admin/activity/red-packets/config", + permission: "red-packet:update", + permissions: ["red-packet:update"], + }, + updateRegion: { + method: "PATCH", + operationId: API_OPERATIONS.updateRegion, + path: "/v1/admin/regions/{region_id}", + permission: "region:update", + permissions: ["region:update"], + }, + updateRegistrationRewardConfig: { + method: "PUT", + operationId: API_OPERATIONS.updateRegistrationRewardConfig, + path: "/v1/admin/activity/registration-reward/config", + permission: "registration-reward:update", + permissions: ["registration-reward:update"], + }, + updateResource: { + method: "PUT", + operationId: API_OPERATIONS.updateResource, + path: "/v1/admin/resources/{resource_id}", + permission: "resource:update", + permissions: ["resource:update"], + }, + updateResourceGroup: { + method: "PUT", + operationId: API_OPERATIONS.updateResourceGroup, + path: "/v1/admin/resource-groups/{group_id}", + permission: "resource-group:update", + permissions: ["resource-group:update"], + }, + updateResourceGroupItems: { + method: "PUT", + operationId: API_OPERATIONS.updateResourceGroupItems, + path: "/v1/admin/resource-groups/{group_id}/items", + permission: "resource-group:update", + permissions: ["resource-group:update"], + }, + updateResourceIdentityAutoGrantConfig: { + method: "PUT", + operationId: API_OPERATIONS.updateResourceIdentityAutoGrantConfig, + path: "/v1/admin/resource-groups/identity-auto-grant-config", + permission: "resource-group:update", + permissions: ["resource-group:update"], + }, + updateRiskConfig: { + method: "PUT", + operationId: API_OPERATIONS.updateRiskConfig, + path: "/v1/admin/users/risk-config", + permission: "risk-config:update", + permissions: ["risk-config:update"], + }, + updateRole: { + method: "PATCH", + operationId: API_OPERATIONS.updateRole, + path: "/v1/roles/{id}", + permission: "role:update", + permissions: ["role:update", "role:manage"], + }, + updateRoom: { + method: "PATCH", + operationId: API_OPERATIONS.updateRoom, + path: "/v1/admin/rooms/{room_id}", + permission: "room:update", + permissions: ["room:update"], + }, + updateRoomConfig: { + method: "PUT", + operationId: API_OPERATIONS.updateRoomConfig, + path: "/v1/admin/rooms/config", + permission: "room-config:update", + permissions: ["room-config:update"], + }, + updateRoomRocketConfig: { + method: "PUT", + operationId: API_OPERATIONS.updateRoomRocketConfig, + path: "/v1/admin/activity/room-rocket/config", + permission: "room-rocket:update", + permissions: ["room-rocket:update"], + }, + updateRoomRpsConfig: { + method: "PATCH", + operationId: API_OPERATIONS.updateRoomRpsConfig, + path: "/v1/admin/game/room-rps/config", + permission: "game:update", + permissions: ["game:update"], + }, + updateRoomTurnoverRewardConfig: { + method: "PUT", + operationId: API_OPERATIONS.updateRoomTurnoverRewardConfig, + path: "/v1/admin/activity/room-turnover-reward/config", + permission: "room-turnover-reward:update", + permissions: ["room-turnover-reward:update"], + }, + updateRoomWhitelistConfig: { + method: "PUT", + operationId: API_OPERATIONS.updateRoomWhitelistConfig, + path: "/v1/admin/rooms/whitelist", + permission: "room-whitelist:update", + permissions: ["room-whitelist:update"], + }, + updateSevenDayCheckInConfig: { + method: "PUT", + operationId: API_OPERATIONS.updateSevenDayCheckInConfig, + path: "/v1/admin/activity/seven-day-checkin/config", + permission: "seven-day-checkin:update", + permissions: ["seven-day-checkin:update"], + }, + updateSplashScreen: { + method: "PUT", + operationId: API_OPERATIONS.updateSplashScreen, + path: "/v1/admin/app-config/splash-screens/{splash_id}", + permission: "app-config:update", + permissions: ["app-config:update"], + }, + updateTaskDefinition: { + method: "PUT", + operationId: API_OPERATIONS.updateTaskDefinition, + path: "/v1/admin/activity/daily-tasks/{task_id}", + permission: "daily-task:update", + permissions: ["daily-task:update"], + }, + updateTeam: { + method: "PATCH", + operationId: API_OPERATIONS.updateTeam, + path: "/v1/teams/{team_id}", + permission: "team:update", + permissions: ["team:update"], + }, + updateTeamSalaryPolicy: { + method: "PUT", + operationId: API_OPERATIONS.updateTeamSalaryPolicy, + path: "/v1/admin/team-salary-policies/{policy_id}", + permission: "team-salary-policy:update", + permissions: ["team-salary-policy:update"], + }, + updateThirdPartyPaymentRate: { + method: "PATCH", + operationId: API_OPERATIONS.updateThirdPartyPaymentRate, + path: "/v1/admin/payment/third-party-rates/{method_id}", + permission: "payment-third-party:update", + permissions: ["payment-third-party:update"], + }, + updateTier: { + method: "PUT", + operationId: API_OPERATIONS.updateTier, + path: "/v1/admin/users/level-config/tiers/{tier_id}", + permission: "level-config:update", + permissions: ["level-config:update"], + }, + updateTrack: { + method: "PUT", + operationId: API_OPERATIONS.updateTrack, + path: "/v1/admin/users/level-config/tracks/{track}", + permission: "level-config:update", + permissions: ["level-config:update"], + }, + updateUser: { + method: "PATCH", + operationId: API_OPERATIONS.updateUser, + path: "/v1/users/{id}", + permission: "user:update", + permissions: ["user:update"], + }, + updateUserStatus: { + method: "PATCH", + operationId: API_OPERATIONS.updateUserStatus, + path: "/v1/users/{id}/status", + permission: "user:status", + permissions: ["user:status"], + }, + updateWeeklyStarCycle: { + method: "PUT", + operationId: API_OPERATIONS.updateWeeklyStarCycle, + path: "/v1/admin/activity/weekly-star/cycles/{cycle_id}", + permission: "weekly-star:update", + permissions: ["weekly-star:update"], + }, + uploadFile: { + method: "POST", + operationId: API_OPERATIONS.uploadFile, + path: "/v1/admin/files/upload", + permission: "upload:create", + permissions: ["upload:create"], + }, + uploadImage: { + method: "POST", + operationId: API_OPERATIONS.uploadImage, + path: "/v1/admin/files/image/upload", + permission: "upload:create", + permissions: ["upload:create"], + }, + upsertLuckyGiftConfig: { + method: "PUT", + operationId: API_OPERATIONS.upsertLuckyGiftConfig, + path: "/v1/admin/activity/lucky-gifts/v2/config", + permission: "lucky-gift:update", + permissions: ["lucky-gift:update"], + }, + upsertResourceShopItems: { + method: "POST", + operationId: API_OPERATIONS.upsertResourceShopItems, + path: "/v1/admin/resource-shop/items", + permission: "resource-shop:update", + permissions: ["resource-shop:update"], + }, + upsertRule: { + method: "PUT", + operationId: API_OPERATIONS.upsertRule, + path: "/v1/admin/users/level-config/rules/{track}/{level}", + permission: "level-config:update", + permissions: ["level-config:update"], + }, + upsertWheelConfig: { + method: "PUT", + operationId: API_OPERATIONS.upsertWheelConfig, + path: "/v1/admin/activity/wheel/config", + permission: "wheel:update", + permissions: ["wheel:update"], + }, + verifyFinanceCoinSellerRechargeOrder: { + method: "POST", + operationId: API_OPERATIONS.verifyFinanceCoinSellerRechargeOrder, + path: "/v1/admin/finance/orders/coin-seller-recharges/{order_id}/verify", + permission: "finance-order:coin-seller-recharge:verify", + permissions: ["finance-order:coin-seller-recharge:verify"], + }, + verifyFinanceCoinSellerRechargeReceipt: { + method: "POST", + operationId: API_OPERATIONS.verifyFinanceCoinSellerRechargeReceipt, + path: "/v1/admin/finance/orders/coin-seller-recharges/receipt-verifications", + permission: "finance-order:coin-seller-recharge:verify", + permissions: ["finance-order:coin-seller-recharge:verify"], + }, }; export const API_OPERATION_IDS = Object.values(API_OPERATIONS); export const API_PERMISSION_CODES = Array.from( - new Set( - Object.values(API_ENDPOINTS) - .flatMap((endpoint) => endpoint.permissions || (endpoint.permission ? [endpoint.permission] : [])) - .filter((permission): permission is PermissionCode => Boolean(permission)) - ) + new Set( + Object.values(API_ENDPOINTS) + .flatMap((endpoint) => endpoint.permissions || (endpoint.permission ? [endpoint.permission] : [])) + .filter((permission): permission is PermissionCode => Boolean(permission)), + ), ); export type ApiPathParams = Record; export function apiEndpointPath(operationId: ApiOperationId, params: ApiPathParams = {}) { - let endpointPath = API_ENDPOINTS[operationId].path; + let endpointPath = API_ENDPOINTS[operationId].path; - for (const [key, value] of Object.entries(params)) { - endpointPath = endpointPath.replace(`{${key}}`, encodeURIComponent(String(value))); - } + for (const [key, value] of Object.entries(params)) { + endpointPath = endpointPath.replace(`{${key}}`, encodeURIComponent(String(value))); + } - return endpointPath; + return endpointPath; } diff --git a/src/shared/api/generated/schema.d.ts b/src/shared/api/generated/schema.d.ts index 055607a..4fdd3eb 100644 --- a/src/shared/api/generated/schema.d.ts +++ b/src/shared/api/generated/schema.d.ts @@ -1108,6 +1108,70 @@ export interface paths { patch: operations["setCoinSellerStatus"]; trace?: never; }; + "/admin/coin-sellers/{user_id}/sub-sellers": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get: operations["listCoinSellerSubSellers"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/admin/coin-seller-sub-applications": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get: operations["listCoinSellerSubApplications"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/admin/coin-seller-sub-applications/{application_id}/approve": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + post: operations["approveCoinSellerSubApplication"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/admin/coin-seller-sub-applications/{application_id}/reject": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + post: operations["rejectCoinSellerSubApplication"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; "/admin/coin-sellers/{user_id}/stock-credits": { parameters: { query?: never; @@ -4096,6 +4160,12 @@ export interface components { pageSize: number; total: number; }; + ApiPageCoinSellerSubApplication: { + items: components["schemas"]["CoinSellerSubApplication"][]; + page: number; + pageSize: number; + total: number; + }; ApiPageCoinSellerLedger: { items: components["schemas"]["CoinSellerLedger"][]; page: number; @@ -4255,6 +4325,12 @@ export interface components { ApiResponseCoinSeller: components["schemas"]["Envelope"] & { data?: components["schemas"]["CoinSeller"]; }; + ApiResponseCoinSellerSubApplicationPage: components["schemas"]["Envelope"] & { + data?: components["schemas"]["ApiPageCoinSellerSubApplication"]; + }; + ApiResponseCoinSellerSubApplicationReview: components["schemas"]["Envelope"] & { + data?: components["schemas"]["CoinSellerSubApplicationReviewResult"]; + }; ApiResponseCoinSellerLedgerPage: components["schemas"]["Envelope"] & { data?: components["schemas"]["ApiPageCoinSellerLedger"]; }; @@ -4492,11 +4568,79 @@ export interface components { regionName?: string; /** @enum {string} */ status?: "active" | "disabled"; + subCoinSellerCount?: number; totalRechargeUsdtMicro?: number; updatedAtMs?: number; userId: string; username?: string; }; + CoinSellerSubApplicationUser: { + avatar?: string; + displayUserId?: string; + regionId?: number; + regionName?: string; + userId: string; + username?: string; + }; + CoinSellerSubApplication: { + applicationId: string; + commandId?: string; + createdAtMs?: number; + parent: components["schemas"]["CoinSellerSubApplicationUser"]; + relationId?: string; + reviewedAtMs?: number; + reviewedByAdminId?: string; + reviewReason?: string; + /** @enum {string} */ + status: "pending" | "approved" | "rejected"; + target: components["schemas"]["CoinSellerSubApplicationUser"]; + updatedAtMs?: number; + }; + CoinSellerSubApplicationReviewApplication: { + applicationId: string; + commandId?: string; + createdAtMs?: number; + parentUserId: string; + relationId?: string; + reviewedAtMs?: number; + reviewedByAdminId?: string; + reviewReason?: string; + /** @enum {string} */ + status: "pending" | "approved" | "rejected"; + targetUserId: string; + updatedAtMs?: number; + }; + CoinSellerSubRelation: { + childUserId: string; + createdAtMs?: number; + createdByUserId?: string; + parentUserId: string; + relationId: string; + status: string; + updatedAtMs?: number; + }; + CoinSellerSubApplicationReviewChild: { + avatar?: string; + canManageSubCoinSellers?: boolean; + contactInfo?: string; + displayUserId?: string; + merchantAssetType?: string; + regionId?: number; + regionName?: string; + status?: string; + updatedAtMs?: number; + userId: string; + username?: string; + }; + CoinSellerSubApplicationReviewPayload: { + commandId: string; + reason?: string; + }; + CoinSellerSubApplicationReviewResult: { + application?: components["schemas"]["CoinSellerSubApplicationReviewApplication"]; + child?: components["schemas"]["CoinSellerSubApplicationReviewChild"]; + relation?: components["schemas"]["CoinSellerSubRelation"]; + }; CoinLedgerUser: { avatar?: string; displayUserId?: string; @@ -4509,7 +4653,15 @@ export interface components { /** Format: int64 */ availableDelta: number; /** @enum {string} */ - bizType: "coin_seller_stock_purchase" | "coin_seller_stock_deduction" | "coin_seller_recharge" | "coin_seller_coin_compensation" | "coin_seller_transfer" | "coin_seller_sub_transfer" | "salary_transfer_to_coin_seller" | "manual_credit"; + bizType: + | "coin_seller_stock_purchase" + | "coin_seller_stock_deduction" + | "coin_seller_recharge" + | "coin_seller_coin_compensation" + | "coin_seller_transfer" + | "coin_seller_sub_transfer" + | "salary_transfer_to_coin_seller" + | "manual_credit"; commandId?: string; counterpartyUserId?: string; /** Format: int64 */ @@ -4841,7 +4993,13 @@ export interface components { appCode: string; appName?: string; /** @enum {string} */ - operation: "user_coin_credit" | "user_coin_debit" | "user_wallet_debit" | "user_wallet_credit" | "coin_seller_coin_credit" | "coin_seller_coin_debit"; + operation: + | "user_coin_credit" + | "user_coin_debit" + | "user_wallet_debit" + | "user_wallet_credit" + | "coin_seller_coin_credit" + | "coin_seller_coin_debit"; walletIdentity?: string; targetUserId: string; coinAmount: number; @@ -4923,7 +5081,13 @@ export interface components { FinanceApplicationInput: { appCode: string; /** @enum {string} */ - operation: "user_coin_credit" | "user_coin_debit" | "user_wallet_debit" | "user_wallet_credit" | "coin_seller_coin_credit" | "coin_seller_coin_debit"; + operation: + | "user_coin_credit" + | "user_coin_debit" + | "user_wallet_debit" + | "user_wallet_credit" + | "coin_seller_coin_credit" + | "coin_seller_coin_debit"; /** @enum {string} */ walletIdentity?: "host" | "agency" | "bd"; targetUserId: string; @@ -4940,6 +5104,8 @@ export interface components { /** @enum {string} */ providerCode: "mifapay" | "v5pay" | "usdt"; externalOrderNo: string; + providerCurrencyCode?: string; + providerAmountMinor?: number; /** @enum {string} */ chain?: "TRON" | "BSC"; remark?: string; @@ -4968,6 +5134,8 @@ export interface components { chain?: "TRON" | "BSC"; usdAmount?: number; usdMinorAmount?: number; + providerCurrencyCode?: string; + providerAmountMinor?: number; }; UserFinanceScope: { appCode: string; @@ -5021,6 +5189,24 @@ export interface components { }; }; /** @description OK */ + CoinSellerSubApplicationPageResponse: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ApiResponseCoinSellerSubApplicationPage"]; + }; + }; + /** @description OK */ + CoinSellerSubApplicationReviewResponse: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["ApiResponseCoinSellerSubApplicationReview"]; + }; + }; + /** @description OK */ CoinSellerLedgerPageResponse: { headers: { [name: string]: unknown; @@ -5398,6 +5584,11 @@ export interface components { "application/json": components["schemas"]["CoinSellerStatusPayload"]; }; }; + CoinSellerSubApplicationReviewRequest: { + content: { + "application/json": components["schemas"]["CoinSellerSubApplicationReviewPayload"]; + }; + }; CountryCreateRequest: { content: { "application/json": components["schemas"]["CountryCreateInput"]; @@ -6893,6 +7084,70 @@ export interface operations { 200: components["responses"]["CoinSellerResponse"]; }; }; + listCoinSellerSubSellers: { + parameters: { + query?: { + page?: components["parameters"]["Page"]; + page_size?: components["parameters"]["PageSize"]; + }; + header?: never; + path: { + user_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + 200: components["responses"]["CoinSellerPageResponse"]; + }; + }; + listCoinSellerSubApplications: { + parameters: { + query?: { + page?: components["parameters"]["Page"]; + page_size?: components["parameters"]["PageSize"]; + keyword?: components["parameters"]["Keyword"]; + status?: "pending" | "approved" | "rejected"; + parent_user_id?: string; + target_user_id?: string; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + 200: components["responses"]["CoinSellerSubApplicationPageResponse"]; + }; + }; + approveCoinSellerSubApplication: { + parameters: { + query?: never; + header?: never; + path: { + application_id: string; + }; + cookie?: never; + }; + requestBody: components["requestBodies"]["CoinSellerSubApplicationReviewRequest"]; + responses: { + 200: components["responses"]["CoinSellerSubApplicationReviewResponse"]; + }; + }; + rejectCoinSellerSubApplication: { + parameters: { + query?: never; + header?: never; + path: { + application_id: string; + }; + cookie?: never; + }; + requestBody: components["requestBodies"]["CoinSellerSubApplicationReviewRequest"]; + responses: { + 200: components["responses"]["CoinSellerSubApplicationReviewResponse"]; + }; + }; creditCoinSellerStock: { parameters: { query?: never; @@ -7770,7 +8025,11 @@ export interface operations { seller_filter_user_id?: string; seller_display_user_id?: string; seller_username?: string; - ledger_type?: "admin_stock_credit" | "seller_transfer" | "sub_seller_transfer" | "salary_transfer_received"; + ledger_type?: + | "admin_stock_credit" + | "seller_transfer" + | "sub_seller_transfer" + | "salary_transfer_received"; start_at_ms?: number; end_at_ms?: number; }; @@ -7793,7 +8052,11 @@ export interface operations { seller_filter_user_id?: string; seller_display_user_id?: string; seller_username?: string; - ledger_type?: "admin_stock_credit" | "seller_transfer" | "sub_seller_transfer" | "salary_transfer_received"; + ledger_type?: + | "admin_stock_credit" + | "seller_transfer" + | "sub_seller_transfer" + | "salary_transfer_received"; start_at_ms?: number; end_at_ms?: number; }; @@ -7847,7 +8110,13 @@ export interface operations { sent_at_ms?: number; summary: string; /** @enum {string} */ - target_scope: "all_registered_users" | "all_active_users" | "single_user" | "user_ids" | "region" | "country"; + target_scope: + | "all_registered_users" + | "all_active_users" + | "single_user" + | "user_ids" + | "region" + | "country"; /** Format: int64 */ target_user_id?: number; title: string; diff --git a/src/shared/api/types.ts b/src/shared/api/types.ts index c439833..f9c627a 100644 --- a/src/shared/api/types.ts +++ b/src/shared/api/types.ts @@ -628,7 +628,9 @@ export interface FinanceCoinSellerRechargeOrderPayload { chain?: string; coinAmount: number; externalOrderNo: string; + providerAmountMinor?: number; providerCode: "mifapay" | "v5pay" | "usdt"; + providerCurrencyCode?: string; remark?: string; targetUserId: EntityId; usdAmount: number; @@ -638,7 +640,9 @@ export interface FinanceCoinSellerRechargeReceiptVerificationPayload { appCode: string; chain?: string; externalOrderNo: string; + providerAmountMinor?: number; providerCode: "mifapay" | "v5pay" | "usdt"; + providerCurrencyCode?: string; usdAmount?: number; usdMinorAmount?: number; } @@ -842,12 +846,85 @@ export interface CoinSellerDto { regionId?: number; regionName?: string; status?: string; + subCoinSellerCount?: number; totalRechargeUsdtMicro?: number; updatedAtMs?: number; userId: string; username?: string; } +export interface CoinSellerSubApplicationUserDto { + avatar?: string; + displayUserId?: string; + regionId?: number; + regionName?: string; + userId: string; + username?: string; +} + +export interface CoinSellerSubApplicationDto { + applicationId: string; + commandId?: string; + createdAtMs?: number; + parent: CoinSellerSubApplicationUserDto; + relationId?: string; + reviewedAtMs?: number; + reviewedByAdminId?: string; + reviewReason?: string; + status: "pending" | "approved" | "rejected"; + target: CoinSellerSubApplicationUserDto; + updatedAtMs?: number; +} + +export interface CoinSellerSubApplicationReviewPayload { + commandId: string; + reason?: string; +} + +export interface CoinSellerSubApplicationReviewApplicationDto { + applicationId: string; + commandId?: string; + createdAtMs?: number; + parentUserId: string; + relationId?: string; + reviewedAtMs?: number; + reviewedByAdminId?: string; + reviewReason?: string; + status: "pending" | "approved" | "rejected"; + targetUserId: string; + updatedAtMs?: number; +} + +export interface CoinSellerSubRelationDto { + childUserId: string; + createdAtMs?: number; + createdByUserId?: string; + parentUserId: string; + relationId: string; + status: string; + updatedAtMs?: number; +} + +export interface CoinSellerSubApplicationReviewChildDto { + avatar?: string; + canManageSubCoinSellers?: boolean; + contactInfo?: string; + displayUserId?: string; + merchantAssetType?: string; + regionId?: number; + regionName?: string; + status?: string; + updatedAtMs?: number; + userId: string; + username?: string; +} + +export interface CoinSellerSubApplicationReviewResultDto { + application?: CoinSellerSubApplicationReviewApplicationDto; + child?: CoinSellerSubApplicationReviewChildDto; + relation?: CoinSellerSubRelationDto; +} + export interface CoinSellerStockCreditPayload { coinAmount: number; commandId: string;