Tripline
Docs navigation

Docs

Protocol surface

What Tripline accepts on the wire, how a DSN authenticates, and what SDKs are told to stop sending.

Tripline speaks the Sentry ingest protocol. The DSN shape is the one every SDK already understands:

https://<public key>@ingest.tripline.id/<project id>

Endpoints

Endpoint What
POST /api/{project}/envelope/ Envelopes. event items are stored; session, client_report and check_in are accepted and dropped until their phases; transaction, profile, replay and attachment are refused through X-Sentry-Rate-Limits, so SDKs stop sending them
POST /api/{project}/store/ The legacy single-event endpoint
GET /health Pings the database
GET /config.json Issuer and client id for the console
/v1/* The console’s JSON API, Latchkey bearer
POST /internal/maintenance Creates upcoming day partitions and drops those past retention. Cloud Scheduler, daily

Authentication

The DSN’s public key comes from X-Sentry-Auth, ?sentry_key=, or the envelope header’s dsn, and it must belong to the project in the path. Bodies may be gzip or deflate; the limits are 20 MB per envelope and 1 MB per event.

The public key is a Latchkey publishable key (lk_pk_live_…) minted on the project’s tenant, tagged project:<id>. Latchkey owns the key: mint, revoke, expiry, last-used and the tenant’s key ledger are in the Latchkey console. Tripline mirrors key → project so ingest resolves locally, then asks Latchkey’s keys/verify and caches the verdict for ten minutes, refusals for one. Latchkey not answering is not a refusal: ingest stands on the local index, because a dropped error costs more than ten minutes of revocation latency.

Posting an envelope by hand

printf '{}\n{"type":"event"}\n{"message":"hello"}\n' \
  | curl -s -X POST "https://ingest.tripline.id/api/<project>/envelope/" \
      -H "X-Sentry-Auth: Sentry sentry_version=7, sentry_key=<public key>" \
      --data-binary @-
# {"id":"..."}

Retention

Error events are kept for 90 days, transactions and vitals for 14. Both are day-partitioned; the daily maintenance job creates upcoming partitions and drops the ones past retention.