Download OpenAPI specification:
Backend for Frontend (BFF) service for Event Engage application
| title required | string Title of the agenda item |
| description | string Description of the agenda item |
| startTime required | string <date-time> Start time of the agenda item |
| endTime required | string <date-time> End time of the agenda item |
| location | string Location of the agenda item |
| speaker | string Speaker for the agenda item |
{- "title": "string",
- "description": "string",
- "startTime": "2019-08-24T14:15:22Z",
- "endTime": "2019-08-24T14:15:22Z",
- "location": "string",
- "speaker": "string"
}{- "message": "string",
- "data": { },
- "statusCode": 0
}Create an award category with a unique name (case-insensitive)
| name required | string [ 1 .. 255 ] characters Unique category name (case-insensitive) |
| description | string <= 1000 characters Optional category description |
{- "name": "Best Innovation",
- "description": "Awarded to the most innovative project of the year"
}{- "message": "Category created successfully",
- "data": {
- "id": "507f1f77bcf86cd799439011",
- "name": "Best Innovation",
- "description": "Awarded to the most innovative project of the year",
- "clientId": "client-123",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Retrieve a paginated list of award categories with their published winners (if any)
| page | integer Default: 1 Page number |
| limit | integer Default: 10 Number of items per page |
{- "message": "Categories retrieved successfully",
- "data": [
- {
- "id": "507f1f77bcf86cd799439011",
- "name": "Best Innovation",
- "description": "Awarded to the most innovative project of the year",
- "clientId": "client-123",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "winner": {
- "odId": "507f1f77bcf86cd799439012",
- "id": "user-123",
- "email": "winner@example.com",
- "name": "John Doe",
- "region": "North America",
- "jobTitle": "Software Engineer",
- "nickName": "Johnny",
- "publishedAt": "2019-08-24T14:15:22Z"
}
}
], - "pagination": {
- "total": 25,
- "totalPages": 3,
- "pages": 3,
- "page": 1,
- "limit": 10,
- "hasPrevPage": false,
- "hasNextPage": true,
- "prevPage": null,
- "nextPage": 2
}
}Look up user by email, save as winner for the category (overwrites existing winner), and send push notification to all users.
User info extracted: id, name, profileImageUrl, region, jobTitle, nickName
Notification includes:
| id required | string Category ID |
| email required | string <email> Email of the winner to look up |
| name | string <= 255 characters Optional override for winner name |
{- "email": "winner@example.com",
- "name": "John Doe"
}{- "message": "Winner published successfully",
- "data": {
- "category": {
- "id": "507f1f77bcf86cd799439011",
- "name": "Best Innovation",
- "description": "Awarded to the most innovative project of the year",
- "clientId": "client-123",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "winner": {
- "id": "507f1f77bcf86cd799439012",
- "categoryId": "507f1f77bcf86cd799439011",
- "userId": "user-123",
- "email": "winner@example.com",
- "name": "John Doe",
- "region": "North America",
- "jobTitle": "Software Engineer",
- "nickName": "Johnny",
- "clientId": "client-123",
- "publishedAt": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "notificationSent": true
}
}| name required | string Name of the booth |
| image | string Booth image URL |
| clientId required | string Client identifier |
| description | string Description of the booth |
| qrCode | string QR code for the booth |
| rewardId | string Associated reward identifier |
Array of objects (Engagement) List of engagements associated with the booth |
{- "name": "string",
- "image": "string",
- "clientId": "string",
- "description": "string",
- "qrCode": "string",
- "rewardId": "string",
- "engagements": [
- {
- "id": "string",
- "title": "string",
- "type": "leaderboard"
}
]
}{- "status": true,
- "message": "string",
- "data": {
- "id": "string",
- "name": "string",
- "image": "string",
- "clientId": "string",
- "description": "string",
- "qrCode": "string",
- "hasTrivia": true,
- "rewardId": "string",
- "engagements": [
- {
- "id": "string",
- "title": "string",
- "type": "leaderboard"
}
], - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}| page | integer Default: 1 Page number for pagination |
| limit | integer Default: 10 Number of items per page |
| name | string Filter by booth name |
{- "status": true,
- "message": "string",
- "data": [
- {
- "id": "string",
- "name": "string",
- "image": "string",
- "clientId": "string",
- "description": "string",
- "qrCode": "string",
- "hasTrivia": true,
- "rewardId": "string",
- "engagements": [
- {
- "id": "string",
- "title": "string",
- "type": "leaderboard"
}
], - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "pagination": {
- "total": 0,
- "totalPages": 0,
- "pages": 0,
- "page": 0,
- "limit": 0,
- "hasPrevPage": true,
- "hasNextPage": true,
- "prevPage": 0,
- "nextPage": 0
}
}| id required | string Booth ID |
{- "status": true,
- "message": "string",
- "data": {
- "id": "string",
- "name": "string",
- "image": "string",
- "clientId": "string",
- "description": "string",
- "qrCode": "string",
- "hasTrivia": true,
- "rewardId": "string",
- "engagements": [
- {
- "id": "string",
- "title": "string",
- "type": "leaderboard"
}
], - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}| id required | string Booth ID |
| name required | string Name of the booth |
| image | string Booth image URL |
| clientId required | string Client identifier |
| description | string Description of the booth |
| qrCode | string QR code for the booth |
| rewardId | string Associated reward identifier |
Array of objects (Engagement) List of engagements associated with the booth |
{- "name": "string",
- "image": "string",
- "clientId": "string",
- "description": "string",
- "qrCode": "string",
- "rewardId": "string",
- "engagements": [
- {
- "id": "string",
- "title": "string",
- "type": "leaderboard"
}
]
}{- "status": true,
- "message": "string",
- "data": {
- "id": "string",
- "name": "string",
- "image": "string",
- "clientId": "string",
- "description": "string",
- "qrCode": "string",
- "hasTrivia": true,
- "rewardId": "string",
- "engagements": [
- {
- "id": "string",
- "title": "string",
- "type": "leaderboard"
}
], - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Create a cohort with name, description, and query. The query contains filter, userIds, fields, and range that will be sent to User Service for live audience fetching.
| name required | string [ 1 .. 255 ] characters |
| description | string <= 1000 characters |
required | object (CohortQuery) Stored query payload sent to User Service (minus pagination) |
{- "name": "VIP Users",
- "description": "Users with VIP status aged 18-65",
- "query": {
- "filter": {
- "status": "active",
- "country": "US"
}, - "fields": [
- "userId",
- "email"
], - "range": {
- "age": {
- "start": 18,
- "end": 65
}
}
}
}{- "message": "Cohort retrieved",
- "data": {
- "id": "string",
- "name": "string",
- "description": "string",
- "query": {
- "filter": {
- "status": "active",
- "country": "US"
}, - "fields": [
- "userId",
- "email"
], - "range": {
- "age": {
- "start": 18,
- "end": 65
}
}
}, - "clientId": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Retrieve a paginated list of cohorts for the client
| page | integer Default: 1 Page number |
| limit | integer Default: 10 Number of items per page |
{- "message": "Cohorts retrieved",
- "data": {
- "total": 0,
- "limit": 0,
- "page": 0,
- "pages": 0,
- "docs": [
- {
- "id": "string",
- "name": "string",
- "description": "string",
- "query": {
- "filter": {
- "status": "active",
- "country": "US"
}, - "fields": [
- "userId",
- "email"
], - "range": {
- "age": {
- "start": 18,
- "end": 65
}
}
}, - "clientId": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}
}Retrieve cohort metadata. Use includeQuery=false to hide query details.
| id required | string Cohort ID |
| includeQuery | boolean Default: true Whether to include query in response |
{- "message": "Cohort retrieved",
- "data": {
- "id": "string",
- "name": "string",
- "description": "string",
- "query": {
- "filter": {
- "status": "active",
- "country": "US"
}, - "fields": [
- "userId",
- "email"
], - "range": {
- "age": {
- "start": 18,
- "end": 65
}
}
}, - "clientId": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Update cohort name, description, or query
| id required | string Cohort ID |
| name | string [ 1 .. 255 ] characters |
| description | string <= 1000 characters |
object (CohortQuery) Stored query payload sent to User Service (minus pagination) |
{- "name": "string",
- "description": "string",
- "query": {
- "filter": {
- "status": "active",
- "country": "US"
}, - "fields": [
- "userId",
- "email"
], - "range": {
- "age": {
- "start": 18,
- "end": 65
}
}
}
}{- "message": "Cohort retrieved",
- "data": {
- "id": "string",
- "name": "string",
- "description": "string",
- "query": {
- "filter": {
- "status": "active",
- "country": "US"
}, - "fields": [
- "userId",
- "email"
], - "range": {
- "age": {
- "start": 18,
- "end": 65
}
}
}, - "clientId": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Fetch live audience for a cohort. Results are queried in real-time from User Service using the stored query. The query (filter, userIds, fields, range) is stored in the cohort and only pagination is provided at request time.
| id required | string Cohort ID |
| page | integer Default: 1 Page number |
| limit | integer <= 100 Default: 10 Number of items per page (max 100) |
{- "message": "Cohort audience retrieved",
- "data": {
- "total": 0,
- "limit": 0,
- "page": 0,
- "pages": 0,
- "data": [
- {
- "userId": "string"
}
]
}
}| targetUserId required | string ID of the user to connect with |
| message | string Optional message with connection request |
{- "targetUserId": "string",
- "message": "string"
}{- "message": "string",
- "data": { },
- "statusCode": 0
}| page | integer Default: 1 Page number for pagination |
| limit | integer Default: 10 Number of items per page |
{- "message": "string",
- "data": { },
- "statusCode": 0
}| rating required | number [ 1 .. 5 ] Rating from 1 to 5 |
| comment required | string Feedback comment |
| category | string Feedback category |
{- "rating": 1,
- "comment": "string",
- "category": "string"
}{- "message": "string",
- "data": { },
- "statusCode": 0
}| title required | string Title of the gallery item |
| description | string Description of the gallery item |
| imageUrl required | string <uri> URL of the image |
| thumbnailUrl | string <uri> URL of the thumbnail |
{- "title": "string",
- "description": "string",
}{- "message": "string",
- "data": { },
- "statusCode": 0
}| page | integer Default: 1 Page number for pagination |
| limit | integer Default: 10 Number of items per page |
{- "status": true,
- "message": "string",
- "data": [
- {
- "id": "string",
- "referenceId": "string",
- "url": "string",
- "qrCodeImage": "string",
- "clientId": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "pagination": {
- "total": 0,
- "totalPages": 0,
- "pages": 0,
- "page": 0,
- "limit": 0,
- "hasPrevPage": true,
- "hasNextPage": true,
- "prevPage": 0,
- "nextPage": 0
}
}| referenceId required | string Reference identifier for the QR code |
| url | string URL to encode in the QR code |
| dataType | string Type of data to encode in the QR code |
| data | string Data to encode in the QR code |
{- "referenceId": "string",
- "url": "string",
- "dataType": "string",
- "data": "string"
}{- "status": true,
- "message": "string",
- "data": {
- "id": "string",
- "referenceId": "string",
- "url": "string",
- "qrCodeImage": "string",
- "clientId": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}| title required | string Title of the shortcut |
| url required | string <uri> URL of the shortcut |
| icon | string Icon for the shortcut |
| description | string Description of the shortcut |
{- "title": "string",
- "icon": "string",
- "description": "string"
}{- "message": "string",
- "data": { },
- "statusCode": 0
}| contextType required | string The type of context (e.g., 'event', 'session', 'post') |
| contextId required | string The ID of the context entity |
| title | string Optional title for the thread |
{- "contextType": "string",
- "contextId": "string",
- "title": "string"
}{- "message": "string",
- "data": { },
- "statusCode": 0
}| contextType | string Filter by context type (e.g., 'event', 'session') |
| contextId | string Filter by context ID |
| createdByUserId | string Filter by creator user ID |
| status | string Enum: "open" "locked" Filter by thread status |
| page | integer >= 1 Default: 1 Page number for pagination |
| limit | integer [ 1 .. 100 ] Default: 50 Number of threads to return |
| sort | string Default: "desc" Enum: "asc" "desc" Sort order by creation date |
| user.userId | string Filter by user ID (exact match) |
| user.name | string Filter by user name (case-insensitive partial match) |
| user.email | string Filter by user email (case-insensitive partial match) |
{- "message": "string",
- "data": {
- "threads": [
- { }
], - "total": 0,
- "page": 0,
- "totalPages": 0
}
}| id required | string Thread ID |
| body required | string [ 1 .. 10000 ] characters Comment body text |
{- "body": "string"
}{- "message": "string",
- "data": { },
- "statusCode": 0
}| id required | string Thread ID |
| cursor | string Cursor for pagination (comment ID) |
| limit | integer [ 1 .. 100 ] Default: 20 Number of comments to return |
| sort | string Default: "asc" Enum: "asc" "desc" Sort order by creation time |
{- "message": "string",
- "data": {
- "comments": [
- {
- "id": "string",
- "threadId": "string",
- "body": "string",
- "author": {
- "userId": "string",
- "name": "string",
- "avatarUrl": "string"
}, - "isAuthor": true,
- "createdAt": "2019-08-24T14:15:22Z"
}
], - "nextCursor": "string"
}
}| id required | string Thread ID |
| kind required | string Enum: "like" "love" "celebrate" "support" "insightful" Reaction kind |
{- "message": "string",
- "data": { },
- "statusCode": 0
}| id required | string Thread ID |
| kind required | string Enum: "like" "love" "celebrate" "support" "insightful" Reaction kind |
{- "message": "string",
- "data": { },
- "statusCode": 0
}| name | string User name |
string <email> User email | |
| phone | string User phone number |
{- "name": "string",
- "email": "user@example.com",
- "phone": "string"
}{- "message": "string",
- "data": { },
- "statusCode": 0
}Retrieve a specific notification record from the database
| id required | string Notification ID |
{- "message": "Notification retrieved successfully",
- "data": {
- "_id": "string",
- "title": "string",
- "message": "string",
- "icon": "string",
- "largeImage": "string",
- "actionButton": {
- "id": "string",
- "text": "string",
- "icon": "string"
}, - "launchUrl": "string",
- "notificationId": "string",
- "recipientType": "all",
- "recipient": [
- "string"
], - "status": "pending",
- "oneSignalData": { },
- "metadata": {
- "totalRecipients": 0,
- "successfulRecipients": 0,
- "failedRecipients": 0,
- "batches": { },
- "error": "string"
}, - "clientId": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Retrieve notifications from the database with pagination and filtering options
| status | string Enum: "pending" "sent" "failed" "partial" Filter by notification status |
| recipientType | string Enum: "all" "cohort" "users" Filter by recipient type |
| limit | integer [ 1 .. 100 ] Default: 50 Maximum number of notifications to return |
| offset | integer >= 0 Default: 0 Number of notifications to skip |
{- "message": "Notifications retrieved successfully",
- "data": {
- "notifications": [
- {
- "_id": "string",
- "title": "string",
- "message": "string",
- "icon": "string",
- "largeImage": "string",
- "actionButton": {
- "id": "string",
- "text": "string",
- "icon": "string"
}, - "launchUrl": "string",
- "notificationId": "string",
- "recipientType": "all",
- "recipient": [
- "string"
], - "status": "pending",
- "oneSignalData": { },
- "metadata": {
- "totalRecipients": 0,
- "successfulRecipients": 0,
- "failedRecipients": 0,
- "batches": { },
- "error": "string"
}, - "clientId": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "total": 0
}
}Creates a notification record in the database and sends it via OneSignal
| title | string Notification title |
| message required | string Notification message |
| icon | string Icon URL |
| largeImage | string Large image URL |
object | |
| launchUrl | string URL to open when notification is clicked |
| recipientType required | string Enum: "all" "cohort" "users" Type of recipients |
| recipient | Array of strings Recipient IDs (empty for 'all', cohort IDs for 'cohort', user IDs for 'users') |
| oneSignalOptions | object Additional OneSignal options |
{- "title": "New Event Available!",
- "message": "Check out our latest event",
- "actionButton": {
- "id": "register_now",
- "text": "Register Now",
}, - "recipientType": "all",
- "recipient": [ ],
- "oneSignalOptions": {
- "priority": 10,
- "ttl": 3600
}
}{- "success": true,
- "message": "Notification created and sent successfully",
- "data": {
- "notification": {
- "_id": "string",
- "title": "string",
- "message": "string",
- "icon": "string",
- "largeImage": "string",
- "actionButton": {
- "id": "string",
- "text": "string",
- "icon": "string"
}, - "launchUrl": "string",
- "notificationId": "string",
- "recipientType": "all",
- "recipient": [
- "string"
], - "status": "pending",
- "oneSignalData": { },
- "metadata": {
- "totalRecipients": 0,
- "successfulRecipients": 0,
- "failedRecipients": 0,
- "batches": { },
- "error": "string"
}, - "clientId": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}, - "oneSignalData": {
- "notificationId": "string",
- "recipients": 0
}
}
}