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.