diff --git a/CODEOWNERS b/CODEOWNERS index ab59cd4a..6e91196b 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -10,6 +10,7 @@ /topics/snuba-metrics.yaml @getsentry/owners-snuba /topics/snuba-generic-metrics.yaml @getsentry/owners-snuba /topics/generic-events.yaml @getsentry/owners-snuba @getsentry/issues +/topics/ingest-replay-events.yaml @getsentry/owners-snuba @getsentry/replay # Internal Snuba topics /topics/snuba-queries.yaml @getsentry/owners-snuba diff --git a/examples/ingest-replay-events/1/replayevent.json b/examples/ingest-replay-events/1/replayevent.json new file mode 100644 index 00000000..a9cae475 --- /dev/null +++ b/examples/ingest-replay-events/1/replayevent.json @@ -0,0 +1,33 @@ +{ + "type": "replay_event", + "start_time": 1687999999.0, + "replay_id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", + "project_id": 1, + "retention_days": 90, + "payload": [ + 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, + 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, + 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, + 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, + 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, + 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, + 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, + 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, + 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, + 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, + 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, + 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, + 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, + 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, + 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, + 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, + 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, + 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, + 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, + 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, + 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, + 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, + 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, + 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5 + ] +} diff --git a/schemas/ingest-replay-events.v1.schema.json b/schemas/ingest-replay-events.v1.schema.json new file mode 100644 index 00000000..9a54dc0e --- /dev/null +++ b/schemas/ingest-replay-events.v1.schema.json @@ -0,0 +1,42 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$ref": "#/definitions/ReplayEvent", + "title": "replay_event", + "definitions": { + "ReplayEvent": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": ["replay_event"] + }, + "start_time": { + "type": "number" + }, + "replay_id": { + "type": "string" + }, + "project_id": { + "type": "integer" + }, + "retention_days": { + "type": "integer" + }, + "payload": { + "type": "array", + "items": { + "type": "integer" + } + } + }, + "required": [ + "payload", + "project_id", + "replay_id", + "retention_days", + "start_time", + "type" + ] + } + } +} diff --git a/topics/ingest-replay-events.yaml b/topics/ingest-replay-events.yaml new file mode 100644 index 00000000..79fc1faf --- /dev/null +++ b/topics/ingest-replay-events.yaml @@ -0,0 +1,15 @@ +topic: ingest-replay-events +pipeline: replays +description: Replay events data for Snuba +services: + producers: + - getsentry/sentry + consumers: + - getsentry/snuba +schemas: + - version: 1 + compatibility_mode: none + type: json + resource: ingest-replay-events.v1.schema.json + examples: + - ingest-replay-events/1/