diff --git a/app/(dashboard)/bookings/page.tsx b/app/(dashboard)/bookings/page.tsx
index 2d18202..6844ddd 100644
--- a/app/(dashboard)/bookings/page.tsx
+++ b/app/(dashboard)/bookings/page.tsx
@@ -136,11 +136,7 @@ const BookingsPage = () => {
if (!isCancelledLike || !reason) return '—'
- return (
-
- {reason}
-
- )
+ return {reason}
},
checkedInAt: (_row, cellValue) => formatPersianDate(cellValue),
createdAt: (_row, cellValue) => formatPersianDate(cellValue),
diff --git a/features/events/detail/admin-event-detail/AdminEventBookingsTab.tsx b/features/events/detail/admin-event-detail/AdminEventBookingsTab.tsx
index 732191f..3ecb3e5 100644
--- a/features/events/detail/admin-event-detail/AdminEventBookingsTab.tsx
+++ b/features/events/detail/admin-event-detail/AdminEventBookingsTab.tsx
@@ -120,11 +120,7 @@ const AdminEventBookingsTab = ({ eventId, eventStatus, onCheckedIn }: AdminEvent
if (!isCancelledLike || !reason) return '—'
- return (
-
- {reason}
-
- )
+ return {reason}
},
checkedInAt: (_row, cellValue) => formatPersianDate(cellValue),
createdAt: (_row, cellValue) => formatPersianDate(cellValue),
diff --git a/openapi.json b/openapi.json
index 2313a25..7f1fa7c 100644
--- a/openapi.json
+++ b/openapi.json
@@ -50,7 +50,9 @@
}
},
"summary": "Request SMS OTP",
- "tags": ["Auth"]
+ "tags": [
+ "Auth"
+ ]
}
},
"/api/v1/auth/verify-otp": {
@@ -112,7 +114,9 @@
}
},
"summary": "Verify OTP",
- "tags": ["Auth"]
+ "tags": [
+ "Auth"
+ ]
}
},
"/api/v1/auth/refresh": {
@@ -153,7 +157,9 @@
}
},
"summary": "Refresh JWT tokens",
- "tags": ["Auth"]
+ "tags": [
+ "Auth"
+ ]
}
},
"/api/v1/auth/logout": {
@@ -219,7 +225,9 @@
}
],
"summary": "Logout current session",
- "tags": ["Auth"]
+ "tags": [
+ "Auth"
+ ]
}
},
"/api/v1/auth/logout-all": {
@@ -285,7 +293,9 @@
}
],
"summary": "Logout all sessions",
- "tags": ["Auth"]
+ "tags": [
+ "Auth"
+ ]
}
},
"/api/v1/auth/sessions": {
@@ -354,7 +364,9 @@
}
],
"summary": "List active sessions",
- "tags": ["Auth"]
+ "tags": [
+ "Auth"
+ ]
}
},
"/api/v1/auth/sessions/{id}": {
@@ -442,7 +454,9 @@
}
],
"summary": "Revoke a session",
- "tags": ["Auth"]
+ "tags": [
+ "Auth"
+ ]
}
},
"/api/v1/internal/sentry-webhook": {
@@ -478,7 +492,9 @@
}
},
"summary": "Sentry → Telegram alert relay",
- "tags": ["Ops"]
+ "tags": [
+ "Ops"
+ ]
}
},
"/api/v1/internal/jibit-transaction-webhook": {
@@ -523,7 +539,9 @@
}
},
"summary": "Jibit account-transaction → Telegram relay",
- "tags": ["Ops"]
+ "tags": [
+ "Ops"
+ ]
}
},
"/api/v1/users/public/{id}": {
@@ -557,7 +575,9 @@
}
],
"summary": "Get a public user profile; host stats are included only for verified hosts",
- "tags": ["Users"]
+ "tags": [
+ "Users"
+ ]
}
},
"/api/v1/users/public/{id}/events": {
@@ -625,7 +645,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
},
{
@@ -635,7 +658,10 @@
"schema": {
"default": "upcoming",
"type": "string",
- "enum": ["upcoming", "held"]
+ "enum": [
+ "upcoming",
+ "held"
+ ]
}
}
],
@@ -659,7 +685,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -671,7 +700,9 @@
}
],
"summary": "List discoverable events for a verified public host",
- "tags": ["Users"]
+ "tags": [
+ "Users"
+ ]
}
},
"/api/v1/users/public/{id}/viewer-state": {
@@ -705,7 +736,9 @@
}
],
"summary": "Get private organizer state for the current viewer",
- "tags": ["Users"]
+ "tags": [
+ "Users"
+ ]
}
},
"/api/v1/users/me": {
@@ -771,7 +804,9 @@
}
],
"summary": "Get current user profile",
- "tags": ["Users"]
+ "tags": [
+ "Users"
+ ]
},
"patch": {
"description": "Updates editable profile fields for the authenticated user only.",
@@ -846,7 +881,9 @@
}
],
"summary": "Update current user profile",
- "tags": ["Users"]
+ "tags": [
+ "Users"
+ ]
}
},
"/api/v1/users/me/profile-summary": {
@@ -922,7 +959,9 @@
}
],
"summary": "Get current user profile hub summary",
- "tags": ["Users"]
+ "tags": [
+ "Users"
+ ]
}
},
"/api/v1/users/{id}/attendee-contact-links": {
@@ -960,7 +999,9 @@
}
],
"summary": "Get attendee-only contact links for an organizer",
- "tags": ["Users"]
+ "tags": [
+ "Users"
+ ]
}
},
"/api/v1/users/me/complete-profile": {
@@ -1047,7 +1088,9 @@
}
],
"summary": "Complete user profile after OTP verification",
- "tags": ["Users"]
+ "tags": [
+ "Users"
+ ]
}
},
"/api/v1/admin/users": {
@@ -1116,7 +1159,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
},
{
@@ -1240,7 +1286,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -1312,7 +1361,9 @@
}
],
"summary": "Paginated admin users list",
- "tags": ["Admin - Users"]
+ "tags": [
+ "Admin - Users"
+ ]
}
},
"/api/v1/admin/users/{id}/mobile": {
@@ -1418,7 +1469,9 @@
}
],
"summary": "Change a user's login mobile (admin)",
- "tags": ["Admin - Users"]
+ "tags": [
+ "Admin - Users"
+ ]
}
},
"/api/v1/admin/users/{id}": {
@@ -1525,7 +1578,9 @@
}
],
"summary": "Edit a user (admin)",
- "tags": ["Admin - Users"]
+ "tags": [
+ "Admin - Users"
+ ]
},
"get": {
"description": "Staff-only: full profile, identity status, wallet balance, and a summary count for every category (hosted events, bookings, payments, reviews, follows, reports, blocks). See the dedicated sub-endpoints (hosted-events, bookings, payments, reviews, follows, reports, blocks) for the paginated lists themselves.",
@@ -1618,7 +1673,9 @@
}
],
"summary": "Full user detail for admin",
- "tags": ["Admin - User Detail"]
+ "tags": [
+ "Admin - User Detail"
+ ]
}
},
"/api/v1/users/me/contact-links": {
@@ -1646,7 +1703,9 @@
}
],
"summary": "Current user's contact links (unpaginated)",
- "tags": ["users"]
+ "tags": [
+ "users"
+ ]
},
"post": {
"operationId": "UserContactLinksController_create",
@@ -1679,7 +1738,9 @@
}
],
"summary": "Add a contact link for the current user",
- "tags": ["users"]
+ "tags": [
+ "users"
+ ]
}
},
"/api/v1/users/me/contact-links/{id}": {
@@ -1723,7 +1784,9 @@
}
],
"summary": "Update a contact link owned by the current user",
- "tags": ["users"]
+ "tags": [
+ "users"
+ ]
},
"delete": {
"operationId": "UserContactLinksController_remove",
@@ -1755,7 +1818,9 @@
}
],
"summary": "Remove a contact link owned by the current user",
- "tags": ["users"]
+ "tags": [
+ "users"
+ ]
}
},
"/api/v1/identity/rejection-reasons": {
@@ -1799,7 +1864,9 @@
}
},
"summary": "List active identity rejection reasons",
- "tags": ["Identity"]
+ "tags": [
+ "Identity"
+ ]
}
},
"/api/v1/identity/verifications/request-otp": {
@@ -1895,7 +1962,9 @@
}
],
"summary": "Request OTP to confirm host cooperation contract",
- "tags": ["Identity"]
+ "tags": [
+ "Identity"
+ ]
}
},
"/api/v1/identity/verifications/confirm-otp": {
@@ -1981,7 +2050,9 @@
}
],
"summary": "Confirm host-contract OTP and submit identity verification",
- "tags": ["Identity"]
+ "tags": [
+ "Identity"
+ ]
}
},
"/api/v1/identity/verifications/me": {
@@ -2050,7 +2121,9 @@
}
],
"summary": "List my identity verification submissions",
- "tags": ["Identity"]
+ "tags": [
+ "Identity"
+ ]
}
},
"/api/v1/admin/identity/verifications": {
@@ -2112,7 +2185,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
},
{
@@ -2156,7 +2232,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -2228,7 +2307,9 @@
}
],
"summary": "List identity verification review queue",
- "tags": ["Admin - Identity"]
+ "tags": [
+ "Admin - Identity"
+ ]
}
},
"/api/v1/admin/identity/verifications/{id}/jibit-inquiry": {
@@ -2326,7 +2407,9 @@
}
],
"summary": "Run Jibit national-code/mobile matching inquiry",
- "tags": ["Admin - Identity"]
+ "tags": [
+ "Admin - Identity"
+ ]
}
},
"/api/v1/admin/identity/verifications/{id}/approve": {
@@ -2424,7 +2507,9 @@
}
],
"summary": "Approve identity verification",
- "tags": ["Admin - Identity"]
+ "tags": [
+ "Admin - Identity"
+ ]
}
},
"/api/v1/admin/identity/verifications/{id}/reject": {
@@ -2533,7 +2618,9 @@
}
],
"summary": "Reject identity verification",
- "tags": ["Admin - Identity"]
+ "tags": [
+ "Admin - Identity"
+ ]
}
},
"/api/v1/notifications/me": {
@@ -2595,7 +2682,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
},
{
@@ -2639,7 +2729,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -2691,7 +2784,9 @@
}
],
"summary": "List my in-app notifications",
- "tags": ["Notifications"]
+ "tags": [
+ "Notifications"
+ ]
}
},
"/api/v1/notifications/me/unread-count": {
@@ -2757,7 +2852,9 @@
}
],
"summary": "Get unread in-app notification count",
- "tags": ["Notifications"]
+ "tags": [
+ "Notifications"
+ ]
}
},
"/api/v1/notifications/me/read-all": {
@@ -2823,7 +2920,9 @@
}
],
"summary": "Mark all my in-app notifications as read",
- "tags": ["Notifications"]
+ "tags": [
+ "Notifications"
+ ]
}
},
"/api/v1/notifications/{id}/read": {
@@ -2910,7 +3009,9 @@
}
],
"summary": "Mark an in-app notification as read",
- "tags": ["Notifications"]
+ "tags": [
+ "Notifications"
+ ]
}
},
"/api/v1/notifications/push/vapid-public-key": {
@@ -2976,7 +3077,9 @@
}
],
"summary": "Get VAPID public key for Web Push subscription",
- "tags": ["Notifications"]
+ "tags": [
+ "Notifications"
+ ]
}
},
"/api/v1/notifications/push/deliveries/receipt": {
@@ -3062,7 +3165,9 @@
}
],
"summary": "Record a browser Web Push receipt event",
- "tags": ["Notifications"]
+ "tags": [
+ "Notifications"
+ ]
}
},
"/api/v1/notifications/push/subscribe": {
@@ -3151,7 +3256,9 @@
}
],
"summary": "Register a browser Web Push subscription",
- "tags": ["Notifications"]
+ "tags": [
+ "Notifications"
+ ]
},
"delete": {
"description": "Called on logout to stop push delivery to all user devices.",
@@ -3218,7 +3325,9 @@
}
],
"summary": "Remove all Web Push subscriptions for current user",
- "tags": ["Notifications"]
+ "tags": [
+ "Notifications"
+ ]
}
},
"/api/v1/notifications/push/subscribe/{id}": {
@@ -3306,7 +3415,9 @@
}
],
"summary": "Remove a browser Web Push subscription",
- "tags": ["Notifications"]
+ "tags": [
+ "Notifications"
+ ]
}
},
"/api/v1/admin/sms-messages": {
@@ -3368,7 +3479,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
},
{
@@ -3422,7 +3536,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -3494,7 +3611,9 @@
}
],
"summary": "List SMS delivery records",
- "tags": ["Admin - Notifications"]
+ "tags": [
+ "Admin - Notifications"
+ ]
}
},
"/api/v1/admin/notification-rules": {
@@ -3522,7 +3641,9 @@
}
],
"summary": "List admin-managed notification rules",
- "tags": ["Admin - Notification Rules"]
+ "tags": [
+ "Admin - Notification Rules"
+ ]
}
},
"/api/v1/admin/notification-rules/{eventKey}": {
@@ -3566,7 +3687,9 @@
}
],
"summary": "Update delivery and templates for a notification event",
- "tags": ["Admin - Notification Rules"]
+ "tags": [
+ "Admin - Notification Rules"
+ ]
}
},
"/api/v1/admin/manual-notifications/request-otp": {
@@ -3652,7 +3775,9 @@
}
],
"summary": "Request OTP before sending a group SMS",
- "tags": ["Admin - Notifications"]
+ "tags": [
+ "Admin - Notifications"
+ ]
}
},
"/api/v1/admin/manual-notifications": {
@@ -3748,7 +3873,9 @@
}
],
"summary": "Send a manual notification to selected users",
- "tags": ["Admin - Notifications"]
+ "tags": [
+ "Admin - Notifications"
+ ]
}
},
"/api/v1/admin/in-app-notifications": {
@@ -3810,7 +3937,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
},
{
@@ -3874,7 +4004,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -3946,7 +4079,9 @@
}
],
"summary": "List in-app notifications",
- "tags": ["Admin - Notifications"]
+ "tags": [
+ "Admin - Notifications"
+ ]
}
},
"/api/v1/admin/push-deliveries": {
@@ -4008,7 +4143,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
},
{
@@ -4072,7 +4210,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -4144,7 +4285,9 @@
}
],
"summary": "List Web Push delivery records",
- "tags": ["Admin - Notifications"]
+ "tags": [
+ "Admin - Notifications"
+ ]
}
},
"/api/v1/event-categories": {
@@ -4167,7 +4310,9 @@
}
},
"summary": "Active event categories (flat list, unpaginated)",
- "tags": ["Event Categories"]
+ "tags": [
+ "Event Categories"
+ ]
}
},
"/api/v1/event-categories/{slug}": {
@@ -4196,7 +4341,9 @@
}
},
"summary": "Single active category by slug",
- "tags": ["Event Categories"]
+ "tags": [
+ "Event Categories"
+ ]
}
},
"/api/v1/admin/event-categories/flat": {
@@ -4224,7 +4371,9 @@
}
],
"summary": "Flat list of all categories for admin filters",
- "tags": ["Admin - Event Categories"]
+ "tags": [
+ "Admin - Event Categories"
+ ]
}
},
"/api/v1/admin/event-categories": {
@@ -4283,7 +4432,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -4307,7 +4459,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -4319,7 +4474,9 @@
}
],
"summary": "Paginated category management list",
- "tags": ["Admin - Event Categories"]
+ "tags": [
+ "Admin - Event Categories"
+ ]
},
"post": {
"operationId": "AdminEventCategoriesController_create",
@@ -4352,7 +4509,9 @@
}
],
"summary": "Create event category",
- "tags": ["Admin - Event Categories"]
+ "tags": [
+ "Admin - Event Categories"
+ ]
}
},
"/api/v1/admin/event-categories/{id}": {
@@ -4396,7 +4555,9 @@
}
],
"summary": "Update event category",
- "tags": ["Admin - Event Categories"]
+ "tags": [
+ "Admin - Event Categories"
+ ]
},
"delete": {
"operationId": "AdminEventCategoriesController_remove",
@@ -4428,7 +4589,9 @@
}
],
"summary": "Soft-delete event category",
- "tags": ["Admin - Event Categories"]
+ "tags": [
+ "Admin - Event Categories"
+ ]
}
},
"/api/v1/geography/provinces": {
@@ -4451,7 +4614,9 @@
}
},
"summary": "List all provinces (unpaginated)",
- "tags": ["Geography"]
+ "tags": [
+ "Geography"
+ ]
}
},
"/api/v1/geography/cities": {
@@ -4475,7 +4640,9 @@
}
},
"summary": "List all cities (unpaginated, flat)",
- "tags": ["Geography"]
+ "tags": [
+ "Geography"
+ ]
}
},
"/api/v1/geography/provinces/{provinceId}/cities": {
@@ -4507,7 +4674,9 @@
}
},
"summary": "List cities in a province (unpaginated)",
- "tags": ["Geography"]
+ "tags": [
+ "Geography"
+ ]
}
},
"/api/v1/geography/cities/{slug}": {
@@ -4537,7 +4706,9 @@
}
},
"summary": "Single city by slug (SEO city landing pages)",
- "tags": ["Geography"]
+ "tags": [
+ "Geography"
+ ]
}
},
"/api/v1/my-events": {
@@ -4597,7 +4768,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
},
{
@@ -4607,7 +4781,10 @@
"schema": {
"default": "guest",
"type": "string",
- "enum": ["guest", "host"]
+ "enum": [
+ "guest",
+ "host"
+ ]
}
},
{
@@ -4617,7 +4794,14 @@
"schema": {
"default": "upcoming",
"type": "string",
- "enum": ["upcoming", "held", "cancelled", "pending_review", "published", "rejected"]
+ "enum": [
+ "upcoming",
+ "held",
+ "cancelled",
+ "pending_review",
+ "published",
+ "rejected"
+ ]
}
}
],
@@ -4628,15 +4812,32 @@
"application/json": {
"schema": {
"type": "object",
- "required": ["role", "status", "canHost", "availableRoles", "items", "response"],
+ "required": [
+ "role",
+ "status",
+ "canHost",
+ "availableRoles",
+ "items",
+ "response"
+ ],
"properties": {
"role": {
"type": "string",
- "enum": ["guest", "host"]
+ "enum": [
+ "guest",
+ "host"
+ ]
},
"status": {
"type": "string",
- "enum": ["upcoming", "held", "cancelled", "pending_review", "published", "rejected"]
+ "enum": [
+ "upcoming",
+ "held",
+ "cancelled",
+ "pending_review",
+ "published",
+ "rejected"
+ ]
},
"canHost": {
"type": "boolean"
@@ -4645,7 +4846,10 @@
"type": "array",
"items": {
"type": "string",
- "enum": ["guest", "host"]
+ "enum": [
+ "guest",
+ "host"
+ ]
}
},
"items": {
@@ -4676,7 +4880,9 @@
}
],
"summary": "List the current user’s guest or hosted events by lifecycle",
- "tags": ["My Events"]
+ "tags": [
+ "My Events"
+ ]
}
},
"/api/v1/events/{eventId}/revisions": {
@@ -4720,7 +4926,9 @@
}
],
"summary": "Submit a pending revision for a published/full event (admin must re-approve before changes go live)",
- "tags": ["My Events"]
+ "tags": [
+ "My Events"
+ ]
}
},
"/api/v1/events/{eventId}/revisions/pending": {
@@ -4754,7 +4962,9 @@
}
],
"summary": "Get the current pending revision for own live event",
- "tags": ["My Events"]
+ "tags": [
+ "My Events"
+ ]
},
"delete": {
"operationId": "EventRevisionsController_withdraw",
@@ -4788,7 +4998,9 @@
}
],
"summary": "Withdraw the pending revision for own live event",
- "tags": ["My Events"]
+ "tags": [
+ "My Events"
+ ]
}
},
"/api/v1/events": {
@@ -4823,7 +5035,9 @@
}
],
"summary": "Create a draft event (verified host)",
- "tags": ["My Events"]
+ "tags": [
+ "My Events"
+ ]
},
"get": {
"operationId": "EventsController_discovery",
@@ -4884,7 +5098,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -4908,14 +5125,19 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
}
},
"summary": "Public event discovery list",
- "tags": ["Events"]
+ "tags": [
+ "Events"
+ ]
}
},
"/api/v1/events/mine": {
@@ -4978,7 +5200,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -5002,7 +5227,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -5014,7 +5242,9 @@
}
],
"summary": "Organizer's own events",
- "tags": ["My Events"]
+ "tags": [
+ "My Events"
+ ]
}
},
"/api/v1/events/{id}/for-edit": {
@@ -5049,7 +5279,9 @@
}
],
"summary": "Full event payload for edit/clone forms",
- "tags": ["My Events"]
+ "tags": [
+ "My Events"
+ ]
}
},
"/api/v1/events/{id}/owner-insights": {
@@ -5083,7 +5315,9 @@
}
],
"summary": "Get engagement insights for own event",
- "tags": ["My Events"]
+ "tags": [
+ "My Events"
+ ]
}
},
"/api/v1/events/{id}/management-bootstrap": {
@@ -5117,7 +5351,9 @@
}
],
"summary": "Get all initial data for managing an owned event",
- "tags": ["My Events"]
+ "tags": [
+ "My Events"
+ ]
}
},
"/api/v1/events/{id}/attendees": {
@@ -5184,7 +5420,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
},
{
@@ -5226,7 +5465,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -5238,7 +5480,9 @@
}
],
"summary": "Search and list registrations for own event attendance desk",
- "tags": ["My Events"]
+ "tags": [
+ "My Events"
+ ]
}
},
"/api/v1/events/{id}/reserved-capacity": {
@@ -5283,7 +5527,9 @@
}
],
"summary": "Set capacity and/or off-platform reserved seats for own event",
- "tags": ["My Events"]
+ "tags": [
+ "My Events"
+ ]
}
},
"/api/v1/events/{id}": {
@@ -5327,7 +5573,9 @@
}
],
"summary": "Update own event",
- "tags": ["My Events"]
+ "tags": [
+ "My Events"
+ ]
},
"delete": {
"operationId": "MyEventsController_softDelete",
@@ -5359,7 +5607,9 @@
}
],
"summary": "Soft-delete own event when it has no active bookings (booked_count = 0)",
- "tags": ["My Events"]
+ "tags": [
+ "My Events"
+ ]
},
"get": {
"operationId": "EventsController_findOne",
@@ -5386,7 +5636,9 @@
}
},
"summary": "Single event detail",
- "tags": ["Events"]
+ "tags": [
+ "Events"
+ ]
}
},
"/api/v1/events/{id}/publish": {
@@ -5420,7 +5672,9 @@
}
],
"summary": "Publish draft event",
- "tags": ["My Events"]
+ "tags": [
+ "My Events"
+ ]
}
},
"/api/v1/events/{id}/cancel": {
@@ -5454,7 +5708,9 @@
}
],
"summary": "Cancel published/full event",
- "tags": ["My Events"]
+ "tags": [
+ "My Events"
+ ]
}
},
"/api/v1/events/{id}/complete": {
@@ -5488,7 +5744,9 @@
}
],
"summary": "Mark event completed (creates group chat)",
- "tags": ["My Events"]
+ "tags": [
+ "My Events"
+ ]
}
},
"/api/v1/events/{id}/clone": {
@@ -5522,7 +5780,9 @@
}
],
"summary": "Clone event to new draft",
- "tags": ["My Events"]
+ "tags": [
+ "My Events"
+ ]
}
},
"/api/v1/events/bookmarks": {
@@ -5581,7 +5841,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -5605,7 +5868,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -5617,7 +5883,9 @@
}
],
"summary": "List events bookmarked by current user",
- "tags": ["Event Bookmarks"]
+ "tags": [
+ "Event Bookmarks"
+ ]
}
},
"/api/v1/events/bookmarks/status": {
@@ -5652,7 +5920,9 @@
}
],
"summary": "Get bookmark status for a batch of events",
- "tags": ["Event Bookmarks"]
+ "tags": [
+ "Event Bookmarks"
+ ]
}
},
"/api/v1/events/{id}/bookmark": {
@@ -5686,7 +5956,9 @@
}
],
"summary": "Get bookmark status for current user",
- "tags": ["Event Bookmarks"]
+ "tags": [
+ "Event Bookmarks"
+ ]
},
"post": {
"operationId": "EventBookmarksController_bookmark",
@@ -5718,7 +5990,9 @@
}
],
"summary": "Bookmark an event",
- "tags": ["Event Bookmarks"]
+ "tags": [
+ "Event Bookmarks"
+ ]
},
"delete": {
"operationId": "EventBookmarksController_remove",
@@ -5750,7 +6024,9 @@
}
],
"summary": "Remove an event bookmark",
- "tags": ["Event Bookmarks"]
+ "tags": [
+ "Event Bookmarks"
+ ]
}
},
"/api/v1/events/by-slug/{slug}/bootstrap": {
@@ -5779,7 +6055,9 @@
}
},
"summary": "Public event landing bootstrap payload",
- "tags": ["Events"]
+ "tags": [
+ "Events"
+ ]
}
},
"/api/v1/events/by-slug/{slug}": {
@@ -5808,7 +6086,9 @@
}
},
"summary": "Single discoverable event by slug (SEO event landing page)",
- "tags": ["Events"]
+ "tags": [
+ "Events"
+ ]
}
},
"/api/v1/events/{id}/viewer-state": {
@@ -5837,7 +6117,9 @@
}
},
"summary": "Authenticated viewer state for an event landing",
- "tags": ["Events"]
+ "tags": [
+ "Events"
+ ]
}
},
"/api/v1/admin/events/{eventId}/revisions/pending": {
@@ -5871,7 +6153,9 @@
}
],
"summary": "Get pending revision for any live event",
- "tags": ["Admin - Events"]
+ "tags": [
+ "Admin - Events"
+ ]
}
},
"/api/v1/admin/events/{eventId}/revisions/{revisionId}/approve": {
@@ -5913,7 +6197,9 @@
}
],
"summary": "Approve a pending revision and apply it to the live event immediately (no host confirm)",
- "tags": ["Admin - Events"]
+ "tags": [
+ "Admin - Events"
+ ]
}
},
"/api/v1/admin/events/{eventId}/revisions/{revisionId}/reject": {
@@ -5965,7 +6251,9 @@
}
],
"summary": "Reject a pending revision; live event content stays unchanged",
- "tags": ["Admin - Events"]
+ "tags": [
+ "Admin - Events"
+ ]
}
},
"/api/v1/admin/events": {
@@ -6028,7 +6316,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -6052,7 +6343,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -6064,7 +6358,9 @@
}
],
"summary": "Paginated admin events list",
- "tags": ["Admin - Events"]
+ "tags": [
+ "Admin - Events"
+ ]
},
"post": {
"description": "Requires a verified host `organizerId`. Creates a draft with `admin_approved_at` set so the host can publish immediately; does not publish. Notifies the host (SMS + in-app) via `event_created_by_admin`.",
@@ -6098,7 +6394,9 @@
}
],
"summary": "Create a pre-approved draft event for a verified host",
- "tags": ["Admin - Events"]
+ "tags": [
+ "Admin - Events"
+ ]
}
},
"/api/v1/admin/events/{id}": {
@@ -6132,7 +6430,9 @@
}
],
"summary": "Admin event detail including bookmark count",
- "tags": ["Admin - Events"]
+ "tags": [
+ "Admin - Events"
+ ]
},
"patch": {
"operationId": "AdminEventsController_update",
@@ -6174,7 +6474,9 @@
}
],
"summary": "Update any event as admin (same field locks as host edit)",
- "tags": ["Admin - Events"]
+ "tags": [
+ "Admin - Events"
+ ]
},
"delete": {
"operationId": "AdminEventsController_softDelete",
@@ -6206,7 +6508,9 @@
}
],
"summary": "Soft-delete any event as admin when it has no active bookings (booked_count = 0)",
- "tags": ["Admin - Events"]
+ "tags": [
+ "Admin - Events"
+ ]
}
},
"/api/v1/admin/events/{id}/reserved-capacity": {
@@ -6250,7 +6554,9 @@
}
],
"summary": "Set capacity and/or off-platform reserved seat count as admin",
- "tags": ["Admin - Events"]
+ "tags": [
+ "Admin - Events"
+ ]
}
},
"/api/v1/admin/events/{id}/commission": {
@@ -6295,7 +6601,9 @@
}
],
"summary": "Set or clear this event’s platform commission override",
- "tags": ["Admin - Events"]
+ "tags": [
+ "Admin - Events"
+ ]
}
},
"/api/v1/admin/events/{id}/insights": {
@@ -6329,7 +6637,9 @@
}
],
"summary": "Get engagement insights for any event as admin",
- "tags": ["Admin - Events"]
+ "tags": [
+ "Admin - Events"
+ ]
}
},
"/api/v1/admin/events/{id}/approve": {
@@ -6363,7 +6673,9 @@
}
],
"summary": "Approve a draft or pending-review event; publishes once the host has also requested publication",
- "tags": ["Admin - Events"]
+ "tags": [
+ "Admin - Events"
+ ]
}
},
"/api/v1/admin/events/{id}/publish": {
@@ -6397,7 +6709,9 @@
}
],
"summary": "Force-publish any organizer’s draft or pending-review event as admin, bypassing the request/approve flow entirely",
- "tags": ["Admin - Events"]
+ "tags": [
+ "Admin - Events"
+ ]
}
},
"/api/v1/admin/events/{id}/reject": {
@@ -6441,7 +6755,9 @@
}
],
"summary": "Reject a pending-review event with a reason",
- "tags": ["Admin - Events"]
+ "tags": [
+ "Admin - Events"
+ ]
}
},
"/api/v1/admin/events/{id}/cancel": {
@@ -6475,7 +6791,9 @@
}
],
"summary": "Cancel any organizer’s published/full event as admin",
- "tags": ["Admin - Events"]
+ "tags": [
+ "Admin - Events"
+ ]
}
},
"/api/v1/admin/events/{id}/complete": {
@@ -6509,7 +6827,9 @@
}
],
"summary": "Mark any organizer’s event completed as admin",
- "tags": ["Admin - Events"]
+ "tags": [
+ "Admin - Events"
+ ]
}
},
"/api/v1/discovery/cities": {
@@ -6533,7 +6853,9 @@
}
},
"summary": "Cached city list for discovery/home",
- "tags": ["Events"]
+ "tags": [
+ "Events"
+ ]
}
},
"/api/v1/discovery/categories": {
@@ -6556,7 +6878,9 @@
}
},
"summary": "Cached active category tree summary for discovery/home",
- "tags": ["Events"]
+ "tags": [
+ "Events"
+ ]
}
},
"/api/v1/discovery/home-feed": {
@@ -6586,7 +6910,9 @@
}
},
"summary": "Home page event sections (popular, category previews, city previews)",
- "tags": ["Events"]
+ "tags": [
+ "Events"
+ ]
}
},
"/api/v1/discovery/bootstrap": {
@@ -6607,7 +6933,9 @@
}
},
"summary": "Legacy combined reference data for event discovery",
- "tags": ["Events"]
+ "tags": [
+ "Events"
+ ]
}
},
"/api/v1/organizers/me/following": {
@@ -6668,7 +6996,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
},
{
@@ -6701,7 +7032,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -6713,7 +7047,9 @@
}
],
"summary": "Get organizers followed by current user",
- "tags": ["Organizer Follows"]
+ "tags": [
+ "Organizer Follows"
+ ]
}
},
"/api/v1/organizers/me/following/events": {
@@ -6774,7 +7110,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -6798,7 +7137,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -6810,7 +7152,9 @@
}
],
"summary": "Get upcoming events from followed organizers",
- "tags": ["Organizer Follows"]
+ "tags": [
+ "Organizer Follows"
+ ]
}
},
"/api/v1/organizers/me/followers": {
@@ -6871,7 +7215,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -6895,7 +7242,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -6907,7 +7257,9 @@
}
],
"summary": "Get followers of the current user (as organizer)",
- "tags": ["Organizer Follows"]
+ "tags": [
+ "Organizer Follows"
+ ]
}
},
"/api/v1/organizers/{organizerId}/follow": {
@@ -7003,7 +7355,9 @@
}
],
"summary": "Follow an organizer",
- "tags": ["Organizer Follows"]
+ "tags": [
+ "Organizer Follows"
+ ]
},
"delete": {
"operationId": "OrganizerFollowsController_unfollow",
@@ -7087,7 +7441,9 @@
}
],
"summary": "Unfollow an organizer",
- "tags": ["Organizer Follows"]
+ "tags": [
+ "Organizer Follows"
+ ]
}
},
"/api/v1/organizers/{organizerId}/followers": {
@@ -7158,7 +7514,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -7182,14 +7541,19 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
}
},
"summary": "Get followers of an organizer",
- "tags": ["Organizer Follows"]
+ "tags": [
+ "Organizer Follows"
+ ]
}
},
"/api/v1/organizers/{organizerId}/is-following": {
@@ -7231,7 +7595,9 @@
}
],
"summary": "Check if current user is following an organizer",
- "tags": ["Organizer Follows"]
+ "tags": [
+ "Organizer Follows"
+ ]
}
},
"/api/v1/organizers/{organizerId}/follow-settings": {
@@ -7277,7 +7643,9 @@
}
],
"summary": "Update follow notification settings",
- "tags": ["Organizer Follows"]
+ "tags": [
+ "Organizer Follows"
+ ]
}
},
"/api/v1/events/{eventId}/media": {
@@ -7309,7 +7677,9 @@
}
},
"summary": "List media for an event (unpaginated)",
- "tags": ["Event Extras"]
+ "tags": [
+ "Event Extras"
+ ]
},
"post": {
"operationId": "EventMediaController_create",
@@ -7351,7 +7721,9 @@
}
],
"summary": "Add media to own event (or any event as admin)",
- "tags": ["Event Extras"]
+ "tags": [
+ "Event Extras"
+ ]
}
},
"/api/v1/events/{eventId}/media/{id}": {
@@ -7403,7 +7775,9 @@
}
],
"summary": "Update event media (owner or admin)",
- "tags": ["Event Extras"]
+ "tags": [
+ "Event Extras"
+ ]
},
"delete": {
"operationId": "EventMediaController_remove",
@@ -7443,7 +7817,9 @@
}
],
"summary": "Remove event media (owner or admin)",
- "tags": ["Event Extras"]
+ "tags": [
+ "Event Extras"
+ ]
}
},
"/api/v1/events/{eventId}/faqs": {
@@ -7475,7 +7851,9 @@
}
},
"summary": "List FAQs for an event (unpaginated)",
- "tags": ["Event Extras"]
+ "tags": [
+ "Event Extras"
+ ]
},
"post": {
"operationId": "EventFaqsController_create",
@@ -7517,7 +7895,9 @@
}
],
"summary": "Add FAQ to own event (or any event as admin)",
- "tags": ["Event Extras"]
+ "tags": [
+ "Event Extras"
+ ]
}
},
"/api/v1/events/{eventId}/faqs/page": {
@@ -7584,7 +7964,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -7608,14 +7991,19 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
}
},
"summary": "Paginated FAQs for an event",
- "tags": ["Event Extras"]
+ "tags": [
+ "Event Extras"
+ ]
}
},
"/api/v1/events/{eventId}/faqs/{id}": {
@@ -7667,7 +8055,9 @@
}
],
"summary": "Update event FAQ (owner or admin)",
- "tags": ["Event Extras"]
+ "tags": [
+ "Event Extras"
+ ]
},
"delete": {
"operationId": "EventFaqsController_remove",
@@ -7707,7 +8097,9 @@
}
],
"summary": "Remove event FAQ (owner or admin)",
- "tags": ["Event Extras"]
+ "tags": [
+ "Event Extras"
+ ]
}
},
"/api/v1/organizer-guest-lists/previous-attendees": {
@@ -7735,7 +8127,9 @@
}
],
"summary": "Organizer's deduplicated confirmed (paid/free) guests",
- "tags": ["Event Extras"]
+ "tags": [
+ "Event Extras"
+ ]
}
},
"/api/v1/organizer-guest-lists": {
@@ -7794,7 +8188,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -7818,7 +8215,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -7830,7 +8230,9 @@
}
],
"summary": "Organizer's own guest lists (paginated)",
- "tags": ["Event Extras"]
+ "tags": [
+ "Event Extras"
+ ]
},
"post": {
"operationId": "OrganizerGuestListsController_create",
@@ -7863,7 +8265,9 @@
}
],
"summary": "Create a guest list",
- "tags": ["Event Extras"]
+ "tags": [
+ "Event Extras"
+ ]
}
},
"/api/v1/organizer-guest-lists/{id}": {
@@ -7898,7 +8302,9 @@
}
],
"summary": "Soft-delete a whole guest list",
- "tags": ["Event Extras"]
+ "tags": [
+ "Event Extras"
+ ]
}
},
"/api/v1/organizer-guest-lists/{id}/items": {
@@ -7967,7 +8373,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -7991,7 +8400,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -8003,7 +8415,9 @@
}
],
"summary": "A guest list's contacts (paginated)",
- "tags": ["Event Extras"]
+ "tags": [
+ "Event Extras"
+ ]
},
"post": {
"operationId": "OrganizerGuestListsController_addItem",
@@ -8046,7 +8460,9 @@
}
],
"summary": "Add a contact to a guest list",
- "tags": ["Event Extras"]
+ "tags": [
+ "Event Extras"
+ ]
}
},
"/api/v1/organizer-guest-lists/{id}/items/{itemId}": {
@@ -8090,7 +8506,9 @@
}
],
"summary": "Remove a contact from a guest list",
- "tags": ["Event Extras"]
+ "tags": [
+ "Event Extras"
+ ]
}
},
"/api/v1/events/{eventId}/guest-list-links/invited-guests": {
@@ -8135,7 +8553,9 @@
}
],
"summary": "Set previous attendees invited to this event",
- "tags": ["Event Extras"]
+ "tags": [
+ "Event Extras"
+ ]
}
},
"/api/v1/events/{eventId}/guest-list-links/invited-guests/page": {
@@ -8202,7 +8622,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -8226,7 +8649,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -8238,7 +8664,9 @@
}
],
"summary": "Paginated guests selected to invite to this event",
- "tags": ["Event Extras"]
+ "tags": [
+ "Event Extras"
+ ]
}
},
"/api/v1/events/{eventId}/guest-list-links/invited-guests/notify": {
@@ -8273,7 +8701,9 @@
}
],
"summary": "Send invitation notifications for the event invite set",
- "tags": ["Event Extras"]
+ "tags": [
+ "Event Extras"
+ ]
}
},
"/api/v1/events/{eventId}/guest-list-links/page": {
@@ -8340,7 +8770,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -8364,7 +8797,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -8376,7 +8812,9 @@
}
],
"summary": "Paginated guest lists linked to this event",
- "tags": ["Event Extras"]
+ "tags": [
+ "Event Extras"
+ ]
}
},
"/api/v1/events/{eventId}/guest-list-links": {
@@ -8421,7 +8859,9 @@
}
],
"summary": "Attach a guest list to an event (stores link only — call notify to send invitations)",
- "tags": ["Event Extras"]
+ "tags": [
+ "Event Extras"
+ ]
}
},
"/api/v1/events/{eventId}/guest-list-links/{listId}/notify": {
@@ -8465,7 +8905,9 @@
}
],
"summary": "Send invitation notifications for a guest list linked to this event",
- "tags": ["Event Extras"]
+ "tags": [
+ "Event Extras"
+ ]
}
},
"/api/v1/events/{eventId}/guest-list-links/{listId}": {
@@ -8509,7 +8951,9 @@
}
],
"summary": "Unlink a guest list from an event",
- "tags": ["Event Extras"]
+ "tags": [
+ "Event Extras"
+ ]
}
},
"/api/v1/admin/guest-lists": {
@@ -8569,7 +9013,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -8593,7 +9040,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -8605,7 +9055,9 @@
}
],
"summary": "Every organizer's guest lists (paginated)",
- "tags": ["Admin - Event Extras"]
+ "tags": [
+ "Admin - Event Extras"
+ ]
}
},
"/api/v1/admin/guest-lists/{id}/items": {
@@ -8673,7 +9125,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -8697,7 +9152,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -8709,7 +9167,9 @@
}
],
"summary": "Any guest list's contacts, admin view (paginated)",
- "tags": ["Admin - Event Extras"]
+ "tags": [
+ "Admin - Event Extras"
+ ]
}
},
"/api/v1/admin/events/{eventId}/guest-list-links": {
@@ -8748,7 +9208,9 @@
}
],
"summary": "Guest lists linked to any event, admin view (unpaginated)",
- "tags": ["Admin - Event Extras"]
+ "tags": [
+ "Admin - Event Extras"
+ ]
}
},
"/api/v1/admin/events/{eventId}/invited-guests": {
@@ -8787,7 +9249,9 @@
}
],
"summary": "Guests selected to invite to this event (unpaginated)",
- "tags": ["Admin - Event Extras"]
+ "tags": [
+ "Admin - Event Extras"
+ ]
},
"put": {
"description": "userIds must all be existing platform users. Full replace, not incremental. An empty array clears the invite set. Does not send notifications — use POST .../notify.",
@@ -8834,7 +9298,9 @@
}
],
"summary": "Replace the invite set for this event",
- "tags": ["Admin - Event Extras"]
+ "tags": [
+ "Admin - Event Extras"
+ ]
}
},
"/api/v1/admin/events/{eventId}/invited-guests/notify": {
@@ -8870,7 +9336,9 @@
}
],
"summary": "Send invitation notifications to the event invite set",
- "tags": ["Admin - Event Extras"]
+ "tags": [
+ "Admin - Event Extras"
+ ]
}
},
"/api/v1/bookings/{bookingId}/payments": {
@@ -8914,7 +9382,9 @@
}
],
"summary": "Create payment attempt for a booking",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
}
},
"/api/v1/bookings/{bookingId}/discount-preview": {
@@ -8958,7 +9428,9 @@
}
],
"summary": "Preview a discount code against a booking",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
}
},
"/api/v1/payments/me": {
@@ -9017,7 +9489,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -9041,7 +9516,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -9053,7 +9531,9 @@
}
],
"summary": "Current user's payments",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
}
},
"/api/v1/payments/{id}/receipt": {
@@ -9087,7 +9567,9 @@
}
],
"summary": "Payment receipt (owner only)",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
}
},
"/api/v1/admin/payments": {
@@ -9146,7 +9628,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -9170,7 +9655,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -9182,7 +9670,9 @@
}
],
"summary": "Paginated admin payment list, all users",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
}
},
"/api/v1/admin/wallet-deposits": {
@@ -9241,7 +9731,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -9265,7 +9758,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -9277,7 +9773,9 @@
}
],
"summary": "Paginated admin wallet deposit list (gateway sessions)",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
}
},
"/api/v1/users/me/wallet": {
@@ -9302,7 +9800,9 @@
}
],
"summary": "Current user's wallet",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
}
},
"/api/v1/users/me/wallet/transactions": {
@@ -9361,7 +9861,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -9385,7 +9888,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -9397,7 +9903,9 @@
}
],
"summary": "Current user's wallet transactions",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
}
},
"/api/v1/users/me/wallet/deposits": {
@@ -9432,7 +9940,9 @@
}
],
"summary": "Start a wallet top-up via payment gateway",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
}
},
"/api/v1/users/me/wallet/deposits/{id}": {
@@ -9466,7 +9976,9 @@
}
],
"summary": "Get one of the current user wallet deposits",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
}
},
"/api/v1/wallet/deposits/{id}/gateway-return": {
@@ -9497,7 +10009,9 @@
}
},
"summary": "Jibit browser return (GET) — verifies payment server-side then redirects to the frontend result page",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
},
"post": {
"operationId": "WalletController_depositGatewayReturnPost",
@@ -9526,7 +10040,9 @@
}
},
"summary": "Jibit browser return (form POST from PPG) — verifies payment server-side then redirects to the frontend result page",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
}
},
"/api/v1/wallet/deposits/{id}/gateway-callback": {
@@ -9565,7 +10081,9 @@
}
},
"summary": "Console/dev HMAC callback for wallet deposits (disabled when PAYMENT_GATEWAY_PROVIDER=jibit)",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
}
},
"/api/v1/bank-accounts": {
@@ -9600,7 +10118,9 @@
}
],
"summary": "Create bank account for withdrawals/settlements",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
}
},
"/api/v1/bank-accounts/me": {
@@ -9628,7 +10148,9 @@
}
],
"summary": "Current user's bank accounts",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
}
},
"/api/v1/admin/bank-accounts": {
@@ -9687,7 +10209,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -9711,7 +10236,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -9723,7 +10251,9 @@
}
],
"summary": "Paginated admin bank account verification queue",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
}
},
"/api/v1/admin/bank-accounts/{id}/jibit-inquiry": {
@@ -9758,7 +10288,9 @@
}
],
"summary": "Run Jibit IBAN/national-code/birth-date matching inquiry",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
}
},
"/api/v1/admin/bank-accounts/{id}/approve": {
@@ -9792,7 +10324,9 @@
}
],
"summary": "Approve bank account after a successful Jibit match",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
}
},
"/api/v1/admin/bank-accounts/{id}/reject": {
@@ -9836,7 +10370,9 @@
}
],
"summary": "Reject bank account with a reason",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
}
},
"/api/v1/withdrawal-requests": {
@@ -9871,7 +10407,9 @@
}
],
"summary": "Create withdrawal request from wallet",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
}
},
"/api/v1/withdrawal-requests/me": {
@@ -9930,7 +10468,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -9954,7 +10495,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -9966,7 +10510,9 @@
}
],
"summary": "Current user's withdrawal requests",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
}
},
"/api/v1/admin/withdrawal-requests": {
@@ -10025,7 +10571,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -10049,7 +10598,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -10061,7 +10613,9 @@
}
],
"summary": "Paginated admin withdrawal queue",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
}
},
"/api/v1/admin/withdrawal-requests/{id}/process": {
@@ -10095,7 +10649,9 @@
}
],
"summary": "Mark withdrawal request as processing",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
}
},
"/api/v1/admin/withdrawal-requests/{id}/complete": {
@@ -10139,7 +10695,9 @@
}
],
"summary": "Complete withdrawal with manual payment evidence",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
}
},
"/api/v1/admin/withdrawal-requests/{id}/reject": {
@@ -10183,7 +10741,9 @@
}
],
"summary": "Reject withdrawal request and reverse hold",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
}
},
"/api/v1/organizers/me/earnings": {
@@ -10242,7 +10802,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -10266,7 +10829,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -10278,7 +10844,9 @@
}
],
"summary": "Current organizer's earnings ledger",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
}
},
"/api/v1/settlements/me": {
@@ -10337,7 +10905,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -10361,7 +10932,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -10373,7 +10947,9 @@
}
],
"summary": "Current organizer's settlement batches",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
}
},
"/api/v1/admin/settlements": {
@@ -10408,7 +10984,9 @@
}
],
"summary": "Create organizer settlement batch",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
},
"get": {
"operationId": "AdminSettlementsController_list",
@@ -10465,7 +11043,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -10489,7 +11070,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -10501,7 +11085,9 @@
}
],
"summary": "Paginated settlement batches",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
}
},
"/api/v1/admin/settlements/{id}": {
@@ -10536,7 +11122,9 @@
}
],
"summary": "Settlement batch detail, with items inlined",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
}
},
"/api/v1/admin/settlements/{id}/process": {
@@ -10570,7 +11158,9 @@
}
],
"summary": "Mark settlement batch as processing",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
}
},
"/api/v1/admin/settlements/{id}/complete": {
@@ -10614,7 +11204,9 @@
}
],
"summary": "Complete settlement with manual payment evidence",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
}
},
"/api/v1/admin/settlements/{id}/fail": {
@@ -10659,7 +11251,9 @@
}
],
"summary": "Mark settlement batch as failed and release its earnings",
- "tags": ["Financial"]
+ "tags": [
+ "Financial"
+ ]
}
},
"/api/v1/events/{eventId}/discount-codes": {
@@ -10704,7 +11298,9 @@
}
],
"summary": "Bulk-create discount codes for an event (host or admin)",
- "tags": ["Discount Codes"]
+ "tags": [
+ "Discount Codes"
+ ]
},
"get": {
"operationId": "DiscountCodesController_list",
@@ -10770,7 +11366,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -10794,7 +11393,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -10806,7 +11408,9 @@
}
],
"summary": "An event's discount codes (paginated)",
- "tags": ["Discount Codes"]
+ "tags": [
+ "Discount Codes"
+ ]
}
},
"/api/v1/events/{eventId}/discount-codes/management-bootstrap": {
@@ -10840,7 +11444,9 @@
}
],
"summary": "All initial data for an event's discount management tab",
- "tags": ["Discount Codes"]
+ "tags": [
+ "Discount Codes"
+ ]
}
},
"/api/v1/events/{eventId}/discount-codes/report": {
@@ -10875,7 +11481,9 @@
}
],
"summary": "Summary of an event's discount usage",
- "tags": ["Discount Codes"]
+ "tags": [
+ "Discount Codes"
+ ]
}
},
"/api/v1/events/{eventId}/discount-codes/redemptions": {
@@ -10943,7 +11551,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -10967,7 +11578,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -10979,7 +11593,9 @@
}
],
"summary": "An event's discount redemptions (paginated)",
- "tags": ["Discount Codes"]
+ "tags": [
+ "Discount Codes"
+ ]
}
},
"/api/v1/discount-codes/{id}": {
@@ -11024,7 +11640,9 @@
}
],
"summary": "Enable/disable a discount code (host or admin)",
- "tags": ["Discount Codes"]
+ "tags": [
+ "Discount Codes"
+ ]
},
"delete": {
"operationId": "DiscountCodesController_remove",
@@ -11057,7 +11675,9 @@
}
],
"summary": "Delete an unused discount code (host or admin)",
- "tags": ["Discount Codes"]
+ "tags": [
+ "Discount Codes"
+ ]
}
},
"/api/v1/events/{eventId}/bookings": {
@@ -11101,7 +11721,9 @@
}
],
"summary": "Create a booking for an event",
- "tags": ["Bookings"]
+ "tags": [
+ "Bookings"
+ ]
}
},
"/api/v1/bookings/me": {
@@ -11160,7 +11782,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -11184,7 +11809,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -11196,7 +11824,9 @@
}
],
"summary": "Current user's booking history",
- "tags": ["Bookings"]
+ "tags": [
+ "Bookings"
+ ]
}
},
"/api/v1/bookings/{id}": {
@@ -11230,7 +11860,9 @@
}
],
"summary": "Single booking detail (owner only)",
- "tags": ["Bookings"]
+ "tags": [
+ "Bookings"
+ ]
}
},
"/api/v1/bookings/{id}/cancel": {
@@ -11275,7 +11907,9 @@
}
],
"summary": "Cancel a booking (guest only)",
- "tags": ["Bookings"]
+ "tags": [
+ "Bookings"
+ ]
}
},
"/api/v1/bookings/{id}/check-in": {
@@ -11309,7 +11943,9 @@
}
],
"summary": "Check in a guest (event organizer only)",
- "tags": ["Bookings"]
+ "tags": [
+ "Bookings"
+ ]
}
},
"/api/v1/events/{eventId}/waitlist": {
@@ -11353,7 +11989,9 @@
}
],
"summary": "Join the waitlist for a full event",
- "tags": ["Waitlist"]
+ "tags": [
+ "Waitlist"
+ ]
},
"get": {
"operationId": "WaitlistController_listForEvent",
@@ -11418,7 +12056,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -11442,7 +12083,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -11454,7 +12098,9 @@
}
],
"summary": "Host view of the waiting queue for their own event (used to hand-pick who gets a seat when settings.waitlistAutoOffer is false)",
- "tags": ["Waitlist"]
+ "tags": [
+ "Waitlist"
+ ]
}
},
"/api/v1/waitlist/me": {
@@ -11513,7 +12159,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -11537,7 +12186,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -11549,7 +12201,9 @@
}
],
"summary": "Current user's waitlist entries",
- "tags": ["Waitlist"]
+ "tags": [
+ "Waitlist"
+ ]
}
},
"/api/v1/events/{eventId}/waitlist/{entryId}/offer": {
@@ -11591,7 +12245,9 @@
}
],
"summary": "Host manually offers an opened seat to a specific waitlist entry",
- "tags": ["Waitlist"]
+ "tags": [
+ "Waitlist"
+ ]
}
},
"/api/v1/waitlist/{id}/accept": {
@@ -11625,7 +12281,9 @@
}
],
"summary": "Accept a notified waitlist offer",
- "tags": ["Waitlist"]
+ "tags": [
+ "Waitlist"
+ ]
}
},
"/api/v1/admin/bookings": {
@@ -11684,7 +12342,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -11708,7 +12369,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -11720,7 +12384,9 @@
}
],
"summary": "Paginated admin bookings list",
- "tags": ["Admin - Bookings"]
+ "tags": [
+ "Admin - Bookings"
+ ]
}
},
"/api/v1/admin/bookings/{id}/check-in": {
@@ -11754,7 +12420,9 @@
}
],
"summary": "Check in a guest for any organizer’s event as admin",
- "tags": ["Admin - Bookings"]
+ "tags": [
+ "Admin - Bookings"
+ ]
}
},
"/api/v1/events/{eventId}/reviews": {
@@ -11826,7 +12494,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
},
{
@@ -11860,7 +12531,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -11907,7 +12581,9 @@
}
},
"summary": "List published reviews for an event",
- "tags": ["Reviews"]
+ "tags": [
+ "Reviews"
+ ]
},
"post": {
"description": "Authenticated guests with a confirmed booking may review once after the event is completed.",
@@ -12012,7 +12688,9 @@
}
],
"summary": "Create a review for a completed event",
- "tags": ["Reviews"]
+ "tags": [
+ "Reviews"
+ ]
}
},
"/api/v1/users/{userId}/reviews": {
@@ -12084,7 +12762,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -12108,7 +12789,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -12155,7 +12839,9 @@
}
},
"summary": "List published reviews for an organizer",
- "tags": ["Reviews"]
+ "tags": [
+ "Reviews"
+ ]
}
},
"/api/v1/reviews/{id}": {
@@ -12262,7 +12948,9 @@
}
],
"summary": "Update own review",
- "tags": ["Reviews"]
+ "tags": [
+ "Reviews"
+ ]
}
},
"/api/v1/reviews/{id}/host-reply": {
@@ -12369,7 +13057,9 @@
}
],
"summary": "Reply to a review as organizer",
- "tags": ["Reviews"]
+ "tags": [
+ "Reviews"
+ ]
}
},
"/api/v1/admin/reviews": {
@@ -12431,7 +13121,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
},
{
@@ -12482,7 +13175,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -12494,7 +13190,9 @@
}
],
"summary": "Paginated review moderation list",
- "tags": ["Admin - Reviews"]
+ "tags": [
+ "Admin - Reviews"
+ ]
}
},
"/api/v1/admin/reviews/{id}/hide": {
@@ -12590,7 +13288,9 @@
}
],
"summary": "Hide a review from public view",
- "tags": ["Admin - Reviews"]
+ "tags": [
+ "Admin - Reviews"
+ ]
}
},
"/api/v1/admin/reviews/{id}/restore": {
@@ -12686,7 +13386,9 @@
}
],
"summary": "Restore a hidden review to published",
- "tags": ["Admin - Reviews"]
+ "tags": [
+ "Admin - Reviews"
+ ]
}
},
"/api/v1/admin/reviews/{id}": {
@@ -12722,7 +13424,9 @@
}
],
"summary": "Soft-delete a review",
- "tags": ["Admin - Reviews"]
+ "tags": [
+ "Admin - Reviews"
+ ]
}
},
"/api/v1/conversations/me/unread-count": {
@@ -12798,7 +13502,9 @@
}
],
"summary": "Get total unread message count",
- "tags": ["Chat"]
+ "tags": [
+ "Chat"
+ ]
}
},
"/api/v1/conversations/me": {
@@ -12860,7 +13566,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
},
{
@@ -12894,7 +13603,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -12956,7 +13668,9 @@
}
],
"summary": "List my conversations",
- "tags": ["Chat"]
+ "tags": [
+ "Chat"
+ ]
}
},
"/api/v1/conversations/direct/{otherUserId}": {
@@ -13053,7 +13767,9 @@
}
],
"summary": "Get or create a direct conversation",
- "tags": ["Chat"]
+ "tags": [
+ "Chat"
+ ]
}
},
"/api/v1/conversations/direct/{otherUserId}/messages": {
@@ -13160,7 +13876,9 @@
}
],
"summary": "Send a direct message",
- "tags": ["Chat"]
+ "tags": [
+ "Chat"
+ ]
}
},
"/api/v1/conversations/{id}": {
@@ -13257,7 +13975,9 @@
}
],
"summary": "Get a conversation",
- "tags": ["Chat"]
+ "tags": [
+ "Chat"
+ ]
}
},
"/api/v1/conversations/{id}/participants": {
@@ -13329,7 +14049,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -13353,7 +14076,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -13425,7 +14151,9 @@
}
],
"summary": "List conversation participants",
- "tags": ["Chat"]
+ "tags": [
+ "Chat"
+ ]
}
},
"/api/v1/conversations/{id}/read": {
@@ -13532,7 +14260,9 @@
}
],
"summary": "Mark conversation as read",
- "tags": ["Chat"]
+ "tags": [
+ "Chat"
+ ]
}
},
"/api/v1/conversations/{id}/messages": {
@@ -13614,7 +14344,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -13686,7 +14419,9 @@
}
],
"summary": "List messages in a conversation",
- "tags": ["Chat"]
+ "tags": [
+ "Chat"
+ ]
},
"post": {
"description": "Sends a message in an existing conversation (typically an event group chat).",
@@ -13791,7 +14526,9 @@
}
],
"summary": "Send a message in a conversation",
- "tags": ["Chat"]
+ "tags": [
+ "Chat"
+ ]
}
},
"/api/v1/admin/conversations": {
@@ -13850,7 +14587,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
},
{
@@ -13892,7 +14632,10 @@
"required": false,
"in": "query",
"schema": {
- "enum": ["direct", "event_group"],
+ "enum": [
+ "direct",
+ "event_group"
+ ],
"type": "string"
}
}
@@ -13917,7 +14660,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -13989,7 +14735,9 @@
}
],
"summary": "List all conversations for read-only admin oversight",
- "tags": ["Admin - Chat Oversight"]
+ "tags": [
+ "Admin - Chat Oversight"
+ ]
}
},
"/api/v1/admin/conversations/{id}": {
@@ -14084,7 +14832,9 @@
}
],
"summary": "Get a conversation without joining or changing read state",
- "tags": ["Admin - Chat Oversight"]
+ "tags": [
+ "Admin - Chat Oversight"
+ ]
}
},
"/api/v1/admin/conversations/{id}/participants": {
@@ -14152,7 +14902,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -14176,7 +14929,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -14248,7 +15004,9 @@
}
],
"summary": "List conversation participants for admin oversight",
- "tags": ["Admin - Chat Oversight"]
+ "tags": [
+ "Admin - Chat Oversight"
+ ]
}
},
"/api/v1/admin/conversations/{id}/messages": {
@@ -14327,7 +15085,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -14399,7 +15160,9 @@
}
],
"summary": "Read message history without joining or changing read state",
- "tags": ["Admin - Chat Oversight"]
+ "tags": [
+ "Admin - Chat Oversight"
+ ]
}
},
"/api/v1/contact-messages": {
@@ -14450,7 +15213,9 @@
}
},
"summary": "Submit a public contact message",
- "tags": ["Contact Messages"]
+ "tags": [
+ "Contact Messages"
+ ]
}
},
"/api/v1/admin/contact-messages": {
@@ -14512,7 +15277,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
},
{
@@ -14546,7 +15314,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -14618,7 +15389,9 @@
}
],
"summary": "List contact form submissions",
- "tags": ["Admin - Contact Messages"]
+ "tags": [
+ "Admin - Contact Messages"
+ ]
}
},
"/api/v1/admin/contact-messages/{id}": {
@@ -14715,7 +15488,9 @@
}
],
"summary": "Get one contact message",
- "tags": ["Admin - Contact Messages"]
+ "tags": [
+ "Admin - Contact Messages"
+ ]
}
},
"/api/v1/admin/contact-messages/{id}/read": {
@@ -14812,7 +15587,9 @@
}
],
"summary": "Mark contact message as read",
- "tags": ["Admin - Contact Messages"]
+ "tags": [
+ "Admin - Contact Messages"
+ ]
}
},
"/api/v1/traffic-visits": {
@@ -14866,7 +15643,9 @@
}
},
"summary": "Record a unique attributed page visit",
- "tags": ["Traffic Visits"]
+ "tags": [
+ "Traffic Visits"
+ ]
}
},
"/api/v1/user-blocks": {
@@ -14963,7 +15742,9 @@
}
],
"summary": "Block another user",
- "tags": ["User Blocks"]
+ "tags": [
+ "User Blocks"
+ ]
}
},
"/api/v1/user-blocks/{blockedId}": {
@@ -15051,7 +15832,9 @@
}
],
"summary": "Unblock a user",
- "tags": ["User Blocks"]
+ "tags": [
+ "User Blocks"
+ ]
}
},
"/api/v1/user-blocks/me": {
@@ -15113,7 +15896,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
},
{
@@ -15147,7 +15933,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -15199,7 +15988,9 @@
}
],
"summary": "List users I have blocked",
- "tags": ["User Blocks"]
+ "tags": [
+ "User Blocks"
+ ]
}
},
"/api/v1/report-reasons": {
@@ -15243,7 +16034,9 @@
}
},
"summary": "List active report reasons",
- "tags": ["User Reports"]
+ "tags": [
+ "User Reports"
+ ]
}
},
"/api/v1/user-reports": {
@@ -15330,7 +16123,9 @@
}
],
"summary": "Report another user",
- "tags": ["User Reports"]
+ "tags": [
+ "User Reports"
+ ]
}
},
"/api/v1/admin/user-reports": {
@@ -15392,7 +16187,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
},
{
@@ -15446,7 +16244,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -15518,7 +16319,9 @@
}
],
"summary": "List user report review queue",
- "tags": ["Admin - User Reports"]
+ "tags": [
+ "Admin - User Reports"
+ ]
}
},
"/api/v1/admin/user-reports/{id}/review": {
@@ -15616,7 +16419,9 @@
}
],
"summary": "Mark user report as reviewed",
- "tags": ["Admin - User Reports"]
+ "tags": [
+ "Admin - User Reports"
+ ]
}
},
"/api/v1/admin/user-reports/{id}/dismiss": {
@@ -15714,7 +16519,9 @@
}
],
"summary": "Dismiss user report",
- "tags": ["Admin - User Reports"]
+ "tags": [
+ "Admin - User Reports"
+ ]
}
},
"/api/v1/admin/user-reports/{id}/block": {
@@ -15812,7 +16619,9 @@
}
],
"summary": "Block reported user on the reporter's behalf",
- "tags": ["Admin - User Reports"]
+ "tags": [
+ "Admin - User Reports"
+ ]
}
},
"/api/v1/support-tickets": {
@@ -15907,7 +16716,9 @@
}
],
"summary": "Create a support ticket",
- "tags": ["Support Tickets"]
+ "tags": [
+ "Support Tickets"
+ ]
}
},
"/api/v1/support-tickets/me": {
@@ -15966,7 +16777,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -15990,7 +16804,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -16002,7 +16819,9 @@
}
],
"summary": "List my support tickets",
- "tags": ["Support Tickets"]
+ "tags": [
+ "Support Tickets"
+ ]
}
},
"/api/v1/support-tickets/{id}/messages": {
@@ -16061,7 +16880,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -16073,7 +16895,9 @@
}
],
"summary": "List my support ticket messages",
- "tags": ["Support Tickets"]
+ "tags": [
+ "Support Tickets"
+ ]
}
},
"/api/v1/support-tickets/{id}": {
@@ -16107,7 +16931,9 @@
}
],
"summary": "Get my support ticket metadata",
- "tags": ["Support Tickets"]
+ "tags": [
+ "Support Tickets"
+ ]
}
},
"/api/v1/support-tickets/{id}/replies": {
@@ -16152,7 +16978,9 @@
}
],
"summary": "Reply to my support ticket",
- "tags": ["Support Tickets"]
+ "tags": [
+ "Support Tickets"
+ ]
}
},
"/api/v1/support-tickets/{id}/close": {
@@ -16187,7 +17015,9 @@
}
],
"summary": "Close my support ticket",
- "tags": ["Support Tickets"]
+ "tags": [
+ "Support Tickets"
+ ]
}
},
"/api/v1/admin/support-tickets": {
@@ -16246,7 +17076,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -16270,7 +17103,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -16342,7 +17178,9 @@
}
],
"summary": "List the support queue",
- "tags": ["Admin - Support Tickets"]
+ "tags": [
+ "Admin - Support Tickets"
+ ]
}
},
"/api/v1/admin/support-tickets/{id}": {
@@ -16376,7 +17214,9 @@
}
],
"summary": "Get a support ticket thread",
- "tags": ["Admin - Support Tickets"]
+ "tags": [
+ "Admin - Support Tickets"
+ ]
}
},
"/api/v1/admin/support-tickets/{id}/replies": {
@@ -16420,7 +17260,9 @@
}
],
"summary": "Reply as support and send the user an SMS",
- "tags": ["Admin - Support Tickets"]
+ "tags": [
+ "Admin - Support Tickets"
+ ]
}
},
"/api/v1/admin/support-tickets/{id}/status": {
@@ -16464,7 +17306,9 @@
}
],
"summary": "Change support ticket status",
- "tags": ["Admin - Support Tickets"]
+ "tags": [
+ "Admin - Support Tickets"
+ ]
}
},
"/api/v1/admin/reports/overview": {
@@ -16550,7 +17394,9 @@
}
],
"summary": "Platform-wide overview KPIs",
- "tags": ["Admin - Reports"]
+ "tags": [
+ "Admin - Reports"
+ ]
}
},
"/api/v1/admin/users/{id}/wallet/credit": {
@@ -16655,7 +17501,9 @@
}
],
"summary": "Manually credit a user wallet",
- "tags": ["Admin - User Detail"]
+ "tags": [
+ "Admin - User Detail"
+ ]
}
},
"/api/v1/admin/users/{id}/identity/attest": {
@@ -16750,7 +17598,9 @@
}
],
"summary": "Verify host identity without a user submission",
- "tags": ["Admin - User Detail"]
+ "tags": [
+ "Admin - User Detail"
+ ]
}
},
"/api/v1/admin/users/{id}/hosted-events": {
@@ -16817,7 +17667,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -16841,7 +17694,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["events", "response"]
+ "required": [
+ "events",
+ "response"
+ ]
}
}
}
@@ -16913,7 +17769,9 @@
}
],
"summary": "Events this user has hosted (organizer_id = :id)",
- "tags": ["Admin - User Detail"]
+ "tags": [
+ "Admin - User Detail"
+ ]
}
},
"/api/v1/admin/users/{id}/bookings": {
@@ -16980,7 +17838,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -17004,7 +17865,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["bookings", "response"]
+ "required": [
+ "bookings",
+ "response"
+ ]
}
}
}
@@ -17076,7 +17940,9 @@
}
],
"summary": "Bookings this user made as a guest",
- "tags": ["Admin - User Detail"]
+ "tags": [
+ "Admin - User Detail"
+ ]
}
},
"/api/v1/admin/users/{id}/payments": {
@@ -17143,7 +18009,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -17167,7 +18036,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["payments", "response"]
+ "required": [
+ "payments",
+ "response"
+ ]
}
}
}
@@ -17239,7 +18111,9 @@
}
],
"summary": "Payments this user made",
- "tags": ["Admin - User Detail"]
+ "tags": [
+ "Admin - User Detail"
+ ]
}
},
"/api/v1/admin/users/{id}/reviews": {
@@ -17306,7 +18180,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
},
{
@@ -17315,7 +18192,10 @@
"in": "query",
"description": "written (default): authored by this user. received: on events this user organized.",
"schema": {
- "enum": ["written", "received"],
+ "enum": [
+ "written",
+ "received"
+ ],
"type": "string"
}
}
@@ -17340,7 +18220,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["reviews", "response"]
+ "required": [
+ "reviews",
+ "response"
+ ]
}
}
}
@@ -17412,7 +18295,9 @@
}
],
"summary": "Reviews written by this user or received on their events",
- "tags": ["Admin - User Detail"]
+ "tags": [
+ "Admin - User Detail"
+ ]
}
},
"/api/v1/admin/users/{id}/follows": {
@@ -17479,7 +18364,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
},
{
@@ -17488,7 +18376,10 @@
"in": "query",
"description": "following (default): organizers this user follows. followers: users following this user.",
"schema": {
- "enum": ["following", "followers"],
+ "enum": [
+ "following",
+ "followers"
+ ],
"type": "string"
}
}
@@ -17513,7 +18404,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["follows", "response"]
+ "required": [
+ "follows",
+ "response"
+ ]
}
}
}
@@ -17585,7 +18479,9 @@
}
],
"summary": "Organizers this user follows, or users following this user",
- "tags": ["Admin - User Detail"]
+ "tags": [
+ "Admin - User Detail"
+ ]
}
},
"/api/v1/admin/users/{id}/reports": {
@@ -17652,7 +18548,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
},
{
@@ -17661,7 +18560,10 @@
"in": "query",
"description": "filed (default): reports this user submitted. received: reports submitted about this user.",
"schema": {
- "enum": ["filed", "received"],
+ "enum": [
+ "filed",
+ "received"
+ ],
"type": "string"
}
}
@@ -17686,7 +18588,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["reports", "response"]
+ "required": [
+ "reports",
+ "response"
+ ]
}
}
}
@@ -17758,7 +18663,9 @@
}
],
"summary": "User reports this user filed, or reports filed about them",
- "tags": ["Admin - User Detail"]
+ "tags": [
+ "Admin - User Detail"
+ ]
}
},
"/api/v1/admin/users/{id}/blocks": {
@@ -17825,7 +18732,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
},
{
@@ -17834,7 +18744,10 @@
"in": "query",
"description": "blocking (default): users this user blocked. blockedBy: users who blocked this user.",
"schema": {
- "enum": ["blocking", "blockedBy"],
+ "enum": [
+ "blocking",
+ "blockedBy"
+ ],
"type": "string"
}
}
@@ -17859,7 +18772,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["blocks", "response"]
+ "required": [
+ "blocks",
+ "response"
+ ]
}
}
}
@@ -17931,7 +18847,9 @@
}
],
"summary": "Users this user has blocked, or users who blocked this user",
- "tags": ["Admin - User Detail"]
+ "tags": [
+ "Admin - User Detail"
+ ]
}
},
"/api/v1/admin/audit-logs": {
@@ -17993,7 +18911,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
},
{
@@ -18045,7 +18966,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -18117,7 +19041,9 @@
}
],
"summary": "List admin action audit trail",
- "tags": ["Admin - Audit Logs"]
+ "tags": [
+ "Admin - Audit Logs"
+ ]
}
},
"/api/v1/uploads": {
@@ -18131,7 +19057,9 @@
"multipart/form-data": {
"schema": {
"type": "object",
- "required": ["file"],
+ "required": [
+ "file"
+ ],
"properties": {
"file": {
"type": "string",
@@ -18200,7 +19128,9 @@
}
],
"summary": "Upload an image file",
- "tags": ["Uploads"]
+ "tags": [
+ "Uploads"
+ ]
}
},
"/api/v1/uploads/identity": {
@@ -18213,7 +19143,9 @@
"multipart/form-data": {
"schema": {
"type": "object",
- "required": ["file"],
+ "required": [
+ "file"
+ ],
"properties": {
"file": {
"type": "string",
@@ -18242,7 +19174,9 @@
}
],
"summary": "Upload a private identity document image",
- "tags": ["Uploads"]
+ "tags": [
+ "Uploads"
+ ]
}
},
"/api/v1/uploads/identity/{ownerId}/{filename}": {
@@ -18297,7 +19231,9 @@
}
],
"summary": "Read an authorized private identity document",
- "tags": ["Uploads"]
+ "tags": [
+ "Uploads"
+ ]
}
},
"/api/v1/uploads/internal": {
@@ -18336,7 +19272,9 @@
"multipart/form-data": {
"schema": {
"type": "object",
- "required": ["file"],
+ "required": [
+ "file"
+ ],
"properties": {
"file": {
"type": "string",
@@ -18400,7 +19338,9 @@
}
},
"summary": "Internal upload from trusted app instances",
- "tags": ["Uploads"]
+ "tags": [
+ "Uploads"
+ ]
}
},
"/api/v1/blog-articles/page": {
@@ -18459,7 +19399,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
},
{
@@ -18492,7 +19435,10 @@
"in": "query",
"schema": {
"type": "string",
- "enum": ["true", "false"]
+ "enum": [
+ "true",
+ "false"
+ ]
}
}
],
@@ -18516,14 +19462,19 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
}
},
"summary": "Paginated published blog articles",
- "tags": ["Blog Articles"]
+ "tags": [
+ "Blog Articles"
+ ]
}
},
"/api/v1/blog-articles/{slug}/related": {
@@ -18564,7 +19515,9 @@
}
},
"summary": "Related published articles by slug",
- "tags": ["Blog Articles"]
+ "tags": [
+ "Blog Articles"
+ ]
}
},
"/api/v1/blog-articles/{slug}": {
@@ -18593,7 +19546,9 @@
}
},
"summary": "Single published article by slug",
- "tags": ["Blog Articles"]
+ "tags": [
+ "Blog Articles"
+ ]
}
},
"/api/v1/admin/blog-articles": {
@@ -18652,7 +19607,10 @@
"description": "0 = JSON list (default). 1 = Excel export (returns response.fileData).",
"schema": {
"type": "number",
- "enum": [0, 1]
+ "enum": [
+ 0,
+ 1
+ ]
}
}
],
@@ -18676,7 +19634,10 @@
"description": "Pagination metadata for the current query."
}
},
- "required": ["items", "response"]
+ "required": [
+ "items",
+ "response"
+ ]
}
}
}
@@ -18688,7 +19649,9 @@
}
],
"summary": "Paginated article management list",
- "tags": ["Admin - Blog Articles"]
+ "tags": [
+ "Admin - Blog Articles"
+ ]
},
"post": {
"operationId": "AdminBlogArticlesController_create",
@@ -18721,7 +19684,9 @@
}
],
"summary": "Create blog article",
- "tags": ["Admin - Blog Articles"]
+ "tags": [
+ "Admin - Blog Articles"
+ ]
}
},
"/api/v1/admin/blog-articles/{id}": {
@@ -18755,7 +19720,9 @@
}
],
"summary": "Single article by id (draft or published)",
- "tags": ["Admin - Blog Articles"]
+ "tags": [
+ "Admin - Blog Articles"
+ ]
},
"patch": {
"operationId": "AdminBlogArticlesController_update",
@@ -18797,7 +19764,9 @@
}
],
"summary": "Update blog article",
- "tags": ["Admin - Blog Articles"]
+ "tags": [
+ "Admin - Blog Articles"
+ ]
},
"delete": {
"operationId": "AdminBlogArticlesController_remove",
@@ -18829,7 +19798,9 @@
}
],
"summary": "Soft-delete blog article",
- "tags": ["Admin - Blog Articles"]
+ "tags": [
+ "Admin - Blog Articles"
+ ]
}
},
"/health": {
@@ -18850,7 +19821,9 @@
}
},
"summary": "Health check",
- "tags": ["Health"]
+ "tags": [
+ "Health"
+ ]
}
},
"/health/ready": {
@@ -18881,7 +19854,9 @@
}
},
"summary": "Readiness check",
- "tags": ["Health"]
+ "tags": [
+ "Health"
+ ]
}
}
},
@@ -19017,7 +19992,9 @@
"format": "phone"
}
},
- "required": ["mobile"]
+ "required": [
+ "mobile"
+ ]
},
"OtpRequestResponseDto": {
"type": "object",
@@ -19025,7 +20002,10 @@
"purpose": {
"type": "string",
"description": "Whether this OTP flow is for an existing or new account.",
- "enum": ["login", "register"],
+ "enum": [
+ "login",
+ "register"
+ ],
"example": "login"
},
"expiresIn": {
@@ -19039,7 +20019,11 @@
"example": false
}
},
- "required": ["purpose", "expiresIn", "alreadySent"]
+ "required": [
+ "purpose",
+ "expiresIn",
+ "alreadySent"
+ ]
},
"ApiErrorCode": {
"type": "string",
@@ -19122,7 +20106,9 @@
"type": "object",
"description": "Optional field-level validation errors keyed by request field name.",
"example": {
- "mobile": ["mobile must be a valid Iranian mobile number"]
+ "mobile": [
+ "mobile must be a valid Iranian mobile number"
+ ]
},
"additionalProperties": {
"type": "array",
@@ -19132,7 +20118,11 @@
}
}
},
- "required": ["success", "code", "message"]
+ "required": [
+ "success",
+ "code",
+ "message"
+ ]
},
"VerifyOtpDto": {
"type": "object",
@@ -19173,11 +20163,19 @@
"deprecated": true
}
},
- "required": ["mobile", "code"]
+ "required": [
+ "mobile",
+ "code"
+ ]
},
"UserStatus": {
"type": "string",
- "enum": ["active", "pending", "suspended", "deleted"],
+ "enum": [
+ "active",
+ "pending",
+ "suspended",
+ "deleted"
+ ],
"description": "Account status after OTP verification; pending users must complete profile."
},
"AuthTokensDto": {
@@ -19210,7 +20208,12 @@
]
}
},
- "required": ["accessToken", "sessionId", "expiresAt", "status"]
+ "required": [
+ "accessToken",
+ "sessionId",
+ "expiresAt",
+ "status"
+ ]
},
"LoggedOutResponseDto": {
"type": "object",
@@ -19220,7 +20223,9 @@
"example": true
}
},
- "required": ["loggedOut"]
+ "required": [
+ "loggedOut"
+ ]
},
"SessionResponseDto": {
"type": "object",
@@ -19255,7 +20260,11 @@
"format": "date-time"
}
},
- "required": ["id", "createdAt", "expiresAt"]
+ "required": [
+ "id",
+ "createdAt",
+ "expiresAt"
+ ]
},
"RevokedResponseDto": {
"type": "object",
@@ -19265,16 +20274,30 @@
"example": true
}
},
- "required": ["revoked"]
+ "required": [
+ "revoked"
+ ]
},
"Gender": {
"type": "string",
- "enum": ["male", "female", "other"],
+ "enum": [
+ "male",
+ "female",
+ "other"
+ ],
"description": "Gender for placeholder avatars when no photo is set."
},
"ContactChannel": {
"type": "string",
- "enum": ["instagram", "telegram", "twitter", "linkedin", "youtube", "website", "support_phone"]
+ "enum": [
+ "instagram",
+ "telegram",
+ "twitter",
+ "linkedin",
+ "youtube",
+ "website",
+ "support_phone"
+ ]
},
"PublicOrganizerContactLinkDto": {
"type": "object",
@@ -19298,7 +20321,12 @@
"description": "Raw stored value (username, URL, or phone digits)."
}
},
- "required": ["channel", "label", "url", "value"]
+ "required": [
+ "channel",
+ "label",
+ "url",
+ "value"
+ ]
},
"PublicOrganizerResponseDto": {
"type": "object",
@@ -19459,7 +20487,10 @@
},
"ListResultType": {
"type": "number",
- "enum": [0, 1],
+ "enum": [
+ 0,
+ 1
+ ],
"description": "Result type requested by the client: 0 for JSON list, 1 for Excel export."
},
"PaginationMetaDto": {
@@ -19558,7 +20589,14 @@
"description": "True when newer messages exist beyond this page (pass `newerCursor` as `after`)."
}
},
- "required": ["page", "pageSize", "totalItemsCount", "totalPages", "sort", "filters"]
+ "required": [
+ "page",
+ "pageSize",
+ "totalItemsCount",
+ "totalPages",
+ "sort",
+ "filters"
+ ]
},
"OrganizerViewerStateResponseDto": {
"type": "object",
@@ -19574,16 +20612,27 @@
}
}
},
- "required": ["isFollowing", "attendeeContactLinks"]
+ "required": [
+ "isFollowing",
+ "attendeeContactLinks"
+ ]
},
"IdentityVerificationStatus": {
"type": "string",
- "enum": ["none", "pending", "verified", "rejected"],
+ "enum": [
+ "none",
+ "pending",
+ "verified",
+ "rejected"
+ ],
"description": "Host identity verification status; verified users may create events."
},
"UserRole": {
"type": "string",
- "enum": ["user", "admin"],
+ "enum": [
+ "user",
+ "admin"
+ ],
"description": "User role. Admin is staff-only and manually assigned."
},
"UserProfileResponseDto": {
@@ -19757,7 +20806,14 @@
"format": "date-time"
}
},
- "required": ["id", "subject", "status", "category", "lastMessageAt", "updatedAt"]
+ "required": [
+ "id",
+ "subject",
+ "status",
+ "category",
+ "lastMessageAt",
+ "updatedAt"
+ ]
},
"ProfileSummaryEventPreviewDto": {
"type": "object",
@@ -19790,7 +20846,14 @@
"format": "date-time"
}
},
- "required": ["id", "title", "slug", "posterUrl", "squarePosterUrl", "startsAt"]
+ "required": [
+ "id",
+ "title",
+ "slug",
+ "posterUrl",
+ "squarePosterUrl",
+ "startsAt"
+ ]
},
"ProfileSummaryRegisteredPreviewDto": {
"type": "object",
@@ -19828,7 +20891,15 @@
"description": "Booking id"
}
},
- "required": ["id", "title", "slug", "posterUrl", "squarePosterUrl", "startsAt", "bookingId"]
+ "required": [
+ "id",
+ "title",
+ "slug",
+ "posterUrl",
+ "squarePosterUrl",
+ "startsAt",
+ "bookingId"
+ ]
},
"UserProfileSummaryResponseDto": {
"type": "object",
@@ -20001,7 +21072,13 @@
"minimum": 1
}
},
- "required": ["firstName", "lastName", "gender", "dateOfBirth", "cityId"]
+ "required": [
+ "firstName",
+ "lastName",
+ "gender",
+ "dateOfBirth",
+ "cityId"
+ ]
},
"AdminUserListItemDto": {
"type": "object",
@@ -20128,7 +21205,11 @@
"userType": {
"type": "string",
"description": "Derived admin-facing user type: admin staff, verified host, or guest.",
- "enum": ["guest", "host", "admin"],
+ "enum": [
+ "guest",
+ "host",
+ "admin"
+ ],
"example": "host"
},
"walletBalance": {
@@ -20172,7 +21253,9 @@
"format": "phone"
}
},
- "required": ["mobile"]
+ "required": [
+ "mobile"
+ ]
},
"AdminUpdateUserDto": {
"type": "object",
@@ -20230,13 +21313,19 @@
"status": {
"type": "string",
"description": "Suspend or reactivate the account. 'pending' and 'deleted' are not settable here — see the field-level note in this DTO.",
- "enum": ["active", "suspended"],
+ "enum": [
+ "active",
+ "suspended"
+ ],
"example": "suspended"
},
"hostPlan": {
"type": "string",
"description": "Free hosts can create 10 events; unlimited removes the quota.",
- "enum": ["free", "unlimited"]
+ "enum": [
+ "free",
+ "unlimited"
+ ]
}
}
},
@@ -20249,7 +21338,15 @@
},
"channel": {
"type": "string",
- "enum": ["instagram", "telegram", "twitter", "linkedin", "youtube", "website", "support_phone"]
+ "enum": [
+ "instagram",
+ "telegram",
+ "twitter",
+ "linkedin",
+ "youtube",
+ "website",
+ "support_phone"
+ ]
},
"value": {
"type": "string"
@@ -20269,14 +21366,30 @@
"type": "string"
}
},
- "required": ["id", "channel", "value", "isPublic", "displayOrder", "createdAt", "updatedAt"]
+ "required": [
+ "id",
+ "channel",
+ "value",
+ "isPublic",
+ "displayOrder",
+ "createdAt",
+ "updatedAt"
+ ]
},
"CreateUserContactLinkDto": {
"type": "object",
"properties": {
"channel": {
"type": "string",
- "enum": ["instagram", "telegram", "twitter", "linkedin", "youtube", "website", "support_phone"],
+ "enum": [
+ "instagram",
+ "telegram",
+ "twitter",
+ "linkedin",
+ "youtube",
+ "website",
+ "support_phone"
+ ],
"example": "instagram"
},
"value": {
@@ -20293,7 +21406,10 @@
"example": 0
}
},
- "required": ["channel", "value"]
+ "required": [
+ "channel",
+ "value"
+ ]
},
"UpdateUserContactLinkDto": {
"type": "object",
@@ -20321,7 +21437,9 @@
"example": true
}
},
- "required": ["success"]
+ "required": [
+ "success"
+ ]
},
"IdentityRejectionReasonResponseDto": {
"type": "object",
@@ -20353,7 +21471,12 @@
"minimum": 0
}
},
- "required": ["id", "code", "label", "sortOrder"]
+ "required": [
+ "id",
+ "code",
+ "label",
+ "sortOrder"
+ ]
},
"RequestHostContractOtpDto": {
"type": "object",
@@ -20377,7 +21500,11 @@
"description": "Must match the currently published host cooperation contract version."
}
},
- "required": ["nationalCode", "contractAccepted", "contractVersion"]
+ "required": [
+ "nationalCode",
+ "contractAccepted",
+ "contractVersion"
+ ]
},
"HostContractOtpRequestedDto": {
"type": "object",
@@ -20398,7 +21525,11 @@
"example": "2026-08-22"
}
},
- "required": ["purpose", "expiresIn", "contractVersion"]
+ "required": [
+ "purpose",
+ "expiresIn",
+ "contractVersion"
+ ]
},
"ConfirmHostContractOtpDto": {
"type": "object",
@@ -20411,11 +21542,16 @@
"maxLength": 4
}
},
- "required": ["code"]
+ "required": [
+ "code"
+ ]
},
"IdentityVerificationSource": {
"type": "string",
- "enum": ["host_submission", "admin_attested"],
+ "enum": [
+ "host_submission",
+ "admin_attested"
+ ],
"description": "host_submission means the user sent KYC fields; admin_attested means staff verified the user without a host request."
},
"IdentityVerificationResponseDto": {
@@ -20555,7 +21691,14 @@
"format": "date-time"
}
},
- "required": ["id", "userId", "status", "source", "createdAt", "updatedAt"]
+ "required": [
+ "id",
+ "userId",
+ "status",
+ "source",
+ "createdAt",
+ "updatedAt"
+ ]
},
"AdminIdentityVerificationResponseDto": {
"type": "object",
@@ -20703,7 +21846,15 @@
}
}
},
- "required": ["id", "userId", "status", "source", "createdAt", "updatedAt", "user"]
+ "required": [
+ "id",
+ "userId",
+ "status",
+ "source",
+ "createdAt",
+ "updatedAt",
+ "user"
+ ]
},
"RejectIdentityVerificationDto": {
"type": "object",
@@ -20724,7 +21875,12 @@
},
"NotificationStatus": {
"type": "string",
- "enum": ["pending", "sent", "failed", "cancelled"],
+ "enum": [
+ "pending",
+ "sent",
+ "failed",
+ "cancelled"
+ ],
"description": "Parent notification delivery status."
},
"NotificationResponseDto": {
@@ -20798,7 +21954,14 @@
"format": "date-time"
}
},
- "required": ["id", "category", "title", "body", "status", "createdAt"]
+ "required": [
+ "id",
+ "category",
+ "title",
+ "body",
+ "status",
+ "createdAt"
+ ]
},
"NotificationUnreadCountResponseDto": {
"type": "object",
@@ -20809,7 +21972,9 @@
"example": 2
}
},
- "required": ["totalUnread"]
+ "required": [
+ "totalUnread"
+ ]
},
"NotificationMarkAllReadResponseDto": {
"type": "object",
@@ -20823,7 +21988,10 @@
"format": "date-time"
}
},
- "required": ["updatedCount", "readAt"]
+ "required": [
+ "updatedCount",
+ "readAt"
+ ]
},
"PushVapidPublicKeyResponseDto": {
"type": "object",
@@ -20839,7 +22007,10 @@
"example": true
}
},
- "required": ["publicKey", "enabled"]
+ "required": [
+ "publicKey",
+ "enabled"
+ ]
},
"PushDeliveryReceiptDto": {
"type": "object",
@@ -20859,7 +22030,10 @@
"eventType": {
"type": "string",
"description": "displayed = browser showed the notification, opened = user tapped it.",
- "enum": ["displayed", "opened"],
+ "enum": [
+ "displayed",
+ "opened"
+ ],
"example": "opened"
},
"receiptHmac": {
@@ -20868,7 +22042,12 @@
"example": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
}
},
- "required": ["notificationId", "subscriptionId", "eventType", "receiptHmac"]
+ "required": [
+ "notificationId",
+ "subscriptionId",
+ "eventType",
+ "receiptHmac"
+ ]
},
"PushDeliveryReceiptResponseDto": {
"type": "object",
@@ -20905,7 +22084,11 @@
"nullable": true
}
},
- "required": ["recorded", "notificationId", "subscriptionId"]
+ "required": [
+ "recorded",
+ "notificationId",
+ "subscriptionId"
+ ]
},
"PushSubscribeDto": {
"type": "object",
@@ -20928,7 +22111,11 @@
"description": "Browser user-agent string for debugging multi-device subscriptions."
}
},
- "required": ["endpoint", "p256dh", "auth"]
+ "required": [
+ "endpoint",
+ "p256dh",
+ "auth"
+ ]
},
"PushSubscriptionResponseDto": {
"type": "object",
@@ -20949,7 +22136,12 @@
"type": "string"
}
},
- "required": ["id", "userId", "endpoint", "createdAt"]
+ "required": [
+ "id",
+ "userId",
+ "endpoint",
+ "createdAt"
+ ]
},
"DeletedResponseDto": {
"type": "object",
@@ -20959,7 +22151,9 @@
"example": true
}
},
- "required": ["deleted"]
+ "required": [
+ "deleted"
+ ]
},
"DeletedCountResponseDto": {
"type": "object",
@@ -20970,11 +22164,18 @@
"minimum": 0
}
},
- "required": ["deletedCount"]
+ "required": [
+ "deletedCount"
+ ]
},
"SmsStatus": {
"type": "string",
- "enum": ["pending", "sent", "failed", "delivered"],
+ "enum": [
+ "pending",
+ "sent",
+ "failed",
+ "delivered"
+ ],
"description": "SMS delivery status."
},
"SmsRecipientDto": {
@@ -20993,7 +22194,10 @@
"nullable": true
}
},
- "required": ["firstName", "lastName"]
+ "required": [
+ "firstName",
+ "lastName"
+ ]
},
"SmsMessageResponseDto": {
"type": "object",
@@ -21086,7 +22290,16 @@
]
}
},
- "required": ["id", "notificationId", "userId", "mobile", "messageBody", "status", "createdAt", "updatedAt"]
+ "required": [
+ "id",
+ "notificationId",
+ "userId",
+ "mobile",
+ "messageBody",
+ "status",
+ "createdAt",
+ "updatedAt"
+ ]
},
"NotificationRuleResponseDto": {
"type": "object",
@@ -21106,7 +22319,11 @@
},
"channel": {
"type": "string",
- "enum": ["in_app", "sms", "both"]
+ "enum": [
+ "in_app",
+ "sms",
+ "both"
+ ]
},
"titleTemplate": {
"type": "string"
@@ -21160,7 +22377,11 @@
},
"channel": {
"type": "string",
- "enum": ["in_app", "sms", "both"]
+ "enum": [
+ "in_app",
+ "sms",
+ "both"
+ ]
},
"titleTemplate": {
"type": "string"
@@ -21180,7 +22401,9 @@
"purpose": {
"type": "string",
"description": "OTP purpose used when confirming a bulk SMS send.",
- "enum": ["admin_bulk_sms"],
+ "enum": [
+ "admin_bulk_sms"
+ ],
"example": "admin_bulk_sms"
},
"expiresIn": {
@@ -21189,11 +22412,18 @@
"example": 300
}
},
- "required": ["purpose", "expiresIn"]
+ "required": [
+ "purpose",
+ "expiresIn"
+ ]
},
"NotificationChannel": {
"type": "string",
- "enum": ["in_app", "sms", "both"],
+ "enum": [
+ "in_app",
+ "sms",
+ "both"
+ ],
"description": "Delivery channel. `in_app` also dispatches Web Push when the user has an active subscription. Defaults to `in_app`."
},
"AdminSendManualNotificationDto": {
@@ -21229,7 +22459,9 @@
},
"userIds": {
"description": "Recipient user ids. At least one of userIds or mobiles must be provided.",
- "example": ["c3c921d5-4418-42ed-bf39-0f04b1d5123b"],
+ "example": [
+ "c3c921d5-4418-42ed-bf39-0f04b1d5123b"
+ ],
"type": "array",
"items": {
"type": "string"
@@ -21237,7 +22469,10 @@
},
"mobiles": {
"description": "Recipient mobile numbers (0912..., 98912..., or +98912...). At least one of userIds or mobiles must be provided.",
- "example": ["09153641196", "989121234567"],
+ "example": [
+ "09153641196",
+ "989121234567"
+ ],
"type": "array",
"items": {
"type": "string"
@@ -21250,7 +22485,9 @@
"maxLength": 10
}
},
- "required": ["body"]
+ "required": [
+ "body"
+ ]
},
"AdminManualNotificationRecipientDto": {
"type": "object",
@@ -21285,7 +22522,11 @@
"format": "uuid"
}
},
- "required": ["userId", "mobile", "notificationId"]
+ "required": [
+ "userId",
+ "mobile",
+ "notificationId"
+ ]
},
"AdminManualNotificationResponseDto": {
"type": "object",
@@ -21304,7 +22545,9 @@
},
"missingUserIds": {
"description": "Requested user ids that did not resolve to a user row.",
- "example": ["11111111-1111-1111-1111-111111111111"],
+ "example": [
+ "11111111-1111-1111-1111-111111111111"
+ ],
"type": "array",
"items": {
"type": "string"
@@ -21312,14 +22555,21 @@
},
"missingMobiles": {
"description": "Requested mobile numbers that did not resolve to a user row after normalization.",
- "example": ["989199999999"],
+ "example": [
+ "989199999999"
+ ],
"type": "array",
"items": {
"type": "string"
}
}
},
- "required": ["recipientCount", "recipients", "missingUserIds", "missingMobiles"]
+ "required": [
+ "recipientCount",
+ "recipients",
+ "missingUserIds",
+ "missingMobiles"
+ ]
},
"AdminInAppRecipientDto": {
"type": "object",
@@ -21337,7 +22587,10 @@
"nullable": true
}
},
- "required": ["firstName", "lastName"]
+ "required": [
+ "firstName",
+ "lastName"
+ ]
},
"AdminInAppNotificationResponseDto": {
"type": "object",
@@ -21411,7 +22664,16 @@
]
}
},
- "required": ["id", "userId", "mobile", "category", "title", "body", "status", "createdAt"]
+ "required": [
+ "id",
+ "userId",
+ "mobile",
+ "category",
+ "title",
+ "body",
+ "status",
+ "createdAt"
+ ]
},
"PushDeliveryRecipientDto": {
"type": "object",
@@ -21429,7 +22691,10 @@
"nullable": true
}
},
- "required": ["firstName", "lastName"]
+ "required": [
+ "firstName",
+ "lastName"
+ ]
},
"PushDeliveryResponseDto": {
"type": "object",
@@ -21530,7 +22795,18 @@
]
}
},
- "required": ["id", "notificationId", "userId", "subscriptionId", "mobile", "category", "title", "body", "status", "createdAt"]
+ "required": [
+ "id",
+ "notificationId",
+ "userId",
+ "subscriptionId",
+ "mobile",
+ "category",
+ "title",
+ "body",
+ "status",
+ "createdAt"
+ ]
},
"EventCategoryResponseDto": {
"type": "object",
@@ -21651,7 +22927,10 @@
"example": "موسیقی"
}
},
- "required": ["id", "name"]
+ "required": [
+ "id",
+ "name"
+ ]
},
"CreateEventCategoryDto": {
"type": "object",
@@ -21726,7 +23005,10 @@
"nullable": true
}
},
- "required": ["name", "slug"]
+ "required": [
+ "name",
+ "slug"
+ ]
},
"UpdateEventCategoryDto": {
"type": "object",
@@ -21822,7 +23104,12 @@
"example": 51.389
}
},
- "required": ["id", "name", "lat", "lng"]
+ "required": [
+ "id",
+ "name",
+ "lat",
+ "lng"
+ ]
},
"CityResponseDto": {
"type": "object",
@@ -21852,7 +23139,12 @@
"example": 51.389
}
},
- "required": ["id", "provinceId", "name", "slug"]
+ "required": [
+ "id",
+ "provinceId",
+ "name",
+ "slug"
+ ]
},
"CityDetailResponseDto": {
"type": "object",
@@ -21890,11 +23182,26 @@
"example": "tehran-province"
}
},
- "required": ["id", "provinceId", "name", "slug", "provinceName", "provinceSlug"]
+ "required": [
+ "id",
+ "provinceId",
+ "name",
+ "slug",
+ "provinceName",
+ "provinceSlug"
+ ]
},
"EventStatus": {
"type": "string",
- "enum": ["draft", "pending_review", "published", "full", "rejected", "cancelled", "completed"]
+ "enum": [
+ "draft",
+ "pending_review",
+ "published",
+ "full",
+ "rejected",
+ "cancelled",
+ "completed"
+ ]
},
"MyEventsHostItemDto": {
"type": "object",
@@ -21980,7 +23287,14 @@
},
"BookingStatus": {
"type": "string",
- "enum": ["pending_payment", "confirmed", "cancelled", "expired", "refunded", "no_show"]
+ "enum": [
+ "pending_payment",
+ "confirmed",
+ "cancelled",
+ "expired",
+ "refunded",
+ "no_show"
+ ]
},
"MyEventsGuestItemDto": {
"type": "object",
@@ -22084,11 +23398,20 @@
},
"EventGenderRestriction": {
"type": "string",
- "enum": ["open", "female_only", "male_only"]
+ "enum": [
+ "open",
+ "female_only",
+ "male_only"
+ ]
},
"EventAgeRestriction": {
"type": "string",
- "enum": ["open", "age_15_19", "age_20_24", "age_25_plus"]
+ "enum": [
+ "open",
+ "age_15_19",
+ "age_20_24",
+ "age_25_plus"
+ ]
},
"EventSettingsDto": {
"type": "object",
@@ -22105,7 +23428,10 @@
},
"addressVisibility": {
"type": "string",
- "enum": ["public", "attendees_only"],
+ "enum": [
+ "public",
+ "attendees_only"
+ ],
"default": "public",
"description": "When 'attendees_only', only the organizer/admin and guests with a confirmed booking see the exact address/lat/lng; everyone else sees generalArea instead."
},
@@ -22131,7 +23457,10 @@
"properties": {
"mediaType": {
"type": "string",
- "enum": ["image", "video"],
+ "enum": [
+ "image",
+ "video"
+ ],
"example": "image"
},
"url": {
@@ -22157,7 +23486,10 @@
"description": "Marks the 1:1 square card poster. Exactly one image per event."
}
},
- "required": ["mediaType", "url"]
+ "required": [
+ "mediaType",
+ "url"
+ ]
},
"CreateEventFaqDto": {
"type": "object",
@@ -22178,7 +23510,10 @@
"minimum": 0
}
},
- "required": ["question", "answer"]
+ "required": [
+ "question",
+ "answer"
+ ]
},
"SubmitEventRevisionDto": {
"type": "object",
@@ -22295,7 +23630,9 @@
}
}
},
- "required": ["media"]
+ "required": [
+ "media"
+ ]
},
"EventRevisionResponseDto": {
"type": "object",
@@ -22308,7 +23645,12 @@
},
"status": {
"type": "string",
- "enum": ["pending", "approved", "rejected", "superseded"]
+ "enum": [
+ "pending",
+ "approved",
+ "rejected",
+ "superseded"
+ ]
},
"payload": {
"type": "object",
@@ -22331,7 +23673,14 @@
"type": "object"
}
},
- "required": ["id", "eventId", "status", "payload", "createdBy", "submittedAt"]
+ "required": [
+ "id",
+ "eventId",
+ "status",
+ "payload",
+ "createdBy",
+ "submittedAt"
+ ]
},
"CreateEventDto": {
"type": "object",
@@ -22475,7 +23824,10 @@
},
"addressVisibility": {
"type": "string",
- "enum": ["public", "attendees_only"]
+ "enum": [
+ "public",
+ "attendees_only"
+ ]
},
"generalArea": {
"type": "string",
@@ -22489,7 +23841,14 @@
"description": "When true, review_request after completion is sent as in-app + SMS; otherwise in-app only."
}
},
- "required": ["isDiscoverable", "autoCreateGroup", "addressVisibility", "generalArea", "waitlistAutoOffer", "sendReviewRequestSms"]
+ "required": [
+ "isDiscoverable",
+ "autoCreateGroup",
+ "addressVisibility",
+ "generalArea",
+ "waitlistAutoOffer",
+ "sendReviewRequestSms"
+ ]
},
"EventDiscoveryPlacementDto": {
"type": "object",
@@ -22502,7 +23861,10 @@
"minimum": 0
}
},
- "required": ["placement", "priority"]
+ "required": [
+ "placement",
+ "priority"
+ ]
},
"EventResponseDto": {
"type": "object",
@@ -22838,7 +24200,15 @@
"minimum": 0
}
},
- "required": ["grossAmount", "commissionAmount", "guestRefundAmount", "netAmount", "heldAmount", "availableAmount", "settledAmount"]
+ "required": [
+ "grossAmount",
+ "commissionAmount",
+ "guestRefundAmount",
+ "netAmount",
+ "heldAmount",
+ "availableAmount",
+ "settledAmount"
+ ]
},
"OwnerEventTrafficChannelInsightsDto": {
"type": "object",
@@ -22852,7 +24222,10 @@
"minimum": 0
}
},
- "required": ["uniqueVisits", "confirmedBookings"]
+ "required": [
+ "uniqueVisits",
+ "confirmedBookings"
+ ]
},
"OwnerEventTrafficInsightsDto": {
"type": "object",
@@ -22864,7 +24237,10 @@
"$ref": "#/components/schemas/OwnerEventTrafficChannelInsightsDto"
}
},
- "required": ["instagram", "telegram"]
+ "required": [
+ "instagram",
+ "telegram"
+ ]
},
"OwnerEventInsightsResponseDto": {
"type": "object",
@@ -22883,11 +24259,19 @@
"$ref": "#/components/schemas/OwnerEventTrafficInsightsDto"
}
},
- "required": ["bookmarkCount", "registrations", "financial", "traffic"]
+ "required": [
+ "bookmarkCount",
+ "registrations",
+ "financial",
+ "traffic"
+ ]
},
"EventMediaType": {
"type": "string",
- "enum": ["image", "video"]
+ "enum": [
+ "image",
+ "video"
+ ]
},
"EventMediaResponseDto": {
"type": "object",
@@ -22930,7 +24314,17 @@
"type": "string"
}
},
- "required": ["id", "eventId", "mediaType", "url", "thumbnailUrl", "sortOrder", "isPoster", "isSquarePoster", "createdAt"]
+ "required": [
+ "id",
+ "eventId",
+ "mediaType",
+ "url",
+ "thumbnailUrl",
+ "sortOrder",
+ "isPoster",
+ "isSquarePoster",
+ "createdAt"
+ ]
},
"EventFaqResponseDto": {
"type": "object",
@@ -22961,7 +24355,15 @@
"type": "string"
}
},
- "required": ["id", "eventId", "question", "answer", "sortOrder", "createdAt", "updatedAt"]
+ "required": [
+ "id",
+ "eventId",
+ "question",
+ "answer",
+ "sortOrder",
+ "createdAt",
+ "updatedAt"
+ ]
},
"EventManagementBootstrapResponseDto": {
"type": "object",
@@ -22994,7 +24396,15 @@
}
}
},
- "required": ["event", "insights", "categoryName", "cityName", "provinceName", "media", "faqs"]
+ "required": [
+ "event",
+ "insights",
+ "categoryName",
+ "cityName",
+ "provinceName",
+ "media",
+ "faqs"
+ ]
},
"EventAttendeeResponseDto": {
"type": "object",
@@ -23045,11 +24455,24 @@
"type": "string"
}
},
- "required": ["bookingId", "userId", "bookingCode", "status", "createdAt"]
+ "required": [
+ "bookingId",
+ "userId",
+ "bookingCode",
+ "status",
+ "createdAt"
+ ]
},
"EventAttendeeFilter": {
"type": "string",
- "enum": ["all", "confirmed", "checked_in", "not_checked_in", "pending_payment", "cancelled"]
+ "enum": [
+ "all",
+ "confirmed",
+ "checked_in",
+ "not_checked_in",
+ "pending_payment",
+ "cancelled"
+ ]
},
"UpdateEventReservedCapacityDto": {
"type": "object",
@@ -23067,7 +24490,9 @@
"description": "Optional total capacity. Hosts may change capacity on live events without admin revision. Must be >= bookedCount + reservedCapacity; occupancy trigger flips published ↔ full."
}
},
- "required": ["reservedCapacity"]
+ "required": [
+ "reservedCapacity"
+ ]
},
"UpdateEventDto": {
"type": "object",
@@ -23182,7 +24607,9 @@
}
}
},
- "required": ["eventIds"]
+ "required": [
+ "eventIds"
+ ]
},
"BookmarkBatchStatusResponseDto": {
"type": "object",
@@ -23195,7 +24622,9 @@
}
}
},
- "required": ["bookmarkedEventIds"]
+ "required": [
+ "bookmarkedEventIds"
+ ]
},
"BookmarkStateResponseDto": {
"type": "object",
@@ -23204,7 +24633,9 @@
"type": "boolean"
}
},
- "required": ["isBookmarked"]
+ "required": [
+ "isBookmarked"
+ ]
},
"DiscoveryEventOrganizerDto": {
"type": "object",
@@ -23218,7 +24649,10 @@
"nullable": true
}
},
- "required": ["firstName", "lastName"]
+ "required": [
+ "firstName",
+ "lastName"
+ ]
},
"DiscoveryEventResponseDto": {
"type": "object",
@@ -23465,7 +24899,11 @@
"type": "string"
}
},
- "required": ["id", "name", "slug"]
+ "required": [
+ "id",
+ "name",
+ "slug"
+ ]
},
"EventLandingCityDto": {
"type": "object",
@@ -23477,7 +24915,10 @@
"type": "string"
}
},
- "required": ["id", "name"]
+ "required": [
+ "id",
+ "name"
+ ]
},
"EventLandingOrganizerContactLinkDto": {
"type": "object",
@@ -23492,7 +24933,11 @@
"type": "string"
}
},
- "required": ["channel", "label", "url"]
+ "required": [
+ "channel",
+ "label",
+ "url"
+ ]
},
"EventLandingOrganizerDto": {
"type": "object",
@@ -23513,7 +24958,11 @@
},
"gender": {
"type": "string",
- "enum": ["male", "female", "other"],
+ "enum": [
+ "male",
+ "female",
+ "other"
+ ],
"nullable": true
},
"bio": {
@@ -23565,7 +25014,11 @@
},
"ReviewStatus": {
"type": "string",
- "enum": ["published", "hidden", "deleted"],
+ "enum": [
+ "published",
+ "hidden",
+ "deleted"
+ ],
"description": "Publication status."
},
"ReviewUserSummaryDto": {
@@ -23596,7 +25049,12 @@
"nullable": true
}
},
- "required": ["id", "firstName", "lastName", "avatarUrl"]
+ "required": [
+ "id",
+ "firstName",
+ "lastName",
+ "avatarUrl"
+ ]
},
"ReviewResponseDto": {
"type": "object",
@@ -23681,7 +25139,18 @@
]
}
},
- "required": ["id", "eventId", "userId", "bookingId", "rating", "body", "status", "createdAt", "updatedAt", "user"]
+ "required": [
+ "id",
+ "eventId",
+ "userId",
+ "bookingId",
+ "rating",
+ "body",
+ "status",
+ "createdAt",
+ "updatedAt",
+ "user"
+ ]
},
"EventLandingBootstrapResponseDto": {
"type": "object",
@@ -23723,7 +25192,17 @@
"type": "number"
}
},
- "required": ["event", "category", "city", "media", "faqs", "faqsTotal", "organizer", "reviews", "reviewsTotal"]
+ "required": [
+ "event",
+ "category",
+ "city",
+ "media",
+ "faqs",
+ "faqsTotal",
+ "organizer",
+ "reviews",
+ "reviewsTotal"
+ ]
},
"EventViewerBookingDto": {
"type": "object",
@@ -23734,10 +25213,20 @@
},
"status": {
"type": "string",
- "enum": ["pending_payment", "confirmed", "cancelled", "expired", "refunded", "no_show"]
+ "enum": [
+ "pending_payment",
+ "confirmed",
+ "cancelled",
+ "expired",
+ "refunded",
+ "no_show"
+ ]
}
},
- "required": ["id", "status"]
+ "required": [
+ "id",
+ "status"
+ ]
},
"EventViewerWaitlistDto": {
"type": "object",
@@ -23748,10 +25237,20 @@
},
"status": {
"type": "string",
- "enum": ["waiting", "notified", "accepted", "expired", "cancelled", "converted"]
+ "enum": [
+ "waiting",
+ "notified",
+ "accepted",
+ "expired",
+ "cancelled",
+ "converted"
+ ]
}
},
- "required": ["id", "status"]
+ "required": [
+ "id",
+ "status"
+ ]
},
"EventViewerLocationDto": {
"type": "object",
@@ -23766,7 +25265,11 @@
"type": "number"
}
},
- "required": ["address", "lat", "lng"]
+ "required": [
+ "address",
+ "lat",
+ "lng"
+ ]
},
"EventViewerStateResponseDto": {
"type": "object",
@@ -23817,7 +25320,11 @@
"description": "Empty when canJoinAudience is true.",
"items": {
"type": "string",
- "enum": ["gender", "age", "city"]
+ "enum": [
+ "gender",
+ "age",
+ "city"
+ ]
}
}
},
@@ -23841,7 +25348,9 @@
"maxLength": 2000
}
},
- "required": ["rejectionReason"]
+ "required": [
+ "rejectionReason"
+ ]
},
"AdminEventRelationSummaryDto": {
"type": "object",
@@ -23853,7 +25362,10 @@
"type": "string"
}
},
- "required": ["id", "name"]
+ "required": [
+ "id",
+ "name"
+ ]
},
"AdminEventOrganizerSummaryDto": {
"type": "object",
@@ -23875,7 +25387,9 @@
"nullable": true
}
},
- "required": ["id"]
+ "required": [
+ "id"
+ ]
},
"AdminEventResponseDto": {
"type": "object",
@@ -23917,7 +25431,18 @@
"$ref": "#/components/schemas/AdminEventOrganizerSummaryDto"
}
},
- "required": ["id", "title", "startsAt", "status", "isFree", "price", "category", "province", "city", "organizer"]
+ "required": [
+ "id",
+ "title",
+ "startsAt",
+ "status",
+ "isFree",
+ "price",
+ "category",
+ "province",
+ "city",
+ "organizer"
+ ]
},
"AdminCreateEventDto": {
"type": "object",
@@ -24317,7 +25842,9 @@
"maxLength": 2000
}
},
- "required": ["rejectionReason"]
+ "required": [
+ "rejectionReason"
+ ]
},
"DiscoveryCategorySummaryDto": {
"type": "object",
@@ -24348,7 +25875,14 @@
"example": true
}
},
- "required": ["id", "name", "slug", "parentId", "sortOrder", "isActive"]
+ "required": [
+ "id",
+ "name",
+ "slug",
+ "parentId",
+ "sortOrder",
+ "isActive"
+ ]
},
"HomeFeedOrganizerDto": {
"type": "object",
@@ -24390,7 +25924,14 @@
"$ref": "#/components/schemas/HomeFeedOrganizerDto"
}
},
- "required": ["id", "title", "slug", "posterUrl", "squarePosterUrl", "organizer"]
+ "required": [
+ "id",
+ "title",
+ "slug",
+ "posterUrl",
+ "squarePosterUrl",
+ "organizer"
+ ]
},
"HomeCategoryPreviewEventDto": {
"type": "object",
@@ -24424,7 +25965,15 @@
"nullable": true
}
},
- "required": ["id", "title", "slug", "startsAt", "endsAt", "posterUrl", "squarePosterUrl"]
+ "required": [
+ "id",
+ "title",
+ "slug",
+ "startsAt",
+ "endsAt",
+ "posterUrl",
+ "squarePosterUrl"
+ ]
},
"HomeFeedCategoryPreviewGroupDto": {
"type": "object",
@@ -24440,7 +25989,10 @@
}
}
},
- "required": ["categoryId", "items"]
+ "required": [
+ "categoryId",
+ "items"
+ ]
},
"HomeCityPreviewEventDto": {
"type": "object",
@@ -24544,7 +26096,10 @@
}
}
},
- "required": ["cityId", "items"]
+ "required": [
+ "cityId",
+ "items"
+ ]
},
"HomeFeedResponseDto": {
"type": "object",
@@ -24568,7 +26123,11 @@
}
}
},
- "required": ["popular", "categoryPreviews", "cityPreviews"]
+ "required": [
+ "popular",
+ "categoryPreviews",
+ "cityPreviews"
+ ]
},
"DiscoveryBootstrapResponseDto": {
"type": "object",
@@ -24586,7 +26145,10 @@
}
}
},
- "required": ["categories", "cities"]
+ "required": [
+ "categories",
+ "cities"
+ ]
},
"FollowUserSummaryDto": {
"type": "object",
@@ -24620,7 +26182,10 @@
]
}
},
- "required": ["firstName", "lastName"]
+ "required": [
+ "firstName",
+ "lastName"
+ ]
},
"FollowResponseDto": {
"type": "object",
@@ -24646,7 +26211,10 @@
"status": {
"type": "string",
"description": "Follow status.",
- "enum": ["active", "muted"],
+ "enum": [
+ "active",
+ "muted"
+ ],
"example": "active"
},
"notifyNewEvents": {
@@ -24669,7 +26237,14 @@
]
}
},
- "required": ["id", "followerId", "organizerId", "status", "notifyNewEvents", "createdAt"]
+ "required": [
+ "id",
+ "followerId",
+ "organizerId",
+ "status",
+ "notifyNewEvents",
+ "createdAt"
+ ]
},
"UpdateFollowSettingsDto": {
"type": "object",
@@ -24686,7 +26261,10 @@
"properties": {
"mediaType": {
"type": "string",
- "enum": ["image", "video"]
+ "enum": [
+ "image",
+ "video"
+ ]
},
"url": {
"type": "string"
@@ -24739,7 +26317,11 @@
"nullable": true
}
},
- "required": ["userId", "firstName", "lastName"]
+ "required": [
+ "userId",
+ "firstName",
+ "lastName"
+ ]
},
"OrganizerGuestListResponseDto": {
"type": "object",
@@ -24761,7 +26343,10 @@
},
"kind": {
"type": "string",
- "enum": ["manual", "previous_attendees"]
+ "enum": [
+ "manual",
+ "previous_attendees"
+ ]
},
"createdAt": {
"format": "date-time",
@@ -24772,7 +26357,15 @@
"type": "string"
}
},
- "required": ["id", "organizerId", "name", "description", "kind", "createdAt", "updatedAt"]
+ "required": [
+ "id",
+ "organizerId",
+ "name",
+ "description",
+ "kind",
+ "createdAt",
+ "updatedAt"
+ ]
},
"CreateOrganizerGuestListDto": {
"type": "object",
@@ -24787,7 +26380,9 @@
"example": "مهمانان رویدادهای قبلی و مخاطبین میزبان"
}
},
- "required": ["name"]
+ "required": [
+ "name"
+ ]
},
"GuestListItemResponseDto": {
"type": "object",
@@ -24826,7 +26421,15 @@
"type": "string"
}
},
- "required": ["id", "listId", "firstName", "lastName", "userId", "note", "createdAt"]
+ "required": [
+ "id",
+ "listId",
+ "firstName",
+ "lastName",
+ "userId",
+ "note",
+ "createdAt"
+ ]
},
"AddGuestListItemDto": {
"type": "object",
@@ -24851,21 +26454,27 @@
"type": "string"
}
},
- "required": ["mobile"]
+ "required": [
+ "mobile"
+ ]
},
"SetEventInvitedGuestsDto": {
"type": "object",
"properties": {
"userIds": {
"description": "Full replacement set of platform user ids invited to this event from the host guest list. An empty array clears the invite set.",
- "example": ["b3f1c2a0-1111-4111-8111-b3f1c2a01111"],
+ "example": [
+ "b3f1c2a0-1111-4111-8111-b3f1c2a01111"
+ ],
"type": "array",
"items": {
"type": "string"
}
}
},
- "required": ["userIds"]
+ "required": [
+ "userIds"
+ ]
},
"InvitedGuestResponseDto": {
"type": "object",
@@ -24888,7 +26497,11 @@
"nullable": true
}
},
- "required": ["userId", "firstName", "lastName"]
+ "required": [
+ "userId",
+ "firstName",
+ "lastName"
+ ]
},
"GuestListNotifyResultDto": {
"type": "object",
@@ -24906,7 +26519,11 @@
"type": "string"
}
},
- "required": ["sent", "skipped", "notifiedAt"]
+ "required": [
+ "sent",
+ "skipped",
+ "notifiedAt"
+ ]
},
"GuestListLinkResponseDto": {
"type": "object",
@@ -24932,7 +26549,12 @@
"type": "string"
}
},
- "required": ["eventId", "listId", "notifiedAt", "createdAt"]
+ "required": [
+ "eventId",
+ "listId",
+ "notifiedAt",
+ "createdAt"
+ ]
},
"LinkGuestListToEventDto": {
"type": "object",
@@ -24942,7 +26564,9 @@
"description": "Guest list to attach to the event"
}
},
- "required": ["listId"]
+ "required": [
+ "listId"
+ ]
},
"CreatePaymentDto": {
"type": "object",
@@ -24962,11 +26586,21 @@
},
"PaymentMethod": {
"type": "string",
- "enum": ["gateway", "wallet", "mixed"]
+ "enum": [
+ "gateway",
+ "wallet",
+ "mixed"
+ ]
},
"PaymentStatus": {
"type": "string",
- "enum": ["pending", "processing", "succeeded", "failed", "cancelled"]
+ "enum": [
+ "pending",
+ "processing",
+ "succeeded",
+ "failed",
+ "cancelled"
+ ]
},
"PaymentCheckoutResponseDto": {
"type": "object",
@@ -24979,7 +26613,10 @@
"format": "uri"
}
},
- "required": ["trackingId", "paymentUrl"]
+ "required": [
+ "trackingId",
+ "paymentUrl"
+ ]
},
"CreatePaymentResponseDto": {
"type": "object",
@@ -25123,7 +26760,9 @@
"example": "SAVE20AB"
}
},
- "required": ["code"]
+ "required": [
+ "code"
+ ]
},
"DiscountPreviewResponseDto": {
"type": "object",
@@ -25134,7 +26773,10 @@
},
"type": {
"type": "string",
- "enum": ["percent", "fixed"]
+ "enum": [
+ "percent",
+ "fixed"
+ ]
},
"value": {
"type": "number",
@@ -25153,7 +26795,14 @@
"example": 80000
}
},
- "required": ["code", "type", "value", "listAmount", "discountAmount", "payableAmount"]
+ "required": [
+ "code",
+ "type",
+ "value",
+ "listAmount",
+ "discountAmount",
+ "payableAmount"
+ ]
},
"PaymentResponseDto": {
"type": "object",
@@ -25291,7 +26940,16 @@
"type": "string"
}
},
- "required": ["id", "paymentId", "userId", "bookingId", "eventId", "receiptCode", "snapshot", "issuedAt"]
+ "required": [
+ "id",
+ "paymentId",
+ "userId",
+ "bookingId",
+ "eventId",
+ "receiptCode",
+ "snapshot",
+ "issuedAt"
+ ]
},
"FinancialUserSummaryDto": {
"type": "object",
@@ -25312,7 +26970,10 @@
"nullable": true
}
},
- "required": ["id", "mobile"]
+ "required": [
+ "id",
+ "mobile"
+ ]
},
"AdminPaymentResponseDto": {
"type": "object",
@@ -25447,7 +27108,10 @@
},
"purpose": {
"type": "string",
- "enum": ["top_up", "booking_checkout"]
+ "enum": [
+ "top_up",
+ "booking_checkout"
+ ]
},
"amount": {
"type": "number",
@@ -25465,7 +27129,13 @@
},
"status": {
"type": "string",
- "enum": ["pending", "processing", "succeeded", "failed", "cancelled"]
+ "enum": [
+ "pending",
+ "processing",
+ "succeeded",
+ "failed",
+ "cancelled"
+ ]
},
"gatewayProvider": {
"type": "string",
@@ -25544,11 +27214,24 @@
"type": "string"
}
},
- "required": ["id", "userId", "balance", "createdAt", "updatedAt"]
+ "required": [
+ "id",
+ "userId",
+ "balance",
+ "createdAt",
+ "updatedAt"
+ ]
},
"WalletTransactionType": {
"type": "string",
- "enum": ["booking_payment", "refund_guest_cancel", "refund_event_cancel", "organizer_earning", "withdrawal", "deposit"]
+ "enum": [
+ "booking_payment",
+ "refund_guest_cancel",
+ "refund_event_cancel",
+ "organizer_earning",
+ "withdrawal",
+ "deposit"
+ ]
},
"WalletTransactionResponseDto": {
"type": "object",
@@ -25601,7 +27284,16 @@
"type": "string"
}
},
- "required": ["id", "walletId", "userId", "transactionCode", "type", "amount", "balanceAfter", "createdAt"]
+ "required": [
+ "id",
+ "walletId",
+ "userId",
+ "transactionCode",
+ "type",
+ "amount",
+ "balanceAfter",
+ "createdAt"
+ ]
},
"CreateWalletDepositDto": {
"type": "object",
@@ -25612,7 +27304,9 @@
"minimum": 10000
}
},
- "required": ["amount"]
+ "required": [
+ "amount"
+ ]
},
"CreateWalletDepositResponseDto": {
"type": "object",
@@ -25634,7 +27328,10 @@
},
"purpose": {
"type": "string",
- "enum": ["top_up", "booking_checkout"]
+ "enum": [
+ "top_up",
+ "booking_checkout"
+ ]
},
"amount": {
"type": "number",
@@ -25652,7 +27349,13 @@
},
"status": {
"type": "string",
- "enum": ["pending", "processing", "succeeded", "failed", "cancelled"]
+ "enum": [
+ "pending",
+ "processing",
+ "succeeded",
+ "failed",
+ "cancelled"
+ ]
},
"gatewayProvider": {
"type": "string",
@@ -25738,7 +27441,10 @@
},
"purpose": {
"type": "string",
- "enum": ["top_up", "booking_checkout"]
+ "enum": [
+ "top_up",
+ "booking_checkout"
+ ]
},
"amount": {
"type": "number",
@@ -25756,7 +27462,13 @@
},
"status": {
"type": "string",
- "enum": ["pending", "processing", "succeeded", "failed", "cancelled"]
+ "enum": [
+ "pending",
+ "processing",
+ "succeeded",
+ "failed",
+ "cancelled"
+ ]
},
"gatewayProvider": {
"type": "string",
@@ -25812,7 +27524,10 @@
"properties": {
"status": {
"type": "string",
- "enum": ["succeeded", "failed"]
+ "enum": [
+ "succeeded",
+ "failed"
+ ]
},
"signature": {
"type": "string"
@@ -25837,7 +27552,12 @@
"type": "string"
}
},
- "required": ["status", "signature", "timestamp", "nonce"]
+ "required": [
+ "status",
+ "signature",
+ "timestamp",
+ "nonce"
+ ]
},
"CreateBankAccountDto": {
"type": "object",
@@ -25852,15 +27572,24 @@
"example": "0012345678"
}
},
- "required": ["iban"]
+ "required": [
+ "iban"
+ ]
},
"BankAccountOwnerType": {
"type": "string",
- "enum": ["guest", "organizer"]
+ "enum": [
+ "guest",
+ "organizer"
+ ]
},
"BankAccountVerificationStatus": {
"type": "string",
- "enum": ["pending_review", "approved", "rejected"]
+ "enum": [
+ "pending_review",
+ "approved",
+ "rejected"
+ ]
},
"BankAccountResponseDto": {
"type": "object",
@@ -25957,7 +27686,9 @@
"minLength": 3
}
},
- "required": ["reason"]
+ "required": [
+ "reason"
+ ]
},
"CreateWithdrawalRequestDto": {
"type": "object",
@@ -25971,11 +27702,19 @@
"description": "Amount in Toman"
}
},
- "required": ["bankAccountId", "amount"]
+ "required": [
+ "bankAccountId",
+ "amount"
+ ]
},
"WithdrawalStatus": {
"type": "string",
- "enum": ["pending", "processing", "completed", "rejected"]
+ "enum": [
+ "pending",
+ "processing",
+ "completed",
+ "rejected"
+ ]
},
"WithdrawalUserSummaryDto": {
"type": "object",
@@ -25992,7 +27731,9 @@
"nullable": true
}
},
- "required": ["mobile"]
+ "required": [
+ "mobile"
+ ]
},
"WithdrawalBankAccountSummaryDto": {
"type": "object",
@@ -26001,7 +27742,9 @@
"type": "string"
}
},
- "required": ["iban"]
+ "required": [
+ "iban"
+ ]
},
"WithdrawalResponseDto": {
"type": "object",
@@ -26109,7 +27852,10 @@
"description": "Optional admin note shown to the recipient"
}
},
- "required": ["trackingCode", "receiptUrl"]
+ "required": [
+ "trackingCode",
+ "receiptUrl"
+ ]
},
"RejectWithdrawalRequestDto": {
"type": "object",
@@ -26118,11 +27864,18 @@
"type": "string"
}
},
- "required": ["reason"]
+ "required": [
+ "reason"
+ ]
},
"OrganizerEarningStatus": {
"type": "string",
- "enum": ["held", "available", "settled", "cancelled"]
+ "enum": [
+ "held",
+ "available",
+ "settled",
+ "cancelled"
+ ]
},
"OrganizerEarningResponseDto": {
"type": "object",
@@ -26206,7 +27959,12 @@
},
"SettlementBatchStatus": {
"type": "string",
- "enum": ["pending", "processing", "completed", "failed"]
+ "enum": [
+ "pending",
+ "processing",
+ "completed",
+ "failed"
+ ]
},
"SettlementItemResponseDto": {
"type": "object",
@@ -26230,7 +27988,13 @@
"type": "string"
}
},
- "required": ["id", "amount", "organizerEarningId", "eventId", "eventTitle"]
+ "required": [
+ "id",
+ "amount",
+ "organizerEarningId",
+ "eventId",
+ "eventTitle"
+ ]
},
"SettlementResponseDto": {
"type": "object",
@@ -26336,7 +28100,12 @@
"example": "2026-07-07"
}
},
- "required": ["organizerId", "bankAccountId", "periodStart", "periodEnd"]
+ "required": [
+ "organizerId",
+ "bankAccountId",
+ "periodStart",
+ "periodEnd"
+ ]
},
"FailSettlementDto": {
"type": "object",
@@ -26345,14 +28114,19 @@
"type": "string"
}
},
- "required": ["reason"]
+ "required": [
+ "reason"
+ ]
},
"CreateDiscountCodesDto": {
"type": "object",
"properties": {
"type": {
"type": "string",
- "enum": ["percent", "fixed"],
+ "enum": [
+ "percent",
+ "fixed"
+ ],
"example": "percent"
},
"value": {
@@ -26392,12 +28166,19 @@
},
"bearer": {
"type": "string",
- "enum": ["organizer", "platform"],
+ "enum": [
+ "organizer",
+ "platform"
+ ],
"description": "Who absorbs the discount. Admin-only; host requests are always forced to \"organizer\".",
"example": "organizer"
}
},
- "required": ["type", "value", "quantity"]
+ "required": [
+ "type",
+ "value",
+ "quantity"
+ ]
},
"DiscountCodeResponseDto": {
"type": "object",
@@ -26416,7 +28197,10 @@
},
"type": {
"type": "string",
- "enum": ["percent", "fixed"]
+ "enum": [
+ "percent",
+ "fixed"
+ ]
},
"value": {
"type": "number",
@@ -26424,7 +28208,10 @@
},
"bearer": {
"type": "string",
- "enum": ["organizer", "platform"]
+ "enum": [
+ "organizer",
+ "platform"
+ ]
},
"maxUses": {
"type": "number",
@@ -26495,7 +28282,10 @@
},
"codes": {
"description": "The generated codes, ready to share",
- "example": ["SAVE20AB", "SAVE20CD"],
+ "example": [
+ "SAVE20AB",
+ "SAVE20CD"
+ ],
"type": "array",
"items": {
"type": "string"
@@ -26508,7 +28298,12 @@
}
}
},
- "required": ["batchId", "count", "codes", "items"]
+ "required": [
+ "batchId",
+ "count",
+ "codes",
+ "items"
+ ]
},
"DiscountCodePageDto": {
"type": "object",
@@ -26520,7 +28315,9 @@
}
}
},
- "required": ["items"]
+ "required": [
+ "items"
+ ]
},
"DiscountReportSummaryDto": {
"type": "object",
@@ -26549,7 +28346,13 @@
"example": 70000
}
},
- "required": ["totalCodes", "totalRedemptions", "totalDiscountAmount", "totalPlatformAbsorbed", "totalOrganizerAbsorbed"]
+ "required": [
+ "totalCodes",
+ "totalRedemptions",
+ "totalDiscountAmount",
+ "totalPlatformAbsorbed",
+ "totalOrganizerAbsorbed"
+ ]
},
"DiscountRedemptionResponseDto": {
"type": "object",
@@ -26600,7 +28403,10 @@
},
"bearer": {
"type": "string",
- "enum": ["organizer", "platform"]
+ "enum": [
+ "organizer",
+ "platform"
+ ]
},
"platformAbsorbedAmount": {
"type": "number",
@@ -26641,7 +28447,9 @@
}
}
},
- "required": ["items"]
+ "required": [
+ "items"
+ ]
},
"DiscountManagementBootstrapResponseDto": {
"type": "object",
@@ -26656,7 +28464,11 @@
"$ref": "#/components/schemas/DiscountRedemptionPageDto"
}
},
- "required": ["codes", "report", "redemptions"]
+ "required": [
+ "codes",
+ "report",
+ "redemptions"
+ ]
},
"UpdateDiscountCodeDto": {
"type": "object",
@@ -26667,11 +28479,16 @@
"example": false
}
},
- "required": ["isActive"]
+ "required": [
+ "isActive"
+ ]
},
"TrafficSource": {
"type": "string",
- "enum": ["instagram", "telegram"],
+ "enum": [
+ "instagram",
+ "telegram"
+ ],
"description": "First-touch attribution from a tagged share link. Ignored if invalid."
},
"CreateBookingDto": {
@@ -26834,7 +28651,9 @@
"description": "Cancellation reason — mandatory (booking-cancellation-refund.md: required from the product’s point of view, previously only optional in this DTO)."
}
},
- "required": ["cancellationReason"]
+ "required": [
+ "cancellationReason"
+ ]
},
"JoinWaitlistDto": {
"type": "object",
@@ -26851,7 +28670,14 @@
},
"WaitlistStatus": {
"type": "string",
- "enum": ["waiting", "notified", "accepted", "expired", "cancelled", "converted"]
+ "enum": [
+ "waiting",
+ "notified",
+ "accepted",
+ "expired",
+ "cancelled",
+ "converted"
+ ]
},
"WaitlistResponseDto": {
"type": "object",
@@ -26899,7 +28725,14 @@
"type": "string"
}
},
- "required": ["id", "eventId", "userId", "status", "createdAt", "updatedAt"]
+ "required": [
+ "id",
+ "eventId",
+ "userId",
+ "status",
+ "createdAt",
+ "updatedAt"
+ ]
},
"WaitlistAcceptedBookingDto": {
"type": "object",
@@ -26964,7 +28797,16 @@
"type": "string"
}
},
- "required": ["id", "eventId", "userId", "bookingCode", "status", "cancellationReason", "createdAt", "updatedAt"]
+ "required": [
+ "id",
+ "eventId",
+ "userId",
+ "bookingCode",
+ "status",
+ "cancellationReason",
+ "createdAt",
+ "updatedAt"
+ ]
},
"WaitlistAcceptResponseDto": {
"type": "object",
@@ -26977,7 +28819,10 @@
"$ref": "#/components/schemas/WaitlistAcceptedBookingDto"
}
},
- "required": ["waitlistEntryId", "booking"]
+ "required": [
+ "waitlistEntryId",
+ "booking"
+ ]
},
"AdminBookingEventDto": {
"type": "object",
@@ -27005,7 +28850,13 @@
"format": "uuid"
}
},
- "required": ["id", "title", "startsAt", "status", "organizerId"]
+ "required": [
+ "id",
+ "title",
+ "startsAt",
+ "status",
+ "organizerId"
+ ]
},
"AdminBookingUserDto": {
"type": "object",
@@ -27026,7 +28877,10 @@
"nullable": true
}
},
- "required": ["id", "mobile"]
+ "required": [
+ "id",
+ "mobile"
+ ]
},
"AdminBookingResponseDto": {
"type": "object",
@@ -27305,7 +29159,10 @@
"maxLength": 5000
}
},
- "required": ["bookingId", "rating"]
+ "required": [
+ "bookingId",
+ "rating"
+ ]
},
"UpdateReviewDto": {
"type": "object",
@@ -27353,7 +29210,10 @@
"example": "Tehran hiking meetup"
}
},
- "required": ["id", "title"]
+ "required": [
+ "id",
+ "title"
+ ]
},
"AdminReviewResponseDto": {
"type": "object",
@@ -27446,7 +29306,19 @@
]
}
},
- "required": ["id", "eventId", "userId", "bookingId", "rating", "body", "status", "createdAt", "updatedAt", "user", "event"]
+ "required": [
+ "id",
+ "eventId",
+ "userId",
+ "bookingId",
+ "rating",
+ "body",
+ "status",
+ "createdAt",
+ "updatedAt",
+ "user",
+ "event"
+ ]
},
"UnreadCountResponseDto": {
"type": "object",
@@ -27457,11 +29329,16 @@
"example": 3
}
},
- "required": ["totalUnread"]
+ "required": [
+ "totalUnread"
+ ]
},
"ConversationType": {
"type": "string",
- "enum": ["event_group", "direct"],
+ "enum": [
+ "event_group",
+ "direct"
+ ],
"description": "Conversation type."
},
"ConversationResponseDto": {
@@ -27556,7 +29433,14 @@
"format": "date-time"
}
},
- "required": ["id", "type", "unreadCount", "memberCount", "messagingBlocked", "createdAt"]
+ "required": [
+ "id",
+ "type",
+ "unreadCount",
+ "memberCount",
+ "messagingBlocked",
+ "createdAt"
+ ]
},
"SendMessageDto": {
"type": "object",
@@ -27615,7 +29499,13 @@
"description": "True when the parent cannot be jumped to (soft-deleted, missing, or wrong conversation)."
}
},
- "required": ["id", "senderId", "senderDisplayName", "hasImage", "isUnavailable"]
+ "required": [
+ "id",
+ "senderId",
+ "senderDisplayName",
+ "hasImage",
+ "isUnavailable"
+ ]
},
"MessageResponseDto": {
"type": "object",
@@ -27697,7 +29587,12 @@
"format": "date-time"
}
},
- "required": ["id", "conversationId", "senderId", "createdAt"]
+ "required": [
+ "id",
+ "conversationId",
+ "senderId",
+ "createdAt"
+ ]
},
"ConversationParticipantResponseDto": {
"type": "object",
@@ -27744,7 +29639,10 @@
"format": "date-time"
}
},
- "required": ["userId", "joinedAt"]
+ "required": [
+ "userId",
+ "joinedAt"
+ ]
},
"MarkConversationReadDto": {
"type": "object",
@@ -27755,7 +29653,9 @@
"format": "uuid"
}
},
- "required": ["lastSeenMessageId"]
+ "required": [
+ "lastSeenMessageId"
+ ]
},
"AdminChatUserDto": {
"type": "object",
@@ -27803,7 +29703,12 @@
"format": "date-time"
}
},
- "required": ["userId", "mobile", "status", "joinedAt"]
+ "required": [
+ "userId",
+ "mobile",
+ "status",
+ "joinedAt"
+ ]
},
"AdminConversationResponseDto": {
"type": "object",
@@ -27857,7 +29762,13 @@
"format": "date-time"
}
},
- "required": ["id", "type", "participantPreview", "memberCount", "createdAt"]
+ "required": [
+ "id",
+ "type",
+ "participantPreview",
+ "memberCount",
+ "createdAt"
+ ]
},
"AdminMessageResponseDto": {
"type": "object",
@@ -27923,7 +29834,13 @@
"format": "date-time"
}
},
- "required": ["id", "conversationId", "senderId", "senderMobile", "createdAt"]
+ "required": [
+ "id",
+ "conversationId",
+ "senderId",
+ "senderMobile",
+ "createdAt"
+ ]
},
"CreateContactMessageDto": {
"type": "object",
@@ -27962,7 +29879,13 @@
"maxLength": 4096
}
},
- "required": ["fullName", "mobile", "subject", "message", "arcaptchaToken"]
+ "required": [
+ "fullName",
+ "mobile",
+ "subject",
+ "message",
+ "arcaptchaToken"
+ ]
},
"ContactMessageResponseDto": {
"type": "object",
@@ -28014,14 +29937,24 @@
"format": "date-time"
}
},
- "required": ["id", "fullName", "mobile", "subject", "message", "createdAt"]
+ "required": [
+ "id",
+ "fullName",
+ "mobile",
+ "subject",
+ "message",
+ "createdAt"
+ ]
},
"CreateTrafficVisitDto": {
"type": "object",
"properties": {
"pageKind": {
"type": "string",
- "enum": ["home", "event"]
+ "enum": [
+ "home",
+ "event"
+ ]
},
"eventId": {
"type": "string",
@@ -28041,7 +29974,11 @@
"description": "Durable anonymous visitor id from the browser localStorage."
}
},
- "required": ["pageKind", "source", "visitorKey"]
+ "required": [
+ "pageKind",
+ "source",
+ "visitorKey"
+ ]
},
"CreateUserBlockDto": {
"type": "object",
@@ -28053,7 +29990,9 @@
"format": "uuid"
}
},
- "required": ["blockedId"]
+ "required": [
+ "blockedId"
+ ]
},
"UserBlockUserSummaryDto": {
"type": "object",
@@ -28071,7 +30010,10 @@
"nullable": true
}
},
- "required": ["firstName", "lastName"]
+ "required": [
+ "firstName",
+ "lastName"
+ ]
},
"UserBlockResponseDto": {
"type": "object",
@@ -28109,7 +30051,13 @@
]
}
},
- "required": ["id", "blockerId", "blockedId", "createdAt", "blockedUser"]
+ "required": [
+ "id",
+ "blockerId",
+ "blockedId",
+ "createdAt",
+ "blockedUser"
+ ]
},
"ReportReasonResponseDto": {
"type": "object",
@@ -28141,7 +30089,12 @@
"minimum": 0
}
},
- "required": ["id", "code", "label", "sortOrder"]
+ "required": [
+ "id",
+ "code",
+ "label",
+ "sortOrder"
+ ]
},
"CreateUserReportDto": {
"type": "object",
@@ -28171,11 +30124,17 @@
"format": "uuid"
}
},
- "required": ["reportedId"]
+ "required": [
+ "reportedId"
+ ]
},
"ReportStatus": {
"type": "string",
- "enum": ["pending", "reviewed", "dismissed"],
+ "enum": [
+ "pending",
+ "reviewed",
+ "dismissed"
+ ],
"description": "Report review status."
},
"UserReportResponseDto": {
@@ -28268,7 +30227,13 @@
"format": "date-time"
}
},
- "required": ["id", "reporterId", "reportedId", "status", "createdAt"]
+ "required": [
+ "id",
+ "reporterId",
+ "reportedId",
+ "status",
+ "createdAt"
+ ]
},
"UserReportUserSummaryDto": {
"type": "object",
@@ -28291,7 +30256,11 @@
"nullable": true
}
},
- "required": ["mobile", "firstName", "lastName"]
+ "required": [
+ "mobile",
+ "firstName",
+ "lastName"
+ ]
},
"AdminUserReportResponseDto": {
"type": "object",
@@ -28407,7 +30376,15 @@
]
}
},
- "required": ["id", "reporterId", "reportedId", "status", "createdAt", "reporter", "reported"]
+ "required": [
+ "id",
+ "reporterId",
+ "reportedId",
+ "status",
+ "createdAt",
+ "reporter",
+ "reported"
+ ]
},
"AdminUserReportBlockResponseDto": {
"type": "object",
@@ -28429,7 +30406,10 @@
]
}
},
- "required": ["report", "block"]
+ "required": [
+ "report",
+ "block"
+ ]
},
"CreateSupportTicketDto": {
"type": "object",
@@ -28440,12 +30420,24 @@
},
"category": {
"type": "string",
- "enum": ["general", "account", "event", "booking", "payment", "technical"],
+ "enum": [
+ "general",
+ "account",
+ "event",
+ "booking",
+ "payment",
+ "technical"
+ ],
"example": "payment"
},
"priority": {
"type": "string",
- "enum": ["low", "normal", "high", "urgent"],
+ "enum": [
+ "low",
+ "normal",
+ "high",
+ "urgent"
+ ],
"example": "normal"
},
"message": {
@@ -28453,7 +30445,12 @@
"example": "پرداخت انجام شد اما رزرو ثبت نشده است."
}
},
- "required": ["subject", "category", "priority", "message"]
+ "required": [
+ "subject",
+ "category",
+ "priority",
+ "message"
+ ]
},
"SupportTicketUserResponseDto": {
"type": "object",
@@ -28468,7 +30465,9 @@
"example": "علی رضایی"
}
},
- "required": ["mobile"]
+ "required": [
+ "mobile"
+ ]
},
"SupportTicketMessageResponseDto": {
"type": "object",
@@ -28492,7 +30491,13 @@
"format": "date-time"
}
},
- "required": ["id", "senderId", "body", "isAdmin", "createdAt"]
+ "required": [
+ "id",
+ "senderId",
+ "body",
+ "isAdmin",
+ "createdAt"
+ ]
},
"SupportTicketResponseDto": {
"type": "object",
@@ -28510,15 +30515,32 @@
},
"category": {
"type": "string",
- "enum": ["general", "account", "event", "booking", "payment", "technical"]
+ "enum": [
+ "general",
+ "account",
+ "event",
+ "booking",
+ "payment",
+ "technical"
+ ]
},
"priority": {
"type": "string",
- "enum": ["low", "normal", "high", "urgent"]
+ "enum": [
+ "low",
+ "normal",
+ "high",
+ "urgent"
+ ]
},
"status": {
"type": "string",
- "enum": ["open", "waiting_admin", "waiting_user", "closed"]
+ "enum": [
+ "open",
+ "waiting_admin",
+ "waiting_user",
+ "closed"
+ ]
},
"lastMessageAt": {
"type": "string",
@@ -28531,7 +30553,10 @@
},
"closedBy": {
"type": "string",
- "enum": ["user", "admin"],
+ "enum": [
+ "user",
+ "admin"
+ ],
"nullable": true,
"description": "Who closed the ticket. Consumers cannot reopen admin-closed tickets."
},
@@ -28549,7 +30574,18 @@
}
}
},
- "required": ["id", "userId", "subject", "category", "priority", "status", "lastMessageAt", "createdAt", "user", "messages"]
+ "required": [
+ "id",
+ "userId",
+ "subject",
+ "category",
+ "priority",
+ "status",
+ "lastMessageAt",
+ "createdAt",
+ "user",
+ "messages"
+ ]
},
"SupportTicketSummaryResponseDto": {
"type": "object",
@@ -28567,15 +30603,32 @@
},
"category": {
"type": "string",
- "enum": ["general", "account", "event", "booking", "payment", "technical"]
+ "enum": [
+ "general",
+ "account",
+ "event",
+ "booking",
+ "payment",
+ "technical"
+ ]
},
"priority": {
"type": "string",
- "enum": ["low", "normal", "high", "urgent"]
+ "enum": [
+ "low",
+ "normal",
+ "high",
+ "urgent"
+ ]
},
"status": {
"type": "string",
- "enum": ["open", "waiting_admin", "waiting_user", "closed"]
+ "enum": [
+ "open",
+ "waiting_admin",
+ "waiting_user",
+ "closed"
+ ]
},
"lastMessageAt": {
"type": "string",
@@ -28588,7 +30641,10 @@
},
"closedBy": {
"type": "string",
- "enum": ["user", "admin"],
+ "enum": [
+ "user",
+ "admin"
+ ],
"nullable": true,
"description": "Who closed the ticket. Consumers cannot reopen admin-closed tickets."
},
@@ -28610,7 +30666,17 @@
]
}
},
- "required": ["id", "userId", "subject", "category", "priority", "status", "lastMessageAt", "createdAt", "user"]
+ "required": [
+ "id",
+ "userId",
+ "subject",
+ "category",
+ "priority",
+ "status",
+ "lastMessageAt",
+ "createdAt",
+ "user"
+ ]
},
"ReplySupportTicketDto": {
"type": "object",
@@ -28620,17 +30686,26 @@
"example": "درخواست شما در حال بررسی است."
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
},
"UpdateSupportTicketStatusDto": {
"type": "object",
"properties": {
"status": {
"type": "string",
- "enum": ["open", "waiting_admin", "waiting_user", "closed"]
+ "enum": [
+ "open",
+ "waiting_admin",
+ "waiting_user",
+ "closed"
+ ]
}
},
- "required": ["status"]
+ "required": [
+ "status"
+ ]
},
"UserCountsDto": {
"type": "object",
@@ -28652,7 +30727,12 @@
"example": 12
}
},
- "required": ["total", "active", "pending", "suspended"]
+ "required": [
+ "total",
+ "active",
+ "pending",
+ "suspended"
+ ]
},
"EventStatusCountsDto": {
"type": "object",
@@ -28686,7 +30766,15 @@
"example": 210
}
},
- "required": ["draft", "pending_review", "published", "full", "rejected", "cancelled", "completed"]
+ "required": [
+ "draft",
+ "pending_review",
+ "published",
+ "full",
+ "rejected",
+ "cancelled",
+ "completed"
+ ]
},
"EventCountsDto": {
"type": "object",
@@ -28709,7 +30797,12 @@
"$ref": "#/components/schemas/EventStatusCountsDto"
}
},
- "required": ["total", "active", "totalHeld", "byStatus"]
+ "required": [
+ "total",
+ "active",
+ "totalHeld",
+ "byStatus"
+ ]
},
"BookingStatusCountsDto": {
"type": "object",
@@ -28739,7 +30832,14 @@
"example": 25
}
},
- "required": ["pending_payment", "confirmed", "cancelled", "expired", "refunded", "no_show"]
+ "required": [
+ "pending_payment",
+ "confirmed",
+ "cancelled",
+ "expired",
+ "refunded",
+ "no_show"
+ ]
},
"BookingCountsDto": {
"type": "object",
@@ -28752,7 +30852,10 @@
"$ref": "#/components/schemas/BookingStatusCountsDto"
}
},
- "required": ["total", "byStatus"]
+ "required": [
+ "total",
+ "byStatus"
+ ]
},
"IdentityVerificationCountsDto": {
"type": "object",
@@ -28774,7 +30877,12 @@
"example": 29
}
},
- "required": ["none", "pending", "verified", "rejected"]
+ "required": [
+ "none",
+ "pending",
+ "verified",
+ "rejected"
+ ]
},
"FinancialTotalsDto": {
"type": "object",
@@ -28790,7 +30898,10 @@
"description": "Sum of wallets.balance across all wallets (Toman, as a string)."
}
},
- "required": ["totalCommissionCollected", "totalWalletBalance"]
+ "required": [
+ "totalCommissionCollected",
+ "totalWalletBalance"
+ ]
},
"AdminReportsOverviewDto": {
"type": "object",
@@ -28811,7 +30922,13 @@
"$ref": "#/components/schemas/FinancialTotalsDto"
}
},
- "required": ["users", "events", "bookings", "identityVerifications", "financial"]
+ "required": [
+ "users",
+ "events",
+ "bookings",
+ "identityVerifications",
+ "financial"
+ ]
},
"AdminUserContactLinkDto": {
"type": "object",
@@ -28844,11 +30961,22 @@
"type": "number"
}
},
- "required": ["id", "channel", "label", "value", "url", "isPublic", "displayOrder"]
+ "required": [
+ "id",
+ "channel",
+ "label",
+ "value",
+ "url",
+ "isPublic",
+ "displayOrder"
+ ]
},
"HostPlan": {
"type": "string",
- "enum": ["free", "unlimited"]
+ "enum": [
+ "free",
+ "unlimited"
+ ]
},
"AdminUserSummaryCountsDto": {
"type": "object",
@@ -28982,7 +31110,12 @@
},
"identityStatus": {
"type": "string",
- "enum": ["none", "pending", "verified", "rejected"]
+ "enum": [
+ "none",
+ "pending",
+ "verified",
+ "rejected"
+ ]
},
"identityVerifiedAt": {
"type": "string",
@@ -29056,7 +31189,9 @@
"description": "Optional admin note (Toman credit reason)"
}
},
- "required": ["amount"]
+ "required": [
+ "amount"
+ ]
},
"AdminCreditWalletResponseDto": {
"type": "object",
@@ -29069,7 +31204,10 @@
"$ref": "#/components/schemas/WalletTransactionResponseDto"
}
},
- "required": ["walletBalance", "transaction"]
+ "required": [
+ "walletBalance",
+ "transaction"
+ ]
},
"AdminUserHostedEventDto": {
"type": "object",
@@ -29113,7 +31251,18 @@
"type": "string"
}
},
- "required": ["id", "title", "status", "startsAt", "endsAt", "capacity", "bookedCount", "isFree", "price", "createdAt"]
+ "required": [
+ "id",
+ "title",
+ "status",
+ "startsAt",
+ "endsAt",
+ "capacity",
+ "bookedCount",
+ "isFree",
+ "price",
+ "createdAt"
+ ]
},
"AdminUserBookingDto": {
"type": "object",
@@ -29159,7 +31308,14 @@
"type": "string"
}
},
- "required": ["id", "bookingCode", "status", "eventId", "eventTitle", "createdAt"]
+ "required": [
+ "id",
+ "bookingCode",
+ "status",
+ "eventId",
+ "eventTitle",
+ "createdAt"
+ ]
},
"AdminUserPaymentDto": {
"type": "object",
@@ -29276,7 +31432,15 @@
"type": "string"
}
},
- "required": ["id", "rating", "status", "eventId", "eventTitle", "authorId", "createdAt"]
+ "required": [
+ "id",
+ "rating",
+ "status",
+ "eventId",
+ "eventTitle",
+ "authorId",
+ "createdAt"
+ ]
},
"AdminUserFollowDto": {
"type": "object",
@@ -29304,7 +31468,13 @@
"type": "string"
}
},
- "required": ["id", "userId", "mobile", "notifyNewEvents", "createdAt"]
+ "required": [
+ "id",
+ "userId",
+ "mobile",
+ "notifyNewEvents",
+ "createdAt"
+ ]
},
"AdminUserReportDto": {
"type": "object",
@@ -29344,7 +31514,13 @@
"type": "string"
}
},
- "required": ["id", "status", "otherUserId", "otherUserMobile", "createdAt"]
+ "required": [
+ "id",
+ "status",
+ "otherUserId",
+ "otherUserMobile",
+ "createdAt"
+ ]
},
"AdminUserBlockDto": {
"type": "object",
@@ -29369,7 +31545,12 @@
"type": "string"
}
},
- "required": ["id", "otherUserId", "otherUserMobile", "createdAt"]
+ "required": [
+ "id",
+ "otherUserId",
+ "otherUserMobile",
+ "createdAt"
+ ]
},
"AdminAuditLogResponseDto": {
"type": "object",
@@ -29425,7 +31606,14 @@
"format": "date-time"
}
},
- "required": ["id", "method", "path", "params", "statusCode", "createdAt"]
+ "required": [
+ "id",
+ "method",
+ "path",
+ "params",
+ "statusCode",
+ "createdAt"
+ ]
},
"UploadFileResponseDto": {
"type": "object",
@@ -29441,7 +31629,10 @@
"example": "http://localhost:3000/uploads/files/550e8400-e29b-41d4-a716-446655440000.jpg"
}
},
- "required": ["id", "url"]
+ "required": [
+ "id",
+ "url"
+ ]
},
"BlogArticleCitySummaryDto": {
"type": "object",
@@ -29459,7 +31650,11 @@
"example": "اهواز"
}
},
- "required": ["id", "slug", "name"]
+ "required": [
+ "id",
+ "slug",
+ "name"
+ ]
},
"BlogArticleEventCategorySummaryDto": {
"type": "object",
@@ -29477,7 +31672,11 @@
"example": "عکاسی"
}
},
- "required": ["id", "slug", "name"]
+ "required": [
+ "id",
+ "slug",
+ "name"
+ ]
},
"BlogArticleSummaryResponseDto": {
"type": "object",
@@ -29707,7 +31906,12 @@
},
"categorySlug": {
"type": "string",
- "enum": ["attendee-guide", "hosting", "city-guides", "event-selection"],
+ "enum": [
+ "attendee-guide",
+ "hosting",
+ "city-guides",
+ "event-selection"
+ ],
"example": "city-guides"
},
"categoryName": {
@@ -29745,7 +31949,14 @@
"format": "date-time"
}
},
- "required": ["slug", "title", "excerpt", "categorySlug", "categoryName", "bodyHtml"]
+ "required": [
+ "slug",
+ "title",
+ "excerpt",
+ "categorySlug",
+ "categoryName",
+ "bodyHtml"
+ ]
},
"UpdateBlogArticleDto": {
"type": "object",
@@ -29774,7 +31985,12 @@
},
"categorySlug": {
"type": "string",
- "enum": ["attendee-guide", "hosting", "city-guides", "event-selection"],
+ "enum": [
+ "attendee-guide",
+ "hosting",
+ "city-guides",
+ "event-selection"
+ ],
"example": "city-guides"
},
"categoryName": {
@@ -29822,7 +32038,9 @@
"example": "ok"
}
},
- "required": ["status"]
+ "required": [
+ "status"
+ ]
}
}
}