Event Engage BFF Service API (1.0.0)

Download OpenAPI specification:

Backend for Frontend (BFF) service for Event Engage application

Agenda

Agenda management endpoints

Create a new agenda

Authorizations:
ClientId
Request Body schema: application/json
required
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

Responses

Request samples

Content type
application/json
{
  • "title": "string",
  • "description": "string",
  • "startTime": "2019-08-24T14:15:22Z",
  • "endTime": "2019-08-24T14:15:22Z",
  • "location": "string",
  • "speaker": "string"
}

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": { },
  • "statusCode": 0
}

Get all agendas

Authorizations:
ClientId
query Parameters
page
integer
Default: 1

Page number for pagination

limit
integer
Default: 10

Number of items per page

name
string

Filter by agenda name

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": { },
  • "statusCode": 0
}

Awards

Award categories and winners management

Create a new award category

Create an award category with a unique name (case-insensitive)

Authorizations:
(ClientIdClientAuthenticationType)
Request Body schema: application/json
required
name
required
string [ 1 .. 255 ] characters

Unique category name (case-insensitive)

description
string <= 1000 characters

Optional category description

Responses

Request samples

Content type
application/json
{
  • "name": "Best Innovation",
  • "description": "Awarded to the most innovative project of the year"
}

Response samples

Content type
application/json
{
  • "message": "Category created successfully",
  • "data": {
    }
}

List all award categories with winners

Retrieve a paginated list of award categories with their published winners (if any)

Authorizations:
(ClientIdClientAuthenticationType)
query Parameters
page
integer
Default: 1

Page number

limit
integer
Default: 10

Number of items per page

Responses

Response samples

Content type
application/json
{
  • "message": "Categories retrieved successfully",
  • "data": [
    ],
  • "pagination": {
    }
}

Publish a winner for an award category

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:

  • title: "🏆 {categoryName} Winner Announced!"
  • message: "Congratulations to {winnerName} for winning the {categoryName} award!"
  • icon/largeImage: winner's profile image
  • actionButton: "View Winner"
Authorizations:
(ClientIdClientAuthenticationType)
path Parameters
id
required
string

Category ID

Request Body schema: application/json
required
email
required
string <email>

Email of the winner to look up

name
string <= 255 characters

Optional override for winner name

Responses

Request samples

Content type
application/json
{
  • "email": "winner@example.com",
  • "name": "John Doe"
}

Response samples

Content type
application/json
{
  • "message": "Winner published successfully",
  • "data": {
    }
}

Booths

Booth management endpoints

Create a new booth

Authorizations:
(ClientIdClientAuthenticationType)
Request Body schema: application/json
required
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

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "image": "string",
  • "clientId": "string",
  • "description": "string",
  • "qrCode": "string",
  • "rewardId": "string",
  • "engagements": [
    ]
}

Response samples

Content type
application/json
{
  • "status": true,
  • "message": "string",
  • "data": {
    }
}

Get all booths

Authorizations:
(ClientIdClientAuthenticationType)
query Parameters
page
integer
Default: 1

Page number for pagination

limit
integer
Default: 10

Number of items per page

name
string

Filter by booth name

Responses

Response samples

Content type
application/json
{
  • "status": true,
  • "message": "string",
  • "data": [
    ],
  • "pagination": {
    }
}

Get a booth by ID

Authorizations:
(ClientIdClientAuthenticationType)
path Parameters
id
required
string

Booth ID

Responses

Response samples

Content type
application/json
{
  • "status": true,
  • "message": "string",
  • "data": {
    }
}

Update a booth

Authorizations:
(ClientIdClientAuthenticationType)
path Parameters
id
required
string

Booth ID

Request Body schema: application/json
required
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

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "image": "string",
  • "clientId": "string",
  • "description": "string",
  • "qrCode": "string",
  • "rewardId": "string",
  • "engagements": [
    ]
}

Response samples

Content type
application/json
{
  • "status": true,
  • "message": "string",
  • "data": {
    }
}

Cohorts

Cohort management endpoints for live audience segmentation

Create a new cohort

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.

Authorizations:
(ClientIdClientAuthenticationType)
Request Body schema: application/json
required
name
required
string [ 1 .. 255 ] characters
description
string <= 1000 characters
required
object (CohortQuery)

Stored query payload sent to User Service (minus pagination)

Responses

Request samples

