@sonoransoftware/sonoran.js 1.0.55 → 1.0.56

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.
@@ -490,6 +490,15 @@ export interface CMSERLCExecuteCommandPromiseResult {
490
490
  reason?: string;
491
491
  data?: unknown;
492
492
  }
493
+ export type ERLCTeams = 'police' | 'sheriff' | 'fire' | 'dot';
494
+ export interface CMSERLCTeamsLockPromiseResult {
495
+ success: boolean;
496
+ reason: string;
497
+ }
498
+ export interface CMSERLCTeamsUnlockPromiseResult {
499
+ success: boolean;
500
+ reason: string;
501
+ }
493
502
  export interface RadioChannelGroup {
494
503
  id: number;
495
504
  name: string;
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export * from './instance/Instance';
2
2
  export * from './builders';
3
3
  export * from './libs/rest/src';
4
- export { productEnums, CADNewDispatchBuilderOptions, CADSubscriptionVersionEnum, CMSSubscriptionVersionEnum, RadioSubscriptionLevel, RadioSetUserChannelsOptions, RadioChannel, RadioChannelGroup, RadioConnectedUser, RadioSpeakerLocation, RadioGetCommunityChannelsPromiseResult, RadioGetConnectedUsersPromiseResult, RadioGetConnectedUserPromiseResult, RadioSetUserChannelsPromiseResult, RadioSetUserDisplayNamePromiseResult, RadioGetServerSubscriptionFromIpPromiseResult, RadioSetServerIpPromiseResult, RadioSetInGameSpeakerLocationsPromiseResult, CADSetClockTimePromiseResult, CADJoinCommunityPromiseResult, CADLeaveCommunityPromiseResult, CADStandardResponse, CMSProfileField, CMSGetCurrentClockInPromiseResult, CMSAccountsPage, CMSAccountSummary, CMSGetAccountsPromiseResult, CMSGetProfileFieldsPromiseResult, CMSProfileFieldUpdate, CMSEditAccountProfileFieldsPromiseResult, CMSRsvpPromiseResult, CMSChangeFormStagePromiseResult, CMSSetGameServerStruct, CMSSetGameServersPromiseResult, CMSExecuteRankPromotionResult, CMSTriggerPromotionFlowPayload, CMSPromotionFlow, CMSTriggerPromotionFlowsPromiseResult, CMSGetPromotionFlowsPromiseResult, CMSGetFormSubmissionsPromiseResult, CMSERLCGetOnlinePlayersPromiseResult, CMSERLCGetPlayerQueuePromiseResult, CMSERLCAddNewRecordPromiseResult, CMSERLCExecuteCommandPayload, CMSERLCExecuteCommandPromiseResult } from './constants';
4
+ export { productEnums, CADNewDispatchBuilderOptions, CADSubscriptionVersionEnum, CMSSubscriptionVersionEnum, RadioSubscriptionLevel, RadioSetUserChannelsOptions, RadioChannel, RadioChannelGroup, RadioConnectedUser, RadioSpeakerLocation, RadioGetCommunityChannelsPromiseResult, RadioGetConnectedUsersPromiseResult, RadioGetConnectedUserPromiseResult, RadioSetUserChannelsPromiseResult, RadioSetUserDisplayNamePromiseResult, RadioGetServerSubscriptionFromIpPromiseResult, RadioSetServerIpPromiseResult, RadioSetInGameSpeakerLocationsPromiseResult, CADSetClockTimePromiseResult, CADJoinCommunityPromiseResult, CADLeaveCommunityPromiseResult, CADStandardResponse, CMSProfileField, CMSGetCurrentClockInPromiseResult, CMSAccountsPage, CMSAccountSummary, CMSGetAccountsPromiseResult, CMSGetProfileFieldsPromiseResult, CMSProfileFieldUpdate, CMSEditAccountProfileFieldsPromiseResult, CMSRsvpPromiseResult, CMSChangeFormStagePromiseResult, CMSSetGameServerStruct, CMSSetGameServersPromiseResult, CMSExecuteRankPromotionResult, CMSTriggerPromotionFlowPayload, CMSPromotionFlow, CMSTriggerPromotionFlowsPromiseResult, CMSGetPromotionFlowsPromiseResult, CMSGetFormSubmissionsPromiseResult, CMSERLCGetOnlinePlayersPromiseResult, CMSERLCGetPlayerQueuePromiseResult, CMSERLCAddNewRecordPromiseResult, CMSERLCExecuteCommandPayload, CMSERLCExecuteCommandPromiseResult, CMSERLCTeamsLockPromiseResult, CMSERLCTeamsUnlockPromiseResult } from './constants';
@@ -455,6 +455,38 @@ class REST extends events_1.EventEmitter {
455
455
  };
456
456
  });
