πŸ’š

Health Check

Is the API running? Hit one of these.

Environment Local
Auth Not logged in
SignalR Disconnected
Response will appear here.
πŸ“‘

SignalR (Video Hub)

Connect to the real-time Video hub. You’ll see events when videos are uploaded, location groups updated, or videos deleted. Login required.

Hub URL: /hubs/videos. Connect with your current token, then upload or delete a video in the Videos section to see events here.

Disconnected
β€”
🧭

Infra trace (SignalR Β· Redis Β· Service Bus)

Hub events in a sortable log. Development API only: inspect live-stream Redis keys and recent Service Bus publishes from this app (see Redis / Service Bus tabs).

Uses the same hub connection as Realtime. Connect once (either tab), then delete or upload a video to see VideoDeleted vs other events.

Disconnected
Time Kind Event / line Summary Payload

Last health summary

Run Refresh health on Redis or Service Bus tab.
πŸ“Ή

Live Stream Testing

Host and audience tokens, go-live, RTC preview, event-linked streams, request live, and report testing.

Normal user β€” What happens with Live & Report? (tap to collapse)

Without Report: Host Go Live β†’ followers notify. Request live β†’ receiver gets SignalR RequestLive (+ bell). Receiver Start = accept β†’ requesters get β€œis now live”.

Report (live): 1 report β†’ stream auto-stops for moderation, then admin can Approve or Reject.

Admin is not in normal go-live β€” only after reports (see Admin tab).

Login required. Flow: Event (optional) β†’ Host token β†’ Start β†’ Join/End. Two accounts for request live: target must Connect hub (Realtime tab) for RequestLive.

Active live streams

All currently live sessions from GET /api/videos/my-videos/grouped-by-location. Connect Realtime β†’ SignalR for instant viewer join/leave updates.

0 active 0 you joined SignalR: β€”
Log in and click Refresh list to load active streams.
Live activity log (join / leave / SignalR)
No events yet.
Dashboard actions appear here.

Follow & go-live requests

Two users required: log in as User A here and paste User B’s Guid below β†’ Follow. When B starts a live stream (other session), A should receive a follower notification (if Firebase + devices are set up). Request go live β†’ POST /api/livestreams/requests (201). Target gets SignalR RequestLive if hub connected (+ in-app bell). Accept = POST /start (no separate accept API). Requesters get FCM when target goes live.

Sent as JSON source on go-live request.
(Pending requests JSON appears here.)
Follow / request responses appear here.
Response will appear here.

1) Token

Response will appear here.

2) Start stream

Response will appear here.

2.5) RTC publish/playback (Laptop cam)

Response will appear here.

3) Join / End

Response will appear here.

3b) Report live stream (viewer)

Join as viewer (another account), paste Live stream ID above (ls_…). Reports via unified POST /api/videos/{id}/report (same reasons as videos). 1st distinct report: reporter-only banner; 2nd distinct report (default threshold): stream auto-stops for moderation.

Report response appears here.

4) Feed check

(Grouped feed result will appear here.)
Response will appear here.
Response will appear here.
πŸ“‘

Sentry Test

Trigger a test exception to verify Sentry is capturing errors.

This calls GET /api/SentryTest/throw which throws an exception. You should see a 500 response here and the error in your Sentry dashboard.

Response will appear here.

Apple IAP config diagnostics (Admin only). Calls GET /api/Credits/debug/apple-config.

Response will appear here.
πŸ“„

Day-wise Logs

List backend rolling logs, view latest lines, and download by day.

Reads all files from backend Logs folder. View opens full file content and download saves full file.

(Click "Load logs" to fetch day-wise files.)
(Select a log file to view.)
Response will appear here.
πŸ”

Welcome

Sign in to access the tester dashboard.

New here?

Step 1 sends OTP to email. Enter it in Step 2, then set password in Step 3.

Step 1
Step 2
Step 3
Already have an account?
Step 1
Step 2
Step 3
Remembered your password?
Google

Or paste a Google ID token:

Apple

Paste Firebase ID token after Apple sign-in via Firebase Auth.

Firebase

Paste a Firebase ID token from your app (e.g. user.getIdToken()).

Prefer email/password?
πŸ“š

Docs

Module-wise documentation viewer (Markdown).

Select a module and document to view it here.
πŸ‘€

Profile

Get or update your profile: name, email (read-only), gender, dashcam type, profile picture. Login required.



πŸ”’

Change password

Set a new password (requires current password). Login required.

🎬

Videos

Test video upload modes: Direct-to-Azure (recommended) and Legacy API modes. Login required.

Uses Google Places – type to see top 10 suggestions, then click to select.
You can also paste lat/long and click β€œReverse geocode” to fill location.
Recommended: use Direct-to-Azure upload. Legacy modes are kept for backward compatibility testing.

Chunked upload: use Direct-to-Azure (recommended) or Legacy API-proxied chunks (older POC). Thumbnail is optional on complete for these chunked flows.


Load my videos = everyone's videos. My Feed = only your videos (with views, shares, average rating). Use Play (MP4) to play immediately; Play (HLS) appears after background encoding (refresh after 1–2 min). Validation uses 1/2/5 tiers, and in rating-batch mode you send 4 previous IDs while current URL video is the 5th.

