@sonoransoftware/sonoran.js 1.0.49 → 1.0.51
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/dist/constants.d.ts +43 -0
- package/dist/libs/rest/src/lib/REST.js +34 -0
- package/dist/libs/rest/src/lib/utils/constants.d.ts +37 -3
- package/dist/libs/rest/src/lib/utils/constants.js +36 -0
- package/dist/managers/CADManager.js +8 -1
- package/dist/managers/CMSManager.d.ts +24 -0
- package/dist/managers/CMSManager.js +179 -0
- package/package.json +1 -1
- package/readme.md +54 -1
- package/src/constants.ts +50 -0
- package/src/libs/rest/src/lib/REST.ts +34 -0
- package/src/libs/rest/src/lib/utils/constants.ts +71 -3
- package/src/managers/CADManager.ts +8 -1
- package/src/managers/CMSManager.ts +176 -0
package/dist/constants.d.ts
CHANGED
|
@@ -362,6 +362,49 @@ export interface CMSChangeFormStagePromiseResult {
|
|
|
362
362
|
reason?: string;
|
|
363
363
|
data?: unknown;
|
|
364
364
|
}
|
|
365
|
+
export interface CMSGetFormLockStatusPromiseResult {
|
|
366
|
+
success: boolean;
|
|
367
|
+
reason?: string;
|
|
368
|
+
locked?: boolean;
|
|
369
|
+
}
|
|
370
|
+
export interface CMSSetFormLockStatusPromiseResult {
|
|
371
|
+
success: boolean;
|
|
372
|
+
reason?: string;
|
|
373
|
+
data?: unknown;
|
|
374
|
+
}
|
|
375
|
+
export interface CMSCurrentSession {
|
|
376
|
+
id: string;
|
|
377
|
+
sysStatus: boolean;
|
|
378
|
+
community: string;
|
|
379
|
+
serverId: number;
|
|
380
|
+
startedBy: string;
|
|
381
|
+
startedAt: string;
|
|
382
|
+
endedBy: string | null;
|
|
383
|
+
endedAt: string | null;
|
|
384
|
+
cancelledBy: string | null;
|
|
385
|
+
stats: Record<string, unknown>;
|
|
386
|
+
metadata: Record<string, unknown>;
|
|
387
|
+
}
|
|
388
|
+
export interface CMSGetCurrentSessionPromiseResult {
|
|
389
|
+
success: boolean;
|
|
390
|
+
reason?: string;
|
|
391
|
+
data?: CMSCurrentSession | null;
|
|
392
|
+
}
|
|
393
|
+
export interface CMSStartSessionPromiseResult {
|
|
394
|
+
success: boolean;
|
|
395
|
+
reason?: string;
|
|
396
|
+
data?: CMSCurrentSession | null;
|
|
397
|
+
}
|
|
398
|
+
export interface CMSStopSessionPromiseResult {
|
|
399
|
+
success: boolean;
|
|
400
|
+
reason?: string;
|
|
401
|
+
data?: CMSCurrentSession | null;
|
|
402
|
+
}
|
|
403
|
+
export interface CMSCancelSessionPromiseResult {
|
|
404
|
+
success: boolean;
|
|
405
|
+
reason?: string;
|
|
406
|
+
data?: CMSCurrentSession | null;
|
|
407
|
+
}
|
|
365
408
|
export interface CMSSetGameServerStruct {
|
|
366
409
|
id?: number;
|
|
367
410
|
name: string;
|
|
@@ -79,6 +79,29 @@ class REST extends events_1.EventEmitter {
|
|
|
79
79
|
serverId: args[0]
|
|
80
80
|
};
|
|
81
81
|
}
|
|
82
|
+
case 'GET_CURRENT_SESSION': {
|
|
83
|
+
return {
|
|
84
|
+
serverId: args[0]
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
case 'START_SESSION': {
|
|
88
|
+
return {
|
|
89
|
+
serverId: args[0],
|
|
90
|
+
accId: args[1],
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
case 'STOP_SESSION': {
|
|
94
|
+
return {
|
|
95
|
+
serverId: args[0],
|
|
96
|
+
accId: args[1],
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
case 'CANCEL_SESSION': {
|
|
100
|
+
return {
|
|
101
|
+
serverId: args[0],
|
|
102
|
+
accId: args[1],
|
|
103
|
+
};
|
|
104
|
+
}
|
|
82
105
|
case 'SET_GAME_SERVERS': {
|
|
83
106
|
return (_a = args[0]) !== null && _a !== void 0 ? _a : [];
|
|
84
107
|
}
|
|
@@ -295,6 +318,17 @@ class REST extends events_1.EventEmitter {
|
|
|
295
318
|
take: args[2],
|
|
296
319
|
};
|
|
297
320
|
}
|
|
321
|
+
case 'GET_FORM_LOCK_STATUS': {
|
|
322
|
+
return {
|
|
323
|
+
templateId: args[0],
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
case 'SET_FORM_LOCK_STATUS': {
|
|
327
|
+
return {
|
|
328
|
+
templateId: args[0],
|
|
329
|
+
state: args[1],
|
|
330
|
+
};
|
|
331
|
+
}
|
|
298
332
|
case 'CHANGE_FORM_STAGE': {
|
|
299
333
|
return {
|
|
300
334
|
accId: args[0],
|
|
@@ -38,7 +38,7 @@ export declare const CommunitiesCMSAPITypes: APITypeData[];
|
|
|
38
38
|
export declare const ERLCMSAPITypes: APITypeData[];
|
|
39
39
|
export declare const RadioAPITypes: APITypeData[];
|
|
40
40
|
export declare const AllAPITypes: AllAPITypeData[];
|
|
41
|
-
export type AllAPITypesType = 'GET_SERVERS' | 'SET_SERVERS' | 'GET_VERSION' | 'SET_PENAL_CODES' | 'SET_API_ID' | 'GET_TEMPLATES' | 'NEW_RECORD' | 'EDIT_RECORD' | 'REMOVE_RECORD' | 'LOOKUP_INT' | 'LOOKUP' | 'GET_ACCOUNT' | 'CHECK_APIID' | 'APPLY_PERMISSION_KEY' | 'SET_ACCOUNT_PERMISSIONS' | 'BAN_USER' | 'VERIFY_SECRET' | 'AUTH_STREETSIGNS' | 'SET_POSTALS' | 'SEND_PHOTO' | 'SET_CLOCK' | 'JOIN_COMMUNITY' | 'LEAVE_COMMUNITY' | 'GET_CHARACTERS' | 'NEW_CHARACTER' | 'EDIT_CHARACTER' | 'REMOVE_CHARACTER' | 'GET_IDENTIFIERS' | 'MODIFY_IDENTIFIER' | 'SET_IDENTIFIER' | 'UNIT_PANIC' | 'UNIT_STATUS' | 'GET_BLIPS' | 'ADD_BLIP' | 'MODIFY_BLIP' | 'REMOVE_BLIP' | '911_CALL' | 'REMOVE_911' | 'GET_CALLS' | 'GET_MY_CALL' | 'GET_ACTIVE_UNITS' | 'KICK_UNIT' | 'NEW_DISPATCH' | 'ATTACH_UNIT' | 'DETACH_UNIT' | 'SET_CALL_POSTAL' | 'SET_CALL_PRIMARY' | 'ADD_CALL_NOTE' | 'CLOSE_CALL' | 'UNIT_LOCATION' | 'SET_STREETSIGN_CONFIG' | 'UPDATE_STREETSIGN' | 'GET_COM_ACCOUNT' | 'GET_DEPARTMENTS' | 'GET_SUB_VERSION' | 'GET_CURRENT_CLOCK_IN' | 'GET_CLOCKIN_TYPES' | 'GET_LATEST_ACTIVITY' | 'GET_ACCOUNTS' | 'GET_PROFILE_FIELDS' | 'CHECK_COM_APIID' | 'VERIFY_WHITELIST' | 'CLOCK_IN_OUT' | 'FULL_WHITELIST' | 'GET_ACCOUNT_RANKS' | 'SET_ACCOUNT_RANKS' | 'RSVP' | 'CHANGE_FORM_STAGE' | 'GET_FORM_TEMPLATE_SUBMISSIONS' | 'KICK_ACCOUNT' | 'BAN_ACCOUNT' | 'LOOKUP' | 'EDIT_ACC_PROFLIE_FIELDS' | 'SET_ACCOUNT_NAME' | 'FORCE_SYNC' | 'TRIGGER_PROMOTION_FLOWS' | 'GET_PROMOTION_FLOWS' | 'SET_GAME_SERVERS' | 'ERLC_GET_ONLINE_PLAYERS' | 'ERLC_GET_PLAYER_QUEUE' | 'ERLC_ADD_NEW_RECORD' | 'ERLC_EXECUTE_COMMAND' | 'RADIO_GET_COMMUNITY_CHANNELS' | 'RADIO_GET_CONNECTED_USERS' | 'RADIO_GET_CONNECTED_USER' | 'RADIO_SET_USER_CHANNELS' | 'RADIO_SET_USER_DISPLAY_NAME' | 'RADIO_GET_SERVER_SUBSCRIPTION_FROM_IP' | 'RADIO_SET_SERVER_IP' | 'RADIO_SET_IN_GAME_SPEAKER_LOCATIONS' | 'PLAY_TONE';
|
|
41
|
+
export type AllAPITypesType = 'GET_SERVERS' | 'SET_SERVERS' | 'GET_VERSION' | 'SET_PENAL_CODES' | 'SET_API_ID' | 'GET_TEMPLATES' | 'NEW_RECORD' | 'EDIT_RECORD' | 'REMOVE_RECORD' | 'LOOKUP_INT' | 'LOOKUP' | 'GET_ACCOUNT' | 'CHECK_APIID' | 'APPLY_PERMISSION_KEY' | 'SET_ACCOUNT_PERMISSIONS' | 'BAN_USER' | 'VERIFY_SECRET' | 'AUTH_STREETSIGNS' | 'SET_POSTALS' | 'SEND_PHOTO' | 'SET_CLOCK' | 'JOIN_COMMUNITY' | 'LEAVE_COMMUNITY' | 'GET_CHARACTERS' | 'NEW_CHARACTER' | 'EDIT_CHARACTER' | 'REMOVE_CHARACTER' | 'GET_IDENTIFIERS' | 'MODIFY_IDENTIFIER' | 'SET_IDENTIFIER' | 'UNIT_PANIC' | 'UNIT_STATUS' | 'GET_BLIPS' | 'ADD_BLIP' | 'MODIFY_BLIP' | 'REMOVE_BLIP' | '911_CALL' | 'REMOVE_911' | 'GET_CALLS' | 'GET_MY_CALL' | 'GET_ACTIVE_UNITS' | 'KICK_UNIT' | 'NEW_DISPATCH' | 'ATTACH_UNIT' | 'DETACH_UNIT' | 'SET_CALL_POSTAL' | 'SET_CALL_PRIMARY' | 'ADD_CALL_NOTE' | 'CLOSE_CALL' | 'UNIT_LOCATION' | 'SET_STREETSIGN_CONFIG' | 'UPDATE_STREETSIGN' | 'GET_COM_ACCOUNT' | 'GET_DEPARTMENTS' | 'GET_SUB_VERSION' | 'GET_CURRENT_CLOCK_IN' | 'GET_CLOCKIN_TYPES' | 'GET_LATEST_ACTIVITY' | 'GET_ACCOUNTS' | 'GET_PROFILE_FIELDS' | 'CHECK_COM_APIID' | 'VERIFY_WHITELIST' | 'CLOCK_IN_OUT' | 'FULL_WHITELIST' | 'GET_ACCOUNT_RANKS' | 'SET_ACCOUNT_RANKS' | 'RSVP' | 'CHANGE_FORM_STAGE' | 'GET_FORM_TEMPLATE_SUBMISSIONS' | 'GET_FORM_LOCK_STATUS' | 'SET_FORM_LOCK_STATUS' | 'GET_CURRENT_SESSION' | 'START_SESSION' | 'STOP_SESSION' | 'CANCEL_SESSION' | 'KICK_ACCOUNT' | 'BAN_ACCOUNT' | 'LOOKUP' | 'EDIT_ACC_PROFLIE_FIELDS' | 'SET_ACCOUNT_NAME' | 'FORCE_SYNC' | 'TRIGGER_PROMOTION_FLOWS' | 'GET_PROMOTION_FLOWS' | 'SET_GAME_SERVERS' | 'ERLC_GET_ONLINE_PLAYERS' | 'ERLC_GET_PLAYER_QUEUE' | 'ERLC_ADD_NEW_RECORD' | 'ERLC_EXECUTE_COMMAND' | 'RADIO_GET_COMMUNITY_CHANNELS' | 'RADIO_GET_CONNECTED_USERS' | 'RADIO_GET_CONNECTED_USER' | 'RADIO_SET_USER_CHANNELS' | 'RADIO_SET_USER_DISPLAY_NAME' | 'RADIO_GET_SERVER_SUBSCRIPTION_FROM_IP' | 'RADIO_SET_SERVER_IP' | 'RADIO_SET_IN_GAME_SPEAKER_LOCATIONS' | 'PLAY_TONE';
|
|
42
42
|
export interface CMSServerAPIStruct {
|
|
43
43
|
id: number;
|
|
44
44
|
name: string;
|
|
@@ -272,7 +272,7 @@ export declare enum CADDispatchStatusEnums {
|
|
|
272
272
|
Active = 1,
|
|
273
273
|
Closed = 2
|
|
274
274
|
}
|
|
275
|
-
|
|
275
|
+
interface CADNewDispatchBaseStruct {
|
|
276
276
|
serverId: number;
|
|
277
277
|
origin: CADDispatchOriginEnums;
|
|
278
278
|
status: CADDispatchStatusEnums;
|
|
@@ -286,8 +286,14 @@ export interface CADNewDispatchStruct {
|
|
|
286
286
|
trackPrimary: boolean;
|
|
287
287
|
description: string;
|
|
288
288
|
metaData: Record<string, string>;
|
|
289
|
-
units: string[];
|
|
290
289
|
}
|
|
290
|
+
export type CADNewDispatchStruct = (CADNewDispatchBaseStruct & {
|
|
291
|
+
units: string[];
|
|
292
|
+
accounts?: string[];
|
|
293
|
+
}) | (CADNewDispatchBaseStruct & {
|
|
294
|
+
units?: string[];
|
|
295
|
+
accounts: string[];
|
|
296
|
+
});
|
|
291
297
|
export interface CADStreetSignStruct {
|
|
292
298
|
id: number;
|
|
293
299
|
label: string;
|
|
@@ -550,6 +556,21 @@ export interface RESTTypedAPIDataStructs {
|
|
|
550
556
|
FULL_WHITELIST: [
|
|
551
557
|
serverId?: number
|
|
552
558
|
];
|
|
559
|
+
GET_CURRENT_SESSION: [
|
|
560
|
+
serverId: number
|
|
561
|
+
];
|
|
562
|
+
STOP_SESSION: [
|
|
563
|
+
serverId: number,
|
|
564
|
+
accId?: string
|
|
565
|
+
];
|
|
566
|
+
START_SESSION: [
|
|
567
|
+
serverId: number,
|
|
568
|
+
accId?: string
|
|
569
|
+
];
|
|
570
|
+
CANCEL_SESSION: [
|
|
571
|
+
serverId: number,
|
|
572
|
+
accId?: string
|
|
573
|
+
];
|
|
553
574
|
RSVP: [
|
|
554
575
|
eventId: string,
|
|
555
576
|
apiId: string | undefined,
|
|
@@ -579,6 +600,13 @@ export interface RESTTypedAPIDataStructs {
|
|
|
579
600
|
skip?: number,
|
|
580
601
|
take?: number
|
|
581
602
|
];
|
|
603
|
+
GET_FORM_LOCK_STATUS: [
|
|
604
|
+
templateId: number
|
|
605
|
+
];
|
|
606
|
+
SET_FORM_LOCK_STATUS: [
|
|
607
|
+
templateId: number,
|
|
608
|
+
state: boolean
|
|
609
|
+
];
|
|
582
610
|
BAN_ACCOUNT: [
|
|
583
611
|
apiId: string | undefined,
|
|
584
612
|
username: string | undefined,
|
|
@@ -656,6 +684,11 @@ export type PossibleRequestData = undefined | {
|
|
|
656
684
|
id: number;
|
|
657
685
|
} | {
|
|
658
686
|
recordTypeId?: number;
|
|
687
|
+
} | {
|
|
688
|
+
templateId: number;
|
|
689
|
+
} | {
|
|
690
|
+
templateId: number;
|
|
691
|
+
state: boolean;
|
|
659
692
|
} | {
|
|
660
693
|
apiId?: string;
|
|
661
694
|
username?: string;
|
|
@@ -768,3 +801,4 @@ export type PossibleRequestData = undefined | {
|
|
|
768
801
|
add?: string[];
|
|
769
802
|
remove?: string[];
|
|
770
803
|
};
|
|
804
|
+
export {};
|
|
@@ -479,6 +479,30 @@ exports.ServersCMSAPITypes = [
|
|
|
479
479
|
path: 'servers/full_whitelist',
|
|
480
480
|
method: 'POST',
|
|
481
481
|
minVersion: 3
|
|
482
|
+
},
|
|
483
|
+
{
|
|
484
|
+
type: 'GET_CURRENT_SESSION',
|
|
485
|
+
path: 'servers/get_current_session',
|
|
486
|
+
method: 'POST',
|
|
487
|
+
minVersion: 0
|
|
488
|
+
},
|
|
489
|
+
{
|
|
490
|
+
type: 'START_SESSION',
|
|
491
|
+
path: 'servers/start_session',
|
|
492
|
+
method: 'POST',
|
|
493
|
+
minVersion: 0
|
|
494
|
+
},
|
|
495
|
+
{
|
|
496
|
+
type: 'STOP_SESSION',
|
|
497
|
+
path: 'servers/stop_session',
|
|
498
|
+
method: 'POST',
|
|
499
|
+
minVersion: 0
|
|
500
|
+
},
|
|
501
|
+
{
|
|
502
|
+
type: 'CANCEL_SESSION',
|
|
503
|
+
path: 'servers/cancel_session',
|
|
504
|
+
method: 'POST',
|
|
505
|
+
minVersion: 0
|
|
482
506
|
}
|
|
483
507
|
];
|
|
484
508
|
exports.EventsCMSAPITypes = [
|
|
@@ -501,6 +525,18 @@ exports.FormsCMSAPITypes = [
|
|
|
501
525
|
path: 'forms/get_template_submissions',
|
|
502
526
|
method: 'POST',
|
|
503
527
|
minVersion: 0
|
|
528
|
+
},
|
|
529
|
+
{
|
|
530
|
+
type: 'GET_FORM_LOCK_STATUS',
|
|
531
|
+
path: 'forms/get_form_lock_status',
|
|
532
|
+
method: 'POST',
|
|
533
|
+
minVersion: 0
|
|
534
|
+
},
|
|
535
|
+
{
|
|
536
|
+
type: 'SET_FORM_LOCK_STATUS',
|
|
537
|
+
path: 'forms/set_form_lock_status',
|
|
538
|
+
method: 'POST',
|
|
539
|
+
minVersion: 0
|
|
504
540
|
}
|
|
505
541
|
];
|
|
506
542
|
exports.CommunitiesCMSAPITypes = [
|
|
@@ -513,7 +513,14 @@ class CADManager extends BaseManager_1.BaseManager {
|
|
|
513
513
|
* Creates a new dispatch call.
|
|
514
514
|
*/
|
|
515
515
|
async createDispatch(data) {
|
|
516
|
-
|
|
516
|
+
const hasUnits = Array.isArray(data.units);
|
|
517
|
+
const hasAccounts = Array.isArray(data.accounts);
|
|
518
|
+
const payload = {
|
|
519
|
+
...data,
|
|
520
|
+
...(hasUnits ? { units: data.units } : {}),
|
|
521
|
+
...(hasAccounts ? { accounts: data.accounts } : {})
|
|
522
|
+
};
|
|
523
|
+
return this.executeCadRequest('NEW_DISPATCH', payload);
|
|
517
524
|
}
|
|
518
525
|
async attachUnits(serverIdOrParams, callId, unitsOrAccount) {
|
|
519
526
|
let payload;
|
|
@@ -210,6 +210,14 @@ export declare class CMSManager extends BaseManager {
|
|
|
210
210
|
discord?: string;
|
|
211
211
|
uniqueId: number;
|
|
212
212
|
}): Promise<globalTypes.CMSChangeFormStagePromiseResult>;
|
|
213
|
+
/**
|
|
214
|
+
* Retrieves the lock status for a form template.
|
|
215
|
+
*/
|
|
216
|
+
getFormLockStatus(templateId: number): Promise<globalTypes.CMSGetFormLockStatusPromiseResult>;
|
|
217
|
+
/**
|
|
218
|
+
* Sets the lock status for a form template.
|
|
219
|
+
*/
|
|
220
|
+
setFormLockStatus(templateId: number, state: boolean): Promise<globalTypes.CMSSetFormLockStatusPromiseResult>;
|
|
213
221
|
/**
|
|
214
222
|
* Retrieves submissions for a specific form template.
|
|
215
223
|
*/
|
|
@@ -263,6 +271,22 @@ export declare class CMSManager extends BaseManager {
|
|
|
263
271
|
* Retrieves configured profile fields for the community.
|
|
264
272
|
*/
|
|
265
273
|
getProfileFields(): Promise<globalTypes.CMSGetProfileFieldsPromiseResult>;
|
|
274
|
+
/**
|
|
275
|
+
* Retrieves the current active session for the specified server, if present.
|
|
276
|
+
*/
|
|
277
|
+
getCurrentSession(serverId?: number): Promise<globalTypes.CMSGetCurrentSessionPromiseResult>;
|
|
278
|
+
/**
|
|
279
|
+
* Starts a new CMS session for the specified server.
|
|
280
|
+
*/
|
|
281
|
+
startSession(serverId?: number, accId?: string): Promise<globalTypes.CMSStartSessionPromiseResult>;
|
|
282
|
+
/**
|
|
283
|
+
* Stops the current CMS session for the specified server.
|
|
284
|
+
*/
|
|
285
|
+
stopSession(serverId?: number, accId?: string): Promise<globalTypes.CMSStopSessionPromiseResult>;
|
|
286
|
+
/**
|
|
287
|
+
* Cancels the current CMS session for the specified server.
|
|
288
|
+
*/
|
|
289
|
+
cancelSession(serverId?: number, accId?: string): Promise<globalTypes.CMSCancelSessionPromiseResult>;
|
|
266
290
|
/**
|
|
267
291
|
* Gets the current ERLC player queue count for the provided roblox join code.
|
|
268
292
|
* @param {string} robloxJoinCode The roblox join code to get the player queue size for.
|
|
@@ -518,6 +518,80 @@ class CMSManager extends BaseManager_1.BaseManager {
|
|
|
518
518
|
}
|
|
519
519
|
});
|
|
520
520
|
}
|
|
521
|
+
/**
|
|
522
|
+
* Retrieves the lock status for a form template.
|
|
523
|
+
*/
|
|
524
|
+
async getFormLockStatus(templateId) {
|
|
525
|
+
if (templateId === undefined || Number.isNaN(Number(templateId))) {
|
|
526
|
+
throw new Error('templateId is required to get form lock status.');
|
|
527
|
+
}
|
|
528
|
+
return new Promise(async (resolve, reject) => {
|
|
529
|
+
var _a;
|
|
530
|
+
try {
|
|
531
|
+
const response = await ((_a = this.rest) === null || _a === void 0 ? void 0 : _a.request('GET_FORM_LOCK_STATUS', templateId));
|
|
532
|
+
if (typeof response === 'boolean') {
|
|
533
|
+
resolve({ success: true, locked: response });
|
|
534
|
+
return;
|
|
535
|
+
}
|
|
536
|
+
if (typeof response === 'string') {
|
|
537
|
+
const normalized = response.toLowerCase();
|
|
538
|
+
if (normalized === 'locked') {
|
|
539
|
+
resolve({ success: true, locked: true });
|
|
540
|
+
return;
|
|
541
|
+
}
|
|
542
|
+
if (normalized === 'unlocked') {
|
|
543
|
+
resolve({ success: true, locked: false });
|
|
544
|
+
return;
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
if (response && typeof response === 'object') {
|
|
548
|
+
if ('locked' in response) {
|
|
549
|
+
resolve({ success: true, locked: Boolean(response.locked) });
|
|
550
|
+
return;
|
|
551
|
+
}
|
|
552
|
+
if ('isLocked' in response) {
|
|
553
|
+
resolve({ success: true, locked: Boolean(response.isLocked) });
|
|
554
|
+
return;
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
resolve({ success: false, reason: response });
|
|
558
|
+
}
|
|
559
|
+
catch (err) {
|
|
560
|
+
if (err instanceof src_1.APIError) {
|
|
561
|
+
resolve({ success: false, reason: err.response });
|
|
562
|
+
}
|
|
563
|
+
else {
|
|
564
|
+
reject(err);
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
});
|
|
568
|
+
}
|
|
569
|
+
/**
|
|
570
|
+
* Sets the lock status for a form template.
|
|
571
|
+
*/
|
|
572
|
+
async setFormLockStatus(templateId, state) {
|
|
573
|
+
if (templateId === undefined || Number.isNaN(Number(templateId))) {
|
|
574
|
+
throw new Error('templateId is required to set form lock status.');
|
|
575
|
+
}
|
|
576
|
+
if (typeof state !== 'boolean') {
|
|
577
|
+
throw new Error('state must be a boolean to set form lock status.');
|
|
578
|
+
}
|
|
579
|
+
return new Promise(async (resolve, reject) => {
|
|
580
|
+
var _a;
|
|
581
|
+
try {
|
|
582
|
+
const response = await ((_a = this.rest) === null || _a === void 0 ? void 0 : _a.request('SET_FORM_LOCK_STATUS', templateId, state));
|
|
583
|
+
resolve({ success: true, data: response });
|
|
584
|
+
}
|
|
585
|
+
catch (err) {
|
|
586
|
+
if (err instanceof src_1.APIError) {
|
|
587
|
+
resolve({ success: false, reason: err.response });
|
|
588
|
+
}
|
|
589
|
+
else {
|
|
590
|
+
reject(err);
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
});
|
|
594
|
+
}
|
|
521
595
|
/**
|
|
522
596
|
* Retrieves submissions for a specific form template.
|
|
523
597
|
*/
|
|
@@ -657,6 +731,111 @@ class CMSManager extends BaseManager_1.BaseManager {
|
|
|
657
731
|
}
|
|
658
732
|
});
|
|
659
733
|
}
|
|
734
|
+
/**
|
|
735
|
+
* Retrieves the current active session for the specified server, if present.
|
|
736
|
+
*/
|
|
737
|
+
async getCurrentSession(serverId) {
|
|
738
|
+
const resolvedServerId = serverId !== null && serverId !== void 0 ? serverId : this.instance.cmsDefaultServerId;
|
|
739
|
+
if (resolvedServerId === undefined || Number.isNaN(Number(resolvedServerId))) {
|
|
740
|
+
throw new Error('serverId is required to get current session.');
|
|
741
|
+
}
|
|
742
|
+
return new Promise(async (resolve, reject) => {
|
|
743
|
+
var _a;
|
|
744
|
+
try {
|
|
745
|
+
const response = await ((_a = this.rest) === null || _a === void 0 ? void 0 : _a.request('GET_CURRENT_SESSION', resolvedServerId));
|
|
746
|
+
resolve({ success: true, data: response !== null && response !== void 0 ? response : null });
|
|
747
|
+
}
|
|
748
|
+
catch (err) {
|
|
749
|
+
if (err instanceof src_1.APIError) {
|
|
750
|
+
resolve({ success: false, reason: err.response });
|
|
751
|
+
}
|
|
752
|
+
else {
|
|
753
|
+
reject(err);
|
|
754
|
+
}
|
|
755
|
+
}
|
|
756
|
+
});
|
|
757
|
+
}
|
|
758
|
+
/**
|
|
759
|
+
* Starts a new CMS session for the specified server.
|
|
760
|
+
*/
|
|
761
|
+
async startSession(serverId, accId) {
|
|
762
|
+
const resolvedServerId = serverId !== null && serverId !== void 0 ? serverId : this.instance.cmsDefaultServerId;
|
|
763
|
+
if (resolvedServerId === undefined || Number.isNaN(Number(resolvedServerId))) {
|
|
764
|
+
throw new Error('serverId is required to start a session.');
|
|
765
|
+
}
|
|
766
|
+
if (!accId) {
|
|
767
|
+
throw new Error('accId is required to start a session.');
|
|
768
|
+
}
|
|
769
|
+
return new Promise(async (resolve, reject) => {
|
|
770
|
+
var _a;
|
|
771
|
+
try {
|
|
772
|
+
const response = await ((_a = this.rest) === null || _a === void 0 ? void 0 : _a.request('START_SESSION', resolvedServerId, accId));
|
|
773
|
+
resolve({ success: true, data: response !== null && response !== void 0 ? response : null });
|
|
774
|
+
}
|
|
775
|
+
catch (err) {
|
|
776
|
+
if (err instanceof src_1.APIError) {
|
|
777
|
+
resolve({ success: false, reason: err.response });
|
|
778
|
+
}
|
|
779
|
+
else {
|
|
780
|
+
reject(err);
|
|
781
|
+
}
|
|
782
|
+
}
|
|
783
|
+
});
|
|
784
|
+
}
|
|
785
|
+
/**
|
|
786
|
+
* Stops the current CMS session for the specified server.
|
|
787
|
+
*/
|
|
788
|
+
async stopSession(serverId, accId) {
|
|
789
|
+
const resolvedServerId = serverId !== null && serverId !== void 0 ? serverId : this.instance.cmsDefaultServerId;
|
|
790
|
+
if (resolvedServerId === undefined || Number.isNaN(Number(resolvedServerId))) {
|
|
791
|
+
throw new Error('serverId is required to stop a session.');
|
|
792
|
+
}
|
|
793
|
+
if (!accId) {
|
|
794
|
+
throw new Error('accId is required to stop a session.');
|
|
795
|
+
}
|
|
796
|
+
return new Promise(async (resolve, reject) => {
|
|
797
|
+
var _a;
|
|
798
|
+
try {
|
|
799
|
+
const response = await ((_a = this.rest) === null || _a === void 0 ? void 0 : _a.request('STOP_SESSION', resolvedServerId, accId));
|
|
800
|
+
resolve({ success: true, data: response !== null && response !== void 0 ? response : null });
|
|
801
|
+
}
|
|
802
|
+
catch (err) {
|
|
803
|
+
if (err instanceof src_1.APIError) {
|
|
804
|
+
resolve({ success: false, reason: err.response });
|
|
805
|
+
}
|
|
806
|
+
else {
|
|
807
|
+
reject(err);
|
|
808
|
+
}
|
|
809
|
+
}
|
|
810
|
+
});
|
|
811
|
+
}
|
|
812
|
+
/**
|
|
813
|
+
* Cancels the current CMS session for the specified server.
|
|
814
|
+
*/
|
|
815
|
+
async cancelSession(serverId, accId) {
|
|
816
|
+
const resolvedServerId = serverId !== null && serverId !== void 0 ? serverId : this.instance.cmsDefaultServerId;
|
|
817
|
+
if (resolvedServerId === undefined || Number.isNaN(Number(resolvedServerId))) {
|
|
818
|
+
throw new Error('serverId is required to cancel a session.');
|
|
819
|
+
}
|
|
820
|
+
if (!accId) {
|
|
821
|
+
throw new Error('accId is required to cancel a session.');
|
|
822
|
+
}
|
|
823
|
+
return new Promise(async (resolve, reject) => {
|
|
824
|
+
var _a;
|
|
825
|
+
try {
|
|
826
|
+
const response = await ((_a = this.rest) === null || _a === void 0 ? void 0 : _a.request('CANCEL_SESSION', resolvedServerId, accId));
|
|
827
|
+
resolve({ success: true, data: response !== null && response !== void 0 ? response : null });
|
|
828
|
+
}
|
|
829
|
+
catch (err) {
|
|
830
|
+
if (err instanceof src_1.APIError) {
|
|
831
|
+
resolve({ success: false, reason: err.response });
|
|
832
|
+
}
|
|
833
|
+
else {
|
|
834
|
+
reject(err);
|
|
835
|
+
}
|
|
836
|
+
}
|
|
837
|
+
});
|
|
838
|
+
}
|
|
660
839
|
/**
|
|
661
840
|
* Gets the current ERLC player queue count for the provided roblox join code.
|
|
662
841
|
* @param {string} robloxJoinCode The roblox join code to get the player queue size for.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sonoransoftware/sonoran.js",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.51",
|
|
4
4
|
"description": "Sonoran.js is a library that allows you to interact with the Sonoran CAD and Sonoran CMS API. Based off of and utilizes several Discord.js library techniques for ease of use.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
package/readme.md
CHANGED
|
@@ -128,7 +128,7 @@ await instance.cad.setUnitPanic({ account: '91de0ce8-c571-11e9-9714-5600023b2434
|
|
|
128
128
|
- **`create911Call(details)`** / **`remove911Call(callId)`**
|
|
129
129
|
- **`getCalls(options)`**
|
|
130
130
|
- **`getMyCall({ account })`**
|
|
131
|
-
- **`createDispatch(data)`**
|
|
131
|
+
- **`createDispatch(data)`** - accepts either `units` (API IDs) or `accounts` (account UUIDs) as arrays.
|
|
132
132
|
- **`attachUnits(serverId, callId, unitsOrAccount)`** / **`detachUnits(serverId, unitsOrAccount)`**
|
|
133
133
|
- **`setCallPostal(serverId, callId, postal)`** / **`setCallPrimary(serverId, callId, primary, trackPrimary)`**
|
|
134
134
|
- **`addCallNote({ serverId, callId, note, label? })`**
|
|
@@ -151,6 +151,22 @@ const dispatch = await instance.cad.createDispatch({
|
|
|
151
151
|
metaData: {},
|
|
152
152
|
units: ['unit-1']
|
|
153
153
|
});
|
|
154
|
+
const dispatchByAccount = await instance.cad.createDispatch({
|
|
155
|
+
serverId: 1,
|
|
156
|
+
origin: Sonoran.CADDispatchOriginEnums.WalkUp,
|
|
157
|
+
status: Sonoran.CADDispatchStatusEnums.Active,
|
|
158
|
+
priority: 2,
|
|
159
|
+
block: '456',
|
|
160
|
+
address: '2nd St',
|
|
161
|
+
postal: '200',
|
|
162
|
+
title: 'Suspicious Person',
|
|
163
|
+
code: 'SP',
|
|
164
|
+
primary: 43,
|
|
165
|
+
trackPrimary: false,
|
|
166
|
+
description: 'Individual loitering near storefront',
|
|
167
|
+
metaData: {},
|
|
168
|
+
accounts: ['91de0ce8-c571-11e9-9714-5600023b2434']
|
|
169
|
+
});
|
|
154
170
|
await instance.cad.attachUnits(1, 1001, ['unit-2']);
|
|
155
171
|
// Or attach a single unit by account UUID
|
|
156
172
|
await instance.cad.attachUnits({ serverId: 1, callId: 1001, account: '91de0ce8-c571-11e9-9714-5600023b2434' });
|
|
@@ -388,6 +404,19 @@ Retrieves form submissions with optional pagination.
|
|
|
388
404
|
const submissions = await instance.cms.getFormSubmissions(42, { skip: 0, take: 25 });
|
|
389
405
|
```
|
|
390
406
|
|
|
407
|
+
### getFormLockStatus(templateId)
|
|
408
|
+
Returns whether a form template is locked.
|
|
409
|
+
```js
|
|
410
|
+
const lockStatus = await instance.cms.getFormLockStatus(42);
|
|
411
|
+
// lockStatus => { success: true, locked: true } when locked
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
### setFormLockStatus(templateId, state)
|
|
415
|
+
Sets the lock state for a form template.
|
|
416
|
+
```js
|
|
417
|
+
const result = await instance.cms.setFormLockStatus(42, true); // lock form
|
|
418
|
+
```
|
|
419
|
+
|
|
391
420
|
### changeFormStage(params)
|
|
392
421
|
Moves a form to the specified stage for an account.
|
|
393
422
|
```js
|
|
@@ -448,6 +477,30 @@ await instance.cms.servers?.setGameServers([
|
|
|
448
477
|
]);
|
|
449
478
|
```
|
|
450
479
|
|
|
480
|
+
### getCurrentSession(serverId?)
|
|
481
|
+
Retrieves the active CMS session for a server (if one exists).
|
|
482
|
+
```js
|
|
483
|
+
const session = await instance.cms.getCurrentSession(1);
|
|
484
|
+
```
|
|
485
|
+
|
|
486
|
+
### startSession(serverId?, accId)
|
|
487
|
+
Starts a CMS session for the given server using the provided account.
|
|
488
|
+
```js
|
|
489
|
+
const session = await instance.cms.startSession(1, 'account-uuid');
|
|
490
|
+
```
|
|
491
|
+
|
|
492
|
+
### stopSession(serverId?, accId)
|
|
493
|
+
Stops the active CMS session for the given server using the provided account.
|
|
494
|
+
```js
|
|
495
|
+
const session = await instance.cms.stopSession(1, 'account-uuid');
|
|
496
|
+
```
|
|
497
|
+
|
|
498
|
+
### cancelSession(serverId?, accId)
|
|
499
|
+
Cancels the active CMS session for the given server using the provided account.
|
|
500
|
+
```js
|
|
501
|
+
const session = await instance.cms.cancelSession(1, 'account-uuid');
|
|
502
|
+
```
|
|
503
|
+
|
|
451
504
|
## Radio Functions
|
|
452
505
|
### getCommunityChannels()
|
|
453
506
|
Retrieves configured community channel groups and channels.
|
package/src/constants.ts
CHANGED
|
@@ -405,6 +405,56 @@ export interface CMSChangeFormStagePromiseResult {
|
|
|
405
405
|
data?: unknown;
|
|
406
406
|
}
|
|
407
407
|
|
|
408
|
+
export interface CMSGetFormLockStatusPromiseResult {
|
|
409
|
+
success: boolean;
|
|
410
|
+
reason?: string;
|
|
411
|
+
locked?: boolean;
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
export interface CMSSetFormLockStatusPromiseResult {
|
|
415
|
+
success: boolean;
|
|
416
|
+
reason?: string;
|
|
417
|
+
data?: unknown;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
export interface CMSCurrentSession {
|
|
421
|
+
id: string;
|
|
422
|
+
sysStatus: boolean;
|
|
423
|
+
community: string;
|
|
424
|
+
serverId: number;
|
|
425
|
+
startedBy: string;
|
|
426
|
+
startedAt: string;
|
|
427
|
+
endedBy: string | null;
|
|
428
|
+
endedAt: string | null;
|
|
429
|
+
cancelledBy: string | null;
|
|
430
|
+
stats: Record<string, unknown>;
|
|
431
|
+
metadata: Record<string, unknown>;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
export interface CMSGetCurrentSessionPromiseResult {
|
|
435
|
+
success: boolean;
|
|
436
|
+
reason?: string;
|
|
437
|
+
data?: CMSCurrentSession | null;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
export interface CMSStartSessionPromiseResult {
|
|
441
|
+
success: boolean;
|
|
442
|
+
reason?: string;
|
|
443
|
+
data?: CMSCurrentSession | null;
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
export interface CMSStopSessionPromiseResult {
|
|
447
|
+
success: boolean;
|
|
448
|
+
reason?: string;
|
|
449
|
+
data?: CMSCurrentSession | null;
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
export interface CMSCancelSessionPromiseResult {
|
|
453
|
+
success: boolean;
|
|
454
|
+
reason?: string;
|
|
455
|
+
data?: CMSCurrentSession | null;
|
|
456
|
+
}
|
|
457
|
+
|
|
408
458
|
export interface CMSSetGameServerStruct {
|
|
409
459
|
id?: number;
|
|
410
460
|
name: string;
|
|
@@ -185,6 +185,29 @@ export class REST extends EventEmitter {
|
|
|
185
185
|
serverId: args[0]
|
|
186
186
|
}
|
|
187
187
|
}
|
|
188
|
+
case 'GET_CURRENT_SESSION': {
|
|
189
|
+
return {
|
|
190
|
+
serverId: args[0]
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
case 'START_SESSION': {
|
|
194
|
+
return {
|
|
195
|
+
serverId: args[0],
|
|
196
|
+
accId: args[1],
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
case 'STOP_SESSION': {
|
|
200
|
+
return {
|
|
201
|
+
serverId: args[0],
|
|
202
|
+
accId: args[1],
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
case 'CANCEL_SESSION': {
|
|
206
|
+
return {
|
|
207
|
+
serverId: args[0],
|
|
208
|
+
accId: args[1],
|
|
209
|
+
}
|
|
210
|
+
}
|
|
188
211
|
case 'SET_GAME_SERVERS': {
|
|
189
212
|
return args[0] ?? [];
|
|
190
213
|
}
|
|
@@ -404,6 +427,17 @@ export class REST extends EventEmitter {
|
|
|
404
427
|
take: args[2],
|
|
405
428
|
};
|
|
406
429
|
}
|
|
430
|
+
case 'GET_FORM_LOCK_STATUS': {
|
|
431
|
+
return {
|
|
432
|
+
templateId: args[0],
|
|
433
|
+
};
|
|
434
|
+
}
|
|
435
|
+
case 'SET_FORM_LOCK_STATUS': {
|
|
436
|
+
return {
|
|
437
|
+
templateId: args[0],
|
|
438
|
+
state: args[1],
|
|
439
|
+
};
|
|
440
|
+
}
|
|
407
441
|
case 'CHANGE_FORM_STAGE': {
|
|
408
442
|
return {
|
|
409
443
|
accId: args[0],
|
|
@@ -512,6 +512,30 @@ export const ServersCMSAPITypes: APITypeData[] = [
|
|
|
512
512
|
path: 'servers/full_whitelist',
|
|
513
513
|
method: 'POST',
|
|
514
514
|
minVersion: 3
|
|
515
|
+
},
|
|
516
|
+
{
|
|
517
|
+
type: 'GET_CURRENT_SESSION',
|
|
518
|
+
path: 'servers/get_current_session',
|
|
519
|
+
method: 'POST',
|
|
520
|
+
minVersion: 0
|
|
521
|
+
},
|
|
522
|
+
{
|
|
523
|
+
type: 'START_SESSION',
|
|
524
|
+
path: 'servers/start_session',
|
|
525
|
+
method: 'POST',
|
|
526
|
+
minVersion: 0
|
|
527
|
+
},
|
|
528
|
+
{
|
|
529
|
+
type: 'STOP_SESSION',
|
|
530
|
+
path: 'servers/stop_session',
|
|
531
|
+
method: 'POST',
|
|
532
|
+
minVersion: 0
|
|
533
|
+
},
|
|
534
|
+
{
|
|
535
|
+
type: 'CANCEL_SESSION',
|
|
536
|
+
path: 'servers/cancel_session',
|
|
537
|
+
method: 'POST',
|
|
538
|
+
minVersion: 0
|
|
515
539
|
}
|
|
516
540
|
];
|
|
517
541
|
|
|
@@ -536,6 +560,18 @@ export const FormsCMSAPITypes: APITypeData[] = [
|
|
|
536
560
|
path: 'forms/get_template_submissions',
|
|
537
561
|
method: 'POST',
|
|
538
562
|
minVersion: 0
|
|
563
|
+
},
|
|
564
|
+
{
|
|
565
|
+
type: 'GET_FORM_LOCK_STATUS',
|
|
566
|
+
path: 'forms/get_form_lock_status',
|
|
567
|
+
method: 'POST',
|
|
568
|
+
minVersion: 0
|
|
569
|
+
},
|
|
570
|
+
{
|
|
571
|
+
type: 'SET_FORM_LOCK_STATUS',
|
|
572
|
+
path: 'forms/set_form_lock_status',
|
|
573
|
+
method: 'POST',
|
|
574
|
+
minVersion: 0
|
|
539
575
|
}
|
|
540
576
|
];
|
|
541
577
|
|
|
@@ -643,7 +679,7 @@ function formatForAll(array: APITypeData[], product: productEnums): AllAPITypeDa
|
|
|
643
679
|
|
|
644
680
|
export const AllAPITypes: AllAPITypeData[] = [ ...formatForAll(GeneralCADAPITypes, productEnums.CAD), ...formatForAll(CivilianCADAPITypes, productEnums.CAD), ...formatForAll(EmergencyCADAPITypes, productEnums.CAD), ...formatForAll(GeneralCMSAPITypes, productEnums.CMS), ...formatForAll(ServersCMSAPITypes, productEnums.CMS), ...formatForAll(EventsCMSAPITypes, productEnums.CMS), ...formatForAll(FormsCMSAPITypes, productEnums.CMS), ...formatForAll(CommunitiesCMSAPITypes, productEnums.CMS), ...formatForAll(ERLCMSAPITypes, productEnums.CMS), ...formatForAll(RadioAPITypes, productEnums.RADIO) ];
|
|
645
681
|
|
|
646
|
-
export type AllAPITypesType = 'GET_SERVERS' | 'SET_SERVERS' | 'GET_VERSION' | 'SET_PENAL_CODES' | 'SET_API_ID' | 'GET_TEMPLATES' | 'NEW_RECORD' | 'EDIT_RECORD' | 'REMOVE_RECORD' | 'LOOKUP_INT' | 'LOOKUP' | 'GET_ACCOUNT' | 'CHECK_APIID' | 'APPLY_PERMISSION_KEY' | 'SET_ACCOUNT_PERMISSIONS' | 'BAN_USER' | 'VERIFY_SECRET' | 'AUTH_STREETSIGNS' | 'SET_POSTALS' | 'SEND_PHOTO' | 'SET_CLOCK' | 'JOIN_COMMUNITY' | 'LEAVE_COMMUNITY' | 'GET_CHARACTERS' | 'NEW_CHARACTER' | 'EDIT_CHARACTER' | 'REMOVE_CHARACTER' | 'GET_IDENTIFIERS' | 'MODIFY_IDENTIFIER' | 'SET_IDENTIFIER' | 'UNIT_PANIC' | 'UNIT_STATUS' | 'GET_BLIPS' | 'ADD_BLIP' | 'MODIFY_BLIP' | 'REMOVE_BLIP' | '911_CALL' | 'REMOVE_911' | 'GET_CALLS' | 'GET_MY_CALL' | 'GET_ACTIVE_UNITS' | 'KICK_UNIT' | 'NEW_DISPATCH' | 'ATTACH_UNIT' | 'DETACH_UNIT' | 'SET_CALL_POSTAL' | 'SET_CALL_PRIMARY' | 'ADD_CALL_NOTE' | 'CLOSE_CALL' | 'UNIT_LOCATION' | 'SET_STREETSIGN_CONFIG' | 'UPDATE_STREETSIGN' | 'GET_COM_ACCOUNT' | 'GET_DEPARTMENTS' | 'GET_SUB_VERSION' | 'GET_CURRENT_CLOCK_IN' | 'GET_CLOCKIN_TYPES' | 'GET_LATEST_ACTIVITY' | 'GET_ACCOUNTS' | 'GET_PROFILE_FIELDS' | 'CHECK_COM_APIID' | 'VERIFY_WHITELIST' | 'CLOCK_IN_OUT' | 'FULL_WHITELIST' | 'GET_ACCOUNT_RANKS' | 'SET_ACCOUNT_RANKS' | 'RSVP' | 'CHANGE_FORM_STAGE' | 'GET_FORM_TEMPLATE_SUBMISSIONS' | 'KICK_ACCOUNT' | 'BAN_ACCOUNT' | 'LOOKUP' | 'EDIT_ACC_PROFLIE_FIELDS' | 'SET_ACCOUNT_NAME' | 'FORCE_SYNC' | 'TRIGGER_PROMOTION_FLOWS' | 'GET_PROMOTION_FLOWS' | 'SET_GAME_SERVERS' | 'ERLC_GET_ONLINE_PLAYERS' | 'ERLC_GET_PLAYER_QUEUE' | 'ERLC_ADD_NEW_RECORD' | 'ERLC_EXECUTE_COMMAND' | 'RADIO_GET_COMMUNITY_CHANNELS' | 'RADIO_GET_CONNECTED_USERS' | 'RADIO_GET_CONNECTED_USER' | 'RADIO_SET_USER_CHANNELS' | 'RADIO_SET_USER_DISPLAY_NAME' | 'RADIO_GET_SERVER_SUBSCRIPTION_FROM_IP' | 'RADIO_SET_SERVER_IP' | 'RADIO_SET_IN_GAME_SPEAKER_LOCATIONS' | 'PLAY_TONE';
|
|
682
|
+
export type AllAPITypesType = 'GET_SERVERS' | 'SET_SERVERS' | 'GET_VERSION' | 'SET_PENAL_CODES' | 'SET_API_ID' | 'GET_TEMPLATES' | 'NEW_RECORD' | 'EDIT_RECORD' | 'REMOVE_RECORD' | 'LOOKUP_INT' | 'LOOKUP' | 'GET_ACCOUNT' | 'CHECK_APIID' | 'APPLY_PERMISSION_KEY' | 'SET_ACCOUNT_PERMISSIONS' | 'BAN_USER' | 'VERIFY_SECRET' | 'AUTH_STREETSIGNS' | 'SET_POSTALS' | 'SEND_PHOTO' | 'SET_CLOCK' | 'JOIN_COMMUNITY' | 'LEAVE_COMMUNITY' | 'GET_CHARACTERS' | 'NEW_CHARACTER' | 'EDIT_CHARACTER' | 'REMOVE_CHARACTER' | 'GET_IDENTIFIERS' | 'MODIFY_IDENTIFIER' | 'SET_IDENTIFIER' | 'UNIT_PANIC' | 'UNIT_STATUS' | 'GET_BLIPS' | 'ADD_BLIP' | 'MODIFY_BLIP' | 'REMOVE_BLIP' | '911_CALL' | 'REMOVE_911' | 'GET_CALLS' | 'GET_MY_CALL' | 'GET_ACTIVE_UNITS' | 'KICK_UNIT' | 'NEW_DISPATCH' | 'ATTACH_UNIT' | 'DETACH_UNIT' | 'SET_CALL_POSTAL' | 'SET_CALL_PRIMARY' | 'ADD_CALL_NOTE' | 'CLOSE_CALL' | 'UNIT_LOCATION' | 'SET_STREETSIGN_CONFIG' | 'UPDATE_STREETSIGN' | 'GET_COM_ACCOUNT' | 'GET_DEPARTMENTS' | 'GET_SUB_VERSION' | 'GET_CURRENT_CLOCK_IN' | 'GET_CLOCKIN_TYPES' | 'GET_LATEST_ACTIVITY' | 'GET_ACCOUNTS' | 'GET_PROFILE_FIELDS' | 'CHECK_COM_APIID' | 'VERIFY_WHITELIST' | 'CLOCK_IN_OUT' | 'FULL_WHITELIST' | 'GET_ACCOUNT_RANKS' | 'SET_ACCOUNT_RANKS' | 'RSVP' | 'CHANGE_FORM_STAGE' | 'GET_FORM_TEMPLATE_SUBMISSIONS' | 'GET_FORM_LOCK_STATUS' | 'SET_FORM_LOCK_STATUS' | 'GET_CURRENT_SESSION' | 'START_SESSION' | 'STOP_SESSION' | 'CANCEL_SESSION' | 'KICK_ACCOUNT' | 'BAN_ACCOUNT' | 'LOOKUP' | 'EDIT_ACC_PROFLIE_FIELDS' | 'SET_ACCOUNT_NAME' | 'FORCE_SYNC' | 'TRIGGER_PROMOTION_FLOWS' | 'GET_PROMOTION_FLOWS' | 'SET_GAME_SERVERS' | 'ERLC_GET_ONLINE_PLAYERS' | 'ERLC_GET_PLAYER_QUEUE' | 'ERLC_ADD_NEW_RECORD' | 'ERLC_EXECUTE_COMMAND' | 'RADIO_GET_COMMUNITY_CHANNELS' | 'RADIO_GET_CONNECTED_USERS' | 'RADIO_GET_CONNECTED_USER' | 'RADIO_SET_USER_CHANNELS' | 'RADIO_SET_USER_DISPLAY_NAME' | 'RADIO_GET_SERVER_SUBSCRIPTION_FROM_IP' | 'RADIO_SET_SERVER_IP' | 'RADIO_SET_IN_GAME_SPEAKER_LOCATIONS' | 'PLAY_TONE';
|
|
647
683
|
|
|
648
684
|
export interface CMSServerAPIStruct {
|
|
649
685
|
id: number;
|
|
@@ -910,7 +946,7 @@ export enum CADDispatchStatusEnums {
|
|
|
910
946
|
Closed
|
|
911
947
|
}
|
|
912
948
|
|
|
913
|
-
|
|
949
|
+
interface CADNewDispatchBaseStruct {
|
|
914
950
|
serverId: number;
|
|
915
951
|
origin: CADDispatchOriginEnums;
|
|
916
952
|
status: CADDispatchStatusEnums;
|
|
@@ -924,9 +960,12 @@ export interface CADNewDispatchStruct {
|
|
|
924
960
|
trackPrimary: boolean;
|
|
925
961
|
description: string;
|
|
926
962
|
metaData: Record<string, string>;
|
|
927
|
-
units: string[];
|
|
928
963
|
}
|
|
929
964
|
|
|
965
|
+
export type CADNewDispatchStruct =
|
|
966
|
+
| (CADNewDispatchBaseStruct & { units: string[]; accounts?: string[] })
|
|
967
|
+
| (CADNewDispatchBaseStruct & { units?: string[]; accounts: string[] });
|
|
968
|
+
|
|
930
969
|
export interface CADStreetSignStruct {
|
|
931
970
|
id: number;
|
|
932
971
|
label: string;
|
|
@@ -1193,6 +1232,21 @@ export interface RESTTypedAPIDataStructs {
|
|
|
1193
1232
|
FULL_WHITELIST: [
|
|
1194
1233
|
serverId?: number,
|
|
1195
1234
|
]
|
|
1235
|
+
GET_CURRENT_SESSION: [
|
|
1236
|
+
serverId: number,
|
|
1237
|
+
]
|
|
1238
|
+
STOP_SESSION: [
|
|
1239
|
+
serverId: number,
|
|
1240
|
+
accId?: string,
|
|
1241
|
+
]
|
|
1242
|
+
START_SESSION: [
|
|
1243
|
+
serverId: number,
|
|
1244
|
+
accId?: string,
|
|
1245
|
+
]
|
|
1246
|
+
CANCEL_SESSION: [
|
|
1247
|
+
serverId: number,
|
|
1248
|
+
accId?: string,
|
|
1249
|
+
]
|
|
1196
1250
|
RSVP : [
|
|
1197
1251
|
eventId: string,
|
|
1198
1252
|
apiId: string | undefined,
|
|
@@ -1223,6 +1277,13 @@ export interface RESTTypedAPIDataStructs {
|
|
|
1223
1277
|
skip?: number,
|
|
1224
1278
|
take?: number,
|
|
1225
1279
|
]
|
|
1280
|
+
GET_FORM_LOCK_STATUS: [
|
|
1281
|
+
templateId: number,
|
|
1282
|
+
]
|
|
1283
|
+
SET_FORM_LOCK_STATUS: [
|
|
1284
|
+
templateId: number,
|
|
1285
|
+
state: boolean,
|
|
1286
|
+
]
|
|
1226
1287
|
BAN_ACCOUNT: [
|
|
1227
1288
|
apiId: string | undefined,
|
|
1228
1289
|
username: string | undefined,
|
|
@@ -1310,6 +1371,13 @@ export type PossibleRequestData =
|
|
|
1310
1371
|
{
|
|
1311
1372
|
recordTypeId?: number;
|
|
1312
1373
|
} |
|
|
1374
|
+
{
|
|
1375
|
+
templateId: number;
|
|
1376
|
+
} |
|
|
1377
|
+
{
|
|
1378
|
+
templateId: number;
|
|
1379
|
+
state: boolean;
|
|
1380
|
+
} |
|
|
1313
1381
|
{
|
|
1314
1382
|
apiId?: string;
|
|
1315
1383
|
username?: string;
|
|
@@ -562,7 +562,14 @@ export class CADManager extends BaseManager {
|
|
|
562
562
|
* Creates a new dispatch call.
|
|
563
563
|
*/
|
|
564
564
|
public async createDispatch(data: CADNewDispatchStruct): Promise<globalTypes.CADStandardResponse> {
|
|
565
|
-
|
|
565
|
+
const hasUnits = Array.isArray(data.units);
|
|
566
|
+
const hasAccounts = Array.isArray(data.accounts);
|
|
567
|
+
const payload: CADNewDispatchStruct = {
|
|
568
|
+
...data,
|
|
569
|
+
...(hasUnits ? { units: data.units } : {}),
|
|
570
|
+
...(hasAccounts ? { accounts: data.accounts } : {})
|
|
571
|
+
};
|
|
572
|
+
return this.executeCadRequest('NEW_DISPATCH', payload);
|
|
566
573
|
}
|
|
567
574
|
|
|
568
575
|
/**
|
|
@@ -463,6 +463,81 @@ export class CMSManager extends BaseManager {
|
|
|
463
463
|
});
|
|
464
464
|
}
|
|
465
465
|
|
|
466
|
+
/**
|
|
467
|
+
* Retrieves the lock status for a form template.
|
|
468
|
+
*/
|
|
469
|
+
public async getFormLockStatus(templateId: number): Promise<globalTypes.CMSGetFormLockStatusPromiseResult> {
|
|
470
|
+
if (templateId === undefined || Number.isNaN(Number(templateId))) {
|
|
471
|
+
throw new Error('templateId is required to get form lock status.');
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
return new Promise(async (resolve, reject) => {
|
|
475
|
+
try {
|
|
476
|
+
const response: any = await this.rest?.request('GET_FORM_LOCK_STATUS', templateId);
|
|
477
|
+
if (typeof response === 'boolean') {
|
|
478
|
+
resolve({ success: true, locked: response });
|
|
479
|
+
return;
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
if (typeof response === 'string') {
|
|
483
|
+
const normalized = response.toLowerCase();
|
|
484
|
+
if (normalized === 'locked') {
|
|
485
|
+
resolve({ success: true, locked: true });
|
|
486
|
+
return;
|
|
487
|
+
}
|
|
488
|
+
if (normalized === 'unlocked') {
|
|
489
|
+
resolve({ success: true, locked: false });
|
|
490
|
+
return;
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
if (response && typeof response === 'object') {
|
|
495
|
+
if ('locked' in response) {
|
|
496
|
+
resolve({ success: true, locked: Boolean((response as any).locked) });
|
|
497
|
+
return;
|
|
498
|
+
}
|
|
499
|
+
if ('isLocked' in response) {
|
|
500
|
+
resolve({ success: true, locked: Boolean((response as any).isLocked) });
|
|
501
|
+
return;
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
resolve({ success: false, reason: response });
|
|
506
|
+
} catch (err) {
|
|
507
|
+
if (err instanceof APIError) {
|
|
508
|
+
resolve({ success: false, reason: err.response });
|
|
509
|
+
} else {
|
|
510
|
+
reject(err);
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
});
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
/**
|
|
517
|
+
* Sets the lock status for a form template.
|
|
518
|
+
*/
|
|
519
|
+
public async setFormLockStatus(templateId: number, state: boolean): Promise<globalTypes.CMSSetFormLockStatusPromiseResult> {
|
|
520
|
+
if (templateId === undefined || Number.isNaN(Number(templateId))) {
|
|
521
|
+
throw new Error('templateId is required to set form lock status.');
|
|
522
|
+
}
|
|
523
|
+
if (typeof state !== 'boolean') {
|
|
524
|
+
throw new Error('state must be a boolean to set form lock status.');
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
return new Promise(async (resolve, reject) => {
|
|
528
|
+
try {
|
|
529
|
+
const response: any = await this.rest?.request('SET_FORM_LOCK_STATUS', templateId, state);
|
|
530
|
+
resolve({ success: true, data: response });
|
|
531
|
+
} catch (err) {
|
|
532
|
+
if (err instanceof APIError) {
|
|
533
|
+
resolve({ success: false, reason: err.response });
|
|
534
|
+
} else {
|
|
535
|
+
reject(err);
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
});
|
|
539
|
+
}
|
|
540
|
+
|
|
466
541
|
/**
|
|
467
542
|
* Retrieves submissions for a specific form template.
|
|
468
543
|
*/
|
|
@@ -591,6 +666,107 @@ export class CMSManager extends BaseManager {
|
|
|
591
666
|
});
|
|
592
667
|
}
|
|
593
668
|
|
|
669
|
+
/**
|
|
670
|
+
* Retrieves the current active session for the specified server, if present.
|
|
671
|
+
*/
|
|
672
|
+
public async getCurrentSession(serverId?: number): Promise<globalTypes.CMSGetCurrentSessionPromiseResult> {
|
|
673
|
+
const resolvedServerId = serverId ?? this.instance.cmsDefaultServerId;
|
|
674
|
+
if (resolvedServerId === undefined || Number.isNaN(Number(resolvedServerId))) {
|
|
675
|
+
throw new Error('serverId is required to get current session.');
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
return new Promise(async (resolve, reject) => {
|
|
679
|
+
try {
|
|
680
|
+
const response: any = await this.rest?.request('GET_CURRENT_SESSION', resolvedServerId);
|
|
681
|
+
resolve({ success: true, data: response ?? null });
|
|
682
|
+
} catch (err) {
|
|
683
|
+
if (err instanceof APIError) {
|
|
684
|
+
resolve({ success: false, reason: err.response });
|
|
685
|
+
} else {
|
|
686
|
+
reject(err);
|
|
687
|
+
}
|
|
688
|
+
}
|
|
689
|
+
});
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
/**
|
|
693
|
+
* Starts a new CMS session for the specified server.
|
|
694
|
+
*/
|
|
695
|
+
public async startSession(serverId?: number, accId?: string): Promise<globalTypes.CMSStartSessionPromiseResult> {
|
|
696
|
+
const resolvedServerId = serverId ?? this.instance.cmsDefaultServerId;
|
|
697
|
+
if (resolvedServerId === undefined || Number.isNaN(Number(resolvedServerId))) {
|
|
698
|
+
throw new Error('serverId is required to start a session.');
|
|
699
|
+
}
|
|
700
|
+
if (!accId) {
|
|
701
|
+
throw new Error('accId is required to start a session.');
|
|
702
|
+
}
|
|
703
|
+
|
|
704
|
+
return new Promise(async (resolve, reject) => {
|
|
705
|
+
try {
|
|
706
|
+
const response: any = await this.rest?.request('START_SESSION', resolvedServerId, accId);
|
|
707
|
+
resolve({ success: true, data: response ?? null });
|
|
708
|
+
} catch (err) {
|
|
709
|
+
if (err instanceof APIError) {
|
|
710
|
+
resolve({ success: false, reason: err.response });
|
|
711
|
+
} else {
|
|
712
|
+
reject(err);
|
|
713
|
+
}
|
|
714
|
+
}
|
|
715
|
+
});
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
/**
|
|
719
|
+
* Stops the current CMS session for the specified server.
|
|
720
|
+
*/
|
|
721
|
+
public async stopSession(serverId?: number, accId?: string): Promise<globalTypes.CMSStopSessionPromiseResult> {
|
|
722
|
+
const resolvedServerId = serverId ?? this.instance.cmsDefaultServerId;
|
|
723
|
+
if (resolvedServerId === undefined || Number.isNaN(Number(resolvedServerId))) {
|
|
724
|
+
throw new Error('serverId is required to stop a session.');
|
|
725
|
+
}
|
|
726
|
+
if (!accId) {
|
|
727
|
+
throw new Error('accId is required to stop a session.');
|
|
728
|
+
}
|
|
729
|
+
|
|
730
|
+
return new Promise(async (resolve, reject) => {
|
|
731
|
+
try {
|
|
732
|
+
const response: any = await this.rest?.request('STOP_SESSION', resolvedServerId, accId);
|
|
733
|
+
resolve({ success: true, data: response ?? null });
|
|
734
|
+
} catch (err) {
|
|
735
|
+
if (err instanceof APIError) {
|
|
736
|
+
resolve({ success: false, reason: err.response });
|
|
737
|
+
} else {
|
|
738
|
+
reject(err);
|
|
739
|
+
}
|
|
740
|
+
}
|
|
741
|
+
});
|
|
742
|
+
}
|
|
743
|
+
|
|
744
|
+
/**
|
|
745
|
+
* Cancels the current CMS session for the specified server.
|
|
746
|
+
*/
|
|
747
|
+
public async cancelSession(serverId?: number, accId?: string): Promise<globalTypes.CMSCancelSessionPromiseResult> {
|
|
748
|
+
const resolvedServerId = serverId ?? this.instance.cmsDefaultServerId;
|
|
749
|
+
if (resolvedServerId === undefined || Number.isNaN(Number(resolvedServerId))) {
|
|
750
|
+
throw new Error('serverId is required to cancel a session.');
|
|
751
|
+
}
|
|
752
|
+
if (!accId) {
|
|
753
|
+
throw new Error('accId is required to cancel a session.');
|
|
754
|
+
}
|
|
755
|
+
|
|
756
|
+
return new Promise(async (resolve, reject) => {
|
|
757
|
+
try {
|
|
758
|
+
const response: any = await this.rest?.request('CANCEL_SESSION', resolvedServerId, accId);
|
|
759
|
+
resolve({ success: true, data: response ?? null });
|
|
760
|
+
} catch (err) {
|
|
761
|
+
if (err instanceof APIError) {
|
|
762
|
+
resolve({ success: false, reason: err.response });
|
|
763
|
+
} else {
|
|
764
|
+
reject(err);
|
|
765
|
+
}
|
|
766
|
+
}
|
|
767
|
+
});
|
|
768
|
+
}
|
|
769
|
+
|
|
594
770
|
/**
|
|
595
771
|
* Gets the current ERLC player queue count for the provided roblox join code.
|
|
596
772
|
* @param {string} robloxJoinCode The roblox join code to get the player queue size for.
|