Content type
application/json
{
  • "name": "VIP Users",
  • "description": "Users with VIP status aged 18-65",
  • "query": {
    }
}

Response samples

Content type
application/json
{
  • "message": "Cohort retrieved",
  • "data": {
    }
}

Get all cohorts

Retrieve a paginated list of cohorts for the client

Authorizations:
(ClientIdClientAuthenticationType)
query Parameters
page
integer
Default: 1

Page number

limit
integer
Default: 10

Number of items per page

Responses

Response samples

Content type
application/json
{
  • "message": "Cohorts retrieved",
  • "data": {
    }
}

Get a cohort by ID

Retrieve cohort metadata. Use includeQuery=false to hide query details.

Authorizations:
(ClientIdClientAuthenticationType)
path Parameters
id
required
string

Cohort ID

query Parameters
includeQuery
boolean
Default: true

Whether to include query in response

Responses

Response samples

Content type
application/json
{
  • "message": "Cohort retrieved",
  • "data": {
    }
}

Update a cohort

Update cohort name, description, or query

Authorizations:
(ClientIdClientAuthenticationType)
path Parameters
id
required
string

Cohort ID

Request Body schema: application/json
required
non-empty
name
string [ 1 .. 255 ] characters
description
string <= 1000 characters
object (CohortQuery)

Stored query payload sent to User Service (minus pagination)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "description": "string",
  • "query": {
    }
}

Response samples

Content type
application/json
{
  • "message": "Cohort retrieved",
  • "data": {
    }
}

Delete a cohort

Delete a cohort by ID

Authorizations:
(ClientIdClientAuthenticationType)
path Parameters
id
required
string

Cohort ID

Responses

Get cohort audience (live)

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.

Authorizations:
(ClientIdClientAuthenticationType)
path Parameters
id
required
string

Cohort ID

query Parameters
page
integer
Default: 1

Page number

limit
integer <= 100
Default: 10

Number of items per page (max 100)

Responses

Response samples

Content type
application/json
{
  • "message": "Cohort audience retrieved",
  • "data": {
    }
}

Connections

Connection management endpoints

Request a connection

Authorizations:
ClientId
Request Body schema: application/json
required
targetUserId
required
string

ID of the user to connect with

message
string

Optional message with connection request

Responses

Request samples

Content type
application/json
{
  • "targetUserId": "string",
  • "message": "string"
}

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": { },
  • "statusCode": 0
}

Get user connections

Authorizations:
(ClientIdSourceAuthenticationTypeClientUser)
query Parameters
page
integer
Default: 1

Page number for pagination

limit
integer
Default: 10

Number of items per page

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": { },
  • "statusCode": 0
}

Feedback

Feedback management endpoints

Create feedback

Authorizations:
ClientId
Request Body schema: application/json
required
rating
required
number [ 1 .. 5 ]

Rating from 1 to 5

comment
required
string

Feedback comment

category
string

Feedback category

Responses

Request samples

Content type
application/json
{
  • "rating": 1,
  • "comment": "string",
  • "category": "string"
}

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": { },
  • "statusCode": 0
}

Get all feedbacks

Authorizations:
ClientId
query Parameters
page
integer
Default: 1

Page number for pagination

limit
integer
Default: 10

Number of items per page

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": { },
  • "statusCode": 0
}

Gallery

Gallery management endpoints

Create gallery item

Authorizations:
ClientId
Request Body schema: application/json
required
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

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": { },
  • "statusCode": 0
}

Get all gallery items

Authorizations:
ClientId
query Parameters
page
integer
Default: 1

Page number for pagination

limit
integer
Default: 10

Number of items per page

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": { },
  • "statusCode": 0
}

QR Codes

QR Code management endpoints

Get list of QR codes

Authorizations:
ClientId
query Parameters
page
integer
Default: 1

Page number for pagination

limit
integer
Default: 10

Number of items per page

Responses

Response samples

Content type
application/json
{
  • "status": true,
  • "message": "string",
  • "data": [
    ],
  • "pagination": {
    }
}

Create a new QR code

Authorizations:
(ClientIdClientAuthenticationType)
Request Body schema: application/json
required
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

Responses

Request samples

Content type
application/json
{
  • "referenceId": "string",
  • "url": "string",
  • "dataType": "string",
  • "data": "string"
}

Response samples

Content type
application/json
{
  • "status": true,
  • "message": "string",
  • "data": {
    }
}