Current tile video ID in URL is treated as 5th video for /validate batch settle to 30.
After preset, click "Validate video" on any tile in My Feed / Unrated list.
Progress: β€”/5 | Lifetime ratings: β€” | Credit balance: β€”

Home map search

Calls GET /api/map/search?query=.... It returns both metadata search matches and Google location-based matches, including isGoogleLocationResult and fallback lat/lng when no nearby video is found.

(Map search results will appear here.)

ML manual bearer token (optional)

If provided, this token is used for GET /api/videos/nearby and POST /api/webhooks/video-analysis. If empty, UI uses your login token.

Nearby analysis lookup

Calls GET /api/videos/nearby with latitude, longitude, timestamp, radius and time_range to verify ML analysis records.

(Nearby analysis results will appear here.)

AI/ML callback webhook tester

Calls POST /api/webhooks/video-analysis with required Authorization: Bearer and X-Job-ID header.

⭐

Rate Testing

Rate-focused testing for milestone progress, owner visibility, and full validation payloads.

Use this tab to test rating flow quickly without scrolling the full Videos section.

Progress: β€”/5 | Pending for milestone: β€” | Lifetime ratings: β€” | Credit balance: β€”

Selecting a candidate auto-fills Video ID.
(Candidate list with owner details will appear here.)
Response will appear here.
βœ…

Valid Videos Rate

Only valid videos (not expired, not deleted) that you can rate. Rate directly from tile and verify confidence score update.

This uses GET /api/videos/videos-left-to-rate and shows confidence score, average rating, and per-user rating entries for each tile.

Response will appear here.
πŸ””

Notifications (v1)

Register device token, list notifications, unread count, mark read, and send admin test push.

1) Register Device

Calls POST /api/v1/devices. Login required.


2) List Notifications

Calls GET /api/v1/notifications. Use filters as needed.

(Notifications list will appear here.)

3) Mark as Read


4) Test Push (Admin)

Calls POST /api/v1/notifications/test-push. Admin JWT required.


5) Admin Simulation Helpers

Admin-only helper actions to quickly test the 2 enabled admin auto-notification flows.


6) Request Live β€” test bench (all results on this page)

Single window: log in as target β†’ Use my user ID β†’ Connect hub β†’ Run full test. Two windows: target connects hub in window A; sender uses target Guid in window B.

Hub: β€” Presence: β€” RequestLive: waiting

Logged-in user: β€”

Ready β€” follow steps above or click Run full test.
(Presence and send responses appear here.)
(Connect hub as the target user; events show here when delivery works.)
🧠

AI/ML Reprocess

Select videos and submit to AI/ML through backend so ML job id is persisted on video.

Loads your videos from backend and calls backend endpoint POST /api/videos/{id}/ml/submit for selected videos.

(Load videos to start selection.)
πŸ’³

Credits & Buy Credits

View balance, packages, and create a Stripe payment intent to buy credits. Login required for overview and purchase.


Select a package and create a payment intent. Use the returned clientSecret with Stripe.js (or test with Stripe test card 4242 4242 4242 4242). After payment, webhook adds credits.

Select Option
Click "Get packages" to load bundles.
If a saved card is selected, payment will use it without entering card details again.

Verify IAP purchase (Apple / Google)

Login required. This calls POST /api/credits/verify-purchase.


Transaction history (last 30 days).

πŸ› οΈ

Admin – Credits

For Admin users only. Manage base price per credit and credit packages.

You must be logged in as an Admin (UserRole.Admin) for these calls to succeed.

Base price per credit


Packages

(Packages will appear here.)

Create or update a package below, then click the corresponding button.

Choose a package to load its Id and fields for update. Leave empty to create a new package.

Admin β€” What can report review do? (tap to expand)

Video: Allow = content OK. Remove = take down (+ optional block user).

Live: 1 report auto-ends stream β†’ admin reviews. Approve = short playback (~48h). Reject = remove. Force stop = end while still live.

List: GET /api/admin/reported-content (video + live).

Reported content (video + live)

Click any tile β†’ POST /api/admin/video-reports/by-ids (uses session/video GUID; report id optional for live).

All: β€” | Pending: β€” | Allowed: β€” | Removed: β€”

(Reported video + live items appear here.)
Click a reported content tile to load full detail.
πŸ‘₯

Admin - Users

For Admin users only. List users sorted by active first and newest created.

Calls /api/admin/users with paging and includeRelated options.

(Users will appear here.)
πŸ”„

Refresh Token

Get new tokens (uses saved refresh token).

πŸ‘‹

Logout

Sign out (uses current token).

🌎

Ticketmaster Events World Map

Load normalized events from /api/events/search, plot by lat/long, view details, and inspect venue polygon + center point.

Live event map

All available events first, then filter by real data

The map auto-loads available events, keeps the view smooth, and shows clean event points for every lat/long.

0events
0mapped
0venues
Smooth event map Auto-loading all events
Showing All available states

Event cards

No events loaded yet.

Raw response

Response will appear here.