Skip to main content

Tech Overview

A one-pager on what sits behind the Partner API, so you know what to expect from it and where failures can come from.

What G2 Sentry does

Connects requesters (partners and end users) with verified security professionals (Guardians) for on-demand physical security work — open houses, event duty, overnight watch, etc. The platform handles onboarding, identity verification, dispatch, live tracking, and post-job feedback.

What you talk to

As a partner, you only touch two surfaces:

  • Partner API — a REST service for job CRUD plus login/refresh.
  • Callback webhooks — HMAC-signed POSTs delivered to a URL on your server when a job changes state.

Everything else (Guardian app, dispatch logic, identity checks, SMS masking, the portal) is internal to G2 Sentry and not part of your integration.

Data flow

Solid arrows are request/response; dashed is asynchronous. Nothing you send to the Partner API reaches a Guardian directly — G2 Sentry's dispatch picks the Guardian and routes the job.

What's guaranteed and what's not

PropertyBehaviour
API availability99.9% target on the production environment. Demo is best-effort.
Token lifetimeAccess tokens 15 min, refresh tokens 7 days.
Callback deliveryAt-least-once with exponential backoff. Your handler must be idempotent.
Callback orderingNot guaranteed. Always treat jobStatus on the payload as the source of truth, not the sequence of events.
Cut-off windowA partner can cancel a job up to 2h before its scheduled start. A Guardian can withdraw up to 2h before start. Past that, state transitions go through G2 Sentry operations.
Rate limits60 requests / minute per partner key. Contact us if you need more.

What we run (for context, not action)

Nothing on this list is part of the contract you integrate against — it's background so you know what's responding to your requests.

LayerTech
Partner APIJava 21 + Spring Boot WebFlux (reactive, non-blocking)
DatabasePostgreSQL on AWS Aurora
ComputeAWS ECS/Fargate behind an Application Load Balancer
Secrets / configAWS Parameter Store
Push to Guardian appFirebase Cloud Messaging
SMS + masked phone numbersSinch
Identity verificationPersona
MonitoringAWS CloudWatch (backend), Sentry (mobile)

Where bugs usually come from

If something isn't working end-to-end, 90% of the time it's one of:

  1. Callback URL not reachable from the public internet — we can't deliver webhooks to localhost or an internal-only hostname. Use an ngrok-style tunnel during development.
  2. Signature mismatch — you're computing HMAC over the parsed JSON instead of the raw request body, or using the wrong secret. See Callbacks.
  3. Expired access token — it's been 15 minutes and you haven't refreshed. 401 responses are your signal to refresh.
  4. Past the cut-off — you're trying to cancel less than 2h before the scheduled start. Responses say so explicitly.

If you've ruled those out, email mikeg@g2sentry.com with your jobId and we'll look at the logs.