457
457
  }
458
+ case 'ERLC_TEAMS_LOCK': {
459
+ const payload = args[0];
460
+ if (!Array.isArray(payload)) {
461
+ throw new Error('ERLC_TEAMS_LOCK requires an array of command payloads.');
462
+ }
463
+ return payload.map((cmd) => {
464
+ const robloxJoinCode = cmd.robloxJoinCode;
465
+ if (typeof robloxJoinCode !== 'string' || robloxJoinCode.length === 0) {
466
+ throw new Error('ERLC_TEAMS_LOCK requires each command to include a valid robloxJoinCode.');
467
+ }
468
+ return {
469
+ ...cmd,
470
+ robloxJoinCode
471
+ };
472
+ });
473
+ }
474
+ case 'ERLC_TEAMS_UNLOCK': {
475
+ const payload = args[0];
476
+ if (!Array.isArray(payload)) {
477
+ throw new Error('ERLC_TEAMS_UNLOCK requires an array of command payloads.');
478
+ }
479
+ return payload.map((cmd) => {
480
+ const robloxJoinCode = cmd.robloxJoinCode;
481
+ if (typeof robloxJoinCode !== 'string' || robloxJoinCode.length === 0) {
482
+ throw new Error('ERLC_TEAMS_UNLOCK requires each command to include a valid robloxJoinCode.');
483
+ }
484
+ return {
485
+ ...cmd,
486
+ robloxJoinCode
487
+ };
488
+ });
489
+ }
458
490
  case 'RADIO_GET_COMMUNITY_CHANNELS':
459
491
  case 'RADIO_GET_CONNECTED_USERS':
460
492
  case 'RADIO_GET_SERVER_SUBSCRIPTION_FROM_IP': {
@@ -109,6 +109,14 @@ class RequestManager extends events_1.EventEmitter {
109
109
  apiData.data.data = clonedData;
110
110
  break;
111
111
  }
112
+ case 'ERLC_TEAMS_LOCK': {
113
+ apiData.data.data = clonedData;
114
+ break;
115
+ }
116
+ case 'ERLC_TEAMS_UNLOCK': {
117
+ apiData.data.data = clonedData;
118
+ break;
119
+ }
112
120
  case 'SET_PENAL_CODES': {
113
121
  apiData.data.data = [clonedData[0]];
114
122
  break;
@@ -1,4 +1,4 @@
1
- import { productEnums, RadioSetUserChannelsOptions, RadioSpeakerLocation, RadioTonePlayTarget, CMSProfileFieldUpdate, CMSSetGameServerStruct, CMSTriggerPromotionFlowPayload, CMSERLCExecuteCommandPayload } from '../../../../../constants';
1
+ import { productEnums, RadioSetUserChannelsOptions, RadioSpeakerLocation, RadioTonePlayTarget, CMSProfileFieldUpdate, CMSSetGameServerStruct, CMSTriggerPromotionFlowPayload, CMSERLCExecuteCommandPayload, ERLCTeams } from '../../../../../constants';
2
2
  import type { RESTOptions } from '../REST';
3
3
  export declare const DefaultUserAgent = "Sonoran.js NPM Module";
4
4
  export declare const DefaultCADRestOptions: Required<RESTOptions>;
@@ -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' | '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';
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' | 'ERLC_TEAMS_LOCK' | 'ERLC_TEAMS_UNLOCK' | '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;
@@ -647,6 +647,15 @@ export interface RESTTypedAPIDataStructs {
647
647
  ERLC_EXECUTE_COMMAND: [
648
648
  commands: CMSERLCExecuteCommandPayload[]
649
649
  ];
650
+ ERLC_TEAMS_LOCK: [
651
+ robloxJoinCode: string,
652
+ team: ERLCTeams,
653
+ maxPlayers: number
654
+ ];
655
+ ERLC_TEAMS_UNLOCK: [
656
+ robloxJoinCode: string,
657
+ team: ERLCTeams
658
+ ];
650
659
  RADIO_GET_COMMUNITY_CHANNELS: [];
651
660
  RADIO_GET_CONNECTED_USERS: [];
652
661
  RADIO_GET_CONNECTED_USER: [
@@ -571,6 +571,18 @@ exports.ERLCMSAPITypes = [
571
571
  path: "erlc/command",
572
572
  method: "POST",
573
573
  minVersion: 0
574
+ },
575
+ {
576
+ type: "ERLC_TEAMS_LOCK",
577
+ path: "erlc/teams/lock",
578
+ method: "POST",
579
+ minVersion: 0
580
+ },
581
+ {
582
+ type: "ERLC_TEAMS_UNLOCK",
583
+ path: "erlc/teams/unlock",
584
+ method: "POST",
585
+ minVersion: 0
574
586
  }
575
587
  ];
576
588
  exports.RadioAPITypes = [
@@ -319,4 +319,19 @@ export declare class CMSManager extends BaseManager {
319
319
  playerRobloxId?: string | number;
320
320
  points?: number;
321
321
  }): Promise<globalTypes.CMSERLCAddNewRecordPromiseResult>;
322
+ /**
323
+ * Adds a new ERLC record for a player.
324
+ * @param {string} robloxJoinCode The roblox join code to add the record to.
325
+ * @param {string} team The ERLC team to be player limit locked
326
+ * @param {number} maxPlayers The maximum amount of players that are allowed on the team
327
+ * @return {Promise} Promise object represents if the request was successful with reason for failure if needed.
328
+ * */
329
+ erlcTeamsLock(robloxJoinCode: string, team: globalTypes.ERLCTeams, maxPlayers: number): Promise<globalTypes.CMSERLCTeamsLockPromiseResult>;
330
+ /**
331
+ * Adds a new ERLC record for a player.
332
+ * @param {string} robloxJoinCode The roblox join code to add the record to.
333
+ * @param {string} team The ERLC team to no longer be player limit locked
334
+ * @return {Promise} Promise object represents if the request was successful with reason for failure if needed.
335
+ * */
336
+ erlcTeamsUnlock(robloxJoinCode: string, team: globalTypes.ERLCTeams): Promise<globalTypes.CMSERLCTeamsUnlockPromiseResult>;
322
337
  }
@@ -935,5 +935,52 @@ class CMSManager extends BaseManager_1.BaseManager {
935
935
  }
936
936
  });
