@octane-rgs/admin 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -0
- package/dist/client.d.ts +82 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +194 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/permissions.d.ts +71 -0
- package/dist/permissions.d.ts.map +1 -0
- package/dist/permissions.js +96 -0
- package/dist/permissions.js.map +1 -0
- package/dist/types.d.ts +660 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +19 -0
package/README.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# @octane-rgs/admin
|
|
2
|
+
|
|
3
|
+
Typed client, roles and permissions for the Octane RGS admin API (`/api/admin`). Consumed by the back office and by scripts/cron.
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
import { OctaneAdminClient, can } from "@octane-rgs/admin";
|
|
7
|
+
|
|
8
|
+
// Scripts and cron: long-lived admin key.
|
|
9
|
+
const rgs = new OctaneAdminClient({ baseUrl: process.env.RGS_URL!, adminKey: process.env.RGS_ADMIN_KEY! });
|
|
10
|
+
await rgs.retryPayouts();
|
|
11
|
+
|
|
12
|
+
// Browser-facing servers: exchange the key for a short-lived session once,
|
|
13
|
+
// keep only the session token.
|
|
14
|
+
const { token, user } = await rgs.login({ userAgent: "octane-backoffice" });
|
|
15
|
+
const session = rgs.withSession(token);
|
|
16
|
+
if (can(user.role, "reports.read")) await session.ggrReport({ operatorCode: "acme", startDate, endDate });
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
`PERMISSIONS` maps each permission to the roles that hold it. The RGS enforces this table on every route; UIs should import it to decide what to render rather than duplicating the rules.
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { AdminClientOptions, AdminIdentity, LoginParams, LoginResult, LogoutParams, LogoutResult, ListUsersParams, ListUsersResult, CreateUserParams, CreateUserResult, UpdateUserParams, UpdateUserResult, RotateUserKeyParams, RotateUserKeyResult, ListAuditParams, ListAuditResult, ListTableSessionsParams, ListTableSessionsResult, GetRoundParams, RoundDetail, RetryPayoutsResult, RecoverMissingPayoutsResult, ScanOrphansParams, IntegrityScanReport, StaleRoundsParams, StaleRoundsResult, ResetOrphanedRoundResult, ListOperatorsResult, GetOperatorParams, OperatorDetail, RegisterOperatorParams, RegisterOperatorResult, UpdateOperatorParams, UpdateOperatorResult, SetOperatorEnabledParams, RotateOperatorKeyParams, RotateOperatorKeyResult, GameOperators, OperatorGames, ListGamesParams, ListGamesResult, RegisterGameParams, ContributionModule, RegisterContributionModuleParams, GgrReportParams, GgrReport, PlayerActivityParams, PlayerActivityReport, TransactionsParams, TransactionsReport, PayoutsParams, PayoutsResult, PlayerSearchParams, PlayerSearchResult, PlayerSummaryParams, PlayerSummary, ListSelfExclusionsParams, ListSelfExclusionsResult, ExcludePlayerParams, ExcludePlayerResult, GrantFreeRoundsParams, GrantFreeRoundsResult, CancelFreeRoundsParams, CancelFreeRoundsResult, ListFreeRoundsParams, ListFreeRoundsResult } from "./types";
|
|
2
|
+
export declare class RgsAdminError extends Error {
|
|
3
|
+
readonly status: number;
|
|
4
|
+
readonly detail?: unknown | undefined;
|
|
5
|
+
constructor(message: string, status: number, detail?: unknown | undefined);
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Typed client for `/api/admin`. Authenticates with either a long-lived admin
|
|
9
|
+
* key (`X-Admin-Key`) or a session token (`Authorization: Bearer`) obtained via
|
|
10
|
+
* `login()`. All calls are `POST` with a JSON body; a non-2xx response throws
|
|
11
|
+
* `RgsAdminError` carrying the HTTP status and the RGS error body.
|
|
12
|
+
*/
|
|
13
|
+
export declare class OctaneAdminClient {
|
|
14
|
+
private readonly baseUrl;
|
|
15
|
+
private readonly adminKey?;
|
|
16
|
+
private readonly sessionToken?;
|
|
17
|
+
private readonly fetchInit;
|
|
18
|
+
constructor(options: AdminClientOptions);
|
|
19
|
+
/** A client bound to a different credential, sharing base URL and fetch options. */
|
|
20
|
+
withSession(sessionToken: string): OctaneAdminClient;
|
|
21
|
+
withKey(adminKey: string): OctaneAdminClient;
|
|
22
|
+
protected authHeaders(): Record<string, string>;
|
|
23
|
+
protected post<T>(path: string, body?: unknown): Promise<T>;
|
|
24
|
+
whoami(): Promise<AdminIdentity>;
|
|
25
|
+
/** Requires the client to be bound to an admin key; a session cannot mint another session. */
|
|
26
|
+
login(params?: LoginParams): Promise<LoginResult>;
|
|
27
|
+
logout(params?: LogoutParams): Promise<LogoutResult>;
|
|
28
|
+
listUsers(params?: ListUsersParams): Promise<ListUsersResult>;
|
|
29
|
+
createUser(params: CreateUserParams): Promise<CreateUserResult>;
|
|
30
|
+
updateUser(params: UpdateUserParams): Promise<UpdateUserResult>;
|
|
31
|
+
rotateUserKey(params: RotateUserKeyParams): Promise<RotateUserKeyResult>;
|
|
32
|
+
listAudit(params?: ListAuditParams): Promise<ListAuditResult>;
|
|
33
|
+
listTableSessions(params?: ListTableSessionsParams): Promise<ListTableSessionsResult>;
|
|
34
|
+
getRound(params: GetRoundParams): Promise<RoundDetail>;
|
|
35
|
+
retryPayouts(): Promise<RetryPayoutsResult>;
|
|
36
|
+
recoverMissingPayouts(): Promise<RecoverMissingPayoutsResult>;
|
|
37
|
+
scanOrphans(params?: ScanOrphansParams): Promise<IntegrityScanReport>;
|
|
38
|
+
staleRounds(params?: StaleRoundsParams): Promise<StaleRoundsResult>;
|
|
39
|
+
resetOrphanedRound(roundId: string): Promise<ResetOrphanedRoundResult>;
|
|
40
|
+
listOperators(): Promise<ListOperatorsResult>;
|
|
41
|
+
getOperator(params?: GetOperatorParams): Promise<OperatorDetail>;
|
|
42
|
+
registerOperator(params: RegisterOperatorParams): Promise<RegisterOperatorResult>;
|
|
43
|
+
updateOperator(params: UpdateOperatorParams): Promise<UpdateOperatorResult>;
|
|
44
|
+
setOperatorEnabled(params: SetOperatorEnabledParams): Promise<UpdateOperatorResult>;
|
|
45
|
+
rotateOperatorKey(params?: RotateOperatorKeyParams): Promise<RotateOperatorKeyResult>;
|
|
46
|
+
setOperatorsForGame(gameCode: string, operatorCodes: string[]): Promise<GameOperators>;
|
|
47
|
+
setGamesForOperator(operatorCode: string, gameCodes: string[]): Promise<OperatorGames>;
|
|
48
|
+
listOperatorsForGame(gameCode?: string): Promise<{
|
|
49
|
+
games: GameOperators[];
|
|
50
|
+
}>;
|
|
51
|
+
listGamesForOperator(operatorCode?: string): Promise<{
|
|
52
|
+
operators: OperatorGames[];
|
|
53
|
+
}>;
|
|
54
|
+
listGames(params?: ListGamesParams): Promise<ListGamesResult>;
|
|
55
|
+
registerGame(params: RegisterGameParams): Promise<{
|
|
56
|
+
success: true;
|
|
57
|
+
}>;
|
|
58
|
+
refreshGames(): Promise<{
|
|
59
|
+
refreshed: true;
|
|
60
|
+
}>;
|
|
61
|
+
listContributionModules(): Promise<{
|
|
62
|
+
modules: Record<string, ContributionModule>;
|
|
63
|
+
}>;
|
|
64
|
+
registerContributionModule(params: RegisterContributionModuleParams): Promise<{
|
|
65
|
+
success: true;
|
|
66
|
+
}>;
|
|
67
|
+
refreshContributionModules(): Promise<{
|
|
68
|
+
refreshed: true;
|
|
69
|
+
}>;
|
|
70
|
+
ggrReport(params: GgrReportParams): Promise<GgrReport>;
|
|
71
|
+
playerActivity(params: PlayerActivityParams): Promise<PlayerActivityReport>;
|
|
72
|
+
transactions(params: TransactionsParams): Promise<TransactionsReport>;
|
|
73
|
+
listPayouts(params?: PayoutsParams): Promise<PayoutsResult>;
|
|
74
|
+
searchPlayers(params: PlayerSearchParams): Promise<PlayerSearchResult>;
|
|
75
|
+
playerSummary(params: PlayerSummaryParams): Promise<PlayerSummary>;
|
|
76
|
+
listSelfExclusions(params?: ListSelfExclusionsParams): Promise<ListSelfExclusionsResult>;
|
|
77
|
+
excludePlayer(params: ExcludePlayerParams): Promise<ExcludePlayerResult>;
|
|
78
|
+
grantFreeRounds(params: GrantFreeRoundsParams): Promise<GrantFreeRoundsResult>;
|
|
79
|
+
cancelFreeRounds(params: CancelFreeRoundsParams): Promise<CancelFreeRoundsResult>;
|
|
80
|
+
listFreeRounds(params?: ListFreeRoundsParams): Promise<ListFreeRoundsResult>;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
export class RgsAdminError extends Error {
|
|
2
|
+
status;
|
|
3
|
+
detail;
|
|
4
|
+
constructor(message, status, detail) {
|
|
5
|
+
super(message);
|
|
6
|
+
this.status = status;
|
|
7
|
+
this.detail = detail;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Typed client for `/api/admin`. Authenticates with either a long-lived admin
|
|
12
|
+
* key (`X-Admin-Key`) or a session token (`Authorization: Bearer`) obtained via
|
|
13
|
+
* `login()`. All calls are `POST` with a JSON body; a non-2xx response throws
|
|
14
|
+
* `RgsAdminError` carrying the HTTP status and the RGS error body.
|
|
15
|
+
*/
|
|
16
|
+
export class OctaneAdminClient {
|
|
17
|
+
baseUrl;
|
|
18
|
+
adminKey;
|
|
19
|
+
sessionToken;
|
|
20
|
+
fetchInit;
|
|
21
|
+
constructor(options) {
|
|
22
|
+
if (!options.adminKey && !options.sessionToken)
|
|
23
|
+
throw new Error("OctaneAdminClient requires adminKey or sessionToken");
|
|
24
|
+
this.baseUrl = options.baseUrl.replace(/\/$/, "");
|
|
25
|
+
this.adminKey = options.adminKey;
|
|
26
|
+
this.sessionToken = options.sessionToken;
|
|
27
|
+
this.fetchInit = options.fetchInit ?? {};
|
|
28
|
+
}
|
|
29
|
+
/** A client bound to a different credential, sharing base URL and fetch options. */
|
|
30
|
+
withSession(sessionToken) {
|
|
31
|
+
return new OctaneAdminClient({ baseUrl: this.baseUrl, sessionToken, fetchInit: this.fetchInit });
|
|
32
|
+
}
|
|
33
|
+
withKey(adminKey) {
|
|
34
|
+
return new OctaneAdminClient({ baseUrl: this.baseUrl, adminKey, fetchInit: this.fetchInit });
|
|
35
|
+
}
|
|
36
|
+
authHeaders() {
|
|
37
|
+
if (this.sessionToken)
|
|
38
|
+
return { Authorization: `Bearer ${this.sessionToken}` };
|
|
39
|
+
return { "X-Admin-Key": this.adminKey };
|
|
40
|
+
}
|
|
41
|
+
async post(path, body = {}) {
|
|
42
|
+
const res = await fetch(`${this.baseUrl}/api/admin${path}`, {
|
|
43
|
+
method: "POST",
|
|
44
|
+
headers: { "Content-Type": "application/json", ...this.authHeaders() },
|
|
45
|
+
body: JSON.stringify(body),
|
|
46
|
+
...this.fetchInit,
|
|
47
|
+
});
|
|
48
|
+
if (!res.ok) {
|
|
49
|
+
const err = await res.json()
|
|
50
|
+
.catch(() => ({ error: res.statusText }));
|
|
51
|
+
const msg = typeof err.error === "string" ? err.error : `RGS admin ${res.status}`;
|
|
52
|
+
throw new RgsAdminError(msg, res.status, err.error);
|
|
53
|
+
}
|
|
54
|
+
return res.json();
|
|
55
|
+
}
|
|
56
|
+
// ── Identity & sessions ─────────────────────────────────────────────
|
|
57
|
+
whoami() {
|
|
58
|
+
return this.post("/whoami");
|
|
59
|
+
}
|
|
60
|
+
/** Requires the client to be bound to an admin key; a session cannot mint another session. */
|
|
61
|
+
login(params = {}) {
|
|
62
|
+
return this.post("/auth/login", params);
|
|
63
|
+
}
|
|
64
|
+
logout(params = {}) {
|
|
65
|
+
return this.post("/auth/logout", params);
|
|
66
|
+
}
|
|
67
|
+
// ── Users ───────────────────────────────────────────────────────────
|
|
68
|
+
listUsers(params = {}) {
|
|
69
|
+
return this.post("/users/list", params);
|
|
70
|
+
}
|
|
71
|
+
createUser(params) {
|
|
72
|
+
return this.post("/users/create", params);
|
|
73
|
+
}
|
|
74
|
+
updateUser(params) {
|
|
75
|
+
return this.post("/users/update", params);
|
|
76
|
+
}
|
|
77
|
+
rotateUserKey(params) {
|
|
78
|
+
return this.post("/users/rotate-key", params);
|
|
79
|
+
}
|
|
80
|
+
// ── Audit ───────────────────────────────────────────────────────────
|
|
81
|
+
listAudit(params = {}) {
|
|
82
|
+
return this.post("/audit/list", params);
|
|
83
|
+
}
|
|
84
|
+
// ── Live operations ─────────────────────────────────────────────────
|
|
85
|
+
listTableSessions(params = {}) {
|
|
86
|
+
return this.post("/sessions/list", params);
|
|
87
|
+
}
|
|
88
|
+
getRound(params) {
|
|
89
|
+
return this.post("/rounds/get", params);
|
|
90
|
+
}
|
|
91
|
+
// ── Recovery ────────────────────────────────────────────────────────
|
|
92
|
+
retryPayouts() {
|
|
93
|
+
return this.post("/retry-payouts");
|
|
94
|
+
}
|
|
95
|
+
recoverMissingPayouts() {
|
|
96
|
+
return this.post("/recover-missing-payouts");
|
|
97
|
+
}
|
|
98
|
+
scanOrphans(params = {}) {
|
|
99
|
+
return this.post("/scan-orphans", params);
|
|
100
|
+
}
|
|
101
|
+
staleRounds(params = {}) {
|
|
102
|
+
return this.post("/stale-rounds", params);
|
|
103
|
+
}
|
|
104
|
+
resetOrphanedRound(roundId) {
|
|
105
|
+
return this.post("/reset-orphaned-round", { roundId });
|
|
106
|
+
}
|
|
107
|
+
// ── Operators ───────────────────────────────────────────────────────
|
|
108
|
+
listOperators() {
|
|
109
|
+
return this.post("/operators/list");
|
|
110
|
+
}
|
|
111
|
+
getOperator(params = {}) {
|
|
112
|
+
return this.post("/operators/get", params);
|
|
113
|
+
}
|
|
114
|
+
registerOperator(params) {
|
|
115
|
+
return this.post("/operators/register", params);
|
|
116
|
+
}
|
|
117
|
+
updateOperator(params) {
|
|
118
|
+
return this.post("/operators/update", params);
|
|
119
|
+
}
|
|
120
|
+
setOperatorEnabled(params) {
|
|
121
|
+
return this.post("/operators/set-enabled", params);
|
|
122
|
+
}
|
|
123
|
+
rotateOperatorKey(params = {}) {
|
|
124
|
+
return this.post("/operators/rotate-key", params);
|
|
125
|
+
}
|
|
126
|
+
setOperatorsForGame(gameCode, operatorCodes) {
|
|
127
|
+
return this.post("/game-operators/set-for-game", { gameCode, operatorCodes });
|
|
128
|
+
}
|
|
129
|
+
setGamesForOperator(operatorCode, gameCodes) {
|
|
130
|
+
return this.post("/game-operators/set-for-operator", { operatorCode, gameCodes });
|
|
131
|
+
}
|
|
132
|
+
listOperatorsForGame(gameCode) {
|
|
133
|
+
return this.post("/game-operators/list-for-game", gameCode ? { gameCode } : {});
|
|
134
|
+
}
|
|
135
|
+
listGamesForOperator(operatorCode) {
|
|
136
|
+
return this.post("/game-operators/list-for-operator", operatorCode ? { operatorCode } : {});
|
|
137
|
+
}
|
|
138
|
+
// ── Games & registry ────────────────────────────────────────────────
|
|
139
|
+
listGames(params = {}) {
|
|
140
|
+
return this.post("/games/list", params);
|
|
141
|
+
}
|
|
142
|
+
registerGame(params) {
|
|
143
|
+
return this.post("/register-game", params);
|
|
144
|
+
}
|
|
145
|
+
refreshGames() {
|
|
146
|
+
return this.post("/refresh-games");
|
|
147
|
+
}
|
|
148
|
+
listContributionModules() {
|
|
149
|
+
return this.post("/list-contribution-modules");
|
|
150
|
+
}
|
|
151
|
+
registerContributionModule(params) {
|
|
152
|
+
return this.post("/register-contribution-module", params);
|
|
153
|
+
}
|
|
154
|
+
refreshContributionModules() {
|
|
155
|
+
return this.post("/refresh-contribution-modules");
|
|
156
|
+
}
|
|
157
|
+
// ── Reports ─────────────────────────────────────────────────────────
|
|
158
|
+
ggrReport(params) {
|
|
159
|
+
return this.post("/reports/ggr", params);
|
|
160
|
+
}
|
|
161
|
+
playerActivity(params) {
|
|
162
|
+
return this.post("/reports/player-activity", params);
|
|
163
|
+
}
|
|
164
|
+
transactions(params) {
|
|
165
|
+
return this.post("/reports/transactions", params);
|
|
166
|
+
}
|
|
167
|
+
listPayouts(params = {}) {
|
|
168
|
+
return this.post("/payouts/list", params);
|
|
169
|
+
}
|
|
170
|
+
// ── Players ─────────────────────────────────────────────────────────
|
|
171
|
+
searchPlayers(params) {
|
|
172
|
+
return this.post("/players/search", params);
|
|
173
|
+
}
|
|
174
|
+
playerSummary(params) {
|
|
175
|
+
return this.post("/players/summary", params);
|
|
176
|
+
}
|
|
177
|
+
listSelfExclusions(params = {}) {
|
|
178
|
+
return this.post("/self-exclusion/list", params);
|
|
179
|
+
}
|
|
180
|
+
excludePlayer(params) {
|
|
181
|
+
return this.post("/self-exclusion/exclude", params);
|
|
182
|
+
}
|
|
183
|
+
// ── Free rounds ─────────────────────────────────────────────────────
|
|
184
|
+
grantFreeRounds(params) {
|
|
185
|
+
return this.post("/free-rounds/grant", params);
|
|
186
|
+
}
|
|
187
|
+
cancelFreeRounds(params) {
|
|
188
|
+
return this.post("/free-rounds/cancel", params);
|
|
189
|
+
}
|
|
190
|
+
listFreeRounds(params = {}) {
|
|
191
|
+
return this.post("/free-rounds/list", params);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { OctaneAdminClient, RgsAdminError } from "./client";
|
|
2
|
+
export { ADMIN_ROLES, PLATFORM_ROLES, OPERATOR_ROLES, PERMISSIONS, can, assignableRoles, isAdminRole, isPlatformRole, isOperatorRole, type AdminRole, type Permission, } from "./permissions";
|
|
3
|
+
export type * from "./types";
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EACH,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EACxD,GAAG,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EACjE,KAAK,SAAS,EAAE,KAAK,UAAU,GAClC,MAAM,eAAe,CAAC;AACvB,mBAAmB,SAAS,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EACH,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EACxD,GAAG,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,GAEpE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Roles and permissions for the Octane RGS back office.
|
|
3
|
+
*
|
|
4
|
+
* This module is the single source of truth for "what may this role do". The
|
|
5
|
+
* RGS enforces it on every `/api/admin` route; the back-office UI imports the
|
|
6
|
+
* same table to decide what to render. Adding a role or splitting a permission
|
|
7
|
+
* is a change here, not in route code.
|
|
8
|
+
*
|
|
9
|
+
* Two families of role:
|
|
10
|
+
*
|
|
11
|
+
* - Platform roles (`admin`, `support`) belong to Octane staff and see every
|
|
12
|
+
* operator. `support` is read-mostly but may run payout recovery, which
|
|
13
|
+
* moves money — it is not a read-only role.
|
|
14
|
+
* - Operator roles (`op_owner`, `op_finance`, `op_support`) are bound to one
|
|
15
|
+
* operator (`admin_users.operator`). Every scoped route forces their
|
|
16
|
+
* operator and rejects any attempt to name another.
|
|
17
|
+
*/
|
|
18
|
+
export declare const ADMIN_ROLES: readonly ["admin", "support", "op_owner", "op_finance", "op_support"];
|
|
19
|
+
export type AdminRole = typeof ADMIN_ROLES[number];
|
|
20
|
+
export declare const PLATFORM_ROLES: readonly ["admin", "support"];
|
|
21
|
+
export declare const OPERATOR_ROLES: readonly ["op_owner", "op_finance", "op_support"];
|
|
22
|
+
export declare function isAdminRole(value: unknown): value is AdminRole;
|
|
23
|
+
export declare function isPlatformRole(role: AdminRole): boolean;
|
|
24
|
+
export declare function isOperatorRole(role: AdminRole): boolean;
|
|
25
|
+
export declare const PERMISSIONS: {
|
|
26
|
+
/** Sign in / out, inspect own identity. */
|
|
27
|
+
readonly "auth.session": readonly ("admin" | "support" | "op_owner" | "op_finance" | "op_support")[];
|
|
28
|
+
/** Live tables snapshot. Operator roles see only tables their players sit at. */
|
|
29
|
+
readonly "tables.read": readonly ("admin" | "support" | "op_owner" | "op_finance" | "op_support")[];
|
|
30
|
+
/** Round lookup (outcome, bets, payouts). Operator roles see only their players' bets. */
|
|
31
|
+
readonly "rounds.read": readonly ("admin" | "support" | "op_owner" | "op_finance" | "op_support")[];
|
|
32
|
+
readonly "recovery.run": readonly ("admin" | "support" | "op_owner" | "op_finance" | "op_support")[];
|
|
33
|
+
readonly "recovery.scan": readonly ("admin" | "support" | "op_owner" | "op_finance" | "op_support")[];
|
|
34
|
+
readonly "rounds.stale.read": readonly ("admin" | "support" | "op_owner" | "op_finance" | "op_support")[];
|
|
35
|
+
readonly "rounds.stale.resolve": readonly ["admin"];
|
|
36
|
+
readonly "rounds.reset": readonly ["admin"];
|
|
37
|
+
/** List every operator. */
|
|
38
|
+
readonly "operators.read": readonly ("admin" | "support" | "op_owner" | "op_finance" | "op_support")[];
|
|
39
|
+
/** Read one operator. Operator roles: their own only. */
|
|
40
|
+
readonly "operators.read-own": readonly ("admin" | "support" | "op_owner" | "op_finance" | "op_support")[];
|
|
41
|
+
readonly "operators.register": readonly ["admin"];
|
|
42
|
+
/** Edit name / betConfig / playerVerifyUrl. Operator roles: their own only. */
|
|
43
|
+
readonly "operators.update": readonly ["admin", "op_owner"];
|
|
44
|
+
/** Enable / disable an operator. */
|
|
45
|
+
readonly "operators.toggle": readonly ["admin"];
|
|
46
|
+
/** Rotate the operator's game API key. Operator roles: their own only. */
|
|
47
|
+
readonly "operators.rotate-key": readonly ["admin", "op_owner"];
|
|
48
|
+
readonly "game-access.read": readonly ("admin" | "support" | "op_owner" | "op_finance" | "op_support")[];
|
|
49
|
+
readonly "game-access.write": readonly ["admin"];
|
|
50
|
+
readonly "games.read": readonly ("admin" | "support" | "op_owner" | "op_finance" | "op_support")[];
|
|
51
|
+
readonly "games.write": readonly ["admin"];
|
|
52
|
+
readonly "games.refresh": readonly ("admin" | "support" | "op_owner" | "op_finance" | "op_support")[];
|
|
53
|
+
readonly "contributions.read": readonly ("admin" | "support" | "op_owner" | "op_finance" | "op_support")[];
|
|
54
|
+
readonly "contributions.write": readonly ["admin"];
|
|
55
|
+
readonly "reports.read": readonly ("admin" | "support" | "op_owner" | "op_finance" | "op_support")[];
|
|
56
|
+
readonly "transactions.read": readonly ("admin" | "support" | "op_owner" | "op_finance" | "op_support")[];
|
|
57
|
+
readonly "players.read": readonly ("admin" | "support" | "op_owner" | "op_finance" | "op_support")[];
|
|
58
|
+
readonly "self-exclusion.read": readonly ("admin" | "support" | "op_owner" | "op_finance" | "op_support")[];
|
|
59
|
+
readonly "self-exclusion.write": readonly ("admin" | "support" | "op_owner" | "op_finance" | "op_support")[];
|
|
60
|
+
readonly "free-rounds.read": readonly ("admin" | "support" | "op_owner" | "op_finance" | "op_support")[];
|
|
61
|
+
readonly "free-rounds.write": readonly ["admin", "op_owner"];
|
|
62
|
+
/** Manage back-office users. `op_owner`: users of their own operator only. */
|
|
63
|
+
readonly "users.read": readonly ["admin", "op_owner"];
|
|
64
|
+
readonly "users.write": readonly ["admin", "op_owner"];
|
|
65
|
+
readonly "audit.read": readonly ["admin", "support", "op_owner"];
|
|
66
|
+
};
|
|
67
|
+
export type Permission = keyof typeof PERMISSIONS;
|
|
68
|
+
export declare function can(role: AdminRole, permission: Permission): boolean;
|
|
69
|
+
/** Roles an actor may assign when creating or updating users. */
|
|
70
|
+
export declare function assignableRoles(actorRole: AdminRole): readonly AdminRole[];
|
|
71
|
+
//# sourceMappingURL=permissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,WAAW,uEAAwE,CAAC;AACjG,MAAM,MAAM,SAAS,GAAG,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;AAEnD,eAAO,MAAM,cAAc,+BAA+D,CAAC;AAC3F,eAAO,MAAM,cAAc,mDAAmF,CAAC;AAE/G,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAG9D;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAGvD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAGvD;AAOD,eAAO,MAAM,WAAW;IAEpB,2CAA2C;;IAI3C,iFAAiF;;IAEjF,0FAA0F;;;;;;;IAW1F,2BAA2B;;IAE3B,yDAAyD;;;IAGzD,+EAA+E;;IAE/E,oCAAoC;;IAEpC,0EAA0E;;;;;;;;;;;;;;;;IA0B1E,8EAA8E;;;;CAIzB,CAAC;AAE1D,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,WAAW,CAAC;AAElD,wBAAgB,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAGpE;AAED,iEAAiE;AACjE,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,SAAS,EAAE,CAK1E"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Roles and permissions for the Octane RGS back office.
|
|
3
|
+
*
|
|
4
|
+
* This module is the single source of truth for "what may this role do". The
|
|
5
|
+
* RGS enforces it on every `/api/admin` route; the back-office UI imports the
|
|
6
|
+
* same table to decide what to render. Adding a role or splitting a permission
|
|
7
|
+
* is a change here, not in route code.
|
|
8
|
+
*
|
|
9
|
+
* Two families of role:
|
|
10
|
+
*
|
|
11
|
+
* - Platform roles (`admin`, `support`) belong to Octane staff and see every
|
|
12
|
+
* operator. `support` is read-mostly but may run payout recovery, which
|
|
13
|
+
* moves money — it is not a read-only role.
|
|
14
|
+
* - Operator roles (`op_owner`, `op_finance`, `op_support`) are bound to one
|
|
15
|
+
* operator (`admin_users.operator`). Every scoped route forces their
|
|
16
|
+
* operator and rejects any attempt to name another.
|
|
17
|
+
*/
|
|
18
|
+
export const ADMIN_ROLES = ["admin", "support", "op_owner", "op_finance", "op_support"];
|
|
19
|
+
export const PLATFORM_ROLES = ["admin", "support"];
|
|
20
|
+
export const OPERATOR_ROLES = ["op_owner", "op_finance", "op_support"];
|
|
21
|
+
export function isAdminRole(value) {
|
|
22
|
+
return typeof value === "string" && ADMIN_ROLES.includes(value);
|
|
23
|
+
}
|
|
24
|
+
export function isPlatformRole(role) {
|
|
25
|
+
return PLATFORM_ROLES.includes(role);
|
|
26
|
+
}
|
|
27
|
+
export function isOperatorRole(role) {
|
|
28
|
+
return OPERATOR_ROLES.includes(role);
|
|
29
|
+
}
|
|
30
|
+
const ALL = ADMIN_ROLES;
|
|
31
|
+
const PLATFORM = PLATFORM_ROLES;
|
|
32
|
+
const MONEY_READERS = ["admin", "support", "op_owner", "op_finance"];
|
|
33
|
+
const PLAYER_CARE = ["admin", "support", "op_owner", "op_support"];
|
|
34
|
+
export const PERMISSIONS = {
|
|
35
|
+
// ── Identity ─────────────────────────────────────────────────────────
|
|
36
|
+
/** Sign in / out, inspect own identity. */
|
|
37
|
+
"auth.session": ALL,
|
|
38
|
+
// ── Live operations ──────────────────────────────────────────────────
|
|
39
|
+
/** Live tables snapshot. Operator roles see only tables their players sit at. */
|
|
40
|
+
"tables.read": ALL,
|
|
41
|
+
/** Round lookup (outcome, bets, payouts). Operator roles see only their players' bets. */
|
|
42
|
+
"rounds.read": ALL,
|
|
43
|
+
// ── Recovery (moves money) ───────────────────────────────────────────
|
|
44
|
+
"recovery.run": PLATFORM,
|
|
45
|
+
"recovery.scan": PLATFORM,
|
|
46
|
+
"rounds.stale.read": PLATFORM,
|
|
47
|
+
"rounds.stale.resolve": ["admin"],
|
|
48
|
+
"rounds.reset": ["admin"],
|
|
49
|
+
// ── Operators ────────────────────────────────────────────────────────
|
|
50
|
+
/** List every operator. */
|
|
51
|
+
"operators.read": PLATFORM,
|
|
52
|
+
/** Read one operator. Operator roles: their own only. */
|
|
53
|
+
"operators.read-own": ALL,
|
|
54
|
+
"operators.register": ["admin"],
|
|
55
|
+
/** Edit name / betConfig / playerVerifyUrl. Operator roles: their own only. */
|
|
56
|
+
"operators.update": ["admin", "op_owner"],
|
|
57
|
+
/** Enable / disable an operator. */
|
|
58
|
+
"operators.toggle": ["admin"],
|
|
59
|
+
/** Rotate the operator's game API key. Operator roles: their own only. */
|
|
60
|
+
"operators.rotate-key": ["admin", "op_owner"],
|
|
61
|
+
"game-access.read": ALL,
|
|
62
|
+
"game-access.write": ["admin"],
|
|
63
|
+
// ── Games & registry ─────────────────────────────────────────────────
|
|
64
|
+
"games.read": ALL,
|
|
65
|
+
"games.write": ["admin"],
|
|
66
|
+
"games.refresh": PLATFORM,
|
|
67
|
+
"contributions.read": PLATFORM,
|
|
68
|
+
"contributions.write": ["admin"],
|
|
69
|
+
// ── Reports ──────────────────────────────────────────────────────────
|
|
70
|
+
"reports.read": MONEY_READERS,
|
|
71
|
+
"transactions.read": MONEY_READERS,
|
|
72
|
+
// ── Players ──────────────────────────────────────────────────────────
|
|
73
|
+
"players.read": ALL,
|
|
74
|
+
"self-exclusion.read": PLAYER_CARE,
|
|
75
|
+
"self-exclusion.write": PLAYER_CARE,
|
|
76
|
+
// ── Promotions ───────────────────────────────────────────────────────
|
|
77
|
+
"free-rounds.read": ALL,
|
|
78
|
+
"free-rounds.write": ["admin", "op_owner"],
|
|
79
|
+
// ── Users & audit ────────────────────────────────────────────────────
|
|
80
|
+
/** Manage back-office users. `op_owner`: users of their own operator only. */
|
|
81
|
+
"users.read": ["admin", "op_owner"],
|
|
82
|
+
"users.write": ["admin", "op_owner"],
|
|
83
|
+
"audit.read": ["admin", "support", "op_owner"],
|
|
84
|
+
};
|
|
85
|
+
export function can(role, permission) {
|
|
86
|
+
return PERMISSIONS[permission].includes(role);
|
|
87
|
+
}
|
|
88
|
+
/** Roles an actor may assign when creating or updating users. */
|
|
89
|
+
export function assignableRoles(actorRole) {
|
|
90
|
+
if (actorRole === "admin")
|
|
91
|
+
return ADMIN_ROLES;
|
|
92
|
+
if (actorRole === "op_owner")
|
|
93
|
+
return OPERATOR_ROLES;
|
|
94
|
+
return [];
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=permissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,660 @@
|
|
|
1
|
+
import type { AdminRole } from "./permissions";
|
|
2
|
+
export interface AdminClientOptions {
|
|
3
|
+
baseUrl: string;
|
|
4
|
+
/** Long-lived admin API key (`adm_…`). Use for scripts and cron. */
|
|
5
|
+
adminKey?: string;
|
|
6
|
+
/** Short-lived session token from `login()`. Use for browser-facing servers. */
|
|
7
|
+
sessionToken?: string;
|
|
8
|
+
fetchInit?: RequestInit;
|
|
9
|
+
}
|
|
10
|
+
export interface AdminOperatorRef {
|
|
11
|
+
id: string;
|
|
12
|
+
code: string;
|
|
13
|
+
name: string;
|
|
14
|
+
}
|
|
15
|
+
export interface AdminIdentity {
|
|
16
|
+
email: string;
|
|
17
|
+
role: AdminRole;
|
|
18
|
+
/** Null for platform-wide staff. */
|
|
19
|
+
operator: AdminOperatorRef | null;
|
|
20
|
+
authMethod: "key" | "session";
|
|
21
|
+
session: {
|
|
22
|
+
id: string;
|
|
23
|
+
expiresAt: string;
|
|
24
|
+
} | null;
|
|
25
|
+
}
|
|
26
|
+
export interface LoginParams {
|
|
27
|
+
/** Free-text label stored with the session (browser UA, script name). */
|
|
28
|
+
userAgent?: string;
|
|
29
|
+
}
|
|
30
|
+
export interface LoginResult {
|
|
31
|
+
token: string;
|
|
32
|
+
expiresAt: string;
|
|
33
|
+
user: AdminIdentity;
|
|
34
|
+
}
|
|
35
|
+
export interface LogoutParams {
|
|
36
|
+
/** Revoke every session for this user, not just the calling one. */
|
|
37
|
+
all?: boolean;
|
|
38
|
+
}
|
|
39
|
+
export interface LogoutResult {
|
|
40
|
+
loggedOut: true;
|
|
41
|
+
revoked: number;
|
|
42
|
+
}
|
|
43
|
+
export interface AdminUser {
|
|
44
|
+
id: string;
|
|
45
|
+
email: string;
|
|
46
|
+
role: AdminRole;
|
|
47
|
+
isActive: boolean;
|
|
48
|
+
operatorCode: string | null;
|
|
49
|
+
createdAt: string;
|
|
50
|
+
lastLoginAt: string | null;
|
|
51
|
+
activeSessions: number;
|
|
52
|
+
}
|
|
53
|
+
export interface ListUsersParams {
|
|
54
|
+
/** Platform roles only; operator roles are forced to their own operator. */
|
|
55
|
+
operatorCode?: string;
|
|
56
|
+
includeInactive?: boolean;
|
|
57
|
+
}
|
|
58
|
+
export interface ListUsersResult {
|
|
59
|
+
users: AdminUser[];
|
|
60
|
+
}
|
|
61
|
+
export interface CreateUserParams {
|
|
62
|
+
email: string;
|
|
63
|
+
role: AdminRole;
|
|
64
|
+
/** Required for `op_*` roles, forbidden for platform roles. */
|
|
65
|
+
operatorCode?: string;
|
|
66
|
+
}
|
|
67
|
+
export interface CreateUserResult {
|
|
68
|
+
user: AdminUser;
|
|
69
|
+
/** Shown once; only the hash is stored. */
|
|
70
|
+
apiKey: string;
|
|
71
|
+
}
|
|
72
|
+
export interface UpdateUserParams {
|
|
73
|
+
email: string;
|
|
74
|
+
role?: AdminRole;
|
|
75
|
+
isActive?: boolean;
|
|
76
|
+
}
|
|
77
|
+
export interface UpdateUserResult {
|
|
78
|
+
user: AdminUser;
|
|
79
|
+
}
|
|
80
|
+
export interface RotateUserKeyParams {
|
|
81
|
+
email: string;
|
|
82
|
+
}
|
|
83
|
+
export interface RotateUserKeyResult {
|
|
84
|
+
email: string;
|
|
85
|
+
apiKey: string;
|
|
86
|
+
/** Sessions revoked as a consequence of the rotation. */
|
|
87
|
+
revokedSessions: number;
|
|
88
|
+
}
|
|
89
|
+
export interface AuditEntry {
|
|
90
|
+
id: string;
|
|
91
|
+
createdAt: string;
|
|
92
|
+
actorEmail: string;
|
|
93
|
+
actorRole: AdminRole;
|
|
94
|
+
action: string;
|
|
95
|
+
target: string | null;
|
|
96
|
+
operatorCode: string | null;
|
|
97
|
+
detail: Record<string, unknown> | null;
|
|
98
|
+
}
|
|
99
|
+
export interface ListAuditParams {
|
|
100
|
+
operatorCode?: string;
|
|
101
|
+
actorEmail?: string;
|
|
102
|
+
/** Exact action or a prefix ending in `.`, e.g. `operators.` */
|
|
103
|
+
action?: string;
|
|
104
|
+
since?: string;
|
|
105
|
+
until?: string;
|
|
106
|
+
limit?: number;
|
|
107
|
+
offset?: number;
|
|
108
|
+
}
|
|
109
|
+
export interface ListAuditResult {
|
|
110
|
+
entries: AuditEntry[];
|
|
111
|
+
total: number;
|
|
112
|
+
}
|
|
113
|
+
export type RoomState = "active" | "dormant" | "dead";
|
|
114
|
+
export type RoundStatus = "open" | "closed" | "settled" | "voided";
|
|
115
|
+
export interface TableSessionSummary {
|
|
116
|
+
id: string;
|
|
117
|
+
avatarName: string;
|
|
118
|
+
tableCode: string | null;
|
|
119
|
+
tableGameCode: string;
|
|
120
|
+
roomState: RoomState;
|
|
121
|
+
isPublic: boolean;
|
|
122
|
+
operatorCode: string;
|
|
123
|
+
createdBy: string;
|
|
124
|
+
createdAt: string;
|
|
125
|
+
startedAt: string | null;
|
|
126
|
+
dormantAt: string | null;
|
|
127
|
+
endedAt: string | null;
|
|
128
|
+
playerSessions: number;
|
|
129
|
+
activePlayers: number;
|
|
130
|
+
totalRounds: number;
|
|
131
|
+
lastRound: {
|
|
132
|
+
id: string;
|
|
133
|
+
roundNumber: number;
|
|
134
|
+
status: RoundStatus;
|
|
135
|
+
bettingOpenAt: string;
|
|
136
|
+
bettingClosedAt: string;
|
|
137
|
+
} | null;
|
|
138
|
+
}
|
|
139
|
+
export interface ListTableSessionsParams {
|
|
140
|
+
roomState?: RoomState;
|
|
141
|
+
/** Table owner (`createdBy`). Platform roles only. */
|
|
142
|
+
operatorCode?: string;
|
|
143
|
+
/** Operator whose players are seated. Operator roles are forced to their own. */
|
|
144
|
+
playerOperatorCode?: string;
|
|
145
|
+
gameCode?: string;
|
|
146
|
+
limit?: number;
|
|
147
|
+
offset?: number;
|
|
148
|
+
}
|
|
149
|
+
export interface ListTableSessionsResult {
|
|
150
|
+
sessions: TableSessionSummary[];
|
|
151
|
+
count: number;
|
|
152
|
+
}
|
|
153
|
+
export interface SettlementMultiplier {
|
|
154
|
+
betOption: string;
|
|
155
|
+
multiplier: number;
|
|
156
|
+
scale?: number;
|
|
157
|
+
}
|
|
158
|
+
export interface RoundBetAction {
|
|
159
|
+
id: string;
|
|
160
|
+
createdAt: string;
|
|
161
|
+
playerSessionId: string;
|
|
162
|
+
externalPlayerId: string;
|
|
163
|
+
operatorCode: string;
|
|
164
|
+
action: string;
|
|
165
|
+
status: "pending" | "placed" | "failed" | "cancelled";
|
|
166
|
+
amount: number;
|
|
167
|
+
betOptions: string[];
|
|
168
|
+
betAmounts: number[];
|
|
169
|
+
playerBalance: number;
|
|
170
|
+
requestId: string;
|
|
171
|
+
operatorBetId: string | null;
|
|
172
|
+
freeRoundGrantId: string | null;
|
|
173
|
+
}
|
|
174
|
+
export interface RoundPayout {
|
|
175
|
+
id: string;
|
|
176
|
+
createdAt: string;
|
|
177
|
+
playerSessionId: string;
|
|
178
|
+
externalPlayerId: string;
|
|
179
|
+
operatorCode: string;
|
|
180
|
+
amount: number;
|
|
181
|
+
netWagered: number;
|
|
182
|
+
txStatus: "pending" | "success" | "failed" | "voided";
|
|
183
|
+
retryCount: number;
|
|
184
|
+
}
|
|
185
|
+
export interface RoundDetail {
|
|
186
|
+
round: {
|
|
187
|
+
id: string;
|
|
188
|
+
roundNumber: number;
|
|
189
|
+
status: RoundStatus;
|
|
190
|
+
createdAt: string;
|
|
191
|
+
bettingOpenAt: string;
|
|
192
|
+
bettingClosedAt: string;
|
|
193
|
+
settledAt: string | null;
|
|
194
|
+
gameRoundData: Record<string, unknown> | null;
|
|
195
|
+
settlementMultipliers: SettlementMultiplier[] | null;
|
|
196
|
+
};
|
|
197
|
+
table: {
|
|
198
|
+
id: string;
|
|
199
|
+
tableGameCode: string;
|
|
200
|
+
tableCode: string | null;
|
|
201
|
+
avatarName: string;
|
|
202
|
+
createdBy: string;
|
|
203
|
+
roomState: RoomState;
|
|
204
|
+
};
|
|
205
|
+
bets: RoundBetAction[];
|
|
206
|
+
payouts: RoundPayout[];
|
|
207
|
+
rng: {
|
|
208
|
+
serverSeedHash: string;
|
|
209
|
+
clientSeed: string | null;
|
|
210
|
+
nonce: number;
|
|
211
|
+
revealed: boolean;
|
|
212
|
+
} | null;
|
|
213
|
+
}
|
|
214
|
+
export interface GetRoundParams {
|
|
215
|
+
roundId: string;
|
|
216
|
+
}
|
|
217
|
+
export interface RetryPayoutsResult {
|
|
218
|
+
claimed: number;
|
|
219
|
+
retried: number;
|
|
220
|
+
failed: number;
|
|
221
|
+
pending: number;
|
|
222
|
+
blocked: number;
|
|
223
|
+
skipped: number;
|
|
224
|
+
}
|
|
225
|
+
export interface RecoverMissingPayoutsResult {
|
|
226
|
+
gaps: number;
|
|
227
|
+
recovered: number;
|
|
228
|
+
waiting: number;
|
|
229
|
+
blocked: number;
|
|
230
|
+
failed: number;
|
|
231
|
+
skipped: number;
|
|
232
|
+
}
|
|
233
|
+
export interface ScanOrphansParams {
|
|
234
|
+
sinceHours?: number;
|
|
235
|
+
fullScan?: boolean;
|
|
236
|
+
sampleSize?: number;
|
|
237
|
+
}
|
|
238
|
+
export interface IntegrityScanReport {
|
|
239
|
+
scannedSince: string | null;
|
|
240
|
+
totalOrphans: number;
|
|
241
|
+
results: {
|
|
242
|
+
name: string;
|
|
243
|
+
orphanCount: number;
|
|
244
|
+
sampleIds: string[];
|
|
245
|
+
}[];
|
|
246
|
+
}
|
|
247
|
+
export interface StaleRoundsParams {
|
|
248
|
+
staleAfterMinutes?: number;
|
|
249
|
+
autoVoid?: boolean;
|
|
250
|
+
}
|
|
251
|
+
export interface StaleRound {
|
|
252
|
+
id: string;
|
|
253
|
+
tableSession: string;
|
|
254
|
+
roundNumber: number;
|
|
255
|
+
bettingClosedAt: string;
|
|
256
|
+
betCount: number;
|
|
257
|
+
}
|
|
258
|
+
export type StaleRoundsResult = {
|
|
259
|
+
staleRounds: StaleRound[];
|
|
260
|
+
count: number;
|
|
261
|
+
} | {
|
|
262
|
+
found: number;
|
|
263
|
+
voided: number;
|
|
264
|
+
settled: number;
|
|
265
|
+
};
|
|
266
|
+
export interface ResetOrphanedRoundResult {
|
|
267
|
+
reset: true;
|
|
268
|
+
roundId: string;
|
|
269
|
+
}
|
|
270
|
+
export interface BetConfig {
|
|
271
|
+
minBet?: number;
|
|
272
|
+
maxBet?: number;
|
|
273
|
+
maxWinPerRound?: number;
|
|
274
|
+
maxPayoutPerDay?: number;
|
|
275
|
+
chips?: number[];
|
|
276
|
+
overrides?: Partial<Record<string, {
|
|
277
|
+
minBet?: number;
|
|
278
|
+
maxBet?: number;
|
|
279
|
+
}>>;
|
|
280
|
+
}
|
|
281
|
+
export interface OperatorSummary {
|
|
282
|
+
id: string;
|
|
283
|
+
code: string;
|
|
284
|
+
name: string;
|
|
285
|
+
enabled: boolean;
|
|
286
|
+
isPlatform: boolean;
|
|
287
|
+
playerVerifyUrl: string | null;
|
|
288
|
+
betConfig: BetConfig | null;
|
|
289
|
+
createdAt: string;
|
|
290
|
+
}
|
|
291
|
+
export interface ListOperatorsResult {
|
|
292
|
+
operators: OperatorSummary[];
|
|
293
|
+
}
|
|
294
|
+
export interface GetOperatorParams {
|
|
295
|
+
/** Platform roles: required. Operator roles: ignored, always their own. */
|
|
296
|
+
code?: string;
|
|
297
|
+
}
|
|
298
|
+
export interface OperatorDetail extends OperatorSummary {
|
|
299
|
+
/** Table/game codes this operator may offer. */
|
|
300
|
+
gameCodes: string[];
|
|
301
|
+
/** Whether a real wallet adapter is wired for this code (vs. the demo wallet). */
|
|
302
|
+
walletAdapter: "demo" | "hub88" | "octane-wallet" | "none";
|
|
303
|
+
users: number;
|
|
304
|
+
}
|
|
305
|
+
export interface RegisterOperatorParams {
|
|
306
|
+
name: string;
|
|
307
|
+
code: string;
|
|
308
|
+
playerVerifyUrl?: string;
|
|
309
|
+
betConfig?: BetConfig;
|
|
310
|
+
isPlatform?: boolean;
|
|
311
|
+
}
|
|
312
|
+
export interface RegisterOperatorResult {
|
|
313
|
+
id: string;
|
|
314
|
+
code: string;
|
|
315
|
+
/** Shown once; only the hash is stored. */
|
|
316
|
+
apiKey: string;
|
|
317
|
+
}
|
|
318
|
+
export interface UpdateOperatorParams {
|
|
319
|
+
code?: string;
|
|
320
|
+
name?: string;
|
|
321
|
+
playerVerifyUrl?: string | null;
|
|
322
|
+
betConfig?: BetConfig | null;
|
|
323
|
+
}
|
|
324
|
+
export interface UpdateOperatorResult {
|
|
325
|
+
operator: OperatorSummary;
|
|
326
|
+
}
|
|
327
|
+
export interface SetOperatorEnabledParams {
|
|
328
|
+
code: string;
|
|
329
|
+
enabled: boolean;
|
|
330
|
+
}
|
|
331
|
+
export interface RotateOperatorKeyParams {
|
|
332
|
+
code?: string;
|
|
333
|
+
}
|
|
334
|
+
export interface RotateOperatorKeyResult {
|
|
335
|
+
code: string;
|
|
336
|
+
apiKey: string;
|
|
337
|
+
}
|
|
338
|
+
export interface GameOperators {
|
|
339
|
+
gameCode: string;
|
|
340
|
+
operatorCodes: string[];
|
|
341
|
+
}
|
|
342
|
+
export interface OperatorGames {
|
|
343
|
+
operatorCode: string;
|
|
344
|
+
gameCodes: string[];
|
|
345
|
+
}
|
|
346
|
+
export interface GameSummary {
|
|
347
|
+
gameCode: string;
|
|
348
|
+
displayName: string | null;
|
|
349
|
+
category: string | null;
|
|
350
|
+
betOptions: string[];
|
|
351
|
+
betRules: {
|
|
352
|
+
conflicts?: string[][];
|
|
353
|
+
requires?: Partial<Record<string, string[]>>;
|
|
354
|
+
} | null;
|
|
355
|
+
platforms: string[] | null;
|
|
356
|
+
thumbnailUrl: string | null;
|
|
357
|
+
backgroundUrl: string | null;
|
|
358
|
+
blockedCountries: string[] | null;
|
|
359
|
+
staleRoundTimeoutMinutes: number | null;
|
|
360
|
+
maxWinPerRound: number | null;
|
|
361
|
+
maxPayoutPerDay: number | null;
|
|
362
|
+
concurrentRounds: boolean;
|
|
363
|
+
stateless: boolean;
|
|
364
|
+
enabled: boolean;
|
|
365
|
+
createdAt: string;
|
|
366
|
+
/** Table codes currently active or dormant for this game. */
|
|
367
|
+
activeTables: number;
|
|
368
|
+
}
|
|
369
|
+
export interface ListGamesParams {
|
|
370
|
+
includeDisabled?: boolean;
|
|
371
|
+
}
|
|
372
|
+
export interface ListGamesResult {
|
|
373
|
+
games: GameSummary[];
|
|
374
|
+
}
|
|
375
|
+
export interface RegisterGameParams {
|
|
376
|
+
gameCode: string;
|
|
377
|
+
betOptions: string[];
|
|
378
|
+
displayName?: string;
|
|
379
|
+
category?: string;
|
|
380
|
+
platforms?: ("desktop" | "mobile")[];
|
|
381
|
+
thumbnailUrl?: string;
|
|
382
|
+
backgroundUrl?: string;
|
|
383
|
+
blockedCountries?: string[];
|
|
384
|
+
staleRoundTimeoutMinutes?: number;
|
|
385
|
+
maxWinPerRound?: number;
|
|
386
|
+
maxPayoutPerDay?: number;
|
|
387
|
+
concurrentRounds?: boolean;
|
|
388
|
+
stateless?: boolean;
|
|
389
|
+
enabled?: boolean;
|
|
390
|
+
}
|
|
391
|
+
export interface ContributionModule {
|
|
392
|
+
endpointURL: string;
|
|
393
|
+
contributionRate: number;
|
|
394
|
+
contributionScale: number;
|
|
395
|
+
applicableGames: string[] | null;
|
|
396
|
+
applicableOperators: string[] | null;
|
|
397
|
+
displayName: string;
|
|
398
|
+
enabled: boolean;
|
|
399
|
+
}
|
|
400
|
+
export interface RegisterContributionModuleParams {
|
|
401
|
+
key: string;
|
|
402
|
+
endpointURL: string;
|
|
403
|
+
contributionRate: number;
|
|
404
|
+
contributionScale?: number;
|
|
405
|
+
applicableGames?: string[];
|
|
406
|
+
applicableOperators?: string[];
|
|
407
|
+
displayName: string;
|
|
408
|
+
}
|
|
409
|
+
export interface ReportRangeParams {
|
|
410
|
+
/** Platform roles: required. Operator roles: ignored, always their own. */
|
|
411
|
+
operatorCode?: string;
|
|
412
|
+
startDate: string;
|
|
413
|
+
endDate: string;
|
|
414
|
+
}
|
|
415
|
+
export interface GgrBucket {
|
|
416
|
+
currency: string;
|
|
417
|
+
/** UTC calendar day (`YYYY-MM-DD`) when `granularity` is `day`; absent for totals. */
|
|
418
|
+
day?: string;
|
|
419
|
+
totalWagered: number;
|
|
420
|
+
totalPayouts: number;
|
|
421
|
+
ggr: number;
|
|
422
|
+
settledPlayers: number;
|
|
423
|
+
}
|
|
424
|
+
export interface GgrReportParams extends ReportRangeParams {
|
|
425
|
+
granularity?: "total" | "day";
|
|
426
|
+
gameCode?: string;
|
|
427
|
+
includeTest?: boolean;
|
|
428
|
+
}
|
|
429
|
+
export interface GgrReport {
|
|
430
|
+
operatorCode: string;
|
|
431
|
+
startDate: string;
|
|
432
|
+
endDate: string;
|
|
433
|
+
granularity: "total" | "day";
|
|
434
|
+
/** One bucket per currency (and per day when requested). Never summed across currencies. */
|
|
435
|
+
buckets: GgrBucket[];
|
|
436
|
+
}
|
|
437
|
+
export interface PlayerActivityParams extends ReportRangeParams {
|
|
438
|
+
includeTest?: boolean;
|
|
439
|
+
limit?: number;
|
|
440
|
+
offset?: number;
|
|
441
|
+
}
|
|
442
|
+
export interface PlayerActivityRow {
|
|
443
|
+
externalPlayerId: string;
|
|
444
|
+
currency: string | null;
|
|
445
|
+
totalBets: number;
|
|
446
|
+
totalWagered: number;
|
|
447
|
+
totalPayouts: number;
|
|
448
|
+
lastActive: string;
|
|
449
|
+
}
|
|
450
|
+
export interface PlayerActivityReport {
|
|
451
|
+
operatorCode: string;
|
|
452
|
+
players: PlayerActivityRow[];
|
|
453
|
+
total: number;
|
|
454
|
+
}
|
|
455
|
+
export interface TransactionsParams extends ReportRangeParams {
|
|
456
|
+
externalPlayerId?: string;
|
|
457
|
+
gameCode?: string;
|
|
458
|
+
roundId?: string;
|
|
459
|
+
action?: "bet" | "double" | "undo";
|
|
460
|
+
status?: "pending" | "placed" | "failed" | "cancelled";
|
|
461
|
+
includeTest?: boolean;
|
|
462
|
+
limit?: number;
|
|
463
|
+
offset?: number;
|
|
464
|
+
}
|
|
465
|
+
export interface TransactionRow {
|
|
466
|
+
id: string;
|
|
467
|
+
createdAt: string;
|
|
468
|
+
playerSession: string;
|
|
469
|
+
externalPlayerId: string;
|
|
470
|
+
currency: string | null;
|
|
471
|
+
gameRound: string;
|
|
472
|
+
roundNumber: number | null;
|
|
473
|
+
tableGameCode: string | null;
|
|
474
|
+
tableCode: string | null;
|
|
475
|
+
action: string;
|
|
476
|
+
status: "pending" | "placed" | "failed" | "cancelled";
|
|
477
|
+
amount: number;
|
|
478
|
+
betOptions: string[];
|
|
479
|
+
betAmounts: number[];
|
|
480
|
+
playerBalance: number;
|
|
481
|
+
requestId: string;
|
|
482
|
+
operatorBetId: string | null;
|
|
483
|
+
freeRoundGrantId: string | null;
|
|
484
|
+
isTest: boolean;
|
|
485
|
+
funPlay: boolean;
|
|
486
|
+
}
|
|
487
|
+
export interface TransactionsReport {
|
|
488
|
+
operatorCode: string;
|
|
489
|
+
transactions: TransactionRow[];
|
|
490
|
+
total: number;
|
|
491
|
+
}
|
|
492
|
+
export interface PayoutsParams {
|
|
493
|
+
operatorCode?: string;
|
|
494
|
+
status?: "pending" | "success" | "failed" | "voided";
|
|
495
|
+
externalPlayerId?: string;
|
|
496
|
+
roundId?: string;
|
|
497
|
+
since?: string;
|
|
498
|
+
until?: string;
|
|
499
|
+
includeTest?: boolean;
|
|
500
|
+
limit?: number;
|
|
501
|
+
offset?: number;
|
|
502
|
+
}
|
|
503
|
+
export interface PayoutRow {
|
|
504
|
+
id: string;
|
|
505
|
+
createdAt: string;
|
|
506
|
+
playerSession: string;
|
|
507
|
+
externalPlayerId: string;
|
|
508
|
+
operatorCode: string;
|
|
509
|
+
currency: string | null;
|
|
510
|
+
gameRound: string;
|
|
511
|
+
roundNumber: number | null;
|
|
512
|
+
tableGameCode: string | null;
|
|
513
|
+
amount: number;
|
|
514
|
+
netWagered: number;
|
|
515
|
+
txStatus: "pending" | "success" | "failed" | "voided";
|
|
516
|
+
retryCount: number;
|
|
517
|
+
}
|
|
518
|
+
export interface PayoutsResult {
|
|
519
|
+
payouts: PayoutRow[];
|
|
520
|
+
total: number;
|
|
521
|
+
}
|
|
522
|
+
export interface PlayerSearchParams {
|
|
523
|
+
/** Platform roles: optional filter. Operator roles: forced to their own. */
|
|
524
|
+
operatorCode?: string;
|
|
525
|
+
/** Exact match or prefix when it ends with `*`. */
|
|
526
|
+
externalPlayerId: string;
|
|
527
|
+
includeTest?: boolean;
|
|
528
|
+
limit?: number;
|
|
529
|
+
offset?: number;
|
|
530
|
+
}
|
|
531
|
+
export interface PlayerSessionSummary {
|
|
532
|
+
id: string;
|
|
533
|
+
createdAt: string;
|
|
534
|
+
operatorCode: string;
|
|
535
|
+
externalPlayerId: string;
|
|
536
|
+
tableSessionId: string;
|
|
537
|
+
tableGameCode: string | null;
|
|
538
|
+
tableCode: string | null;
|
|
539
|
+
avatarName: string | null;
|
|
540
|
+
currency: string | null;
|
|
541
|
+
country: string | null;
|
|
542
|
+
funPlay: boolean;
|
|
543
|
+
isTest: boolean;
|
|
544
|
+
hasStarted: boolean;
|
|
545
|
+
startedAt: string | null;
|
|
546
|
+
expiresAt: string | null;
|
|
547
|
+
betCount: number;
|
|
548
|
+
totalWagered: number;
|
|
549
|
+
totalPayouts: number;
|
|
550
|
+
}
|
|
551
|
+
export interface PlayerSearchResult {
|
|
552
|
+
sessions: PlayerSessionSummary[];
|
|
553
|
+
total: number;
|
|
554
|
+
}
|
|
555
|
+
export interface PlayerSummaryParams {
|
|
556
|
+
operatorCode?: string;
|
|
557
|
+
externalPlayerId: string;
|
|
558
|
+
}
|
|
559
|
+
export interface PlayerSummary {
|
|
560
|
+
operatorCode: string;
|
|
561
|
+
externalPlayerId: string;
|
|
562
|
+
firstSeen: string | null;
|
|
563
|
+
lastSeen: string | null;
|
|
564
|
+
sessions: number;
|
|
565
|
+
byCurrency: {
|
|
566
|
+
currency: string;
|
|
567
|
+
bets: number;
|
|
568
|
+
totalWagered: number;
|
|
569
|
+
totalPayouts: number;
|
|
570
|
+
net: number;
|
|
571
|
+
}[];
|
|
572
|
+
exclusion: {
|
|
573
|
+
excludedUntil: string;
|
|
574
|
+
reason: string | null;
|
|
575
|
+
} | null;
|
|
576
|
+
activeFreeRounds: number;
|
|
577
|
+
}
|
|
578
|
+
export interface SelfExclusionRow {
|
|
579
|
+
id: string;
|
|
580
|
+
createdAt: string;
|
|
581
|
+
operatorCode: string;
|
|
582
|
+
externalPlayerId: string;
|
|
583
|
+
excludedUntil: string;
|
|
584
|
+
reason: string | null;
|
|
585
|
+
active: boolean;
|
|
586
|
+
}
|
|
587
|
+
export interface ListSelfExclusionsParams {
|
|
588
|
+
operatorCode?: string;
|
|
589
|
+
externalPlayerId?: string;
|
|
590
|
+
activeOnly?: boolean;
|
|
591
|
+
limit?: number;
|
|
592
|
+
offset?: number;
|
|
593
|
+
}
|
|
594
|
+
export interface ListSelfExclusionsResult {
|
|
595
|
+
exclusions: SelfExclusionRow[];
|
|
596
|
+
total: number;
|
|
597
|
+
}
|
|
598
|
+
export interface ExcludePlayerParams {
|
|
599
|
+
operatorCode?: string;
|
|
600
|
+
externalPlayerId: string;
|
|
601
|
+
durationDays: number;
|
|
602
|
+
reason?: string;
|
|
603
|
+
}
|
|
604
|
+
export interface ExcludePlayerResult {
|
|
605
|
+
excluded: true;
|
|
606
|
+
excludedUntil: string;
|
|
607
|
+
}
|
|
608
|
+
export type FreeRoundStatus = "active" | "exhausted" | "expired" | "cancelled";
|
|
609
|
+
export interface FreeRoundGrant {
|
|
610
|
+
id: string;
|
|
611
|
+
createdAt: string;
|
|
612
|
+
updatedAt: string;
|
|
613
|
+
operator: string;
|
|
614
|
+
externalPlayerId: string;
|
|
615
|
+
gameCode: string | null;
|
|
616
|
+
promoId: string;
|
|
617
|
+
betAmount: number;
|
|
618
|
+
totalRounds: number;
|
|
619
|
+
remainingRounds: number;
|
|
620
|
+
expiresAt: string;
|
|
621
|
+
status: FreeRoundStatus;
|
|
622
|
+
}
|
|
623
|
+
export interface GrantFreeRoundsParams {
|
|
624
|
+
operatorCode?: string;
|
|
625
|
+
externalPlayerId: string;
|
|
626
|
+
gameCode?: string;
|
|
627
|
+
promoId: string;
|
|
628
|
+
betAmount: number;
|
|
629
|
+
totalRounds: number;
|
|
630
|
+
expiresAt: string;
|
|
631
|
+
}
|
|
632
|
+
export interface GrantFreeRoundsResult {
|
|
633
|
+
success: true;
|
|
634
|
+
grantId: {
|
|
635
|
+
id: string;
|
|
636
|
+
};
|
|
637
|
+
}
|
|
638
|
+
export interface CancelFreeRoundsParams {
|
|
639
|
+
operatorCode?: string;
|
|
640
|
+
grantId?: string;
|
|
641
|
+
promoId?: string;
|
|
642
|
+
}
|
|
643
|
+
export interface CancelFreeRoundsResult {
|
|
644
|
+
success: true;
|
|
645
|
+
cancelledCount: number;
|
|
646
|
+
cancelledIds: string[];
|
|
647
|
+
}
|
|
648
|
+
export interface ListFreeRoundsParams {
|
|
649
|
+
operatorCode?: string;
|
|
650
|
+
externalPlayerId?: string;
|
|
651
|
+
promoId?: string;
|
|
652
|
+
status?: FreeRoundStatus;
|
|
653
|
+
limit?: number;
|
|
654
|
+
offset?: number;
|
|
655
|
+
}
|
|
656
|
+
export interface ListFreeRoundsResult {
|
|
657
|
+
grants: FreeRoundGrant[];
|
|
658
|
+
total: number;
|
|
659
|
+
}
|
|
660
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@octane-rgs/admin",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Admin SDK for Octane RGS — back-office sessions, roles and permissions, operators, games, recovery, reports",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"files": [
|
|
9
|
+
"dist"
|
|
10
|
+
],
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "tsc",
|
|
13
|
+
"prepublishOnly": "npm run build"
|
|
14
|
+
},
|
|
15
|
+
"devDependencies": {
|
|
16
|
+
"typescript": "^5.7.3"
|
|
17
|
+
},
|
|
18
|
+
"license": "UNLICENSED"
|
|
19
|
+
}
|