@remnawave/backend-contract 2.3.24 → 2.3.26

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.
@@ -14,6 +14,9 @@ export declare const NODES_ROUTES: {
14
14
  readonly RESTART_ALL: "actions/restart-all";
15
15
  readonly REORDER: "actions/reorder";
16
16
  };
17
+ readonly BULK_ACTIONS: {
18
+ readonly PROFILE_MODIFICATION: "bulk-actions/profile-modification";
19
+ };
17
20
  readonly STATS: {
18
21
  readonly USAGE_BY_RANGE: "usage/range";
19
22
  readonly USAGE_BY_RANGE_USER: (uuid: string) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../../../api/controllers/nodes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,EAAG,OAAgB,CAAC;AAEjD,eAAO,MAAM,kBAAkB,EAAG,SAAkB,CAAC;AAErD,eAAO,MAAM,YAAY;;;iCAGD,MAAM;;4BAEX,MAAM;;gCAGF,MAAM;iCACL,MAAM;iCACN,MAAM;uCACA,MAAM;;;;;;6CAQA,MAAM;;;;;;CAOhC,CAAC"}
1
+ {"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../../../api/controllers/nodes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,EAAG,OAAgB,CAAC;AAEjD,eAAO,MAAM,kBAAkB,EAAG,SAAkB,CAAC;AAGrD,eAAO,MAAM,YAAY;;;iCAGD,MAAM;;4BAEX,MAAM;;gCAGF,MAAM;iCACL,MAAM;iCACN,MAAM;uCACA,MAAM;;;;;;;;;6CAWA,MAAM;;;;;;CAOhC,CAAC"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NODES_ROUTES = exports.NODE_ACTIONS_ROUTE = exports.NODES_CONTROLLER = void 0;
4
4
  exports.NODES_CONTROLLER = 'nodes';
5
5
  exports.NODE_ACTIONS_ROUTE = 'actions';
6
+ const BULK_ACTIONS_ROUTE = 'bulk-actions';
6
7
  exports.NODES_ROUTES = {
7
8
  CREATE: '', // create
8
9
  GET: '', // get all nodes
@@ -17,6 +18,9 @@ exports.NODES_ROUTES = {
17
18
  RESTART_ALL: `${exports.NODE_ACTIONS_ROUTE}/restart-all`,
18
19
  REORDER: `${exports.NODE_ACTIONS_ROUTE}/reorder`,
19
20
  },
21
+ BULK_ACTIONS: {
22
+ PROFILE_MODIFICATION: `${BULK_ACTIONS_ROUTE}/profile-modification`,
23
+ },
20
24
  STATS: {
21
25
  USAGE_BY_RANGE: 'usage/range',
22
26
  USAGE_BY_RANGE_USER: (uuid) => `usage/${uuid}/users/range`,
@@ -49,6 +49,9 @@ export declare const REST_API: {
49
49
  readonly RESET_TRAFFIC: (uuid: string) => string;
50
50
  readonly REORDER: "/api/nodes/actions/reorder";
51
51
  };
52
+ readonly BULK_ACTIONS: {
53
+ readonly PROFILE_MODIFICATION: "/api/nodes/bulk-actions/profile-modification";
54
+ };
52
55
  readonly STATS: {
53
56
  readonly USAGE_BY_RANGE: "/api/nodes/usage/range";
54
57
  readonly USAGE_BY_RANGE_USER: (uuid: string) => string;
@@ -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;AAC9C,eAAO,MAAM,cAAc,EAAG,SAAkB,CAAC;AAEjD,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;gCAyBE,MAAM;;;;;;;;;qCAYD,MAAM;;gCAGX,MAAM;;;;;oCAOF,MAAM;qCAIL,MAAM;qCAIN,MAAM;;2CAKA,MAAM;;;;;iDASA,MAAM;;;;;;;;gCAWvB,MAAM;qCAGD,MAAM;0CAED,MAAM;sDAEM,MAAM;;qCAMvB,MAAM;oCAIP,MAAM;2CAIC,MAAM;iDAIA,MAAM;;;6CAOV,MAAM;0CAIT,MAAM;2DAIW,MAAM;+CAIlB,MAAM;oCAIjB,MAAM;gCAIV,MAAM;;;;;;;;;;;;;;;gDAmBU,MAAM;;;;;;;kCAWpB,MAAM;0CAEE,MAAM;uCAET,MAAM;;;;;;qCASR,MAAM;gCAEX,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAmCT,MAAM;;gCAKH,MAAM;;;;;;;;;;;;;;mDAiBa,MAAM;;;;;;;;0CAWf,MAAM;kCAId,MAAM;6CAIK,MAAM;iDAIF,MAAM;;;;;;;qCAUlB,MAAM;gCAIX,MAAM;sDAIgB,MAAM;6DAIC,MAAM;;;;;;;;;;qCAa9B,MAAM;gCAIX,MAAM;0CAII,MAAM;;uCAKT,MAAM;0CAEH,MAAM;;;;;;;;;;yCAYP,MAAM;8CAED,MAAM;;;;6CAMP,MAAM;;;gDAKH,MAAM;;;;;;;;;;;;;;;;qCAiBjB,MAAM;gCAIX,MAAM;;uCAKC,MAAM;0CAEH,MAAM;;;;;;;;;;CAW7B,CAAC"}
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;AAC9C,eAAO,MAAM,cAAc,EAAG,SAAkB,CAAC;AAEjD,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;gCAyBE,MAAM;;;;;;;;;qCAYD,MAAM;;gCAGX,MAAM;;;;;oCAOF,MAAM;qCAIL,MAAM;qCAIN,MAAM;;2CAKA,MAAM;;;;;;;;iDAaA,MAAM;;;;;;;;gCAWvB,MAAM;qCAGD,MAAM;0CAED,MAAM;sDAEM,MAAM;;qCAMvB,MAAM;oCAIP,MAAM;2CAIC,MAAM;iDAIA,MAAM;;;6CAOV,MAAM;0CAIT,MAAM;2DAIW,MAAM;+CAIlB,MAAM;oCAIjB,MAAM;gCAIV,MAAM;;;;;;;;;;;;;;;gDAmBU,MAAM;;;;;;;kCAWpB,MAAM;0CAEE,MAAM;uCAET,MAAM;;;;;;qCASR,MAAM;gCAEX,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAmCT,MAAM;;gCAKH,MAAM;;;;;;;;;;;;;;mDAiBa,MAAM;;;;;;;;0CAWf,MAAM;kCAId,MAAM;6CAIK,MAAM;iDAIF,MAAM;;;;;;;qCAUlB,MAAM;gCAIX,MAAM;sDAIgB,MAAM;6DAIC,MAAM;;;;;;;;;;qCAa9B,MAAM;gCAIX,MAAM;0CAII,MAAM;;uCAKT,MAAM;0CAEH,MAAM;;;;;;;;;;yCAYP,MAAM;8CAED,MAAM;;;;6CAMP,MAAM;;;gDAKH,MAAM;;;;;;;;;;;;;;;;qCAiBjB,MAAM;gCAIX,MAAM;;uCAKC,MAAM;0CAEH,MAAM;;;;;;;;;;CAW7B,CAAC"}
@@ -86,6 +86,9 @@ exports.REST_API = {
86
86
  RESET_TRAFFIC: (uuid) => `${exports.ROOT}/${CONTROLLERS.NODES_CONTROLLER}/${CONTROLLERS.NODES_ROUTES.ACTIONS.RESET_TRAFFIC(uuid)}`,
87
87
  REORDER: `${exports.ROOT}/${CONTROLLERS.NODES_CONTROLLER}/${CONTROLLERS.NODES_ROUTES.ACTIONS.REORDER}`,
88
88
  },
89
+ BULK_ACTIONS: {
90
+ PROFILE_MODIFICATION: `${exports.ROOT}/${CONTROLLERS.NODES_CONTROLLER}/${CONTROLLERS.NODES_ROUTES.BULK_ACTIONS.PROFILE_MODIFICATION}`,
91
+ },
89
92
  STATS: {
90
93
  USAGE_BY_RANGE: `${exports.ROOT}/${CONTROLLERS.NODES_CONTROLLER}/${CONTROLLERS.NODES_ROUTES.STATS.USAGE_BY_RANGE}`,
91
94
  USAGE_BY_RANGE_USER: (uuid) => `${exports.ROOT}/${CONTROLLERS.NODES_CONTROLLER}/${CONTROLLERS.NODES_ROUTES.STATS.USAGE_BY_RANGE_USER(uuid)}`,
@@ -0,0 +1,2 @@
1
+ export * from './profile-modification.command';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../commands/nodes/bulk-actions/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./profile-modification.command"), exports);
@@ -0,0 +1,51 @@
1
+ import { z } from 'zod';
2
+ export declare namespace BulkNodesProfileModificationCommand {
3
+ const url: "/api/nodes/bulk-actions/profile-modification";
4
+ const TSQ_url: "/api/nodes/bulk-actions/profile-modification";
5
+ const endpointDetails: import("../../../constants").EndpointDetails;
6
+ const RequestSchema: z.ZodObject<{
7
+ uuids: z.ZodArray<z.ZodString, "many">;
8
+ configProfile: z.ZodObject<{
9
+ activeConfigProfileUuid: z.ZodString;
10
+ activeInbounds: z.ZodArray<z.ZodString, "many">;
11
+ }, "strip", z.ZodTypeAny, {
12
+ activeConfigProfileUuid: string;
13
+ activeInbounds: string[];
14
+ }, {
15
+ activeConfigProfileUuid: string;
16
+ activeInbounds: string[];
17
+ }>;
18
+ }, "strip", z.ZodTypeAny, {
19
+ configProfile: {
20
+ activeConfigProfileUuid: string;
21
+ activeInbounds: string[];
22
+ };
23
+ uuids: string[];
24
+ }, {
25
+ configProfile: {
26
+ activeConfigProfileUuid: string;
27
+ activeInbounds: string[];
28
+ };
29
+ uuids: string[];
30
+ }>;
31
+ type Request = z.infer<typeof RequestSchema>;
32
+ const ResponseSchema: z.ZodObject<{
33
+ response: z.ZodObject<{
34
+ eventSent: z.ZodBoolean;
35
+ }, "strip", z.ZodTypeAny, {
36
+ eventSent: boolean;
37
+ }, {
38
+ eventSent: boolean;
39
+ }>;
40
+ }, "strip", z.ZodTypeAny, {
41
+ response: {
42
+ eventSent: boolean;
43
+ };
44
+ }, {
45
+ response: {
46
+ eventSent: boolean;
47
+ };
48
+ }>;
49
+ type Response = z.infer<typeof ResponseSchema>;
50
+ }
51
+ //# sourceMappingURL=profile-modification.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-modification.command.d.ts","sourceRoot":"","sources":["../../../../../commands/nodes/bulk-actions/profile-modification.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,yBAAiB,mCAAmC,CAAC;IAC1C,MAAM,GAAG,gDAAmD,CAAC;IAC7D,MAAM,OAAO,gDAAM,CAAC;IAEpB,MAAM,eAAe,8CAI3B,CAAC;IAEK,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;MAUxB,CAAC;IAEH,KAAY,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;IAE7C,MAAM,cAAc;;;;;;;;;;;;;;;;MAIzB,CAAC;IAEH,KAAY,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;CACzD"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BulkNodesProfileModificationCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const constants_1 = require("../../../constants");
6
+ const api_1 = require("../../../api");
7
+ var BulkNodesProfileModificationCommand;
8
+ (function (BulkNodesProfileModificationCommand) {
9
+ BulkNodesProfileModificationCommand.url = api_1.REST_API.NODES.BULK_ACTIONS.PROFILE_MODIFICATION;
10
+ BulkNodesProfileModificationCommand.TSQ_url = BulkNodesProfileModificationCommand.url;
11
+ BulkNodesProfileModificationCommand.endpointDetails = (0, constants_1.getEndpointDetails)(api_1.NODES_ROUTES.BULK_ACTIONS.PROFILE_MODIFICATION, 'post', 'Modify Inbounds & Profile for many nodes');
12
+ BulkNodesProfileModificationCommand.RequestSchema = zod_1.z.object({
13
+ uuids: zod_1.z.array(zod_1.z.string().uuid()).min(1, 'Must be at least 1 Node UUID'),
14
+ configProfile: zod_1.z.object({
15
+ activeConfigProfileUuid: zod_1.z.string().uuid(),
16
+ activeInbounds: zod_1.z
17
+ .array(zod_1.z.string().uuid(), {
18
+ invalid_type_error: 'Must be an array of UUIDs',
19
+ })
20
+ .min(1, 'Must be at least 1 inbound UUID'),
21
+ }),
22
+ });
23
+ BulkNodesProfileModificationCommand.ResponseSchema = zod_1.z.object({
24
+ response: zod_1.z.object({
25
+ eventSent: zod_1.z.boolean(),
26
+ }),
27
+ });
28
+ })(BulkNodesProfileModificationCommand || (exports.BulkNodesProfileModificationCommand = BulkNodesProfileModificationCommand = {}));
@@ -1,4 +1,5 @@
1
1
  export * from './actions';
2
+ export * from './bulk-actions';
2
3
  export * from './create.command';
3
4
  export * from './delete.command';
4
5
  export * from './get-all.command';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../commands/nodes/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../commands/nodes/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,kBAAkB,CAAC"}
@@ -15,6 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./actions"), exports);
18
+ __exportStar(require("./bulk-actions"), exports);
18
19
  __exportStar(require("./create.command"), exports);
19
20
  __exportStar(require("./delete.command"), exports);
20
21
  __exportStar(require("./get-all.command"), exports);
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NODES_ROUTES = exports.NODE_ACTIONS_ROUTE = exports.NODES_CONTROLLER = void 0;
4
4
  exports.NODES_CONTROLLER = 'nodes';
5
5
  exports.NODE_ACTIONS_ROUTE = 'actions';
6
+ const BULK_ACTIONS_ROUTE = 'bulk-actions';
6
7
  exports.NODES_ROUTES = {
7
8
  CREATE: '', // create
8
9
  GET: '', // get all nodes
@@ -17,6 +18,9 @@ exports.NODES_ROUTES = {
17
18
  RESTART_ALL: `${exports.NODE_ACTIONS_ROUTE}/restart-all`,
18
19
  REORDER: `${exports.NODE_ACTIONS_ROUTE}/reorder`,
19
20
  },
21
+ BULK_ACTIONS: {
22
+ PROFILE_MODIFICATION: `${BULK_ACTIONS_ROUTE}/profile-modification`,
23
+ },
20
24
  STATS: {
21
25
  USAGE_BY_RANGE: 'usage/range',
22
26
  USAGE_BY_RANGE_USER: (uuid) => `usage/${uuid}/users/range`,
@@ -86,6 +86,9 @@ exports.REST_API = {
86
86
  RESET_TRAFFIC: (uuid) => `${exports.ROOT}/${CONTROLLERS.NODES_CONTROLLER}/${CONTROLLERS.NODES_ROUTES.ACTIONS.RESET_TRAFFIC(uuid)}`,
87
87
  REORDER: `${exports.ROOT}/${CONTROLLERS.NODES_CONTROLLER}/${CONTROLLERS.NODES_ROUTES.ACTIONS.REORDER}`,
88
88
  },
89
+ BULK_ACTIONS: {
90
+ PROFILE_MODIFICATION: `${exports.ROOT}/${CONTROLLERS.NODES_CONTROLLER}/${CONTROLLERS.NODES_ROUTES.BULK_ACTIONS.PROFILE_MODIFICATION}`,
91
+ },
89
92
  STATS: {
90
93
  USAGE_BY_RANGE: `${exports.ROOT}/${CONTROLLERS.NODES_CONTROLLER}/${CONTROLLERS.NODES_ROUTES.STATS.USAGE_BY_RANGE}`,
91
94
  USAGE_BY_RANGE_USER: (uuid) => `${exports.ROOT}/${CONTROLLERS.NODES_CONTROLLER}/${CONTROLLERS.NODES_ROUTES.STATS.USAGE_BY_RANGE_USER(uuid)}`,
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./profile-modification.command"), exports);
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BulkNodesProfileModificationCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const constants_1 = require("../../../constants");
6
+ const api_1 = require("../../../api");
7
+ var BulkNodesProfileModificationCommand;
8
+ (function (BulkNodesProfileModificationCommand) {
9
+ BulkNodesProfileModificationCommand.url = api_1.REST_API.NODES.BULK_ACTIONS.PROFILE_MODIFICATION;
10
+ BulkNodesProfileModificationCommand.TSQ_url = BulkNodesProfileModificationCommand.url;
11
+ BulkNodesProfileModificationCommand.endpointDetails = (0, constants_1.getEndpointDetails)(api_1.NODES_ROUTES.BULK_ACTIONS.PROFILE_MODIFICATION, 'post', 'Modify Inbounds & Profile for many nodes');
12
+ BulkNodesProfileModificationCommand.RequestSchema = zod_1.z.object({
13
+ uuids: zod_1.z.array(zod_1.z.string().uuid()).min(1, 'Must be at least 1 Node UUID'),
14
+ configProfile: zod_1.z.object({
15
+ activeConfigProfileUuid: zod_1.z.string().uuid(),
16
+ activeInbounds: zod_1.z
17
+ .array(zod_1.z.string().uuid(), {
18
+ invalid_type_error: 'Must be an array of UUIDs',
19
+ })
20
+ .min(1, 'Must be at least 1 inbound UUID'),
21
+ }),
22
+ });
23
+ BulkNodesProfileModificationCommand.ResponseSchema = zod_1.z.object({
24
+ response: zod_1.z.object({
25
+ eventSent: zod_1.z.boolean(),
26
+ }),
27
+ });
28
+ })(BulkNodesProfileModificationCommand || (exports.BulkNodesProfileModificationCommand = BulkNodesProfileModificationCommand = {}));
@@ -15,6 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./actions"), exports);
18
+ __exportStar(require("./bulk-actions"), exports);
18
19
  __exportStar(require("./create.command"), exports);
19
20
  __exportStar(require("./delete.command"), exports);
20
21
  __exportStar(require("./get-all.command"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remnawave/backend-contract",
3
- "version": "2.3.24",
3
+ "version": "2.3.26",
4
4
  "public": true,
5
5
  "license": "AGPL-3.0-only",
6
6
  "description": "A contract library for Remnawave Backend. It can be used in backend and frontend.",