Add event proposal/approval workflow #6

Closed
opened 2026-04-26 20:22:19 +00:00 by padreug · 0 comments
Owner

Summary

Allow non-admin users to propose events that require admin approval before going live and being published to Nostr.

Scope

  • Add status field to Event model: proposed | approved | rejected (default: approved for admin-created events)
  • New endpoint: POST /events/api/v1/events/propose — accepts invoice_key (not admin-only), creates event with status=proposed
  • New endpoint: PUT /events/api/v1/events/{id}/approve — admin-only, sets status=approved, triggers NIP-52 publish (once implemented)
  • New endpoint: PUT /events/api/v1/events/{id}/reject — admin-only, sets status=rejected
  • GET /events/api/v1/events/public — only returns status=approved events
  • New endpoint: GET /events/api/v1/events/pending — admin-only, lists proposed events for review
  • DB migration to add status column with default approved for backward compatibility

Notes

This is independent of the Nostr integration and can be implemented first. Once NIP-52 publishing is ready, the approval step triggers the Nostr publish.

## Summary Allow non-admin users to propose events that require admin approval before going live and being published to Nostr. ## Scope - Add `status` field to Event model: `proposed` | `approved` | `rejected` (default: `approved` for admin-created events) - New endpoint: `POST /events/api/v1/events/propose` — accepts invoice_key (not admin-only), creates event with `status=proposed` - New endpoint: `PUT /events/api/v1/events/{id}/approve` — admin-only, sets `status=approved`, triggers NIP-52 publish (once implemented) - New endpoint: `PUT /events/api/v1/events/{id}/reject` — admin-only, sets `status=rejected` - `GET /events/api/v1/events/public` — only returns `status=approved` events - New endpoint: `GET /events/api/v1/events/pending` — admin-only, lists proposed events for review - DB migration to add `status` column with default `approved` for backward compatibility ## Notes This is independent of the Nostr integration and can be implemented first. Once NIP-52 publishing is ready, the approval step triggers the Nostr publish.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
aiolabs/events#6
No description provided.