937
937
  }
938
+ /**
939
+ * Adds a new ERLC record for a player.
940
+ * @param {string} robloxJoinCode The roblox join code to add the record to.
941
+ * @param {string} team The ERLC team to be player limit locked
942
+ * @param {number} maxPlayers The maximum amount of players that are allowed on the team
943
+ * @return {Promise} Promise object represents if the request was successful with reason for failure if needed.
944
+ * */
945
+ async erlcTeamsLock(robloxJoinCode, team, maxPlayers) {
946
+ return new Promise(async (resolve, reject) => {
947
+ var _a;
948
+ try {
949
+ const erlcTeamsLockRequest = await ((_a = this.rest) === null || _a === void 0 ? void 0 : _a.request('ERLC_TEAMS_LOCK', robloxJoinCode, team, maxPlayers));
950
+ resolve({ success: true, reason: erlcTeamsLockRequest });
951
+ }
952
+ catch (err) {
953
+ if (err instanceof src_1.APIError) {
954
+ resolve({ success: false, reason: err.response });
955
+ }
956
+ else {
957
+ reject(err);
958
+ }
959
+ }
960
+ });
961
+ }
962
+ /**
963
+ * Adds a new ERLC record for a player.
964
+ * @param {string} robloxJoinCode The roblox join code to add the record to.
965
+ * @param {string} team The ERLC team to no longer be player limit locked
966
+ * @return {Promise} Promise object represents if the request was successful with reason for failure if needed.
967
+ * */
968
+ async erlcTeamsUnlock(robloxJoinCode, team) {
969
+ return new Promise(async (resolve, reject) => {
970
+ var _a;
971
+ try {
972
+ const erlcTeamsLockRequest = await ((_a = this.rest) === null || _a === void 0 ? void 0 : _a.request('ERLC_TEAMS_UNLOCK', robloxJoinCode, team));
973
+ resolve({ success: true, reason: erlcTeamsLockRequest });
974
+ }
975
+ catch (err) {
976
+ if (err instanceof src_1.APIError) {
977
+ resolve({ success: false, reason: err.response });
978
+ }
979
+ else {
980
+ reject(err);
981
+ }
982
+ }
983
+ });
984
+ }
938
985
  }
