qsecuritysystem-api is the official integration layer for qSecuritySystem.
It gives third-party plugins and services a stable, typed contract to interact with moderation features without direct access to internal managers or database code.
API Documentation: https://www.notion.so/qSecuritySystem-API-e7c8491911224624b257043711a20fc5
Note: some moderation/staff-log operations are contract-ready in the API but may be limited by the current plugin storage schema.
The API artifact now includes its own lightweight Bukkit bootstrap plugin (qSecuritySystemAPI) with plugin.yml.
This guarantees the API jar initializes cleanly when installed on the server.
qSecuritySystemAPI exposes contracts and startup diagnosticsqSecuritySystem (core plugin) remains the actual API provider and registers QSecuritySystemApi in ServicesManagerThe plugin registers QSecuritySystemApi in Bukkit ServicesManager at startup.
Any integration plugin can obtain the API provider like this:
RegisteredServiceProvider<QSecuritySystemApi> provider = Bukkit.getServicesManager()
.getRegistration(QSecuritySystemApi.class);
if (provider != null) {
QSecuritySystemApi api = provider.getProvider();
}
Below is what the current QSecuritySystemApiProvider supports at runtime.
PunishmentApiisBanned, isMuted, hasActivePunishmentgetActivePunishment, getActivePunishmentsgetPunishmentHistory, getPunishmentHistory(UUID, type), getPunishmentCountissuePunishment (BAN/MUTE/KICK)removePunishment (BAN/MUTE)getRemainingTimeReportApicreateReportgetOpenReports, getReportByIdcloseReport, isReportOpengetReportsByTarget, getReportsByReporterLimitations:
claimReport is currently contract-level only and returns unsupported message in provider implementation.CheckApistartCheck (requires online player + online staff)endCheck, failCheckisUnderCheck, getActiveCheck, getActiveChecksgetCheckHistoryPlayerSecurityApigetProfile, getSnapshotisFrozen, isVanished, isStaffModeEnabled, isFlaggedLimitations:
isStaffModeEnabled/isFlagged currently return false in provider implementation (reserved extension points).ModerationToolApiisFrozen, isVanishedsetVanishedsetFrozen (unfreeze via check termination is supported)Limitations:
setStaffMode, setFlag, addNote, and manual freeze enable are currently contract-level only.StaffLogApirecordgetByStaff, getByTarget, getRecentImplementation detail:
The API module contains only public integration primitives:
This separation keeps plugin internals flexible while preserving a predictable integration contract.