Allmine API
Live Stream

Live Stream reports — backend

Yayın şikayetleri backend mimarisi

Live Stream Reports - Backend (Minimal)

Kapsam

Bu modül, canli yayinlar için ayri bir sikayet akisi sunar.

  • Controller: live-stream-reports
  • Base path: /api/v1/live-stream-reports
  • Ayrik modul: src/live-stream-reports
  • live-stream controller'a ekleme yok

Endpointler

User:

  • POST /api/v1/live-stream-reports/:streamId
  • GET /api/v1/live-stream-reports/types
  • GET /api/v1/live-stream-reports/my-reports

Admin:

  • GET /api/v1/live-stream-reports/admin
  • GET /api/v1/live-stream-reports/admin/stats
  • GET /api/v1/live-stream-reports/admin/:id
  • PATCH /api/v1/live-stream-reports/admin/:id
  • PATCH /api/v1/live-stream-reports/admin/:id/archive

Enumlar

LiveStreamReportType:

  • harassment_or_bullying
  • hate_speech
  • sexual_content_or_nudity
  • violence_or_self_harm
  • spam_or_scam
  • copyright_or_intellectual_property
  • other

LiveStreamReportStatus:

  • pending
  • under_review
  • resolved
  • rejected

Is Kurallari

  • Rapor sadece ACTIVE, ENDED, SCHEDULED yayinlar için acilir.
  • PREPARING, EXPIRED, CANCELLED_* durumlari için 400.
  • Stream yoksa 404.
  • Yayin sahibi kendi yayinini raporlayamaz (400).
  • type=other ise description zorunlu.
  • Ayni user + stream için aktif (pending veya under_review) tek kayit.
  • Arsivlenen kayitlar listelerde gorunmez (soft delete).

Veri Modeli

Collection: live_stream_reports

Temel alanlar:

  • reportedBy
  • liveStream
  • streamCreator
  • streamStatusAtReport
  • type, description
  • status, reviewedBy, adminNotes, resolvedAt
  • isArchived
  • metadata.userAgent, metadata.ipAddress, metadata.platform
  • deletedAt, deletedBy (soft delete)
  • createdAt, updatedAt

Indexler:

  • Partial unique: { reportedBy: 1, liveStream: 1 }
    • Kosul: status in [pending, under_review], deletedAt: null, isArchived: false
  • Diger indexler: status, type, liveStream, createdAt(-1), deletedAt

Katman Yapisi (Kod)

  • Controller: src/live-stream-reports/controllers/live-stream-reports.controller.ts
  • UseCase: src/live-stream-reports/use-cases/*
  • Repository: src/live-stream-reports/repositories/live-stream-report.repository.ts
  • Mapper: src/live-stream-reports/mappers/live-stream-report.mapper.ts
  • Schema: src/live-stream-reports/schemas/live-stream-report.schema.ts
  • Module: src/live-stream-reports/modules/live-stream-reports.module.ts

Controller sadece UseCase cagirir; repository dogrudan controller'dan kullanılmaz.

Ornek Sozlesmeler

Create request:

{
  "type": "hate_speech",
  "description": "Yayinda hedef gösterme var."
}

Update request (admin):

{
  "status": "resolved",
  "adminNotes": "Ihlal dogrulandi."
}

Types response (tr/en):

[
  { "key": "hate_speech", "label": "Nefret soylemi", "requiresCustomText": false },
  { "key": "other", "label": "Diger", "requiresCustomText": true }
]

Not: API yanitlari BaseResponseDto<T> sarmaliyla gelir; asil payload data alanindadir.

On this page