939
986
  exports.CMSManager = CMSManager;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sonoransoftware/sonoran.js",
3
- "version": "1.0.55",
3
+ "version": "1.0.56",
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/src/constants.ts CHANGED
@@ -553,6 +553,18 @@ export interface CMSERLCExecuteCommandPromiseResult {
553
553
  data?: unknown;
554
554
  }
555
555
 
556
+ export type ERLCTeams = 'police' | 'sheriff' | 'fire' | 'dot';
557
+
558
+ export interface CMSERLCTeamsLockPromiseResult {
559
+ success: boolean;
560
+ reason: string;
561
+ }
562
+
563
+ export interface CMSERLCTeamsUnlockPromiseResult {
564
+ success: boolean;
565
+ reason: string;
566
+ }
567
+
556
568
  export interface RadioChannelGroup {
557
569
  id: number;
558
570
  name: string;
package/src/index.ts CHANGED
@@ -46,5 +46,7 @@ export {
46
46
  CMSERLCGetPlayerQueuePromiseResult,
47
47
  CMSERLCAddNewRecordPromiseResult,
48
48
  CMSERLCExecuteCommandPayload,
49
- CMSERLCExecuteCommandPromiseResult
49
+ CMSERLCExecuteCommandPromiseResult,
50
+ CMSERLCTeamsLockPromiseResult,
51
+ CMSERLCTeamsUnlockPromiseResult
50
52
  } from './constants';
@@ -564,6 +564,38 @@ export class REST extends EventEmitter {
564
564
  };
565
565
  });
566
566
  }
567
+ case 'ERLC_TEAMS_LOCK': {
568
+ const payload = args[0];
569
+ if (!Array.isArray(payload)) {
570
+ throw new Error('ERLC_TEAMS_LOCK requires an array of command payloads.');
571
+ }
572
+ return payload.map((cmd) => {
573
+ const robloxJoinCode = cmd.robloxJoinCode;
574
+ if (typeof robloxJoinCode !== 'string' || robloxJoinCode.length === 0) {
575
+ throw new Error('ERLC_TEAMS_LOCK requires each command to include a valid robloxJoinCode.');
576
+ }
577
+ return {
578
+ ...cmd,
579
+ robloxJoinCode
580
+ };
581
+ });
582
+ }
583
+ case 'ERLC_TEAMS_UNLOCK': {
584
+ const payload = args[0];
585
+ if (!Array.isArray(payload)) {
586
+ throw new Error('ERLC_TEAMS_UNLOCK requires an array of command payloads.');
587
+ }
588
+ return payload.map((cmd) => {
589
+ const robloxJoinCode = cmd.robloxJoinCode;
590
+ if (typeof robloxJoinCode !== 'string' || robloxJoinCode.length === 0) {
591
+ throw new Error('ERLC_TEAMS_UNLOCK requires each command to include a valid robloxJoinCode.');
592
+ }
593
+ return {
594
+ ...cmd,
595
+ robloxJoinCode
596
+ };
597
+ });
598
+ }
567
599
  case 'RADIO_GET_COMMUNITY_CHANNELS':
568
600
  case 'RADIO_GET_CONNECTED_USERS':
569
601
  case 'RADIO_GET_SERVER_SUBSCRIPTION_FROM_IP': {
@@ -182,6 +182,14 @@ export class RequestManager extends EventEmitter {
182
182
  apiData.data.data = clonedData;
183
183
  break;
184
184
  }
185
+ case 'ERLC_TEAMS_LOCK': {
186
+ apiData.data.data = clonedData;
187
+ break;
188
+ }
189
+ case 'ERLC_TEAMS_UNLOCK': {
190
+ apiData.data.data = clonedData;
191
+ break;
192
+ }
185
193
  case 'SET_PENAL_CODES': {
186
194
  apiData.data.data = [clonedData[0]];
187
195
  break;
@@ -1,4 +1,4 @@
1
- import { productEnums, RadioSetUserChannelsOptions, RadioSpeakerLocation, RadioTonePlayTarget, CMSProfileFieldUpdate, CMSSetGameServerStruct, CMSTriggerPromotionFlowPayload, CMSERLCExecuteCommandPayload } from '../../../../../constants';
1
+ import { productEnums, RadioSetUserChannelsOptions, RadioSpeakerLocation, RadioTonePlayTarget, CMSProfileFieldUpdate, CMSSetGameServerStruct, CMSTriggerPromotionFlowPayload, CMSERLCExecuteCommandPayload, ERLCTeams } from '../../../../../constants';
2
2
  import type { RESTOptions } from '../REST';
3
3
 
4
4
  export const DefaultUserAgent = 'Sonoran.js NPM Module';
@@ -608,6 +608,18 @@ export const ERLCMSAPITypes: APITypeData[] = [
608
608
  path: "erlc/command",
609
609
  method: "POST",
610
610
  minVersion: 0
611
+ },
612
+ {
613
+ type: "ERLC_TEAMS_LOCK",
614
+ path: "erlc/teams/lock",
615
+ method: "POST",
616
+ minVersion: 0
617
+ },
618
+ {
619
+ type: "ERLC_TEAMS_UNLOCK",
620
+ path: "erlc/teams/unlock",
621
+ method: "POST",
622
+ minVersion: 0
611
623
  }
612
624
  ];
613
625
 
@@ -679,7 +691,7 @@ function formatForAll(array: APITypeData[], product: productEnums): AllAPITypeDa
679
691
 
680
692
  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) ];
