Integrations and extensions
An integration can read Network data, notify an external service or change game server state. Check data direction and access before issuing credentials. A reference entry does not grant a subscription or access to another project.
Discord
The panel loads flags through integration.getDiscordFlags and saves through integration.updateDiscordFlags. Use the selected server's settings and valid webhook; keep the webhook out of documents. A saved flag does not verify Discord delivery; diagnose persistence and external responses separately.
RustCheatCheck (RCC)
integration.getRccSettings/updateRccSettings manage the API key, ban synchronization and access permission. Database fields include rcc_api_key, rcc_sync_bans, rcc_grant_access. RCC belongs to the Rust/Steam context: the backend separates Minecraft profiles and must not request Steam/RCC data for a synthetic Minecraft ID.
Imported ban history does not establish a fresh player inspection. Bulk import requires server mapping and duplicate review; internal .ulog SQL/reports are not a public API and can contain player data.
Custom actions
customaction provides listing, presets, creation from a preset, saving, execution and deletion through permitted handlers. Actions depend on backend rights, custom_actions and extension capabilities. A shared UI action does not enable arbitrary Minecraft console execution.
Java com.ozprotect.ext.* supports trusted local extensions. IdentityResolved, PlayerJoined, PlayerLeft, ModerationApplied fire after confirmed success; callbacks use the operation's completion thread. Extensions must schedule native game API work on the game thread. This is not a sandbox or a remote mod installer.
HTTP and sockets
External services use HTTP API/OpenAPI. Live panel actions usually use Socket.IO. Do not put an account token in another service's URL or require cross-region callbacks over global Redis.
Public API entries in settings
The current ApiSettings.vue displays /public/signages, /public/checks, /public/simplified-bans, /public/bans, /public/servers and switches fixed to selected=false. These routes are not registered in the inspected Network HTTP dispatcher. The UI display is not a finished Public API contract. Build integrations against the actual registered reference methods.
Sources: socket/client/Integration.mjs, CustomAction.mjs, modules/sub/ServerConfig.js, .web/.../panel/Integrations.vue, settings/ApiSettings.vue, Java core/README.md.