Shortcuts

Shortcut management endpoints

Create a shortcut

Authorizations:
ClientId
Request Body schema: application/json
required
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

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": { },
  • "statusCode": 0
}

Get all shortcuts

Authorizations:
ClientId
query Parameters
page
integer
Default: 1

Page number for pagination

limit
integer
Default: 10

Number of items per page

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": { },
  • "statusCode": 0
}

Threads

Thread and comment management endpoints

Create a new thread

Authorizations:
(ClientIdClientAuthenticationTypeUserToken)
Request Body schema: application/json
required
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

Responses

Request samples

Content type
application/json
{
  • "contextType": "string",
  • "contextId": "string",
  • "title": "string"
}

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": { },
  • "statusCode": 0
}

Get threads with optional filters

Authorizations:
(ClientIdClientAuthenticationTypeToken)
query Parameters
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)

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": {
    }
}

Get a thread by ID

Authorizations:
(ClientIdClientAuthenticationTypeToken)
path Parameters
id
required
string

Thread ID

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": { },
  • "statusCode": 0
}

Create a comment on a thread

Authorizations:
(ClientIdClientAuthenticationTypeUserToken)
path Parameters
id
required
string

Thread ID

Request Body schema: application/json
required
body
required
string [ 1 .. 10000 ] characters

Comment body text

Responses

Request samples

Content type
application/json
{
  • "body": "string"
}

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": { },
  • "statusCode": 0
}

Get comments for a thread

Authorizations:
(ClientIdClientAuthenticationTypeToken)
path Parameters
id
required
string

Thread ID

query Parameters
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

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": {
    }
}

Add a reaction to a thread

Authorizations:
(ClientIdClientAuthenticationTypeUserToken)
path Parameters
id
required
string

Thread ID

kind
required
string
Enum: "like" "love" "celebrate" "support" "insightful"

Reaction kind

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": { },
  • "statusCode": 0
}

Remove a reaction from a thread

Authorizations:
(ClientIdClientAuthenticationTypeToken)
path Parameters
id
required
string

Thread ID

kind
required
string
Enum: "like" "love" "celebrate" "support" "insightful"

Reaction kind

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": { },
  • "statusCode": 0
}

Lock a thread (moderation)

Authorizations:
(ClientIdClientAuthenticationTypeToken)
path Parameters
id
required
string

Thread ID

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": { },
  • "statusCode": 0
}

Unlock a thread (moderation)

Authorizations:
(ClientIdClientAuthenticationTypeToken)
path Parameters
id
required
string

Thread ID

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": { },
  • "statusCode": 0
}

Users

User management endpoints

Check if user exists

Authorizations:
(ClientIdSourceAuthenticationTypeClient)
query Parameters
email
string

Email of user to check for existence

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": { },
  • "statusCode": 0
}

Create or update user

Authorizations:
(ClientIdSourceAuthenticationTypeClient)
Request Body schema: application/json
required
name
string

User name

email
string <email>

User email

phone
string

User phone number

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "email": "user@example.com",
  • "phone": "string"
}

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": { },
  • "statusCode": 0
}

Get user public profile

Authorizations:
(ClientIdSourceAuthenticationTypeClient)
path Parameters
publicUserId
required
string

Public user ID

Responses

Response samples

Content type
application/json
{
  • "message": "string",
  • "data": { },
  • "statusCode": 0
}

Notifications

Get notification by ID

Retrieve a specific notification record from the database

Authorizations:
(ClientIdClientAuthenticationType)
path Parameters
id
required
string

Notification ID

Responses

Response samples

Content type
application/json
{
  • "message": "Notification retrieved successfully",
  • "data": {
    }
}

Get all notifications with optional filtering

Retrieve notifications from the database with pagination and filtering options

Authorizations:
(ClientIdClientAuthenticationType)
query Parameters
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

Responses

Response samples

Content type
application/json
{
  • "message": "Notifications retrieved successfully",
  • "data": {
    }
}

Get notification statistics

Retrieve statistics about notifications in the database

Authorizations:
None

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Statistics retrieved successfully",
  • "data": {
    }
}

Create and send notification with database record

Creates a notification record in the database and sends it via OneSignal

Authorizations:
None
Request Body schema: application/json
required
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

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "success": true,
  • "message": "Notification created and sent successfully",
  • "data": {
    }
}