@remnawave/backend-contract 2.9.21 → 2.9.23
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/build/backend/api/controllers/system.d.ts +1 -0
- package/build/backend/api/controllers/system.d.ts.map +1 -1
- package/build/backend/api/controllers/system.js +1 -0
- package/build/backend/api/routes.d.ts +1 -0
- package/build/backend/api/routes.d.ts.map +1 -1
- package/build/backend/api/routes.js +1 -0
- package/build/backend/commands/remnawave-settings/get-remnawave-settings.command.d.ts +1 -0
- package/build/backend/commands/remnawave-settings/get-remnawave-settings.command.d.ts.map +1 -1
- package/build/backend/commands/remnawave-settings/update-remnawave-settings.command.d.ts +2 -0
- package/build/backend/commands/remnawave-settings/update-remnawave-settings.command.d.ts.map +1 -1
- package/build/backend/commands/system/get-stats-digest.command.d.ts +28 -0
- package/build/backend/commands/system/get-stats-digest.command.d.ts.map +1 -0
- package/build/backend/commands/system/get-stats-digest.command.js +35 -0
- package/build/backend/commands/system/index.d.ts +1 -0
- package/build/backend/commands/system/index.d.ts.map +1 -1
- package/build/backend/commands/system/index.js +1 -0
- package/build/backend/constants/errors/errors.d.ts +10 -0
- package/build/backend/constants/errors/errors.d.ts.map +1 -1
- package/build/backend/constants/errors/errors.js +10 -0
- package/build/backend/models/remnawave-settings/oauth2-settings.schema.d.ts +1 -0
- package/build/backend/models/remnawave-settings/oauth2-settings.schema.d.ts.map +1 -1
- package/build/backend/models/remnawave-settings/oauth2-settings.schema.js +9 -0
- package/build/backend/models/remnawave-settings/remnawave-settings.schema.d.ts +1 -0
- package/build/backend/models/remnawave-settings/remnawave-settings.schema.d.ts.map +1 -1
- package/build/frontend/api/controllers/system.js +1 -0
- package/build/frontend/api/routes.js +1 -0
- package/build/frontend/commands/system/get-stats-digest.command.js +35 -0
- package/build/frontend/commands/system/index.js +1 -0
- package/build/frontend/constants/errors/errors.js +10 -0
- package/build/frontend/models/remnawave-settings/oauth2-settings.schema.js +9 -0
- package/package.json +1 -1
|
@@ -5,6 +5,7 @@ export declare const SYSTEM_ROUTES: {
|
|
|
5
5
|
readonly BANDWIDTH_STATS: "stats/bandwidth";
|
|
6
6
|
readonly NODES_STATS: "stats/nodes";
|
|
7
7
|
readonly RECAP: "stats/recap";
|
|
8
|
+
readonly DIGEST: "stats/digest";
|
|
8
9
|
readonly NODES_METRICS: "nodes/metrics";
|
|
9
10
|
readonly HTTP: "stats/http";
|
|
10
11
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../../api/controllers/system.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,EAAG,QAAiB,CAAC;AAEnD,eAAO,MAAM,aAAa
|
|
1
|
+
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../../../api/controllers/system.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,EAAG,QAAiB,CAAC;AAEnD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;CAkBhB,CAAC"}
|
|
@@ -131,6 +131,7 @@ export declare const REST_API: {
|
|
|
131
131
|
readonly NODES_STATS: "/api/system/stats/nodes";
|
|
132
132
|
readonly NODES_METRICS: "/api/system/nodes/metrics";
|
|
133
133
|
readonly RECAP: "/api/system/stats/recap";
|
|
134
|
+
readonly DIGEST: "/api/system/stats/digest";
|
|
134
135
|
readonly HTTP: "/api/system/stats/http";
|
|
135
136
|
};
|
|
136
137
|
readonly TOOLS: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../api/routes.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,IAAI,EAAG,MAAe,CAAC;AACpC,eAAO,MAAM,YAAY,EAAG,UAAmB,CAAC;AAChD,eAAO,MAAM,WAAW,EAAG,SAAkB,CAAC;AAE9C,eAAO,MAAM,kBAAkB,EAAG,gBAAyB,CAAC;AAC5D,eAAO,MAAM,cAAc,EAAG,uBAAgC,CAAC;AAC/D,eAAO,MAAM,YAAY,EAAG,wBAAiC,CAAC;AAC9D,eAAO,MAAM,WAAW,EAAG,uBAAgC,CAAC;AAE5D,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;gCAyBE,MAAM;;;;;;;;;;;qCAcD,MAAM;;gCAGX,MAAM;;;;;oCAOF,MAAM;qCAIL,MAAM;qCAIN,MAAM;;2CAKA,MAAM;;;;;;;;;;;;;;kCAkBf,MAAM;qCAGH,MAAM;4CAEC,MAAM;wDAEM,MAAM;;uCAMvB,MAAM;sCAIP,MAAM;6CAIC,MAAM;mDAIA,MAAM;sDAIH,MAAM;;;6CAMf,MAAM;0CAIT,MAAM;;;;;;;;;;;;;;;;;;;;;;kCAyBd,MAAM;uCAED,MAAM;;;;;;qCASR,MAAM;gCAEX,MAAM
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../api/routes.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,IAAI,EAAG,MAAe,CAAC;AACpC,eAAO,MAAM,YAAY,EAAG,UAAmB,CAAC;AAChD,eAAO,MAAM,WAAW,EAAG,SAAkB,CAAC;AAE9C,eAAO,MAAM,kBAAkB,EAAG,gBAAyB,CAAC;AAC5D,eAAO,MAAM,cAAc,EAAG,uBAAgC,CAAC;AAC/D,eAAO,MAAM,YAAY,EAAG,wBAAiC,CAAC;AAC9D,eAAO,MAAM,WAAW,EAAG,uBAAgC,CAAC;AAE5D,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;gCAyBE,MAAM;;;;;;;;;;;qCAcD,MAAM;;gCAGX,MAAM;;;;;oCAOF,MAAM;qCAIL,MAAM;qCAIN,MAAM;;2CAKA,MAAM;;;;;;;;;;;;;;kCAkBf,MAAM;qCAGH,MAAM;4CAEC,MAAM;wDAEM,MAAM;;uCAMvB,MAAM;sCAIP,MAAM;6CAIC,MAAM;mDAIA,MAAM;sDAIH,MAAM;;;6CAMf,MAAM;0CAIT,MAAM;;;;;;;;;;;;;;;;;;;;;;kCAyBd,MAAM;uCAED,MAAM;;;;;;qCASR,MAAM;gCAEX,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAqCT,MAAM;;gCAKH,MAAM;;;;;;;;;;;;;;iDAiBW,MAAM;;;;;;;;;0CAYb,MAAM;6CAIH,MAAM;iDAIF,MAAM;kCAIrB,MAAM;;;6CAMK,MAAM;;0DAKO,MAAM;;;;;;qCAS3B,MAAM;gCAIX,MAAM;sDAIgB,MAAM;6DAIC,MAAM;;;;;;;;;;qCAa9B,MAAM;gCAIX,MAAM;0CAII,MAAM;;uCAKT,MAAM;0CAEH,MAAM;4CAEJ,MAAM;+CAEH,MAAM;;;;;;;;;;yCAWZ,MAAM;8CAED,MAAM;;;;6CAMP,MAAM;;;gDAKH,MAAM;;;;;;;;;;;;;;;;qCAiBjB,MAAM;gCAIX,MAAM;;uCAKC,MAAM;0CAEH,MAAM;;;;;;;;;;;6BAYnB,MAAM;;;gCAIH,MAAM;;;;;;;;6BAST,MAAM;;;gCAIH,MAAM;;;;;;;;;;;;;;;;;uCAkBC,MAAM;;;;;yCAMJ,MAAM;;;uCAIR,MAAM;6CAEA,MAAM,UAAU,MAAM;;;;+CAKpB,MAAM;qDAEA,MAAM;6CAEd,MAAM;qDAEE,MAAM;;;;;iCAM1B,MAAM;oCAEH,MAAM;;;mCAIP,MAAM;sCAEH,MAAM;;;CAIzB,CAAC"}
|
|
@@ -168,6 +168,7 @@ exports.REST_API = {
|
|
|
168
168
|
NODES_STATS: `${exports.ROOT}/${CONTROLLERS.SYSTEM_CONTROLLER}/${CONTROLLERS.SYSTEM_ROUTES.STATS.NODES_STATS}`,
|
|
169
169
|
NODES_METRICS: `${exports.ROOT}/${CONTROLLERS.SYSTEM_CONTROLLER}/${CONTROLLERS.SYSTEM_ROUTES.STATS.NODES_METRICS}`,
|
|
170
170
|
RECAP: `${exports.ROOT}/${CONTROLLERS.SYSTEM_CONTROLLER}/${CONTROLLERS.SYSTEM_ROUTES.STATS.RECAP}`,
|
|
171
|
+
DIGEST: `${exports.ROOT}/${CONTROLLERS.SYSTEM_CONTROLLER}/${CONTROLLERS.SYSTEM_ROUTES.STATS.DIGEST}`,
|
|
171
172
|
HTTP: `${exports.ROOT}/${CONTROLLERS.SYSTEM_CONTROLLER}/${CONTROLLERS.SYSTEM_ROUTES.STATS.HTTP}`,
|
|
172
173
|
},
|
|
173
174
|
TOOLS: {
|
|
@@ -21,6 +21,7 @@ export declare namespace GetRemnawaveSettingsCommand {
|
|
|
21
21
|
enabled: z.ZodBoolean;
|
|
22
22
|
clientId: z.ZodNullable<z.ZodString>;
|
|
23
23
|
clientSecret: z.ZodNullable<z.ZodString>;
|
|
24
|
+
frontendDomain: z.ZodNullable<z.ZodString>;
|
|
24
25
|
plainDomain: z.ZodNullable<z.ZodString>;
|
|
25
26
|
allowedEmails: z.ZodArray<z.ZodString>;
|
|
26
27
|
}, z.core.$strip>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-remnawave-settings.command.d.ts","sourceRoot":"","sources":["../../../../commands/remnawave-settings/get-remnawave-settings.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,yBAAiB,2BAA2B,CAAC;IAClC,MAAM,GAAG,4BAAmC,CAAC;IAC7C,MAAM,OAAO,4BAAM,CAAC;IAEpB,MAAM,eAAe,2CAK3B,CAAC;IAEK,MAAM,cAAc
|
|
1
|
+
{"version":3,"file":"get-remnawave-settings.command.d.ts","sourceRoot":"","sources":["../../../../commands/remnawave-settings/get-remnawave-settings.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,yBAAiB,2BAA2B,CAAC;IAClC,MAAM,GAAG,4BAAmC,CAAC;IAC7C,MAAM,OAAO,4BAAM,CAAC;IAEpB,MAAM,eAAe,2CAK3B,CAAC;IAEK,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAEzB,CAAC;IAEH,KAAY,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;CACzD"}
|
|
@@ -20,6 +20,7 @@ export declare namespace UpdateRemnawaveSettingsCommand {
|
|
|
20
20
|
enabled: z.ZodBoolean;
|
|
21
21
|
clientId: z.ZodNullable<z.ZodString>;
|
|
22
22
|
clientSecret: z.ZodNullable<z.ZodString>;
|
|
23
|
+
frontendDomain: z.ZodNullable<z.ZodString>;
|
|
23
24
|
plainDomain: z.ZodNullable<z.ZodString>;
|
|
24
25
|
allowedEmails: z.ZodArray<z.ZodString>;
|
|
25
26
|
}, z.core.$strip>;
|
|
@@ -82,6 +83,7 @@ export declare namespace UpdateRemnawaveSettingsCommand {
|
|
|
82
83
|
enabled: z.ZodBoolean;
|
|
83
84
|
clientId: z.ZodNullable<z.ZodString>;
|
|
84
85
|
clientSecret: z.ZodNullable<z.ZodString>;
|
|
86
|
+
frontendDomain: z.ZodNullable<z.ZodString>;
|
|
85
87
|
plainDomain: z.ZodNullable<z.ZodString>;
|
|
86
88
|
allowedEmails: z.ZodArray<z.ZodString>;
|
|
87
89
|
}, z.core.$strip>;
|
package/build/backend/commands/remnawave-settings/update-remnawave-settings.command.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-remnawave-settings.command.d.ts","sourceRoot":"","sources":["../../../../commands/remnawave-settings/update-remnawave-settings.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,yBAAiB,8BAA8B,CAAC;IACrC,MAAM,GAAG,4BAAsC,CAAC;IAChD,MAAM,OAAO,4BAAM,CAAC;IAEpB,MAAM,eAAe,2CAK3B,CAAC;IAEK,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"update-remnawave-settings.command.d.ts","sourceRoot":"","sources":["../../../../commands/remnawave-settings/update-remnawave-settings.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,yBAAiB,8BAA8B,CAAC;IACrC,MAAM,GAAG,4BAAsC,CAAC;IAChD,MAAM,OAAO,4BAAM,CAAC;IAEpB,MAAM,eAAe,2CAK3B,CAAC;IAEK,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAK5B,CAAC;IAEI,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAEzB,CAAC;IAEH,KAAY,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;IAC5D,KAAY,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;CACzD"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare namespace GetStatsDigestCommand {
|
|
3
|
+
const url: "/api/system/stats/digest";
|
|
4
|
+
const TSQ_url: "/api/system/stats/digest";
|
|
5
|
+
const endpointDetails: import("../../constants").EndpointDetails;
|
|
6
|
+
const RequestQuerySchema: z.ZodObject<{
|
|
7
|
+
start: z.ZodISODateTime;
|
|
8
|
+
end: z.ZodISODateTime;
|
|
9
|
+
}, z.core.$strip>;
|
|
10
|
+
const ResponseSchema: z.ZodObject<{
|
|
11
|
+
response: z.ZodObject<{
|
|
12
|
+
users: z.ZodObject<{
|
|
13
|
+
createdCount: z.ZodNumber;
|
|
14
|
+
expiredCount: z.ZodNumber;
|
|
15
|
+
}, z.core.$strip>;
|
|
16
|
+
traffic: z.ZodObject<{
|
|
17
|
+
totalBytes: z.ZodString;
|
|
18
|
+
byUsersCreatedInRangeBytes: z.ZodString;
|
|
19
|
+
}, z.core.$strip>;
|
|
20
|
+
hwidDevices: z.ZodObject<{
|
|
21
|
+
createdCount: z.ZodNumber;
|
|
22
|
+
}, z.core.$strip>;
|
|
23
|
+
}, z.core.$strip>;
|
|
24
|
+
}, z.core.$strip>;
|
|
25
|
+
type RequestQuery = z.infer<typeof RequestQuerySchema>;
|
|
26
|
+
type Response = z.infer<typeof ResponseSchema>;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=get-stats-digest.command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-stats-digest.command.d.ts","sourceRoot":"","sources":["../../../../commands/system/get-stats-digest.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,yBAAiB,qBAAqB,CAAC;IAC5B,MAAM,GAAG,4BAA+B,CAAC;IACzC,MAAM,OAAO,4BAAM,CAAC;IAEpB,MAAM,eAAe,2CAM3B,CAAC;IAEK,MAAM,kBAAkB;;;qBAW7B,CAAC;IAEI,MAAM,cAAc;;;;;;;;;;;;;;qBAczB,CAAC;IAEH,KAAY,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;IAC9D,KAAY,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;CACzD"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GetStatsDigestCommand = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const api_1 = require("../../api");
|
|
6
|
+
const constants_1 = require("../../constants");
|
|
7
|
+
var GetStatsDigestCommand;
|
|
8
|
+
(function (GetStatsDigestCommand) {
|
|
9
|
+
GetStatsDigestCommand.url = api_1.REST_API.SYSTEM.STATS.DIGEST;
|
|
10
|
+
GetStatsDigestCommand.TSQ_url = GetStatsDigestCommand.url;
|
|
11
|
+
GetStatsDigestCommand.endpointDetails = (0, constants_1.getEndpointDetails)(api_1.SYSTEM_ROUTES.STATS.DIGEST, 'get', 'Get Stats Digest', { scope: 'digest', kind: 'read' }, 'Aggregated statistics for a datetime range [start, end): created and expired users, total traffic, traffic spent by users created within the range and new HWID devices. Per-user traffic history is stored with daily granularity (UTC), so the "traffic by new users" metric snaps to whole days at the range edges.');
|
|
12
|
+
GetStatsDigestCommand.RequestQuerySchema = zod_1.z.object({
|
|
13
|
+
start: zod_1.z.iso
|
|
14
|
+
.datetime({ offset: true })
|
|
15
|
+
.describe('Start of the range, ISO 8601 datetime with timezone (e.g. 2026-07-15T00:00:00Z). Inclusive.'),
|
|
16
|
+
end: zod_1.z.iso
|
|
17
|
+
.datetime({ offset: true })
|
|
18
|
+
.describe('End of the range, ISO 8601 datetime with timezone (e.g. 2026-07-16T00:00:00Z). Exclusive.'),
|
|
19
|
+
});
|
|
20
|
+
GetStatsDigestCommand.ResponseSchema = zod_1.z.object({
|
|
21
|
+
response: zod_1.z.object({
|
|
22
|
+
users: zod_1.z.object({
|
|
23
|
+
createdCount: zod_1.z.number(),
|
|
24
|
+
expiredCount: zod_1.z.number(),
|
|
25
|
+
}),
|
|
26
|
+
traffic: zod_1.z.object({
|
|
27
|
+
totalBytes: zod_1.z.string(),
|
|
28
|
+
byUsersCreatedInRangeBytes: zod_1.z.string(),
|
|
29
|
+
}),
|
|
30
|
+
hwidDevices: zod_1.z.object({
|
|
31
|
+
createdCount: zod_1.z.number(),
|
|
32
|
+
}),
|
|
33
|
+
}),
|
|
34
|
+
});
|
|
35
|
+
})(GetStatsDigestCommand || (exports.GetStatsDigestCommand = GetStatsDigestCommand = {}));
|
|
@@ -3,6 +3,7 @@ export * from './get-metadata.command';
|
|
|
3
3
|
export * from './get-nodes-metrics.command';
|
|
4
4
|
export * from './get-nodes-statistics';
|
|
5
5
|
export * from './get-recap.command';
|
|
6
|
+
export * from './get-stats-digest.command';
|
|
6
7
|
export * from './get-remnawave-health.command';
|
|
7
8
|
export * from './get-stats.command';
|
|
8
9
|
export * from './testers';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../commands/system/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qBAAqB,CAAC;AACpC,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../commands/system/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qBAAqB,CAAC;AACpC,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,0BAA0B,CAAC"}
|
|
@@ -19,6 +19,7 @@ __exportStar(require("./get-metadata.command"), exports);
|
|
|
19
19
|
__exportStar(require("./get-nodes-metrics.command"), exports);
|
|
20
20
|
__exportStar(require("./get-nodes-statistics"), exports);
|
|
21
21
|
__exportStar(require("./get-recap.command"), exports);
|
|
22
|
+
__exportStar(require("./get-stats-digest.command"), exports);
|
|
22
23
|
__exportStar(require("./get-remnawave-health.command"), exports);
|
|
23
24
|
__exportStar(require("./get-stats.command"), exports);
|
|
24
25
|
__exportStar(require("./testers"), exports);
|
|
@@ -1199,5 +1199,15 @@ export declare const ERRORS: {
|
|
|
1199
1199
|
readonly message: "Remove many users from internal squad error";
|
|
1200
1200
|
readonly httpCode: 500;
|
|
1201
1201
|
};
|
|
1202
|
+
readonly GET_STATS_DIGEST_INVALID_RANGE: {
|
|
1203
|
+
readonly code: "A235";
|
|
1204
|
+
readonly message: "Start date must be before or equal to end date";
|
|
1205
|
+
readonly httpCode: 400;
|
|
1206
|
+
};
|
|
1207
|
+
readonly GET_STATS_DIGEST_ERROR: {
|
|
1208
|
+
readonly code: "A236";
|
|
1209
|
+
readonly message: "Get stats digest error";
|
|
1210
|
+
readonly httpCode: 500;
|
|
1211
|
+
};
|
|
1202
1212
|
};
|
|
1203
1213
|
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../constants/errors/errors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCAwJY,MAAM;;;;;;;;;;wCAUN,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCA4IN,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCAsqBN,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCA0KN,MAAM
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../constants/errors/errors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCAwJY,MAAM;;;;;;;;;;wCAUN,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCA4IN,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCAsqBN,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCA0KN,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+B3B,CAAC"}
|
|
@@ -1170,4 +1170,14 @@ exports.ERRORS = {
|
|
|
1170
1170
|
message: 'Remove many users from internal squad error',
|
|
1171
1171
|
httpCode: 500,
|
|
1172
1172
|
},
|
|
1173
|
+
GET_STATS_DIGEST_INVALID_RANGE: {
|
|
1174
|
+
code: 'A235',
|
|
1175
|
+
message: 'Start date must be before or equal to end date',
|
|
1176
|
+
httpCode: 400,
|
|
1177
|
+
},
|
|
1178
|
+
GET_STATS_DIGEST_ERROR: {
|
|
1179
|
+
code: 'A236',
|
|
1180
|
+
message: 'Get stats digest error',
|
|
1181
|
+
httpCode: 500,
|
|
1182
|
+
},
|
|
1173
1183
|
};
|
|
@@ -10,6 +10,7 @@ export declare const Oauth2SettingsSchema: z.ZodObject<{
|
|
|
10
10
|
enabled: z.ZodBoolean;
|
|
11
11
|
clientId: z.ZodNullable<z.ZodString>;
|
|
12
12
|
clientSecret: z.ZodNullable<z.ZodString>;
|
|
13
|
+
frontendDomain: z.ZodNullable<z.ZodString>;
|
|
13
14
|
plainDomain: z.ZodNullable<z.ZodString>;
|
|
14
15
|
allowedEmails: z.ZodArray<z.ZodString>;
|
|
15
16
|
}, z.core.$strip>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth2-settings.schema.d.ts","sourceRoot":"","sources":["../../../../models/remnawave-settings/oauth2-settings.schema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,eAAO,MAAM,oBAAoB
|
|
1
|
+
{"version":3,"file":"oauth2-settings.schema.d.ts","sourceRoot":"","sources":["../../../../models/remnawave-settings/oauth2-settings.schema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA+K/B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
|
|
@@ -16,6 +16,15 @@ exports.Oauth2SettingsSchema = zod_1.default.object({
|
|
|
16
16
|
enabled: zod_1.default.boolean(),
|
|
17
17
|
clientId: zod_1.default.nullable(zod_1.default.string()),
|
|
18
18
|
clientSecret: zod_1.default.nullable(zod_1.default.string()),
|
|
19
|
+
frontendDomain: zod_1.default.nullable(zod_1.default.string().refine((val) => {
|
|
20
|
+
const fqdnRegex = /(?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{0,62}[a-zA-Z0-9]\.)+[a-zA-Z]{2,63}$)/;
|
|
21
|
+
if (fqdnRegex.test(val)) {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
return false;
|
|
25
|
+
}, {
|
|
26
|
+
message: 'Must be a valid fully qualified domain name (FQDN), e.g. "docs.rw"',
|
|
27
|
+
})),
|
|
19
28
|
plainDomain: zod_1.default.nullable(zod_1.default.string().refine((val) => {
|
|
20
29
|
const fqdnRegex = /(?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{0,62}[a-zA-Z0-9]\.)+[a-zA-Z]{2,63}$)/;
|
|
21
30
|
if (fqdnRegex.test(val)) {
|
|
@@ -16,6 +16,7 @@ export declare const RemnawaveSettingsSchema: z.ZodObject<{
|
|
|
16
16
|
enabled: z.ZodBoolean;
|
|
17
17
|
clientId: z.ZodNullable<z.ZodString>;
|
|
18
18
|
clientSecret: z.ZodNullable<z.ZodString>;
|
|
19
|
+
frontendDomain: z.ZodNullable<z.ZodString>;
|
|
19
20
|
plainDomain: z.ZodNullable<z.ZodString>;
|
|
20
21
|
allowedEmails: z.ZodArray<z.ZodString>;
|
|
21
22
|
}, z.core.$strip>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remnawave-settings.schema.d.ts","sourceRoot":"","sources":["../../../../models/remnawave-settings/remnawave-settings.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,uBAAuB
|
|
1
|
+
{"version":3,"file":"remnawave-settings.schema.d.ts","sourceRoot":"","sources":["../../../../models/remnawave-settings/remnawave-settings.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAKlC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
|
|
@@ -168,6 +168,7 @@ exports.REST_API = {
|
|
|
168
168
|
NODES_STATS: `${exports.ROOT}/${CONTROLLERS.SYSTEM_CONTROLLER}/${CONTROLLERS.SYSTEM_ROUTES.STATS.NODES_STATS}`,
|
|
169
169
|
NODES_METRICS: `${exports.ROOT}/${CONTROLLERS.SYSTEM_CONTROLLER}/${CONTROLLERS.SYSTEM_ROUTES.STATS.NODES_METRICS}`,
|
|
170
170
|
RECAP: `${exports.ROOT}/${CONTROLLERS.SYSTEM_CONTROLLER}/${CONTROLLERS.SYSTEM_ROUTES.STATS.RECAP}`,
|
|
171
|
+
DIGEST: `${exports.ROOT}/${CONTROLLERS.SYSTEM_CONTROLLER}/${CONTROLLERS.SYSTEM_ROUTES.STATS.DIGEST}`,
|
|
171
172
|
HTTP: `${exports.ROOT}/${CONTROLLERS.SYSTEM_CONTROLLER}/${CONTROLLERS.SYSTEM_ROUTES.STATS.HTTP}`,
|
|
172
173
|
},
|
|
173
174
|
TOOLS: {
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GetStatsDigestCommand = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const api_1 = require("../../api");
|
|
6
|
+
const constants_1 = require("../../constants");
|
|
7
|
+
var GetStatsDigestCommand;
|
|
8
|
+
(function (GetStatsDigestCommand) {
|
|
9
|
+
GetStatsDigestCommand.url = api_1.REST_API.SYSTEM.STATS.DIGEST;
|
|
10
|
+
GetStatsDigestCommand.TSQ_url = GetStatsDigestCommand.url;
|
|
11
|
+
GetStatsDigestCommand.endpointDetails = (0, constants_1.getEndpointDetails)(api_1.SYSTEM_ROUTES.STATS.DIGEST, 'get', 'Get Stats Digest', { scope: 'digest', kind: 'read' }, 'Aggregated statistics for a datetime range [start, end): created and expired users, total traffic, traffic spent by users created within the range and new HWID devices. Per-user traffic history is stored with daily granularity (UTC), so the "traffic by new users" metric snaps to whole days at the range edges.');
|
|
12
|
+
GetStatsDigestCommand.RequestQuerySchema = zod_1.z.object({
|
|
13
|
+
start: zod_1.z.iso
|
|
14
|
+
.datetime({ offset: true })
|
|
15
|
+
.describe('Start of the range, ISO 8601 datetime with timezone (e.g. 2026-07-15T00:00:00Z). Inclusive.'),
|
|
16
|
+
end: zod_1.z.iso
|
|
17
|
+
.datetime({ offset: true })
|
|
18
|
+
.describe('End of the range, ISO 8601 datetime with timezone (e.g. 2026-07-16T00:00:00Z). Exclusive.'),
|
|
19
|
+
});
|
|
20
|
+
GetStatsDigestCommand.ResponseSchema = zod_1.z.object({
|
|
21
|
+
response: zod_1.z.object({
|
|
22
|
+
users: zod_1.z.object({
|
|
23
|
+
createdCount: zod_1.z.number(),
|
|
24
|
+
expiredCount: zod_1.z.number(),
|
|
25
|
+
}),
|
|
26
|
+
traffic: zod_1.z.object({
|
|
27
|
+
totalBytes: zod_1.z.string(),
|
|
28
|
+
byUsersCreatedInRangeBytes: zod_1.z.string(),
|
|
29
|
+
}),
|
|
30
|
+
hwidDevices: zod_1.z.object({
|
|
31
|
+
createdCount: zod_1.z.number(),
|
|
32
|
+
}),
|
|
33
|
+
}),
|
|
34
|
+
});
|
|
35
|
+
})(GetStatsDigestCommand || (exports.GetStatsDigestCommand = GetStatsDigestCommand = {}));
|
|
@@ -19,6 +19,7 @@ __exportStar(require("./get-metadata.command"), exports);
|
|
|
19
19
|
__exportStar(require("./get-nodes-metrics.command"), exports);
|
|
20
20
|
__exportStar(require("./get-nodes-statistics"), exports);
|
|
21
21
|
__exportStar(require("./get-recap.command"), exports);
|
|
22
|
+
__exportStar(require("./get-stats-digest.command"), exports);
|
|
22
23
|
__exportStar(require("./get-remnawave-health.command"), exports);
|
|
23
24
|
__exportStar(require("./get-stats.command"), exports);
|
|
24
25
|
__exportStar(require("./testers"), exports);
|
|
@@ -1170,4 +1170,14 @@ exports.ERRORS = {
|
|
|
1170
1170
|
message: 'Remove many users from internal squad error',
|
|
1171
1171
|
httpCode: 500,
|
|
1172
1172
|
},
|
|
1173
|
+
GET_STATS_DIGEST_INVALID_RANGE: {
|
|
1174
|
+
code: 'A235',
|
|
1175
|
+
message: 'Start date must be before or equal to end date',
|
|
1176
|
+
httpCode: 400,
|
|
1177
|
+
},
|
|
1178
|
+
GET_STATS_DIGEST_ERROR: {
|
|
1179
|
+
code: 'A236',
|
|
1180
|
+
message: 'Get stats digest error',
|
|
1181
|
+
httpCode: 500,
|
|
1182
|
+
},
|
|
1173
1183
|
};
|
|
@@ -16,6 +16,15 @@ exports.Oauth2SettingsSchema = zod_1.default.object({
|
|
|
16
16
|
enabled: zod_1.default.boolean(),
|
|
17
17
|
clientId: zod_1.default.nullable(zod_1.default.string()),
|
|
18
18
|
clientSecret: zod_1.default.nullable(zod_1.default.string()),
|
|
19
|
+
frontendDomain: zod_1.default.nullable(zod_1.default.string().refine((val) => {
|
|
20
|
+
const fqdnRegex = /(?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{0,62}[a-zA-Z0-9]\.)+[a-zA-Z]{2,63}$)/;
|
|
21
|
+
if (fqdnRegex.test(val)) {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
return false;
|
|
25
|
+
}, {
|
|
26
|
+
message: 'Must be a valid fully qualified domain name (FQDN), e.g. "docs.rw"',
|
|
27
|
+
})),
|
|
19
28
|
plainDomain: zod_1.default.nullable(zod_1.default.string().refine((val) => {
|
|
20
29
|
const fqdnRegex = /(?=^.{4,253}$)(^((?!-)[a-zA-Z0-9-]{0,62}[a-zA-Z0-9]\.)+[a-zA-Z]{2,63}$)/;
|
|
21
30
|
if (fqdnRegex.test(val)) {
|
package/package.json
CHANGED