Developer reference

ShieldPlay HTTP API

A concise reference for dashboard integrations and authenticated game agents. All production requests use HTTPS and JSON.

01

Base URL and conventions

Production API base URL: https://api.shieldplay.it/api/v1. Paths below are relative to this base. Send JSON request bodies with Content-Type: application/json. Successful responses use standard 2xx HTTP status codes; validation, authentication, authorization and rate-limit failures use their corresponding 4xx status.

Health check
GET https://api.shieldplay.it/health

{ "status": "ok", "timestamp": 1780000000000 }
02

Dashboard authentication

EndpointMethodUse
/auth/registerPOSTCreate an account and organization.
/auth/loginPOSTStart a dashboard session.
/auth/logoutPOSTEnd the current dashboard session.
/auth/meGETRead the authenticated staff profile and organization context.
/auth/providersGETList enabled sign-in providers.
/auth/google/authorizeGETBegin Google sign-in when enabled.
/auth/password-reset/requestPOSTRequest a password reset.
/auth/password-reset/confirmPOSTComplete a password reset.

Dashboard authentication supports the httpOnly ac_session cookie. Staff clients may also send the corresponding JWT as Authorization: Bearer <token>. Never embed either token in a public website.

03

Agent authentication

Minecraft agents authenticate with a server-specific key, not a staff session. Generate or rotate the key from the server management flow, store it only in the server config.yml and send it in the x-api-key header.

Agent request headers
x-api-key: YOUR_SERVER_SPECIFIC_KEY
content-type: application/json
04

Agent event ingestion

Minimal violation body
POST https://api.shieldplay.it/api/v1/events/violation

{
  "playerUuid": "00000000-0000-0000-0000-000000000000",
  "playerName": "ExamplePlayer",
  "checkName": "XRayCheck",
  "category": "movement",
  "severity": "MEDIUM",
  "points": 1,
  "metrics": { "review_only": true, "evidence_family": "xray_pattern" }
}
EndpointMethodPayload purpose
/events/heartbeatPOSTUpdate agent version, server runtime health and connection state.
/events/players/snapshotPOSTSubmit a bounded live player snapshot; up to 500 players per request.
/events/player/joinPOSTRecord a player join.
/events/player/leavePOSTRecord a player leave.
/events/violationPOSTSubmit a check name, category, severity, points and structured metrics.
/events/staff-accessGETFetch staff UUIDs, per-check exemptions, GUI language and X-Ray material override.

The agent API accepts only combat, movement, interaction and network categories. A review_only metric explicitly prevents a submitted signal from qualifying as automatic punishment evidence.

05

Owner and staff management endpoints

Endpoint familyCapabilities
/servers and /servers/:id/rotate-keyCreate, list and maintain server records; rotate a compromised connection key.
/staff-accessRead Minecraft staff access by server.
/staff-access/servers/:idOwner/Admin roster update.
/staff-access/servers/:id/gui-languageOwner-only Italian/English agent GUI setting.
/staff-access/servers/:id/check-exemptionsOwner-only exact per-check staff exemptions.
/staff-access/servers/:id/xray-rare-oresOwner-only monitored X-Ray material override.
/checks, /players, /live-players, /violations, /incidents, /punishmentsReview and operations data exposed in the dashboard.
06

Notifications API

Use /webhooks to create, edit, delete and test organization outbound webhooks. Subscribing a Discord URL to xray.flagged delivers a native, mention-safe X-Ray review embed. Use /discord/channels for the separate managed Discord channel integration.

Outbound delivery is asynchronous. It never blocks a stored violation, and X-Ray Discord cooldowns suppress duplicate messages per webhook during the configured window.

07

Errors, limits and safe retries

Validate input before retrying a 400 response. Refresh staff credentials after a 401, verify organization ownership or staff role after a 403, and treat 404 as an unavailable or out-of-tenant resource. For 429, honor the retry window and apply exponential backoff with jitter. Agent requests use dedicated quotas; avoid tight loops, keep heartbeat intervals reasonable and preserve offline events for controlled replay.

08

Billing and Stripe webhooks

Dashboard billing uses /billing endpoints. The Stripe webhook is an internal server-side endpoint and must not be called by agents or browsers. Payment keys and webhook signing secrets belong only in production server environment variables.

Ready to connect your server?

Download the Paper agent and follow the guided installation.

Go to download