- Introduced voiceover relationship to StoryBeats with AI-generated flag. - Added BeatVoiceover component for playing audio narrations with a minimal interface. - Updated StoryPage, StoryViewer, and StoryTableOfContents to display and handle voiceovers. - Created Voiceovers collection for uploading and managing audio narrations for beats. - Included migration script to support voiceover functionality in the database.
10108 lines
No EOL
249 KiB
TypeScript
10108 lines
No EOL
249 KiB
TypeScript
/* tslint:disable */
|
|
/* eslint-disable */
|
|
/**
|
|
* This file was automatically generated by Payload.
|
|
* DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config,
|
|
* and re-run `payload generate:types` to regenerate this file.
|
|
*/
|
|
|
|
/**
|
|
* Supported timezones in IANA format.
|
|
*
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "supportedTimezones".
|
|
*/
|
|
export type SupportedTimezones =
|
|
| 'Pacific/Midway'
|
|
| 'Pacific/Niue'
|
|
| 'Pacific/Honolulu'
|
|
| 'Pacific/Rarotonga'
|
|
| 'America/Anchorage'
|
|
| 'Pacific/Gambier'
|
|
| 'America/Los_Angeles'
|
|
| 'America/Tijuana'
|
|
| 'America/Denver'
|
|
| 'America/Phoenix'
|
|
| 'America/Chicago'
|
|
| 'America/Guatemala'
|
|
| 'America/New_York'
|
|
| 'America/Bogota'
|
|
| 'America/Caracas'
|
|
| 'America/Santiago'
|
|
| 'America/Buenos_Aires'
|
|
| 'America/Sao_Paulo'
|
|
| 'Atlantic/South_Georgia'
|
|
| 'Atlantic/Azores'
|
|
| 'Atlantic/Cape_Verde'
|
|
| 'Europe/London'
|
|
| 'Europe/Berlin'
|
|
| 'Africa/Lagos'
|
|
| 'Europe/Athens'
|
|
| 'Africa/Cairo'
|
|
| 'Europe/Moscow'
|
|
| 'Asia/Riyadh'
|
|
| 'Asia/Dubai'
|
|
| 'Asia/Baku'
|
|
| 'Asia/Karachi'
|
|
| 'Asia/Tashkent'
|
|
| 'Asia/Calcutta'
|
|
| 'Asia/Dhaka'
|
|
| 'Asia/Almaty'
|
|
| 'Asia/Jakarta'
|
|
| 'Asia/Bangkok'
|
|
| 'Asia/Shanghai'
|
|
| 'Asia/Singapore'
|
|
| 'Asia/Tokyo'
|
|
| 'Asia/Seoul'
|
|
| 'Australia/Brisbane'
|
|
| 'Australia/Sydney'
|
|
| 'Pacific/Guam'
|
|
| 'Pacific/Noumea'
|
|
| 'Pacific/Auckland'
|
|
| 'Pacific/Fiji';
|
|
|
|
export interface Config {
|
|
auth: {
|
|
users: UserAuthOperations;
|
|
'payload-mcp-api-keys': PayloadMcpApiKeyAuthOperations;
|
|
};
|
|
blocks: {};
|
|
collections: {
|
|
media: Media;
|
|
announcements: Announcement;
|
|
'game-hard-resources': GameHardResource;
|
|
'game-structures': GameStructure;
|
|
'game-vehicles': GameVehicle;
|
|
'game-npcs': GameNpc;
|
|
'npc-staffing': NpcStaffing;
|
|
'labor-classifications': LaborClassification;
|
|
'game-event-logs': GameEventLog;
|
|
users: User;
|
|
roles: Role;
|
|
ranks: Rank;
|
|
profiles: Profile;
|
|
awards: Award;
|
|
qualifications: Qualification;
|
|
assignments: Assignment;
|
|
'assignment-transfers': AssignmentTransfer;
|
|
experience: Experience;
|
|
'user-notifications': UserNotification;
|
|
evaluations: Evaluation;
|
|
'ribbon-submissions': RibbonSubmission;
|
|
missions: Mission;
|
|
'mission-attendances': MissionAttendance;
|
|
campaigns: Campaign;
|
|
factions: Faction;
|
|
technologies: Technology;
|
|
assets: Asset;
|
|
resources: Resource;
|
|
vehicles: Vehicle;
|
|
structures: Structure;
|
|
shipments: Shipment;
|
|
'bank-accounts': BankAccount;
|
|
'bank-transactions': BankTransaction;
|
|
'ledger-entries': LedgerEntry;
|
|
'locker-storages': LockerStorage;
|
|
loadouts: Loadout;
|
|
'market-listings': MarketListing;
|
|
'market-negotiations': MarketNegotiation;
|
|
'market-state': MarketState;
|
|
'voice-scripts': VoiceScript;
|
|
'voice-submissions': VoiceSubmission;
|
|
tickets: Ticket;
|
|
'ticket-votes': TicketVote;
|
|
'wiki-pages': WikiPage;
|
|
'wiki-revisions': WikiRevision;
|
|
'wiki-templates': WikiTemplate;
|
|
projects: Project;
|
|
sprints: Sprint;
|
|
releases: Release;
|
|
labels: Label;
|
|
maps: Map;
|
|
'map-roads': MapRoad;
|
|
'map-zones': MapZone;
|
|
'resource-nodes': ResourceNode;
|
|
'narrative-events': NarrativeEvent;
|
|
'story-beats': StoryBeat;
|
|
'story-beat-states': StoryBeatState;
|
|
'story-voiceovers': StoryVoiceover;
|
|
'mission-files': MissionFile;
|
|
'mod-lists': ModList;
|
|
'game-servers': GameServer;
|
|
'arma-sync-events': ArmaSyncEvent;
|
|
'arma-commands': ArmaCommand;
|
|
'respawn-tickets': RespawnTicket;
|
|
'supply-boxes': SupplyBox;
|
|
'operation-events': OperationEvent;
|
|
'operation-effects': OperationEffect;
|
|
'operation-reservations': OperationReservation;
|
|
'operation-readiness': OperationReadiness;
|
|
'zone-pressure': ZonePressure;
|
|
'custom-minefields': CustomMinefield;
|
|
'custom-minefield-scores': CustomMinefieldScore;
|
|
'custom-radio-tests': CustomRadioTest;
|
|
'custom-radio-test-scores': CustomRadioTestScore;
|
|
forms: Form;
|
|
'form-submissions': FormSubmission;
|
|
'plugin-ai-instructions': PluginAiInstruction;
|
|
'payload-mcp-api-keys': PayloadMcpApiKey;
|
|
'payload-kv': PayloadKv;
|
|
'payload-locked-documents': PayloadLockedDocument;
|
|
'payload-preferences': PayloadPreference;
|
|
'payload-migrations': PayloadMigration;
|
|
};
|
|
collectionsJoins: {
|
|
assignments: {
|
|
commandElement: 'assignments';
|
|
};
|
|
vehicles: {
|
|
requiredStructure: 'structures';
|
|
};
|
|
};
|
|
collectionsSelect: {
|
|
media: MediaSelect<false> | MediaSelect<true>;
|
|
announcements: AnnouncementsSelect<false> | AnnouncementsSelect<true>;
|
|
'game-hard-resources': GameHardResourcesSelect<false> | GameHardResourcesSelect<true>;
|
|
'game-structures': GameStructuresSelect<false> | GameStructuresSelect<true>;
|
|
'game-vehicles': GameVehiclesSelect<false> | GameVehiclesSelect<true>;
|
|
'game-npcs': GameNpcsSelect<false> | GameNpcsSelect<true>;
|
|
'npc-staffing': NpcStaffingSelect<false> | NpcStaffingSelect<true>;
|
|
'labor-classifications': LaborClassificationsSelect<false> | LaborClassificationsSelect<true>;
|
|
'game-event-logs': GameEventLogsSelect<false> | GameEventLogsSelect<true>;
|
|
users: UsersSelect<false> | UsersSelect<true>;
|
|
roles: RolesSelect<false> | RolesSelect<true>;
|
|
ranks: RanksSelect<false> | RanksSelect<true>;
|
|
profiles: ProfilesSelect<false> | ProfilesSelect<true>;
|
|
awards: AwardsSelect<false> | AwardsSelect<true>;
|
|
qualifications: QualificationsSelect<false> | QualificationsSelect<true>;
|
|
assignments: AssignmentsSelect<false> | AssignmentsSelect<true>;
|
|
'assignment-transfers': AssignmentTransfersSelect<false> | AssignmentTransfersSelect<true>;
|
|
experience: ExperienceSelect<false> | ExperienceSelect<true>;
|
|
'user-notifications': UserNotificationsSelect<false> | UserNotificationsSelect<true>;
|
|
evaluations: EvaluationsSelect<false> | EvaluationsSelect<true>;
|
|
'ribbon-submissions': RibbonSubmissionsSelect<false> | RibbonSubmissionsSelect<true>;
|
|
missions: MissionsSelect<false> | MissionsSelect<true>;
|
|
'mission-attendances': MissionAttendancesSelect<false> | MissionAttendancesSelect<true>;
|
|
campaigns: CampaignsSelect<false> | CampaignsSelect<true>;
|
|
factions: FactionsSelect<false> | FactionsSelect<true>;
|
|
technologies: TechnologiesSelect<false> | TechnologiesSelect<true>;
|
|
assets: AssetsSelect<false> | AssetsSelect<true>;
|
|
resources: ResourcesSelect<false> | ResourcesSelect<true>;
|
|
vehicles: VehiclesSelect<false> | VehiclesSelect<true>;
|
|
structures: StructuresSelect<false> | StructuresSelect<true>;
|
|
shipments: ShipmentsSelect<false> | ShipmentsSelect<true>;
|
|
'bank-accounts': BankAccountsSelect<false> | BankAccountsSelect<true>;
|
|
'bank-transactions': BankTransactionsSelect<false> | BankTransactionsSelect<true>;
|
|
'ledger-entries': LedgerEntriesSelect<false> | LedgerEntriesSelect<true>;
|
|
'locker-storages': LockerStoragesSelect<false> | LockerStoragesSelect<true>;
|
|
loadouts: LoadoutsSelect<false> | LoadoutsSelect<true>;
|
|
'market-listings': MarketListingsSelect<false> | MarketListingsSelect<true>;
|
|
'market-negotiations': MarketNegotiationsSelect<false> | MarketNegotiationsSelect<true>;
|
|
'market-state': MarketStateSelect<false> | MarketStateSelect<true>;
|
|
'voice-scripts': VoiceScriptsSelect<false> | VoiceScriptsSelect<true>;
|
|
'voice-submissions': VoiceSubmissionsSelect<false> | VoiceSubmissionsSelect<true>;
|
|
tickets: TicketsSelect<false> | TicketsSelect<true>;
|
|
'ticket-votes': TicketVotesSelect<false> | TicketVotesSelect<true>;
|
|
'wiki-pages': WikiPagesSelect<false> | WikiPagesSelect<true>;
|
|
'wiki-revisions': WikiRevisionsSelect<false> | WikiRevisionsSelect<true>;
|
|
'wiki-templates': WikiTemplatesSelect<false> | WikiTemplatesSelect<true>;
|
|
projects: ProjectsSelect<false> | ProjectsSelect<true>;
|
|
sprints: SprintsSelect<false> | SprintsSelect<true>;
|
|
releases: ReleasesSelect<false> | ReleasesSelect<true>;
|
|
labels: LabelsSelect<false> | LabelsSelect<true>;
|
|
maps: MapsSelect<false> | MapsSelect<true>;
|
|
'map-roads': MapRoadsSelect<false> | MapRoadsSelect<true>;
|
|
'map-zones': MapZonesSelect<false> | MapZonesSelect<true>;
|
|
'resource-nodes': ResourceNodesSelect<false> | ResourceNodesSelect<true>;
|
|
'narrative-events': NarrativeEventsSelect<false> | NarrativeEventsSelect<true>;
|
|
'story-beats': StoryBeatsSelect<false> | StoryBeatsSelect<true>;
|
|
'story-beat-states': StoryBeatStatesSelect<false> | StoryBeatStatesSelect<true>;
|
|
'story-voiceovers': StoryVoiceoversSelect<false> | StoryVoiceoversSelect<true>;
|
|
'mission-files': MissionFilesSelect<false> | MissionFilesSelect<true>;
|
|
'mod-lists': ModListsSelect<false> | ModListsSelect<true>;
|
|
'game-servers': GameServersSelect<false> | GameServersSelect<true>;
|
|
'arma-sync-events': ArmaSyncEventsSelect<false> | ArmaSyncEventsSelect<true>;
|
|
'arma-commands': ArmaCommandsSelect<false> | ArmaCommandsSelect<true>;
|
|
'respawn-tickets': RespawnTicketsSelect<false> | RespawnTicketsSelect<true>;
|
|
'supply-boxes': SupplyBoxesSelect<false> | SupplyBoxesSelect<true>;
|
|
'operation-events': OperationEventsSelect<false> | OperationEventsSelect<true>;
|
|
'operation-effects': OperationEffectsSelect<false> | OperationEffectsSelect<true>;
|
|
'operation-reservations': OperationReservationsSelect<false> | OperationReservationsSelect<true>;
|
|
'operation-readiness': OperationReadinessSelect<false> | OperationReadinessSelect<true>;
|
|
'zone-pressure': ZonePressureSelect<false> | ZonePressureSelect<true>;
|
|
'custom-minefields': CustomMinefieldsSelect<false> | CustomMinefieldsSelect<true>;
|
|
'custom-minefield-scores': CustomMinefieldScoresSelect<false> | CustomMinefieldScoresSelect<true>;
|
|
'custom-radio-tests': CustomRadioTestsSelect<false> | CustomRadioTestsSelect<true>;
|
|
'custom-radio-test-scores': CustomRadioTestScoresSelect<false> | CustomRadioTestScoresSelect<true>;
|
|
forms: FormsSelect<false> | FormsSelect<true>;
|
|
'form-submissions': FormSubmissionsSelect<false> | FormSubmissionsSelect<true>;
|
|
'plugin-ai-instructions': PluginAiInstructionsSelect<false> | PluginAiInstructionsSelect<true>;
|
|
'payload-mcp-api-keys': PayloadMcpApiKeysSelect<false> | PayloadMcpApiKeysSelect<true>;
|
|
'payload-kv': PayloadKvSelect<false> | PayloadKvSelect<true>;
|
|
'payload-locked-documents': PayloadLockedDocumentsSelect<false> | PayloadLockedDocumentsSelect<true>;
|
|
'payload-preferences': PayloadPreferencesSelect<false> | PayloadPreferencesSelect<true>;
|
|
'payload-migrations': PayloadMigrationsSelect<false> | PayloadMigrationsSelect<true>;
|
|
};
|
|
db: {
|
|
defaultIDType: number;
|
|
};
|
|
fallbackLocale: null;
|
|
globals: {
|
|
'game-rules': GameRule;
|
|
shims: Shim;
|
|
};
|
|
globalsSelect: {
|
|
'game-rules': GameRulesSelect<false> | GameRulesSelect<true>;
|
|
shims: ShimsSelect<false> | ShimsSelect<true>;
|
|
};
|
|
locale: null;
|
|
widgets: {
|
|
collections: CollectionsWidget;
|
|
};
|
|
user: User | PayloadMcpApiKey;
|
|
jobs: {
|
|
tasks: unknown;
|
|
workflows: unknown;
|
|
};
|
|
}
|
|
export interface UserAuthOperations {
|
|
forgotPassword: {
|
|
username: string;
|
|
};
|
|
login: {
|
|
password: string;
|
|
username: string;
|
|
};
|
|
registerFirstUser: {
|
|
password: string;
|
|
username: string;
|
|
};
|
|
unlock: {
|
|
username: string;
|
|
};
|
|
}
|
|
export interface PayloadMcpApiKeyAuthOperations {
|
|
forgotPassword: {
|
|
email: string;
|
|
password: string;
|
|
};
|
|
login: {
|
|
email: string;
|
|
password: string;
|
|
};
|
|
registerFirstUser: {
|
|
email: string;
|
|
password: string;
|
|
};
|
|
unlock: {
|
|
email: string;
|
|
password: string;
|
|
};
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "media".
|
|
*/
|
|
export interface Media {
|
|
id: number;
|
|
alt?: string | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
url?: string | null;
|
|
thumbnailURL?: string | null;
|
|
filename?: string | null;
|
|
mimeType?: string | null;
|
|
filesize?: number | null;
|
|
width?: number | null;
|
|
height?: number | null;
|
|
focalX?: number | null;
|
|
focalY?: number | null;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "announcements".
|
|
*/
|
|
export interface Announcement {
|
|
id: number;
|
|
/**
|
|
* Headline shown in every display type.
|
|
*/
|
|
title: string;
|
|
/**
|
|
* Optional secondary line shown under the title.
|
|
*/
|
|
subtitle?: string | null;
|
|
/**
|
|
* Optional longer body text (rendered with formatting on the frontend).
|
|
*/
|
|
description?: {
|
|
root: {
|
|
type: string;
|
|
children: {
|
|
type: any;
|
|
version: number;
|
|
[k: string]: unknown;
|
|
}[];
|
|
direction: ('ltr' | 'rtl') | null;
|
|
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
indent: number;
|
|
version: number;
|
|
};
|
|
[k: string]: unknown;
|
|
} | null;
|
|
/**
|
|
* Colors the announcement (and the toast style).
|
|
*/
|
|
variant: 'info' | 'success' | 'warning' | 'error';
|
|
/**
|
|
* How the announcement is presented. Dialogs show their configured buttons; modals get a default OK button when none are set.
|
|
*/
|
|
displayType: 'banner' | 'modal' | 'dialog' | 'toast';
|
|
/**
|
|
* Disabled announcements are never shown, regardless of targeting rules.
|
|
*/
|
|
enabled?: boolean | null;
|
|
/**
|
|
* Whether the user can dismiss it for this browser until its window ends. Non-dismissible announcements reappear on every page load while active.
|
|
*/
|
|
dismissible?: boolean | null;
|
|
/**
|
|
* Optional. The announcement is not shown before this moment.
|
|
*/
|
|
activeFrom?: string | null;
|
|
/**
|
|
* Optional. The announcement stops being shown after this moment.
|
|
*/
|
|
activeUntil?: string | null;
|
|
/**
|
|
* Optional action buttons (used by confirmation dialogs and modals; banners and toasts show them inline where supported).
|
|
*/
|
|
buttons?:
|
|
| {
|
|
label: string;
|
|
/**
|
|
* Optional internal path to navigate to when clicked (e.g. '/logistics/shipments'). Leave empty for a close-only button.
|
|
*/
|
|
href?: string | null;
|
|
style?: ('default' | 'outline' | 'destructive') | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
/**
|
|
* Who should this announcement be shown to?
|
|
*/
|
|
targeting: {
|
|
audience: 'all' | 'users' | 'roles';
|
|
/**
|
|
* Only these specific users will see this announcement.
|
|
*/
|
|
users?: (number | User)[] | null;
|
|
/**
|
|
* Users holding any of these roles (the dynamic Roles collection) will see this announcement.
|
|
*/
|
|
roles?: (number | Role)[] | null;
|
|
};
|
|
/**
|
|
* On which pages should this announcement be shown?
|
|
*/
|
|
paths: {
|
|
matchType: 'all' | 'include' | 'exclude';
|
|
/**
|
|
* URL path prefixes to match. E.g. '/logistics' matches /logistics and /logistics/market. Leading slash required.
|
|
*/
|
|
paths?: string[] | null;
|
|
};
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "users".
|
|
*/
|
|
export interface User {
|
|
id: number;
|
|
discordUsername: string;
|
|
discordId?: string | null;
|
|
displayName: string;
|
|
payloadDisplayName?: string | null;
|
|
steamId: string;
|
|
/**
|
|
* Legacy role enum, being replaced by the dynamic RBAC system (see 'Role Assignments' below).
|
|
*/
|
|
roles?: ('guest' | 'user' | 'trusted' | 'admin' | 'developer')[] | null;
|
|
/**
|
|
* Dynamic RBAC role assignments. These determine the user's permissions via the roles collection.
|
|
*/
|
|
roleDocs?: (number | Role)[] | null;
|
|
preferences?: {
|
|
notifications?: {
|
|
mutedAll?: boolean | null;
|
|
mutedTypes?:
|
|
| (
|
|
| 'market:offer'
|
|
| 'market:counter'
|
|
| 'market:accept'
|
|
| 'market:reject'
|
|
| 'market:withdrawn'
|
|
| 'market:closed'
|
|
| 'market:sold'
|
|
| 'market:expired'
|
|
| 'award:granted'
|
|
| 'account:discord-request'
|
|
| 'finance:deposit'
|
|
| 'finance:withdraw'
|
|
| 'finance:transfer'
|
|
| 'shipment:completed'
|
|
| 'ticket:created'
|
|
| 'ticket:assigned'
|
|
| 'ticket:reply'
|
|
| 'ticket:status'
|
|
| 'poker:force-ended'
|
|
| 'poker:everyone-left'
|
|
| 'blackjack:force-ended'
|
|
| 'blackjack:everyone-left'
|
|
)[]
|
|
| null;
|
|
};
|
|
display?: {
|
|
showCallsign?: boolean | null;
|
|
leadOrActual?: ('lead' | 'actual') | null;
|
|
showVersionOverlay?: boolean | null;
|
|
xpDisplayMini?: boolean | null;
|
|
showBackgroundTexture?: boolean | null;
|
|
};
|
|
discord?: {
|
|
enabled?: boolean | null;
|
|
mutedTypes?:
|
|
| (
|
|
| 'market:offer'
|
|
| 'market:counter'
|
|
| 'market:accept'
|
|
| 'market:reject'
|
|
| 'market:withdrawn'
|
|
| 'market:closed'
|
|
| 'market:sold'
|
|
| 'market:expired'
|
|
| 'award:granted'
|
|
| 'account:discord-request'
|
|
| 'finance:deposit'
|
|
| 'finance:withdraw'
|
|
| 'finance:transfer'
|
|
| 'shipment:completed'
|
|
| 'ticket:created'
|
|
| 'ticket:assigned'
|
|
| 'ticket:reply'
|
|
| 'ticket:status'
|
|
| 'poker:force-ended'
|
|
| 'poker:everyone-left'
|
|
| 'blackjack:force-ended'
|
|
| 'blackjack:everyone-left'
|
|
)[]
|
|
| null;
|
|
};
|
|
dashboard?: {
|
|
layout?:
|
|
| {
|
|
[k: string]: unknown;
|
|
}
|
|
| unknown[]
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null;
|
|
};
|
|
};
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
email?: string | null;
|
|
username: string;
|
|
resetPasswordToken?: string | null;
|
|
resetPasswordExpiration?: string | null;
|
|
salt?: string | null;
|
|
hash?: string | null;
|
|
loginAttempts?: number | null;
|
|
lockUntil?: string | null;
|
|
sessions?:
|
|
| {
|
|
id: string;
|
|
createdAt?: string | null;
|
|
expiresAt: string;
|
|
}[]
|
|
| null;
|
|
password?: string | null;
|
|
collection: 'users';
|
|
}
|
|
/**
|
|
* Dynamic roles for the RBAC permission system. Assign permissions to roles, then assign roles to users.
|
|
*
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "roles".
|
|
*/
|
|
export interface Role {
|
|
id: number;
|
|
/**
|
|
* Display name for this role, e.g. 'Logistics Officer'.
|
|
*/
|
|
name: string;
|
|
/**
|
|
* Machine-readable key. Built-in roles: 'guest', 'user', 'admin', 'developer'. Used by seed scripts and the Discord bot to look up roles by key.
|
|
*/
|
|
slug: string;
|
|
/**
|
|
* Optional notes about what this role is for.
|
|
*/
|
|
description?: string | null;
|
|
/**
|
|
* Permissions granted by this role. The full list is defined in src/permissions/index.ts.
|
|
*/
|
|
permissions?:
|
|
| (
|
|
| 'system:admin-access'
|
|
| 'media:create'
|
|
| 'media:read'
|
|
| 'media:update'
|
|
| 'media:delete'
|
|
| 'admin:media:manage'
|
|
| 'users:create'
|
|
| 'users:read'
|
|
| 'users:update'
|
|
| 'users:delete'
|
|
| 'users:unlock'
|
|
| 'users:assign-roles'
|
|
| 'admin:users:manage'
|
|
| 'roles:create'
|
|
| 'roles:read'
|
|
| 'roles:update'
|
|
| 'roles:delete'
|
|
| 'admin:roles:manage'
|
|
| 'ranks:create'
|
|
| 'ranks:read'
|
|
| 'ranks:update'
|
|
| 'ranks:delete'
|
|
| 'admin:ranks:manage'
|
|
| 'profiles:create'
|
|
| 'profiles:read'
|
|
| 'profiles:update'
|
|
| 'profiles:delete'
|
|
| 'admin:profiles:manage'
|
|
| 'awards:create'
|
|
| 'awards:read'
|
|
| 'awards:update'
|
|
| 'awards:delete'
|
|
| 'admin:awards:manage'
|
|
| 'qualifications:create'
|
|
| 'qualifications:read'
|
|
| 'qualifications:update'
|
|
| 'qualifications:delete'
|
|
| 'admin:qualifications:manage'
|
|
| 'assignments:create'
|
|
| 'assignments:read'
|
|
| 'assignments:update'
|
|
| 'assignments:delete'
|
|
| 'admin:assignments:manage'
|
|
| 'assignment-transfers:create'
|
|
| 'assignment-transfers:read'
|
|
| 'assignment-transfers:update'
|
|
| 'assignment-transfers:delete'
|
|
| 'admin:assignment-transfers:manage'
|
|
| 'experience:create'
|
|
| 'experience:read'
|
|
| 'experience:update'
|
|
| 'experience:delete'
|
|
| 'admin:experience:manage'
|
|
| 'user-notifications:create'
|
|
| 'user-notifications:read'
|
|
| 'user-notifications:update'
|
|
| 'user-notifications:delete'
|
|
| 'admin:user-notifications:manage'
|
|
| 'evaluations:create'
|
|
| 'evaluations:read'
|
|
| 'evaluations:update'
|
|
| 'evaluations:delete'
|
|
| 'admin:evaluations:manage'
|
|
| 'missions:create'
|
|
| 'missions:read'
|
|
| 'missions:update'
|
|
| 'missions:delete'
|
|
| 'missions:read-sensitive'
|
|
| 'admin:missions:manage'
|
|
| 'mission-attendances:create'
|
|
| 'mission-attendances:read'
|
|
| 'mission-attendances:update'
|
|
| 'mission-attendances:delete'
|
|
| 'admin:mission-attendances:manage'
|
|
| 'campaigns:create'
|
|
| 'campaigns:read'
|
|
| 'campaigns:update'
|
|
| 'campaigns:delete'
|
|
| 'admin:campaigns:manage'
|
|
| 'campaigns:manage'
|
|
| 'factions:create'
|
|
| 'factions:read'
|
|
| 'factions:update'
|
|
| 'factions:delete'
|
|
| 'admin:factions:manage'
|
|
| 'technologies:create'
|
|
| 'technologies:read'
|
|
| 'technologies:update'
|
|
| 'technologies:delete'
|
|
| 'admin:technologies:manage'
|
|
| 'assets:create'
|
|
| 'assets:read'
|
|
| 'assets:update'
|
|
| 'assets:delete'
|
|
| 'admin:assets:manage'
|
|
| 'resources:create'
|
|
| 'resources:read'
|
|
| 'resources:update'
|
|
| 'resources:delete'
|
|
| 'admin:resources:manage'
|
|
| 'vehicles:create'
|
|
| 'vehicles:read'
|
|
| 'vehicles:update'
|
|
| 'vehicles:delete'
|
|
| 'admin:vehicles:manage'
|
|
| 'structures:create'
|
|
| 'structures:read'
|
|
| 'structures:update'
|
|
| 'structures:delete'
|
|
| 'admin:structures:manage'
|
|
| 'shipments:create'
|
|
| 'shipments:read'
|
|
| 'shipments:update'
|
|
| 'shipments:delete'
|
|
| 'admin:shipments:manage'
|
|
| 'bank-accounts:create'
|
|
| 'bank-accounts:read'
|
|
| 'bank-accounts:update'
|
|
| 'bank-accounts:delete'
|
|
| 'admin:bank-accounts:manage'
|
|
| 'bank-transactions:create'
|
|
| 'bank-transactions:read'
|
|
| 'bank-transactions:update'
|
|
| 'bank-transactions:delete'
|
|
| 'admin:bank-transactions:manage'
|
|
| 'ledger-entries:create'
|
|
| 'ledger-entries:read'
|
|
| 'ledger-entries:update'
|
|
| 'ledger-entries:delete'
|
|
| 'admin:ledger-entries:manage'
|
|
| 'locker-storages:create'
|
|
| 'locker-storages:read'
|
|
| 'locker-storages:update'
|
|
| 'locker-storages:delete'
|
|
| 'admin:locker-storages:manage'
|
|
| 'loadouts:create'
|
|
| 'loadouts:read'
|
|
| 'loadouts:update'
|
|
| 'loadouts:delete'
|
|
| 'admin:loadouts:manage'
|
|
| 'market-listings:create'
|
|
| 'market-listings:read'
|
|
| 'market-listings:update'
|
|
| 'market-listings:delete'
|
|
| 'admin:market-listings:manage'
|
|
| 'market-negotiations:create'
|
|
| 'market-negotiations:read'
|
|
| 'market-negotiations:update'
|
|
| 'market-negotiations:delete'
|
|
| 'admin:market-negotiations:manage'
|
|
| 'market-state:create'
|
|
| 'market-state:read'
|
|
| 'market-state:update'
|
|
| 'market-state:delete'
|
|
| 'admin:market-state:manage'
|
|
| 'projects:create'
|
|
| 'projects:read'
|
|
| 'projects:update'
|
|
| 'projects:delete'
|
|
| 'admin:projects:manage'
|
|
| 'labels:create'
|
|
| 'labels:read'
|
|
| 'labels:update'
|
|
| 'labels:delete'
|
|
| 'admin:labels:manage'
|
|
| 'sprints:create'
|
|
| 'sprints:read'
|
|
| 'sprints:update'
|
|
| 'sprints:delete'
|
|
| 'admin:sprints:manage'
|
|
| 'releases:create'
|
|
| 'releases:read'
|
|
| 'releases:update'
|
|
| 'releases:delete'
|
|
| 'admin:releases:manage'
|
|
| 'tickets:create'
|
|
| 'tickets:read'
|
|
| 'tickets:update'
|
|
| 'tickets:delete'
|
|
| 'admin:tickets:manage'
|
|
| 'ticket-votes:create'
|
|
| 'ticket-votes:read'
|
|
| 'ticket-votes:update'
|
|
| 'ticket-votes:delete'
|
|
| 'admin:ticket-votes:manage'
|
|
| 'game-structures:create'
|
|
| 'game-structures:read'
|
|
| 'game-structures:update'
|
|
| 'game-structures:delete'
|
|
| 'admin:game-structures:manage'
|
|
| 'game-vehicles:create'
|
|
| 'game-vehicles:read'
|
|
| 'game-vehicles:update'
|
|
| 'game-vehicles:delete'
|
|
| 'admin:game-vehicles:manage'
|
|
| 'game-npcs:create'
|
|
| 'game-npcs:read'
|
|
| 'game-npcs:update'
|
|
| 'game-npcs:delete'
|
|
| 'admin:game-npcs:manage'
|
|
| 'game-hard-resources:create'
|
|
| 'game-hard-resources:read'
|
|
| 'game-hard-resources:update'
|
|
| 'game-hard-resources:delete'
|
|
| 'admin:game-hard-resources:manage'
|
|
| 'game-event-logs:create'
|
|
| 'game-event-logs:read'
|
|
| 'game-event-logs:update'
|
|
| 'game-event-logs:delete'
|
|
| 'admin:game-event-logs:manage'
|
|
| 'maps:create'
|
|
| 'maps:read'
|
|
| 'maps:update'
|
|
| 'maps:delete'
|
|
| 'admin:maps:manage'
|
|
| 'map-roads:read'
|
|
| 'admin:map-roads:manage'
|
|
| 'map-zones:read'
|
|
| 'admin:map-zones:manage'
|
|
| 'resource-nodes:read'
|
|
| 'admin:resource-nodes:manage'
|
|
| 'narrative-events:create'
|
|
| 'narrative-events:read'
|
|
| 'narrative-events:update'
|
|
| 'narrative-events:delete'
|
|
| 'admin:narrative-events:manage'
|
|
| 'mission-files:create'
|
|
| 'mission-files:read'
|
|
| 'mission-files:update'
|
|
| 'mission-files:delete'
|
|
| 'admin:mission-files:manage'
|
|
| 'mod-lists:create'
|
|
| 'mod-lists:read'
|
|
| 'mod-lists:update'
|
|
| 'mod-lists:delete'
|
|
| 'admin:mod-lists:manage'
|
|
| 'respawn-tickets:create'
|
|
| 'respawn-tickets:read'
|
|
| 'respawn-tickets:update'
|
|
| 'respawn-tickets:delete'
|
|
| 'admin:respawn-tickets:manage'
|
|
| 'game-servers:create'
|
|
| 'game-servers:read'
|
|
| 'game-servers:update'
|
|
| 'game-servers:delete'
|
|
| 'admin:game-servers:manage'
|
|
| 'arma-sync-events:create'
|
|
| 'arma-sync-events:read'
|
|
| 'arma-sync-events:update'
|
|
| 'arma-sync-events:delete'
|
|
| 'admin:arma-sync-events:manage'
|
|
| 'arma-commands:create'
|
|
| 'arma-commands:read'
|
|
| 'arma-commands:update'
|
|
| 'arma-commands:delete'
|
|
| 'admin:arma-commands:manage'
|
|
| 'operation-events:create'
|
|
| 'operation-events:read'
|
|
| 'operation-events:update'
|
|
| 'operation-events:delete'
|
|
| 'admin:operation-events:manage'
|
|
| 'operation-effects:create'
|
|
| 'operation-effects:read'
|
|
| 'operation-effects:update'
|
|
| 'operation-effects:delete'
|
|
| 'admin:operation-effects:manage'
|
|
| 'operation-reservations:create'
|
|
| 'operation-reservations:read'
|
|
| 'operation-reservations:update'
|
|
| 'operation-reservations:delete'
|
|
| 'admin:operation-reservations:manage'
|
|
| 'operation-readiness:create'
|
|
| 'operation-readiness:read'
|
|
| 'operation-readiness:update'
|
|
| 'operation-readiness:delete'
|
|
| 'admin:operation-readiness:manage'
|
|
| 'zone-pressure:create'
|
|
| 'zone-pressure:read'
|
|
| 'zone-pressure:update'
|
|
| 'zone-pressure:delete'
|
|
| 'admin:zone-pressure:manage'
|
|
| 'announcements:create'
|
|
| 'announcements:read'
|
|
| 'announcements:update'
|
|
| 'announcements:delete'
|
|
| 'admin:announcements:manage'
|
|
| 'forms:create'
|
|
| 'forms:read'
|
|
| 'forms:update'
|
|
| 'forms:delete'
|
|
| 'form-submissions:read'
|
|
| 'form-submissions:delete'
|
|
| 'admin:forms:manage'
|
|
| 'admin:form-submissions:manage'
|
|
| 'game-rules:read'
|
|
| 'game-rules:update'
|
|
| 'shims:read'
|
|
| 'shims:update'
|
|
| 'logistics:manage'
|
|
| 'intelligence:manage'
|
|
| 'profiles:intel_excerpt:update'
|
|
| 'banking:manage'
|
|
| 'tickets:staff'
|
|
| 'discord:staff'
|
|
| 'discord:announce'
|
|
| 'custom-minefields:update'
|
|
| 'custom-minefields:delete'
|
|
| 'custom-minefield-scores:delete'
|
|
| 'custom-radio-tests:update'
|
|
| 'custom-radio-tests:delete'
|
|
| 'custom-radio-test-scores:delete'
|
|
)[]
|
|
| null;
|
|
/**
|
|
* Parent roles to inherit permissions and settings from. Inheriting from a superuser role makes this role a superuser. Restricted to developers.
|
|
*/
|
|
parentRoles?: (number | Role)[] | null;
|
|
/**
|
|
* System roles are built-in and cannot be deleted. They can still be edited (e.g. to change their permissions).
|
|
*/
|
|
isSystem?: boolean | null;
|
|
/**
|
|
* Superuser roles bypass ALL permission checks. Use with extreme caution: this grants unrestricted access.
|
|
*/
|
|
isSuperuser?: boolean | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* "Hard Resources" represent the hard-coded, integral resource types used to power the game. It includes things like Intelligence Points, Command Points, and other non-physical resources that are essential for gameplay mechanics. Unlike regular ("soft") resources, hard resources are not calculated by transactions and are instead stored as numeric amounts that are updated by the backend. Soft resources are designed by the players, are defined in the Resources category under Logistics, and are calculated by transactions (ledgers) to ensure their accuracy.
|
|
*
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "game-hard-resources".
|
|
*/
|
|
export interface GameHardResource {
|
|
id: number;
|
|
name: string;
|
|
amount: number;
|
|
description: {
|
|
root: {
|
|
type: string;
|
|
children: {
|
|
type: any;
|
|
version: number;
|
|
[k: string]: unknown;
|
|
}[];
|
|
direction: ('ltr' | 'rtl') | null;
|
|
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
indent: number;
|
|
version: number;
|
|
};
|
|
[k: string]: unknown;
|
|
};
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "game-structures".
|
|
*/
|
|
export interface GameStructure {
|
|
id: number;
|
|
/**
|
|
* The name of the structure as displayed in-game and on the frontend.
|
|
*/
|
|
name: string;
|
|
/**
|
|
* The type of structure this is.
|
|
*/
|
|
type: number | Structure;
|
|
/**
|
|
* The faction that owns this structure.
|
|
*/
|
|
faction?: (number | null) | Faction;
|
|
/**
|
|
* The game map this structure sits on.
|
|
*/
|
|
map?: (number | null) | Map;
|
|
/**
|
|
* Placed sites start awaiting materials. Once all blueprint materials are delivered construction starts immediately (timestamps below); the game tick flips past-deadline building sites to complete.
|
|
*/
|
|
constructionStatus?: ('awaiting_materials' | 'building' | 'complete') | null;
|
|
/**
|
|
* When construction began (materials consumed). Empty while awaiting materials.
|
|
*/
|
|
constructionStartedAt?: string | null;
|
|
/**
|
|
* The exact deadline at which the site becomes operational.
|
|
*/
|
|
constructionCompletesAt?: string | null;
|
|
/**
|
|
* Funds charged per base tick for structure upkeep, separate from staff salaries.
|
|
*/
|
|
maintenanceCost?: number | null;
|
|
/**
|
|
* Which labor classifications this structure needs. Empty = no labor crews can be assigned here.
|
|
*/
|
|
laborRequirements?:
|
|
| {
|
|
classification: number | LaborClassification;
|
|
/**
|
|
* Informational staffing target shown to logistics officers.
|
|
*/
|
|
requiredHeadcount: number;
|
|
/**
|
|
* Hard cap for this classification. Zero or empty means it cannot be hired here.
|
|
*/
|
|
maxHeadcount?: number | null;
|
|
/**
|
|
* When set, workers of this classification are always paid this wage; hirers cannot change it.
|
|
*/
|
|
enforcedSalary?: number | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
/**
|
|
* Which named staff position types this structure accepts. Empty = no named staff can be assigned here.
|
|
*/
|
|
staffPositions?:
|
|
| {
|
|
positionType: 'administrative' | 'technical' | 'other';
|
|
/**
|
|
* Maximum simultaneous named staff of this type. Empty means unlimited.
|
|
*/
|
|
max?: number | null;
|
|
/**
|
|
* When set, named staff of this type are always paid this salary.
|
|
*/
|
|
enforcedSalary?: number | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
productionInputs?:
|
|
| {
|
|
resource: number | Resource;
|
|
/**
|
|
* Units processed per real hour while running and staffed.
|
|
*/
|
|
amountPerHour: number;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
productionOutputs?:
|
|
| {
|
|
resource: number | Resource;
|
|
/**
|
|
* Units processed per real hour while running and staffed.
|
|
*/
|
|
amountPerHour: number;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
/**
|
|
* Managed by the install/uninstall module actions.
|
|
*/
|
|
installedModules?:
|
|
| {
|
|
name: string;
|
|
installedAt?: string | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
/**
|
|
* When checked the structure stops producing until unchecked.
|
|
*/
|
|
productionPaused?: boolean | null;
|
|
/**
|
|
* Last game tick that ran this structure's recipe.
|
|
*/
|
|
lastProductionAt?: string | null;
|
|
/**
|
|
* Why production is not running: no_labor, missing_inputs, storage_full. Empty = running.
|
|
*/
|
|
productionStallReason?: string | null;
|
|
/**
|
|
* Map meters [x, y] on the structure's game map (not geographic degrees).
|
|
*
|
|
* @minItems 2
|
|
* @maxItems 2
|
|
*/
|
|
coordinates?: [number, number] | null;
|
|
/**
|
|
* Renders the structure's name on the map. When several structures cluster together, the highest-priority label wins until you zoom in.
|
|
*/
|
|
labelVisible?: boolean | null;
|
|
/**
|
|
* Label priority for clustering (0-100). Higher wins when structures overlap at low zoom; ties break by stored mass.
|
|
*/
|
|
labelPriority?: number | null;
|
|
/**
|
|
* Set when this building is part of a compound: its storage pools into the hub, which carries the compound's map label and ribbon.
|
|
*/
|
|
parentStructure?: (number | null) | GameStructure;
|
|
storedResources?:
|
|
| {
|
|
resource: number | Resource;
|
|
amount: number;
|
|
/**
|
|
* Column position in the inventory grid (0-indexed).
|
|
*/
|
|
gridX: number;
|
|
/**
|
|
* Row position in the inventory grid (0-indexed).
|
|
*/
|
|
gridY: number;
|
|
/**
|
|
* Whether this item is rotated 90 degrees (swaps width and height).
|
|
*/
|
|
rotated?: boolean | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
/**
|
|
* Items that no longer fit in the grid after a resize, stored here until retrieved.
|
|
*/
|
|
voidStorage?:
|
|
| {
|
|
resource: number | Resource;
|
|
amount: number;
|
|
gridX: number;
|
|
gridY: number;
|
|
rotated?: boolean | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "structures".
|
|
*/
|
|
export interface Structure {
|
|
id: number;
|
|
/**
|
|
* The display name (e.g., "Forward Operating Base").
|
|
*/
|
|
name: string;
|
|
/**
|
|
* Internal ID for scripts (e.g., "fob_alpha_tier1").
|
|
*/
|
|
codeName: string;
|
|
/**
|
|
* Mark whether this structure is ready for developer approval and implementation into the live environment.
|
|
*/
|
|
approvalStatus: 'in_progress' | 'ready_for_review' | 'approved' | 'rejected' | 'revision_requested';
|
|
/**
|
|
* A detailed description of the structure, including details like tactical advantages, resource production, and/or world lore regarding this structure.
|
|
*/
|
|
description: {
|
|
root: {
|
|
type: string;
|
|
children: {
|
|
type: any;
|
|
version: number;
|
|
[k: string]: unknown;
|
|
}[];
|
|
direction: ('ltr' | 'rtl') | null;
|
|
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
indent: number;
|
|
version: number;
|
|
};
|
|
[k: string]: unknown;
|
|
};
|
|
/**
|
|
* An image depicting the structure. While not required, it is highly recommended as the existence of an image will affect the layout of the structure's page on the front-end.
|
|
*/
|
|
image?: (number | null) | Media;
|
|
category: 'logistics' | 'military' | 'civilian';
|
|
materials: {
|
|
resource: number | Resource;
|
|
amount?: number | null;
|
|
id?: string | null;
|
|
}[];
|
|
/**
|
|
* How many real minutes it takes to complete construction of this structure after materials are delivered and building starts.
|
|
*/
|
|
constructionDurationMinutes: number;
|
|
/**
|
|
* Effective crew needed for the listed build time. 0 builds at full speed with no labor. Understaffed sites build proportionally slower.
|
|
*/
|
|
constructionCrewRequired?: number | null;
|
|
/**
|
|
* What research must be done before this can be built.
|
|
*/
|
|
requiredTech?: (number | Technology)[] | null;
|
|
/**
|
|
* If true, this structure can only be constructed as the result of an upgrade to an existing structure. If false, this structure can be constructed independently of any other structure's upgrade tree, even if another structure can upgrade into this one.
|
|
*/
|
|
requiresUpgrade?: boolean | null;
|
|
/**
|
|
* When this structure is upgraded, it becomes this type of structure. Note that the costs of the new structure apply - if this field is set, the new structure's build costs will still be consumed when this building is upgraded. To make it cheaper to upgrade, lower the "Upgrade Cost Multiplier".
|
|
*/
|
|
upgradesInto?: (number | null) | Structure;
|
|
/**
|
|
* The multiplier applied to the base build cost of the structure being upgraded into. A value of one (1) means the cost will exactly equal the structure's normal build cost, while a value of zero (0) would make the upgrade entirely free, only taking up construction time instead.
|
|
*/
|
|
upgradeCostMultiplier?: number | null;
|
|
terrainType: 'land' | 'water';
|
|
/**
|
|
* What resources, if any, must be within a certain distance of this structure on placement.
|
|
*/
|
|
resourcesInRange?:
|
|
| {
|
|
resource?: (number | null) | Resource;
|
|
range?: number | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
/**
|
|
* What structures, if any, must be within a certain distance of this structure on placement.
|
|
*/
|
|
structuresInRange?:
|
|
| {
|
|
structure?: (number | null) | Structure;
|
|
range?: number | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
/**
|
|
* Recurring costs to keep this structure online.
|
|
*/
|
|
upkeep?:
|
|
| {
|
|
resource?: (number | null) | Resource;
|
|
/**
|
|
* How much of this resource is consumed per "game tick" (every hour.)
|
|
*/
|
|
amount?: number | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
/**
|
|
* A base price that this structure could sell for when fully operational. Leaving this empty will make this structure unsellable.
|
|
*/
|
|
sellPrice?: number | null;
|
|
/**
|
|
* Default funds charged per base tick for structure upkeep. Copied into newly created game-structures of this type.
|
|
*/
|
|
maintenanceCost?: number | null;
|
|
/**
|
|
* Default labor classifications copied into newly created game-structures of this type. Empty = no labor crews by default.
|
|
*/
|
|
laborRequirements?:
|
|
| {
|
|
classification: number | LaborClassification;
|
|
/**
|
|
* Informational staffing target shown to logistics officers.
|
|
*/
|
|
requiredHeadcount: number;
|
|
/**
|
|
* Hard cap for this classification. Zero or empty means it cannot be hired here.
|
|
*/
|
|
maxHeadcount?: number | null;
|
|
/**
|
|
* When set, workers of this classification are always paid this wage; hirers cannot change it.
|
|
*/
|
|
enforcedSalary?: number | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
/**
|
|
* Default named staff position types copied into newly created game-structures of this type. Empty = no named staff by default.
|
|
*/
|
|
staffPositions?:
|
|
| {
|
|
positionType: 'administrative' | 'technical' | 'other';
|
|
/**
|
|
* Maximum simultaneous named staff of this type. Empty means unlimited.
|
|
*/
|
|
max?: number | null;
|
|
/**
|
|
* When set, named staff of this type are always paid this salary.
|
|
*/
|
|
enforcedSalary?: number | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
/**
|
|
* Default recipe copied into newly created game-structures of this type. Empty = no recipe.
|
|
*/
|
|
productionInputs?:
|
|
| {
|
|
resource: number | Resource;
|
|
/**
|
|
* Units processed per real hour while running and staffed.
|
|
*/
|
|
amountPerHour: number;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
/**
|
|
* Default recipe copied into newly created game-structures of this type. Empty = no recipe.
|
|
*/
|
|
productionOutputs?:
|
|
| {
|
|
resource: number | Resource;
|
|
/**
|
|
* Units processed per real hour while running and staffed.
|
|
*/
|
|
amountPerHour: number;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
/**
|
|
* How many modules can be installed in structures of this type. 0 = no module support.
|
|
*/
|
|
moduleSlots?: number | null;
|
|
/**
|
|
* Modules that can be installed into structures of this type.
|
|
*/
|
|
moduleOptions?:
|
|
| {
|
|
name: string;
|
|
category: 'production' | 'logistics' | 'defense' | 'utility';
|
|
description?: string | null;
|
|
effects: {
|
|
type: 'capacity_mass' | 'production_multiplier' | 'storage_slots';
|
|
/**
|
|
* capacity_mass: extra kg of storage. storage_slots: extra grid slots. production_multiplier: output boost as a fraction (0.25 = +25%).
|
|
*/
|
|
value: number;
|
|
id?: string | null;
|
|
}[];
|
|
materials: {
|
|
resource: number | Resource;
|
|
amount: number;
|
|
id?: string | null;
|
|
}[];
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
/**
|
|
* Projected onto nearby operational structures (neighbors only, not itself).
|
|
*/
|
|
aura?: {
|
|
/**
|
|
* production_multiplier: boosts the neighbor's production output (value 0.25 = +25%). capacity_mass: raises the neighbor's storage capacity (value in kg).
|
|
*/
|
|
effectType?: ('production_multiplier' | 'capacity_mass') | null;
|
|
value?: number | null;
|
|
rangeMeters?: number | null;
|
|
};
|
|
/**
|
|
* The app will use this type to determine what processes should run for this structure type.
|
|
*/
|
|
functionType?: ('producer' | 'storage' | 'sensor' | 'converter' | 'defense' | 'miscellaneous') | null;
|
|
canProduce?:
|
|
| (
|
|
| {
|
|
relationTo: 'assets';
|
|
value: number | Asset;
|
|
}
|
|
| {
|
|
relationTo: 'vehicles';
|
|
value: number | Vehicle;
|
|
}
|
|
| {
|
|
relationTo: 'resources';
|
|
value: number | Resource;
|
|
}
|
|
)[]
|
|
| null;
|
|
autoGeneratedResources?:
|
|
| {
|
|
resource: number | Resource;
|
|
/**
|
|
* The minimum amount of this resource produced each production cycle.
|
|
*/
|
|
minAmount: number;
|
|
/**
|
|
* The maximum amount of this resource produced each production cycle. If this field is left empty, will produce a static amount equal to the minimum value.
|
|
*/
|
|
maxAmount?: number | null;
|
|
/**
|
|
* The minimum number of ticks it takes to produce this resource (e.g., '5' would produce this resource, at minimum, every 5 ticks).
|
|
*/
|
|
minFrequency: string;
|
|
/**
|
|
* The maximum number of ticks it takes to produce this resource (e.g., '5' would produce this resource, at maximum, every 5 ticks, ignoring production chance).
|
|
*/
|
|
maxFrequency?: string | null;
|
|
/**
|
|
* The chance (1-100) that this resource will be produced each production cycle.
|
|
*/
|
|
produceChance?: number | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
/**
|
|
* The maximum storage capacity of this structure as mass (retrieved from the mass defined for every asset stored here.)
|
|
*/
|
|
maxCapacityMass?: number | null;
|
|
/**
|
|
* When enabled, ONLY the items listed in Allowed Storage can be stored here. Everything else is rejected. When disabled, the Allowed Storage list still enforces per-item quantity caps, but other items are permitted up to the mass capacity.
|
|
*/
|
|
restrictToAllowed?: boolean | null;
|
|
xSize?: number | null;
|
|
ySize?: number | null;
|
|
allowedStorage?:
|
|
| {
|
|
item?:
|
|
| ({
|
|
relationTo: 'assets';
|
|
value: number | Asset;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'vehicles';
|
|
value: number | Vehicle;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'resources';
|
|
value: number | Resource;
|
|
} | null);
|
|
/**
|
|
* How many of this asset, vehicle, or resource can be stored here.
|
|
*/
|
|
amount?: number | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
/**
|
|
* Any items from this list can never be stored here, even if they meet all other criteria.
|
|
*/
|
|
prohibitedStorage?:
|
|
| {
|
|
item?:
|
|
| ({
|
|
relationTo: 'assets';
|
|
value: number | Asset;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'vehicles';
|
|
value: number | Vehicle;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'resources';
|
|
value: number | Resource;
|
|
} | null);
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
maxHealth: number;
|
|
/**
|
|
* So long as the structure meets its operational requirements, this is the amount of health restored to the structure every game tick.
|
|
*/
|
|
repairSpeed?: number | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "resources".
|
|
*/
|
|
export interface Resource {
|
|
id: number;
|
|
showWarning?: boolean | null;
|
|
/**
|
|
* Human-readable name for resources (e.g., "Fuel").
|
|
*/
|
|
name: string;
|
|
/**
|
|
* Internal ID for scripts (e.g., "res_fuel").
|
|
*/
|
|
codeName: string;
|
|
/**
|
|
* Mark whether this resource is ready for developer approval and implementation into the live environment.
|
|
*/
|
|
approvalStatus: 'in_progress' | 'ready_for_review' | 'approved' | 'rejected' | 'revision_requested';
|
|
type: 'physical' | 'fluid' | 'energy' | 'abstract';
|
|
/**
|
|
* A description of the resource, including where it comes from, how it is used, and any lore-related details.
|
|
*/
|
|
description?: {
|
|
root: {
|
|
type: string;
|
|
children: {
|
|
type: any;
|
|
version: number;
|
|
[k: string]: unknown;
|
|
}[];
|
|
direction: ('ltr' | 'rtl') | null;
|
|
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
indent: number;
|
|
version: number;
|
|
};
|
|
[k: string]: unknown;
|
|
} | null;
|
|
/**
|
|
* While not required, an icon is absolutely recommended and will affect the way this resource is displayed in the application UI.
|
|
*/
|
|
icon?: (number | null) | Media;
|
|
/**
|
|
* A HEX color code used by this resource in the application UI (e.g., progress bars, text highlighting, etc.)
|
|
*/
|
|
color?: string | null;
|
|
/**
|
|
* The inherent "gold standard" value of one (1) unit of this resource. Used for calculating exchange rates and total asset worth.
|
|
*/
|
|
baseValue: number;
|
|
/**
|
|
* Can this be bought and/or sold on the market?
|
|
*/
|
|
tradeable?: boolean | null;
|
|
rarity: 'common' | 'uncommon' | 'rare' | 'epic' | 'legendary' | 'exotic' | 'unique';
|
|
/**
|
|
* Baseline world supply and demand used by the market economy simulation (economy tick).
|
|
*/
|
|
economy?: {
|
|
/**
|
|
* Whether the economy simulation tracks this resource. Disabled items keep their resting price.
|
|
*/
|
|
enabled?: boolean | null;
|
|
/**
|
|
* GM-set resting world supply. Used as the starting point of this resource's market-state ledger.
|
|
*/
|
|
baselineSupply?: number | null;
|
|
/**
|
|
* GM-set resting demand (NPC faction pressure). Used as the starting point of this resource's market-state ledger.
|
|
*/
|
|
baselineDemand?: number | null;
|
|
/**
|
|
* Price band, as a fraction of the base value (e.g. 0.5 = price can move ±50%). Leave empty to use the global default band from Game Rules.
|
|
*/
|
|
maxModifier?: number | null;
|
|
};
|
|
/**
|
|
* The unit of measure for this resource in singular form (no plurals, e.g., liter, kg, point, unit, megawatt, person, etc.)
|
|
*/
|
|
unitOfMeasure: string;
|
|
/**
|
|
* The weight of one (1) unit (can be "0" for abstract resources like "Intel", "Labor", etc.) Critical for logistics transport calculations.
|
|
*/
|
|
massPerUnit: number;
|
|
/**
|
|
* Maximum amount that fits in a single standard cargo slot (if applicable.)
|
|
*/
|
|
stackSize?: number | null;
|
|
/**
|
|
* Width of this resource in grid cells.
|
|
*/
|
|
gridWidth: number;
|
|
/**
|
|
* Height of this resource in grid cells.
|
|
*/
|
|
gridHeight: number;
|
|
/**
|
|
* Can multiple units of this resource stack in a single grid cell? If checked, the amount displayed on the grid reflects the stack count.
|
|
*/
|
|
stackable?: boolean | null;
|
|
/**
|
|
* Maximum number of units that can exist in a single grid stack. Leave empty for unlimited. Only applies if stackable is checked.
|
|
*/
|
|
maxStackSize?: number | null;
|
|
/**
|
|
* Can this resource be rotated 90 degrees in the grid? When rotated, width and height are swapped.
|
|
*/
|
|
rotatable?: boolean | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "technologies".
|
|
*/
|
|
export interface Technology {
|
|
id: number;
|
|
name: string;
|
|
/**
|
|
* Mark whether this technology is ready for developer approval and implementation into the live environment.
|
|
*/
|
|
approvalStatus: 'in_progress' | 'ready_for_review' | 'approved' | 'rejected' | 'revision_requested';
|
|
/**
|
|
* An "Asset" technology will unlock a new item, vehicle, gear piece, structure, etc. An "Upgrade" technology will unlock an improvement to an Asset, like faster build speed, more storage capacity, etc.
|
|
*/
|
|
type: 'asset' | 'upgrade';
|
|
summary: string;
|
|
description?: {
|
|
root: {
|
|
type: string;
|
|
children: {
|
|
type: any;
|
|
version: number;
|
|
[k: string]: unknown;
|
|
}[];
|
|
direction: ('ltr' | 'rtl') | null;
|
|
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
indent: number;
|
|
version: number;
|
|
};
|
|
[k: string]: unknown;
|
|
} | null;
|
|
requirements?: {
|
|
prerequisiteTechnologies?:
|
|
| {
|
|
/**
|
|
* ALL of these technologies MUST be unlocked before this one can be.
|
|
*/
|
|
requiresAnd?: {
|
|
technology?: (number | Technology)[] | null;
|
|
};
|
|
/**
|
|
* One or more of these technologies MUST be unlocked before this one can be.
|
|
*/
|
|
requiresOr?: {
|
|
technology?: (number | Technology)[] | null;
|
|
};
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
};
|
|
researchCosts: {
|
|
/**
|
|
* These resources are consumed when this technology is researched. If a resource is not listed, you can add a new one, but creating new resources requires the Logistics qualification. Without it, the save will fail.
|
|
*/
|
|
resources?:
|
|
| {
|
|
resource: number | Resource;
|
|
amount: number;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
minimumResearchDuration: number;
|
|
maximumResearchDuration?: number | null;
|
|
};
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "labor-classifications".
|
|
*/
|
|
export interface LaborClassification {
|
|
id: number;
|
|
/**
|
|
* Display label for this labor trade (e.g. Mechanic).
|
|
*/
|
|
name: string;
|
|
/**
|
|
* Stable slug used to identify this classification (e.g. mechanic).
|
|
*/
|
|
key: string;
|
|
/**
|
|
* Prefills the wage-per-worker input in the hire dialog.
|
|
*/
|
|
defaultUnitSalary?: number | null;
|
|
description?: string | null;
|
|
/**
|
|
* Construction speed this trade contributes per worker while building structures (1 = a full worker).
|
|
*/
|
|
buildEfficiency?: number | null;
|
|
/**
|
|
* How many workers of this classification are currently available to hire across the unit. Hiring consumes from this pool; releasing staff returns them.
|
|
*/
|
|
availableHeadcount?: number | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "assets".
|
|
*/
|
|
export interface Asset {
|
|
id: number;
|
|
name: string;
|
|
/**
|
|
* Mark whether this asset is ready for developer approval and implementation into the live environment.
|
|
*/
|
|
approvalStatus: 'in_progress' | 'ready_for_review' | 'approved' | 'rejected' | 'revision_requested';
|
|
className: string;
|
|
assetType:
|
|
| 'weapon'
|
|
| 'magazine'
|
|
| 'optic'
|
|
| 'muzzle'
|
|
| 'bipod'
|
|
| 'uniform'
|
|
| 'vest'
|
|
| 'backpack'
|
|
| 'helmet'
|
|
| 'facewear'
|
|
| 'nvg'
|
|
| 'radio'
|
|
| 'medical'
|
|
| 'tool'
|
|
| 'explosive'
|
|
| 'skin'
|
|
| 'miscellaneous';
|
|
'Weapon Configuration'?: {
|
|
slotType?: ('primary' | 'secondary' | 'launcher') | null;
|
|
compatibleMagazines?: (number | Asset)[] | null;
|
|
compatibleAttachments?: (number | Asset)[] | null;
|
|
};
|
|
'Nightvision Configuration'?: {
|
|
nvgGeneration?: ('gen1' | 'gen2' | 'gen3') | null;
|
|
/**
|
|
* Whether or not these night-vision goggles possess a thermal vision mode.
|
|
*/
|
|
nvgHasThermals?: boolean | null;
|
|
};
|
|
'Container Configuration'?: {
|
|
capacityKg?: number | null;
|
|
weightKg?: number | null;
|
|
};
|
|
'Skin Configuration'?: {
|
|
/**
|
|
* Which equipment types this skin can be applied to. Leave empty to allow on any equipment.
|
|
*/
|
|
appliesToAssetTypes?: ('weapon' | 'uniform' | 'vest' | 'backpack' | 'helmet')[] | null;
|
|
};
|
|
'Magazine Configuration'?: {
|
|
roundCapacity?: number | null;
|
|
ammoType?: string | null;
|
|
/**
|
|
* Whether or not this magazine is compatible with the GreenMag mod.
|
|
*/
|
|
greenmagCompatible?: boolean | null;
|
|
};
|
|
'Asset Metadata'?: {
|
|
mod?: string | null;
|
|
thumbnail?: (number | null) | Media;
|
|
gameDescription?: string | null;
|
|
};
|
|
/**
|
|
* Whether or not this asset can be traded on the market. If unchecked, the asset can never be bought or sold, only crafted or collected.
|
|
*/
|
|
tradeable?: boolean | null;
|
|
marketTrading?: {
|
|
/**
|
|
* The rarity of this item in the world of the active campaign. Rarity will be accounted for in market valuation and trading calculations.
|
|
*/
|
|
Rarity?: ('basic' | 'common' | 'uncommon' | 'rare' | 'veryRare' | 'epic' | 'legendary' | 'unique') | null;
|
|
/**
|
|
* The asset's "perceived value" when considered in market and trading calculations. Note that the "base" values are the "resting" valuations. Later calculations will increase and decrease the valuation based on this resting valuation, ultimately tending to remain within some percentage margin of this base price. Always and only considers the primary campaign currency in regard to price.
|
|
*/
|
|
perceivedValue?: {
|
|
baseBuyPrice?: number | null;
|
|
baseSellPrice?: number | null;
|
|
};
|
|
};
|
|
/**
|
|
* Baseline world supply and demand used by the market economy simulation (economy tick).
|
|
*/
|
|
economy?: {
|
|
/**
|
|
* Whether the economy simulation tracks this asset. Disabled items keep their resting price.
|
|
*/
|
|
enabled?: boolean | null;
|
|
/**
|
|
* GM-set resting world supply. Used as the starting point of this asset's market-state ledger.
|
|
*/
|
|
baselineSupply?: number | null;
|
|
/**
|
|
* GM-set resting demand (NPC faction pressure). Used as the starting point of this asset's market-state ledger.
|
|
*/
|
|
baselineDemand?: number | null;
|
|
/**
|
|
* Price band, as a fraction of the base price (e.g. 0.5 = price can move ±50%). Leave empty to use the global default band from Game Rules.
|
|
*/
|
|
maxModifier?: number | null;
|
|
};
|
|
crafting: {
|
|
craftable?: boolean | null;
|
|
/**
|
|
* This asset requires a blueprint to be crafted, otherwise it can only be obtained from scavenging and/or trading.
|
|
*/
|
|
blueprintRequired?: boolean | null;
|
|
/**
|
|
* One or more technologies required before this weapon can be crafted.
|
|
*/
|
|
technologyRequired?: (number | Technology)[] | null;
|
|
/**
|
|
* If checked, this asset requires the above technologies or else cannot be used at all.
|
|
*/
|
|
technologyRequiredToUse?: boolean | null;
|
|
craftingData: {
|
|
inputs?:
|
|
| {
|
|
resource: (number | Resource)[];
|
|
quantity?: number | null;
|
|
/**
|
|
* If checked, this resource is "lended" to the crafting of this asset. Upon the crafting's completion, this resource is refunded to the unit.
|
|
*/
|
|
lended?: boolean | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
requiresStructure?: (number | Structure)[] | null;
|
|
craftingTimePerUnit: number;
|
|
/**
|
|
* Byproducts of the crafting process. For each unit crafted of this Asset, these byproducts are also created and added to the unit's resources.
|
|
*/
|
|
byproducts?:
|
|
| {
|
|
resource: (number | Resource)[];
|
|
quantity?: number | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
/**
|
|
* An optional batch size. If provided, this number of this asset will be created upon crafting completion.
|
|
*/
|
|
batchSize: number;
|
|
};
|
|
};
|
|
/**
|
|
* How this asset occupies space in member lockers and container grids.
|
|
*/
|
|
storageDimensions: {
|
|
/**
|
|
* Width of this asset in grid cells.
|
|
*/
|
|
gridWidth: number;
|
|
/**
|
|
* Height of this asset in grid cells.
|
|
*/
|
|
gridHeight: number;
|
|
/**
|
|
* Can multiple units of this asset stack in a single grid cell? If checked, the amount displayed reflects the stack count.
|
|
*/
|
|
stackable?: boolean | null;
|
|
/**
|
|
* Maximum number of units that can exist in a single grid stack. Leave empty for unlimited. Only applies if stackable is checked.
|
|
*/
|
|
maxStackSize?: number | null;
|
|
/**
|
|
* Can this asset be rotated 90 degrees in the grid? When rotated, width and height are swapped.
|
|
*/
|
|
rotatable?: boolean | null;
|
|
};
|
|
/**
|
|
* Suggested complements to this asset (for example, if the asset was a Bandage, some related assets could include an IV, blood bag, epinephrine, etc.)
|
|
*/
|
|
relatedAssets?: (number | Asset)[] | null;
|
|
/**
|
|
* If checked, this item is approved and considered "live" (i.e. it will be considered in calculations and made available in-game.)
|
|
*/
|
|
isLive?: boolean | null;
|
|
notes?: {
|
|
root: {
|
|
type: string;
|
|
children: {
|
|
type: any;
|
|
version: number;
|
|
[k: string]: unknown;
|
|
}[];
|
|
direction: ('ltr' | 'rtl') | null;
|
|
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
indent: number;
|
|
version: number;
|
|
};
|
|
[k: string]: unknown;
|
|
} | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "vehicles".
|
|
*/
|
|
export interface Vehicle {
|
|
id: number;
|
|
name: string;
|
|
/**
|
|
* If not provided, this vehicle will ONLY be available as a virtual asset (i.e., cannot be used in Arma.)
|
|
*/
|
|
classname?: string | null;
|
|
/**
|
|
* Mark whether this vehicle is ready for developer approval and implementation into the live environment.
|
|
*/
|
|
approvalStatus: 'in_progress' | 'ready_for_review' | 'approved' | 'rejected' | 'revision_requested';
|
|
/**
|
|
* A detailed description of the vehicle, including details like tactical usage, mechanical details, and/or world lore regarding this vehicle.
|
|
*/
|
|
description?: {
|
|
root: {
|
|
type: string;
|
|
children: {
|
|
type: any;
|
|
version: number;
|
|
[k: string]: unknown;
|
|
}[];
|
|
direction: ('ltr' | 'rtl') | null;
|
|
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
indent: number;
|
|
version: number;
|
|
};
|
|
[k: string]: unknown;
|
|
} | null;
|
|
image?: (number | null) | Media;
|
|
category?: ('civilian' | 'utility' | 'transport' | 'weaponized' | 'military')[] | null;
|
|
/**
|
|
* Fuel configuration for this vehicle. Defines what fuel type it uses, how much it can hold, and how fast it consumes fuel.
|
|
*/
|
|
fuel: {
|
|
/**
|
|
* The type of fuel this vehicle consumes (e.g., gasoline, diesel, jet fuel).
|
|
*/
|
|
fuelType: number | Resource;
|
|
/**
|
|
* Maximum fuel units this vehicle's tank can hold.
|
|
*/
|
|
fuelCapacity: number;
|
|
/**
|
|
* Fuel consumed per unit of distance traveled.
|
|
*/
|
|
fuelConsumptionRate: number;
|
|
};
|
|
materials?:
|
|
| {
|
|
resource: number | Resource;
|
|
amount?: number | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
/**
|
|
* The number of ticks it takes to complete construction of this vehicle.
|
|
*/
|
|
constructionTime?: number | null;
|
|
/**
|
|
* What research must be done before this can be built.
|
|
*/
|
|
requiredTech?: (number | Technology)[] | null;
|
|
requiredStructure?: {
|
|
docs?: (number | Structure)[];
|
|
hasNextPage?: boolean;
|
|
totalDocs?: number;
|
|
};
|
|
scrapReturns?:
|
|
| {
|
|
resource: number | Resource;
|
|
amount?: number | null;
|
|
/**
|
|
* An optional percent (%) chance to recover this specific resource (between 0 and 100).
|
|
*/
|
|
chance?: number | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
/**
|
|
* Recurring costs to keep this vehicle operational.
|
|
*/
|
|
upkeepCosts?:
|
|
| {
|
|
resource: number | Resource;
|
|
/**
|
|
* How much of this resource is consumed per tick.
|
|
*/
|
|
amount?: number | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
/**
|
|
* Ground vehicles route over the road network and refuse shipments with no connected route. Air and sea vehicles travel straight-line.
|
|
*/
|
|
transportMode: 'ground' | 'air' | 'sea';
|
|
width?: number | null;
|
|
height?: number | null;
|
|
maxMass?: number | null;
|
|
/**
|
|
* The number of ACE cargo slots this vehicle has by default.
|
|
*/
|
|
aceCargoSlots?: number | null;
|
|
/**
|
|
* The cargo this vehicle is permitted to carry if used virtually (e.g., during deliveries, moving troops, etc.)
|
|
*/
|
|
allowedVirtualCargo?:
|
|
| {
|
|
item:
|
|
| {
|
|
relationTo: 'assets';
|
|
value: number | Asset;
|
|
}
|
|
| {
|
|
relationTo: 'vehicles';
|
|
value: number | Vehicle;
|
|
}
|
|
| {
|
|
relationTo: 'resources';
|
|
value: number | Resource;
|
|
};
|
|
amount?: number | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
maxHealth?: number | null;
|
|
armorRating?: ('none' | 'light' | 'medium' | 'heavy' | 'composite') | null;
|
|
maxSpeedOnRoad?: number | null;
|
|
maxSpeedOffRoad?: number | null;
|
|
maxAirspeed?: number | null;
|
|
maxKnots?: number | null;
|
|
pylons?:
|
|
| {
|
|
pylonName: string;
|
|
pylonType: 'mountedWeapon' | 'pylon';
|
|
amount?: number | null;
|
|
ammoType?: (number | null) | Asset;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "factions".
|
|
*/
|
|
export interface Faction {
|
|
id: number;
|
|
name: string;
|
|
/**
|
|
* Player Faction = the faction our unit is currently playing as. Only one faction can carry this type at a time.
|
|
*/
|
|
type: 'playerFaction' | 'majorFaction' | 'minorFaction' | 'corporation' | 'special';
|
|
description?: {
|
|
root: {
|
|
type: string;
|
|
children: {
|
|
type: any;
|
|
version: number;
|
|
[k: string]: unknown;
|
|
}[];
|
|
direction: ('ltr' | 'rtl') | null;
|
|
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
indent: number;
|
|
version: number;
|
|
};
|
|
[k: string]: unknown;
|
|
} | null;
|
|
/**
|
|
* This faction's standing in the world, from -100 (reviled) to 100 (revered). 0 is neutral. Adjusted manually by admins/GMs as campaign events unfold.
|
|
*/
|
|
reputation?: number | null;
|
|
/**
|
|
* Pairwise standing between this faction and another faction, from -100 (hostile) to 100 (allied). 0 is neutral. One entry per counterpart faction.
|
|
*/
|
|
relationships?:
|
|
| {
|
|
/**
|
|
* The other faction in this pairwise relationship.
|
|
*/
|
|
targetFaction: number | Faction;
|
|
/**
|
|
* Standing from -100 (hostile) to 100 (allied). 0 is neutral.
|
|
*/
|
|
value: number;
|
|
/**
|
|
* Optional context for why this relationship stands where it does.
|
|
*/
|
|
notes?: string | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
/**
|
|
* Whether or not this faction is playable. Some factions may be specifically intended to be unplayable based on narrative requirements.
|
|
*/
|
|
playableFaction?: boolean | null;
|
|
/**
|
|
* Whether or not this faction is/was available as a starting faction at the beginning of the campaign.
|
|
*/
|
|
startingFaction?: boolean | null;
|
|
associatedCampaigns?: (number | Campaign)[] | null;
|
|
/**
|
|
* Background image for the faction detail page hero. Renders translucent with a top-to-bottom fade to black. Recommended aspect ratio: 16:9 or wider.
|
|
*/
|
|
coverImage?: (number | null) | Media;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "campaigns".
|
|
*/
|
|
export interface Campaign {
|
|
id: number;
|
|
name: string;
|
|
summary: string;
|
|
status: 'concept' | 'inProgress' | 'completed';
|
|
/**
|
|
* Only developers can designate a campaign as official or custom.
|
|
*/
|
|
campaignMode: 'official' | 'custom';
|
|
description?: {
|
|
root: {
|
|
type: string;
|
|
children: {
|
|
type: any;
|
|
version: number;
|
|
[k: string]: unknown;
|
|
}[];
|
|
direction: ('ltr' | 'rtl') | null;
|
|
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
indent: number;
|
|
version: number;
|
|
};
|
|
[k: string]: unknown;
|
|
} | null;
|
|
startDate?: string | null;
|
|
endDate?: string | null;
|
|
/**
|
|
* Background image for the campaign selector card on the campaigns page. Renders translucent with hover effects. Recommended aspect ratio: 16:9 or square.
|
|
*/
|
|
coverImage?: (number | null) | Media;
|
|
/**
|
|
* User who created this campaign. Set automatically on create.
|
|
*/
|
|
owner?: (number | null) | User;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "maps".
|
|
*/
|
|
export interface Map {
|
|
id: number;
|
|
name: string;
|
|
/**
|
|
* Inactive maps are hidden from the map page and cannot receive placements.
|
|
*/
|
|
isActive?: boolean | null;
|
|
/**
|
|
* Show on the World Map screen. Leave off for mission-only maps (e.g. side op maps without imagery).
|
|
*/
|
|
worldMap?: boolean | null;
|
|
/**
|
|
* Campaign this map belongs to. Maps tied to custom (side) campaigns are excluded from the World Map screen even when flagged as world map entries.
|
|
*/
|
|
campaign?: (number | null) | Campaign;
|
|
/**
|
|
* Optional map blurb shown on the World Map picker cards.
|
|
*/
|
|
description?: string | null;
|
|
/**
|
|
* Optional freeform weather condition for intel display (e.g. Clear, Monsoon, Ashfall).
|
|
*/
|
|
weather?: string | null;
|
|
/**
|
|
* Optional real-world reference coordinate (degrees).
|
|
*/
|
|
latitude?: number | null;
|
|
/**
|
|
* Optional real-world reference coordinate (degrees).
|
|
*/
|
|
longitude?: number | null;
|
|
/**
|
|
* Optional: how hard the area is to reach for intel display.
|
|
*/
|
|
easeOfAccess?: ('easy' | 'moderate' | 'difficult') | null;
|
|
/**
|
|
* Optional faction associated with or controlling this map.
|
|
*/
|
|
factionControl?: (number | null) | Faction;
|
|
/**
|
|
* Map width in real meters (e.g. Altis is 8192).
|
|
*/
|
|
worldSizeWidth: number;
|
|
/**
|
|
* Map height in real meters (e.g. Altis is 8192).
|
|
*/
|
|
worldSizeHeight: number;
|
|
/**
|
|
* Image: a single uploaded map image stretched over the world bounds. Tiles: an external XYZ tile server.
|
|
*/
|
|
basemapMode: 'image' | 'tiles';
|
|
/**
|
|
* Top-down map image. Rendered stretched across the full world size.
|
|
*/
|
|
basemapImage?: (number | null) | Media;
|
|
/**
|
|
* XYZ template, e.g. https://tiles.example.com/{z}/{x}/{y}.png
|
|
*/
|
|
tileUrlTemplate?: string | null;
|
|
minZoom?: number | null;
|
|
maxZoom?: number | null;
|
|
/**
|
|
* Defaults to half the world width when empty.
|
|
*/
|
|
defaultCenterX?: number | null;
|
|
/**
|
|
* Defaults to half the world height when empty.
|
|
*/
|
|
defaultCenterY?: number | null;
|
|
defaultZoom?: number | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "game-vehicles".
|
|
*/
|
|
export interface GameVehicle {
|
|
id: number;
|
|
/**
|
|
* Display name or callsign for this vehicle instance.
|
|
*/
|
|
name: string;
|
|
/**
|
|
* The vehicle type/template this instance is based on.
|
|
*/
|
|
type: number | Vehicle;
|
|
/**
|
|
* The structure where this vehicle is currently stationed. Null if in transit.
|
|
*/
|
|
deployedAt?: (number | null) | GameStructure;
|
|
/**
|
|
* The faction that owns this vehicle.
|
|
*/
|
|
faction?: (number | null) | Faction;
|
|
status: 'idle' | 'assigned' | 'in_transit' | 'damaged' | 'destroyed';
|
|
/**
|
|
* Current fuel level. Must be between 0 and the vehicle type's fuel capacity.
|
|
*/
|
|
currentFuel: number;
|
|
/**
|
|
* Current health. Must be between 0 and the vehicle type's max health.
|
|
*/
|
|
currentHealth: number;
|
|
storedResources?:
|
|
| {
|
|
resource: number | Resource;
|
|
amount: number;
|
|
gridX: number;
|
|
gridY: number;
|
|
rotated?: boolean | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
/**
|
|
* Items displaced by grid resizing.
|
|
*/
|
|
voidStorage?:
|
|
| {
|
|
resource: number | Resource;
|
|
amount: number;
|
|
gridX: number;
|
|
gridY: number;
|
|
rotated?: boolean | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "game-npcs".
|
|
*/
|
|
export interface GameNpc {
|
|
id: number;
|
|
/**
|
|
* The NPC's name as shown in-game and on the frontend.
|
|
*/
|
|
name: string;
|
|
/**
|
|
* What this NPC does (e.g. 'Weapons Dealer', 'Field Medic').
|
|
*/
|
|
occupation?: string | null;
|
|
/**
|
|
* Where this NPC is stationed in-game.
|
|
*/
|
|
location?: (number | null) | GameStructure;
|
|
/**
|
|
* The faction this NPC belongs to, if any.
|
|
*/
|
|
faction?: (number | null) | Faction;
|
|
/**
|
|
* A short background/profile for this NPC.
|
|
*/
|
|
bio?: string | null;
|
|
/**
|
|
* True for NPCs auto-created by the market tick to cover unstocked goods. They are placeholders until included in the game.
|
|
*/
|
|
isGenerated?: boolean | null;
|
|
/**
|
|
* Whether this NPC is officially part of the game. Generated NPCs start off; flip this on to include them.
|
|
*/
|
|
isInGame?: boolean | null;
|
|
vendor?: {
|
|
/**
|
|
* Whether this NPC runs a market stall. Auto-generated vendor stock is attributed to them.
|
|
*/
|
|
enabled?: boolean | null;
|
|
/**
|
|
* Multiplies the auto-generated price for this NPC's stock (1 = base market price).
|
|
*/
|
|
priceModifier?: number | null;
|
|
/**
|
|
* The goods this NPC sells. The market tick prefers these NPCs when stocking those assets.
|
|
*/
|
|
sells?: (number | Asset)[] | null;
|
|
};
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "npc-staffing".
|
|
*/
|
|
export interface NpcStaffing {
|
|
id: number;
|
|
npc?: (number | null) | GameNpc;
|
|
structure: number | GameStructure;
|
|
positionType: 'labor' | 'administrative' | 'technical' | 'other';
|
|
positionTitle: string;
|
|
/**
|
|
* Workers in this block; always 1 for named staff
|
|
*/
|
|
headcount?: number | null;
|
|
laborClassification?: (number | null) | LaborClassification;
|
|
salary?: number | null;
|
|
status?: ('active' | 'terminated') | null;
|
|
hiredAt?: string | null;
|
|
terminatedAt?: string | null;
|
|
notes?: string | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "game-event-logs".
|
|
*/
|
|
export interface GameEventLog {
|
|
id: number;
|
|
/**
|
|
* System-generated events are created automatically. Uncheck for manual/GM narrative entries.
|
|
*/
|
|
system?: boolean | null;
|
|
timestamp: string;
|
|
type: string;
|
|
message: string;
|
|
actor?: (number | null) | User;
|
|
structure?: (number | null) | GameStructure;
|
|
/**
|
|
* Which collection the event primarily relates to.
|
|
*/
|
|
targetCollection?:
|
|
| (
|
|
| 'game-structures'
|
|
| 'game-vehicles'
|
|
| 'game-npcs'
|
|
| 'npc-staffing'
|
|
| 'structures'
|
|
| 'resources'
|
|
| 'assets'
|
|
| 'vehicles'
|
|
| 'factions'
|
|
| 'missions'
|
|
| 'campaigns'
|
|
| 'users'
|
|
| 'technologies'
|
|
| 'maps'
|
|
| 'shipments'
|
|
| 'bank-accounts'
|
|
| 'bank-transactions'
|
|
| 'ledger-entries'
|
|
| 'locker-storages'
|
|
| 'loadouts'
|
|
| 'market-listings'
|
|
| 'market-negotiations'
|
|
| 'market-state'
|
|
| 'evaluations'
|
|
| 'tickets'
|
|
| 'wiki-pages'
|
|
| 'wiki-revisions'
|
|
| 'wiki-templates'
|
|
| 'game-servers'
|
|
| 'assignment-transfers'
|
|
| 'voice-scripts'
|
|
| 'voice-submissions'
|
|
| 'story-beats'
|
|
| 'story-beat-states'
|
|
| 'custom-minefields'
|
|
| 'custom-minefield-scores'
|
|
| 'custom-radio-tests'
|
|
| 'custom-radio-test-scores'
|
|
| 'ribbon-submissions'
|
|
)
|
|
| null;
|
|
targetId?: number | null;
|
|
data?:
|
|
| {
|
|
[k: string]: unknown;
|
|
}
|
|
| unknown[]
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "ranks".
|
|
*/
|
|
export interface Rank {
|
|
id: number;
|
|
_order?: string | null;
|
|
name: string;
|
|
abbreviation: string;
|
|
description: string;
|
|
insignia?: (number | null) | Media;
|
|
/**
|
|
* Holders of this rank may promote members up to and including this rank. Leave empty for no promotion authority.
|
|
*/
|
|
promotionCeiling?: (number | null) | Rank;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "profiles".
|
|
*/
|
|
export interface Profile {
|
|
id: number;
|
|
user: number | User;
|
|
rank: number | Rank;
|
|
profileTitle?: string | null;
|
|
dossier: {
|
|
enlistmentDate: string;
|
|
personalExcerpt?: {
|
|
root: {
|
|
type: string;
|
|
children: {
|
|
type: any;
|
|
version: number;
|
|
[k: string]: unknown;
|
|
}[];
|
|
direction: ('ltr' | 'rtl') | null;
|
|
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
indent: number;
|
|
version: number;
|
|
};
|
|
[k: string]: unknown;
|
|
} | null;
|
|
intelExcerpt?: {
|
|
root: {
|
|
type: string;
|
|
children: {
|
|
type: any;
|
|
version: number;
|
|
[k: string]: unknown;
|
|
}[];
|
|
direction: ('ltr' | 'rtl') | null;
|
|
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
indent: number;
|
|
version: number;
|
|
};
|
|
[k: string]: unknown;
|
|
} | null;
|
|
};
|
|
progression?: {
|
|
xp?: number | null;
|
|
awards?:
|
|
| {
|
|
award: number | Award;
|
|
/**
|
|
* Who issued the award. If no one, the award will be attributed as "on behalf of the unit."
|
|
*/
|
|
awardedBy?: (number | null) | Profile;
|
|
/**
|
|
* The issuing date of the award.
|
|
*/
|
|
awardedAt: string;
|
|
/**
|
|
* An optional reason for the award.
|
|
*/
|
|
awardReason?: string | null;
|
|
/**
|
|
* For advanced ribbons: the previous tier this entry replaced.
|
|
*/
|
|
upgradedFrom?: (number | null) | Award;
|
|
/**
|
|
* When this entry was upgraded to the current tier.
|
|
*/
|
|
upgradedAt?: string | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
qualifications?: (number | Qualification)[] | null;
|
|
scoreboard?: {
|
|
infantryKills?: number | null;
|
|
vehicleKills?: number | null;
|
|
armorKills?: number | null;
|
|
airKills?: number | null;
|
|
deaths?: number | null;
|
|
};
|
|
minigames?: {
|
|
flappyBird?: {
|
|
gamesPlayed?: number | null;
|
|
totalPasses?: number | null;
|
|
bestScore?: number | null;
|
|
xpEarned?: number | null;
|
|
};
|
|
eodMinesweeper?: {
|
|
gamesPlayed?: number | null;
|
|
wins?: number | null;
|
|
losses?: number | null;
|
|
bestScore?: number | null;
|
|
xpEarned?: number | null;
|
|
bestTrainingTime?: number | null;
|
|
bestPerimeterTime?: number | null;
|
|
bestSupplyRoadTime?: number | null;
|
|
bestTrainingFlags?: number | null;
|
|
bestPerimeterFlags?: number | null;
|
|
bestSupplyRoadFlags?: number | null;
|
|
};
|
|
radioTraffic?: {
|
|
gamesPlayed?: number | null;
|
|
totalMessages?: number | null;
|
|
incorrectMessages?: number | null;
|
|
bestScore?: number | null;
|
|
bestAccuracy?: number | null;
|
|
bestSprintTimeMs?: number | null;
|
|
sprintGamesPlayed?: number | null;
|
|
sprintTotalMessages?: number | null;
|
|
sprintIncorrectMessages?: number | null;
|
|
sprintBestScore?: number | null;
|
|
sprintBestAccuracy?: number | null;
|
|
watchGamesPlayed?: number | null;
|
|
watchTotalMessages?: number | null;
|
|
watchIncorrectMessages?: number | null;
|
|
watchBestScore?: number | null;
|
|
watchBestAccuracy?: number | null;
|
|
xpEarned?: number | null;
|
|
};
|
|
aimTrainer?: {
|
|
gamesPlayed?: number | null;
|
|
bestScore?: number | null;
|
|
recruitBestScore?: number | null;
|
|
veteranBestScore?: number | null;
|
|
eliteBestScore?: number | null;
|
|
recruitBestAccuracy?: number | null;
|
|
veteranBestAccuracy?: number | null;
|
|
eliteBestAccuracy?: number | null;
|
|
xpEarned?: number | null;
|
|
};
|
|
opordRecall?: {
|
|
gamesPlayed?: number | null;
|
|
bestScore?: number | null;
|
|
bestAccuracy?: number | null;
|
|
recruitBestScore?: number | null;
|
|
veteranBestScore?: number | null;
|
|
eliteBestScore?: number | null;
|
|
recruitBestTimeMs?: number | null;
|
|
veteranBestTimeMs?: number | null;
|
|
eliteBestTimeMs?: number | null;
|
|
xpEarned?: number | null;
|
|
};
|
|
poker?: {
|
|
gamesPlayed?: number | null;
|
|
wins?: number | null;
|
|
secondPlaces?: number | null;
|
|
thirdPlaces?: number | null;
|
|
fourthPlaces?: number | null;
|
|
handsWon?: number | null;
|
|
bestScore?: number | null;
|
|
xpEarned?: number | null;
|
|
};
|
|
blackjack?: {
|
|
gamesPlayed?: number | null;
|
|
roundsWon?: number | null;
|
|
blackjacksHit?: number | null;
|
|
bestScore?: number | null;
|
|
xpEarned?: number | null;
|
|
};
|
|
};
|
|
/**
|
|
* Persistent play-chip pool for the card minigames (poker, blackjack). Earned from the other minigames; never creates chips itself.
|
|
*/
|
|
chipBank?: number | null;
|
|
/**
|
|
* Last daily chip top-up claim; one claim per 24 hours.
|
|
*/
|
|
chipBankRefilledAt?: string | null;
|
|
voiceover?: {
|
|
xpEarned?: number | null;
|
|
};
|
|
};
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "awards".
|
|
*/
|
|
export interface Award {
|
|
id: number;
|
|
name: string;
|
|
description: {
|
|
root: {
|
|
type: string;
|
|
children: {
|
|
type: any;
|
|
version: number;
|
|
[k: string]: unknown;
|
|
}[];
|
|
direction: ('ltr' | 'rtl') | null;
|
|
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
indent: number;
|
|
version: number;
|
|
};
|
|
[k: string]: unknown;
|
|
};
|
|
type?: ('commendation' | 'ribbon' | 'medal') | null;
|
|
commendationColor?: string | null;
|
|
image?: (number | null) | Media;
|
|
experiencePoints?: number | null;
|
|
ribbonDesign?:
|
|
| {
|
|
[k: string]: unknown;
|
|
}
|
|
| unknown[]
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null;
|
|
/**
|
|
* A background image for the award card. Displayed as a faded backdrop behind the card content.
|
|
*/
|
|
backgroundImage?: (number | null) | Media;
|
|
medalDesign?:
|
|
| {
|
|
[k: string]: unknown;
|
|
}
|
|
| unknown[]
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null;
|
|
/**
|
|
* Configure this award as part of an advancement lineup.
|
|
*/
|
|
advancement?: {
|
|
/**
|
|
* Lineup identifier (e.g. years-of-service). Ribbons sharing this key form one advancement family.
|
|
*/
|
|
seriesKey?: string | null;
|
|
/**
|
|
* Position in the advancement lineup, starting at 1.
|
|
*/
|
|
tier?: number | null;
|
|
};
|
|
/**
|
|
* Configure who can grant this award and to whom. Only applies to ribbons and commendations.
|
|
*/
|
|
grantConfig?: {
|
|
/**
|
|
* Leaders of these assignment types can grant this award. Leave empty for admin/developer only.
|
|
*/
|
|
allowedGrantorAssignmentTypes?: ('division' | 'squad' | 'team' | 'special')[] | null;
|
|
/**
|
|
* Maximum times each grantor can issue this award. Empty = unlimited.
|
|
*/
|
|
maxGrantsPerGrantor?: number | null;
|
|
recipientScope?: ('same_command' | 'whitelist' | 'anyone') | null;
|
|
/**
|
|
* Only members of these assignments can receive this award.
|
|
*/
|
|
eligibleRecipientAssignments?: (number | Assignment)[] | null;
|
|
};
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "assignments".
|
|
*/
|
|
export interface Assignment {
|
|
id: number;
|
|
name: string;
|
|
type: 'division' | 'squad' | 'team' | 'special';
|
|
callsign?: string | null;
|
|
description?: {
|
|
root: {
|
|
type: string;
|
|
children: {
|
|
type: any;
|
|
version: number;
|
|
[k: string]: unknown;
|
|
}[];
|
|
direction: ('ltr' | 'rtl') | null;
|
|
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
indent: number;
|
|
version: number;
|
|
};
|
|
[k: string]: unknown;
|
|
} | null;
|
|
/**
|
|
* The leader represents the individual responsible for this assignment and its members. The leader automatically counts as a member when this assignment is queried.
|
|
*/
|
|
leader?: (number | null) | User;
|
|
commandElement?: {
|
|
docs?: (number | Assignment)[];
|
|
hasNextPage?: boolean;
|
|
totalDocs?: number;
|
|
};
|
|
/**
|
|
* Add other teams as members of this team/assignment.
|
|
*/
|
|
subAssignments?: (number | Assignment)[] | null;
|
|
/**
|
|
* Add individuals as members of this team/assignment.
|
|
*/
|
|
members?: (number | User)[] | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "qualifications".
|
|
*/
|
|
export interface Qualification {
|
|
id: number;
|
|
name: string;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "assignment-transfers".
|
|
*/
|
|
export interface AssignmentTransfer {
|
|
id: number;
|
|
/**
|
|
* The user requesting the transfer.
|
|
*/
|
|
requester: number | User;
|
|
/**
|
|
* The assignment the requester currently belongs to.
|
|
*/
|
|
fromAssignment: number | Assignment;
|
|
/**
|
|
* The assignment the requester wants to join.
|
|
*/
|
|
toAssignment: number | Assignment;
|
|
status: 'pending' | 'rejected' | 'awaiting_superuser' | 'completed' | 'cancelled' | 'denied';
|
|
/**
|
|
* Only set when status is awaiting_superuser. no_leaders: neither side had a leader at creation; appeal: requester appealed a rejection; leader_changed: leadership changed mid-pending.
|
|
*/
|
|
escalationReason?: ('no_leaders' | 'appeal' | 'leader_changed') | null;
|
|
/**
|
|
* The source assignment leader's decision. not_required is stamped at creation when the source has no leader.
|
|
*/
|
|
fromLeaderDecision: 'pending' | 'approved' | 'rejected' | 'not_required';
|
|
/**
|
|
* The destination assignment leader's decision. not_required is stamped at creation when the destination has no leader.
|
|
*/
|
|
toLeaderDecision: 'pending' | 'approved' | 'rejected' | 'not_required';
|
|
/**
|
|
* The user who recorded the source-side decision (audit).
|
|
*/
|
|
fromDecisionBy?: (number | null) | User;
|
|
/**
|
|
* The user who recorded the destination-side decision (audit).
|
|
*/
|
|
toDecisionBy?: (number | null) | User;
|
|
/**
|
|
* When the source-side decision was recorded.
|
|
*/
|
|
fromDecidedAt?: string | null;
|
|
/**
|
|
* When the destination-side decision was recorded.
|
|
*/
|
|
toDecidedAt?: string | null;
|
|
/**
|
|
* The source assignment's leader at creation time (audit snapshot; may be null).
|
|
*/
|
|
fromLeaderSnapshot?: (number | null) | User;
|
|
/**
|
|
* The destination assignment's leader at creation time (audit snapshot; may be null).
|
|
*/
|
|
toLeaderSnapshot?: (number | null) | User;
|
|
/**
|
|
* Required when a side rejects the request.
|
|
*/
|
|
rejectionReason?: string | null;
|
|
/**
|
|
* Optional note from the requester explaining the transfer.
|
|
*/
|
|
requestNote?: string | null;
|
|
/**
|
|
* Optional note from the requester when appealing a rejection.
|
|
*/
|
|
appealNote?: string | null;
|
|
/**
|
|
* The admin/developer who resolved an escalated request (audit).
|
|
*/
|
|
resolvedBy?: (number | null) | User;
|
|
/**
|
|
* Optional note from the resolver.
|
|
*/
|
|
resolutionNote?: string | null;
|
|
/**
|
|
* When the escalated request was resolved.
|
|
*/
|
|
resolvedAt?: string | null;
|
|
/**
|
|
* Discord message id of the notification sent to the source leader (Phase 2).
|
|
*/
|
|
discordFromLeaderMessageId?: string | null;
|
|
/**
|
|
* Discord message id of the notification sent to the destination leader (Phase 2).
|
|
*/
|
|
discordToLeaderMessageId?: string | null;
|
|
/**
|
|
* Discord message id of the notification sent to the requester (Phase 2).
|
|
*/
|
|
discordRequesterMessageId?: string | null;
|
|
/**
|
|
* The user actually notified on the source side (the leader at notification time; may differ from the snapshot).
|
|
*/
|
|
sourceNotifiedToUserId?: (number | null) | User;
|
|
/**
|
|
* The user actually notified on the destination side (the leader at notification time; may differ from the snapshot).
|
|
*/
|
|
destinationNotifiedToUserId?: (number | null) | User;
|
|
/**
|
|
* Delivery keys already sent to Discord, used by the Phase 2 bot service for idempotent delivery.
|
|
*/
|
|
discordDeliveredKeys?:
|
|
| {
|
|
[k: string]: unknown;
|
|
}
|
|
| unknown[]
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "experience".
|
|
*/
|
|
export interface Experience {
|
|
id: number;
|
|
name: string;
|
|
requiredPoints: number;
|
|
description: {
|
|
root: {
|
|
type: string;
|
|
children: {
|
|
type: any;
|
|
version: number;
|
|
[k: string]: unknown;
|
|
}[];
|
|
direction: ('ltr' | 'rtl') | null;
|
|
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
indent: number;
|
|
version: number;
|
|
};
|
|
[k: string]: unknown;
|
|
};
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "user-notifications".
|
|
*/
|
|
export interface UserNotification {
|
|
id: number;
|
|
user: number | User;
|
|
/**
|
|
* Machine-readable notification type, e.g. `market:offer`.
|
|
*/
|
|
type?: string | null;
|
|
title: string;
|
|
message?: string | null;
|
|
/**
|
|
* Optional internal path to navigate to when clicked.
|
|
*/
|
|
link?: string | null;
|
|
read?: boolean | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "evaluations".
|
|
*/
|
|
export interface Evaluation {
|
|
id: number;
|
|
/**
|
|
* Who submitted this evaluation. Private, only visible to users with evaluations:read.
|
|
*/
|
|
rater: number | User;
|
|
ratee: number | User;
|
|
mission: number | Mission;
|
|
kind: 'leader-direct' | 'leader-indirect' | 'subordinate';
|
|
level: 'exceptional' | 'excellent' | 'proficient' | 'adequate' | 'moderate' | 'under-review';
|
|
/**
|
|
* Private free-text note. Never shown to normal users; managers only.
|
|
*/
|
|
comment?: string | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "missions".
|
|
*/
|
|
export interface Mission {
|
|
id: number;
|
|
name: string;
|
|
/**
|
|
* A "code name" provides a unique way to reference this mission beyond just the mission's name. For example, a mission called "Operation Dragon Break" could be codenamed "OP:DRGBRK". Optional, but must be unique when set.
|
|
*/
|
|
codeName?: string | null;
|
|
/**
|
|
* A summary of the mission. This is not the same as a briefing; instead, it describes the mission's theme and concept to the unit as a whole.
|
|
*/
|
|
summary: string;
|
|
operationType: 'main' | 'side' | 'external';
|
|
/**
|
|
* ID of the attendance embed message in Discord (managed by the bot).
|
|
*/
|
|
discordMessageId?: string | null;
|
|
/**
|
|
* Hash of the last attendance state rendered to Discord (managed by the bot).
|
|
*/
|
|
discordAttendanceHash?: string | null;
|
|
/**
|
|
* When the attendance roll-call was first posted to Discord (managed by the bot).
|
|
*/
|
|
discordAttendanceSentAt?: string | null;
|
|
/**
|
|
* Fingerprint of the attached modlist last announced to Discord (managed by the bot).
|
|
*/
|
|
discordModlistHash?: string | null;
|
|
/**
|
|
* When the roll-call was marked cancelled in Discord (managed by the bot; cleared when a cancelled op is rescheduled).
|
|
*/
|
|
discordCancelledAt?: string | null;
|
|
/**
|
|
* When evaluation reminder DMs were sent for this mission (managed by the bot, one-shot).
|
|
*/
|
|
evaluationRemindersSentAt?: string | null;
|
|
/**
|
|
* Server-local day the last web 'not Ready' reminder notification was sent to the op creator (managed by the mission tick, once per day).
|
|
*/
|
|
readyReminderWebSentAt?: string | null;
|
|
/**
|
|
* Server-local day the last 'not Ready' reminder DM was sent to the op creator (managed by the Discord bot, once per day).
|
|
*/
|
|
readyReminderDmSentAt?: string | null;
|
|
/**
|
|
* When the imminent-op thread reminder was posted to Discord for this mission (managed by the Discord bot, one-shot; cleared on cancel so a reschedule re-reminds).
|
|
*/
|
|
imminentReminderSentAt?: string | null;
|
|
/**
|
|
* When respawn tickets for this mission were settled into player balances (managed by the arma-bridge tickets route; one-shot per mission).
|
|
*/
|
|
ticketsSettledAt?: string | null;
|
|
/**
|
|
* Player who scheduled this mission via the Friday Ops calendar (ownership + scheduling-cap tracking). Set automatically; leave empty for staff-created missions.
|
|
*/
|
|
createdBy?: (number | null) | User;
|
|
/**
|
|
* Background image for the mission page hero header. Renders translucent with a top-to-bottom fade to black. Recommended aspect ratio: 16:9 or wider.
|
|
*/
|
|
coverImage?: (number | null) | Media;
|
|
classification: {
|
|
map: number | Map;
|
|
missionType: 'Zeus' | 'PvE' | 'PvP' | 'PvPvE' | 'Training' | 'Special';
|
|
campaign?: (number | null) | Campaign;
|
|
/**
|
|
* This mission contains custom SQF scripts.
|
|
*/
|
|
customScripts?: boolean | null;
|
|
startDateTime: string;
|
|
estimatedDuration: number;
|
|
};
|
|
ownershipAndStatus: {
|
|
authors: (number | User)[];
|
|
zeus?: (number | User)[] | null;
|
|
status: 'Concept' | 'Planning' | 'Ready' | 'Scheduled' | 'Active' | 'Completed' | 'Cancelled';
|
|
visibility: 'unit' | 'leadership' | 'intel' | 'private';
|
|
/**
|
|
* When the mission transitioned to Completed. Set automatically by the lifecycle (auto-complete tick or manual status change); managed here, not editable in the form.
|
|
*/
|
|
completedAt?: string | null;
|
|
};
|
|
missionRoles: {
|
|
maxPlayers: number;
|
|
providedRoles?:
|
|
| {
|
|
roleName: string;
|
|
/**
|
|
* If true, this mission cannot be executed without someone fulfilling this role.
|
|
*/
|
|
missionCritical?: boolean | null;
|
|
/**
|
|
* This role can only be fulfilled by someone possessing these qualifications.
|
|
*/
|
|
requiredMos?: (number | Qualification)[] | null;
|
|
/**
|
|
* This role can only be fulfilled by someone of this rank or higher.
|
|
*/
|
|
minimumRank?: (number | null) | Rank;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
notes?: string | null;
|
|
};
|
|
briefing?:
|
|
| {
|
|
sectionName: string;
|
|
details: {
|
|
root: {
|
|
type: string;
|
|
children: {
|
|
type: any;
|
|
version: number;
|
|
[k: string]: unknown;
|
|
}[];
|
|
direction: ('ltr' | 'rtl') | null;
|
|
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
indent: number;
|
|
version: number;
|
|
};
|
|
[k: string]: unknown;
|
|
};
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
missionObjectives?:
|
|
| {
|
|
title: string;
|
|
description?: string | null;
|
|
/**
|
|
* If true, this mission will be considered a failure if this objective is failed.
|
|
*/
|
|
missionCritical?: boolean | null;
|
|
successOrFailConditions?: string | null;
|
|
/**
|
|
* If true, this objective will be hidden from players until revealed.
|
|
*/
|
|
redacted?: boolean | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
civilianPresence?: ('None' | 'Low' | 'Medium' | 'High') | null;
|
|
factionsInvolved?:
|
|
| {
|
|
faction: number | Faction;
|
|
threatLevel: 'ally' | 'friendly' | 'neutral' | 'hostile';
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
gameDetails: {
|
|
serverDetails: {
|
|
serverIp: string;
|
|
serverPort: number;
|
|
serverPassword?: string | null;
|
|
};
|
|
gameSetup?: {
|
|
missionFile?: (number | null) | MissionFile;
|
|
/**
|
|
* This field is not required only because you may be running a vanilla gamemode. If you have any mods at all in your mission, you MUST include a mod list.
|
|
*/
|
|
requiredMods?: (number | null) | ModList;
|
|
};
|
|
};
|
|
/**
|
|
* Mission requirements and conditions surrounding the deployment and use of logistics and support assets during the mission's runtime.
|
|
*/
|
|
logisticsAndSupport?: {
|
|
insertion?: ('helicopter' | 'aircraft' | 'paradrop' | 'boat' | 'car' | 'onFoot')[] | null;
|
|
extraction?: ('helicopter' | 'aircraft' | 'paradrop' | 'boat' | 'car' | 'onFoot')[] | null;
|
|
assetsAvailable?:
|
|
| {
|
|
/**
|
|
* The name or type of the asset provided (e.g. "Artillery", "M1A1 Tank", "Fuel Truck", "Close Air Support", etc.)
|
|
*/
|
|
assetType: string;
|
|
/**
|
|
* If applicable, the number of this asset that will be available at the start of the mission.
|
|
*/
|
|
assetCount?: string | null;
|
|
/**
|
|
* Whether or not this asset respawns during the mission, either automatically or manually via Zeus.
|
|
*/
|
|
doesRespawn?: boolean | null;
|
|
/**
|
|
* If applicable, the callsign of this asset (such as an aicraft providing close air support.)
|
|
*/
|
|
assetCallsign?: string | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
};
|
|
/**
|
|
* Communications and Standard Operating Procedures specific to this mission.
|
|
*/
|
|
commsAndDocs?: {
|
|
/**
|
|
* A detailed description of how radios will be used during this operation, including signals, contingency plans, and other relevant details.
|
|
*/
|
|
radioPlan?: {
|
|
root: {
|
|
type: string;
|
|
children: {
|
|
type: any;
|
|
version: number;
|
|
[k: string]: unknown;
|
|
}[];
|
|
direction: ('ltr' | 'rtl') | null;
|
|
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
indent: number;
|
|
version: number;
|
|
};
|
|
[k: string]: unknown;
|
|
} | null;
|
|
/**
|
|
* A list and description of each of the radio frequencies used for this mission.
|
|
*/
|
|
frequencies?:
|
|
| {
|
|
frequency: number;
|
|
/**
|
|
* Must be provided if the frequency used requires a separate radio channel.
|
|
*/
|
|
channel?: number | null;
|
|
/**
|
|
* The name assigned to this frequency (+ channel.) Examples of names include "COMNET", "PLTNET", "CASNET", etc.
|
|
*/
|
|
netName: string;
|
|
/**
|
|
* An explanation of the expected usage and purpose of this radio net.
|
|
*/
|
|
freqUsage: string;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
};
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "mission-files".
|
|
*/
|
|
export interface MissionFile {
|
|
id: number;
|
|
missionFileName: string;
|
|
author: number | User;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
url?: string | null;
|
|
thumbnailURL?: string | null;
|
|
filename?: string | null;
|
|
mimeType?: string | null;
|
|
filesize?: number | null;
|
|
width?: number | null;
|
|
height?: number | null;
|
|
focalX?: number | null;
|
|
focalY?: number | null;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "mod-lists".
|
|
*/
|
|
export interface ModList {
|
|
id: number;
|
|
/**
|
|
* A friendly name for the mod list.
|
|
*/
|
|
modlistName: string;
|
|
author: number | User;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
url?: string | null;
|
|
thumbnailURL?: string | null;
|
|
filename?: string | null;
|
|
mimeType?: string | null;
|
|
filesize?: number | null;
|
|
width?: number | null;
|
|
height?: number | null;
|
|
focalX?: number | null;
|
|
focalY?: number | null;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "ribbon-submissions".
|
|
*/
|
|
export interface RibbonSubmission {
|
|
id: number;
|
|
name: string;
|
|
/**
|
|
* What this ribbon is awarded for.
|
|
*/
|
|
description: string;
|
|
design:
|
|
| {
|
|
[k: string]: unknown;
|
|
}
|
|
| unknown[]
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null;
|
|
/**
|
|
* Submitter
|
|
*/
|
|
user: number | User;
|
|
status: 'pending' | 'approved' | 'rejected';
|
|
/**
|
|
* Reviewer feedback shown to the submitter.
|
|
*/
|
|
reviewNote?: string | null;
|
|
reviewedBy?: (number | null) | User;
|
|
reviewedAt?: string | null;
|
|
/**
|
|
* Award created after approval
|
|
*/
|
|
award?: (number | null) | Award;
|
|
/**
|
|
* XP awarded for this ribbon
|
|
*/
|
|
awardXp?: number | null;
|
|
/**
|
|
* Who can grant this award
|
|
*/
|
|
grantorTypes?: ('division' | 'squad' | 'team' | 'special')[] | null;
|
|
/**
|
|
* Who can receive this award
|
|
*/
|
|
recipientScope?: ('same_command' | 'whitelist' | 'anyone') | null;
|
|
/**
|
|
* Maximum grants per leader (empty = unlimited)
|
|
*/
|
|
maxGrantsPerGrantor?: number | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "mission-attendances".
|
|
*/
|
|
export interface MissionAttendance {
|
|
id: number;
|
|
mission: number | Mission;
|
|
user: number | User;
|
|
response: 'yes' | 'no' | 'tentative';
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "shipments".
|
|
*/
|
|
export interface Shipment {
|
|
id: number;
|
|
/**
|
|
* Shipment label. Auto-generated if left empty.
|
|
*/
|
|
name?: string | null;
|
|
origin: number | GameStructure;
|
|
destination: number | GameStructure;
|
|
/**
|
|
* The game map this shipment travels on. Cross-map shipments are not supported.
|
|
*/
|
|
map?: (number | null) | Map;
|
|
/**
|
|
* Snapshot polyline of the route as [x, y] meter tuples, for map rendering.
|
|
*/
|
|
routePath?:
|
|
| {
|
|
[k: string]: unknown;
|
|
}
|
|
| unknown[]
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null;
|
|
/**
|
|
* The vehicle instance transporting this shipment.
|
|
*/
|
|
transportVehicle: number | GameVehicle;
|
|
/**
|
|
* Euclidean distance between origin and destination.
|
|
*/
|
|
distance: number;
|
|
cargo: {
|
|
item:
|
|
| {
|
|
relationTo: 'resources';
|
|
value: number | Resource;
|
|
}
|
|
| {
|
|
relationTo: 'assets';
|
|
value: number | Asset;
|
|
}
|
|
| {
|
|
relationTo: 'vehicles';
|
|
value: number | Vehicle;
|
|
};
|
|
amount: number;
|
|
id?: string | null;
|
|
}[];
|
|
/**
|
|
* Total fuel required for the entire trip.
|
|
*/
|
|
fuelCost: number;
|
|
/**
|
|
* Fuel consumed so far during transit.
|
|
*/
|
|
fuelConsumed?: number | null;
|
|
status: 'pending' | 'dispatched' | 'in_transit' | 'arrived' | 'completed' | 'cancelled' | 'failed' | 'stranded';
|
|
dispatchedAt?: string | null;
|
|
estimatedArrival?: string | null;
|
|
completedAt?: string | null;
|
|
/**
|
|
* If true, the vehicle will automatically return to its origin after completing this shipment.
|
|
*/
|
|
autoReturn?: boolean | null;
|
|
createdBy?: (number | null) | User;
|
|
/**
|
|
* Reason for failure or stranding.
|
|
*/
|
|
failureReason?: string | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "bank-accounts".
|
|
*/
|
|
export interface BankAccount {
|
|
id: number;
|
|
/**
|
|
* Display name for the account (e.g., "Unit Treasury", "Red Faction Reserve").
|
|
*/
|
|
name: string;
|
|
/**
|
|
* Treasury = unit-level central funds. Faction = a specific faction's funds. Personal = an individual operator's wallet.
|
|
*/
|
|
accountType: 'treasury' | 'faction' | 'personal';
|
|
/**
|
|
* The faction that owns this account.
|
|
*/
|
|
ownerFaction?: (number | null) | Faction;
|
|
/**
|
|
* The operator who owns this personal account.
|
|
*/
|
|
ownerUser?: (number | null) | User;
|
|
/**
|
|
* The currency this account is denominated in (normally the main currency set in Game Rules).
|
|
*/
|
|
currency: number | Resource;
|
|
/**
|
|
* Current account balance. Maintained automatically by banking transactions.
|
|
*/
|
|
balance?: number | null;
|
|
status: 'open' | 'frozen' | 'closed';
|
|
createdAt: string;
|
|
updatedAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "bank-transactions".
|
|
*/
|
|
export interface BankTransaction {
|
|
id: number;
|
|
/**
|
|
* Auto-generated reference number.
|
|
*/
|
|
transactionNumber: string;
|
|
type: 'deposit' | 'withdrawal' | 'transfer' | 'payment' | 'fee' | 'salary' | 'adjustment';
|
|
/**
|
|
* Source account (empty for external deposits / incoming funds).
|
|
*/
|
|
fromAccount?: (number | null) | BankAccount;
|
|
/**
|
|
* Destination account (empty for external withdrawals / outgoing payments).
|
|
*/
|
|
toAccount?: (number | null) | BankAccount;
|
|
/**
|
|
* Gross amount moved. Withdrawals may be split as amount + fee.
|
|
*/
|
|
amount: number;
|
|
/**
|
|
* Transaction fee debited from the source in addition to the amount.
|
|
*/
|
|
fee?: number | null;
|
|
/**
|
|
* Human-readable note attached to the transaction.
|
|
*/
|
|
memo?: string | null;
|
|
/**
|
|
* User who initiated the transaction.
|
|
*/
|
|
actor?: (number | null) | User;
|
|
status: 'completed' | 'reversed';
|
|
/**
|
|
* Original transaction, when this one is a reversal.
|
|
*/
|
|
reference?: (number | null) | BankTransaction;
|
|
timestamp: string;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "ledger-entries".
|
|
*/
|
|
export interface LedgerEntry {
|
|
id: number;
|
|
/**
|
|
* The account this ledger entry applies to.
|
|
*/
|
|
account: number | BankAccount;
|
|
/**
|
|
* The originating bank transaction.
|
|
*/
|
|
transaction: number | BankTransaction;
|
|
type: 'deposit' | 'withdrawal' | 'transfer' | 'payment' | 'fee' | 'salary' | 'adjustment';
|
|
/**
|
|
* Signed amount: positive = credit into the account, negative = debit out.
|
|
*/
|
|
amount: number;
|
|
/**
|
|
* Account balance immediately after this entry was applied.
|
|
*/
|
|
balanceAfter?: number | null;
|
|
memo?: string | null;
|
|
timestamp: string;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "locker-storages".
|
|
*/
|
|
export interface LockerStorage {
|
|
id: number;
|
|
/**
|
|
* Display name for this locker.
|
|
*/
|
|
name: string;
|
|
/**
|
|
* The operator who owns this locker.
|
|
*/
|
|
ownerUser: number | User;
|
|
/**
|
|
* Items stored in the locker grid. Position and rotation are managed from the member locker UI.
|
|
*/
|
|
items?:
|
|
| {
|
|
asset: number | Asset;
|
|
quantity: number;
|
|
/**
|
|
* Column position in the locker grid (0-indexed).
|
|
*/
|
|
gridX: number;
|
|
/**
|
|
* Row position in the locker grid (0-indexed).
|
|
*/
|
|
gridY: number;
|
|
/**
|
|
* Whether this item is rotated 90 degrees (swaps width and height).
|
|
*/
|
|
rotated?: boolean | null;
|
|
/**
|
|
* Per-instance customization for this item: installed attachments, applied skin, and a custom name. Managed from the member locker UI.
|
|
*/
|
|
equipment?: {
|
|
/**
|
|
* Attachments installed on this item (e.g. optics, muzzles, bipods on a weapon). Installing consumes the attachment from the locker grid.
|
|
*/
|
|
attachments?:
|
|
| {
|
|
asset: number | Asset;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
/**
|
|
* Skin applied to this item. Applying consumes the skin from the locker grid.
|
|
*/
|
|
skin?: (number | null) | Asset;
|
|
/**
|
|
* Optional custom name for this item (e.g. "Frank's Karma").
|
|
*/
|
|
customName?: string | null;
|
|
};
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
/**
|
|
* Total number of distinct entries currently in this locker.
|
|
*/
|
|
itemCount?: number | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "loadouts".
|
|
*/
|
|
export interface Loadout {
|
|
id: number;
|
|
/**
|
|
* Loadout name (e.g., "CQB", "Overwatch", "Resupply").
|
|
*/
|
|
name: string;
|
|
/**
|
|
* Optional notes about this loadout.
|
|
*/
|
|
description?: string | null;
|
|
/**
|
|
* The operator this loadout belongs to.
|
|
*/
|
|
ownerUser: number | User;
|
|
/**
|
|
* Whether this is the member's currently equipped loadout. Only one loadout per member can be equipped; the wardrobe reflects the equipped loadout.
|
|
*/
|
|
equipped?: boolean | null;
|
|
/**
|
|
* Assign assets from your locker to each equipment slot.
|
|
*/
|
|
slots?: {
|
|
/**
|
|
* Primary weapon
|
|
*/
|
|
primary?: (number | null) | Asset;
|
|
/**
|
|
* Secondary weapon
|
|
*/
|
|
secondary?: (number | null) | Asset;
|
|
/**
|
|
* Launcher / heavy weapon
|
|
*/
|
|
launcher?: (number | null) | Asset;
|
|
/**
|
|
* Uniform
|
|
*/
|
|
uniform?: (number | null) | Asset;
|
|
/**
|
|
* Carrier / plate carrier
|
|
*/
|
|
vest?: (number | null) | Asset;
|
|
/**
|
|
* Backpack / rucksack
|
|
*/
|
|
backpack?: (number | null) | Asset;
|
|
/**
|
|
* Helmet
|
|
*/
|
|
helmet?: (number | null) | Asset;
|
|
/**
|
|
* Facewear / eyewear
|
|
*/
|
|
facewear?: (number | null) | Asset;
|
|
/**
|
|
* Night vision device
|
|
*/
|
|
nvg?: (number | null) | Asset;
|
|
/**
|
|
* Radio / comms
|
|
*/
|
|
radio?: (number | null) | Asset;
|
|
/**
|
|
* Optic attachment
|
|
*/
|
|
optic?: (number | null) | Asset;
|
|
/**
|
|
* Muzzle attachment
|
|
*/
|
|
muzzle?: (number | null) | Asset;
|
|
/**
|
|
* Bipod attachment
|
|
*/
|
|
bipod?: (number | null) | Asset;
|
|
};
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "market-listings".
|
|
*/
|
|
export interface MarketListing {
|
|
id: number;
|
|
/**
|
|
* The asset being offered for sale.
|
|
*/
|
|
asset: number | Asset;
|
|
/**
|
|
* The user who listed this item. Null for auto-generated market entries (NPC stock).
|
|
*/
|
|
seller?: (number | null) | User;
|
|
/**
|
|
* The NPC stocking this entry. Auto-generated market entries are attributed to an NPC instead of a user.
|
|
*/
|
|
npc?: (number | null) | GameNpc;
|
|
quantity: number;
|
|
/**
|
|
* Price per single unit, in the market currency.
|
|
*/
|
|
price: number;
|
|
/**
|
|
* The seller's target price during negotiations. Defaults to the asking price.
|
|
*/
|
|
desiredPrice?: number | null;
|
|
/**
|
|
* The lowest per-unit price the seller will accept. When set below the asking price, the listing is negotiable.
|
|
*/
|
|
minPrice?: number | null;
|
|
/**
|
|
* The currency this listing is priced in. Defaults to the main campaign currency.
|
|
*/
|
|
currency?: (number | null) | Resource;
|
|
status: 'active' | 'sold' | 'cancelled' | 'expired';
|
|
/**
|
|
* True for system-generated NPC entries. Auto-generated entries have no seller; proceeds go to the unit treasury.
|
|
*/
|
|
isAutoGenerated?: boolean | null;
|
|
listedAt: string;
|
|
/**
|
|
* When this listing expires. Expired user listings have their stock returned to the seller; auto-generated entries simply close.
|
|
*/
|
|
expiresAt?: string | null;
|
|
soldAt?: string | null;
|
|
/**
|
|
* The user who purchased this listing.
|
|
*/
|
|
buyer?: (number | null) | User;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "market-negotiations".
|
|
*/
|
|
export interface MarketNegotiation {
|
|
id: number;
|
|
/**
|
|
* The market listing this negotiation thread belongs to.
|
|
*/
|
|
listing: number | MarketListing;
|
|
/**
|
|
* The player interested in buying the listing.
|
|
*/
|
|
buyer: number | User;
|
|
status: 'open' | 'accepted' | 'rejected' | 'closed' | 'cancelled' | 'expired';
|
|
/**
|
|
* NPC vendor patience (0-100). Rises each bargaining round and sharply for lowball offers; at 100 the negotiation closes and the buyer can only buy at the asking price.
|
|
*/
|
|
patience?: number | null;
|
|
/**
|
|
* How many units the buyer wants from the listing.
|
|
*/
|
|
quantity?: number | null;
|
|
/**
|
|
* The per-unit price currently on the table. Proposed by the buyer or the seller depending on the proposal.
|
|
*/
|
|
amount: number;
|
|
proposedBy: 'buyer' | 'seller';
|
|
/**
|
|
* The per-unit price agreed when the negotiation is accepted.
|
|
*/
|
|
acceptedPrice?: number | null;
|
|
history?:
|
|
| {
|
|
amount: number;
|
|
from: 'buyer' | 'seller';
|
|
note?: string | null;
|
|
at: string;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* Supply/demand ledger per item, maintained by the economy tick. Baselines are copied from the item's Supply & Demand fields on first creation.
|
|
*
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "market-state".
|
|
*/
|
|
export interface MarketState {
|
|
id: number;
|
|
/**
|
|
* Which collection this ledger entry tracks.
|
|
*/
|
|
itemType: 'resource' | 'asset';
|
|
/**
|
|
* ID of the tracked resource or asset document.
|
|
*/
|
|
itemId: number;
|
|
/**
|
|
* GM-set resting supply. Copied from the item's Supply & Demand baseline when this entry is first created.
|
|
*/
|
|
gmBaselineSupply: number;
|
|
/**
|
|
* GM-set resting demand. Copied from the item's Supply & Demand baseline when this entry is first created.
|
|
*/
|
|
gmBaselineDemand: number;
|
|
/**
|
|
* Living abstract supply. Decremented by unit purchases from NPC listings, incremented by production/sales (later phases).
|
|
*/
|
|
currentSupply: number;
|
|
/**
|
|
* NPC faction demand pressure. Slow-drifting random walk bounded around the GM baseline, updated per economy tick.
|
|
*/
|
|
artificialDemand: number;
|
|
/**
|
|
* Decaying rolling aggregate of completed unit purchases (quantity-weighted). Decayed each tick by the Game Rules decay factor.
|
|
*/
|
|
realDemand: number;
|
|
/**
|
|
* Computed price multiplier applied to the item's base price when generating NEW NPC listings only (1 = resting price). Existing listings and open negotiations are never repriced.
|
|
*/
|
|
priceModifier: number;
|
|
/**
|
|
* When the economy tick last recomputed this entry.
|
|
*/
|
|
lastComputedAt?: string | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "voice-scripts".
|
|
*/
|
|
export interface VoiceScript {
|
|
id: number;
|
|
title: string;
|
|
/**
|
|
* Optional context for readers: who is speaking, where this line happens, and anything else they should know before recording.
|
|
*/
|
|
description?: string | null;
|
|
/**
|
|
* Voice talent reads this verbatim. Inline emotion tags like [calm] are stored as written.
|
|
*/
|
|
script: string;
|
|
/**
|
|
* XP awarded per accepted submission of this script.
|
|
*/
|
|
xpAmount: number;
|
|
/**
|
|
* Warns readers on the frontend that this script may include, infer, or expose campaign spoilers.
|
|
*/
|
|
spoiler?: boolean | null;
|
|
/**
|
|
* Draft scripts are hidden from the frontend. Open scripts accept submissions; closed scripts reject new ones.
|
|
*/
|
|
status: 'draft' | 'open' | 'closed';
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "voice-submissions".
|
|
*/
|
|
export interface VoiceSubmission {
|
|
id: number;
|
|
script: number | VoiceScript;
|
|
/**
|
|
* Submitter
|
|
*/
|
|
user: number | User;
|
|
/**
|
|
* Optional short note from the submitter about this take.
|
|
*/
|
|
description?: string | null;
|
|
status: 'pending' | 'accepted' | 'rejected';
|
|
/**
|
|
* Optional reviewer feedback. Shown to the submitter alongside their take.
|
|
*/
|
|
reviewNote?: string | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
url?: string | null;
|
|
thumbnailURL?: string | null;
|
|
filename?: string | null;
|
|
mimeType?: string | null;
|
|
filesize?: number | null;
|
|
width?: number | null;
|
|
height?: number | null;
|
|
focalX?: number | null;
|
|
focalY?: number | null;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "tickets".
|
|
*/
|
|
export interface Ticket {
|
|
id: number;
|
|
/**
|
|
* Short, descriptive summary of the issue or request.
|
|
*/
|
|
title: string;
|
|
/**
|
|
* Full details of the issue or request.
|
|
*/
|
|
description: {
|
|
root: {
|
|
type: string;
|
|
children: {
|
|
type: any;
|
|
version: number;
|
|
[k: string]: unknown;
|
|
}[];
|
|
direction: ('ltr' | 'rtl') | null;
|
|
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
indent: number;
|
|
version: number;
|
|
};
|
|
[k: string]: unknown;
|
|
};
|
|
category: 'bug_report' | 'feature_request' | 'support_request' | 'other';
|
|
priority: 'low' | 'medium' | 'high' | 'critical';
|
|
status:
|
|
| 'open'
|
|
| 'in_review'
|
|
| 'planning'
|
|
| 'in_progress'
|
|
| 'waiting_on_reporter'
|
|
| 'in_testing'
|
|
| 'resolved'
|
|
| 'canceled'
|
|
| 'closed';
|
|
/**
|
|
* The user who submitted this ticket.
|
|
*/
|
|
reporter: number | User;
|
|
/**
|
|
* Staff member responsible for this ticket.
|
|
*/
|
|
assignee?: (number | null) | User;
|
|
/**
|
|
* Append-only activity timeline. Messages between the reporter and staff plus system events.
|
|
*/
|
|
activity?:
|
|
| {
|
|
type: 'system' | 'agent_message' | 'client_message';
|
|
content: {
|
|
root: {
|
|
type: string;
|
|
children: {
|
|
type: any;
|
|
version: number;
|
|
[k: string]: unknown;
|
|
}[];
|
|
direction: ('ltr' | 'rtl') | null;
|
|
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
indent: number;
|
|
version: number;
|
|
};
|
|
[k: string]: unknown;
|
|
};
|
|
/**
|
|
* Who wrote this entry. Omitted for system events.
|
|
*/
|
|
author?: (number | null) | User;
|
|
created_at?: string | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
/**
|
|
* Immutable before/after snapshots captured when the author edits a ticket.
|
|
*/
|
|
editHistory?:
|
|
| {
|
|
before:
|
|
| {
|
|
[k: string]: unknown;
|
|
}
|
|
| unknown[]
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null;
|
|
after:
|
|
| {
|
|
[k: string]: unknown;
|
|
}
|
|
| unknown[]
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null;
|
|
editedBy: number | User;
|
|
editedAt: string;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
/**
|
|
* Set automatically when the ticket reaches a closing status.
|
|
*/
|
|
closedAt?: string | null;
|
|
/**
|
|
* Project this ticket belongs to. Null = standalone/backlog.
|
|
*/
|
|
project?: (number | null) | Project;
|
|
/**
|
|
* Sprint this ticket is assigned to.
|
|
*/
|
|
sprint?: (number | null) | Sprint;
|
|
/**
|
|
* Release this ticket targets.
|
|
*/
|
|
release?: (number | null) | Release;
|
|
/**
|
|
* Parent ticket (for subtasks / epic children).
|
|
*/
|
|
parentTicket?: (number | null) | Ticket;
|
|
/**
|
|
* Labels for filtering and organization.
|
|
*/
|
|
labels?: (number | Label)[] | null;
|
|
/**
|
|
* Issue type.
|
|
*/
|
|
type?: ('task' | 'bug' | 'story' | 'epic' | 'improvement') | null;
|
|
/**
|
|
* Fibonacci story point estimate.
|
|
*/
|
|
storyPoints?: number | null;
|
|
/**
|
|
* Time estimate in hours.
|
|
*/
|
|
estimate?: number | null;
|
|
/**
|
|
* When work starts (for Gantt).
|
|
*/
|
|
startDate?: string | null;
|
|
/**
|
|
* When work is due (for Gantt).
|
|
*/
|
|
dueDate?: string | null;
|
|
/**
|
|
* How the ticket was resolved.
|
|
*/
|
|
resolution?: ('fixed' | 'wontfix' | 'duplicate' | 'invalid') | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "projects".
|
|
*/
|
|
export interface Project {
|
|
id: number;
|
|
name: string;
|
|
/**
|
|
* Short project key (e.g. PTF). Max 10 uppercase alphanumeric characters.
|
|
*/
|
|
key: string;
|
|
description?: {
|
|
root: {
|
|
type: string;
|
|
children: {
|
|
type: any;
|
|
version: number;
|
|
[k: string]: unknown;
|
|
}[];
|
|
direction: ('ltr' | 'rtl') | null;
|
|
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
indent: number;
|
|
version: number;
|
|
};
|
|
[k: string]: unknown;
|
|
} | null;
|
|
lead?: (number | null) | User;
|
|
status?: ('active' | 'archived') | null;
|
|
/**
|
|
* Default assignee for new tickets in this project.
|
|
*/
|
|
defaultAssignee?: (number | null) | User;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "sprints".
|
|
*/
|
|
export interface Sprint {
|
|
id: number;
|
|
name: string;
|
|
project: number | Project;
|
|
goal?: string | null;
|
|
startDate?: string | null;
|
|
endDate?: string | null;
|
|
status?: ('planning' | 'active' | 'completed') | null;
|
|
/**
|
|
* Story point capacity for this sprint.
|
|
*/
|
|
capacity?: number | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "releases".
|
|
*/
|
|
export interface Release {
|
|
id: number;
|
|
name: string;
|
|
project: number | Project;
|
|
description?: {
|
|
root: {
|
|
type: string;
|
|
children: {
|
|
type: any;
|
|
version: number;
|
|
[k: string]: unknown;
|
|
}[];
|
|
direction: ('ltr' | 'rtl') | null;
|
|
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
indent: number;
|
|
version: number;
|
|
};
|
|
[k: string]: unknown;
|
|
} | null;
|
|
status?: ('draft' | 'in_progress' | 'released') | null;
|
|
releaseDate?: string | null;
|
|
/**
|
|
* Semver string, e.g. 2.3.0
|
|
*/
|
|
targetVersion?: string | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "labels".
|
|
*/
|
|
export interface Label {
|
|
id: number;
|
|
name: string;
|
|
/**
|
|
* Hex color code.
|
|
*/
|
|
color?: string | null;
|
|
/**
|
|
* Null for global labels.
|
|
*/
|
|
project?: (number | null) | Project;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "ticket-votes".
|
|
*/
|
|
export interface TicketVote {
|
|
id: number;
|
|
ticket: number | Ticket;
|
|
user: number | User;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "wiki-pages".
|
|
*/
|
|
export interface WikiPage {
|
|
id: number;
|
|
title: string;
|
|
/**
|
|
* URL slug. Generated by the service layer from the title.
|
|
*/
|
|
slug: string;
|
|
category: 'Campaign' | 'World' | 'Lore' | 'Characters' | 'Plot' | 'Media' | 'Guides' | 'Meta';
|
|
tags?: string[] | null;
|
|
/**
|
|
* Markdown source. Rendered by the frontend.
|
|
*/
|
|
body: string;
|
|
lockdown?: boolean | null;
|
|
lockedBy?: (number | null) | User;
|
|
lockedAt?: string | null;
|
|
lastEditor?: (number | null) | User;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "wiki-revisions".
|
|
*/
|
|
export interface WikiRevision {
|
|
id: number;
|
|
page: number | WikiPage;
|
|
revisionNumber: number;
|
|
titleSnapshot: string;
|
|
contentSnapshot: string;
|
|
editor?: (number | null) | User;
|
|
summary?: string | null;
|
|
type: 'create' | 'edit' | 'restore';
|
|
restoredFromRevision?: number | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "wiki-templates".
|
|
*/
|
|
export interface WikiTemplate {
|
|
id: number;
|
|
name: string;
|
|
/**
|
|
* Snippet text with {{param}}-style placeholders as plain markdown.
|
|
*/
|
|
body: string;
|
|
description?: string | null;
|
|
/**
|
|
* Optional CSS injected on wiki pages while this template exists. Write plain selectors, which are automatically prefixed with a hash-based scope class (e.g. .ptf-tpl-3afb1c .my-class) so templates never collide with each other or the app shell.
|
|
*/
|
|
css?: string | null;
|
|
/**
|
|
* Developer-only. Raw HTML rendered verbatim (sanitized) when this template is transcluded, replacing the markdown body.
|
|
*/
|
|
html?: string | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "map-roads".
|
|
*/
|
|
export interface MapRoad {
|
|
id: number;
|
|
/**
|
|
* Road or route label (e.g. "Highway 1", "Kavala ridge trail").
|
|
*/
|
|
name?: string | null;
|
|
/**
|
|
* Shown in the road's tooltip and popup on the map.
|
|
*/
|
|
description?: string | null;
|
|
map: number | Map;
|
|
surface: 'paved' | 'dirt' | 'trail';
|
|
/**
|
|
* Routing weight multiplier. Higher = faster/preferred (1 = neutral). Affects which route Dijkstra picks; fuel is charged on geometric length.
|
|
*/
|
|
speedMultiplier: number;
|
|
/**
|
|
* Line color as hex (e.g. #cbd5e1). Empty = default color for the surface.
|
|
*/
|
|
strokeColor?: string | null;
|
|
/**
|
|
* Line thickness in pixels.
|
|
*/
|
|
strokeWeight?: number | null;
|
|
strokeStyle?: ('solid' | 'dashed' | 'dotted') | null;
|
|
/**
|
|
* Auto (unset): only paved roads show labels. Check to force on, uncheck to force off. The map authoring toolbar's Label select writes this.
|
|
*/
|
|
labelVisible?: boolean | null;
|
|
/**
|
|
* Array of [x, y] meter tuples in map order.
|
|
*/
|
|
points:
|
|
| {
|
|
[k: string]: unknown;
|
|
}
|
|
| unknown[]
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "map-zones".
|
|
*/
|
|
export interface MapZone {
|
|
id: number;
|
|
/**
|
|
* Zone label (e.g. "Altis bay", "Flood plain").
|
|
*/
|
|
name?: string | null;
|
|
/**
|
|
* Shown in the zone's tooltip and popup on the map.
|
|
*/
|
|
description?: string | null;
|
|
map: number | Map;
|
|
/**
|
|
* Water zones block land-blueprint placement. Land zones are informational; default terrain is buildable land. Territory and Country Border are political boundaries (informational). Other is for generic areas such as named compounds.
|
|
*/
|
|
type: 'water' | 'land' | 'territory' | 'border' | 'other';
|
|
/**
|
|
* Polygon fill as hex (e.g. #38bdf8). Empty = default color for the type.
|
|
*/
|
|
fillColor?: string | null;
|
|
/**
|
|
* Outline color as hex. Empty = default color for the type.
|
|
*/
|
|
strokeColor?: string | null;
|
|
/**
|
|
* Fill opacity 0-1. Empty = default (0.25 water, 0.08 land, 0.1 territory, 0.06 border, 0.08 other).
|
|
*/
|
|
fillOpacity?: number | null;
|
|
/**
|
|
* Outline thickness in pixels. 0 hides the outline.
|
|
*/
|
|
strokeWeight?: number | null;
|
|
/**
|
|
* Resources contained in this zone (e.g. an oil field). A zone with resources satisfies blueprint resourcesInRange requirements for any site inside it.
|
|
*/
|
|
resources?: (number | Resource)[] | null;
|
|
/**
|
|
* Renders the zone's name at the polygon's center.
|
|
*/
|
|
labelVisible?: boolean | null;
|
|
/**
|
|
* Polygon ring as an array of [x, y] meter tuples (need not repeat the first point).
|
|
*/
|
|
points:
|
|
| {
|
|
[k: string]: unknown;
|
|
}
|
|
| unknown[]
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "resource-nodes".
|
|
*/
|
|
export interface ResourceNode {
|
|
id: number;
|
|
/**
|
|
* Node label (e.g. "North copper deposit").
|
|
*/
|
|
name: string;
|
|
/**
|
|
* Shown in the node's tooltip and popup on the map.
|
|
*/
|
|
description?: string | null;
|
|
map: number | Map;
|
|
/**
|
|
* Every resource this node yields (e.g. copper AND oil). Leave empty for a plain marker node.
|
|
*/
|
|
resources?: (number | Resource)[] | null;
|
|
/**
|
|
* Marker icon shown on the map.
|
|
*/
|
|
icon?: ('marker' | 'droplet' | 'trees' | 'mountain' | 'flag' | 'star' | 'skull' | 'home' | 'anchor' | 'fuel') | null;
|
|
/**
|
|
* [x, y] tuple in meters on the map grid.
|
|
*/
|
|
position:
|
|
| {
|
|
[k: string]: unknown;
|
|
}
|
|
| unknown[]
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null;
|
|
/**
|
|
* Display-only abundance rating for the map UI.
|
|
*/
|
|
richness?: number | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "narrative-events".
|
|
*/
|
|
export interface NarrativeEvent {
|
|
id: number;
|
|
/**
|
|
* The title of this narrative event chain.
|
|
*/
|
|
name: string;
|
|
/**
|
|
* A brief summary of what this event is about.
|
|
*/
|
|
summary: string;
|
|
flowData:
|
|
| {
|
|
[k: string]: unknown;
|
|
}
|
|
| unknown[]
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null;
|
|
triggers?: {
|
|
type?: ('manual' | 'mission_complete' | 'timer' | 'condition') | null;
|
|
/**
|
|
* Optional JSON conditions for when this event can fire.
|
|
*/
|
|
condition?:
|
|
| {
|
|
[k: string]: unknown;
|
|
}
|
|
| unknown[]
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null;
|
|
};
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* Chronicle story beats. Drafts are visible to staff only; published beats are readable by any logged-in user on /story.
|
|
*
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "story-beats".
|
|
*/
|
|
export interface StoryBeat {
|
|
id: number;
|
|
title: string;
|
|
/**
|
|
* In-story timestamp used to order the chronicle.
|
|
*/
|
|
occurredAt?: string | null;
|
|
/**
|
|
* Tie-breaker for beats that share the same timestamp.
|
|
*/
|
|
order?: number | null;
|
|
status: 'draft' | 'published';
|
|
/**
|
|
* Rich text body of the beat, rendered on /story with the Lexical renderer.
|
|
*/
|
|
body: {
|
|
root: {
|
|
type: string;
|
|
children: {
|
|
type: any;
|
|
version: number;
|
|
[k: string]: unknown;
|
|
}[];
|
|
direction: ('ltr' | 'rtl') | null;
|
|
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
indent: number;
|
|
version: number;
|
|
};
|
|
[k: string]: unknown;
|
|
};
|
|
/**
|
|
* Optional mission this beat is tied to. Beats may stand alone.
|
|
*/
|
|
mission?: (number | null) | Mission;
|
|
/**
|
|
* Optional audio narration for this beat. Rendered as a player on /story.
|
|
*/
|
|
voiceover?: (number | null) | StoryVoiceover;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* Audio narrations for Chronicle story beats. Attach to a beat via its Voiceover field.
|
|
*
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "story-voiceovers".
|
|
*/
|
|
export interface StoryVoiceover {
|
|
id: number;
|
|
/**
|
|
* Tick if this narration was generated by AI (text-to-speech) rather than recorded by a person. Adds a note under the player on /story.
|
|
*/
|
|
aiGenerated?: boolean | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
url?: string | null;
|
|
thumbnailURL?: string | null;
|
|
filename?: string | null;
|
|
mimeType?: string | null;
|
|
filesize?: number | null;
|
|
width?: number | null;
|
|
height?: number | null;
|
|
focalX?: number | null;
|
|
focalY?: number | null;
|
|
}
|
|
/**
|
|
* Per-user read markers and reactions for story beats.
|
|
*
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "story-beat-states".
|
|
*/
|
|
export interface StoryBeatState {
|
|
id: number;
|
|
user: number | User;
|
|
beat: number | StoryBeat;
|
|
/**
|
|
* When the user first read the beat.
|
|
*/
|
|
readAt?: string | null;
|
|
/**
|
|
* The user's current reaction to the beat, if any.
|
|
*/
|
|
reaction?: ('like' | 'heart' | 'salute') | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "game-servers".
|
|
*/
|
|
export interface GameServer {
|
|
id: number;
|
|
serverId: string;
|
|
name: string;
|
|
status: 'online' | 'offline';
|
|
lastSeenAt?: string | null;
|
|
metadata?:
|
|
| {
|
|
[k: string]: unknown;
|
|
}
|
|
| unknown[]
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "arma-sync-events".
|
|
*/
|
|
export interface ArmaSyncEvent {
|
|
id: number;
|
|
eventId: string;
|
|
server: number | GameServer;
|
|
type: string;
|
|
occurredAt: string;
|
|
payload:
|
|
| {
|
|
[k: string]: unknown;
|
|
}
|
|
| unknown[]
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "arma-commands".
|
|
*/
|
|
export interface ArmaCommand {
|
|
id: number;
|
|
commandId: string;
|
|
server: number | GameServer;
|
|
type: string;
|
|
payload:
|
|
| {
|
|
[k: string]: unknown;
|
|
}
|
|
| unknown[]
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null;
|
|
status: 'queued' | 'delivered' | 'succeeded' | 'failed';
|
|
result?:
|
|
| {
|
|
[k: string]: unknown;
|
|
}
|
|
| unknown[]
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null;
|
|
error?: string | null;
|
|
deliveredAt?: string | null;
|
|
completedAt?: string | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "respawn-tickets".
|
|
*/
|
|
export interface RespawnTicket {
|
|
id: number;
|
|
user: number | User;
|
|
/**
|
|
* Accumulated respawn tickets (1 per yes-attended op, 0.5 tentative, 0.25 no). Settlement adjusts automatically; GMs can adjust manually.
|
|
*/
|
|
balance?: number | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "supply-boxes".
|
|
*/
|
|
export interface SupplyBox {
|
|
id: number;
|
|
boxId: string;
|
|
/**
|
|
* Bridge session generation id (worldName + systemTime) extracted from the boxId; used to detect stale generations after a mission restart.
|
|
*/
|
|
sessionId: string;
|
|
/**
|
|
* Owning game server, resolved from the authenticated ingestion event. Never populated from payload content.
|
|
*/
|
|
server: number | GameServer;
|
|
boxClass?: string | null;
|
|
displayName?: string | null;
|
|
location?:
|
|
| {
|
|
[k: string]: unknown;
|
|
}
|
|
| unknown[]
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null;
|
|
contents?:
|
|
| {
|
|
[k: string]: unknown;
|
|
}
|
|
| unknown[]
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null;
|
|
lastSyncedAt: string;
|
|
status: 'active' | 'deleted';
|
|
/**
|
|
* Raw arma-sync-events row that produced the current state; provenance back to the exact mod event.
|
|
*/
|
|
sourceEvent: number | ArmaSyncEvent;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "operation-events".
|
|
*/
|
|
export interface OperationEvent {
|
|
id: number;
|
|
/**
|
|
* The immutable raw sync event this record was derived from.
|
|
*/
|
|
sourceEvent: number | ArmaSyncEvent;
|
|
/**
|
|
* Mirror of the raw event's server-prefixed id (serverId:eventId).
|
|
*/
|
|
eventId: string;
|
|
/**
|
|
* Operation identity from the event payload, or "unknown".
|
|
*/
|
|
operationId: string;
|
|
/**
|
|
* Event type as received. Supported: operation.start, operation.end, operation.objective, operation.extraction, operation.inventory, player.kill. Unknown types are kept as dead-letter records.
|
|
*/
|
|
type: string;
|
|
/**
|
|
* Event contract version from the payload (default 1).
|
|
*/
|
|
version: number;
|
|
/**
|
|
* Validation outcome. Only validated events derive effects.
|
|
*/
|
|
status: 'validated' | 'rejected' | 'dead-letter';
|
|
/**
|
|
* Rejection/dead-letter reason: { code, message }.
|
|
*/
|
|
error?:
|
|
| {
|
|
[k: string]: unknown;
|
|
}
|
|
| unknown[]
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null;
|
|
/**
|
|
* SHA-256 of the stable-stringified raw payload.
|
|
*/
|
|
payloadHash: string;
|
|
actor?: (number | null) | User;
|
|
server?: (number | null) | GameServer;
|
|
mission?: (number | null) | Mission;
|
|
occurredAt: string;
|
|
validatedAt?: string | null;
|
|
reconciliationNotes?: string | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "operation-effects".
|
|
*/
|
|
export interface OperationEffect {
|
|
id: number;
|
|
/**
|
|
* The validated operation event this effect derives from.
|
|
*/
|
|
operationEvent: number | OperationEvent;
|
|
/**
|
|
* The raw source event this effect derives from.
|
|
*/
|
|
sourceEvent: number | ArmaSyncEvent;
|
|
operationId: string;
|
|
/**
|
|
* Idempotency key: `${eventId}:${effectType}`.
|
|
*/
|
|
effectKey: string;
|
|
effectType:
|
|
| 'operation.started'
|
|
| 'operation.ended'
|
|
| 'operation.objective-updated'
|
|
| 'operation.extraction-recorded'
|
|
| 'operation.inventory-recorded';
|
|
status: 'applied' | 'pending' | 'failed' | 'reversed';
|
|
payload?:
|
|
| {
|
|
[k: string]: unknown;
|
|
}
|
|
| unknown[]
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null;
|
|
/**
|
|
* Set when this effect reverses another effect.
|
|
*/
|
|
reversalOf?: (number | null) | OperationEffect;
|
|
/**
|
|
* Set when this effect has been reversed.
|
|
*/
|
|
reversedBy?: (number | null) | OperationEffect;
|
|
reconciliationNotes?: string | null;
|
|
appliedAt?: string | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "operation-reservations".
|
|
*/
|
|
export interface OperationReservation {
|
|
id: number;
|
|
/**
|
|
* Idempotency key for the allocation request. Retries with the same key are no-ops.
|
|
*/
|
|
reservationKey: string;
|
|
/**
|
|
* Operation identity this allocation belongs to.
|
|
*/
|
|
operationId: string;
|
|
/**
|
|
* The mission these assets are allocated to, when known.
|
|
*/
|
|
mission?: (number | null) | Mission;
|
|
/**
|
|
* reserved is the only non-terminal state; every terminal state is settled exactly once.
|
|
*/
|
|
status: 'reserved' | 'settled' | 'cancelled' | 'expired' | 'no-show';
|
|
/**
|
|
* Reserved unit members.
|
|
*/
|
|
personnel?:
|
|
| {
|
|
user: number | User;
|
|
/**
|
|
* Optional role/slot label.
|
|
*/
|
|
slot?: string | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
/**
|
|
* Reserved deployed vehicles.
|
|
*/
|
|
vehicles?:
|
|
| {
|
|
vehicle: number | GameVehicle;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
/**
|
|
* Reserved resources (drawn from the origin structure).
|
|
*/
|
|
cargo?:
|
|
| {
|
|
resource: number | Resource;
|
|
amount: number;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
/**
|
|
* Treasury budget earmarked for the operation.
|
|
*/
|
|
budget?: {
|
|
account?: (number | null) | BankAccount;
|
|
amount?: number | null;
|
|
};
|
|
/**
|
|
* Structure the reserved cargo/vehicles are drawn from.
|
|
*/
|
|
origin?: (number | null) | GameStructure;
|
|
/**
|
|
* Structure the cargo is bound for (storage rules checked at reserve time).
|
|
*/
|
|
destination?: (number | null) | GameStructure;
|
|
/**
|
|
* When the reservation lapses; the expiry sweeper settles it as expired.
|
|
*/
|
|
expiresAt?: string | null;
|
|
createdBy?: (number | null) | User;
|
|
settledAt?: string | null;
|
|
/**
|
|
* Provenance: the operation effect that drove this settlement, when effect-driven.
|
|
*/
|
|
settledByEffect?: (number | null) | OperationEffect;
|
|
/**
|
|
* Deterministic settlement record: outcome, reason, consumed and returned amounts, actor, effect, timestamp.
|
|
*/
|
|
settlement?:
|
|
| {
|
|
[k: string]: unknown;
|
|
}
|
|
| unknown[]
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "operation-readiness".
|
|
*/
|
|
export interface OperationReadiness {
|
|
id: number;
|
|
/**
|
|
* Who the aggregate is for: a specific user, or a whole role.
|
|
*/
|
|
subjectType: 'user' | 'role';
|
|
/**
|
|
* Id of the subject (user id for user-scoped; null for role-scoped).
|
|
*/
|
|
subjectId?: number | null;
|
|
/**
|
|
* Human-readable label for the subject (role name or username). Display only.
|
|
*/
|
|
subjectLabel?: string | null;
|
|
/**
|
|
* Start of the explicit time window this aggregate covers.
|
|
*/
|
|
windowStart: string;
|
|
/**
|
|
* End of the time window.
|
|
*/
|
|
windowEnd?: string | null;
|
|
/**
|
|
* Optional human label for the window (e.g. an ISO week).
|
|
*/
|
|
windowLabel?: string | null;
|
|
/**
|
|
* Optional operation identity the window's data is attributed to.
|
|
*/
|
|
operationId?: string | null;
|
|
/**
|
|
* Readiness calculation model version.
|
|
*/
|
|
calculationVersion: string;
|
|
/**
|
|
* Advisory-only. Never used to gate, punish, or rank players against one another.
|
|
*/
|
|
nature: 'advisory';
|
|
/**
|
|
* Weighted 0-100 readiness score over present contributing categories.
|
|
*/
|
|
readinessScore?: number | null;
|
|
/**
|
|
* Weighted 0-100 planning-confidence sub-score from pre-op signals.
|
|
*/
|
|
planningConfidenceScore?: number | null;
|
|
/**
|
|
* Structured per-category breakdown ({ category, weight, score, inputCount }). No evaluator data.
|
|
*/
|
|
contributingCategories?:
|
|
| {
|
|
[k: string]: unknown;
|
|
}
|
|
| unknown[]
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null;
|
|
/**
|
|
* Total component inputs consumed by the aggregate.
|
|
*/
|
|
inputCount?: number | null;
|
|
/**
|
|
* Human-readable explanation enumerating contributing categories and weights. Never contains evaluator names, ids, or comments.
|
|
*/
|
|
explanation?: string | null;
|
|
/**
|
|
* When the aggregate was last computed.
|
|
*/
|
|
recomputedAt?: string | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "zone-pressure".
|
|
*/
|
|
export interface ZonePressure {
|
|
id: number;
|
|
/**
|
|
* The zone this pressure applies to.
|
|
*/
|
|
zone: number | MapZone;
|
|
/**
|
|
* The faction whose activity drives this pressure.
|
|
*/
|
|
faction?: (number | null) | Faction;
|
|
operationId: string;
|
|
/**
|
|
* The mission the operation was scoped to (causal AAR link).
|
|
*/
|
|
mission?: (number | null) | Mission;
|
|
/**
|
|
* The settled operation effect that produced this delta (idempotency key).
|
|
*/
|
|
sourceEffect: number | OperationEffect;
|
|
/**
|
|
* Signed pressure delta: hostile gains positive, friendly control negative.
|
|
*/
|
|
delta: number;
|
|
note?: string | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "custom-minefields".
|
|
*/
|
|
export interface CustomMinefield {
|
|
id: number;
|
|
name: string;
|
|
/**
|
|
* Player who authored this minefield.
|
|
*/
|
|
author: number | User;
|
|
rows: number;
|
|
cols: number;
|
|
/**
|
|
* Array of { row, col } mine positions.
|
|
*/
|
|
mines:
|
|
| {
|
|
[k: string]: unknown;
|
|
}
|
|
| unknown[]
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null;
|
|
mineCount: number;
|
|
published?: boolean | null;
|
|
/**
|
|
* On a failed run, reveal mines bordering the swept area. When off, no remaining mines are revealed.
|
|
*/
|
|
exposeEdgeMines?: boolean | null;
|
|
playCount?: number | null;
|
|
/**
|
|
* Engine-managed: fractional XP bank for the author (5% of each player payout).
|
|
*/
|
|
creatorXpBank?: number | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "custom-minefield-scores".
|
|
*/
|
|
export interface CustomMinefieldScore {
|
|
id: number;
|
|
minefield: number | CustomMinefield;
|
|
user: number | User;
|
|
seconds: number;
|
|
flags?: number | null;
|
|
won: boolean;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "custom-radio-tests".
|
|
*/
|
|
export interface CustomRadioTest {
|
|
id: number;
|
|
name: string;
|
|
/**
|
|
* Player who authored this radio test.
|
|
*/
|
|
author: number | User;
|
|
/**
|
|
* Array of message strings used as the typing pool.
|
|
*/
|
|
messages:
|
|
| {
|
|
[k: string]: unknown;
|
|
}
|
|
| unknown[]
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null;
|
|
messageCount: number;
|
|
order?: ('fixed' | 'shuffled') | null;
|
|
published?: boolean | null;
|
|
playCount?: number | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "custom-radio-test-scores".
|
|
*/
|
|
export interface CustomRadioTestScore {
|
|
id: number;
|
|
test: number | CustomRadioTest;
|
|
user: number | User;
|
|
score: number;
|
|
accuracy: number;
|
|
correctMessages: number;
|
|
incorrectMessages: number;
|
|
mode: 'sprint' | 'watch';
|
|
/**
|
|
* Sprint mode only: elapsed time in milliseconds.
|
|
*/
|
|
timeMs?: number | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "forms".
|
|
*/
|
|
export interface Form {
|
|
id: number;
|
|
title: string;
|
|
fields?:
|
|
| (
|
|
| {
|
|
name: string;
|
|
label?: string | null;
|
|
width?: number | null;
|
|
required?: boolean | null;
|
|
defaultValue?: boolean | null;
|
|
id?: string | null;
|
|
blockName?: string | null;
|
|
blockType: 'checkbox';
|
|
}
|
|
| {
|
|
name: string;
|
|
label?: string | null;
|
|
width?: number | null;
|
|
required?: boolean | null;
|
|
id?: string | null;
|
|
blockName?: string | null;
|
|
blockType: 'country';
|
|
}
|
|
| {
|
|
name: string;
|
|
label?: string | null;
|
|
width?: number | null;
|
|
required?: boolean | null;
|
|
id?: string | null;
|
|
blockName?: string | null;
|
|
blockType: 'email';
|
|
}
|
|
| {
|
|
message?: {
|
|
root: {
|
|
type: string;
|
|
children: {
|
|
type: any;
|
|
version: number;
|
|
[k: string]: unknown;
|
|
}[];
|
|
direction: ('ltr' | 'rtl') | null;
|
|
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
indent: number;
|
|
version: number;
|
|
};
|
|
[k: string]: unknown;
|
|
} | null;
|
|
id?: string | null;
|
|
blockName?: string | null;
|
|
blockType: 'message';
|
|
}
|
|
| {
|
|
name: string;
|
|
label?: string | null;
|
|
width?: number | null;
|
|
defaultValue?: number | null;
|
|
required?: boolean | null;
|
|
id?: string | null;
|
|
blockName?: string | null;
|
|
blockType: 'number';
|
|
}
|
|
| {
|
|
name: string;
|
|
label?: string | null;
|
|
width?: number | null;
|
|
defaultValue?: string | null;
|
|
placeholder?: string | null;
|
|
options?:
|
|
| {
|
|
label: string;
|
|
value: string;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
required?: boolean | null;
|
|
id?: string | null;
|
|
blockName?: string | null;
|
|
blockType: 'select';
|
|
}
|
|
| {
|
|
name: string;
|
|
label?: string | null;
|
|
width?: number | null;
|
|
required?: boolean | null;
|
|
id?: string | null;
|
|
blockName?: string | null;
|
|
blockType: 'state';
|
|
}
|
|
| {
|
|
name: string;
|
|
label?: string | null;
|
|
width?: number | null;
|
|
defaultValue?: string | null;
|
|
required?: boolean | null;
|
|
id?: string | null;
|
|
blockName?: string | null;
|
|
blockType: 'text';
|
|
}
|
|
| {
|
|
name: string;
|
|
label?: string | null;
|
|
width?: number | null;
|
|
defaultValue?: string | null;
|
|
required?: boolean | null;
|
|
id?: string | null;
|
|
blockName?: string | null;
|
|
blockType: 'textarea';
|
|
}
|
|
| {
|
|
name: string;
|
|
label?: string | null;
|
|
width?: number | null;
|
|
defaultValue?: string | null;
|
|
options?:
|
|
| {
|
|
label: string;
|
|
value: string;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
required?: boolean | null;
|
|
id?: string | null;
|
|
blockName?: string | null;
|
|
blockType: 'radio';
|
|
}
|
|
| {
|
|
name: string;
|
|
label?: string | null;
|
|
width?: number | null;
|
|
required?: boolean | null;
|
|
defaultValue?: string | null;
|
|
id?: string | null;
|
|
blockName?: string | null;
|
|
blockType: 'date';
|
|
}
|
|
)[]
|
|
| null;
|
|
submitButtonLabel?: string | null;
|
|
confirmationType?: ('message' | 'redirect') | null;
|
|
confirmationMessage?: {
|
|
root: {
|
|
type: string;
|
|
children: {
|
|
type: any;
|
|
version: number;
|
|
[k: string]: unknown;
|
|
}[];
|
|
direction: ('ltr' | 'rtl') | null;
|
|
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
indent: number;
|
|
version: number;
|
|
};
|
|
[k: string]: unknown;
|
|
} | null;
|
|
redirect?: {
|
|
url: string;
|
|
};
|
|
emails?:
|
|
| {
|
|
emailTo?: string | null;
|
|
cc?: string | null;
|
|
bcc?: string | null;
|
|
replyTo?: string | null;
|
|
emailFrom?: string | null;
|
|
subject: string;
|
|
message?: {
|
|
root: {
|
|
type: string;
|
|
children: {
|
|
type: any;
|
|
version: number;
|
|
[k: string]: unknown;
|
|
}[];
|
|
direction: ('ltr' | 'rtl') | null;
|
|
format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | '';
|
|
indent: number;
|
|
version: number;
|
|
};
|
|
[k: string]: unknown;
|
|
} | null;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
/**
|
|
* Optional. The survey cannot be taken before this moment.
|
|
*/
|
|
activeFrom?: string | null;
|
|
/**
|
|
* Optional. The survey can no longer be taken after this moment.
|
|
*/
|
|
activeUntil?: string | null;
|
|
targeting: {
|
|
/**
|
|
* Who is allowed to see and take this survey?
|
|
*/
|
|
audience: 'all' | 'users' | 'roles' | 'qualifications';
|
|
users?: (number | User)[] | null;
|
|
roles?: (number | Role)[] | null;
|
|
qualifications?: (number | Qualification)[] | null;
|
|
};
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "form-submissions".
|
|
*/
|
|
export interface FormSubmission {
|
|
id: number;
|
|
form: number | Form;
|
|
submissionData?:
|
|
| {
|
|
field: string;
|
|
value: string;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
user?: (number | null) | User;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "plugin-ai-instructions".
|
|
*/
|
|
export interface PluginAiInstruction {
|
|
id: number;
|
|
/**
|
|
* Please don't change this unless you're sure of what you're doing
|
|
*/
|
|
'schema-path'?: string | null;
|
|
/**
|
|
* Please don't change this unless you're sure of what you're doing
|
|
*/
|
|
'field-type'?: ('text' | 'textarea' | 'upload' | 'richText') | null;
|
|
'relation-to'?: string | null;
|
|
'model-id'?: 'unsloth-text' | null;
|
|
/**
|
|
* Please reload your collection after applying the changes
|
|
*/
|
|
disabled?: boolean | null;
|
|
/**
|
|
* Click 'Compose' to run this custom prompt and generate content
|
|
*/
|
|
prompt?: string | null;
|
|
images?:
|
|
| {
|
|
/**
|
|
* Please make sure the image is publicly accessible.
|
|
*/
|
|
image?: (number | null) | Media;
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
system?: string | null;
|
|
layout?: string | null;
|
|
'unsloth-text-settings'?: {
|
|
model?: string | null;
|
|
};
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* API keys control which collections, resources, tools, and prompts MCP clients can access
|
|
*
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "payload-mcp-api-keys".
|
|
*/
|
|
export interface PayloadMcpApiKey {
|
|
id: number;
|
|
/**
|
|
* The user that the API key is associated with.
|
|
*/
|
|
user: number | User;
|
|
/**
|
|
* A useful label for the API key.
|
|
*/
|
|
label?: string | null;
|
|
/**
|
|
* The purpose of the API key.
|
|
*/
|
|
description?: string | null;
|
|
media?: {
|
|
/**
|
|
* Allow clients to find media.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create media.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update media.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete media.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
announcements?: {
|
|
/**
|
|
* Allow clients to find announcements.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create announcements.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update announcements.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete announcements.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
gameHardResources?: {
|
|
/**
|
|
* Allow clients to find game-hard-resources.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create game-hard-resources.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update game-hard-resources.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete game-hard-resources.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
gameStructures?: {
|
|
/**
|
|
* Allow clients to find game-structures.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create game-structures.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update game-structures.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete game-structures.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
gameVehicles?: {
|
|
/**
|
|
* Allow clients to find game-vehicles.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create game-vehicles.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update game-vehicles.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete game-vehicles.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
gameNpcs?: {
|
|
/**
|
|
* Allow clients to find game-npcs.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create game-npcs.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update game-npcs.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete game-npcs.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
npcStaffing?: {
|
|
/**
|
|
* Allow clients to find npc-staffing.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create npc-staffing.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update npc-staffing.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete npc-staffing.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
laborClassifications?: {
|
|
/**
|
|
* Allow clients to find labor-classifications.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create labor-classifications.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update labor-classifications.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete labor-classifications.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
gameEventLogs?: {
|
|
/**
|
|
* Allow clients to find game-event-logs.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create game-event-logs.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update game-event-logs.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete game-event-logs.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
users?: {
|
|
/**
|
|
* Allow clients to find users.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create users.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update users.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete users.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
roles?: {
|
|
/**
|
|
* Allow clients to find roles.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create roles.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update roles.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete roles.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
ranks?: {
|
|
/**
|
|
* Allow clients to find ranks.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create ranks.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update ranks.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete ranks.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
profiles?: {
|
|
/**
|
|
* Allow clients to find profiles.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create profiles.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update profiles.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete profiles.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
awards?: {
|
|
/**
|
|
* Allow clients to find awards.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create awards.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update awards.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete awards.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
qualifications?: {
|
|
/**
|
|
* Allow clients to find qualifications.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create qualifications.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update qualifications.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete qualifications.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
assignments?: {
|
|
/**
|
|
* Allow clients to find assignments.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create assignments.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update assignments.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete assignments.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
assignmentTransfers?: {
|
|
/**
|
|
* Allow clients to find assignment-transfers.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create assignment-transfers.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update assignment-transfers.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete assignment-transfers.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
experience?: {
|
|
/**
|
|
* Allow clients to find experience.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create experience.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update experience.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete experience.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
userNotifications?: {
|
|
/**
|
|
* Allow clients to find user-notifications.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create user-notifications.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update user-notifications.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete user-notifications.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
evaluations?: {
|
|
/**
|
|
* Allow clients to find evaluations.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create evaluations.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update evaluations.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete evaluations.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
ribbonSubmissions?: {
|
|
/**
|
|
* Allow clients to find ribbon-submissions.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create ribbon-submissions.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update ribbon-submissions.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete ribbon-submissions.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
missions?: {
|
|
/**
|
|
* Allow clients to find missions.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create missions.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update missions.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete missions.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
missionAttendances?: {
|
|
/**
|
|
* Allow clients to find mission-attendances.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create mission-attendances.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update mission-attendances.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete mission-attendances.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
campaigns?: {
|
|
/**
|
|
* Allow clients to find campaigns.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create campaigns.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update campaigns.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete campaigns.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
factions?: {
|
|
/**
|
|
* Allow clients to find factions.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create factions.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update factions.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete factions.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
technologies?: {
|
|
/**
|
|
* Allow clients to find technologies.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create technologies.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update technologies.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete technologies.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
assets?: {
|
|
/**
|
|
* Allow clients to find assets.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create assets.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update assets.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete assets.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
resources?: {
|
|
/**
|
|
* Allow clients to find resources.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create resources.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update resources.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete resources.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
vehicles?: {
|
|
/**
|
|
* Allow clients to find vehicles.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create vehicles.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update vehicles.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete vehicles.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
structures?: {
|
|
/**
|
|
* Allow clients to find structures.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create structures.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update structures.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete structures.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
shipments?: {
|
|
/**
|
|
* Allow clients to find shipments.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create shipments.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update shipments.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete shipments.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
bankAccounts?: {
|
|
/**
|
|
* Allow clients to find bank-accounts.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create bank-accounts.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update bank-accounts.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete bank-accounts.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
bankTransactions?: {
|
|
/**
|
|
* Allow clients to find bank-transactions.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create bank-transactions.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update bank-transactions.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete bank-transactions.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
ledgerEntries?: {
|
|
/**
|
|
* Allow clients to find ledger-entries.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create ledger-entries.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update ledger-entries.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete ledger-entries.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
lockerStorages?: {
|
|
/**
|
|
* Allow clients to find locker-storages.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create locker-storages.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update locker-storages.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete locker-storages.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
loadouts?: {
|
|
/**
|
|
* Allow clients to find loadouts.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create loadouts.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update loadouts.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete loadouts.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
marketListings?: {
|
|
/**
|
|
* Allow clients to find market-listings.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create market-listings.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update market-listings.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete market-listings.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
marketNegotiations?: {
|
|
/**
|
|
* Allow clients to find market-negotiations.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create market-negotiations.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update market-negotiations.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete market-negotiations.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
marketState?: {
|
|
/**
|
|
* Allow clients to find market-state.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create market-state.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update market-state.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete market-state.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
voiceScripts?: {
|
|
/**
|
|
* Allow clients to find voice-scripts.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create voice-scripts.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update voice-scripts.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete voice-scripts.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
voiceSubmissions?: {
|
|
/**
|
|
* Allow clients to find voice-submissions.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create voice-submissions.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update voice-submissions.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete voice-submissions.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
tickets?: {
|
|
/**
|
|
* Allow clients to find tickets.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create tickets.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update tickets.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete tickets.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
ticketVotes?: {
|
|
/**
|
|
* Allow clients to find ticket-votes.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create ticket-votes.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update ticket-votes.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete ticket-votes.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
wikiPages?: {
|
|
/**
|
|
* Allow clients to find wiki-pages.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create wiki-pages.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update wiki-pages.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete wiki-pages.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
wikiRevisions?: {
|
|
/**
|
|
* Allow clients to find wiki-revisions.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create wiki-revisions.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update wiki-revisions.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete wiki-revisions.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
wikiTemplates?: {
|
|
/**
|
|
* Allow clients to find wiki-templates.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create wiki-templates.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update wiki-templates.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete wiki-templates.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
projects?: {
|
|
/**
|
|
* Allow clients to find projects.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create projects.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update projects.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete projects.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
sprints?: {
|
|
/**
|
|
* Allow clients to find sprints.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create sprints.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update sprints.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete sprints.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
releases?: {
|
|
/**
|
|
* Allow clients to find releases.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create releases.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update releases.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete releases.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
labels?: {
|
|
/**
|
|
* Allow clients to find labels.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create labels.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update labels.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete labels.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
maps?: {
|
|
/**
|
|
* Allow clients to find maps.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create maps.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update maps.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete maps.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
mapRoads?: {
|
|
/**
|
|
* Allow clients to find map-roads.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create map-roads.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update map-roads.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete map-roads.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
mapZones?: {
|
|
/**
|
|
* Allow clients to find map-zones.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create map-zones.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update map-zones.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete map-zones.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
resourceNodes?: {
|
|
/**
|
|
* Allow clients to find resource-nodes.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create resource-nodes.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update resource-nodes.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete resource-nodes.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
narrativeEvents?: {
|
|
/**
|
|
* Allow clients to find narrative-events.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create narrative-events.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update narrative-events.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete narrative-events.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
storyBeats?: {
|
|
/**
|
|
* Allow clients to find story-beats.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create story-beats.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update story-beats.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete story-beats.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
storyBeatStates?: {
|
|
/**
|
|
* Allow clients to find story-beat-states.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create story-beat-states.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update story-beat-states.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete story-beat-states.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
storyVoiceovers?: {
|
|
/**
|
|
* Allow clients to find story-voiceovers.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create story-voiceovers.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update story-voiceovers.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete story-voiceovers.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
missionFiles?: {
|
|
/**
|
|
* Allow clients to find mission-files.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create mission-files.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update mission-files.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete mission-files.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
modLists?: {
|
|
/**
|
|
* Allow clients to find mod-lists.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create mod-lists.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update mod-lists.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete mod-lists.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
gameServers?: {
|
|
/**
|
|
* Allow clients to find game-servers.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create game-servers.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update game-servers.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete game-servers.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
armaSyncEvents?: {
|
|
/**
|
|
* Allow clients to find arma-sync-events.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create arma-sync-events.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update arma-sync-events.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete arma-sync-events.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
armaCommands?: {
|
|
/**
|
|
* Allow clients to find arma-commands.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create arma-commands.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update arma-commands.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete arma-commands.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
respawnTickets?: {
|
|
/**
|
|
* Allow clients to find respawn-tickets.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create respawn-tickets.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update respawn-tickets.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete respawn-tickets.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
supplyBoxes?: {
|
|
/**
|
|
* Allow clients to find supply-boxes.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create supply-boxes.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update supply-boxes.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete supply-boxes.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
operationEvents?: {
|
|
/**
|
|
* Allow clients to find operation-events.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create operation-events.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update operation-events.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete operation-events.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
operationEffects?: {
|
|
/**
|
|
* Allow clients to find operation-effects.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create operation-effects.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update operation-effects.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete operation-effects.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
operationReservations?: {
|
|
/**
|
|
* Allow clients to find operation-reservations.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create operation-reservations.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update operation-reservations.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete operation-reservations.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
operationReadiness?: {
|
|
/**
|
|
* Allow clients to find operation-readiness.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create operation-readiness.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update operation-readiness.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete operation-readiness.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
zonePressure?: {
|
|
/**
|
|
* Allow clients to find zone-pressure.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create zone-pressure.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update zone-pressure.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete zone-pressure.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
customMinefields?: {
|
|
/**
|
|
* Allow clients to find custom-minefields.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create custom-minefields.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update custom-minefields.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete custom-minefields.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
customMinefieldScores?: {
|
|
/**
|
|
* Allow clients to find custom-minefield-scores.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create custom-minefield-scores.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update custom-minefield-scores.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete custom-minefield-scores.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
customRadioTests?: {
|
|
/**
|
|
* Allow clients to find custom-radio-tests.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create custom-radio-tests.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update custom-radio-tests.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete custom-radio-tests.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
customRadioTestScores?: {
|
|
/**
|
|
* Allow clients to find custom-radio-test-scores.
|
|
*/
|
|
find?: boolean | null;
|
|
/**
|
|
* Allow clients to create custom-radio-test-scores.
|
|
*/
|
|
create?: boolean | null;
|
|
/**
|
|
* Allow clients to update custom-radio-test-scores.
|
|
*/
|
|
update?: boolean | null;
|
|
/**
|
|
* Allow clients to delete custom-radio-test-scores.
|
|
*/
|
|
delete?: boolean | null;
|
|
};
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
enableAPIKey?: boolean | null;
|
|
apiKey?: string | null;
|
|
apiKeyIndex?: string | null;
|
|
collection: 'payload-mcp-api-keys';
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "payload-kv".
|
|
*/
|
|
export interface PayloadKv {
|
|
id: number;
|
|
key: string;
|
|
data:
|
|
| {
|
|
[k: string]: unknown;
|
|
}
|
|
| unknown[]
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "payload-locked-documents".
|
|
*/
|
|
export interface PayloadLockedDocument {
|
|
id: number;
|
|
document?:
|
|
| ({
|
|
relationTo: 'media';
|
|
value: number | Media;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'announcements';
|
|
value: number | Announcement;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'game-hard-resources';
|
|
value: number | GameHardResource;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'game-structures';
|
|
value: number | GameStructure;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'game-vehicles';
|
|
value: number | GameVehicle;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'game-npcs';
|
|
value: number | GameNpc;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'npc-staffing';
|
|
value: number | NpcStaffing;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'labor-classifications';
|
|
value: number | LaborClassification;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'game-event-logs';
|
|
value: number | GameEventLog;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'users';
|
|
value: number | User;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'roles';
|
|
value: number | Role;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'ranks';
|
|
value: number | Rank;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'profiles';
|
|
value: number | Profile;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'awards';
|
|
value: number | Award;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'qualifications';
|
|
value: number | Qualification;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'assignments';
|
|
value: number | Assignment;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'assignment-transfers';
|
|
value: number | AssignmentTransfer;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'experience';
|
|
value: number | Experience;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'user-notifications';
|
|
value: number | UserNotification;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'evaluations';
|
|
value: number | Evaluation;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'ribbon-submissions';
|
|
value: number | RibbonSubmission;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'missions';
|
|
value: number | Mission;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'mission-attendances';
|
|
value: number | MissionAttendance;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'campaigns';
|
|
value: number | Campaign;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'factions';
|
|
value: number | Faction;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'technologies';
|
|
value: number | Technology;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'assets';
|
|
value: number | Asset;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'resources';
|
|
value: number | Resource;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'vehicles';
|
|
value: number | Vehicle;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'structures';
|
|
value: number | Structure;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'shipments';
|
|
value: number | Shipment;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'bank-accounts';
|
|
value: number | BankAccount;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'bank-transactions';
|
|
value: number | BankTransaction;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'ledger-entries';
|
|
value: number | LedgerEntry;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'locker-storages';
|
|
value: number | LockerStorage;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'loadouts';
|
|
value: number | Loadout;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'market-listings';
|
|
value: number | MarketListing;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'market-negotiations';
|
|
value: number | MarketNegotiation;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'market-state';
|
|
value: number | MarketState;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'voice-scripts';
|
|
value: number | VoiceScript;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'voice-submissions';
|
|
value: number | VoiceSubmission;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'tickets';
|
|
value: number | Ticket;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'ticket-votes';
|
|
value: number | TicketVote;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'wiki-pages';
|
|
value: number | WikiPage;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'wiki-revisions';
|
|
value: number | WikiRevision;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'wiki-templates';
|
|
value: number | WikiTemplate;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'projects';
|
|
value: number | Project;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'sprints';
|
|
value: number | Sprint;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'releases';
|
|
value: number | Release;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'labels';
|
|
value: number | Label;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'maps';
|
|
value: number | Map;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'map-roads';
|
|
value: number | MapRoad;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'map-zones';
|
|
value: number | MapZone;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'resource-nodes';
|
|
value: number | ResourceNode;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'narrative-events';
|
|
value: number | NarrativeEvent;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'story-beats';
|
|
value: number | StoryBeat;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'story-beat-states';
|
|
value: number | StoryBeatState;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'story-voiceovers';
|
|
value: number | StoryVoiceover;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'mission-files';
|
|
value: number | MissionFile;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'mod-lists';
|
|
value: number | ModList;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'game-servers';
|
|
value: number | GameServer;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'arma-sync-events';
|
|
value: number | ArmaSyncEvent;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'arma-commands';
|
|
value: number | ArmaCommand;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'respawn-tickets';
|
|
value: number | RespawnTicket;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'supply-boxes';
|
|
value: number | SupplyBox;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'operation-events';
|
|
value: number | OperationEvent;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'operation-effects';
|
|
value: number | OperationEffect;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'operation-reservations';
|
|
value: number | OperationReservation;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'operation-readiness';
|
|
value: number | OperationReadiness;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'zone-pressure';
|
|
value: number | ZonePressure;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'custom-minefields';
|
|
value: number | CustomMinefield;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'custom-minefield-scores';
|
|
value: number | CustomMinefieldScore;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'custom-radio-tests';
|
|
value: number | CustomRadioTest;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'custom-radio-test-scores';
|
|
value: number | CustomRadioTestScore;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'forms';
|
|
value: number | Form;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'form-submissions';
|
|
value: number | FormSubmission;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'plugin-ai-instructions';
|
|
value: number | PluginAiInstruction;
|
|
} | null)
|
|
| ({
|
|
relationTo: 'payload-mcp-api-keys';
|
|
value: number | PayloadMcpApiKey;
|
|
} | null);
|
|
globalSlug?: string | null;
|
|
user:
|
|
| {
|
|
relationTo: 'users';
|
|
value: number | User;
|
|
}
|
|
| {
|
|
relationTo: 'payload-mcp-api-keys';
|
|
value: number | PayloadMcpApiKey;
|
|
};
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "payload-preferences".
|
|
*/
|
|
export interface PayloadPreference {
|
|
id: number;
|
|
user:
|
|
| {
|
|
relationTo: 'users';
|
|
value: number | User;
|
|
}
|
|
| {
|
|
relationTo: 'payload-mcp-api-keys';
|
|
value: number | PayloadMcpApiKey;
|
|
};
|
|
key?: string | null;
|
|
value?:
|
|
| {
|
|
[k: string]: unknown;
|
|
}
|
|
| unknown[]
|
|
| string
|
|
| number
|
|
| boolean
|
|
| null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "payload-migrations".
|
|
*/
|
|
export interface PayloadMigration {
|
|
id: number;
|
|
name?: string | null;
|
|
batch?: number | null;
|
|
updatedAt: string;
|
|
createdAt: string;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "media_select".
|
|
*/
|
|
export interface MediaSelect<T extends boolean = true> {
|
|
alt?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
url?: T;
|
|
thumbnailURL?: T;
|
|
filename?: T;
|
|
mimeType?: T;
|
|
filesize?: T;
|
|
width?: T;
|
|
height?: T;
|
|
focalX?: T;
|
|
focalY?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "announcements_select".
|
|
*/
|
|
export interface AnnouncementsSelect<T extends boolean = true> {
|
|
title?: T;
|
|
subtitle?: T;
|
|
description?: T;
|
|
variant?: T;
|
|
displayType?: T;
|
|
enabled?: T;
|
|
dismissible?: T;
|
|
activeFrom?: T;
|
|
activeUntil?: T;
|
|
buttons?:
|
|
| T
|
|
| {
|
|
label?: T;
|
|
href?: T;
|
|
style?: T;
|
|
id?: T;
|
|
};
|
|
targeting?:
|
|
| T
|
|
| {
|
|
audience?: T;
|
|
users?: T;
|
|
roles?: T;
|
|
};
|
|
paths?:
|
|
| T
|
|
| {
|
|
matchType?: T;
|
|
paths?: T;
|
|
};
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "game-hard-resources_select".
|
|
*/
|
|
export interface GameHardResourcesSelect<T extends boolean = true> {
|
|
name?: T;
|
|
amount?: T;
|
|
description?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "game-structures_select".
|
|
*/
|
|
export interface GameStructuresSelect<T extends boolean = true> {
|
|
name?: T;
|
|
type?: T;
|
|
faction?: T;
|
|
map?: T;
|
|
constructionStatus?: T;
|
|
constructionStartedAt?: T;
|
|
constructionCompletesAt?: T;
|
|
maintenanceCost?: T;
|
|
laborRequirements?:
|
|
| T
|
|
| {
|
|
classification?: T;
|
|
requiredHeadcount?: T;
|
|
maxHeadcount?: T;
|
|
enforcedSalary?: T;
|
|
id?: T;
|
|
};
|
|
staffPositions?:
|
|
| T
|
|
| {
|
|
positionType?: T;
|
|
max?: T;
|
|
enforcedSalary?: T;
|
|
id?: T;
|
|
};
|
|
productionInputs?:
|
|
| T
|
|
| {
|
|
resource?: T;
|
|
amountPerHour?: T;
|
|
id?: T;
|
|
};
|
|
productionOutputs?:
|
|
| T
|
|
| {
|
|
resource?: T;
|
|
amountPerHour?: T;
|
|
id?: T;
|
|
};
|
|
installedModules?:
|
|
| T
|
|
| {
|
|
name?: T;
|
|
installedAt?: T;
|
|
id?: T;
|
|
};
|
|
productionPaused?: T;
|
|
lastProductionAt?: T;
|
|
productionStallReason?: T;
|
|
coordinates?: T;
|
|
labelVisible?: T;
|
|
labelPriority?: T;
|
|
parentStructure?: T;
|
|
storedResources?:
|
|
| T
|
|
| {
|
|
resource?: T;
|
|
amount?: T;
|
|
gridX?: T;
|
|
gridY?: T;
|
|
rotated?: T;
|
|
id?: T;
|
|
};
|
|
voidStorage?:
|
|
| T
|
|
| {
|
|
resource?: T;
|
|
amount?: T;
|
|
gridX?: T;
|
|
gridY?: T;
|
|
rotated?: T;
|
|
id?: T;
|
|
};
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "game-vehicles_select".
|
|
*/
|
|
export interface GameVehiclesSelect<T extends boolean = true> {
|
|
name?: T;
|
|
type?: T;
|
|
deployedAt?: T;
|
|
faction?: T;
|
|
status?: T;
|
|
currentFuel?: T;
|
|
currentHealth?: T;
|
|
storedResources?:
|
|
| T
|
|
| {
|
|
resource?: T;
|
|
amount?: T;
|
|
gridX?: T;
|
|
gridY?: T;
|
|
rotated?: T;
|
|
id?: T;
|
|
};
|
|
voidStorage?:
|
|
| T
|
|
| {
|
|
resource?: T;
|
|
amount?: T;
|
|
gridX?: T;
|
|
gridY?: T;
|
|
rotated?: T;
|
|
id?: T;
|
|
};
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "game-npcs_select".
|
|
*/
|
|
export interface GameNpcsSelect<T extends boolean = true> {
|
|
name?: T;
|
|
occupation?: T;
|
|
location?: T;
|
|
faction?: T;
|
|
bio?: T;
|
|
isGenerated?: T;
|
|
isInGame?: T;
|
|
vendor?:
|
|
| T
|
|
| {
|
|
enabled?: T;
|
|
priceModifier?: T;
|
|
sells?: T;
|
|
};
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "npc-staffing_select".
|
|
*/
|
|
export interface NpcStaffingSelect<T extends boolean = true> {
|
|
npc?: T;
|
|
structure?: T;
|
|
positionType?: T;
|
|
positionTitle?: T;
|
|
headcount?: T;
|
|
laborClassification?: T;
|
|
salary?: T;
|
|
status?: T;
|
|
hiredAt?: T;
|
|
terminatedAt?: T;
|
|
notes?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "labor-classifications_select".
|
|
*/
|
|
export interface LaborClassificationsSelect<T extends boolean = true> {
|
|
name?: T;
|
|
key?: T;
|
|
defaultUnitSalary?: T;
|
|
description?: T;
|
|
buildEfficiency?: T;
|
|
availableHeadcount?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "game-event-logs_select".
|
|
*/
|
|
export interface GameEventLogsSelect<T extends boolean = true> {
|
|
system?: T;
|
|
timestamp?: T;
|
|
type?: T;
|
|
message?: T;
|
|
actor?: T;
|
|
structure?: T;
|
|
targetCollection?: T;
|
|
targetId?: T;
|
|
data?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "users_select".
|
|
*/
|
|
export interface UsersSelect<T extends boolean = true> {
|
|
discordUsername?: T;
|
|
discordId?: T;
|
|
displayName?: T;
|
|
payloadDisplayName?: T;
|
|
steamId?: T;
|
|
roles?: T;
|
|
roleDocs?: T;
|
|
preferences?:
|
|
| T
|
|
| {
|
|
notifications?:
|
|
| T
|
|
| {
|
|
mutedAll?: T;
|
|
mutedTypes?: T;
|
|
};
|
|
display?:
|
|
| T
|
|
| {
|
|
showCallsign?: T;
|
|
leadOrActual?: T;
|
|
showVersionOverlay?: T;
|
|
xpDisplayMini?: T;
|
|
showBackgroundTexture?: T;
|
|
};
|
|
discord?:
|
|
| T
|
|
| {
|
|
enabled?: T;
|
|
mutedTypes?: T;
|
|
};
|
|
dashboard?:
|
|
| T
|
|
| {
|
|
layout?: T;
|
|
};
|
|
};
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
email?: T;
|
|
username?: T;
|
|
resetPasswordToken?: T;
|
|
resetPasswordExpiration?: T;
|
|
salt?: T;
|
|
hash?: T;
|
|
loginAttempts?: T;
|
|
lockUntil?: T;
|
|
sessions?:
|
|
| T
|
|
| {
|
|
id?: T;
|
|
createdAt?: T;
|
|
expiresAt?: T;
|
|
};
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "roles_select".
|
|
*/
|
|
export interface RolesSelect<T extends boolean = true> {
|
|
name?: T;
|
|
slug?: T;
|
|
description?: T;
|
|
permissions?: T;
|
|
parentRoles?: T;
|
|
isSystem?: T;
|
|
isSuperuser?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "ranks_select".
|
|
*/
|
|
export interface RanksSelect<T extends boolean = true> {
|
|
_order?: T;
|
|
name?: T;
|
|
abbreviation?: T;
|
|
description?: T;
|
|
insignia?: T;
|
|
promotionCeiling?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "profiles_select".
|
|
*/
|
|
export interface ProfilesSelect<T extends boolean = true> {
|
|
user?: T;
|
|
rank?: T;
|
|
profileTitle?: T;
|
|
dossier?:
|
|
| T
|
|
| {
|
|
enlistmentDate?: T;
|
|
personalExcerpt?: T;
|
|
intelExcerpt?: T;
|
|
};
|
|
progression?:
|
|
| T
|
|
| {
|
|
xp?: T;
|
|
awards?:
|
|
| T
|
|
| {
|
|
award?: T;
|
|
awardedBy?: T;
|
|
awardedAt?: T;
|
|
awardReason?: T;
|
|
upgradedFrom?: T;
|
|
upgradedAt?: T;
|
|
id?: T;
|
|
};
|
|
qualifications?: T;
|
|
scoreboard?:
|
|
| T
|
|
| {
|
|
infantryKills?: T;
|
|
vehicleKills?: T;
|
|
armorKills?: T;
|
|
airKills?: T;
|
|
deaths?: T;
|
|
};
|
|
minigames?:
|
|
| T
|
|
| {
|
|
flappyBird?:
|
|
| T
|
|
| {
|
|
gamesPlayed?: T;
|
|
totalPasses?: T;
|
|
bestScore?: T;
|
|
xpEarned?: T;
|
|
};
|
|
eodMinesweeper?:
|
|
| T
|
|
| {
|
|
gamesPlayed?: T;
|
|
wins?: T;
|
|
losses?: T;
|
|
bestScore?: T;
|
|
xpEarned?: T;
|
|
bestTrainingTime?: T;
|
|
bestPerimeterTime?: T;
|
|
bestSupplyRoadTime?: T;
|
|
bestTrainingFlags?: T;
|
|
bestPerimeterFlags?: T;
|
|
bestSupplyRoadFlags?: T;
|
|
};
|
|
radioTraffic?:
|
|
| T
|
|
| {
|
|
gamesPlayed?: T;
|
|
totalMessages?: T;
|
|
incorrectMessages?: T;
|
|
bestScore?: T;
|
|
bestAccuracy?: T;
|
|
bestSprintTimeMs?: T;
|
|
sprintGamesPlayed?: T;
|
|
sprintTotalMessages?: T;
|
|
sprintIncorrectMessages?: T;
|
|
sprintBestScore?: T;
|
|
sprintBestAccuracy?: T;
|
|
watchGamesPlayed?: T;
|
|
watchTotalMessages?: T;
|
|
watchIncorrectMessages?: T;
|
|
watchBestScore?: T;
|
|
watchBestAccuracy?: T;
|
|
xpEarned?: T;
|
|
};
|
|
aimTrainer?:
|
|
| T
|
|
| {
|
|
gamesPlayed?: T;
|
|
bestScore?: T;
|
|
recruitBestScore?: T;
|
|
veteranBestScore?: T;
|
|
eliteBestScore?: T;
|
|
recruitBestAccuracy?: T;
|
|
veteranBestAccuracy?: T;
|
|
eliteBestAccuracy?: T;
|
|
xpEarned?: T;
|
|
};
|
|
opordRecall?:
|
|
| T
|
|
| {
|
|
gamesPlayed?: T;
|
|
bestScore?: T;
|
|
bestAccuracy?: T;
|
|
recruitBestScore?: T;
|
|
veteranBestScore?: T;
|
|
eliteBestScore?: T;
|
|
recruitBestTimeMs?: T;
|
|
veteranBestTimeMs?: T;
|
|
eliteBestTimeMs?: T;
|
|
xpEarned?: T;
|
|
};
|
|
poker?:
|
|
| T
|
|
| {
|
|
gamesPlayed?: T;
|
|
wins?: T;
|
|
secondPlaces?: T;
|
|
thirdPlaces?: T;
|
|
fourthPlaces?: T;
|
|
handsWon?: T;
|
|
bestScore?: T;
|
|
xpEarned?: T;
|
|
};
|
|
blackjack?:
|
|
| T
|
|
| {
|
|
gamesPlayed?: T;
|
|
roundsWon?: T;
|
|
blackjacksHit?: T;
|
|
bestScore?: T;
|
|
xpEarned?: T;
|
|
};
|
|
};
|
|
chipBank?: T;
|
|
chipBankRefilledAt?: T;
|
|
voiceover?:
|
|
| T
|
|
| {
|
|
xpEarned?: T;
|
|
};
|
|
};
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "awards_select".
|
|
*/
|
|
export interface AwardsSelect<T extends boolean = true> {
|
|
name?: T;
|
|
description?: T;
|
|
type?: T;
|
|
commendationColor?: T;
|
|
image?: T;
|
|
experiencePoints?: T;
|
|
ribbonDesign?: T;
|
|
backgroundImage?: T;
|
|
medalDesign?: T;
|
|
advancement?:
|
|
| T
|
|
| {
|
|
seriesKey?: T;
|
|
tier?: T;
|
|
};
|
|
grantConfig?:
|
|
| T
|
|
| {
|
|
allowedGrantorAssignmentTypes?: T;
|
|
maxGrantsPerGrantor?: T;
|
|
recipientScope?: T;
|
|
eligibleRecipientAssignments?: T;
|
|
};
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "qualifications_select".
|
|
*/
|
|
export interface QualificationsSelect<T extends boolean = true> {
|
|
name?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "assignments_select".
|
|
*/
|
|
export interface AssignmentsSelect<T extends boolean = true> {
|
|
name?: T;
|
|
type?: T;
|
|
callsign?: T;
|
|
description?: T;
|
|
leader?: T;
|
|
commandElement?: T;
|
|
subAssignments?: T;
|
|
members?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "assignment-transfers_select".
|
|
*/
|
|
export interface AssignmentTransfersSelect<T extends boolean = true> {
|
|
requester?: T;
|
|
fromAssignment?: T;
|
|
toAssignment?: T;
|
|
status?: T;
|
|
escalationReason?: T;
|
|
fromLeaderDecision?: T;
|
|
toLeaderDecision?: T;
|
|
fromDecisionBy?: T;
|
|
toDecisionBy?: T;
|
|
fromDecidedAt?: T;
|
|
toDecidedAt?: T;
|
|
fromLeaderSnapshot?: T;
|
|
toLeaderSnapshot?: T;
|
|
rejectionReason?: T;
|
|
requestNote?: T;
|
|
appealNote?: T;
|
|
resolvedBy?: T;
|
|
resolutionNote?: T;
|
|
resolvedAt?: T;
|
|
discordFromLeaderMessageId?: T;
|
|
discordToLeaderMessageId?: T;
|
|
discordRequesterMessageId?: T;
|
|
sourceNotifiedToUserId?: T;
|
|
destinationNotifiedToUserId?: T;
|
|
discordDeliveredKeys?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "experience_select".
|
|
*/
|
|
export interface ExperienceSelect<T extends boolean = true> {
|
|
name?: T;
|
|
requiredPoints?: T;
|
|
description?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "user-notifications_select".
|
|
*/
|
|
export interface UserNotificationsSelect<T extends boolean = true> {
|
|
user?: T;
|
|
type?: T;
|
|
title?: T;
|
|
message?: T;
|
|
link?: T;
|
|
read?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "evaluations_select".
|
|
*/
|
|
export interface EvaluationsSelect<T extends boolean = true> {
|
|
rater?: T;
|
|
ratee?: T;
|
|
mission?: T;
|
|
kind?: T;
|
|
level?: T;
|
|
comment?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "ribbon-submissions_select".
|
|
*/
|
|
export interface RibbonSubmissionsSelect<T extends boolean = true> {
|
|
name?: T;
|
|
description?: T;
|
|
design?: T;
|
|
user?: T;
|
|
status?: T;
|
|
reviewNote?: T;
|
|
reviewedBy?: T;
|
|
reviewedAt?: T;
|
|
award?: T;
|
|
awardXp?: T;
|
|
grantorTypes?: T;
|
|
recipientScope?: T;
|
|
maxGrantsPerGrantor?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "missions_select".
|
|
*/
|
|
export interface MissionsSelect<T extends boolean = true> {
|
|
name?: T;
|
|
codeName?: T;
|
|
summary?: T;
|
|
operationType?: T;
|
|
discordMessageId?: T;
|
|
discordAttendanceHash?: T;
|
|
discordAttendanceSentAt?: T;
|
|
discordModlistHash?: T;
|
|
discordCancelledAt?: T;
|
|
evaluationRemindersSentAt?: T;
|
|
readyReminderWebSentAt?: T;
|
|
readyReminderDmSentAt?: T;
|
|
imminentReminderSentAt?: T;
|
|
ticketsSettledAt?: T;
|
|
createdBy?: T;
|
|
coverImage?: T;
|
|
classification?:
|
|
| T
|
|
| {
|
|
map?: T;
|
|
missionType?: T;
|
|
campaign?: T;
|
|
customScripts?: T;
|
|
startDateTime?: T;
|
|
estimatedDuration?: T;
|
|
};
|
|
ownershipAndStatus?:
|
|
| T
|
|
| {
|
|
authors?: T;
|
|
zeus?: T;
|
|
status?: T;
|
|
visibility?: T;
|
|
completedAt?: T;
|
|
};
|
|
missionRoles?:
|
|
| T
|
|
| {
|
|
maxPlayers?: T;
|
|
providedRoles?:
|
|
| T
|
|
| {
|
|
roleName?: T;
|
|
missionCritical?: T;
|
|
requiredMos?: T;
|
|
minimumRank?: T;
|
|
id?: T;
|
|
};
|
|
notes?: T;
|
|
};
|
|
briefing?:
|
|
| T
|
|
| {
|
|
sectionName?: T;
|
|
details?: T;
|
|
id?: T;
|
|
};
|
|
missionObjectives?:
|
|
| T
|
|
| {
|
|
title?: T;
|
|
description?: T;
|
|
missionCritical?: T;
|
|
successOrFailConditions?: T;
|
|
redacted?: T;
|
|
id?: T;
|
|
};
|
|
civilianPresence?: T;
|
|
factionsInvolved?:
|
|
| T
|
|
| {
|
|
faction?: T;
|
|
threatLevel?: T;
|
|
id?: T;
|
|
};
|
|
gameDetails?:
|
|
| T
|
|
| {
|
|
serverDetails?:
|
|
| T
|
|
| {
|
|
serverIp?: T;
|
|
serverPort?: T;
|
|
serverPassword?: T;
|
|
};
|
|
gameSetup?:
|
|
| T
|
|
| {
|
|
missionFile?: T;
|
|
requiredMods?: T;
|
|
};
|
|
};
|
|
logisticsAndSupport?:
|
|
| T
|
|
| {
|
|
insertion?: T;
|
|
extraction?: T;
|
|
assetsAvailable?:
|
|
| T
|
|
| {
|
|
assetType?: T;
|
|
assetCount?: T;
|
|
doesRespawn?: T;
|
|
assetCallsign?: T;
|
|
id?: T;
|
|
};
|
|
};
|
|
commsAndDocs?:
|
|
| T
|
|
| {
|
|
radioPlan?: T;
|
|
frequencies?:
|
|
| T
|
|
| {
|
|
frequency?: T;
|
|
channel?: T;
|
|
netName?: T;
|
|
freqUsage?: T;
|
|
id?: T;
|
|
};
|
|
};
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "mission-attendances_select".
|
|
*/
|
|
export interface MissionAttendancesSelect<T extends boolean = true> {
|
|
mission?: T;
|
|
user?: T;
|
|
response?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "campaigns_select".
|
|
*/
|
|
export interface CampaignsSelect<T extends boolean = true> {
|
|
name?: T;
|
|
summary?: T;
|
|
status?: T;
|
|
campaignMode?: T;
|
|
description?: T;
|
|
startDate?: T;
|
|
endDate?: T;
|
|
coverImage?: T;
|
|
owner?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "factions_select".
|
|
*/
|
|
export interface FactionsSelect<T extends boolean = true> {
|
|
name?: T;
|
|
type?: T;
|
|
description?: T;
|
|
reputation?: T;
|
|
relationships?:
|
|
| T
|
|
| {
|
|
targetFaction?: T;
|
|
value?: T;
|
|
notes?: T;
|
|
id?: T;
|
|
};
|
|
playableFaction?: T;
|
|
startingFaction?: T;
|
|
associatedCampaigns?: T;
|
|
coverImage?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "technologies_select".
|
|
*/
|
|
export interface TechnologiesSelect<T extends boolean = true> {
|
|
name?: T;
|
|
approvalStatus?: T;
|
|
type?: T;
|
|
summary?: T;
|
|
description?: T;
|
|
requirements?:
|
|
| T
|
|
| {
|
|
prerequisiteTechnologies?:
|
|
| T
|
|
| {
|
|
requiresAnd?:
|
|
| T
|
|
| {
|
|
technology?: T;
|
|
};
|
|
requiresOr?:
|
|
| T
|
|
| {
|
|
technology?: T;
|
|
};
|
|
id?: T;
|
|
};
|
|
};
|
|
researchCosts?:
|
|
| T
|
|
| {
|
|
resources?:
|
|
| T
|
|
| {
|
|
resource?: T;
|
|
amount?: T;
|
|
id?: T;
|
|
};
|
|
minimumResearchDuration?: T;
|
|
maximumResearchDuration?: T;
|
|
};
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "assets_select".
|
|
*/
|
|
export interface AssetsSelect<T extends boolean = true> {
|
|
name?: T;
|
|
approvalStatus?: T;
|
|
className?: T;
|
|
assetType?: T;
|
|
'Weapon Configuration'?:
|
|
| T
|
|
| {
|
|
slotType?: T;
|
|
compatibleMagazines?: T;
|
|
compatibleAttachments?: T;
|
|
};
|
|
'Nightvision Configuration'?:
|
|
| T
|
|
| {
|
|
nvgGeneration?: T;
|
|
nvgHasThermals?: T;
|
|
};
|
|
'Container Configuration'?:
|
|
| T
|
|
| {
|
|
capacityKg?: T;
|
|
weightKg?: T;
|
|
};
|
|
'Skin Configuration'?:
|
|
| T
|
|
| {
|
|
appliesToAssetTypes?: T;
|
|
};
|
|
'Magazine Configuration'?:
|
|
| T
|
|
| {
|
|
roundCapacity?: T;
|
|
ammoType?: T;
|
|
greenmagCompatible?: T;
|
|
};
|
|
'Asset Metadata'?:
|
|
| T
|
|
| {
|
|
mod?: T;
|
|
thumbnail?: T;
|
|
gameDescription?: T;
|
|
};
|
|
tradeable?: T;
|
|
marketTrading?:
|
|
| T
|
|
| {
|
|
Rarity?: T;
|
|
perceivedValue?:
|
|
| T
|
|
| {
|
|
baseBuyPrice?: T;
|
|
baseSellPrice?: T;
|
|
};
|
|
};
|
|
economy?:
|
|
| T
|
|
| {
|
|
enabled?: T;
|
|
baselineSupply?: T;
|
|
baselineDemand?: T;
|
|
maxModifier?: T;
|
|
};
|
|
crafting?:
|
|
| T
|
|
| {
|
|
craftable?: T;
|
|
blueprintRequired?: T;
|
|
technologyRequired?: T;
|
|
technologyRequiredToUse?: T;
|
|
craftingData?:
|
|
| T
|
|
| {
|
|
inputs?:
|
|
| T
|
|
| {
|
|
resource?: T;
|
|
quantity?: T;
|
|
lended?: T;
|
|
id?: T;
|
|
};
|
|
requiresStructure?: T;
|
|
craftingTimePerUnit?: T;
|
|
byproducts?:
|
|
| T
|
|
| {
|
|
resource?: T;
|
|
quantity?: T;
|
|
id?: T;
|
|
};
|
|
batchSize?: T;
|
|
};
|
|
};
|
|
storageDimensions?:
|
|
| T
|
|
| {
|
|
gridWidth?: T;
|
|
gridHeight?: T;
|
|
stackable?: T;
|
|
maxStackSize?: T;
|
|
rotatable?: T;
|
|
};
|
|
relatedAssets?: T;
|
|
isLive?: T;
|
|
notes?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "resources_select".
|
|
*/
|
|
export interface ResourcesSelect<T extends boolean = true> {
|
|
showWarning?: T;
|
|
name?: T;
|
|
codeName?: T;
|
|
approvalStatus?: T;
|
|
type?: T;
|
|
description?: T;
|
|
icon?: T;
|
|
color?: T;
|
|
baseValue?: T;
|
|
tradeable?: T;
|
|
rarity?: T;
|
|
economy?:
|
|
| T
|
|
| {
|
|
enabled?: T;
|
|
baselineSupply?: T;
|
|
baselineDemand?: T;
|
|
maxModifier?: T;
|
|
};
|
|
unitOfMeasure?: T;
|
|
massPerUnit?: T;
|
|
stackSize?: T;
|
|
gridWidth?: T;
|
|
gridHeight?: T;
|
|
stackable?: T;
|
|
maxStackSize?: T;
|
|
rotatable?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "vehicles_select".
|
|
*/
|
|
export interface VehiclesSelect<T extends boolean = true> {
|
|
name?: T;
|
|
classname?: T;
|
|
approvalStatus?: T;
|
|
description?: T;
|
|
image?: T;
|
|
category?: T;
|
|
fuel?:
|
|
| T
|
|
| {
|
|
fuelType?: T;
|
|
fuelCapacity?: T;
|
|
fuelConsumptionRate?: T;
|
|
};
|
|
materials?:
|
|
| T
|
|
| {
|
|
resource?: T;
|
|
amount?: T;
|
|
id?: T;
|
|
};
|
|
constructionTime?: T;
|
|
requiredTech?: T;
|
|
requiredStructure?: T;
|
|
scrapReturns?:
|
|
| T
|
|
| {
|
|
resource?: T;
|
|
amount?: T;
|
|
chance?: T;
|
|
id?: T;
|
|
};
|
|
upkeepCosts?:
|
|
| T
|
|
| {
|
|
resource?: T;
|
|
amount?: T;
|
|
id?: T;
|
|
};
|
|
transportMode?: T;
|
|
width?: T;
|
|
height?: T;
|
|
maxMass?: T;
|
|
aceCargoSlots?: T;
|
|
allowedVirtualCargo?:
|
|
| T
|
|
| {
|
|
item?: T;
|
|
amount?: T;
|
|
id?: T;
|
|
};
|
|
maxHealth?: T;
|
|
armorRating?: T;
|
|
maxSpeedOnRoad?: T;
|
|
maxSpeedOffRoad?: T;
|
|
maxAirspeed?: T;
|
|
maxKnots?: T;
|
|
pylons?:
|
|
| T
|
|
| {
|
|
pylonName?: T;
|
|
pylonType?: T;
|
|
amount?: T;
|
|
ammoType?: T;
|
|
id?: T;
|
|
};
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "structures_select".
|
|
*/
|
|
export interface StructuresSelect<T extends boolean = true> {
|
|
name?: T;
|
|
codeName?: T;
|
|
approvalStatus?: T;
|
|
description?: T;
|
|
image?: T;
|
|
category?: T;
|
|
materials?:
|
|
| T
|
|
| {
|
|
resource?: T;
|
|
amount?: T;
|
|
id?: T;
|
|
};
|
|
constructionDurationMinutes?: T;
|
|
constructionCrewRequired?: T;
|
|
requiredTech?: T;
|
|
requiresUpgrade?: T;
|
|
upgradesInto?: T;
|
|
upgradeCostMultiplier?: T;
|
|
terrainType?: T;
|
|
resourcesInRange?:
|
|
| T
|
|
| {
|
|
resource?: T;
|
|
range?: T;
|
|
id?: T;
|
|
};
|
|
structuresInRange?:
|
|
| T
|
|
| {
|
|
structure?: T;
|
|
range?: T;
|
|
id?: T;
|
|
};
|
|
upkeep?:
|
|
| T
|
|
| {
|
|
resource?: T;
|
|
amount?: T;
|
|
id?: T;
|
|
};
|
|
sellPrice?: T;
|
|
maintenanceCost?: T;
|
|
laborRequirements?:
|
|
| T
|
|
| {
|
|
classification?: T;
|
|
requiredHeadcount?: T;
|
|
maxHeadcount?: T;
|
|
enforcedSalary?: T;
|
|
id?: T;
|
|
};
|
|
staffPositions?:
|
|
| T
|
|
| {
|
|
positionType?: T;
|
|
max?: T;
|
|
enforcedSalary?: T;
|
|
id?: T;
|
|
};
|
|
productionInputs?:
|
|
| T
|
|
| {
|
|
resource?: T;
|
|
amountPerHour?: T;
|
|
id?: T;
|
|
};
|
|
productionOutputs?:
|
|
| T
|
|
| {
|
|
resource?: T;
|
|
amountPerHour?: T;
|
|
id?: T;
|
|
};
|
|
moduleSlots?: T;
|
|
moduleOptions?:
|
|
| T
|
|
| {
|
|
name?: T;
|
|
category?: T;
|
|
description?: T;
|
|
effects?:
|
|
| T
|
|
| {
|
|
type?: T;
|
|
value?: T;
|
|
id?: T;
|
|
};
|
|
materials?:
|
|
| T
|
|
| {
|
|
resource?: T;
|
|
amount?: T;
|
|
id?: T;
|
|
};
|
|
id?: T;
|
|
};
|
|
aura?:
|
|
| T
|
|
| {
|
|
effectType?: T;
|
|
value?: T;
|
|
rangeMeters?: T;
|
|
};
|
|
functionType?: T;
|
|
canProduce?: T;
|
|
autoGeneratedResources?:
|
|
| T
|
|
| {
|
|
resource?: T;
|
|
minAmount?: T;
|
|
maxAmount?: T;
|
|
minFrequency?: T;
|
|
maxFrequency?: T;
|
|
produceChance?: T;
|
|
id?: T;
|
|
};
|
|
maxCapacityMass?: T;
|
|
restrictToAllowed?: T;
|
|
xSize?: T;
|
|
ySize?: T;
|
|
allowedStorage?:
|
|
| T
|
|
| {
|
|
item?: T;
|
|
amount?: T;
|
|
id?: T;
|
|
};
|
|
prohibitedStorage?:
|
|
| T
|
|
| {
|
|
item?: T;
|
|
id?: T;
|
|
};
|
|
maxHealth?: T;
|
|
repairSpeed?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "shipments_select".
|
|
*/
|
|
export interface ShipmentsSelect<T extends boolean = true> {
|
|
name?: T;
|
|
origin?: T;
|
|
destination?: T;
|
|
map?: T;
|
|
routePath?: T;
|
|
transportVehicle?: T;
|
|
distance?: T;
|
|
cargo?:
|
|
| T
|
|
| {
|
|
item?: T;
|
|
amount?: T;
|
|
id?: T;
|
|
};
|
|
fuelCost?: T;
|
|
fuelConsumed?: T;
|
|
status?: T;
|
|
dispatchedAt?: T;
|
|
estimatedArrival?: T;
|
|
completedAt?: T;
|
|
autoReturn?: T;
|
|
createdBy?: T;
|
|
failureReason?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "bank-accounts_select".
|
|
*/
|
|
export interface BankAccountsSelect<T extends boolean = true> {
|
|
name?: T;
|
|
accountType?: T;
|
|
ownerFaction?: T;
|
|
ownerUser?: T;
|
|
currency?: T;
|
|
balance?: T;
|
|
status?: T;
|
|
createdAt?: T;
|
|
updatedAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "bank-transactions_select".
|
|
*/
|
|
export interface BankTransactionsSelect<T extends boolean = true> {
|
|
transactionNumber?: T;
|
|
type?: T;
|
|
fromAccount?: T;
|
|
toAccount?: T;
|
|
amount?: T;
|
|
fee?: T;
|
|
memo?: T;
|
|
actor?: T;
|
|
status?: T;
|
|
reference?: T;
|
|
timestamp?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "ledger-entries_select".
|
|
*/
|
|
export interface LedgerEntriesSelect<T extends boolean = true> {
|
|
account?: T;
|
|
transaction?: T;
|
|
type?: T;
|
|
amount?: T;
|
|
balanceAfter?: T;
|
|
memo?: T;
|
|
timestamp?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "locker-storages_select".
|
|
*/
|
|
export interface LockerStoragesSelect<T extends boolean = true> {
|
|
name?: T;
|
|
ownerUser?: T;
|
|
items?:
|
|
| T
|
|
| {
|
|
asset?: T;
|
|
quantity?: T;
|
|
gridX?: T;
|
|
gridY?: T;
|
|
rotated?: T;
|
|
equipment?:
|
|
| T
|
|
| {
|
|
attachments?:
|
|
| T
|
|
| {
|
|
asset?: T;
|
|
id?: T;
|
|
};
|
|
skin?: T;
|
|
customName?: T;
|
|
};
|
|
id?: T;
|
|
};
|
|
itemCount?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "loadouts_select".
|
|
*/
|
|
export interface LoadoutsSelect<T extends boolean = true> {
|
|
name?: T;
|
|
description?: T;
|
|
ownerUser?: T;
|
|
equipped?: T;
|
|
slots?:
|
|
| T
|
|
| {
|
|
primary?: T;
|
|
secondary?: T;
|
|
launcher?: T;
|
|
uniform?: T;
|
|
vest?: T;
|
|
backpack?: T;
|
|
helmet?: T;
|
|
facewear?: T;
|
|
nvg?: T;
|
|
radio?: T;
|
|
optic?: T;
|
|
muzzle?: T;
|
|
bipod?: T;
|
|
};
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "market-listings_select".
|
|
*/
|
|
export interface MarketListingsSelect<T extends boolean = true> {
|
|
asset?: T;
|
|
seller?: T;
|
|
npc?: T;
|
|
quantity?: T;
|
|
price?: T;
|
|
desiredPrice?: T;
|
|
minPrice?: T;
|
|
currency?: T;
|
|
status?: T;
|
|
isAutoGenerated?: T;
|
|
listedAt?: T;
|
|
expiresAt?: T;
|
|
soldAt?: T;
|
|
buyer?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "market-negotiations_select".
|
|
*/
|
|
export interface MarketNegotiationsSelect<T extends boolean = true> {
|
|
listing?: T;
|
|
buyer?: T;
|
|
status?: T;
|
|
patience?: T;
|
|
quantity?: T;
|
|
amount?: T;
|
|
proposedBy?: T;
|
|
acceptedPrice?: T;
|
|
history?:
|
|
| T
|
|
| {
|
|
amount?: T;
|
|
from?: T;
|
|
note?: T;
|
|
at?: T;
|
|
id?: T;
|
|
};
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "market-state_select".
|
|
*/
|
|
export interface MarketStateSelect<T extends boolean = true> {
|
|
itemType?: T;
|
|
itemId?: T;
|
|
gmBaselineSupply?: T;
|
|
gmBaselineDemand?: T;
|
|
currentSupply?: T;
|
|
artificialDemand?: T;
|
|
realDemand?: T;
|
|
priceModifier?: T;
|
|
lastComputedAt?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "voice-scripts_select".
|
|
*/
|
|
export interface VoiceScriptsSelect<T extends boolean = true> {
|
|
title?: T;
|
|
description?: T;
|
|
script?: T;
|
|
xpAmount?: T;
|
|
spoiler?: T;
|
|
status?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "voice-submissions_select".
|
|
*/
|
|
export interface VoiceSubmissionsSelect<T extends boolean = true> {
|
|
script?: T;
|
|
user?: T;
|
|
description?: T;
|
|
status?: T;
|
|
reviewNote?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
url?: T;
|
|
thumbnailURL?: T;
|
|
filename?: T;
|
|
mimeType?: T;
|
|
filesize?: T;
|
|
width?: T;
|
|
height?: T;
|
|
focalX?: T;
|
|
focalY?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "tickets_select".
|
|
*/
|
|
export interface TicketsSelect<T extends boolean = true> {
|
|
title?: T;
|
|
description?: T;
|
|
category?: T;
|
|
priority?: T;
|
|
status?: T;
|
|
reporter?: T;
|
|
assignee?: T;
|
|
activity?:
|
|
| T
|
|
| {
|
|
type?: T;
|
|
content?: T;
|
|
author?: T;
|
|
created_at?: T;
|
|
id?: T;
|
|
};
|
|
editHistory?:
|
|
| T
|
|
| {
|
|
before?: T;
|
|
after?: T;
|
|
editedBy?: T;
|
|
editedAt?: T;
|
|
id?: T;
|
|
};
|
|
closedAt?: T;
|
|
project?: T;
|
|
sprint?: T;
|
|
release?: T;
|
|
parentTicket?: T;
|
|
labels?: T;
|
|
type?: T;
|
|
storyPoints?: T;
|
|
estimate?: T;
|
|
startDate?: T;
|
|
dueDate?: T;
|
|
resolution?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "ticket-votes_select".
|
|
*/
|
|
export interface TicketVotesSelect<T extends boolean = true> {
|
|
ticket?: T;
|
|
user?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "wiki-pages_select".
|
|
*/
|
|
export interface WikiPagesSelect<T extends boolean = true> {
|
|
title?: T;
|
|
slug?: T;
|
|
category?: T;
|
|
tags?: T;
|
|
body?: T;
|
|
lockdown?: T;
|
|
lockedBy?: T;
|
|
lockedAt?: T;
|
|
lastEditor?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "wiki-revisions_select".
|
|
*/
|
|
export interface WikiRevisionsSelect<T extends boolean = true> {
|
|
page?: T;
|
|
revisionNumber?: T;
|
|
titleSnapshot?: T;
|
|
contentSnapshot?: T;
|
|
editor?: T;
|
|
summary?: T;
|
|
type?: T;
|
|
restoredFromRevision?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "wiki-templates_select".
|
|
*/
|
|
export interface WikiTemplatesSelect<T extends boolean = true> {
|
|
name?: T;
|
|
body?: T;
|
|
description?: T;
|
|
css?: T;
|
|
html?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "projects_select".
|
|
*/
|
|
export interface ProjectsSelect<T extends boolean = true> {
|
|
name?: T;
|
|
key?: T;
|
|
description?: T;
|
|
lead?: T;
|
|
status?: T;
|
|
defaultAssignee?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "sprints_select".
|
|
*/
|
|
export interface SprintsSelect<T extends boolean = true> {
|
|
name?: T;
|
|
project?: T;
|
|
goal?: T;
|
|
startDate?: T;
|
|
endDate?: T;
|
|
status?: T;
|
|
capacity?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "releases_select".
|
|
*/
|
|
export interface ReleasesSelect<T extends boolean = true> {
|
|
name?: T;
|
|
project?: T;
|
|
description?: T;
|
|
status?: T;
|
|
releaseDate?: T;
|
|
targetVersion?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "labels_select".
|
|
*/
|
|
export interface LabelsSelect<T extends boolean = true> {
|
|
name?: T;
|
|
color?: T;
|
|
project?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "maps_select".
|
|
*/
|
|
export interface MapsSelect<T extends boolean = true> {
|
|
name?: T;
|
|
isActive?: T;
|
|
worldMap?: T;
|
|
campaign?: T;
|
|
description?: T;
|
|
weather?: T;
|
|
latitude?: T;
|
|
longitude?: T;
|
|
easeOfAccess?: T;
|
|
factionControl?: T;
|
|
worldSizeWidth?: T;
|
|
worldSizeHeight?: T;
|
|
basemapMode?: T;
|
|
basemapImage?: T;
|
|
tileUrlTemplate?: T;
|
|
minZoom?: T;
|
|
maxZoom?: T;
|
|
defaultCenterX?: T;
|
|
defaultCenterY?: T;
|
|
defaultZoom?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "map-roads_select".
|
|
*/
|
|
export interface MapRoadsSelect<T extends boolean = true> {
|
|
name?: T;
|
|
description?: T;
|
|
map?: T;
|
|
surface?: T;
|
|
speedMultiplier?: T;
|
|
strokeColor?: T;
|
|
strokeWeight?: T;
|
|
strokeStyle?: T;
|
|
labelVisible?: T;
|
|
points?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "map-zones_select".
|
|
*/
|
|
export interface MapZonesSelect<T extends boolean = true> {
|
|
name?: T;
|
|
description?: T;
|
|
map?: T;
|
|
type?: T;
|
|
fillColor?: T;
|
|
strokeColor?: T;
|
|
fillOpacity?: T;
|
|
strokeWeight?: T;
|
|
resources?: T;
|
|
labelVisible?: T;
|
|
points?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "resource-nodes_select".
|
|
*/
|
|
export interface ResourceNodesSelect<T extends boolean = true> {
|
|
name?: T;
|
|
description?: T;
|
|
map?: T;
|
|
resources?: T;
|
|
icon?: T;
|
|
position?: T;
|
|
richness?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "narrative-events_select".
|
|
*/
|
|
export interface NarrativeEventsSelect<T extends boolean = true> {
|
|
name?: T;
|
|
summary?: T;
|
|
flowData?: T;
|
|
triggers?:
|
|
| T
|
|
| {
|
|
type?: T;
|
|
condition?: T;
|
|
};
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "story-beats_select".
|
|
*/
|
|
export interface StoryBeatsSelect<T extends boolean = true> {
|
|
title?: T;
|
|
occurredAt?: T;
|
|
order?: T;
|
|
status?: T;
|
|
body?: T;
|
|
mission?: T;
|
|
voiceover?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "story-beat-states_select".
|
|
*/
|
|
export interface StoryBeatStatesSelect<T extends boolean = true> {
|
|
user?: T;
|
|
beat?: T;
|
|
readAt?: T;
|
|
reaction?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "story-voiceovers_select".
|
|
*/
|
|
export interface StoryVoiceoversSelect<T extends boolean = true> {
|
|
aiGenerated?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
url?: T;
|
|
thumbnailURL?: T;
|
|
filename?: T;
|
|
mimeType?: T;
|
|
filesize?: T;
|
|
width?: T;
|
|
height?: T;
|
|
focalX?: T;
|
|
focalY?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "mission-files_select".
|
|
*/
|
|
export interface MissionFilesSelect<T extends boolean = true> {
|
|
missionFileName?: T;
|
|
author?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
url?: T;
|
|
thumbnailURL?: T;
|
|
filename?: T;
|
|
mimeType?: T;
|
|
filesize?: T;
|
|
width?: T;
|
|
height?: T;
|
|
focalX?: T;
|
|
focalY?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "mod-lists_select".
|
|
*/
|
|
export interface ModListsSelect<T extends boolean = true> {
|
|
modlistName?: T;
|
|
author?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
url?: T;
|
|
thumbnailURL?: T;
|
|
filename?: T;
|
|
mimeType?: T;
|
|
filesize?: T;
|
|
width?: T;
|
|
height?: T;
|
|
focalX?: T;
|
|
focalY?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "game-servers_select".
|
|
*/
|
|
export interface GameServersSelect<T extends boolean = true> {
|
|
serverId?: T;
|
|
name?: T;
|
|
status?: T;
|
|
lastSeenAt?: T;
|
|
metadata?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "arma-sync-events_select".
|
|
*/
|
|
export interface ArmaSyncEventsSelect<T extends boolean = true> {
|
|
eventId?: T;
|
|
server?: T;
|
|
type?: T;
|
|
occurredAt?: T;
|
|
payload?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "arma-commands_select".
|
|
*/
|
|
export interface ArmaCommandsSelect<T extends boolean = true> {
|
|
commandId?: T;
|
|
server?: T;
|
|
type?: T;
|
|
payload?: T;
|
|
status?: T;
|
|
result?: T;
|
|
error?: T;
|
|
deliveredAt?: T;
|
|
completedAt?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "respawn-tickets_select".
|
|
*/
|
|
export interface RespawnTicketsSelect<T extends boolean = true> {
|
|
user?: T;
|
|
balance?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "supply-boxes_select".
|
|
*/
|
|
export interface SupplyBoxesSelect<T extends boolean = true> {
|
|
boxId?: T;
|
|
sessionId?: T;
|
|
server?: T;
|
|
boxClass?: T;
|
|
displayName?: T;
|
|
location?: T;
|
|
contents?: T;
|
|
lastSyncedAt?: T;
|
|
status?: T;
|
|
sourceEvent?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "operation-events_select".
|
|
*/
|
|
export interface OperationEventsSelect<T extends boolean = true> {
|
|
sourceEvent?: T;
|
|
eventId?: T;
|
|
operationId?: T;
|
|
type?: T;
|
|
version?: T;
|
|
status?: T;
|
|
error?: T;
|
|
payloadHash?: T;
|
|
actor?: T;
|
|
server?: T;
|
|
mission?: T;
|
|
occurredAt?: T;
|
|
validatedAt?: T;
|
|
reconciliationNotes?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "operation-effects_select".
|
|
*/
|
|
export interface OperationEffectsSelect<T extends boolean = true> {
|
|
operationEvent?: T;
|
|
sourceEvent?: T;
|
|
operationId?: T;
|
|
effectKey?: T;
|
|
effectType?: T;
|
|
status?: T;
|
|
payload?: T;
|
|
reversalOf?: T;
|
|
reversedBy?: T;
|
|
reconciliationNotes?: T;
|
|
appliedAt?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "operation-reservations_select".
|
|
*/
|
|
export interface OperationReservationsSelect<T extends boolean = true> {
|
|
reservationKey?: T;
|
|
operationId?: T;
|
|
mission?: T;
|
|
status?: T;
|
|
personnel?:
|
|
| T
|
|
| {
|
|
user?: T;
|
|
slot?: T;
|
|
id?: T;
|
|
};
|
|
vehicles?:
|
|
| T
|
|
| {
|
|
vehicle?: T;
|
|
id?: T;
|
|
};
|
|
cargo?:
|
|
| T
|
|
| {
|
|
resource?: T;
|
|
amount?: T;
|
|
id?: T;
|
|
};
|
|
budget?:
|
|
| T
|
|
| {
|
|
account?: T;
|
|
amount?: T;
|
|
};
|
|
origin?: T;
|
|
destination?: T;
|
|
expiresAt?: T;
|
|
createdBy?: T;
|
|
settledAt?: T;
|
|
settledByEffect?: T;
|
|
settlement?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "operation-readiness_select".
|
|
*/
|
|
export interface OperationReadinessSelect<T extends boolean = true> {
|
|
subjectType?: T;
|
|
subjectId?: T;
|
|
subjectLabel?: T;
|
|
windowStart?: T;
|
|
windowEnd?: T;
|
|
windowLabel?: T;
|
|
operationId?: T;
|
|
calculationVersion?: T;
|
|
nature?: T;
|
|
readinessScore?: T;
|
|
planningConfidenceScore?: T;
|
|
contributingCategories?: T;
|
|
inputCount?: T;
|
|
explanation?: T;
|
|
recomputedAt?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "zone-pressure_select".
|
|
*/
|
|
export interface ZonePressureSelect<T extends boolean = true> {
|
|
zone?: T;
|
|
faction?: T;
|
|
operationId?: T;
|
|
mission?: T;
|
|
sourceEffect?: T;
|
|
delta?: T;
|
|
note?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "custom-minefields_select".
|
|
*/
|
|
export interface CustomMinefieldsSelect<T extends boolean = true> {
|
|
name?: T;
|
|
author?: T;
|
|
rows?: T;
|
|
cols?: T;
|
|
mines?: T;
|
|
mineCount?: T;
|
|
published?: T;
|
|
exposeEdgeMines?: T;
|
|
playCount?: T;
|
|
creatorXpBank?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "custom-minefield-scores_select".
|
|
*/
|
|
export interface CustomMinefieldScoresSelect<T extends boolean = true> {
|
|
minefield?: T;
|
|
user?: T;
|
|
seconds?: T;
|
|
flags?: T;
|
|
won?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "custom-radio-tests_select".
|
|
*/
|
|
export interface CustomRadioTestsSelect<T extends boolean = true> {
|
|
name?: T;
|
|
author?: T;
|
|
messages?: T;
|
|
messageCount?: T;
|
|
order?: T;
|
|
published?: T;
|
|
playCount?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "custom-radio-test-scores_select".
|
|
*/
|
|
export interface CustomRadioTestScoresSelect<T extends boolean = true> {
|
|
test?: T;
|
|
user?: T;
|
|
score?: T;
|
|
accuracy?: T;
|
|
correctMessages?: T;
|
|
incorrectMessages?: T;
|
|
mode?: T;
|
|
timeMs?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "forms_select".
|
|
*/
|
|
export interface FormsSelect<T extends boolean = true> {
|
|
title?: T;
|
|
fields?:
|
|
| T
|
|
| {
|
|
checkbox?:
|
|
| T
|
|
| {
|
|
name?: T;
|
|
label?: T;
|
|
width?: T;
|
|
required?: T;
|
|
defaultValue?: T;
|
|
id?: T;
|
|
blockName?: T;
|
|
};
|
|
country?:
|
|
| T
|
|
| {
|
|
name?: T;
|
|
label?: T;
|
|
width?: T;
|
|
required?: T;
|
|
id?: T;
|
|
blockName?: T;
|
|
};
|
|
email?:
|
|
| T
|
|
| {
|
|
name?: T;
|
|
label?: T;
|
|
width?: T;
|
|
required?: T;
|
|
id?: T;
|
|
blockName?: T;
|
|
};
|
|
message?:
|
|
| T
|
|
| {
|
|
message?: T;
|
|
id?: T;
|
|
blockName?: T;
|
|
};
|
|
number?:
|
|
| T
|
|
| {
|
|
name?: T;
|
|
label?: T;
|
|
width?: T;
|
|
defaultValue?: T;
|
|
required?: T;
|
|
id?: T;
|
|
blockName?: T;
|
|
};
|
|
select?:
|
|
| T
|
|
| {
|
|
name?: T;
|
|
label?: T;
|
|
width?: T;
|
|
defaultValue?: T;
|
|
placeholder?: T;
|
|
options?:
|
|
| T
|
|
| {
|
|
label?: T;
|
|
value?: T;
|
|
id?: T;
|
|
};
|
|
required?: T;
|
|
id?: T;
|
|
blockName?: T;
|
|
};
|
|
state?:
|
|
| T
|
|
| {
|
|
name?: T;
|
|
label?: T;
|
|
width?: T;
|
|
required?: T;
|
|
id?: T;
|
|
blockName?: T;
|
|
};
|
|
text?:
|
|
| T
|
|
| {
|
|
name?: T;
|
|
label?: T;
|
|
width?: T;
|
|
defaultValue?: T;
|
|
required?: T;
|
|
id?: T;
|
|
blockName?: T;
|
|
};
|
|
textarea?:
|
|
| T
|
|
| {
|
|
name?: T;
|
|
label?: T;
|
|
width?: T;
|
|
defaultValue?: T;
|
|
required?: T;
|
|
id?: T;
|
|
blockName?: T;
|
|
};
|
|
radio?:
|
|
| T
|
|
| {
|
|
name?: T;
|
|
label?: T;
|
|
width?: T;
|
|
defaultValue?: T;
|
|
options?:
|
|
| T
|
|
| {
|
|
label?: T;
|
|
value?: T;
|
|
id?: T;
|
|
};
|
|
required?: T;
|
|
id?: T;
|
|
blockName?: T;
|
|
};
|
|
date?:
|
|
| T
|
|
| {
|
|
name?: T;
|
|
label?: T;
|
|
width?: T;
|
|
required?: T;
|
|
defaultValue?: T;
|
|
id?: T;
|
|
blockName?: T;
|
|
};
|
|
};
|
|
submitButtonLabel?: T;
|
|
confirmationType?: T;
|
|
confirmationMessage?: T;
|
|
redirect?:
|
|
| T
|
|
| {
|
|
url?: T;
|
|
};
|
|
emails?:
|
|
| T
|
|
| {
|
|
emailTo?: T;
|
|
cc?: T;
|
|
bcc?: T;
|
|
replyTo?: T;
|
|
emailFrom?: T;
|
|
subject?: T;
|
|
message?: T;
|
|
id?: T;
|
|
};
|
|
activeFrom?: T;
|
|
activeUntil?: T;
|
|
targeting?:
|
|
| T
|
|
| {
|
|
audience?: T;
|
|
users?: T;
|
|
roles?: T;
|
|
qualifications?: T;
|
|
};
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "form-submissions_select".
|
|
*/
|
|
export interface FormSubmissionsSelect<T extends boolean = true> {
|
|
form?: T;
|
|
submissionData?:
|
|
| T
|
|
| {
|
|
field?: T;
|
|
value?: T;
|
|
id?: T;
|
|
};
|
|
user?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "plugin-ai-instructions_select".
|
|
*/
|
|
export interface PluginAiInstructionsSelect<T extends boolean = true> {
|
|
'schema-path'?: T;
|
|
'field-type'?: T;
|
|
'relation-to'?: T;
|
|
'model-id'?: T;
|
|
disabled?: T;
|
|
prompt?: T;
|
|
images?:
|
|
| T
|
|
| {
|
|
image?: T;
|
|
id?: T;
|
|
};
|
|
system?: T;
|
|
layout?: T;
|
|
'unsloth-text-settings'?:
|
|
| T
|
|
| {
|
|
model?: T;
|
|
};
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "payload-mcp-api-keys_select".
|
|
*/
|
|
export interface PayloadMcpApiKeysSelect<T extends boolean = true> {
|
|
user?: T;
|
|
label?: T;
|
|
description?: T;
|
|
media?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
announcements?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
gameHardResources?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
gameStructures?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
gameVehicles?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
gameNpcs?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
npcStaffing?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
laborClassifications?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
gameEventLogs?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
users?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
roles?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
ranks?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
profiles?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
awards?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
qualifications?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
assignments?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
assignmentTransfers?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
experience?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
userNotifications?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
evaluations?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
ribbonSubmissions?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
missions?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
missionAttendances?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
campaigns?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
factions?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
technologies?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
assets?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
resources?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
vehicles?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
structures?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
shipments?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
bankAccounts?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
bankTransactions?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
ledgerEntries?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
lockerStorages?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
loadouts?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
marketListings?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
marketNegotiations?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
marketState?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
voiceScripts?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
voiceSubmissions?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
tickets?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
ticketVotes?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
wikiPages?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
wikiRevisions?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
wikiTemplates?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
projects?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
sprints?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
releases?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
labels?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
maps?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
mapRoads?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
mapZones?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
resourceNodes?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
narrativeEvents?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
storyBeats?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
storyBeatStates?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
storyVoiceovers?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
missionFiles?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
modLists?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
gameServers?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
armaSyncEvents?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
armaCommands?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
respawnTickets?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
supplyBoxes?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
operationEvents?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
operationEffects?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
operationReservations?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
operationReadiness?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
zonePressure?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
customMinefields?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
customMinefieldScores?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
customRadioTests?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
customRadioTestScores?:
|
|
| T
|
|
| {
|
|
find?: T;
|
|
create?: T;
|
|
update?: T;
|
|
delete?: T;
|
|
};
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
enableAPIKey?: T;
|
|
apiKey?: T;
|
|
apiKeyIndex?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "payload-kv_select".
|
|
*/
|
|
export interface PayloadKvSelect<T extends boolean = true> {
|
|
key?: T;
|
|
data?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "payload-locked-documents_select".
|
|
*/
|
|
export interface PayloadLockedDocumentsSelect<T extends boolean = true> {
|
|
document?: T;
|
|
globalSlug?: T;
|
|
user?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "payload-preferences_select".
|
|
*/
|
|
export interface PayloadPreferencesSelect<T extends boolean = true> {
|
|
user?: T;
|
|
key?: T;
|
|
value?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "payload-migrations_select".
|
|
*/
|
|
export interface PayloadMigrationsSelect<T extends boolean = true> {
|
|
name?: T;
|
|
batch?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "game-rules".
|
|
*/
|
|
export interface GameRule {
|
|
id: number;
|
|
/**
|
|
* The base currency ("gold standard") used by all factions to pay for goods and services.
|
|
*/
|
|
mainCurrency: number | Resource;
|
|
/**
|
|
* General display name for the currency, e.g. "credit". Used when singular or plural names are not set.
|
|
*/
|
|
currencyName?: string | null;
|
|
/**
|
|
* Optional emblem shown inline before amounts. It renders scaled to the surrounding text height (unlike a text symbol).
|
|
*/
|
|
currencySymbol?: (number | null) | Media;
|
|
/**
|
|
* Singular amount label, e.g. "credit".
|
|
*/
|
|
currencySingular?: string | null;
|
|
/**
|
|
* Plural amount label, e.g. "credits".
|
|
*/
|
|
currencyPlural?: string | null;
|
|
/**
|
|
* Optional subunit name for future fractional displays, e.g. "cent". This does not affect stored values.
|
|
*/
|
|
currencyDenomination?: string | null;
|
|
/**
|
|
* Assignment(s) considered unit command. Members and leaders of these assignments get elevated access to draft missions and other restricted content.
|
|
*/
|
|
commandAssignments?: (number | Assignment)[] | null;
|
|
/**
|
|
* Assignment(s) considered the intelligence division. Members and leaders of these assignments get elevated access to draft missions and intelligence content.
|
|
*/
|
|
intelAssignments?: (number | Assignment)[] | null;
|
|
/**
|
|
* Distance threshold in real meters for instant transfers. Structures within this distance can transfer resources instantly. Beyond this, shipments are required.
|
|
*/
|
|
proximityThreshold?: number | null;
|
|
/**
|
|
* How often the game tick runs, in minutes. This processes shipment movement, fuel consumption, and arrivals.
|
|
*/
|
|
gameTickIntervalMinutes?: number | null;
|
|
/**
|
|
* Width of each member's personal locker grid, in cells. Applies to newly provisioned lockers.
|
|
*/
|
|
lockerGridWidth?: number | null;
|
|
/**
|
|
* Height of each member's personal locker grid, in cells. Applies to newly provisioned lockers.
|
|
*/
|
|
lockerGridHeight?: number | null;
|
|
/**
|
|
* When off, logistics officers cannot hire staff anywhere (both labor crews and named NPC staff).
|
|
*/
|
|
staffHiringEnabled?: boolean | null;
|
|
/**
|
|
* Message shown to logistics officers when hiring is disabled, e.g. explaining the in-universe reason.
|
|
*/
|
|
staffHiringDisabledMessage?: string | null;
|
|
/**
|
|
* Global knobs for the supply-and-demand market simulation run by the economy tick (docs/economy/supply-demand-design.md).
|
|
*/
|
|
economy?: {
|
|
/**
|
|
* Master gate for the market economy simulation. When off, the economy tick leaves all prices at their resting values.
|
|
*/
|
|
enabled?: boolean | null;
|
|
/**
|
|
* Default price band as a fraction of base price (e.g. 0.5 = price can move ±50%). Used when an item does not set its own band.
|
|
*/
|
|
defaultPriceBand?: number | null;
|
|
/**
|
|
* How many economy ticks of completed-purchase history feed the real-demand signal.
|
|
*/
|
|
realDemandWindowTicks?: number | null;
|
|
/**
|
|
* Fraction of accumulated real demand that survives each tick (0.5 halves it every tick).
|
|
*/
|
|
realDemandDecay?: number | null;
|
|
/**
|
|
* How far the NPC (artificial) demand random walk may move per tick, as a fraction of the GM baseline.
|
|
*/
|
|
artificialDemandDrift?: number | null;
|
|
/**
|
|
* Completed purchases needed before an item's price starts moving. Until then items stay at their resting price (modifier 1).
|
|
*/
|
|
coldStartObservations?: number | null;
|
|
/**
|
|
* Suggested economy tick cadence in minutes, for cron documentation only. The tick itself is triggered externally.
|
|
*/
|
|
tickIntervalHintMinutes?: number | null;
|
|
};
|
|
/**
|
|
* When off, the Zone Pressure feature is hidden from the Operations feed (the overview card and the AAR section).
|
|
*/
|
|
zonePressureEnabled?: boolean | null;
|
|
/**
|
|
* When off, the Personnel > Statistics page and its navigation entry are hidden.
|
|
*/
|
|
statisticsEnabled?: boolean | null;
|
|
/**
|
|
* When off, the Helpdesk page and its navigation entry are hidden.
|
|
*/
|
|
helpdeskEnabled?: boolean | null;
|
|
updatedAt?: string | null;
|
|
createdAt?: string | null;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "shims".
|
|
*/
|
|
export interface Shim {
|
|
id: number;
|
|
shims?:
|
|
| {
|
|
/**
|
|
* Unique identifier for this shim. Used internally for stable hashing.
|
|
*/
|
|
name: string;
|
|
/**
|
|
* Brief description of what this shim does (for admin reference).
|
|
*/
|
|
summary?: string | null;
|
|
/**
|
|
* Disabled shims are never injected, regardless of targeting rules.
|
|
*/
|
|
enabled?: boolean | null;
|
|
type: 'css' | 'js';
|
|
/**
|
|
* CSS or JS code to inject. CSS is added as a <style> tag; JS is added as an inline <script>.
|
|
*/
|
|
content: string;
|
|
/**
|
|
* Who should this shim be applied to?
|
|
*/
|
|
targeting: {
|
|
audience: 'all' | 'percentage' | 'users' | 'roles';
|
|
/**
|
|
* Percentage of users (0-100) who receive this shim. Assignment is deterministic per user.
|
|
*/
|
|
percentage?: number | null;
|
|
/**
|
|
* Only these specific users will receive this shim.
|
|
*/
|
|
users?: (number | User)[] | null;
|
|
/**
|
|
* Users with any of these roles will receive this shim.
|
|
*/
|
|
roles?: ('guest' | 'user' | 'trusted' | 'admin' | 'developer')[] | null;
|
|
};
|
|
/**
|
|
* Which pages should this shim be active on?
|
|
*/
|
|
paths: {
|
|
matchType: 'all' | 'include' | 'exclude';
|
|
/**
|
|
* URL path prefixes to match. E.g. '/logistics' matches /logistics and /logistics/market. Leading slash required.
|
|
*/
|
|
paths?: string[] | null;
|
|
};
|
|
id?: string | null;
|
|
}[]
|
|
| null;
|
|
updatedAt?: string | null;
|
|
createdAt?: string | null;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "game-rules_select".
|
|
*/
|
|
export interface GameRulesSelect<T extends boolean = true> {
|
|
mainCurrency?: T;
|
|
currencyName?: T;
|
|
currencySymbol?: T;
|
|
currencySingular?: T;
|
|
currencyPlural?: T;
|
|
currencyDenomination?: T;
|
|
commandAssignments?: T;
|
|
intelAssignments?: T;
|
|
proximityThreshold?: T;
|
|
gameTickIntervalMinutes?: T;
|
|
lockerGridWidth?: T;
|
|
lockerGridHeight?: T;
|
|
staffHiringEnabled?: T;
|
|
staffHiringDisabledMessage?: T;
|
|
economy?:
|
|
| T
|
|
| {
|
|
enabled?: T;
|
|
defaultPriceBand?: T;
|
|
realDemandWindowTicks?: T;
|
|
realDemandDecay?: T;
|
|
artificialDemandDrift?: T;
|
|
coldStartObservations?: T;
|
|
tickIntervalHintMinutes?: T;
|
|
};
|
|
zonePressureEnabled?: T;
|
|
statisticsEnabled?: T;
|
|
helpdeskEnabled?: T;
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
globalType?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "shims_select".
|
|
*/
|
|
export interface ShimsSelect<T extends boolean = true> {
|
|
shims?:
|
|
| T
|
|
| {
|
|
name?: T;
|
|
summary?: T;
|
|
enabled?: T;
|
|
type?: T;
|
|
content?: T;
|
|
targeting?:
|
|
| T
|
|
| {
|
|
audience?: T;
|
|
percentage?: T;
|
|
users?: T;
|
|
roles?: T;
|
|
};
|
|
paths?:
|
|
| T
|
|
| {
|
|
matchType?: T;
|
|
paths?: T;
|
|
};
|
|
id?: T;
|
|
};
|
|
updatedAt?: T;
|
|
createdAt?: T;
|
|
globalType?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "collections_widget".
|
|
*/
|
|
export interface CollectionsWidget {
|
|
data?: {
|
|
[k: string]: unknown;
|
|
};
|
|
width: 'full';
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "auth".
|
|
*/
|
|
export interface Auth {
|
|
[k: string]: unknown;
|
|
}
|
|
|
|
|
|
declare module 'payload' {
|
|
export interface GeneratedTypes extends Config {}
|
|
} |