681
693
 
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';
694
+ 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' | 'ERLC_TEAMS_LOCK' | 'ERLC_TEAMS_UNLOCK' | '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';
683
695
 
684
696
  export interface CMSServerAPIStruct {
685
697
  id: number;
@@ -1326,6 +1338,15 @@ export interface RESTTypedAPIDataStructs {
1326
1338
  ERLC_EXECUTE_COMMAND: [
1327
1339
  commands: CMSERLCExecuteCommandPayload[]
1328
1340
  ]
1341
+ ERLC_TEAMS_LOCK: [
1342
+ robloxJoinCode: string,
1343
+ team: ERLCTeams,
1344
+ maxPlayers: number
1345
+ ]
1346
+ ERLC_TEAMS_UNLOCK: [
1347
+ robloxJoinCode: string,
1348
+ team: ERLCTeams,
1349
+ ]
1329
1350
  // Radio
1330
1351
  RADIO_GET_COMMUNITY_CHANNELS: [];
1331
1352
  RADIO_GET_CONNECTED_USERS: [];
@@ -863,4 +863,47 @@ export class CMSManager extends BaseManager {
863
863
  }
864
864
  });
865
865
  }
866
+
867
+ /**
868
+ * Adds a new ERLC record for a player.
869
+ * @param {string} robloxJoinCode The roblox join code to add the record to.
870
+ * @param {string} team The ERLC team to be player limit locked
871
+ * @param {number} maxPlayers The maximum amount of players that are allowed on the team
872
+ * @return {Promise} Promise object represents if the request was successful with reason for failure if needed.
873
+ * */
874
+ public async erlcTeamsLock(robloxJoinCode: string, team: globalTypes.ERLCTeams, maxPlayers: number): Promise<globalTypes.CMSERLCTeamsLockPromiseResult> {
875
+ return new Promise(async (resolve, reject) => {
876
+ try {
877
+ const erlcTeamsLockRequest: any = await this.rest?.request('ERLC_TEAMS_LOCK', robloxJoinCode, team, maxPlayers);
878
+ resolve({ success: true, reason: erlcTeamsLockRequest });
879
+ } catch (err) {
880
+ if (err instanceof APIError) {
881
+ resolve({ success: false, reason: err.response });
882
+ } else {
883
+ reject(err);
884
+ }
885
+ }
886
+ });
887
+ }
888
+
889
+ /**
890
+ * Adds a new ERLC record for a player.
891
+ * @param {string} robloxJoinCode The roblox join code to add the record to.
892
+ * @param {string} team The ERLC team to no longer be player limit locked
893
+ * @return {Promise} Promise object represents if the request was successful with reason for failure if needed.
894
+ * */
895
+ public async erlcTeamsUnlock(robloxJoinCode: string, team: globalTypes.ERLCTeams): Promise<globalTypes.CMSERLCTeamsUnlockPromiseResult> {
896
+ return new Promise(async (resolve, reject) => {
897
+ try {
898
+ const erlcTeamsLockRequest: any = await this.rest?.request('ERLC_TEAMS_UNLOCK', robloxJoinCode, team);
899
+ resolve({ success: true, reason: erlcTeamsLockRequest });
900
+ } catch (err) {
901
+ if (err instanceof APIError) {
902
+ resolve({ success: false, reason: err.response });
903
+ } else {
904
+ reject(err);
905
+ }
906
+ }
907
+ });
908
+ }
866
909
  }